From 8e6d3122d5eae7cd40f0f54c2ec8b5bb108de989 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Thu, 22 Jun 2023 01:05:13 +0800 Subject: [PATCH 001/141] update --- admin/css/admin.css | 61 +- admin/css/admin.dark.css | 0 admin/css/{other => }/login.css | 29 +- admin/css/other/console1.css | 5 - admin/css/other/console2.css | 5 - admin/css/other/department.css | 6 - admin/css/other/error.css | 76 - admin/css/other/person.css | 80 - admin/css/variables.css | 5 + admin/data/card.json | 57 - admin/data/dataMenu.json | 372 -- admin/data/dataTree2.json | 37 - admin/data/dictData.json | 36 - admin/data/dictType.json | 90 - admin/data/dtree.json | 181 - admin/data/loginLog.json | 211 - admin/data/menu.json | 397 +- admin/data/operateLog.json | 211 - admin/data/organization.json | 41 - admin/data/organizationtree.json | 143 - admin/data/power.json | 185 - admin/data/role.json | 42 - admin/data/user.json | 118 - admin/images/act.jpg | Bin 201852 -> 0 bytes admin/images/background.svg | 90 +- admin/images/document.jpg | Bin 303524 -> 0 bytes admin/images/show.png | Bin 56400 -> 0 bytes component/pear/css/module/frame.css | 13 +- component/pear/css/module/layout.css | 8 +- component/pear/css/module/tab.css | 1 + component/pear/css/module/table.css | 112 - component/pear/css/module/treetable.css | 25 - component/pear/css/pear.css | 2 - component/pear/module/admin.js | 514 +- component/pear/module/darkreader.js | 7579 ++++++++++++++++++++++ component/pear/module/drawer.js | 420 -- component/pear/module/frame.js | 135 +- component/pear/module/loading.js | 3577 +++++----- component/pear/module/menu.js | 16 +- component/pear/module/message.js | 15 +- component/pear/module/popover/popover.js | 1 - component/pear/module/tab.js | 359 +- component/pear/module/treetable.js | 253 - component/pear/pear.js | 5 +- config/pear.config.yml | 11 +- index.html | 40 +- login.html | 16 +- view/console/console1.html | 42 +- view/console/console2.html | 585 +- view/demo/index.html | 66 - view/document/area.html | 143 - view/document/button.html | 305 - view/document/card.html | 78 - view/document/core.html | 219 - view/document/count.html | 124 - view/document/drawer.html | 597 -- view/document/drawerFragment.html | 385 -- view/document/dtree.html | 165 - view/document/encrypt.html | 160 - view/document/form.html | 180 - view/document/fullscreen.html | 126 - view/document/icon.html | 2195 ------- view/document/iconPicker.html | 244 - view/document/loading.html | 174 - view/document/menu.html | 115 - view/document/notice.html | 148 - view/document/popover.html | 227 - view/document/popup.html | 128 - view/document/select.html | 218 - view/document/step.html | 256 - view/document/tab.html | 152 - view/document/tabContent.html | 38 - view/document/table.html | 412 -- view/document/tag.html | 265 - view/document/tinymce.html | 93 - view/document/toast.html | 291 - view/document/topBar.html | 279 - view/document/treetable.html | 235 - view/document/watermark.html | 161 - view/echarts/column.html | 47 - view/echarts/line.html | 47 - view/echarts/script/column1.js | 137 - view/echarts/script/column2.js | 73 - view/echarts/script/column3.js | 120 - view/echarts/script/column4.js | 84 - view/echarts/script/line1.js | 236 - view/echarts/script/line2.js | 148 - view/echarts/script/line3.js | 102 - view/echarts/script/line4.js | 167 - view/error/403.html | 21 - view/error/404.html | 21 - view/error/500.html | 21 - view/result/error.html | 79 +- view/result/success.html | 72 +- view/system/deptment.html | 289 - view/system/dict.html | 341 - view/system/log.html | 101 - view/system/operate.html | 107 - view/system/operate/add.html | 109 - view/system/operate/edit.html | 109 - view/system/operate/profile.html | 108 - view/system/person.html | 183 - view/system/power.html | 242 - view/system/profile.html | 108 - view/system/role.html | 226 - view/system/space.html | 27 - view/system/theme.html | 300 - view/system/user.html | 298 - 108 files changed, 10372 insertions(+), 17937 deletions(-) create mode 100644 admin/css/admin.dark.css rename admin/css/{other => }/login.css (81%) delete mode 100644 admin/css/other/department.css delete mode 100644 admin/css/other/error.css delete mode 100644 admin/css/other/person.css create mode 100644 admin/css/variables.css delete mode 100644 admin/data/card.json delete mode 100644 admin/data/dataMenu.json delete mode 100644 admin/data/dataTree2.json delete mode 100644 admin/data/dictData.json delete mode 100644 admin/data/dictType.json delete mode 100644 admin/data/dtree.json delete mode 100644 admin/data/loginLog.json delete mode 100644 admin/data/operateLog.json delete mode 100644 admin/data/organization.json delete mode 100644 admin/data/organizationtree.json delete mode 100644 admin/data/power.json delete mode 100644 admin/data/role.json delete mode 100644 admin/data/user.json delete mode 100644 admin/images/act.jpg delete mode 100644 admin/images/document.jpg delete mode 100644 admin/images/show.png delete mode 100644 component/pear/css/module/table.css delete mode 100644 component/pear/css/module/treetable.css create mode 100644 component/pear/module/darkreader.js delete mode 100644 component/pear/module/drawer.js delete mode 100644 component/pear/module/treetable.js delete mode 100644 view/demo/index.html delete mode 100644 view/document/area.html delete mode 100644 view/document/button.html delete mode 100644 view/document/card.html delete mode 100644 view/document/core.html delete mode 100644 view/document/count.html delete mode 100644 view/document/drawer.html delete mode 100644 view/document/drawerFragment.html delete mode 100644 view/document/dtree.html delete mode 100644 view/document/encrypt.html delete mode 100644 view/document/form.html delete mode 100644 view/document/fullscreen.html delete mode 100644 view/document/icon.html delete mode 100644 view/document/iconPicker.html delete mode 100644 view/document/loading.html delete mode 100644 view/document/menu.html delete mode 100644 view/document/notice.html delete mode 100644 view/document/popover.html delete mode 100644 view/document/popup.html delete mode 100644 view/document/select.html delete mode 100644 view/document/step.html delete mode 100644 view/document/tab.html delete mode 100644 view/document/tabContent.html delete mode 100644 view/document/table.html delete mode 100644 view/document/tag.html delete mode 100644 view/document/tinymce.html delete mode 100644 view/document/toast.html delete mode 100644 view/document/topBar.html delete mode 100644 view/document/treetable.html delete mode 100644 view/document/watermark.html delete mode 100644 view/echarts/column.html delete mode 100644 view/echarts/line.html delete mode 100644 view/echarts/script/column1.js delete mode 100644 view/echarts/script/column2.js delete mode 100644 view/echarts/script/column3.js delete mode 100644 view/echarts/script/column4.js delete mode 100644 view/echarts/script/line1.js delete mode 100644 view/echarts/script/line2.js delete mode 100644 view/echarts/script/line3.js delete mode 100644 view/echarts/script/line4.js delete mode 100644 view/error/403.html delete mode 100644 view/error/404.html delete mode 100644 view/error/500.html delete mode 100644 view/system/deptment.html delete mode 100644 view/system/dict.html delete mode 100644 view/system/log.html delete mode 100644 view/system/operate.html delete mode 100644 view/system/operate/add.html delete mode 100644 view/system/operate/edit.html delete mode 100644 view/system/operate/profile.html delete mode 100644 view/system/person.html delete mode 100644 view/system/power.html delete mode 100644 view/system/profile.html delete mode 100644 view/system/role.html delete mode 100644 view/system/space.html delete mode 100644 view/system/theme.html delete mode 100644 view/system/user.html diff --git a/admin/css/admin.css b/admin/css/admin.css index 60703fe..61b3093 100644 --- a/admin/css/admin.css +++ b/admin/css/admin.css @@ -63,10 +63,6 @@ body, display: none; } -.pear-admin .layui-logo .title { - font-size: 20px; -} - .pear-admin .layui-layout-right .layui-nav-child { border: 1px solid whitesmoke; border-radius: 4px; @@ -92,12 +88,13 @@ body, } .pear-admin .layui-logo { - width: 230px; - height: 59px; - line-height: 59px; - position: relative; + box-sizing: border-box; background-color: #28333E; border-bottom: 1px solid rgba(0, 0, 0, .12); + width: 230px; + height: 60px; + line-height: 60px; + position: relative; } .pear-admin .layui-logo img { @@ -105,10 +102,10 @@ body, height: 34px; } -.pear-admin .layui-logo .title { +.pear-admin .layui-logo .text { font-size: 21px; font-weight: 550; - color: #5FB878; + color: var(--global-primary-color); position: relative; top: 5px; margin-left: 5px; @@ -143,9 +140,15 @@ body, } .pear-admin .layui-body { - left: 230px; bottom: 0px; padding-bottom: 0px; + height: calc(100% - 60px); + overflow-y: auto; + left: 230px; +} + +.pear-admin .layui-body > div { + height: 100%; } .pear-admin .layui-layout-left { @@ -229,18 +232,18 @@ body, } .pear-collapsed-pe { - display: none; - width: 50px; - position: absolute; - z-index: 400000; - bottom: 30px; right: 30px; + bottom: 30px; + z-index: 400000; + position: absolute; background-color: #5FB878 !important; - height: 50px; - line-height: 50px; + box-shadow: 2px 0 6px rgba(0, 21, 41, .20); text-align: center; - border-radius: 50px; - box-shadow: 2px 0 6px rgba(0, 21, 41, .35); + border-radius: 4px; + line-height: 50px; + display: none; + height: 50px; + width: 50px; } .pear-collapsed-pe a { @@ -481,17 +484,17 @@ body, } .select-color .select-color-content .select-color-item { - background-color: gray; - width: 30px; - height: 30px; - border-radius: 3px; - float: left; - margin-left: 20px; + width: 24px; + height: 24px; color: white; - font-size: 18px; - text-align: center; + margin-left: 24px; + border-radius: 3px; + background-color: gray; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .15); - line-height: 30px; + text-align: center; + line-height: 24px; + font-size: 14px; + float: left; } .message .layui-tab-title li:not(:last-child) { diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css new file mode 100644 index 0000000..e69de29 diff --git a/admin/css/other/login.css b/admin/css/login.css similarity index 81% rename from admin/css/other/login.css rename to admin/css/login.css index d4b6304..f23d728 100644 --- a/admin/css/other/login.css +++ b/admin/css/login.css @@ -1,16 +1,16 @@ .layui-form { - width: 320px !important; + width: 360px !important; margin: auto !important; margin-top: 160px !important; } .layui-form button { - width: 100% !important; - height: 44px !important; - line-height: 44px !important; - font-size: 16px !important; - background-color: #5FB878 !important; - font-weight: 550 !important; + font-size: 16px; + width: 100%; + height: 40px; + line-height: 40px; + background-color: #5FB878; + font-size: 14px; } .layui-form-checked[lay-skin=primary] i { @@ -30,8 +30,8 @@ } .layui-input { - height: 44px !important; - line-height: 44px !important; + height: 40px !important; + line-height: 40px !important; padding-left: 15px !important; border-radius: 3px !important; } @@ -72,10 +72,9 @@ } body { + background-size: cover; + background-color: #f0f2f5; background-repeat:no-repeat; - background-color: whitesmoke; - background-size: 100%; - height: 100%; } .code { @@ -88,7 +87,9 @@ body { .codeImage { float: right; - height: 42px; + height: 40px; + border-radius: 4px; + box-sizing: border-box; border: #e6e6e6 1px solid; cursor: pointer; } @@ -97,4 +98,4 @@ body { body{ background-position:center; } -} +} \ No newline at end of file diff --git a/admin/css/other/console1.css b/admin/css/other/console1.css index e175df8..d2e0126 100644 --- a/admin/css/other/console1.css +++ b/admin/css/other/console1.css @@ -20,11 +20,6 @@ font-size: 12px; } -.pear-container { - background-color: whitesmoke; - margin: 10px; -} - .card { width: 100%; height: 160px; diff --git a/admin/css/other/console2.css b/admin/css/other/console2.css index e29ad41..573471f 100644 --- a/admin/css/other/console2.css +++ b/admin/css/other/console2.css @@ -1,8 +1,3 @@ -.pear-container { - background-color: whitesmoke; - margin: 10px; -} - .pear-card { width: 100%; height: 66px; diff --git a/admin/css/other/department.css b/admin/css/other/department.css deleted file mode 100644 index d6898b7..0000000 --- a/admin/css/other/department.css +++ /dev/null @@ -1,6 +0,0 @@ -.organizationTree { - width: 100% !important; - height: -webkit-calc(100vh - 130px); - height: -moz-calc(100vh - 130px); - height: calc(100vh - 130px); -} diff --git a/admin/css/other/error.css b/admin/css/other/error.css deleted file mode 100644 index 37d4c0e..0000000 --- a/admin/css/other/error.css +++ /dev/null @@ -1,76 +0,0 @@ -* { - padding: 0; - margin: 0; - font-size: 0.38rem; -} - -ul { - list-style: none; -} - -a { - text-decoration: none; - -webkit-tap-highlight-color: transparent -} - -.clearfix:after { - content: ''; - width: 0; - height: 0; - display: block; - clear: both; -} - -html { - height: 100%; - width: 100%; -} - -body { - font-size: 0.28rem; - height: 100%; - width: 100%; - display: flex; - flex-direction: column; - position: relative; - background-color: white !important; -} - -.content { - position: absolute; - top: 50%; - transform: translateY(-50%); - width: 100%; - text-align: center; -} - -.content>img { - height: 300px; - max-width: 370px; - margin-right: 180px; -} - -.content>* { - display: inline-block; -} - -.content-r { - vertical-align: top; -} - -.content-r>h1 { - font-size: 72px; - color: #434e59; - margin-bottom: 24px; - font-weight: 600; -} - -.content-r>p { - font-size: 20px; - color: rgba(0, 0, 0, .45); - margin-bottom: 16px; -} - -button { - margin-top: 20px; -} diff --git a/admin/css/other/person.css b/admin/css/other/person.css deleted file mode 100644 index 53c787a..0000000 --- a/admin/css/other/person.css +++ /dev/null @@ -1,80 +0,0 @@ -.pear-container { - background-color: whitesmoke; - margin: 10px; -} -.layui-body { - padding: 25px; -} -.text-center { - text-align: center; -} -.user-info-head { - width: 110px; - height: 110px; - line-height: 110px; - position: relative; - display: inline-block; - border-radius: 50%; - overflow: hidden; - cursor: pointer; - margin: 0 auto; -} -.layui-line-dash { - border-bottom: 1px dashed #ccc; - margin: 15px 0; -} -.comment { - position: absolute; - bottom: 3px; - right: 10px; - font-size: 12px; - color: dimgray; -} -.content { - padding-left: 13px; - font-size: 13px; - color: dimgray; -} -.title { - padding-left: 13.5px; -} -.layui-tab-title { - border-bottom: none; -} -.fl-item { - height: 30px; - font-size: 13.5; -} -.dot { - width: 10px; - height: 10px; - border-radius: 50px; - background-color: gray; - display: inline-block; - margin-right: 10px; -} - -.list .list-item { - height: 32px; - line-height: 32px; - color: gray; - padding: 5px; - padding-left: 15px; - border-radius: 4px; - margin-top: 5.2px; -} - -.list .list-item:hover { - background-color: whitesmoke; -} - -.list .list-item .title { - font-size: 13px; - width: 100%; -} - -.list .list-item .footer { - position: absolute; - right: 30px; - font-size: 12px; -} diff --git a/admin/css/variables.css b/admin/css/variables.css new file mode 100644 index 0000000..0e6db41 --- /dev/null +++ b/admin/css/variables.css @@ -0,0 +1,5 @@ +:root { + + --global-primary-color: #16baaa; + +} \ No newline at end of file diff --git a/admin/data/card.json b/admin/data/card.json deleted file mode 100644 index e238590..0000000 --- a/admin/data/card.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "msg": "not data", - "count": 30, - "data": [{ - "id": "1", - "image": "https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png", - "title": "Alipay", - "remark": "那是一种内在的东西, 他们到达不了,也无法触及的", - "time": "几秒前" - }, { - "id": "2", - "image": "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png", - "title": "Layui", - "remark": "生命就像一盒巧克力,结果往往出人意料", - "time": "几秒前" - }, { - "id": "3", - "image": "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png", - "title": "Angular", - "remark": "希望是一个好东西,也许是最好的,好东西是不会消亡的", - "time": "几秒前" - }, - { - "id": "4", - "image": "https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png", - "title": "React", - "remark": "那是一种内在的东西, 他们到达不了,也无法触及的", - "time": "几秒前" - }, { - "id": "5", - "image": "https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png", - "title": "Alipay", - "remark": "那是一种内在的东西, 他们到达不了,也无法触及的", - "time": "几秒前" - }, { - "id": "6", - "image": "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png", - "title": "Layui", - "remark": "生命就像一盒巧克力,结果往往出人意料", - "time": "几秒前" - }, { - "id": "7", - "image": "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png", - "title": "Angular", - "remark": "希望是一个好东西,也许是最好的,好东西是不会消亡的", - "time": "几秒前" - }, - { - "id": "8", - "image": "https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png", - "title": "React", - "remark": "那是一种内在的东西, 他们到达不了,也无法触及的", - "time": "几秒前" - } - ], - "code": 0 -} diff --git a/admin/data/dataMenu.json b/admin/data/dataMenu.json deleted file mode 100644 index 7993102..0000000 --- a/admin/data/dataMenu.json +++ /dev/null @@ -1,372 +0,0 @@ -[{ - "id": 1, - "title": "工作空间", - "type": 0, - "icon": "layui-icon layui-icon-console", - "href": "", - "children": [{ - "id": 10, - "title": "控制后台", - "icon": "layui-icon layui-icon-console", - "type": 1, - "openType": "_iframe", - "href": "view/console/console1.html" - }, { - "id": 13, - "title": "数据分析", - "icon": "layui-icon layui-icon-console", - "type": 1, - "openType": "_iframe", - "href": "view/console/console2.html" - }, { - "id": 14, - "title": "百度一下", - "icon": "layui-icon layui-icon-console", - "type": 1, - "openType": "_iframe", - "href": "http://www.baidu.com" - }, { - "id": 15, - "title": "主题预览", - "icon": "layui-icon layui-icon-console", - "type": 1, - "openType": "_iframe", - "href": "view/system/theme.html" - }] - }, - { - "id": "component", - "title": "常用组件", - "icon": "layui-icon layui-icon-component", - "type": 0, - "href": "", - "children": [{ - "id": 201, - "title": "基础组件", - "icon": "layui-icon layui-icon-console", - "type": 0, - "children": [{ - "id": 2011, - "title": "功能按钮", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_iframe", - "href": "view/document/button.html" - }, { - "id": 2014, - "title": "表单集合", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/form.html" - }, { - "id": 2010, - "title": "字体图标", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/icon.html" - }, { - "id": 2012, - "title": "多选下拉", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/select.html" - }, { - "id": 2013, - "title": "动态标签", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/tag.html" - }] - }, { - "id": 203, - "title": "进阶组件", - "icon": "layui-icon layui-icon-console", - "type": 0, - "children": [{ - "id": 2031, - "title": "数据表格", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/table.html" - }, { - "id": 2032, - "title": "分布表单", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/step.html" - }, { - "id": 2033, - "title": "树形表格", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/treetable.html" - }, { - "id": 2034, - "title": "树状结构", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/dtree.html" - }, { - "id": 2035, - "title": "文本编辑", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/tinymce.html" - }, { - "id": 2036, - "title": "卡片组件", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/card.html" - }] - }, { - "id": 202, - "title": "弹层组件", - "icon": "layui-icon layui-icon-console", - "type": 0, - "children": [{ - "id": 2021, - "title": "抽屉组件", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/drawer.html" - }, { - "id": 2022, - "title": "消息通知", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/notice.html" - }, { - "id": 2024, - "title": "加载组件", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/loading.html" - }, { - "id": 2023, - "title": "弹层组件", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/popup.html" - }] - }, { - "id": 60331, - "title": "高级组件", - "icon": "layui-icon layui-icon-console", - "type": 0, - "children": [{ - "id": 60131, - "title": "多选项卡", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/tab.html" - }, { - "id": 60132, - "title": "数据菜单", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/menu.html" - }] - }, { - "id": 204, - "title": "其他组件", - "icon": "layui-icon layui-icon-console", - "type": 0, - "children": [{ - "id": 2041, - "title": "哈希加密", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/hash.html" - }, - { - "id": 2042, - "title": "图标选择", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/iconPicker.html" - }, - { - "id": 2043, - "title": "省市级联", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/area.html" - }, - { - "id": 2044, - "title": "数字滚动", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/count.html" - }, - { - "id": 2045, - "title": "顶部返回", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/topBar.html" - } - ] - }] - }, - { - "id": "result", - "title": "结果页面", - "icon": "layui-icon layui-icon-auz", - "type": 0, - "href": "", - "children": [{ - "id": "success", - "title": "成功", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_iframe", - "href": "view/result/success.html" - }, - { - "id": "failure", - "title": "失败", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/result/error.html" - } - ] - }, - { - "id": "error", - "title": "错误页面", - "icon": "layui-icon layui-icon-face-cry", - "type": 0, - "href": "", - "children": [{ - "id": 403, - "title": "403", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_iframe", - "href": "view/error/403.html" - }, - { - "id": 404, - "title": "404", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/error/404.html" - }, - - { - "id": 500, - "title": "500", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/error/500.html" - } - - ] - }, - { - "id": "system", - "title": "系统管理", - "icon": "layui-icon layui-icon-set-fill", - "type": 0, - "href": "", - "children": [{ - "id": 601, - "title": "用户管理", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_iframe", - "href": "view/system/user.html" - }, - { - "id": 602, - "title": "角色管理", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/system/role.html" - }, - - { - "id": 603, - "title": "权限管理", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/system/power.html" - }, - - { - "id": 604, - "title": "部门管理", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/system/deptment.html" - }, - { - "id": 605, - "title": "行为日志", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/system/log.html" - }, { - "id": 606, - "title": "数据字典", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/system/dict.html" - } - - ] - }, - { - "id": "common", - "title": "常用页面", - "icon": "layui-icon layui-icon-template-1", - "type": 0, - "href": "", - "children": [{ - "id": 701, - "title": "登录页面", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_iframe", - "href": "login.html" - }, { - "id": 702, - "title": "空白页面", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_iframe", - "href": "view/system/space.html" - }] - } -] diff --git a/admin/data/dataTree2.json b/admin/data/dataTree2.json deleted file mode 100644 index 86e8923..0000000 --- a/admin/data/dataTree2.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "status": { - "code": 200, - "message": "操作成功" - }, - "data": [{ - "id": "001", - "title": "湖南省", - "checkArr": "0", - "parentId": "0" - }, - { - "id": "002", - "title": "湖北省", - "checkArr": "0", - "parentId": "0" - }, - { - "id": "003", - "title": "广东省", - "checkArr": "0", - "parentId": "0" - }, - { - "id": "004", - "title": "浙江省", - "checkArr": "0", - "parentId": "0" - }, - { - "id": "005", - "title": "福建省", - "checkArr": "0", - "parentId": "0" - } - ] -} diff --git a/admin/data/dictData.json b/admin/data/dictData.json deleted file mode 100644 index db7ae11..0000000 --- a/admin/data/dictData.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "code": 0, - "msg": null, - "count": 2, - "data": [{ - "createTime": null, - "createBy": null, - "createName": null, - "updateTime": null, - "updateBy": null, - "updateName": null, - "remark": "男 : body", - "params": null, - "dataId": "1317401149287956480", - "dataLabel": "男", - "dataValue": "boy", - "typeCode": "user_sex", - "isDefault": null, - "enable": "0" - }, { - "createTime": null, - "createBy": null, - "createName": null, - "updateTime": null, - "updateBy": null, - "updateName": null, - "remark": "女 : girl", - "params": null, - "dataId": "1317402976670711808", - "dataLabel": "女", - "dataValue": "girl", - "typeCode": "user_sex", - "isDefault": null, - "enable": "0" - }] -} diff --git a/admin/data/dictType.json b/admin/data/dictType.json deleted file mode 100644 index 3b9ab26..0000000 --- a/admin/data/dictType.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "code": 0, - "msg": null, - "count": 6, - "data": [{ - "createTime": null, - "createBy": null, - "createName": null, - "updateTime": null, - "updateBy": null, - "updateName": null, - "remark": null, - "params": null, - "id": "1304489072256876544", - "typeName": "用户状态", - "typeCode": "user_status", - "description": "用户状态", - "enable": "0" - }, { - "createTime": null, - "createBy": null, - "createName": null, - "updateTime": null, - "updateBy": null, - "updateName": null, - "remark": null, - "params": null, - "id": "1317360314219495424", - "typeName": "登录类型", - "typeCode": "login", - "description": "登录类型", - "enable": "0" - }, { - "createTime": null, - "createBy": null, - "createName": null, - "updateTime": null, - "updateBy": null, - "updateName": null, - "remark": null, - "params": null, - "id": "1317400519127334912", - "typeName": "用户类型", - "typeCode": "user_status", - "description": "用户类型", - "enable": "0" - }, { - "createTime": null, - "createBy": null, - "createName": null, - "updateTime": null, - "updateBy": null, - "updateName": null, - "remark": null, - "params": null, - "id": "1317400823096934400", - "typeName": "配置类型", - "typeCode": "config_type", - "description": "配置类型", - "enable": "0" - }, { - "createTime": null, - "createBy": null, - "createName": null, - "updateTime": null, - "updateBy": null, - "updateName": null, - "remark": null, - "params": null, - "id": "455184568505470976", - "typeName": "用户性别", - "typeCode": "user_sex", - "description": "用户性别", - "enable": "0" - }, { - "createTime": null, - "createBy": null, - "createName": null, - "updateTime": null, - "updateBy": null, - "updateName": null, - "remark": null, - "params": null, - "id": "455184935989415936", - "typeName": "全局状态", - "typeCode": "sys_status", - "description": "状态描述\n", - "enable": "0" - }] -} diff --git a/admin/data/dtree.json b/admin/data/dtree.json deleted file mode 100644 index 376d9b0..0000000 --- a/admin/data/dtree.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "status": { - "code": 200, - "message": "操作成功" - }, - "data": [{ - "id": "001", - "title": "湖南省", - "parentId": "0", - "children": [{ - "id": "001001", - "title": "长沙市", - "last": true, - "parentId": "001" - }, - { - "id": "001002", - "title": "株洲市", - "last": true, - "parentId": "001" - }, - { - "id": "001003", - "title": "湘潭市", - "last": true, - "parentId": "001" - }, - { - "id": "001004", - "title": "衡阳市", - "last": true, - "parentId": "001" - }, - { - "id": "001005", - "title": "郴州市", - "last": true, - "parentId": "001" - } - ] - }, - { - "id": "002", - "title": "湖北省", - "parentId": "0", - "children": [{ - "id": "002001", - "title": "武汉市", - "last": true, - "parentId": "002" - }, - { - "id": "002002", - "title": "黄冈市", - "last": true, - "parentId": "002" - }, - { - "id": "002003", - "title": "潜江市", - "last": true, - "parentId": "002" - }, - { - "id": "002004", - "title": "荆州市", - "last": true, - "parentId": "002" - }, - { - "id": "002005", - "title": "襄阳市", - "last": true, - "parentId": "002" - } - ] - }, - { - "id": "003", - "title": "广东省", - "parentId": "0", - "children": [{ - "id": "003001", - "title": "广州市", - "last": false, - "parentId": "003", - "children": [{ - "id": "003001001", - "title": "天河区", - "last": true, - "parentId": "003001" - }, - { - "id": "003001002", - "title": "花都区", - "last": true, - "parentId": "003001" - } - ] - }, - { - "id": "003002", - "title": "深圳市", - "last": true, - "parentId": "003" - }, - { - "id": "003003", - "title": "中山市", - "last": true, - "parentId": "003" - }, - { - "id": "003004", - "title": "东莞市", - "last": true, - "parentId": "003" - }, - { - "id": "003005", - "title": "珠海市", - "last": true, - "parentId": "003" - }, - { - "id": "003006", - "title": "韶关市", - "last": true, - "parentId": "003" - } - ] - }, - { - "id": "004", - "title": "浙江省", - "parentId": "0", - "children": [{ - "id": "004001", - "title": "杭州市", - "last": true, - "parentId": "004" - }, - { - "id": "004002", - "title": "温州市", - "last": true, - "parentId": "004" - }, - { - "id": "004003", - "title": "绍兴市", - "last": true, - "parentId": "004" - }, - { - "id": "004004", - "title": "金华市", - "last": true, - "parentId": "004" - }, - { - "id": "004005", - "title": "义乌市", - "last": true, - "parentId": "004" - } - ] - }, - { - "id": "005", - "title": "福建省", - "parentId": "0", - "children": [{ - "id": "005001", - "title": "厦门市", - "last": true, - "parentId": "005" - }] - } - ] -} diff --git a/admin/data/loginLog.json b/admin/data/loginLog.json deleted file mode 100644 index eb39552..0000000 --- a/admin/data/loginLog.json +++ /dev/null @@ -1,211 +0,0 @@ -{ - "createTime": null, - "createBy": null, - "updateTime": null, - "updateBy": null, - "remark": null, - "code": 0, - "msg": null, - "count": 167, - "data": [{ - "id": "1305106851892822016", - "title": "登录", - "description": "登录成功", - "businessType": "OTHER", - "requestMethod": "POST", - "method": "/login", - "operateUrl": "/login", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "LOGIN", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T11:31:36.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305101593019940864", - "title": "登录", - "description": "登录成功", - "businessType": "OTHER", - "requestMethod": "POST", - "method": "/login", - "operateUrl": "/login", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "LOGIN", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T11:10:42.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305101247900024832", - "title": "登录", - "description": "登录成功", - "businessType": "OTHER", - "requestMethod": "POST", - "method": "/login", - "operateUrl": "/login", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "LOGIN", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T11:09:20.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305099674977304576", - "title": "登录", - "description": "登录成功", - "businessType": "OTHER", - "requestMethod": "POST", - "method": "/login", - "operateUrl": "/login", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "LOGIN", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T11:03:05.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305095186061197312", - "title": "登录", - "description": "登录成功", - "businessType": "OTHER", - "requestMethod": "POST", - "method": "/login", - "operateUrl": "/login", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "LOGIN", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T10:45:15.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305092027951611904", - "title": "登录", - "description": "登录成功", - "businessType": "OTHER", - "requestMethod": "POST", - "method": "/login", - "operateUrl": "/login", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "LOGIN", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T10:32:42.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305082862634008576", - "title": "登录", - "description": "登录成功", - "businessType": "OTHER", - "requestMethod": "POST", - "method": "/login", - "operateUrl": "/login", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "LOGIN", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T09:56:16.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305071134877679616", - "title": "登录", - "description": "登录成功", - "businessType": "OTHER", - "requestMethod": "POST", - "method": "/login", - "operateUrl": "/login", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "LOGIN", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T09:09:40.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305070481803575296", - "title": "登录", - "description": "登录成功", - "businessType": "OTHER", - "requestMethod": "POST", - "method": "/login", - "operateUrl": "/login", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "LOGIN", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T09:07:05.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305064691009060864", - "title": "登录", - "description": "登录成功", - "businessType": "OTHER", - "requestMethod": "POST", - "method": "/login", - "operateUrl": "/login", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "LOGIN", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T08:44:04.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }] -} diff --git a/admin/data/menu.json b/admin/data/menu.json index 3a20b6e..c8691d2 100644 --- a/admin/data/menu.json +++ b/admin/data/menu.json @@ -18,253 +18,6 @@ "type": 1, "openType": "_iframe", "href": "view/console/console2.html" - }, { - "id": 14, - "title": "百度一下", - "icon": "layui-icon layui-icon-console", - "type": 1, - "openType": "_iframe", - "href": "http://www.bing.com" - }, { - "id": 15, - "title": "主题预览", - "icon": "layui-icon layui-icon-console", - "type": 1, - "openType": "_iframe", - "href": "view/system/theme.html" - }, { - "id": 16, - "title": "酸爽翻倍", - "icon": "layui-icon layui-icon-console", - "type": 1, - "openType": "_iframe", - "href": "view/document/core.html" - }] - }, - { - "id": "component", - "title": "常用组件", - "icon": "layui-icon layui-icon-component", - "type": 0, - "href": "", - "children": [{ - "id": 201, - "title": "基础组件", - "icon": "layui-icon layui-icon-console", - "type": 0, - "children": [ - { - "id": 2011, - "title": "功能按钮", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_iframe", - "href": "view/document/button.html" - }, { - "id": 2014, - "title": "表单集合", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/form.html" - }, { - "id": 2010, - "title": "字体图标", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/icon.html" - }, { - "id": 2012, - "title": "多选下拉", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/select.html" - }, { - "id": 2013, - "title": "动态标签", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/tag.html" - }] - }, { - "id": 203, - "title": "进阶组件", - "icon": "layui-icon layui-icon-console", - "type": 0, - "children": [{ - "id": 2031, - "title": "数据表格", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/table.html" - }, { - "id": 2032, - "title": "分布表单", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/step.html" - }, { - "id": 2033, - "title": "树形表格", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/treetable.html" - }, { - "id": 2034, - "title": "树状结构", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/dtree.html" - }, { - "id": 2035, - "title": "文本编辑", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/tinymce.html" - }, { - "id": 2036, - "title": "卡片组件", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/card.html" - }] - }, { - "id": 202, - "title": "弹层组件", - "icon": "layui-icon layui-icon-console", - "type": 0, - "children": [{ - "id": 2021, - "title": "抽屉组件", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/drawer.html" - }, { - "id": 2022, - "title": "消息通知 (过时)", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/notice.html" - }, { - "id": 2025, - "title": "消息通知 (新增)", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/toast.html" - }, { - "id": 2024, - "title": "加载组件", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/loading.html" - }, { - "id": 2023, - "title": "弹层组件", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/popup.html" - }] - },{ - "id": 60331, - "title": "高级组件", - "icon": "layui-icon layui-icon-console", - "type": 0, - "children": [{ - "id": 60131, - "title": "多选项卡", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/tab.html" - },{ - "id": 60132, - "title": "数据菜单", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/menu.html" - }] - }, { - "id": 204, - "title": "其他组件", - "icon": "layui-icon layui-icon-console", - "type": 0, - "children": [{ - "id": 2041, - "title": "哈希加密", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/encrypt.html" - }, - { - "id": 2042, - "title": "图标选择", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/iconPicker.html" - }, - { - "id": 2043, - "title": "省市级联", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/area.html" - }, - { - "id": 2044, - "title": "数字滚动", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/count.html" - }, - { - "id": 2045, - "title": "顶部返回", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/document/topBar.html" - }, - { - "id": 2046, - "title": "水印组件", - "type": 1, - "openType": "_iframe", - "href": "view/document/watermark.html" - }, - { - "id": 2047, - "title": "全屏组件", - "type": 1, - "openType": "_iframe", - "href": "view/document/fullscreen.html" - }, - { - "id": 2048, - "title": "汽泡组件", - "type": 1, - "openType": "_iframe", - "href": "view/document/popover.html" - } - ] }] }, { @@ -275,7 +28,7 @@ "href": "", "children": [{ "id": "success", - "title": "成功", + "title": "成功页面", "icon": "layui-icon layui-icon-face-smile", "type": 1, "openType": "_iframe", @@ -283,7 +36,7 @@ }, { "id": "failure", - "title": "失败", + "title": "失败页面", "icon": "layui-icon layui-icon-face-cry", "type": 1, "openType": "_iframe", @@ -292,153 +45,35 @@ ] }, { - "id": "error", - "title": "错误页面", - "icon": "layui-icon layui-icon-face-cry", - "type": 0, - "href": "", - "children": [{ - "id": 403, - "title": "403", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_iframe", - "href": "view/error/403.html" - }, - { - "id": 404, - "title": "404", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/error/404.html" - }, - - { - "id": 500, - "title": "500", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/error/500.html" - } - - ] - }, - { - "id": "system", - "title": "系统管理", - "icon": "layui-icon layui-icon-set-fill", + "id": "open", + "title": "更多功能", + "icon": "layui-icon layui-icon-auz", "type": 0, "href": "", "children": [{ - "id": 601, - "title": "用户管理", + "id": "a", + "title": "普通路由", "icon": "layui-icon layui-icon-face-smile", "type": 1, "openType": "_iframe", - "href": "view/system/user.html" - }, - { - "id": 602, - "title": "角色管理", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/system/role.html" - }, - - { - "id": 603, - "title": "权限管理", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/system/power.html" + "href": "view/result/success.html" }, - { - "id": 604, - "title": "部门管理", + "id": "b", + "title": "新建标签", "icon": "layui-icon layui-icon-face-cry", "type": 1, - "openType": "_iframe", - "href": "view/system/deptment.html" + "openType": "_blank", + "href": "http://www.layui-vue.com" }, { - "id": 605, - "title": "行为日志", + "id": "b", + "title": "弹窗页面", "icon": "layui-icon layui-icon-face-cry", "type": 1, - "openType": "_iframe", - "href": "view/system/log.html" - }, { - "id": 606, - "title": "数据字典", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_iframe", - "href": "view/system/dict.html" + "openType": "_layer", + "href": "http://www.layui-vue.com" } - ] - }, - { - "id": "common", - "title": "常用页面", - "icon": "layui-icon layui-icon-template-1", - "type": 0, - "href": "", - "children": [{ - "id": 701, - "title": "登录页面", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_iframe", - "href": "login.html" - }, { - "id": 702, - "title": "空白页面", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_iframe", - "href": "view/system/space.html" - }] - }, { - "id": "echarts", - "title": "数据图表", - "icon": "layui-icon layui-icon-chart", - "type": 0, - "href": "", - "children": [{ - "id": 12121, - "title": "折线图", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_iframe", - "href": "view/echarts/line.html" - }, { - "id": 121212, - "title": "柱状图", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_iframe", - "href": "view/echarts/column.html" - }] - }, - { - "id": "code", - "title": "开发工具", - "icon": "layui-icon layui-icon-util", - "type": 0, - "href": "", - "children": [{ - "id": 801, - "title": "表单构建", - "icon": "layui-icon layui-icon-util", - "type": 1, - "openType": "_iframe", - "href": "component/code/index.html" - }] } ] \ No newline at end of file diff --git a/admin/data/operateLog.json b/admin/data/operateLog.json deleted file mode 100644 index 79e5454..0000000 --- a/admin/data/operateLog.json +++ /dev/null @@ -1,211 +0,0 @@ -{ - "createTime": null, - "createBy": null, - "updateTime": null, - "updateBy": null, - "remark": null, - "code": 0, - "msg": null, - "count": 178, - "data": [{ - "id": "1305106857240559616", - "title": "主页", - "description": "返回 Index 主页视图", - "businessType": "ADD", - "requestMethod": "GET", - "method": "/index", - "operateUrl": "/index", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "OPERATE", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T11:31:37.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305101599714050048", - "title": "主页", - "description": "返回 Index 主页视图", - "businessType": "ADD", - "requestMethod": "GET", - "method": "/index", - "operateUrl": "/index", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "OPERATE", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T11:10:44.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305101253352620032", - "title": "主页", - "description": "返回 Index 主页视图", - "businessType": "ADD", - "requestMethod": "GET", - "method": "/index", - "operateUrl": "/index", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "OPERATE", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T11:09:21.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305099681512030208", - "title": "主页", - "description": "返回 Index 主页视图", - "businessType": "ADD", - "requestMethod": "GET", - "method": "/index", - "operateUrl": "/index", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "OPERATE", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T11:03:06.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305095191291494400", - "title": "主页", - "description": "返回 Index 主页视图", - "businessType": "ADD", - "requestMethod": "GET", - "method": "/index", - "operateUrl": "/index", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "OPERATE", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T10:45:16.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305092034448588800", - "title": "主页", - "description": "返回 Index 主页视图", - "businessType": "ADD", - "requestMethod": "GET", - "method": "/index", - "operateUrl": "/index", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "OPERATE", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T10:32:43.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305082868002717696", - "title": "主页", - "description": "返回 Index 主页视图", - "businessType": "ADD", - "requestMethod": "GET", - "method": "/index", - "operateUrl": "/index", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "OPERATE", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T09:56:18.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305071141362073600", - "title": "主页", - "description": "返回 Index 主页视图", - "businessType": "ADD", - "requestMethod": "GET", - "method": "/index", - "operateUrl": "/index", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "OPERATE", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T09:09:42.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305070488145362944", - "title": "主页", - "description": "返回 Index 主页视图", - "businessType": "ADD", - "requestMethod": "GET", - "method": "/index", - "operateUrl": "/index", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "OPERATE", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T09:07:06.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }, { - "id": "1305064697174687744", - "title": "主页", - "description": "返回 Index 主页视图", - "businessType": "ADD", - "requestMethod": "GET", - "method": "/index", - "operateUrl": "/index", - "operateAddress": "127.0.0.1", - "requestParam": null, - "requestBody": "", - "responseBody": null, - "success": true, - "loggingType": "OPERATE", - "errorMsg": null, - "systemOs": "Windows", - "createTime": "2020-09-13T08:44:05.000+0000", - "operateName": "admin", - "map": {}, - "browser": "谷歌浏览器" - }] -} diff --git a/admin/data/organization.json b/admin/data/organization.json deleted file mode 100644 index ff1626b..0000000 --- a/admin/data/organization.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "code": 0, - "msg": "...", - "count": 3, - "data": [{ - "name": "软件部", - "userCount": 324, - "location": "二楼201", - "leader": "皮卡丘" - }, { - "name": "美工部", - "userCount": 98, - "location": "二楼101", - "leader": "皮卡丘" - }, { - "name": "设计部", - "userCount": 43, - "location": "六楼602", - "leader": "皮卡丘" - }, { - "name": "销售部", - "userCount": 12, - "location": "一楼131", - "leader": "皮卡丘" - }, { - "name": "产品部", - "userCount": 128, - "location": "四楼401", - "leader": "皮卡丘" - }, { - "name": "财务部", - "userCount": 23, - "location": "三楼105", - "leader": "皮卡丘" - }, { - "name": "人事部", - "userCount": 67, - "location": "二楼201", - "leader": "皮卡丘" - }] -} diff --git a/admin/data/organizationtree.json b/admin/data/organizationtree.json deleted file mode 100644 index 262594f..0000000 --- a/admin/data/organizationtree.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "status": { - "code": 200, - "message": "操作成功" - }, - "data": [{ - "id": "0", - "title": "济南总部", - "last": false, - "parentId": "9527", - "children": [{ - "id": "001", - "title": "杭州市", - "last": false, - "parentId": "0", - "children": [{ - "id": "001001", - "title": "软件部", - "last": true, - "parentId": "001" - }, - { - "id": "001002", - "title": "销售部", - "last": true, - "parentId": "001" - }, - { - "id": "001003", - "title": "财务部", - "last": true, - "parentId": "001" - }, - { - "id": "001004", - "title": "人事部", - "last": true, - "parentId": "001" - }, - { - "id": "001005", - "title": "行政部", - "last": true, - "parentId": "001" - } - ] - }, - { - "id": "002", - "title": "湖北省", - "last": false, - "parentId": "0", - "children": [{ - "id": "002001", - "title": "武汉市", - "last": true, - "parentId": "002" - }, - { - "id": "002002", - "title": "黄冈市", - "last": true, - "parentId": "002" - }, - { - "id": "002003", - "title": "潜江市", - "last": true, - "parentId": "002" - }, - { - "id": "002004", - "title": "荆州市", - "last": true, - "parentId": "002" - }, - { - "id": "002005", - "title": "襄阳市", - "last": true, - "parentId": "002" - } - ] - }, - { - "id": "003", - "title": "广东省", - "last": false, - "parentId": "0", - "children": [{ - "id": "003001", - "title": "广州市", - "last": false, - "parentId": "003", - "children": [{ - "id": "003001001", - "title": "天河区", - "last": true, - "parentId": "003001" - }, - { - "id": "003001002", - "title": "花都区", - "last": true, - "parentId": "003001" - } - ] - }, - { - "id": "003002", - "title": "深圳市", - "last": true, - "parentId": "003" - }, - { - "id": "003003", - "title": "中山市", - "last": true, - "parentId": "003" - }, - { - "id": "003004", - "title": "东莞市", - "last": true, - "parentId": "003" - }, - { - "id": "003005", - "title": "珠海市", - "last": true, - "parentId": "003" - }, - { - "id": "003006", - "title": "韶关市", - "last": true, - "parentId": "003" - } - ] - } - ] - }] -} \ No newline at end of file diff --git a/admin/data/power.json b/admin/data/power.json deleted file mode 100644 index db7ace1..0000000 --- a/admin/data/power.json +++ /dev/null @@ -1,185 +0,0 @@ -{ - "code": 0, - "msg": "...", - "count": null, - "data": [{ - "powerId": "1", - "powerName": "系统管理", - "powerType": "0", - "powerCode": "", - "powerUrl": "", - "openType": null, - "parentId": "0", - "icon": "layui-icon-set-fill", - "sort": 1, - "enable": 1, - "checkArr": "0" - }, { - "powerId": "2", - "powerName": "用户管理", - "powerType": "1", - "powerCode": "sys:user:main", - "powerUrl": "/system/user/main", - "openType": null, - "parentId": "1", - "icon": "layui-icon-username", - "sort": null, - "enable": 1, - "checkArr": "0" - }, { - "powerId": "3", - "powerName": "角色管理", - "powerType": "1", - "powerCode": "sys:role:main", - "powerUrl": "/system/role/main", - "openType": null, - "parentId": "1", - "icon": "layui-icon-user", - "sort": null, - "enable": 1, - "checkArr": "0" - }, { - "powerId": "4", - "powerName": "权限管理", - "powerType": "1", - "powerCode": "sys:power:main", - "powerUrl": "/system/power/main", - "openType": null, - "parentId": "1", - "icon": "layui-icon-vercode", - "sort": null, - "checkArr": "0" - }, { - "powerId": "442359447487123456", - "powerName": "角色列表", - "powerType": "2", - "powerCode": "sys:role:data", - "powerUrl": "", - "openType": null, - "parentId": "3", - "icon": "layui-icon-rate", - "sort": 1, - "checkArr": "0" - }, { - "powerId": "442417411065516032", - "powerName": "敏捷开发", - "powerType": "0", - "powerCode": "", - "powerUrl": "", - "openType": null, - "parentId": "0", - "icon": "layui-icon-senior", - "sort": 2, - "checkArr": "0" - }, { - "powerId": "442418188639145984", - "powerName": "模板管理", - "powerType": "1", - "powerCode": "exp:template:main", - "powerUrl": "/system/user/main", - "openType": null, - "parentId": "442417411065516032", - "icon": "layui-icon-template-1", - "sort": null, - "checkArr": "0" - }, { - "powerId": "442520236248403968", - "powerName": "数据监控", - "powerType": "1", - "powerCode": "/druid/index.html", - "powerUrl": "/druid/index.html", - "openType": null, - "parentId": "694203021537574912", - "icon": "layui-icon-chart", - "sort": 1, - "checkArr": "0" - }, { - "powerId": "442650387514789888", - "powerName": "定时任务", - "powerType": "0", - "powerCode": "", - "powerUrl": "", - "openType": null, - "parentId": "0", - "icon": "layui-icon-log", - "sort": 5, - "checkArr": "0" - }, { - "powerId": "442650770626711552", - "powerName": "任务管理", - "powerType": "1", - "powerCode": "qrt:task:main", - "powerUrl": "/qrt/task/main", - "openType": null, - "parentId": "442650387514789888", - "icon": "layui-icon-chat", - "sort": 1, - "checkArr": "0" - }, { - "powerId": "442651158935375872", - "powerName": "任务日志", - "powerType": "1", - "powerCode": "qrt:log:main", - "powerUrl": "/qrt/log/main", - "openType": null, - "parentId": "442650387514789888", - "icon": "layui-icon-file", - "sort": 2, - "checkArr": "0" - }, { - "powerId": "442722702474743808", - "powerName": "数据字典", - "powerType": "1", - "powerCode": "system:dictType:main", - "powerUrl": "/system/dictType/main", - "openType": null, - "parentId": "1", - "icon": "layui-icon-form", - "sort": 1, - "checkArr": "0" - }, { - "powerId": "5", - "powerName": "工作流程", - "powerType": "0", - "powerCode": "", - "powerUrl": "", - "openType": null, - "parentId": "0", - "icon": "layui-icon-util", - "sort": 3, - "checkArr": "0" - }, { - "powerId": "6", - "powerName": "模型管理", - "powerType": "1", - "powerCode": null, - "powerUrl": null, - "openType": null, - "parentId": "5", - "icon": "layui-icon layui-icon-edit", - "sort": null, - "checkArr": "0" - }, { - "powerId": "694203021537574912", - "powerName": "系统监控", - "powerType": "0", - "powerCode": "", - "powerUrl": "", - "openType": null, - "parentId": "0", - "icon": "layui-icon-console", - "sort": 4, - "checkArr": "0" - }, { - "powerId": "694203311615639552", - "powerName": "接口文档", - "powerType": "1", - "powerCode": "", - "powerUrl": "/swagger-ui.html", - "openType": null, - "parentId": "694203021537574912", - "icon": "layui-icon-chart", - "sort": 1, - "checkArr": "0" - }] -} diff --git a/admin/data/role.json b/admin/data/role.json deleted file mode 100644 index 42bd064..0000000 --- a/admin/data/role.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "code": 0, - "msg": "...", - "count": 3, - "data": [{ - "createTime": null, - "createBy": null, - "updateTime": null, - "updateBy": null, - "remark": null, - "roleId": "1", - "roleName": "超级管理员", - "roleCode": "admin", - "enable": "1", - "details": "超级管理员", - "checked": false - }, { - "createTime": null, - "createBy": null, - "updateTime": null, - "updateBy": null, - "remark": null, - "roleId": "2", - "roleName": "普通管理员", - "roleCode": "manager", - "enable": "0", - "details": "普通管理员", - "checked": false - }, { - "createTime": null, - "createBy": null, - "updateTime": null, - "updateBy": null, - "remark": null, - "roleId": "3", - "roleName": "普通用户", - "roleCode": "pearson", - "enable": "0", - "details": "普通用户", - "checked": false - }] -} diff --git a/admin/data/user.json b/admin/data/user.json deleted file mode 100644 index 2e927ac..0000000 --- a/admin/data/user.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "code": 0, - "msg": "...", - "count": 3, - "data": [{ - "userId": "1", - "username": "admin", - "password": "$2a$10$1K7E1.IYCrsoZVCb6utOo.5jENtfOzhdKWhc49t2lk.UQd7Oam4FG", - "salt": null, - "status": null, - "realName": "超级管理员", - "email": "8540854@qq.com", - "avatar": null, - "sex": "1", - "phone": "15543526531", - "enable": "1", - "login": "1", - "roleIds": null - }, { - "userId": "442488661347536896", - "username": "854085467", - "password": null, - "salt": null, - "status": null, - "realName": "就眠仪式", - "email": null, - "avatar": null, - "sex": "1", - "phone": "1555324324234", - "enable": "0", - "login": "1", - "roleIds": null - }, { - "userId": "442492965651353600", - "username": "970796069", - "password": null, - "salt": null, - "status": null, - "realName": "王二麻子", - "email": null, - "avatar": null, - "sex": "1", - "phone": "1555324324234", - "enable": "1", - "login": "1", - "roleIds": null - }, { - "userId": "1", - "username": "admin", - "password": "$2a$10$1K7E1.IYCrsoZVCb6utOo.5jENtfOzhdKWhc49t2lk.UQd7Oam4FG", - "salt": null, - "status": null, - "realName": "超级管理员", - "email": "8540854@qq.com", - "avatar": null, - "sex": "1", - "phone": "15543526531", - "enable": "1", - "login": "1", - "roleIds": null - }, { - "userId": "442488661347536896", - "username": "854085467", - "password": null, - "salt": null, - "status": null, - "realName": "就眠仪式", - "email": null, - "avatar": null, - "sex": "1", - "phone": "1555324324234", - "enable": "1", - "login": "1", - "roleIds": null - }, { - "userId": "442492965651353600", - "username": "970796069", - "password": null, - "salt": null, - "status": null, - "realName": "王二麻子", - "email": null, - "avatar": null, - "sex": "1", - "phone": "1555324324234", - "enable": "1", - "login": "1", - "roleIds": null - }, { - "userId": "1", - "username": "admin", - "password": "$2a$10$1K7E1.IYCrsoZVCb6utOo.5jENtfOzhdKWhc49t2lk.UQd7Oam4FG", - "salt": null, - "status": null, - "realName": "超级管理员", - "email": "8540854@qq.com", - "avatar": null, - "sex": "1", - "phone": "15543526531", - "enable": "1", - "login": "1", - "roleIds": null - }, { - "userId": "442488661347536896", - "username": "854085467", - "password": null, - "salt": null, - "status": null, - "realName": "就眠仪式", - "email": null, - "avatar": null, - "sex": "1", - "phone": "1555324324234", - "enable": "1", - "login": "1", - "roleIds": null - }] -} diff --git a/admin/images/act.jpg b/admin/images/act.jpg deleted file mode 100644 index 46eb3da8faccbd3a2d0f025d2e20e5e281ec20d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201852 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 FT?f?v^ckt$3TP6+m! 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�~k0fP=Zy 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�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 #%%{ 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 z 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 JWg>e1{{!W*gkAsu diff --git a/admin/images/background.svg b/admin/images/background.svg index 2f4b63b..1b153e0 100644 --- a/admin/images/background.svg +++ b/admin/images/background.svg @@ -1,24 +1,68 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + Group 21 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/admin/images/document.jpg b/admin/images/document.jpg deleted file mode 100644 index 788373eef93aed359f50a335e532b0bee12d5eaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303524 zcmb??1z1#VxAq7q3J6F`s(?s$$0!}r9fE*>beF^^NOy~XNDPg13XCv>f=Gv?42^UQ zF~L75zVCa!^PT^kbN&D3f_a$Pv-k6?XRUkPEB5*1`40fGvb>T!;L4RN07c9X;2eha zKuJc%OhZduUg@zM<^uo#iwb}_aCiU!M<)+AEd}X228Kp=F5dfdm|MEL{2Bk7SIjlw z;{eQG0APgk-+cbxy>;W6mAfV8q+QIfha2YR0Kk=Jm@%2n@3GIt*y8s%`eN*+qa}km z=RIcpz~&!gi+_y0JzP96=X}06-_phHVmyNxOE@}sUfk>AxR^14m6NVE=G6f6OABxZ zXaN)e(wOo8*W+(_I_ClaB1ZrKcKqM(S)>C14Iuyk)zshbF}()>h+YE#^#d;EZsxxx zgM;~tWo-=r>=yz6Hw^&*(m?+is0JpAR0b#$!zH$qIb?XZDtt;o9 z00zwdVdG$5`Llk^>lK_E*tpm6u&!Ri$DH6pj5z@d2L}fW`vw8_H3IzGSFo^guHL$a zdzTk*{gLJk5>j(A*L$xL@W=(UlX9wRhA1c*nfUnKJ*wM>cctAHWVI|3NA{?0Q!}#& z%jg(b){fqPASfgvs;K|W%R4AIIW4!YzC-tQUITPOPCl&A#?vPxv;c;=GyN6JRIo8K z|9ftjsb0N?d;JC$9_DkGTfb(8jdcz0CN2*C&8s(l&kS&l$oQ-Ro4tJ2)KD9*N*H_Sa^<7G7AaI$m)6p1=ro6($lwmmXezX z?Hn7wEob#QH6L7XzrKSd1a>|JAi&58>lXGc01z+}97ne|Oy%_%&CWl`146Pg%y&gQ zFOdUffm>8ofyf?|%|^5U>?6_BAMIfzkaxhLsV*ywV z(GSd;`5>tiN6+Vr6i7Gj4e$UDs2C={Lsk7!0(Ix7*l#wz3Uk@u8itfKq3Tbn3Zn{g zRtlv+@G|qX=9<%I=#t$(D~2FP)z`?+jvFiA;6`b|&jAr1QEk@L&a;qHO$3F@bR<$d zOyeAIonZ)a4oLdg6~bZqlrFF*3l*wH?KgK0Sg+e}juwPL2ruTuj=YtQI z84kak1FBzzYVT~LRkO$aZZ=jxCtXQ*i_QTf!lGcR0X}~FYJs^` zkBqa^Q4%s{&H4v%-&}sINn+pV`9?|j34N#L9MCb%fWA7%G2(3gZU?R=gf^!zn+PS^ zPewl)m=gXi*asVujH?)ZI0xV*p!l<=CDcj+s?Nns;e7

V!JiLgrB#7Hy>Z*jlz~!ikWhrX7 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�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û>B@=TdS*K6X{UW3E18Qhbo&VNoZVP{<7( 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 z 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Þ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 diff --git a/component/pear/css/module/frame.css b/component/pear/css/module/frame.css index 09a1423..e916acf 100644 --- a/component/pear/css/module/frame.css +++ b/component/pear/css/module/frame.css @@ -1,8 +1,8 @@ .pear-frame { width: 100%; - height: 100%; position: relative; - overflow: hidden; + overflow-y: auto; + height: 100%; } .pear-frame .dot { @@ -15,15 +15,6 @@ display: inline-block; } -.pear-frame .title { - position: absolute; - margin-top: 0px; - margin-left: 12px; - color: dimgray; - display: inline-block; - letter-spacing: 2px; -} - .pear-frame .pear-frame-title { height: 40px; line-height: 40px; diff --git a/component/pear/css/module/layout.css b/component/pear/css/module/layout.css index 9c4d082..000f1e0 100644 --- a/component/pear/css/module/layout.css +++ b/component/pear/css/module/layout.css @@ -1,7 +1,9 @@ .pear-container { - margin: 10px; - background-color: whitesmoke; - width: calc(100vw - 20px); + padding: 10px; + margin: 0px; + box-sizing: border-box; + background-color: whitesmoke; + width: 100%; } body::-webkit-scrollbar { diff --git a/component/pear/css/module/tab.css b/component/pear/css/module/tab.css index 3161f3e..4f9e5a9 100644 --- a/component/pear/css/module/tab.css +++ b/component/pear/css/module/tab.css @@ -9,6 +9,7 @@ } .pear-tab .layui-tab-content .layui-tab-item { + overflow-y: auto; height: 100%; } diff --git a/component/pear/css/module/table.css b/component/pear/css/module/table.css deleted file mode 100644 index a3c7210..0000000 --- a/component/pear/css/module/table.css +++ /dev/null @@ -1,112 +0,0 @@ -.layui-table-tool-panel { - margin-top: 10px !important; -} - -.layui-table-tool { - background-color: white !important; - border-bottom: none !important; - padding-bottom: 10px !important; -} - -.layui-table-header, -.layui-table-header th { - background-color: white !important; -} - -.layui-table-view { - border: none !important; -} - -/** 兼容 layui 2.7.0 升级 table cell 单元格边距的调整 */ -.layui-table-view .layui-table td, .layui-table-view .layui-table th { - padding: 5px 0px; -} - -.layui-table-cell { - height: 34px; - line-height: 34px; -} - -.layui-table .layui-laypage .layui-laypage-curr .layui-laypage-em { - border-radius: 50px !important; - border-radius: 4px!important; - background-color: #5FB878 !important; -} - -.layui-table tr { - height: 34px; - line-height: 34px; -} - -.layui-table-cell { - padding-top: 1px !important; -} - -.layui-table-box * { - font-size: 13px !important; -} - -.layui-table-page .layui-laypage input { - width: 40px; - height: 26.5px!important; -} - -.layui-table-box button { - font-size: 15px !important; -} - -.layui-table-cell .pear-btn { - margin-right: 5px; -} - -.layui-table-cell .pear-btn:last-child { - margin-right: 0px; -} - -.layui-table-page { - height: 45px !important; - padding-top: 10px !important; -} - -.layui-table-tool .layui-inline { - border-radius: 3px !important; - width: 30px !important; - height: 30px !important; - line-height: 20px !important; -} - -.layui-table-view .layui-table[lay-skin=line] { - border: none !important; -} - -.layui-table-init .layui-icon{ - font-size: 40px !important; - margin: -15px 0 0 -15px; -} - -.layui-table-body::-webkit-scrollbar { - width: 0px; - height: 0px; -} - -.layui-table-body::-webkit-scrollbar { - width: 6px; - height: 6px; -} -.layui-table-body::-webkit-scrollbar-track { - background: white; - border-radius: 2px; -} - -.layui-table-body::-webkit-scrollbar-thumb { - background: #E6E6E6; - border-radius: 2px; -} - -.layui-table-body::-webkit-scrollbar-thumb:hover { - background: #E6E6E6; -} - -.layui-table-body::-webkit-scrollbar-corner { - background: #f6f6f6; -} diff --git a/component/pear/css/module/treetable.css b/component/pear/css/module/treetable.css deleted file mode 100644 index da849b8..0000000 --- a/component/pear/css/module/treetable.css +++ /dev/null @@ -1,25 +0,0 @@ -.treeTable-icon i:last-child{ - display: none!important; -} - -.treeTable-empty{ - margin-left: -3px; -} -.treeTable-empty { - width: 20px; - display: inline-block; -} - -.treeTable-icon { - cursor: pointer; -} - -.treeTable-icon .layui-icon-triangle-d:before { - content: "\e623"; -} - -.treeTable-icon.open .layui-icon-triangle-d:before { - content: "\e625"; - background-color: transparent; -} - diff --git a/component/pear/css/pear.css b/component/pear/css/pear.css index c43e364..d50f24f 100644 --- a/component/pear/css/pear.css +++ b/component/pear/css/pear.css @@ -4,7 +4,6 @@ @import url("module/dtree/font/dtreefont.css"); @import url("module/dtree/dtree.css"); @import url("module/iconPicker.css"); -@import url("module/treetable.css"); @import url("module/nprogress.css"); @import url("module/message.css"); @import url("module/cropper.css"); @@ -14,7 +13,6 @@ @import url("module/layout.css"); @import url("module/notice.css"); @import url("module/button.css"); -@import url("module/table.css"); @import url("module/frame.css"); @import url("module/layer.css"); @import url("module/toast.css"); diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index b829933..7e55066 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -1,98 +1,152 @@ -layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'menu', 'frame', 'theme', 'convert','fullscreen'], - function(exports) { +layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'menu', 'frame', 'theme', 'convert', 'fullscreen'], + function (exports) { "use strict"; var $ = layui.jquery, form = layui.form, - element = layui.element, yaml = layui.yaml, pearTab = layui.tab, - convert = layui.convert, pearMenu = layui.menu, pearFrame = layui.frame, pearTheme = layui.theme, message = layui.message, - fullscreen=layui.fullscreen; + fullscreen = layui.fullscreen; var bodyFrame; var sideMenu; var bodyTab; var config; - var logout = function() {}; + var logout = function () { }; var msgInstance; var body = $('body'); - var pearAdmin = new function() { + var pearAdmin = new function () { - var configType = 'yml'; - var configPath = 'pear.config.yml'; + this.configuration = {}; - this.setConfigPath = function(path) { - configPath = path; - } - - this.setConfigType = function(type) { - configType = type; - } - - this.render = function(initConfig) { - if (initConfig !== undefined) { - applyConfig(initConfig); - } else { - applyConfig(pearAdmin.readConfig()); - } + this.configurationPath = "pear.config.yml"; + + /** + * @since Pear Admin 4.0 + * + * 获取 pear.config 实现 [ default ] + */ + this.configurationProvider = () => { + return new Promise((resolve) => { + if(this.configurationPath.indexOf("json") > -1) { + $.ajax({ + type: 'get', + url: this.configurationPath, + dataType: 'json', + async: false, + success: (result) => { + resolve(result); + } + }); + } else { + resolve(yaml.load(this.configurationPath)); + } + }) } - this.readConfig = function() { - if (configType === "yml") { - return yaml.load(configPath); + /** + * @since Pear Admin 4.0 + * + * 配置 pear.config 路径 + */ + this.setConfigurationPath = (path) => { + this.configurationPath = path; + } + + /** + * @since Pear Admin 4.0 + * + * 获取 pear.config 实现 [ implement ] + */ + this.setConfigurationProvider = (provider) => { + this.configurationProvider = provider; + } + + /** + * @since Pear Admin 4.0 + * + * 获取 pear.config 配置 + */ + this.getConfiguration = () => { + return this.configuration; + } + + /** + * @since Pear Admin 4.0 + * + * Core Function. + * + * @param {*} options + */ + this.render = (options) => { + if (options !== undefined) { + this.renderFramework(options); } else { - var data; - $.ajax({ - url: configPath, - type: 'get', - dataType: 'json', - async: false, - success: function(result) { - data = result; - } + this.configurationProvider().then((result) => { + this.renderFramework(result); }) - return data; } } - this.messageRender = function(option) { - var option = { - elem: '.message', - url: option.header.message, - height: '250px' - }; - msgInstance = message.render(option); + /** + * @since Pear Admin 4.0 + */ + this.renderFramework = (options) => { + + this.renderInformation(options.information); + + this.renderMenu(options); + + this.renderContent(options); + + // + + + // TODO 机制 + $(".loader-main").fadeOut(360, () => { + $(".loader-main").remove(); + }); } - this.logoRender = function(param) { - $(".layui-logo .logo").attr("src", param.logo.image); - $(".layui-logo .title").html(param.logo.title); + /** + * @since Pear Admin 4.0 + * + * 初始化 Web information 网站信息 + */ + this.renderInformation = (informationOptions) => { + const $logo = $(".pear-admin .layui-logo .logo"); + if(informationOptions && informationOptions.logo) { + $logo.attr("src", informationOptions.logo); + } + const $text = $(".pear-admin .layui-logo .text"); + if(informationOptions && informationOptions.name) { + $text.html(informationOptions.name); + } } - this.menuRender = function(param) { + this.renderMenu = (param) => { + + const isControl = filterStorage("control", param, param.menu.control); + sideMenu = pearMenu.render({ - elem: 'sideMenu', + elem: 'menu', async: param.menu.async !== undefined ? param.menu.async : true, - theme: "dark-theme", - height: '100%', method: param.menu.method, - control: isControl(param) === 'true' || isControl(param) === true ? 'control' : false, // control + control: isControl == true ? 'control' : false, controlWidth: param.menu.controlWidth, - defaultMenu: 0, accordion: param.menu.accordion, url: param.menu.data, data: param.menu.data, parseData: false, - change: function() { + change: function () { compatible(); }, - done: function() { + done: function () { sideMenu.isCollapse = param.menu.collapse; sideMenu.selectItem(param.menu.select); pearAdmin.collapse(param); @@ -100,11 +154,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm }); } - this.bodyRender = function(param) { - - body.on("click", ".refresh", function() { - refresh(); - }) + this.renderContent = function (param) { if (isMuiltTab(param) === "true" || isMuiltTab(param) === true) { bodyTab = pearTab.render({ @@ -117,7 +167,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm index: 0, tabMax: param.tab.max, preload: param.tab.preload, - closeEvent: function(id) { + closeEvent: function (id) { sideMenu.selectItem(id); }, data: [{ @@ -126,9 +176,9 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm title: param.tab.index.title, close: false }], - success: function(id) { + success: function (id) { if (param.tab.session) { - setTimeout(function() { + setTimeout(function () { sideMenu.selectItem(id); bodyTab.positionTab(); }, 500) @@ -136,7 +186,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } }); - bodyTab.click(function(id) { + bodyTab.click(function (id) { if (!param.tab.keepState) { bodyTab.refresh(false); } @@ -144,17 +194,22 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm sideMenu.selectItem(id); }) - sideMenu.click(function(dom, data) { - bodyTab.addTabOnly({ - id: data.menuId, - title: data.menuTitle, - url: data.menuUrl, - icon: data.menuIcon, - close: true - }, 300); + sideMenu.click(function (dom, data) { + if (data.menuOpenType === "_layer") { + layer.open({ type: 2, title: data.menuTitle, content: data.menuUrl, area: ['80%', '80%'], maxmin: true }) + } else { + bodyTab.addTabOnly({ + id: data.menuId, + title: data.menuTitle, + url: data.menuUrl, + icon: data.menuIcon, + close: true + }, 300); + } compatible(); }) } else { + bodyFrame = pearFrame.render({ elem: 'content', title: '首页', @@ -163,21 +218,39 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm height: '100%' }); - sideMenu.click(function(dom, data) { - bodyFrame.changePage(data.menuUrl, true); + sideMenu.click(function (dom, data) { + if (data.menuOpenType === "_layer") { + layer.open({ type: 2, title: data.menuTitle, content: data.menuUrl, area: ['80%', '80%'], maxmin: true }) + } else { + bodyFrame.changePage(data.menuUrl, true); + } compatible() }) } } - this.keepLoad = function(param) { - compatible() - setTimeout(function() { - $(".loader-main").fadeOut(200); - }, param.other.keepLoad) + function applyConfig(param) { + config = param; + pearAdmin.logoRender(param); + pearAdmin.menuRender(param); + pearAdmin.bodyRender(param); + pearAdmin.themeRender(param); + pearAdmin.keepLoad(param); + if (param.header.message != false) { + pearAdmin.messageRender(param); + } + } + + this.messageRender = function (option) { + var option = { + elem: '.message', + url: option.header.message, + height: '250px' + }; + msgInstance = message.render(option); } - this.themeRender = function(option) { + this.themeRender = function (option) { if (option.theme.allowCustom === false) { $(".setting").remove(); } @@ -243,9 +316,9 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } var footer = localStorage.getItem("footer"); - if( footer === null) { + if (footer === null) { footer = option.other.footer; - }else{ + } else { if (option.theme.allowCustom === false) { footer = option.other.footer; } @@ -264,7 +337,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm this.footer(footer); } - this.footer = function(footer){ + this.footer = function (footer) { var bodyDOM = $(".pear-admin .layui-body"); var footerDOM = $(".pear-admin .layui-footer"); if (footer === true || footer === "true") { @@ -276,7 +349,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } } - this.bannerSkin = function(theme) { + this.bannerSkin = function (theme) { var pearAdmin = $(".pear-admin"); pearAdmin.removeClass("banner-layout"); if (theme === true || theme === "true") { @@ -284,7 +357,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } } - this.collapse = function(param) { + this.collapse = function (param) { if (param.menu.collapse) { if ($(window).width() >= 768) { collapse() @@ -292,128 +365,29 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } } - this.menuSkin = function(theme) { + this.menuSkin = function (theme) { var pearAdmin = $(".pear-admin .layui-side"); pearAdmin.removeClass("light-theme"); pearAdmin.removeClass("dark-theme"); pearAdmin.addClass(theme); } - this.headerSkin = function(theme) { + this.headerSkin = function (theme) { var pearAdmin = $(".pear-admin .layui-header"); pearAdmin.removeClass("light-theme"); pearAdmin.removeClass("dark-theme"); pearAdmin.addClass(theme); } - this.logout = function(callback) { + this.logout = function (callback) { logout = callback; } - this.message = function(callback) { + this.message = function (callback) { if (callback != null) { msgInstance.click(callback); } } - - this.collapseSide = function() { - collapse() - } - - this.refreshThis = function() { - refresh() - } - - this.refresh = function(id) { - $("iframe[id='"+ id +"']").attr('src', $("iframe[id='"+ id +"']").attr('src')); - } - - this.addTab = function(id, title, url) { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - bodyTab.addTabOnly({ - id: id, - title: title, - url: url, - icon: null, - close: true - }, 400); - } else { - return; - } - } - - this.closeTab = function(id) { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - pearTab.delTabByElem('content', id, function(currentId){ - sideMenu.selectItem(currentId); - }); - } else { - return; - } - } - - this.closeCurrentTab = function() { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - pearTab.delCurrentTabByElem('content', function(id){ - sideMenu.selectItem(id); - }); - } else { - return; - } - } - - this.closeOtherTab = function() { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - pearTab.delOtherTabByElem('content', function(id){ - sideMenu.selectItem(id); - }); - } else { - return; - } - } - - this.closeAllTab = function() { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - pearTab.delAllTabByElem('content', function(id){ - sideMenu.selectItem(id); - }); - } else { - return; - } - } - - this.changeTabTitle = function(id, title) { - pearTab.changeTabTitleById('content', id ,title); - } - - this.changeIframe = function(id, title, url) { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - return; - } else { - sideMenu.selectItem(id); - bodyFrame.changePage(url, true); - } - } - - this.jump = function(id, title, url) { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - pearAdmin.addTab(id, title, url) - } else { - pearAdmin.changeIframe(id, title, url) - } - } - - this.fullScreen = function() { - if ($(".fullScreen").hasClass("layui-icon-screen-restore")) { - screenFun(2).then(function() { - $(".fullScreen").eq(0).removeClass("layui-icon-screen-restore"); - }); - } else { - screenFun(1).then(function() { - $(".fullScreen").eq(0).addClass("layui-icon-screen-restore"); - }); - } - } }; function refresh() { @@ -425,7 +399,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm refreshA.addClass("layui-icon-loading"); if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) bodyTab.refresh(true); else bodyFrame.refresh(true); - setTimeout(function() { + setTimeout(function () { refreshA.addClass("layui-icon-refresh-1"); refreshA.removeClass("layui-anim"); refreshA.removeClass("layui-anim-rotate"); @@ -452,13 +426,29 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } } - body.on("click", ".logout", function() { - if (logout() && bodyTab) { + /** + * @since Pear Admin 4.0 + * + * 使用 admin.logout(Function) 实现注销 + * + * Promise 作为返回值类型时,泛型内容为 true 时视为注销成功,则清除 bodyTab 缓存 + * + * 否则视为注销失败,不做任何处置。 + */ + body.on("click", ".logout", function () { + var promise = logout(); + if (promise != undefined) { + promise.then((asyncResult) => { + if (asyncResult) { + bodyTab.clear(); + } + }) + } else { bodyTab.clear(); } }) - body.on("click", ".collapse,.pear-cover", function() { + body.on("click", ".collapse,.pear-cover", function () { collapse(); }); @@ -512,7 +502,6 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm return tiledMenus; } - // 创建搜索列表 var createList = function (data) { var _listHtml = ''; $.each(data, function (index, item) { @@ -525,19 +514,19 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } var _html = [ - '

' + `` ].join(''); layer.open({ @@ -550,7 +539,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm anim: 0, move: false, content: _html, - success: function(layero,layeridx){ + success: function (layero, layeridx) { var $layer = layero; var $content = $(layero).children('.layui-layer-content'); var $input = $(".menu-search-input-wrapper input"); @@ -562,16 +551,16 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm $layer.css("border-radius", "6px"); $input.off("focus").focus(); // 搜索菜单 - $input.off("input").on("input", debounce(function(){ + $input.off("input").on("input", debounce(function () { var keywords = $input.val().trim(); var filteredMenus = filterHandle(menuData, keywords); - if(filteredMenus.length){ + if (filteredMenus.length) { var tiledMenus = tiledHandle(filteredMenus); var listHtml = createList(tiledMenus); $noData.css("display", "none"); $list.html("").append(listHtml).children(":first").addClass("this") - }else{ + } else { $list.html(""); $noData.css("display", "flex"); } @@ -589,7 +578,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm var menuType = $(this).attr("smenu-type"); var openableWindow = menuType === "1" || menuType === 1; - if(sideMenu.isCollapse){ + if (sideMenu.isCollapse) { collapse(); } if (openableWindow) { @@ -604,7 +593,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm $list.off('mouseenter').on("mouseenter", "li", function () { $(".menu-search-list li.this").removeClass("this"); $(this).addClass("this"); - }).off("mouseleave").on("mouseleave", "li", function(){ + }).off("mouseleave").on("mouseleave", "li", function () { $(this).removeClass("this"); }) @@ -628,25 +617,25 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } compatible(); layer.close(layeridx); - }else if(e.keyCode === 38){ + } else if (e.keyCode === 38) { e.preventDefault(); var prevEl = $(".menu-search-list li.this").prev(); $(".menu-search-list li.this").removeClass("this"); - if(prevEl.length !== 0){ + if (prevEl.length !== 0) { prevEl.addClass("this"); - }else{ + } else { $list.children().last().addClass("this"); } - }else if(e.keyCode === 40){ + } else if (e.keyCode === 40) { e.preventDefault(); var nextEl = $(".menu-search-list li.this").next(); $(".menu-search-list li.this").removeClass("this"); - if(nextEl.length !== 0){ + if (nextEl.length !== 0) { nextEl.addClass("this"); - }else{ + } else { $list.children().first().addClass("this"); } - }else if(e.keyCode === 27){ + } else if (e.keyCode === 27) { e.preventDefault(); layer.close(layeridx); } @@ -656,19 +645,19 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm }); - body.on("click", ".fullScreen", function() { + body.on("click", ".fullScreen", function () { if ($(this).hasClass("layui-icon-screen-restore")) { - fullscreen.fullClose().then(function() { + fullscreen.fullClose().then(function () { $(".fullScreen").eq(0).removeClass("layui-icon-screen-restore"); }); } else { - fullscreen.fullScreen().then(function() { + fullscreen.fullScreen().then(function () { $(".fullScreen").eq(0).addClass("layui-icon-screen-restore"); }); } }); - body.on("click", '[user-menu-id]', function() { + body.on("click", '[user-menu-id]', function () { if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { bodyTab.addTabOnly({ id: $(this).attr("user-menu-id"), @@ -682,7 +671,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } }); - body.on("click", ".setting", function() { + body.on("click", ".setting", function () { var menuItem = '
  • ' + @@ -724,28 +713,33 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm '' + '
  • '; + headItem += + '
  • ' + + '' + + '
    ' + + '
    ' + + '
    ' + + '
  • '; + var headHtml = '
    \n' + - '
    顶部风格
    \n' + + '
    顶栏风格
    \n' + '
    \n' + '
      \n' + headItem + '
    \n' + '
    \n' + '
    '; var moreItem = - '
    菜单
    '; + '
    菜单分割
    '; moreItem += - '
    视图
    '; + '
    多选项卡
    '; moreItem += - '
    通栏
    '; + '
    通栏布局
    '; moreItem += - '
    通色
    '; - - moreItem += - '
    页脚
    '; + '
    开启页脚
    '; var moreHtml = '
    \n' + '
    更多设置
    \n' + @@ -766,7 +760,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm skin: 'layer-anim-right', move: false, content: menuHtml + headHtml + buildColorHtml() + moreHtml, - success: function(layero, index) { + success: function (layero, index) { form.render(); @@ -789,31 +783,31 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm $("[data-select-header='" + header + "']").addClass("layui-this"); } - $('#layui-layer-shade' + index).click(function() { + $('#layui-layer-shade' + index).click(function () { var $layero = $('#layui-layer' + index); $layero.animate({ left: $layero.offset().left + $layero.width() - }, 200, function() { + }, 200, function () { layer.close(index); }); }) - form.on('switch(control)', function(data) { + form.on('switch(control)', function (data) { localStorage.setItem("control", this.checked); window.location.reload(); }) - form.on('switch(muilt-tab)', function(data) { + form.on('switch(muilt-tab)', function (data) { localStorage.setItem("muilt-tab", this.checked); window.location.reload(); }) - form.on('switch(auto-head)', function(data) { + form.on('switch(auto-head)', function (data) { localStorage.setItem("auto-head", this.checked); pearTheme.changeTheme(window, this.checked); }) - form.on('switch(banner)', function(data) { + form.on('switch(banner)', function (data) { localStorage.setItem("theme-banner", this.checked); pearAdmin.bannerSkin(this.checked); }) @@ -841,12 +835,6 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm $('input[name="muilt-tab"]').removeAttr('checked') } - if (localStorage.getItem('auto-head') === 'true') { - $('input[name="auto-head"]').attr('checked', 'checked') - } else { - $('input[name="auto-head"]').removeAttr('checked') - } - if (localStorage.getItem('footer') === 'true') { $('input[name="footer"]').attr('checked', 'checked') } else { @@ -858,7 +846,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm }); }); - body.on('click', '[data-select-bgcolor]', function() { + body.on('click', '[data-select-bgcolor]', function () { var theme = $(this).attr('data-select-bgcolor'); $('[data-select-bgcolor]').removeClass("layui-this"); $(this).addClass("layui-this"); @@ -866,15 +854,22 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm pearAdmin.menuSkin(theme); }); - body.on('click', '[data-select-header]', function() { + body.on('click', '[data-select-header]', function () { var theme = $(this).attr('data-select-header'); $('[data-select-header]').removeClass("layui-this"); $(this).addClass("layui-this"); localStorage.setItem("theme-header", theme); + if (theme == "auto-theme") { + localStorage.setItem("auto-head", true); + pearTheme.changeTheme(window, true); + } else { + localStorage.setItem("auto-head", false); + pearTheme.changeTheme(window, false); + } pearAdmin.headerSkin(theme); }); - body.on('click', '.select-color-item', function() { + body.on('click', '.select-color-item', function () { $(".select-color-item").removeClass("layui-icon").removeClass("layui-icon-ok"); $(this).addClass("layui-icon").addClass("layui-icon-ok"); var colorId = $(".select-color-item.layui-icon-ok").attr("color-id"); @@ -900,14 +895,14 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm function getColorById(id) { var color; var flag = false; - $.each(config.colors, function(i, value) { + $.each(config.colors, function (i, value) { if (value.id === id) { color = value; flag = true; } }) if (flag === false || config.theme.allowCustom === false) { - $.each(config.colors, function(i, value) { + $.each(config.colors, function (i, value) { if (value.id === config.theme.defaultColor) { color = value; } @@ -918,11 +913,11 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm function buildColorHtml() { var colors = ""; - $.each(config.colors, function(i, value) { + $.each(config.colors, function (i, value) { colors += ""; }) - return "
    主题配色
    " + + return "
    主题颜色
    " + colors + "
    " } @@ -932,6 +927,19 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } } + /** + * @since Pear Admin 4.0 + */ + function filterStorage (optionName, options, optionValue) { + if (options.theme.allowCustom) { + const storageValue = localStorage.getItem(optionName); + if(optionValue != undefined && optionValue != null) { + return storageValue; + } + } + return optionValue; + } + function isControl(option) { if (option.theme.allowCustom) { if (localStorage.getItem("control") != null) { @@ -968,7 +976,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } } - window.onresize = function() { + window.onresize = function () { if (!fullscreen.isFullscreen()) { $(".fullScreen").eq(0).removeClass("layui-icon-screen-restore"); } @@ -978,7 +986,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm if (sideMenu && !sideMenu.isCollapse && $(window).width() <= 768) { collapse(); } - },50)); + }, 50)); function debounce(fn, awaitTime) { var timerID = null diff --git a/component/pear/module/darkreader.js b/component/pear/module/darkreader.js new file mode 100644 index 0000000..c8eaa60 --- /dev/null +++ b/component/pear/module/darkreader.js @@ -0,0 +1,7579 @@ +/** + * Dark Reader v4.9.58 + * https://darkreader.org/ + */ + +(function (global, factory) { + typeof exports === "object" && typeof module !== "undefined" + ? factory(exports) + : typeof define === "function" && define.amd + ? define(["exports"], factory) + : ((global = + typeof globalThis !== "undefined" ? globalThis : global || self), + factory((global.DarkReader = {}))); +})(this, function (exports) { + "use strict"; + + /****************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + + var __assign = function () { + __assign = + Object.assign || + function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done + ? resolve(result.value) + : adopt(result.value).then(fulfilled, rejected); + } + step( + (generator = generator.apply(thisArg, _arguments || [])).next() + ); + }); + } + + function __generator(thisArg, body) { + var _ = { + label: 0, + sent: function () { + if (t[0] & 1) throw t[1]; + return t[1]; + }, + trys: [], + ops: [] + }, + f, + y, + t, + g; + return ( + (g = {next: verb(0), throw: verb(1), return: verb(2)}), + typeof Symbol === "function" && + (g[Symbol.iterator] = function () { + return this; + }), + g + ); + function verb(n) { + return function (v) { + return step([n, v]); + }; + } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) + try { + if ( + ((f = 1), + y && + (t = + op[0] & 2 + ? y["return"] + : op[0] + ? y["throw"] || + ((t = y["return"]) && t.call(y), 0) + : y.next) && + !(t = t.call(y, op[1])).done) + ) + return t; + if (((y = 0), t)) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return {value: op[1], done: false}; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if ( + !((t = _.trys), + (t = t.length > 0 && t[t.length - 1])) && + (op[0] === 6 || op[0] === 2) + ) { + _ = 0; + continue; + } + if ( + op[0] === 3 && + (!t || (op[1] > t[0] && op[1] < t[3])) + ) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } catch (e) { + op = [6, e]; + y = 0; + } finally { + f = t = 0; + } + if (op[0] & 5) throw op[1]; + return {value: op[0] ? op[1] : void 0, done: true}; + } + } + + function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, + m = s && o[s], + i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") + return { + next: function () { + if (o && i >= o.length) o = void 0; + return {value: o && o[i++], done: !o}; + } + }; + throw new TypeError( + s ? "Object is not iterable." : "Symbol.iterator is not defined." + ); + } + + function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), + r, + ar = [], + e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) + ar.push(r.value); + } catch (error) { + e = {error: error}; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + } + + function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) + for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + } + + var MessageType; + (function (MessageType) { + MessageType["UI_GET_DATA"] = "ui-get-data"; + MessageType["UI_SUBSCRIBE_TO_CHANGES"] = "ui-subscribe-to-changes"; + MessageType["UI_UNSUBSCRIBE_FROM_CHANGES"] = + "ui-unsubscribe-from-changes"; + MessageType["UI_CHANGE_SETTINGS"] = "ui-change-settings"; + MessageType["UI_SET_THEME"] = "ui-set-theme"; + MessageType["UI_SET_SHORTCUT"] = "ui-set-shortcut"; + MessageType["UI_TOGGLE_ACTIVE_TAB"] = "ui-toggle-active-tab"; + MessageType["UI_MARK_NEWS_AS_READ"] = "ui-mark-news-as-read"; + MessageType["UI_MARK_NEWS_AS_DISPLAYED"] = "ui-mark-news-as-displayed"; + MessageType["UI_LOAD_CONFIG"] = "ui-load-config"; + MessageType["UI_APPLY_DEV_DYNAMIC_THEME_FIXES"] = + "ui-apply-dev-dynamic-theme-fixes"; + MessageType["UI_RESET_DEV_DYNAMIC_THEME_FIXES"] = + "ui-reset-dev-dynamic-theme-fixes"; + MessageType["UI_APPLY_DEV_INVERSION_FIXES"] = + "ui-apply-dev-inversion-fixes"; + MessageType["UI_RESET_DEV_INVERSION_FIXES"] = + "ui-reset-dev-inversion-fixes"; + MessageType["UI_APPLY_DEV_STATIC_THEMES"] = + "ui-apply-dev-static-themes"; + MessageType["UI_RESET_DEV_STATIC_THEMES"] = + "ui-reset-dev-static-themes"; + MessageType["UI_SAVE_FILE"] = "ui-save-file"; + MessageType["UI_REQUEST_EXPORT_CSS"] = "ui-request-export-css"; + MessageType["UI_COLOR_SCHEME_CHANGE"] = "ui-color-scheme-change"; + MessageType["BG_CHANGES"] = "bg-changes"; + MessageType["BG_ADD_CSS_FILTER"] = "bg-add-css-filter"; + MessageType["BG_ADD_STATIC_THEME"] = "bg-add-static-theme"; + MessageType["BG_ADD_SVG_FILTER"] = "bg-add-svg-filter"; + MessageType["BG_ADD_DYNAMIC_THEME"] = "bg-add-dynamic-theme"; + MessageType["BG_EXPORT_CSS"] = "bg-export-css"; + MessageType["BG_UNSUPPORTED_SENDER"] = "bg-unsupported-sender"; + MessageType["BG_CLEAN_UP"] = "bg-clean-up"; + MessageType["BG_RELOAD"] = "bg-reload"; + MessageType["BG_FETCH_RESPONSE"] = "bg-fetch-response"; + MessageType["BG_UI_UPDATE"] = "bg-ui-update"; + MessageType["BG_CSS_UPDATE"] = "bg-css-update"; + MessageType["CS_COLOR_SCHEME_CHANGE"] = "cs-color-scheme-change"; + MessageType["CS_FRAME_CONNECT"] = "cs-frame-connect"; + MessageType["CS_FRAME_FORGET"] = "cs-frame-forget"; + MessageType["CS_FRAME_FREEZE"] = "cs-frame-freeze"; + MessageType["CS_FRAME_RESUME"] = "cs-frame-resume"; + MessageType["CS_EXPORT_CSS_RESPONSE"] = "cs-export-css-response"; + MessageType["CS_FETCH"] = "cs-fetch"; + MessageType["CS_DARK_THEME_DETECTED"] = "cs-dark-theme-detected"; + MessageType["CS_DARK_THEME_NOT_DETECTED"] = + "cs-dark-theme-not-detected"; + MessageType["CS_LOG"] = "cs-log"; + })(MessageType || (MessageType = {})); + + var isNavigatorDefined = typeof navigator !== "undefined"; + var userAgent = isNavigatorDefined + ? navigator.userAgentData && + Array.isArray(navigator.userAgentData.brands) + ? navigator.userAgentData.brands + .map(function (brand) { + return "" + .concat(brand.brand.toLowerCase(), " ") + .concat(brand.version); + }) + .join(" ") + : navigator.userAgent.toLowerCase() + : "some useragent"; + var platform = isNavigatorDefined + ? navigator.userAgentData && + typeof navigator.userAgentData.platform === "string" + ? navigator.userAgentData.platform.toLowerCase() + : navigator.platform.toLowerCase() + : "some platform"; + var isChromium = + userAgent.includes("chrome") || userAgent.includes("chromium"); + var isThunderbird = userAgent.includes("thunderbird"); + var isFirefox = + userAgent.includes("firefox") || + userAgent.includes("librewolf") || + isThunderbird; + userAgent.includes("vivaldi"); + userAgent.includes("yabrowser"); + userAgent.includes("opr") || userAgent.includes("opera"); + userAgent.includes("edg"); + var isSafari = userAgent.includes("safari") && !isChromium; + var isWindows = platform.startsWith("win"); + var isMacOS = platform.startsWith("mac"); + isNavigatorDefined && navigator.userAgentData + ? navigator.userAgentData.mobile + : userAgent.includes("mobile"); + var isShadowDomSupported = typeof ShadowRoot === "function"; + var isMatchMediaChangeEventListenerSupported = + typeof MediaQueryList === "function" && + typeof MediaQueryList.prototype.addEventListener === "function"; + (function () { + var m = userAgent.match(/chrom(?:e|ium)(?:\/| )([^ ]+)/); + if (m && m[1]) { + return m[1]; + } + return ""; + })(); + (function () { + var m = userAgent.match(/(?:firefox|librewolf)(?:\/| )([^ ]+)/); + if (m && m[1]) { + return m[1]; + } + return ""; + })(); + var isDefinedSelectorSupported = (function () { + try { + document.querySelector(":defined"); + return true; + } catch (err) { + return false; + } + })(); + var isCSSColorSchemePropSupported = (function () { + if (typeof document === "undefined") { + return false; + } + var el = document.createElement("div"); + el.setAttribute("style", "color-scheme: dark"); + return el.style && el.style.colorScheme === "dark"; + })(); + + function getOKResponse(url, mimeType, origin) { + return __awaiter(this, void 0, void 0, function () { + var response; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + return [ + 4, + fetch(url, { + cache: "force-cache", + credentials: "omit", + referrer: origin + }) + ]; + case 1: + response = _a.sent(); + if ( + isFirefox && + mimeType === "text/css" && + url.startsWith("moz-extension://") && + url.endsWith(".css") + ) { + return [2, response]; + } + if ( + mimeType && + !response.headers + .get("Content-Type") + .startsWith(mimeType) + ) { + throw new Error( + "Mime type mismatch when loading ".concat(url) + ); + } + if (!response.ok) { + throw new Error( + "Unable to load " + .concat(url, " ") + .concat(response.status, " ") + .concat(response.statusText) + ); + } + return [2, response]; + } + }); + }); + } + function loadAsDataURL(url, mimeType) { + return __awaiter(this, void 0, void 0, function () { + var response; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + return [4, getOKResponse(url, mimeType)]; + case 1: + response = _a.sent(); + return [4, readResponseAsDataURL(response)]; + case 2: + return [2, _a.sent()]; + } + }); + }); + } + function readResponseAsDataURL(response) { + return __awaiter(this, void 0, void 0, function () { + var blob, dataURL; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + return [4, response.blob()]; + case 1: + blob = _a.sent(); + return [ + 4, + new Promise(function (resolve) { + var reader = new FileReader(); + reader.onloadend = function () { + return resolve(reader.result); + }; + reader.readAsDataURL(blob); + }) + ]; + case 2: + dataURL = _a.sent(); + return [2, dataURL]; + } + }); + }); + } + + var throwCORSError = function (url) { + return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + return [ + 2, + Promise.reject( + new Error( + [ + "Embedded Dark Reader cannot access a cross-origin resource", + url, + "Overview your URLs and CORS policies or use", + "`DarkReader.setFetchMethod(fetch: (url) => Promise))`.", + "See if using `DarkReader.setFetchMethod(window.fetch)`", + "before `DarkReader.enable()` works." + ].join(" ") + ) + ) + ]; + }); + }); + }; + var fetcher = throwCORSError; + function setFetchMethod$1(fetch) { + if (fetch) { + fetcher = fetch; + } else { + fetcher = throwCORSError; + } + } + function callFetchMethod(url) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + return [4, fetcher(url)]; + case 1: + return [2, _a.sent()]; + } + }); + }); + } + + if (!window.chrome) { + window.chrome = {}; + } + if (!chrome.runtime) { + chrome.runtime = {}; + } + var messageListeners = new Set(); + function sendMessage() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return __awaiter(this, void 0, void 0, function () { + var id_1, _a, url, responseType, response, text_1, error_1; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + if (!(args[0] && args[0].type === MessageType.CS_FETCH)) + return [3, 8]; + id_1 = args[0].id; + _b.label = 1; + case 1: + _b.trys.push([1, 7, , 8]); + (_a = args[0].data), + (url = _a.url), + (responseType = _a.responseType); + return [4, callFetchMethod(url)]; + case 2: + response = _b.sent(); + if (!(responseType === "data-url")) return [3, 4]; + return [4, readResponseAsDataURL(response)]; + case 3: + text_1 = _b.sent(); + return [3, 6]; + case 4: + return [4, response.text()]; + case 5: + text_1 = _b.sent(); + _b.label = 6; + case 6: + messageListeners.forEach(function (cb) { + return cb({ + type: MessageType.BG_FETCH_RESPONSE, + data: text_1, + error: null, + id: id_1 + }); + }); + return [3, 8]; + case 7: + error_1 = _b.sent(); + console.error(error_1); + messageListeners.forEach(function (cb) { + return cb({ + type: MessageType.BG_FETCH_RESPONSE, + data: null, + error: error_1, + id: id_1 + }); + }); + return [3, 8]; + case 8: + return [2]; + } + }); + }); + } + function addMessageListener(callback) { + messageListeners.add(callback); + } + if (typeof chrome.runtime.sendMessage === "function") { + var nativeSendMessage_1 = chrome.runtime.sendMessage; + chrome.runtime.sendMessage = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + sendMessage.apply(void 0, __spreadArray([], __read(args), false)); + nativeSendMessage_1.apply(chrome.runtime, args); + }; + } else { + chrome.runtime.sendMessage = sendMessage; + } + if (!chrome.runtime.onMessage) { + chrome.runtime.onMessage = {}; + } + if (typeof chrome.runtime.onMessage.addListener === "function") { + var nativeAddListener_1 = chrome.runtime.onMessage.addListener; + chrome.runtime.onMessage.addListener = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + addMessageListener(args[0]); + nativeAddListener_1.apply(chrome.runtime.onMessage, args); + }; + } else { + chrome.runtime.onMessage.addListener = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return addMessageListener(args[0]); + }; + } + + var ThemeEngine; + (function (ThemeEngine) { + ThemeEngine["cssFilter"] = "cssFilter"; + ThemeEngine["svgFilter"] = "svgFilter"; + ThemeEngine["staticTheme"] = "staticTheme"; + ThemeEngine["dynamicTheme"] = "dynamicTheme"; + })(ThemeEngine || (ThemeEngine = {})); + + var AutomationMode; + (function (AutomationMode) { + AutomationMode["NONE"] = ""; + AutomationMode["TIME"] = "time"; + AutomationMode["SYSTEM"] = "system"; + AutomationMode["LOCATION"] = "location"; + })(AutomationMode || (AutomationMode = {})); + + var DEFAULT_COLORS = { + darkScheme: { + background: "#181a1b", + text: "#e8e6e3" + }, + lightScheme: { + background: "#dcdad7", + text: "#181a1b" + } + }; + var DEFAULT_THEME = { + mode: 1, + brightness: 100, + contrast: 100, + grayscale: 0, + sepia: 0, + useFont: false, + fontFamily: isMacOS + ? "Helvetica Neue" + : isWindows + ? "Segoe UI" + : "Open Sans", + textStroke: 0, + engine: ThemeEngine.dynamicTheme, + stylesheet: "", + darkSchemeBackgroundColor: DEFAULT_COLORS.darkScheme.background, + darkSchemeTextColor: DEFAULT_COLORS.darkScheme.text, + lightSchemeBackgroundColor: DEFAULT_COLORS.lightScheme.background, + lightSchemeTextColor: DEFAULT_COLORS.lightScheme.text, + scrollbarColor: isMacOS ? "" : "auto", + selectionColor: "auto", + styleSystemControls: !isCSSColorSchemePropSupported, + lightColorScheme: "Default", + darkColorScheme: "Default", + immediateModify: false + }; + ({ + enabled: true, + fetchNews: true, + theme: DEFAULT_THEME, + presets: [], + customThemes: [], + siteList: [], + siteListEnabled: [], + applyToListedOnly: false, + changeBrowserTheme: false, + syncSettings: true, + syncSitesFixes: false, + automation: { + enabled: false, + mode: AutomationMode.NONE, + behavior: "OnOff" + }, + time: { + activation: "18:00", + deactivation: "9:00" + }, + location: { + latitude: null, + longitude: null + }, + previewNewDesign: false, + enableForPDF: true, + enableForProtectedPages: false, + enableContextMenus: false, + detectDarkTheme: false + }); + + function isArrayLike(items) { + return items.length != null; + } + function forEach(items, iterator) { + var e_1, _a; + if (isArrayLike(items)) { + for (var i = 0, len = items.length; i < len; i++) { + iterator(items[i]); + } + } else { + try { + for ( + var items_1 = __values(items), items_1_1 = items_1.next(); + !items_1_1.done; + items_1_1 = items_1.next() + ) { + var item = items_1_1.value; + iterator(item); + } + } catch (e_1_1) { + e_1 = {error: e_1_1}; + } finally { + try { + if (items_1_1 && !items_1_1.done && (_a = items_1.return)) + _a.call(items_1); + } finally { + if (e_1) throw e_1.error; + } + } + } + } + function push(array, addition) { + forEach(addition, function (a) { + return array.push(a); + }); + } + function toArray(items) { + var results = []; + for (var i = 0, len = items.length; i < len; i++) { + results.push(items[i]); + } + return results; + } + + function logInfo() {} + function logWarn() {} + + function throttle(callback) { + var pending = false; + var frameId = null; + var lastArgs; + var throttled = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + lastArgs = args; + if (frameId) { + pending = true; + } else { + callback.apply( + void 0, + __spreadArray([], __read(lastArgs), false) + ); + frameId = requestAnimationFrame(function () { + frameId = null; + if (pending) { + callback.apply( + void 0, + __spreadArray([], __read(lastArgs), false) + ); + pending = false; + } + }); + } + }; + var cancel = function () { + cancelAnimationFrame(frameId); + pending = false; + frameId = null; + }; + return Object.assign(throttled, {cancel: cancel}); + } + function createAsyncTasksQueue() { + var tasks = []; + var frameId = null; + function runTasks() { + var task; + while ((task = tasks.shift())) { + task(); + } + frameId = null; + } + function add(task) { + tasks.push(task); + if (!frameId) { + frameId = requestAnimationFrame(runTasks); + } + } + function cancel() { + tasks.splice(0); + cancelAnimationFrame(frameId); + frameId = null; + } + return {add: add, cancel: cancel}; + } + + function getDuration(time) { + var duration = 0; + if (time.seconds) { + duration += time.seconds * 1000; + } + if (time.minutes) { + duration += time.minutes * 60 * 1000; + } + if (time.hours) { + duration += time.hours * 60 * 60 * 1000; + } + if (time.days) { + duration += time.days * 24 * 60 * 60 * 1000; + } + return duration; + } + + function removeNode(node) { + node && node.parentNode && node.parentNode.removeChild(node); + } + function watchForNodePosition(node, mode, onRestore) { + if (onRestore === void 0) { + onRestore = Function.prototype; + } + var MAX_ATTEMPTS_COUNT = 10; + var RETRY_TIMEOUT = getDuration({seconds: 2}); + var ATTEMPTS_INTERVAL = getDuration({seconds: 10}); + var prevSibling = node.previousSibling; + var parent = node.parentNode; + if (!parent) { + throw new Error( + "Unable to watch for node position: parent element not found" + ); + } + if (mode === "prev-sibling" && !prevSibling) { + throw new Error( + "Unable to watch for node position: there is no previous sibling" + ); + } + var attempts = 0; + var start = null; + var timeoutId = null; + var restore = throttle(function () { + if (timeoutId) { + return; + } + attempts++; + var now = Date.now(); + if (start == null) { + start = now; + } else if (attempts >= MAX_ATTEMPTS_COUNT) { + if (now - start < ATTEMPTS_INTERVAL) { + timeoutId = setTimeout(function () { + start = null; + attempts = 0; + timeoutId = null; + restore(); + }, RETRY_TIMEOUT); + return; + } + start = now; + attempts = 1; + } + if (mode === "parent") { + if (prevSibling && prevSibling.parentNode !== parent) { + stop(); + return; + } + } + if (mode === "prev-sibling") { + if (prevSibling.parentNode == null) { + stop(); + return; + } + if (prevSibling.parentNode !== parent) { + updateParent(prevSibling.parentNode); + } + } + parent.insertBefore( + node, + prevSibling ? prevSibling.nextSibling : parent.firstChild + ); + observer.takeRecords(); + onRestore && onRestore(); + }); + var observer = new MutationObserver(function () { + if ( + (mode === "parent" && node.parentNode !== parent) || + (mode === "prev-sibling" && + node.previousSibling !== prevSibling) + ) { + restore(); + } + }); + var run = function () { + observer.observe(parent, {childList: true}); + }; + var stop = function () { + clearTimeout(timeoutId); + observer.disconnect(); + restore.cancel(); + }; + var skip = function () { + observer.takeRecords(); + }; + var updateParent = function (parentNode) { + parent = parentNode; + stop(); + run(); + }; + run(); + return {run: run, stop: stop, skip: skip}; + } + function iterateShadowHosts(root, iterator) { + if (root == null) { + return; + } + var walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, { + acceptNode: function (node) { + return node.shadowRoot == null + ? NodeFilter.FILTER_SKIP + : NodeFilter.FILTER_ACCEPT; + } + }); + for ( + var node = root.shadowRoot ? walker.currentNode : walker.nextNode(); + node != null; + node = walker.nextNode() + ) { + if (node.classList.contains("surfingkeys_hints_host")) { + continue; + } + iterator(node); + iterateShadowHosts(node.shadowRoot, iterator); + } + } + var isDOMReady = function () { + return ( + document.readyState === "complete" || + document.readyState === "interactive" + ); + }; + function setIsDOMReady(newFunc) { + isDOMReady = newFunc; + } + var readyStateListeners = new Set(); + function addDOMReadyListener(listener) { + isDOMReady() ? listener() : readyStateListeners.add(listener); + } + function removeDOMReadyListener(listener) { + readyStateListeners.delete(listener); + } + function isReadyStateComplete() { + return document.readyState === "complete"; + } + var readyStateCompleteListeners = new Set(); + function addReadyStateCompleteListener(listener) { + isReadyStateComplete() + ? listener() + : readyStateCompleteListeners.add(listener); + } + function cleanReadyStateCompleteListeners() { + readyStateCompleteListeners.clear(); + } + if (!isDOMReady()) { + var onReadyStateChange_1 = function () { + if (isDOMReady()) { + readyStateListeners.forEach(function (listener) { + return listener(); + }); + readyStateListeners.clear(); + if (isReadyStateComplete()) { + document.removeEventListener( + "readystatechange", + onReadyStateChange_1 + ); + readyStateCompleteListeners.forEach(function (listener) { + return listener(); + }); + readyStateCompleteListeners.clear(); + } + } + }; + document.addEventListener("readystatechange", onReadyStateChange_1); + } + var HUGE_MUTATIONS_COUNT = 1000; + function isHugeMutation(mutations) { + if (mutations.length > HUGE_MUTATIONS_COUNT) { + return true; + } + var addedNodesCount = 0; + for (var i = 0; i < mutations.length; i++) { + addedNodesCount += mutations[i].addedNodes.length; + if (addedNodesCount > HUGE_MUTATIONS_COUNT) { + return true; + } + } + return false; + } + function getElementsTreeOperations(mutations) { + var additions = new Set(); + var deletions = new Set(); + var moves = new Set(); + mutations.forEach(function (m) { + forEach(m.addedNodes, function (n) { + if (n instanceof Element && n.isConnected) { + additions.add(n); + } + }); + forEach(m.removedNodes, function (n) { + if (n instanceof Element) { + if (n.isConnected) { + moves.add(n); + additions.delete(n); + } else { + deletions.add(n); + } + } + }); + }); + var duplicateAdditions = []; + var duplicateDeletions = []; + additions.forEach(function (node) { + if (additions.has(node.parentElement)) { + duplicateAdditions.push(node); + } + }); + deletions.forEach(function (node) { + if (deletions.has(node.parentElement)) { + duplicateDeletions.push(node); + } + }); + duplicateAdditions.forEach(function (node) { + return additions.delete(node); + }); + duplicateDeletions.forEach(function (node) { + return deletions.delete(node); + }); + return {additions: additions, moves: moves, deletions: deletions}; + } + var optimizedTreeObservers = new Map(); + var optimizedTreeCallbacks = new WeakMap(); + function createOptimizedTreeObserver(root, callbacks) { + var observer; + var observerCallbacks; + var domReadyListener; + if (optimizedTreeObservers.has(root)) { + observer = optimizedTreeObservers.get(root); + observerCallbacks = optimizedTreeCallbacks.get(observer); + } else { + var hadHugeMutationsBefore_1 = false; + var subscribedForReadyState_1 = false; + observer = new MutationObserver(function (mutations) { + if (isHugeMutation(mutations)) { + if (!hadHugeMutationsBefore_1 || isDOMReady()) { + observerCallbacks.forEach(function (_a) { + var onHugeMutations = _a.onHugeMutations; + return onHugeMutations(root); + }); + } else if (!subscribedForReadyState_1) { + domReadyListener = function () { + return observerCallbacks.forEach(function (_a) { + var onHugeMutations = _a.onHugeMutations; + return onHugeMutations(root); + }); + }; + addDOMReadyListener(domReadyListener); + subscribedForReadyState_1 = true; + } + hadHugeMutationsBefore_1 = true; + } else { + var elementsOperations_1 = + getElementsTreeOperations(mutations); + observerCallbacks.forEach(function (_a) { + var onMinorMutations = _a.onMinorMutations; + return onMinorMutations(elementsOperations_1); + }); + } + }); + observer.observe(root, {childList: true, subtree: true}); + optimizedTreeObservers.set(root, observer); + observerCallbacks = new Set(); + optimizedTreeCallbacks.set(observer, observerCallbacks); + } + observerCallbacks.add(callbacks); + return { + disconnect: function () { + observerCallbacks.delete(callbacks); + if (domReadyListener) { + removeDOMReadyListener(domReadyListener); + } + if (observerCallbacks.size === 0) { + observer.disconnect(); + optimizedTreeCallbacks.delete(observer); + optimizedTreeObservers.delete(root); + } + } + }; + } + + var anchor; + var parsedURLCache = new Map(); + function fixBaseURL($url) { + if (!anchor) { + anchor = document.createElement("a"); + } + anchor.href = $url; + return anchor.href; + } + function parseURL($url, $base) { + if ($base === void 0) { + $base = null; + } + var key = "".concat($url).concat($base ? ";".concat($base) : ""); + if (parsedURLCache.has(key)) { + return parsedURLCache.get(key); + } + if ($base) { + var parsedURL_1 = new URL($url, fixBaseURL($base)); + parsedURLCache.set(key, parsedURL_1); + return parsedURL_1; + } + var parsedURL = new URL(fixBaseURL($url)); + parsedURLCache.set($url, parsedURL); + return parsedURL; + } + function getAbsoluteURL($base, $relative) { + if ($relative.match(/^data\\?\:/)) { + return $relative; + } + if (/^\/\//.test($relative)) { + return "".concat(location.protocol).concat($relative); + } + var b = parseURL($base); + var a = parseURL($relative, b.href); + return a.href; + } + function isRelativeHrefOnAbsolutePath(href) { + if (href.startsWith("data:")) { + return true; + } + var url = parseURL(href); + if (url.protocol !== location.protocol) { + return false; + } + if (url.hostname !== location.hostname) { + return false; + } + if (url.port !== location.port) { + return false; + } + return url.pathname === location.pathname; + } + + function iterateCSSRules(rules, iterate, onMediaRuleError) { + forEach(rules, function (rule) { + if (rule.selectorText) { + iterate(rule); + } else if (rule.href) { + try { + iterateCSSRules( + rule.styleSheet.cssRules, + iterate, + onMediaRuleError + ); + } catch (err) { + logInfo("Found a non-loaded link."); + onMediaRuleError && onMediaRuleError(); + } + } else if (rule.media) { + var media = Array.from(rule.media); + var isScreenOrAllOrQuery = media.some(function (m) { + return ( + m.startsWith("screen") || + m.startsWith("all") || + m.startsWith("(") + ); + }); + var isPrintOrSpeech = media.some(function (m) { + return m.startsWith("print") || m.startsWith("speech"); + }); + if (isScreenOrAllOrQuery || !isPrintOrSpeech) { + iterateCSSRules(rule.cssRules, iterate, onMediaRuleError); + } + } else if (rule.conditionText) { + if (CSS.supports(rule.conditionText)) { + iterateCSSRules(rule.cssRules, iterate, onMediaRuleError); + } + } else { + logWarn("CSSRule type not supported", rule); + } + }); + } + var shorthandVarDependantProperties = [ + "background", + "border", + "border-color", + "border-bottom", + "border-left", + "border-right", + "border-top", + "outline", + "outline-color" + ]; + var shorthandVarDepPropRegexps = isSafari + ? shorthandVarDependantProperties.map(function (prop) { + var regexp = new RegExp("".concat(prop, ":\\s*(.*?)\\s*;")); + return [prop, regexp]; + }) + : null; + function iterateCSSDeclarations(style, iterate) { + forEach(style, function (property) { + var value = style.getPropertyValue(property).trim(); + if (!value) { + return; + } + iterate(property, value); + }); + var cssText = style.cssText; + if (cssText.includes("var(")) { + if (isSafari) { + shorthandVarDepPropRegexps.forEach(function (_a) { + var _b = __read(_a, 2), + prop = _b[0], + regexp = _b[1]; + var match = cssText.match(regexp); + if (match && match[1]) { + var val = match[1].trim(); + iterate(prop, val); + } + }); + } else { + shorthandVarDependantProperties.forEach(function (prop) { + var val = style.getPropertyValue(prop); + if (val && val.includes("var(")) { + iterate(prop, val); + } + }); + } + } + } + var cssURLRegex = /url\((('.*?')|(".*?")|([^\)]*?))\)/g; + var cssImportRegex = + /@import\s*(url\()?(('.+?')|(".+?")|([^\)]*?))\)? ?(screen)?;?/gi; + function getCSSURLValue(cssURL) { + return cssURL + .trim() + .replace(/[\n\r\\]+/g, "") + .replace(/^url\((.*)\)$/, "$1") + .trim() + .replace(/^"(.*)"$/, "$1") + .replace(/^'(.*)'$/, "$1") + .replace(/(?:\\(.))/g, "$1"); + } + function getCSSBaseBath(url) { + var cssURL = parseURL(url); + return "" + .concat(cssURL.origin) + .concat( + cssURL.pathname + .replace(/\?.*$/, "") + .replace(/(\/)([^\/]+)$/i, "$1") + ); + } + function replaceCSSRelativeURLsWithAbsolute($css, cssBasePath) { + return $css.replace(cssURLRegex, function (match) { + var pathValue = getCSSURLValue(match); + try { + return "url('".concat( + getAbsoluteURL(cssBasePath, pathValue), + "')" + ); + } catch (err) { + return match; + } + }); + } + var cssCommentsRegex = /\/\*[\s\S]*?\*\//g; + function removeCSSComments($css) { + return $css.replace(cssCommentsRegex, ""); + } + var fontFaceRegex = /@font-face\s*{[^}]*}/g; + function replaceCSSFontFace($css) { + return $css.replace(fontFaceRegex, ""); + } + + function evalMath(expression) { + var rpnStack = []; + var workingStack = []; + var lastToken; + for (var i = 0, len = expression.length; i < len; i++) { + var token = expression[i]; + if (!token || token === " ") { + continue; + } + if (operators.has(token)) { + var op = operators.get(token); + while (workingStack.length) { + var currentOp = operators.get(workingStack[0]); + if (!currentOp) { + break; + } + if (op.lessOrEqualThan(currentOp)) { + rpnStack.push(workingStack.shift()); + } else { + break; + } + } + workingStack.unshift(token); + } else if (!lastToken || operators.has(lastToken)) { + rpnStack.push(token); + } else { + rpnStack[rpnStack.length - 1] += token; + } + lastToken = token; + } + rpnStack.push.apply( + rpnStack, + __spreadArray([], __read(workingStack), false) + ); + var stack = []; + for (var i = 0, len = rpnStack.length; i < len; i++) { + var op = operators.get(rpnStack[i]); + if (op) { + var args = stack.splice(0, 2); + stack.push(op.exec(args[1], args[0])); + } else { + stack.unshift(parseFloat(rpnStack[i])); + } + } + return stack[0]; + } + var Operator = (function () { + function Operator(precedence, method) { + this.precendce = precedence; + this.execMethod = method; + } + Operator.prototype.exec = function (left, right) { + return this.execMethod(left, right); + }; + Operator.prototype.lessOrEqualThan = function (op) { + return this.precendce <= op.precendce; + }; + return Operator; + })(); + var operators = new Map([ + [ + "+", + new Operator(1, function (left, right) { + return left + right; + }) + ], + [ + "-", + new Operator(1, function (left, right) { + return left - right; + }) + ], + [ + "*", + new Operator(2, function (left, right) { + return left * right; + }) + ], + [ + "/", + new Operator(2, function (left, right) { + return left / right; + }) + ] + ]); + + function getMatches(regex, input, group) { + if (group === void 0) { + group = 0; + } + var matches = []; + var m; + while ((m = regex.exec(input))) { + matches.push(m[group]); + } + return matches; + } + function formatCSS(text) { + function trimLeft(text) { + return text.replace(/^\s+/, ""); + } + function getIndent(depth) { + if (depth === 0) { + return ""; + } + return " ".repeat(4 * depth); + } + if (text.length < 50000) { + var emptyRuleRegexp = /[^{}]+{\s*}/; + while (emptyRuleRegexp.test(text)) { + text = text.replace(emptyRuleRegexp, ""); + } + } + var css = text + .replace(/\s{2,}/g, " ") + .replace(/\{/g, "{\n") + .replace(/\}/g, "\n}\n") + .replace(/\;(?![^\(|\"]*(\)|\"))/g, ";\n") + .replace(/\,(?![^\(|\"]*(\)|\"))/g, ",\n") + .replace(/\n\s*\n/g, "\n") + .split("\n"); + var depth = 0; + var formatted = []; + for (var x = 0, len = css.length; x < len; x++) { + var line = "".concat(css[x], "\n"); + if (line.includes("{")) { + formatted.push(getIndent(depth++) + trimLeft(line)); + } else if (line.includes("}")) { + formatted.push(getIndent(--depth) + trimLeft(line)); + } else { + formatted.push(getIndent(depth) + trimLeft(line)); + } + } + return formatted.join("").trim(); + } + function getParenthesesRange(input, searchStartIndex) { + if (searchStartIndex === void 0) { + searchStartIndex = 0; + } + var length = input.length; + var depth = 0; + var firstOpenIndex = -1; + for (var i = searchStartIndex; i < length; i++) { + if (depth === 0) { + var openIndex = input.indexOf("(", i); + if (openIndex < 0) { + break; + } + firstOpenIndex = openIndex; + depth++; + i = openIndex; + } else { + var closingIndex = input.indexOf(")", i); + if (closingIndex < 0) { + break; + } + var openIndex = input.indexOf("(", i); + if (openIndex < 0 || closingIndex < openIndex) { + depth--; + if (depth === 0) { + return {start: firstOpenIndex, end: closingIndex + 1}; + } + i = closingIndex; + } else { + depth++; + i = openIndex; + } + } + } + return null; + } + + var hslaParseCache = new Map(); + var rgbaParseCache = new Map(); + function parseColorWithCache($color) { + $color = $color.trim(); + if (rgbaParseCache.has($color)) { + return rgbaParseCache.get($color); + } + if ($color.includes("calc(")) { + $color = lowerCalcExpression($color); + } + var color = parse($color); + color && rgbaParseCache.set($color, color); + return color; + } + function parseToHSLWithCache(color) { + if (hslaParseCache.has(color)) { + return hslaParseCache.get(color); + } + var rgb = parseColorWithCache(color); + if (!rgb) { + return null; + } + var hsl = rgbToHSL(rgb); + hslaParseCache.set(color, hsl); + return hsl; + } + function clearColorCache() { + hslaParseCache.clear(); + rgbaParseCache.clear(); + } + function hslToRGB(_a) { + var h = _a.h, + s = _a.s, + l = _a.l, + _b = _a.a, + a = _b === void 0 ? 1 : _b; + if (s === 0) { + var _c = __read( + [l, l, l].map(function (x) { + return Math.round(x * 255); + }), + 3 + ), + r_1 = _c[0], + b_1 = _c[1], + g_1 = _c[2]; + return {r: r_1, g: g_1, b: b_1, a: a}; + } + var c = (1 - Math.abs(2 * l - 1)) * s; + var x = c * (1 - Math.abs(((h / 60) % 2) - 1)); + var m = l - c / 2; + var _d = __read( + (h < 60 + ? [c, x, 0] + : h < 120 + ? [x, c, 0] + : h < 180 + ? [0, c, x] + : h < 240 + ? [0, x, c] + : h < 300 + ? [x, 0, c] + : [c, 0, x] + ).map(function (n) { + return Math.round((n + m) * 255); + }), + 3 + ), + r = _d[0], + g = _d[1], + b = _d[2]; + return {r: r, g: g, b: b, a: a}; + } + function rgbToHSL(_a) { + var r255 = _a.r, + g255 = _a.g, + b255 = _a.b, + _b = _a.a, + a = _b === void 0 ? 1 : _b; + var r = r255 / 255; + var g = g255 / 255; + var b = b255 / 255; + var max = Math.max(r, g, b); + var min = Math.min(r, g, b); + var c = max - min; + var l = (max + min) / 2; + if (c === 0) { + return {h: 0, s: 0, l: l, a: a}; + } + var h = + (max === r + ? ((g - b) / c) % 6 + : max === g + ? (b - r) / c + 2 + : (r - g) / c + 4) * 60; + if (h < 0) { + h += 360; + } + var s = c / (1 - Math.abs(2 * l - 1)); + return {h: h, s: s, l: l, a: a}; + } + function toFixed(n, digits) { + if (digits === void 0) { + digits = 0; + } + var fixed = n.toFixed(digits); + if (digits === 0) { + return fixed; + } + var dot = fixed.indexOf("."); + if (dot >= 0) { + var zerosMatch = fixed.match(/0+$/); + if (zerosMatch) { + if (zerosMatch.index === dot + 1) { + return fixed.substring(0, dot); + } + return fixed.substring(0, zerosMatch.index); + } + } + return fixed; + } + function rgbToString(rgb) { + var r = rgb.r, + g = rgb.g, + b = rgb.b, + a = rgb.a; + if (a != null && a < 1) { + return "rgba(" + .concat(toFixed(r), ", ") + .concat(toFixed(g), ", ") + .concat(toFixed(b), ", ") + .concat(toFixed(a, 2), ")"); + } + return "rgb(" + .concat(toFixed(r), ", ") + .concat(toFixed(g), ", ") + .concat(toFixed(b), ")"); + } + function rgbToHexString(_a) { + var r = _a.r, + g = _a.g, + b = _a.b, + a = _a.a; + return "#".concat( + (a != null && a < 1 ? [r, g, b, Math.round(a * 255)] : [r, g, b]) + .map(function (x) { + return "".concat(x < 16 ? "0" : "").concat(x.toString(16)); + }) + .join("") + ); + } + function hslToString(hsl) { + var h = hsl.h, + s = hsl.s, + l = hsl.l, + a = hsl.a; + if (a != null && a < 1) { + return "hsla(" + .concat(toFixed(h), ", ") + .concat(toFixed(s * 100), "%, ") + .concat(toFixed(l * 100), "%, ") + .concat(toFixed(a, 2), ")"); + } + return "hsl(" + .concat(toFixed(h), ", ") + .concat(toFixed(s * 100), "%, ") + .concat(toFixed(l * 100), "%)"); + } + var rgbMatch = /^rgba?\([^\(\)]+\)$/; + var hslMatch = /^hsla?\([^\(\)]+\)$/; + var hexMatch = /^#[0-9a-f]+$/i; + function parse($color) { + var c = $color.trim().toLowerCase(); + if (c.match(rgbMatch)) { + return parseRGB(c); + } + if (c.match(hslMatch)) { + return parseHSL(c); + } + if (c.match(hexMatch)) { + return parseHex(c); + } + if (knownColors.has(c)) { + return getColorByName(c); + } + if (systemColors.has(c)) { + return getSystemColor(c); + } + if ($color === "transparent") { + return {r: 0, g: 0, b: 0, a: 0}; + } + return null; + } + function getNumbers($color) { + var numbers = []; + var prevPos = 0; + var isMining = false; + var startIndex = $color.indexOf("("); + $color = $color.substring(startIndex + 1, $color.length - 1); + for (var i = 0; i < $color.length; i++) { + var c = $color[i]; + if ((c >= "0" && c <= "9") || c === "." || c === "+" || c === "-") { + isMining = true; + } else if (isMining && (c === " " || c === ",")) { + numbers.push($color.substring(prevPos, i)); + isMining = false; + prevPos = i + 1; + } else if (!isMining) { + prevPos = i + 1; + } + } + if (isMining) { + numbers.push($color.substring(prevPos, $color.length)); + } + return numbers; + } + function getNumbersFromString(str, range, units) { + var raw = getNumbers(str); + var unitsList = Object.entries(units); + var numbers = raw + .map(function (r) { + return r.trim(); + }) + .map(function (r, i) { + var n; + var unit = unitsList.find(function (_a) { + var _b = __read(_a, 1), + u = _b[0]; + return r.endsWith(u); + }); + if (unit) { + n = + (parseFloat(r.substring(0, r.length - unit[0].length)) / + unit[1]) * + range[i]; + } else { + n = parseFloat(r); + } + if (range[i] > 1) { + return Math.round(n); + } + return n; + }); + return numbers; + } + var rgbRange = [255, 255, 255, 1]; + var rgbUnits = {"%": 100}; + function parseRGB($rgb) { + var _a = __read(getNumbersFromString($rgb, rgbRange, rgbUnits), 4), + r = _a[0], + g = _a[1], + b = _a[2], + _b = _a[3], + a = _b === void 0 ? 1 : _b; + return {r: r, g: g, b: b, a: a}; + } + var hslRange = [360, 1, 1, 1]; + var hslUnits = {"%": 100, "deg": 360, "rad": 2 * Math.PI, "turn": 1}; + function parseHSL($hsl) { + var _a = __read(getNumbersFromString($hsl, hslRange, hslUnits), 4), + h = _a[0], + s = _a[1], + l = _a[2], + _b = _a[3], + a = _b === void 0 ? 1 : _b; + return hslToRGB({h: h, s: s, l: l, a: a}); + } + function parseHex($hex) { + var h = $hex.substring(1); + switch (h.length) { + case 3: + case 4: { + var _a = __read( + [0, 1, 2].map(function (i) { + return parseInt("".concat(h[i]).concat(h[i]), 16); + }), + 3 + ), + r = _a[0], + g = _a[1], + b = _a[2]; + var a = + h.length === 3 + ? 1 + : parseInt("".concat(h[3]).concat(h[3]), 16) / 255; + return {r: r, g: g, b: b, a: a}; + } + case 6: + case 8: { + var _b = __read( + [0, 2, 4].map(function (i) { + return parseInt(h.substring(i, i + 2), 16); + }), + 3 + ), + r = _b[0], + g = _b[1], + b = _b[2]; + var a = + h.length === 6 ? 1 : parseInt(h.substring(6, 8), 16) / 255; + return {r: r, g: g, b: b, a: a}; + } + } + return null; + } + function getColorByName($color) { + var n = knownColors.get($color); + return { + r: (n >> 16) & 255, + g: (n >> 8) & 255, + b: (n >> 0) & 255, + a: 1 + }; + } + function getSystemColor($color) { + var n = systemColors.get($color); + return { + r: (n >> 16) & 255, + g: (n >> 8) & 255, + b: (n >> 0) & 255, + a: 1 + }; + } + function lowerCalcExpression(color) { + var searchIndex = 0; + var replaceBetweenIndices = function (start, end, replacement) { + color = + color.substring(0, start) + replacement + color.substring(end); + }; + while ((searchIndex = color.indexOf("calc(")) !== -1) { + var range = getParenthesesRange(color, searchIndex); + if (!range) { + break; + } + var slice = color.slice(range.start + 1, range.end - 1); + var includesPercentage = slice.includes("%"); + slice = slice.split("%").join(""); + var output = Math.round(evalMath(slice)); + replaceBetweenIndices( + range.start - 4, + range.end, + output + (includesPercentage ? "%" : "") + ); + } + return color; + } + var knownColors = new Map( + Object.entries({ + aliceblue: 0xf0f8ff, + antiquewhite: 0xfaebd7, + aqua: 0x00ffff, + aquamarine: 0x7fffd4, + azure: 0xf0ffff, + beige: 0xf5f5dc, + bisque: 0xffe4c4, + black: 0x000000, + blanchedalmond: 0xffebcd, + blue: 0x0000ff, + blueviolet: 0x8a2be2, + brown: 0xa52a2a, + burlywood: 0xdeb887, + cadetblue: 0x5f9ea0, + chartreuse: 0x7fff00, + chocolate: 0xd2691e, + coral: 0xff7f50, + cornflowerblue: 0x6495ed, + cornsilk: 0xfff8dc, + crimson: 0xdc143c, + cyan: 0x00ffff, + darkblue: 0x00008b, + darkcyan: 0x008b8b, + darkgoldenrod: 0xb8860b, + darkgray: 0xa9a9a9, + darkgrey: 0xa9a9a9, + darkgreen: 0x006400, + darkkhaki: 0xbdb76b, + darkmagenta: 0x8b008b, + darkolivegreen: 0x556b2f, + darkorange: 0xff8c00, + darkorchid: 0x9932cc, + darkred: 0x8b0000, + darksalmon: 0xe9967a, + darkseagreen: 0x8fbc8f, + darkslateblue: 0x483d8b, + darkslategray: 0x2f4f4f, + darkslategrey: 0x2f4f4f, + darkturquoise: 0x00ced1, + darkviolet: 0x9400d3, + deeppink: 0xff1493, + deepskyblue: 0x00bfff, + dimgray: 0x696969, + dimgrey: 0x696969, + dodgerblue: 0x1e90ff, + firebrick: 0xb22222, + floralwhite: 0xfffaf0, + forestgreen: 0x228b22, + fuchsia: 0xff00ff, + gainsboro: 0xdcdcdc, + ghostwhite: 0xf8f8ff, + gold: 0xffd700, + goldenrod: 0xdaa520, + gray: 0x808080, + grey: 0x808080, + green: 0x008000, + greenyellow: 0xadff2f, + honeydew: 0xf0fff0, + hotpink: 0xff69b4, + indianred: 0xcd5c5c, + indigo: 0x4b0082, + ivory: 0xfffff0, + khaki: 0xf0e68c, + lavender: 0xe6e6fa, + lavenderblush: 0xfff0f5, + lawngreen: 0x7cfc00, + lemonchiffon: 0xfffacd, + lightblue: 0xadd8e6, + lightcoral: 0xf08080, + lightcyan: 0xe0ffff, + lightgoldenrodyellow: 0xfafad2, + lightgray: 0xd3d3d3, + lightgrey: 0xd3d3d3, + lightgreen: 0x90ee90, + lightpink: 0xffb6c1, + lightsalmon: 0xffa07a, + lightseagreen: 0x20b2aa, + lightskyblue: 0x87cefa, + lightslategray: 0x778899, + lightslategrey: 0x778899, + lightsteelblue: 0xb0c4de, + lightyellow: 0xffffe0, + lime: 0x00ff00, + limegreen: 0x32cd32, + linen: 0xfaf0e6, + magenta: 0xff00ff, + maroon: 0x800000, + mediumaquamarine: 0x66cdaa, + mediumblue: 0x0000cd, + mediumorchid: 0xba55d3, + mediumpurple: 0x9370db, + mediumseagreen: 0x3cb371, + mediumslateblue: 0x7b68ee, + mediumspringgreen: 0x00fa9a, + mediumturquoise: 0x48d1cc, + mediumvioletred: 0xc71585, + midnightblue: 0x191970, + mintcream: 0xf5fffa, + mistyrose: 0xffe4e1, + moccasin: 0xffe4b5, + navajowhite: 0xffdead, + navy: 0x000080, + oldlace: 0xfdf5e6, + olive: 0x808000, + olivedrab: 0x6b8e23, + orange: 0xffa500, + orangered: 0xff4500, + orchid: 0xda70d6, + palegoldenrod: 0xeee8aa, + palegreen: 0x98fb98, + paleturquoise: 0xafeeee, + palevioletred: 0xdb7093, + papayawhip: 0xffefd5, + peachpuff: 0xffdab9, + peru: 0xcd853f, + pink: 0xffc0cb, + plum: 0xdda0dd, + powderblue: 0xb0e0e6, + purple: 0x800080, + rebeccapurple: 0x663399, + red: 0xff0000, + rosybrown: 0xbc8f8f, + royalblue: 0x4169e1, + saddlebrown: 0x8b4513, + salmon: 0xfa8072, + sandybrown: 0xf4a460, + seagreen: 0x2e8b57, + seashell: 0xfff5ee, + sienna: 0xa0522d, + silver: 0xc0c0c0, + skyblue: 0x87ceeb, + slateblue: 0x6a5acd, + slategray: 0x708090, + slategrey: 0x708090, + snow: 0xfffafa, + springgreen: 0x00ff7f, + steelblue: 0x4682b4, + tan: 0xd2b48c, + teal: 0x008080, + thistle: 0xd8bfd8, + tomato: 0xff6347, + turquoise: 0x40e0d0, + violet: 0xee82ee, + wheat: 0xf5deb3, + white: 0xffffff, + whitesmoke: 0xf5f5f5, + yellow: 0xffff00, + yellowgreen: 0x9acd32 + }) + ); + var systemColors = new Map( + Object.entries({ + "ActiveBorder": 0x3b99fc, + "ActiveCaption": 0x000000, + "AppWorkspace": 0xaaaaaa, + "Background": 0x6363ce, + "ButtonFace": 0xffffff, + "ButtonHighlight": 0xe9e9e9, + "ButtonShadow": 0x9fa09f, + "ButtonText": 0x000000, + "CaptionText": 0x000000, + "GrayText": 0x7f7f7f, + "Highlight": 0xb2d7ff, + "HighlightText": 0x000000, + "InactiveBorder": 0xffffff, + "InactiveCaption": 0xffffff, + "InactiveCaptionText": 0x000000, + "InfoBackground": 0xfbfcc5, + "InfoText": 0x000000, + "Menu": 0xf6f6f6, + "MenuText": 0xffffff, + "Scrollbar": 0xaaaaaa, + "ThreeDDarkShadow": 0x000000, + "ThreeDFace": 0xc0c0c0, + "ThreeDHighlight": 0xffffff, + "ThreeDLightShadow": 0xffffff, + "ThreeDShadow": 0x000000, + "Window": 0xececec, + "WindowFrame": 0xaaaaaa, + "WindowText": 0x000000, + "-webkit-focus-ring-color": 0xe59700 + }).map(function (_a) { + var _b = __read(_a, 2), + key = _b[0], + value = _b[1]; + return [key.toLowerCase(), value]; + }) + ); + function getSRGBLightness(r, g, b) { + return (0.2126 * r + 0.7152 * g + 0.0722 * b) / 255; + } + + function scale(x, inLow, inHigh, outLow, outHigh) { + return ((x - inLow) * (outHigh - outLow)) / (inHigh - inLow) + outLow; + } + function clamp(x, min, max) { + return Math.min(max, Math.max(min, x)); + } + function multiplyMatrices(m1, m2) { + var result = []; + for (var i = 0, len = m1.length; i < len; i++) { + result[i] = []; + for (var j = 0, len2 = m2[0].length; j < len2; j++) { + var sum = 0; + for (var k = 0, len3 = m1[0].length; k < len3; k++) { + sum += m1[i][k] * m2[k][j]; + } + result[i][j] = sum; + } + } + return result; + } + + function createFilterMatrix(config) { + var m = Matrix.identity(); + if (config.sepia !== 0) { + m = multiplyMatrices(m, Matrix.sepia(config.sepia / 100)); + } + if (config.grayscale !== 0) { + m = multiplyMatrices(m, Matrix.grayscale(config.grayscale / 100)); + } + if (config.contrast !== 100) { + m = multiplyMatrices(m, Matrix.contrast(config.contrast / 100)); + } + if (config.brightness !== 100) { + m = multiplyMatrices(m, Matrix.brightness(config.brightness / 100)); + } + if (config.mode === 1) { + m = multiplyMatrices(m, Matrix.invertNHue()); + } + return m; + } + function applyColorMatrix(_a, matrix) { + var _b = __read(_a, 3), + r = _b[0], + g = _b[1], + b = _b[2]; + var rgb = [[r / 255], [g / 255], [b / 255], [1], [1]]; + var result = multiplyMatrices(matrix, rgb); + return [0, 1, 2].map(function (i) { + return clamp(Math.round(result[i][0] * 255), 0, 255); + }); + } + var Matrix = { + identity: function () { + return [ + [1, 0, 0, 0, 0], + [0, 1, 0, 0, 0], + [0, 0, 1, 0, 0], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 1] + ]; + }, + invertNHue: function () { + return [ + [0.333, -0.667, -0.667, 0, 1], + [-0.667, 0.333, -0.667, 0, 1], + [-0.667, -0.667, 0.333, 0, 1], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 1] + ]; + }, + brightness: function (v) { + return [ + [v, 0, 0, 0, 0], + [0, v, 0, 0, 0], + [0, 0, v, 0, 0], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 1] + ]; + }, + contrast: function (v) { + var t = (1 - v) / 2; + return [ + [v, 0, 0, 0, t], + [0, v, 0, 0, t], + [0, 0, v, 0, t], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 1] + ]; + }, + sepia: function (v) { + return [ + [ + 0.393 + 0.607 * (1 - v), + 0.769 - 0.769 * (1 - v), + 0.189 - 0.189 * (1 - v), + 0, + 0 + ], + [ + 0.349 - 0.349 * (1 - v), + 0.686 + 0.314 * (1 - v), + 0.168 - 0.168 * (1 - v), + 0, + 0 + ], + [ + 0.272 - 0.272 * (1 - v), + 0.534 - 0.534 * (1 - v), + 0.131 + 0.869 * (1 - v), + 0, + 0 + ], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 1] + ]; + }, + grayscale: function (v) { + return [ + [ + 0.2126 + 0.7874 * (1 - v), + 0.7152 - 0.7152 * (1 - v), + 0.0722 - 0.0722 * (1 - v), + 0, + 0 + ], + [ + 0.2126 - 0.2126 * (1 - v), + 0.7152 + 0.2848 * (1 - v), + 0.0722 - 0.0722 * (1 - v), + 0, + 0 + ], + [ + 0.2126 - 0.2126 * (1 - v), + 0.7152 - 0.7152 * (1 - v), + 0.0722 + 0.9278 * (1 - v), + 0, + 0 + ], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 1] + ]; + } + }; + + function getBgPole(theme) { + var isDarkScheme = theme.mode === 1; + var prop = isDarkScheme + ? "darkSchemeBackgroundColor" + : "lightSchemeBackgroundColor"; + return theme[prop]; + } + function getFgPole(theme) { + var isDarkScheme = theme.mode === 1; + var prop = isDarkScheme + ? "darkSchemeTextColor" + : "lightSchemeTextColor"; + return theme[prop]; + } + var colorModificationCache = new Map(); + function clearColorModificationCache() { + colorModificationCache.clear(); + } + var rgbCacheKeys = ["r", "g", "b", "a"]; + var themeCacheKeys$1 = [ + "mode", + "brightness", + "contrast", + "grayscale", + "sepia", + "darkSchemeBackgroundColor", + "darkSchemeTextColor", + "lightSchemeBackgroundColor", + "lightSchemeTextColor" + ]; + function getCacheId(rgb, theme) { + var resultId = ""; + rgbCacheKeys.forEach(function (key) { + resultId += "".concat(rgb[key], ";"); + }); + themeCacheKeys$1.forEach(function (key) { + resultId += "".concat(theme[key], ";"); + }); + return resultId; + } + function modifyColorWithCache( + rgb, + theme, + modifyHSL, + poleColor, + anotherPoleColor + ) { + var fnCache; + if (colorModificationCache.has(modifyHSL)) { + fnCache = colorModificationCache.get(modifyHSL); + } else { + fnCache = new Map(); + colorModificationCache.set(modifyHSL, fnCache); + } + var id = getCacheId(rgb, theme); + if (fnCache.has(id)) { + return fnCache.get(id); + } + var hsl = rgbToHSL(rgb); + var pole = poleColor == null ? null : parseToHSLWithCache(poleColor); + var anotherPole = + anotherPoleColor == null + ? null + : parseToHSLWithCache(anotherPoleColor); + var modified = modifyHSL(hsl, pole, anotherPole); + var _a = hslToRGB(modified), + r = _a.r, + g = _a.g, + b = _a.b, + a = _a.a; + var matrix = createFilterMatrix(theme); + var _b = __read(applyColorMatrix([r, g, b], matrix), 3), + rf = _b[0], + gf = _b[1], + bf = _b[2]; + var color = + a === 1 + ? rgbToHexString({r: rf, g: gf, b: bf}) + : rgbToString({r: rf, g: gf, b: bf, a: a}); + fnCache.set(id, color); + return color; + } + function noopHSL(hsl) { + return hsl; + } + function modifyColor(rgb, theme) { + return modifyColorWithCache(rgb, theme, noopHSL); + } + function modifyLightSchemeColor(rgb, theme) { + var poleBg = getBgPole(theme); + var poleFg = getFgPole(theme); + return modifyColorWithCache( + rgb, + theme, + modifyLightModeHSL, + poleFg, + poleBg + ); + } + function modifyLightModeHSL(_a, poleFg, poleBg) { + var h = _a.h, + s = _a.s, + l = _a.l, + a = _a.a; + var isDark = l < 0.5; + var isNeutral; + if (isDark) { + isNeutral = l < 0.2 || s < 0.12; + } else { + var isBlue = h > 200 && h < 280; + isNeutral = s < 0.24 || (l > 0.8 && isBlue); + } + var hx = h; + var sx = l; + if (isNeutral) { + if (isDark) { + hx = poleFg.h; + sx = poleFg.s; + } else { + hx = poleBg.h; + sx = poleBg.s; + } + } + var lx = scale(l, 0, 1, poleFg.l, poleBg.l); + return {h: hx, s: sx, l: lx, a: a}; + } + var MAX_BG_LIGHTNESS = 0.4; + function modifyBgHSL(_a, pole) { + var h = _a.h, + s = _a.s, + l = _a.l, + a = _a.a; + var isDark = l < 0.5; + var isBlue = h > 200 && h < 280; + var isNeutral = s < 0.12 || (l > 0.8 && isBlue); + if (isDark) { + var lx_1 = scale(l, 0, 0.5, 0, MAX_BG_LIGHTNESS); + if (isNeutral) { + var hx_1 = pole.h; + var sx = pole.s; + return {h: hx_1, s: sx, l: lx_1, a: a}; + } + return {h: h, s: s, l: lx_1, a: a}; + } + var lx = scale(l, 0.5, 1, MAX_BG_LIGHTNESS, pole.l); + if (isNeutral) { + var hx_2 = pole.h; + var sx = pole.s; + return {h: hx_2, s: sx, l: lx, a: a}; + } + var hx = h; + var isYellow = h > 60 && h < 180; + if (isYellow) { + var isCloserToGreen = h > 120; + if (isCloserToGreen) { + hx = scale(h, 120, 180, 135, 180); + } else { + hx = scale(h, 60, 120, 60, 105); + } + } + if (hx > 40 && hx < 80) { + lx *= 0.75; + } + return {h: hx, s: s, l: lx, a: a}; + } + function modifyBackgroundColor(rgb, theme) { + if (theme.mode === 0) { + return modifyLightSchemeColor(rgb, theme); + } + var pole = getBgPole(theme); + return modifyColorWithCache( + rgb, + __assign(__assign({}, theme), {mode: 0}), + modifyBgHSL, + pole + ); + } + var MIN_FG_LIGHTNESS = 0.55; + function modifyBlueFgHue(hue) { + return scale(hue, 205, 245, 205, 220); + } + function modifyFgHSL(_a, pole) { + var h = _a.h, + s = _a.s, + l = _a.l, + a = _a.a; + var isLight = l > 0.5; + var isNeutral = l < 0.2 || s < 0.24; + var isBlue = !isNeutral && h > 205 && h < 245; + if (isLight) { + var lx_2 = scale(l, 0.5, 1, MIN_FG_LIGHTNESS, pole.l); + if (isNeutral) { + var hx_3 = pole.h; + var sx = pole.s; + return {h: hx_3, s: sx, l: lx_2, a: a}; + } + var hx_4 = h; + if (isBlue) { + hx_4 = modifyBlueFgHue(h); + } + return {h: hx_4, s: s, l: lx_2, a: a}; + } + if (isNeutral) { + var hx_5 = pole.h; + var sx = pole.s; + var lx_3 = scale(l, 0, 0.5, pole.l, MIN_FG_LIGHTNESS); + return {h: hx_5, s: sx, l: lx_3, a: a}; + } + var hx = h; + var lx; + if (isBlue) { + hx = modifyBlueFgHue(h); + lx = scale(l, 0, 0.5, pole.l, Math.min(1, MIN_FG_LIGHTNESS + 0.05)); + } else { + lx = scale(l, 0, 0.5, pole.l, MIN_FG_LIGHTNESS); + } + return {h: hx, s: s, l: lx, a: a}; + } + function modifyForegroundColor(rgb, theme) { + if (theme.mode === 0) { + return modifyLightSchemeColor(rgb, theme); + } + var pole = getFgPole(theme); + return modifyColorWithCache( + rgb, + __assign(__assign({}, theme), {mode: 0}), + modifyFgHSL, + pole + ); + } + function modifyBorderHSL(_a, poleFg, poleBg) { + var h = _a.h, + s = _a.s, + l = _a.l, + a = _a.a; + var isDark = l < 0.5; + var isNeutral = l < 0.2 || s < 0.24; + var hx = h; + var sx = s; + if (isNeutral) { + if (isDark) { + hx = poleFg.h; + sx = poleFg.s; + } else { + hx = poleBg.h; + sx = poleBg.s; + } + } + var lx = scale(l, 0, 1, 0.5, 0.2); + return {h: hx, s: sx, l: lx, a: a}; + } + function modifyBorderColor(rgb, theme) { + if (theme.mode === 0) { + return modifyLightSchemeColor(rgb, theme); + } + var poleFg = getFgPole(theme); + var poleBg = getBgPole(theme); + return modifyColorWithCache( + rgb, + __assign(__assign({}, theme), {mode: 0}), + modifyBorderHSL, + poleFg, + poleBg + ); + } + function modifyShadowColor(rgb, filter) { + return modifyBackgroundColor(rgb, filter); + } + function modifyGradientColor(rgb, filter) { + return modifyBackgroundColor(rgb, filter); + } + + function createTextStyle(config) { + var lines = []; + lines.push( + '*:not(pre, pre *, code, .far, .fa, .glyphicon, [class*="vjs-"], .fab, .fa-github, .fas, .material-icons, .icofont, .typcn, mu, [class*="mu-"], .glyphicon, .icon) {' + ); + if (config.useFont && config.fontFamily) { + lines.push( + " font-family: ".concat(config.fontFamily, " !important;") + ); + } + if (config.textStroke > 0) { + lines.push( + " -webkit-text-stroke: ".concat( + config.textStroke, + "px !important;" + ) + ); + lines.push( + " text-stroke: ".concat(config.textStroke, "px !important;") + ); + } + lines.push("}"); + return lines.join("\n"); + } + + var FilterMode; + (function (FilterMode) { + FilterMode[(FilterMode["light"] = 0)] = "light"; + FilterMode[(FilterMode["dark"] = 1)] = "dark"; + })(FilterMode || (FilterMode = {})); + function getCSSFilterValue(config) { + var filters = []; + if (config.mode === FilterMode.dark) { + filters.push("invert(100%) hue-rotate(180deg)"); + } + if (config.brightness !== 100) { + filters.push("brightness(".concat(config.brightness, "%)")); + } + if (config.contrast !== 100) { + filters.push("contrast(".concat(config.contrast, "%)")); + } + if (config.grayscale !== 0) { + filters.push("grayscale(".concat(config.grayscale, "%)")); + } + if (config.sepia !== 0) { + filters.push("sepia(".concat(config.sepia, "%)")); + } + if (filters.length === 0) { + return null; + } + return filters.join(" "); + } + + function toSVGMatrix(matrix) { + return matrix + .slice(0, 4) + .map(function (m) { + return m + .map(function (m) { + return m.toFixed(3); + }) + .join(" "); + }) + .join(" "); + } + function getSVGFilterMatrixValue(config) { + return toSVGMatrix(createFilterMatrix(config)); + } + + var counter = 0; + var resolvers$1 = new Map(); + var rejectors = new Map(); + function bgFetch(request) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [ + 2, + new Promise(function (resolve, reject) { + var id = ++counter; + resolvers$1.set(id, resolve); + rejectors.set(id, reject); + chrome.runtime.sendMessage({ + type: MessageType.CS_FETCH, + data: request, + id: id + }); + }) + ]; + }); + }); + } + chrome.runtime.onMessage.addListener(function (_a) { + var type = _a.type, + data = _a.data, + error = _a.error, + id = _a.id; + if (type === MessageType.BG_FETCH_RESPONSE) { + var resolve = resolvers$1.get(id); + var reject = rejectors.get(id); + resolvers$1.delete(id); + rejectors.delete(id); + if (error) { + reject && reject(error); + } else { + resolve && resolve(data); + } + } + }); + + var AsyncQueue = (function () { + function AsyncQueue() { + this.queue = []; + this.timerId = null; + this.frameDuration = 1000 / 60; + } + AsyncQueue.prototype.addToQueue = function (entry) { + this.queue.push(entry); + this.startQueue(); + }; + AsyncQueue.prototype.stopQueue = function () { + if (this.timerId !== null) { + cancelAnimationFrame(this.timerId); + this.timerId = null; + } + this.queue = []; + }; + AsyncQueue.prototype.startQueue = function () { + var _this = this; + if (this.timerId) { + return; + } + this.timerId = requestAnimationFrame(function () { + _this.timerId = null; + var start = Date.now(); + var cb; + while ((cb = _this.queue.shift())) { + cb(); + if (Date.now() - start >= _this.frameDuration) { + _this.startQueue(); + break; + } + } + }); + }; + return AsyncQueue; + })(); + + var imageManager = new AsyncQueue(); + function getImageDetails(url) { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + return [ + 2, + new Promise(function (resolve, reject) { + return __awaiter(_this, void 0, void 0, function () { + var dataURL, error_1, image_1, error_2; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!url.startsWith("data:")) + return [3, 1]; + dataURL = url; + return [3, 4]; + case 1: + _a.trys.push([1, 3, , 4]); + return [4, getImageDataURL(url)]; + case 2: + dataURL = _a.sent(); + return [3, 4]; + case 3: + error_1 = _a.sent(); + reject(error_1); + return [2]; + case 4: + _a.trys.push([4, 6, , 7]); + return [4, urlToImage(dataURL)]; + case 5: + image_1 = _a.sent(); + imageManager.addToQueue(function () { + resolve( + __assign( + { + src: url, + dataURL: dataURL, + width: image_1.naturalWidth, + height: image_1.naturalHeight + }, + analyzeImage(image_1) + ) + ); + }); + return [3, 7]; + case 6: + error_2 = _a.sent(); + reject(error_2); + return [3, 7]; + case 7: + return [2]; + } + }); + }); + }) + ]; + }); + }); + } + function getImageDataURL(url) { + return __awaiter(this, void 0, void 0, function () { + var parsedURL; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + parsedURL = new URL(url); + if (!(parsedURL.origin === location.origin)) + return [3, 2]; + return [4, loadAsDataURL(url)]; + case 1: + return [2, _a.sent()]; + case 2: + return [ + 4, + bgFetch({url: url, responseType: "data-url"}) + ]; + case 3: + return [2, _a.sent()]; + } + }); + }); + } + function urlToImage(url) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [ + 2, + new Promise(function (resolve, reject) { + var image = new Image(); + image.onload = function () { + return resolve(image); + }; + image.onerror = function () { + return reject("Unable to load image ".concat(url)); + }; + image.src = url; + }) + ]; + }); + }); + } + var MAX_ANALIZE_PIXELS_COUNT = 32 * 32; + var canvas; + var context; + function createCanvas() { + var maxWidth = MAX_ANALIZE_PIXELS_COUNT; + var maxHeight = MAX_ANALIZE_PIXELS_COUNT; + canvas = document.createElement("canvas"); + canvas.width = maxWidth; + canvas.height = maxHeight; + context = canvas.getContext("2d"); + context.imageSmoothingEnabled = false; + } + function removeCanvas() { + canvas = null; + context = null; + } + var MAX_IMAGE_SIZE = 5 * 1024 * 1024; + function analyzeImage(image) { + if (!canvas) { + createCanvas(); + } + var naturalWidth = image.naturalWidth, + naturalHeight = image.naturalHeight; + if (naturalHeight === 0 || naturalWidth === 0) { + logWarn("logWarn(Image is empty ".concat(image.currentSrc, ")")); + return null; + } + var size = naturalWidth * naturalHeight * 4; + if (size > MAX_IMAGE_SIZE) { + return { + isDark: false, + isLight: false, + isTransparent: false, + isLarge: false, + isTooLarge: true + }; + } + var naturalPixelsCount = naturalWidth * naturalHeight; + var k = Math.min( + 1, + Math.sqrt(MAX_ANALIZE_PIXELS_COUNT / naturalPixelsCount) + ); + var width = Math.ceil(naturalWidth * k); + var height = Math.ceil(naturalHeight * k); + context.clearRect(0, 0, width, height); + context.drawImage( + image, + 0, + 0, + naturalWidth, + naturalHeight, + 0, + 0, + width, + height + ); + var imageData = context.getImageData(0, 0, width, height); + var d = imageData.data; + var TRANSPARENT_ALPHA_THRESHOLD = 0.05; + var DARK_LIGHTNESS_THRESHOLD = 0.4; + var LIGHT_LIGHTNESS_THRESHOLD = 0.7; + var transparentPixelsCount = 0; + var darkPixelsCount = 0; + var lightPixelsCount = 0; + var i, x, y; + var r, g, b, a; + var l; + for (y = 0; y < height; y++) { + for (x = 0; x < width; x++) { + i = 4 * (y * width + x); + r = d[i + 0]; + g = d[i + 1]; + b = d[i + 2]; + a = d[i + 3]; + if (a / 255 < TRANSPARENT_ALPHA_THRESHOLD) { + transparentPixelsCount++; + } else { + l = getSRGBLightness(r, g, b); + if (l < DARK_LIGHTNESS_THRESHOLD) { + darkPixelsCount++; + } + if (l > LIGHT_LIGHTNESS_THRESHOLD) { + lightPixelsCount++; + } + } + } + } + var totalPixelsCount = width * height; + var opaquePixelsCount = totalPixelsCount - transparentPixelsCount; + var DARK_IMAGE_THRESHOLD = 0.7; + var LIGHT_IMAGE_THRESHOLD = 0.7; + var TRANSPARENT_IMAGE_THRESHOLD = 0.1; + var LARGE_IMAGE_PIXELS_COUNT = 800 * 600; + return { + isDark: darkPixelsCount / opaquePixelsCount >= DARK_IMAGE_THRESHOLD, + isLight: + lightPixelsCount / opaquePixelsCount >= LIGHT_IMAGE_THRESHOLD, + isTransparent: + transparentPixelsCount / totalPixelsCount >= + TRANSPARENT_IMAGE_THRESHOLD, + isLarge: naturalPixelsCount >= LARGE_IMAGE_PIXELS_COUNT, + isTooLarge: false + }; + } + function getFilteredImageDataURL(_a, theme) { + var dataURL = _a.dataURL, + width = _a.width, + height = _a.height; + var matrix = getSVGFilterMatrixValue(theme); + var svg = [ + ''), + "", + '', + ''), + "", + "", + ''), + "" + ].join(""); + return "data:image/svg+xml;base64,".concat(btoa(svg)); + } + function cleanImageProcessingCache() { + imageManager && imageManager.stopQueue(); + removeCanvas(); + } + + var gradientLength = "gradient".length; + var conicGradient = "conic-"; + var conicGradientLength = conicGradient.length; + var radialGradient = "radial-"; + var linearGradient = "linear-"; + function parseGradient(value) { + var result = []; + var index = 0; + var startIndex = conicGradient.length; + var _loop_1 = function () { + var typeGradient; + [linearGradient, radialGradient, conicGradient].find(function ( + possibleType + ) { + if (index - possibleType.length >= 0) { + var possibleGradient = value.substring( + index - possibleType.length, + index + ); + if (possibleGradient === possibleType) { + if ( + value.slice( + index - possibleType.length - 10, + index - possibleType.length - 1 + ) === "repeating" + ) { + typeGradient = "repeating-".concat( + possibleType, + "gradient" + ); + return true; + } + if ( + value.slice( + index - possibleType.length - 8, + index - possibleType.length - 1 + ) === "-webkit" + ) { + typeGradient = "-webkit-".concat( + possibleType, + "gradient" + ); + return true; + } + typeGradient = "".concat(possibleType, "gradient"); + return true; + } + } + }); + if (!typeGradient) { + return "break"; + } + var _a = getParenthesesRange(value, index + gradientLength), + start = _a.start, + end = _a.end; + var match = value.substring(start + 1, end - 1); + startIndex = end + 1 + conicGradientLength; + result.push({ + typeGradient: typeGradient, + match: match, + offset: typeGradient.length + 2, + index: index - typeGradient.length + gradientLength, + hasComma: true + }); + }; + while ((index = value.indexOf("gradient", startIndex)) !== -1) { + var state_1 = _loop_1(); + if (state_1 === "break") break; + } + if (result.length) { + result[result.length - 1].hasComma = false; + } + return result; + } + + function getPriority(ruleStyle, property) { + return Boolean(ruleStyle && ruleStyle.getPropertyPriority(property)); + } + function getModifiableCSSDeclaration( + property, + value, + rule, + variablesStore, + ignoreImageSelectors, + isCancelled + ) { + if (property.startsWith("--")) { + var modifier = getVariableModifier( + variablesStore, + property, + value, + rule, + ignoreImageSelectors, + isCancelled + ); + if (modifier) { + return { + property: property, + value: modifier, + important: getPriority(rule.style, property), + sourceValue: value + }; + } + } else if (value.includes("var(")) { + var modifier = getVariableDependantModifier( + variablesStore, + property, + value + ); + if (modifier) { + return { + property: property, + value: modifier, + important: getPriority(rule.style, property), + sourceValue: value + }; + } + } else if (property === "color-scheme") { + return null; + } else if ( + (property.includes("color") && + property !== "-webkit-print-color-adjust") || + property === "fill" || + property === "stroke" || + property === "stop-color" + ) { + var modifier = getColorModifier(property, value, rule); + if (modifier) { + return { + property: property, + value: modifier, + important: getPriority(rule.style, property), + sourceValue: value + }; + } + } else if ( + property === "background-image" || + property === "list-style-image" + ) { + var modifier = getBgImageModifier( + value, + rule, + ignoreImageSelectors, + isCancelled + ); + if (modifier) { + return { + property: property, + value: modifier, + important: getPriority(rule.style, property), + sourceValue: value + }; + } + } else if (property.includes("shadow")) { + var modifier = getShadowModifier(value); + if (modifier) { + return { + property: property, + value: modifier, + important: getPriority(rule.style, property), + sourceValue: value + }; + } + } + return null; + } + function joinSelectors() { + var selectors = []; + for (var _i = 0; _i < arguments.length; _i++) { + selectors[_i] = arguments[_i]; + } + return selectors.filter(Boolean).join(", "); + } + function getModifiedUserAgentStyle(theme, isIFrame, styleSystemControls) { + var lines = []; + if (!isIFrame) { + lines.push("html {"); + lines.push( + " background-color: ".concat( + modifyBackgroundColor({r: 255, g: 255, b: 255}, theme), + " !important;" + ) + ); + lines.push("}"); + } + if (isCSSColorSchemePropSupported) { + lines.push("html {"); + lines.push( + " color-scheme: ".concat( + theme.mode === 1 ? "dark" : "dark light", + " !important;" + ) + ); + lines.push("}"); + } + var bgSelectors = joinSelectors( + isIFrame ? "" : "html, body", + styleSystemControls ? "input, textarea, select, button, dialog" : "" + ); + if (bgSelectors) { + lines.push("".concat(bgSelectors, " {")); + lines.push( + " background-color: ".concat( + modifyBackgroundColor({r: 255, g: 255, b: 255}, theme), + ";" + ) + ); + lines.push("}"); + } + lines.push( + "".concat( + joinSelectors( + "html, body", + styleSystemControls ? "input, textarea, select, button" : "" + ), + " {" + ) + ); + lines.push( + " border-color: ".concat( + modifyBorderColor({r: 76, g: 76, b: 76}, theme), + ";" + ) + ); + lines.push( + " color: ".concat( + modifyForegroundColor({r: 0, g: 0, b: 0}, theme), + ";" + ) + ); + lines.push("}"); + lines.push("a {"); + lines.push( + " color: ".concat( + modifyForegroundColor({r: 0, g: 64, b: 255}, theme), + ";" + ) + ); + lines.push("}"); + lines.push("table {"); + lines.push( + " border-color: ".concat( + modifyBorderColor({r: 128, g: 128, b: 128}, theme), + ";" + ) + ); + lines.push("}"); + lines.push("::placeholder {"); + lines.push( + " color: ".concat( + modifyForegroundColor({r: 169, g: 169, b: 169}, theme), + ";" + ) + ); + lines.push("}"); + lines.push("input:-webkit-autofill,"); + lines.push("textarea:-webkit-autofill,"); + lines.push("select:-webkit-autofill {"); + lines.push( + " background-color: ".concat( + modifyBackgroundColor({r: 250, g: 255, b: 189}, theme), + " !important;" + ) + ); + lines.push( + " color: ".concat( + modifyForegroundColor({r: 0, g: 0, b: 0}, theme), + " !important;" + ) + ); + lines.push("}"); + if (theme.scrollbarColor) { + lines.push(getModifiedScrollbarStyle(theme)); + } + if (theme.selectionColor) { + lines.push(getModifiedSelectionStyle(theme)); + } + return lines.join("\n"); + } + function getSelectionColor(theme) { + var backgroundColorSelection; + var foregroundColorSelection; + if (theme.selectionColor === "auto") { + backgroundColorSelection = modifyBackgroundColor( + {r: 0, g: 96, b: 212}, + __assign(__assign({}, theme), {grayscale: 0}) + ); + foregroundColorSelection = modifyForegroundColor( + {r: 255, g: 255, b: 255}, + __assign(__assign({}, theme), {grayscale: 0}) + ); + } else { + var rgb = parseColorWithCache(theme.selectionColor); + var hsl = rgbToHSL(rgb); + backgroundColorSelection = theme.selectionColor; + if (hsl.l < 0.5) { + foregroundColorSelection = "#FFF"; + } else { + foregroundColorSelection = "#000"; + } + } + return { + backgroundColorSelection: backgroundColorSelection, + foregroundColorSelection: foregroundColorSelection + }; + } + function getModifiedSelectionStyle(theme) { + var lines = []; + var modifiedSelectionColor = getSelectionColor(theme); + var backgroundColorSelection = + modifiedSelectionColor.backgroundColorSelection; + var foregroundColorSelection = + modifiedSelectionColor.foregroundColorSelection; + ["::selection", "::-moz-selection"].forEach(function (selection) { + lines.push("".concat(selection, " {")); + lines.push( + " background-color: ".concat( + backgroundColorSelection, + " !important;" + ) + ); + lines.push( + " color: ".concat(foregroundColorSelection, " !important;") + ); + lines.push("}"); + }); + return lines.join("\n"); + } + function getModifiedScrollbarStyle(theme) { + var lines = []; + var colorTrack; + var colorIcons; + var colorThumb; + var colorThumbHover; + var colorThumbActive; + var colorCorner; + if (theme.scrollbarColor === "auto") { + colorTrack = modifyBackgroundColor({r: 241, g: 241, b: 241}, theme); + colorIcons = modifyForegroundColor({r: 96, g: 96, b: 96}, theme); + colorThumb = modifyBackgroundColor({r: 176, g: 176, b: 176}, theme); + colorThumbHover = modifyBackgroundColor( + {r: 144, g: 144, b: 144}, + theme + ); + colorThumbActive = modifyBackgroundColor( + {r: 96, g: 96, b: 96}, + theme + ); + colorCorner = modifyBackgroundColor( + {r: 255, g: 255, b: 255}, + theme + ); + } else { + var rgb = parseColorWithCache(theme.scrollbarColor); + var hsl_1 = rgbToHSL(rgb); + var isLight = hsl_1.l > 0.5; + var lighten = function (lighter) { + return __assign(__assign({}, hsl_1), { + l: clamp(hsl_1.l + lighter, 0, 1) + }); + }; + var darken = function (darker) { + return __assign(__assign({}, hsl_1), { + l: clamp(hsl_1.l - darker, 0, 1) + }); + }; + colorTrack = hslToString(darken(0.4)); + colorIcons = hslToString(isLight ? darken(0.4) : lighten(0.4)); + colorThumb = hslToString(hsl_1); + colorThumbHover = hslToString(lighten(0.1)); + colorThumbActive = hslToString(lighten(0.2)); + } + lines.push("::-webkit-scrollbar {"); + lines.push(" background-color: ".concat(colorTrack, ";")); + lines.push(" color: ".concat(colorIcons, ";")); + lines.push("}"); + lines.push("::-webkit-scrollbar-thumb {"); + lines.push(" background-color: ".concat(colorThumb, ";")); + lines.push("}"); + lines.push("::-webkit-scrollbar-thumb:hover {"); + lines.push(" background-color: ".concat(colorThumbHover, ";")); + lines.push("}"); + lines.push("::-webkit-scrollbar-thumb:active {"); + lines.push(" background-color: ".concat(colorThumbActive, ";")); + lines.push("}"); + lines.push("::-webkit-scrollbar-corner {"); + lines.push(" background-color: ".concat(colorCorner, ";")); + lines.push("}"); + if (isFirefox) { + lines.push("* {"); + lines.push( + " scrollbar-color: " + .concat(colorThumb, " ") + .concat(colorTrack, ";") + ); + lines.push("}"); + } + return lines.join("\n"); + } + function getModifiedFallbackStyle(filter, _a) { + var strict = _a.strict; + var lines = []; + var isMicrosoft = ["microsoft.com", "docs.microsoft.com"].includes( + location.hostname + ); + lines.push( + "html, body, ".concat( + strict + ? "body :not(iframe)".concat( + isMicrosoft + ? ':not(div[style^="position:absolute;top:0;left:-"]' + : "" + ) + : "body > :not(iframe)", + " {" + ) + ); + lines.push( + " background-color: ".concat( + modifyBackgroundColor({r: 255, g: 255, b: 255}, filter), + " !important;" + ) + ); + lines.push( + " border-color: ".concat( + modifyBorderColor({r: 64, g: 64, b: 64}, filter), + " !important;" + ) + ); + lines.push( + " color: ".concat( + modifyForegroundColor({r: 0, g: 0, b: 0}, filter), + " !important;" + ) + ); + lines.push("}"); + return lines.join("\n"); + } + var unparsableColors = new Set([ + "inherit", + "transparent", + "initial", + "currentcolor", + "none", + "unset" + ]); + function getColorModifier(prop, value, rule) { + if (unparsableColors.has(value.toLowerCase())) { + return value; + } + var rgb = parseColorWithCache(value); + if (!rgb) { + return null; + } + if (prop.includes("background")) { + if ( + (rule.style.webkitMaskImage && + rule.style.webkitMaskImage !== "none") || + (rule.style.webkitMask && + !rule.style.webkitMask.startsWith("none")) || + (rule.style.mask && rule.style.mask !== "none") || + (rule.style.getPropertyValue("mask-image") && + rule.style.getPropertyValue("mask-image") !== "none") + ) { + return function (filter) { + return modifyForegroundColor(rgb, filter); + }; + } + return function (filter) { + return modifyBackgroundColor(rgb, filter); + }; + } + if (prop.includes("border") || prop.includes("outline")) { + return function (filter) { + return modifyBorderColor(rgb, filter); + }; + } + return function (filter) { + return modifyForegroundColor(rgb, filter); + }; + } + var imageDetailsCache = new Map(); + var awaitingForImageLoading = new Map(); + function shouldIgnoreImage(selectorText, selectors) { + if (!selectorText || selectors.length === 0) { + return false; + } + if ( + selectors.some(function (s) { + return s === "*"; + }) + ) { + return true; + } + var ruleSelectors = selectorText.split(/,\s*/g); + var _loop_1 = function (i) { + var ignoredSelector = selectors[i]; + if ( + ruleSelectors.some(function (s) { + return s === ignoredSelector; + }) + ) { + return {value: true}; + } + }; + for (var i = 0; i < selectors.length; i++) { + var state_1 = _loop_1(i); + if (typeof state_1 === "object") return state_1.value; + } + return false; + } + function getBgImageModifier( + value, + rule, + ignoreImageSelectors, + isCancelled + ) { + var _this = this; + try { + var gradients = parseGradient(value); + var urls = getMatches(cssURLRegex, value); + if (urls.length === 0 && gradients.length === 0) { + return value; + } + var getIndices = function (matches) { + var index = 0; + return matches.map(function (match) { + var valueIndex = value.indexOf(match, index); + index = valueIndex + match.length; + return {match: match, index: valueIndex}; + }); + }; + var matches_1 = gradients + .map(function (i) { + return __assign({type: "gradient"}, i); + }) + .concat( + getIndices(urls).map(function (i) { + return __assign({type: "url", offset: 0}, i); + }) + ) + .sort(function (a, b) { + return a.index > b.index ? 1 : -1; + }); + var getGradientModifier_1 = function (gradient) { + var typeGradient = gradient.typeGradient, + match = gradient.match, + hasComma = gradient.hasComma; + var partsRegex = + /([^\(\),]+(\([^\(\)]*(\([^\(\)]*\)*[^\(\)]*)?\))?([^\(\), ]|( (?!calc)))*),?/g; + var colorStopRegex = + /^(from|color-stop|to)\(([^\(\)]*?,\s*)?(.*?)\)$/; + var parts = getMatches(partsRegex, match, 1).map(function ( + part + ) { + part = part.trim(); + var rgb = parseColorWithCache(part); + if (rgb) { + return function (filter) { + return modifyGradientColor(rgb, filter); + }; + } + var space = part.lastIndexOf(" "); + rgb = parseColorWithCache(part.substring(0, space)); + if (rgb) { + return function (filter) { + return "" + .concat(modifyGradientColor(rgb, filter), " ") + .concat(part.substring(space + 1)); + }; + } + var colorStopMatch = part.match(colorStopRegex); + if (colorStopMatch) { + rgb = parseColorWithCache(colorStopMatch[3]); + if (rgb) { + return function (filter) { + return "" + .concat(colorStopMatch[1], "(") + .concat( + colorStopMatch[2] + ? "".concat(colorStopMatch[2], ", ") + : "" + ) + .concat( + modifyGradientColor(rgb, filter), + ")" + ); + }; + } + } + return function () { + return part; + }; + }); + return function (filter) { + return "" + .concat(typeGradient, "(") + .concat( + parts + .map(function (modify) { + return modify(filter); + }) + .join(", "), + ")" + ) + .concat(hasComma ? ", " : ""); + }; + }; + var getURLModifier_1 = function (urlValue) { + var _a; + if ( + shouldIgnoreImage(rule.selectorText, ignoreImageSelectors) + ) { + return null; + } + var url = getCSSURLValue(urlValue); + var isURLEmpty = url.length === 0; + var parentStyleSheet = rule.parentStyleSheet; + var baseURL = + parentStyleSheet && parentStyleSheet.href + ? getCSSBaseBath(parentStyleSheet.href) + : ((_a = parentStyleSheet.ownerNode) === null || + _a === void 0 + ? void 0 + : _a.baseURI) || location.origin; + url = getAbsoluteURL(baseURL, url); + var absoluteValue = 'url("'.concat(url, '")'); + return function (filter) { + return __awaiter(_this, void 0, void 0, function () { + var imageDetails, awaiters_1, err_1, bgImageValue; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (isURLEmpty) { + return [2, "url('')"]; + } + if (!imageDetailsCache.has(url)) + return [3, 1]; + imageDetails = imageDetailsCache.get(url); + return [3, 7]; + case 1: + _a.trys.push([1, 6, , 7]); + if (!awaitingForImageLoading.has(url)) + return [3, 3]; + awaiters_1 = + awaitingForImageLoading.get(url); + return [ + 4, + new Promise(function (resolve) { + return awaiters_1.push(resolve); + }) + ]; + case 2: + imageDetails = _a.sent(); + if (!imageDetails) { + return [2, null]; + } + return [3, 5]; + case 3: + awaitingForImageLoading.set(url, []); + return [4, getImageDetails(url)]; + case 4: + imageDetails = _a.sent(); + imageDetailsCache.set(url, imageDetails); + awaitingForImageLoading + .get(url) + .forEach(function (resolve) { + return resolve(imageDetails); + }); + awaitingForImageLoading.delete(url); + _a.label = 5; + case 5: + if (isCancelled()) { + return [2, null]; + } + return [3, 7]; + case 6: + err_1 = _a.sent(); + logWarn(err_1); + if (awaitingForImageLoading.has(url)) { + awaitingForImageLoading + .get(url) + .forEach(function (resolve) { + return resolve(null); + }); + awaitingForImageLoading.delete(url); + } + return [2, absoluteValue]; + case 7: + bgImageValue = + getBgImageValue_1( + imageDetails, + filter + ) || absoluteValue; + return [2, bgImageValue]; + } + }); + }); + }; + }; + var getBgImageValue_1 = function (imageDetails, filter) { + var isDark = imageDetails.isDark, + isLight = imageDetails.isLight, + isTransparent = imageDetails.isTransparent, + isLarge = imageDetails.isLarge, + isTooLarge = imageDetails.isTooLarge, + width = imageDetails.width; + var result; + if (isTooLarge) { + result = 'url("'.concat(imageDetails.src, '")'); + } else if ( + isDark && + isTransparent && + filter.mode === 1 && + !isLarge && + width > 2 + ) { + logInfo("Inverting dark image ".concat(imageDetails.src)); + var inverted = getFilteredImageDataURL( + imageDetails, + __assign(__assign({}, filter), { + sepia: clamp(filter.sepia + 10, 0, 100) + }) + ); + result = 'url("'.concat(inverted, '")'); + } else if (isLight && !isTransparent && filter.mode === 1) { + if (isLarge) { + result = "none"; + } else { + logInfo( + "Dimming light image ".concat(imageDetails.src) + ); + var dimmed = getFilteredImageDataURL( + imageDetails, + filter + ); + result = 'url("'.concat(dimmed, '")'); + } + } else if (filter.mode === 0 && isLight && !isLarge) { + logInfo( + "Applying filter to image ".concat(imageDetails.src) + ); + var filtered = getFilteredImageDataURL( + imageDetails, + __assign(__assign({}, filter), { + brightness: clamp(filter.brightness - 10, 5, 200), + sepia: clamp(filter.sepia + 10, 0, 100) + }) + ); + result = 'url("'.concat(filtered, '")'); + } else { + result = null; + } + return result; + }; + var modifiers_1 = []; + var matchIndex_1 = 0; + var prevHasComma_1 = false; + matches_1.forEach(function (_a, i) { + var type = _a.type, + match = _a.match, + index = _a.index, + typeGradient = _a.typeGradient, + hasComma = _a.hasComma, + offset = _a.offset; + var matchStart = index; + var prefixStart = matchIndex_1; + var matchEnd = matchStart + match.length + offset; + matchIndex_1 = matchEnd; + if (prefixStart !== matchStart) { + if (prevHasComma_1) { + modifiers_1.push(function () { + var betweenValue = value.substring( + prefixStart, + matchStart + ); + if (betweenValue[0] === ",") { + betweenValue = betweenValue.substring(1); + } + return betweenValue; + }); + } else { + modifiers_1.push(function () { + return value.substring(prefixStart, matchStart); + }); + } + } + prevHasComma_1 = hasComma || false; + if (type === "url") { + modifiers_1.push(getURLModifier_1(match)); + } else if (type === "gradient") { + modifiers_1.push( + getGradientModifier_1({ + match: match, + index: index, + typeGradient: typeGradient, + hasComma: hasComma, + offset: offset + }) + ); + } + if (i === matches_1.length - 1) { + modifiers_1.push(function () { + return value.substring(matchEnd); + }); + } + }); + return function (filter) { + var results = modifiers_1 + .filter(Boolean) + .map(function (modify) { + return modify(filter); + }); + if ( + results.some(function (r) { + return r instanceof Promise; + }) + ) { + return Promise.all(results).then(function (asyncResults) { + return asyncResults.filter(Boolean).join(""); + }); + } + var combinedResult = results.join(""); + if (combinedResult.endsWith(", initial")) { + return combinedResult.slice(0, -9); + } + return combinedResult; + }; + } catch (err) { + return null; + } + } + function getShadowModifierWithInfo(value) { + try { + var index_1 = 0; + var colorMatches_1 = getMatches( + /(^|\s)(?!calc)([a-z]+\(.+?\)|#[0-9a-f]+|[a-z]+)(.*?(inset|outset)?($|,))/gi, + value, + 2 + ); + var notParsed_1 = 0; + var modifiers_2 = colorMatches_1.map(function (match, i) { + var prefixIndex = index_1; + var matchIndex = value.indexOf(match, index_1); + var matchEnd = matchIndex + match.length; + index_1 = matchEnd; + var rgb = parseColorWithCache(match); + if (!rgb) { + notParsed_1++; + return function () { + return value.substring(prefixIndex, matchEnd); + }; + } + return function (filter) { + return "" + .concat(value.substring(prefixIndex, matchIndex)) + .concat(modifyShadowColor(rgb, filter)) + .concat( + i === colorMatches_1.length - 1 + ? value.substring(matchEnd) + : "" + ); + }; + }); + return function (filter) { + var modified = modifiers_2 + .map(function (modify) { + return modify(filter); + }) + .join(""); + return { + matchesLength: colorMatches_1.length, + unparseableMatchesLength: notParsed_1, + result: modified + }; + }; + } catch (err) { + return null; + } + } + function getShadowModifier(value) { + var shadowModifier = getShadowModifierWithInfo(value); + if (!shadowModifier) { + return null; + } + return function (theme) { + return shadowModifier(theme).result; + }; + } + function getVariableModifier( + variablesStore, + prop, + value, + rule, + ignoredImgSelectors, + isCancelled + ) { + return variablesStore.getModifierForVariable({ + varName: prop, + sourceValue: value, + rule: rule, + ignoredImgSelectors: ignoredImgSelectors, + isCancelled: isCancelled + }); + } + function getVariableDependantModifier(variablesStore, prop, value) { + return variablesStore.getModifierForVarDependant(prop, value); + } + function cleanModificationCache() { + clearColorModificationCache(); + imageDetailsCache.clear(); + cleanImageProcessingCache(); + awaitingForImageLoading.clear(); + } + + var VAR_TYPE_BGCOLOR = 1 << 0; + var VAR_TYPE_TEXTCOLOR = 1 << 1; + var VAR_TYPE_BORDERCOLOR = 1 << 2; + var VAR_TYPE_BGIMG = 1 << 3; + var VariablesStore = (function () { + function VariablesStore() { + this.varTypes = new Map(); + this.rulesQueue = []; + this.definedVars = new Set(); + this.varRefs = new Map(); + this.unknownColorVars = new Set(); + this.unknownBgVars = new Set(); + this.undefinedVars = new Set(); + this.initialVarTypes = new Map(); + this.changedTypeVars = new Set(); + this.typeChangeSubscriptions = new Map(); + this.unstableVarValues = new Map(); + } + VariablesStore.prototype.clear = function () { + this.varTypes.clear(); + this.rulesQueue.splice(0); + this.definedVars.clear(); + this.varRefs.clear(); + this.unknownColorVars.clear(); + this.unknownBgVars.clear(); + this.undefinedVars.clear(); + this.initialVarTypes.clear(); + this.changedTypeVars.clear(); + this.typeChangeSubscriptions.clear(); + this.unstableVarValues.clear(); + }; + VariablesStore.prototype.isVarType = function (varName, typeNum) { + return ( + this.varTypes.has(varName) && + (this.varTypes.get(varName) & typeNum) > 0 + ); + }; + VariablesStore.prototype.addRulesForMatching = function (rules) { + this.rulesQueue.push(rules); + }; + VariablesStore.prototype.matchVariablesAndDependants = function () { + var _this = this; + this.changedTypeVars.clear(); + this.initialVarTypes = new Map(this.varTypes); + this.collectRootVariables(); + this.collectVariablesAndVarDep(this.rulesQueue); + this.rulesQueue.splice(0); + this.collectRootVarDependants(); + this.varRefs.forEach(function (refs, v) { + refs.forEach(function (r) { + if (_this.varTypes.has(v)) { + _this.resolveVariableType(r, _this.varTypes.get(v)); + } + }); + }); + this.unknownColorVars.forEach(function (v) { + if (_this.unknownBgVars.has(v)) { + _this.unknownColorVars.delete(v); + _this.unknownBgVars.delete(v); + _this.resolveVariableType(v, VAR_TYPE_BGCOLOR); + } else if ( + _this.isVarType( + v, + VAR_TYPE_BGCOLOR | + VAR_TYPE_TEXTCOLOR | + VAR_TYPE_BORDERCOLOR + ) + ) { + _this.unknownColorVars.delete(v); + } else { + _this.undefinedVars.add(v); + } + }); + this.unknownBgVars.forEach(function (v) { + var hasColor = + _this.findVarRef(v, function (ref) { + return ( + _this.unknownColorVars.has(ref) || + _this.isVarType( + ref, + VAR_TYPE_TEXTCOLOR | VAR_TYPE_BORDERCOLOR + ) + ); + }) != null; + if (hasColor) { + _this.itarateVarRefs(v, function (ref) { + _this.resolveVariableType(ref, VAR_TYPE_BGCOLOR); + }); + } else if ( + _this.isVarType(v, VAR_TYPE_BGCOLOR | VAR_TYPE_BGIMG) + ) { + _this.unknownBgVars.delete(v); + } else { + _this.undefinedVars.add(v); + } + }); + this.changedTypeVars.forEach(function (varName) { + if (_this.typeChangeSubscriptions.has(varName)) { + _this.typeChangeSubscriptions + .get(varName) + .forEach(function (callback) { + callback(); + }); + } + }); + this.changedTypeVars.clear(); + }; + VariablesStore.prototype.getModifierForVariable = function (options) { + var _this = this; + return function (theme) { + var varName = options.varName, + sourceValue = options.sourceValue, + rule = options.rule, + ignoredImgSelectors = options.ignoredImgSelectors, + isCancelled = options.isCancelled; + var getDeclarations = function () { + var declarations = []; + var addModifiedValue = function ( + typeNum, + varNameWrapper, + colorModifier + ) { + if (!_this.isVarType(varName, typeNum)) { + return; + } + var property = varNameWrapper(varName); + var modifiedValue; + if (isVarDependant(sourceValue)) { + if (isConstructedColorVar(sourceValue)) { + var value = insertVarValues( + sourceValue, + _this.unstableVarValues + ); + if (!value) { + value = + typeNum === VAR_TYPE_BGCOLOR + ? "#ffffff" + : "#000000"; + } + modifiedValue = colorModifier(value, theme); + } else { + modifiedValue = replaceCSSVariablesNames( + sourceValue, + function (v) { + return varNameWrapper(v); + }, + function (fallback) { + return colorModifier(fallback, theme); + } + ); + } + } else { + modifiedValue = colorModifier(sourceValue, theme); + } + declarations.push({ + property: property, + value: modifiedValue + }); + }; + addModifiedValue( + VAR_TYPE_BGCOLOR, + wrapBgColorVariableName, + tryModifyBgColor + ); + addModifiedValue( + VAR_TYPE_TEXTCOLOR, + wrapTextColorVariableName, + tryModifyTextColor + ); + addModifiedValue( + VAR_TYPE_BORDERCOLOR, + wrapBorderColorVariableName, + tryModifyBorderColor + ); + if (_this.isVarType(varName, VAR_TYPE_BGIMG)) { + var property = wrapBgImgVariableName(varName); + var modifiedValue = sourceValue; + if (isVarDependant(sourceValue)) { + modifiedValue = replaceCSSVariablesNames( + sourceValue, + function (v) { + return wrapBgColorVariableName(v); + }, + function (fallback) { + return tryModifyBgColor(fallback, theme); + } + ); + } + var bgModifier = getBgImageModifier( + modifiedValue, + rule, + ignoredImgSelectors, + isCancelled + ); + modifiedValue = + typeof bgModifier === "function" + ? bgModifier(theme) + : bgModifier; + declarations.push({ + property: property, + value: modifiedValue + }); + } + return declarations; + }; + var callbacks = new Set(); + var addListener = function (onTypeChange) { + var callback = function () { + var decs = getDeclarations(); + onTypeChange(decs); + }; + callbacks.add(callback); + _this.subscribeForVarTypeChange(varName, callback); + }; + var removeListeners = function () { + callbacks.forEach(function (callback) { + _this.unsubscribeFromVariableTypeChanges( + varName, + callback + ); + }); + }; + return { + declarations: getDeclarations(), + onTypeChange: { + addListener: addListener, + removeListeners: removeListeners + } + }; + }; + }; + VariablesStore.prototype.getModifierForVarDependant = function ( + property, + sourceValue + ) { + var _this = this; + if (sourceValue.match(/^\s*(rgb|hsl)a?\(/)) { + var isBg_1 = property.startsWith("background"); + var isText_1 = isTextColorProperty(property); + return function (theme) { + var value = insertVarValues( + sourceValue, + _this.unstableVarValues + ); + if (!value) { + value = isBg_1 ? "#ffffff" : "#000000"; + } + var modifier = isBg_1 + ? tryModifyBgColor + : isText_1 + ? tryModifyTextColor + : tryModifyBorderColor; + return modifier(value, theme); + }; + } + if (property === "background-color") { + return function (theme) { + return replaceCSSVariablesNames( + sourceValue, + function (v) { + return wrapBgColorVariableName(v); + }, + function (fallback) { + return tryModifyBgColor(fallback, theme); + } + ); + }; + } + if (isTextColorProperty(property)) { + return function (theme) { + return replaceCSSVariablesNames( + sourceValue, + function (v) { + return wrapTextColorVariableName(v); + }, + function (fallback) { + return tryModifyTextColor(fallback, theme); + } + ); + }; + } + if ( + property === "background" || + property === "background-image" || + property === "box-shadow" + ) { + return function (theme) { + var unknownVars = new Set(); + var modify = function () { + var variableReplaced = replaceCSSVariablesNames( + sourceValue, + function (v) { + if (_this.isVarType(v, VAR_TYPE_BGCOLOR)) { + return wrapBgColorVariableName(v); + } + if (_this.isVarType(v, VAR_TYPE_BGIMG)) { + return wrapBgImgVariableName(v); + } + unknownVars.add(v); + return v; + }, + function (fallback) { + return tryModifyBgColor(fallback, theme); + } + ); + if (property === "box-shadow") { + var shadowModifier = + getShadowModifierWithInfo(variableReplaced); + var modifiedShadow = shadowModifier(theme); + if ( + modifiedShadow.unparseableMatchesLength !== + modifiedShadow.matchesLength + ) { + return modifiedShadow.result; + } + } + return variableReplaced; + }; + var modified = modify(); + if (unknownVars.size > 0) { + return new Promise(function (resolve) { + var firstUnknownVar = unknownVars + .values() + .next().value; + var callback = function () { + _this.unsubscribeFromVariableTypeChanges( + firstUnknownVar, + callback + ); + var newValue = modify(); + resolve(newValue); + }; + _this.subscribeForVarTypeChange( + firstUnknownVar, + callback + ); + }); + } + return modified; + }; + } + if ( + property.startsWith("border") || + property.startsWith("outline") + ) { + return function (theme) { + return replaceCSSVariablesNames( + sourceValue, + function (v) { + return wrapBorderColorVariableName(v); + }, + function (fallback) { + return tryModifyBorderColor(fallback, theme); + } + ); + }; + } + return null; + }; + VariablesStore.prototype.subscribeForVarTypeChange = function ( + varName, + callback + ) { + if (!this.typeChangeSubscriptions.has(varName)) { + this.typeChangeSubscriptions.set(varName, new Set()); + } + var rootStore = this.typeChangeSubscriptions.get(varName); + if (!rootStore.has(callback)) { + rootStore.add(callback); + } + }; + VariablesStore.prototype.unsubscribeFromVariableTypeChanges = function ( + varName, + callback + ) { + if (this.typeChangeSubscriptions.has(varName)) { + this.typeChangeSubscriptions.get(varName).delete(callback); + } + }; + VariablesStore.prototype.collectVariablesAndVarDep = function ( + ruleList + ) { + var _this = this; + ruleList.forEach(function (rules) { + iterateCSSRules(rules, function (rule) { + rule.style && + iterateCSSDeclarations( + rule.style, + function (property, value) { + if (isVariable(property)) { + _this.inspectVariable(property, value); + } + if (isVarDependant(value)) { + _this.inspectVarDependant(property, value); + } + } + ); + }); + }); + }; + VariablesStore.prototype.collectRootVariables = function () { + var _this = this; + iterateCSSDeclarations( + document.documentElement.style, + function (property, value) { + if (isVariable(property)) { + _this.inspectVariable(property, value); + } + } + ); + }; + VariablesStore.prototype.inspectVariable = function (varName, value) { + this.unstableVarValues.set(varName, value); + if (isVarDependant(value) && isConstructedColorVar(value)) { + this.unknownColorVars.add(varName); + this.definedVars.add(varName); + } + if (this.definedVars.has(varName)) { + return; + } + this.definedVars.add(varName); + var color = parseColorWithCache(value); + if (color) { + this.unknownColorVars.add(varName); + } else if ( + value.includes("url(") || + value.includes("linear-gradient(") || + value.includes("radial-gradient(") + ) { + this.resolveVariableType(varName, VAR_TYPE_BGIMG); + } + }; + VariablesStore.prototype.resolveVariableType = function ( + varName, + typeNum + ) { + var initialType = this.initialVarTypes.get(varName) || 0; + var currentType = this.varTypes.get(varName) || 0; + var newType = currentType | typeNum; + this.varTypes.set(varName, newType); + if (newType !== initialType || this.undefinedVars.has(varName)) { + this.changedTypeVars.add(varName); + this.undefinedVars.delete(varName); + } + this.unknownColorVars.delete(varName); + this.unknownBgVars.delete(varName); + }; + VariablesStore.prototype.collectRootVarDependants = function () { + var _this = this; + iterateCSSDeclarations( + document.documentElement.style, + function (property, value) { + if (isVarDependant(value)) { + _this.inspectVarDependant(property, value); + } + } + ); + }; + VariablesStore.prototype.inspectVarDependant = function ( + property, + value + ) { + var _this = this; + if (isVariable(property)) { + this.iterateVarDeps(value, function (ref) { + if (!_this.varRefs.has(property)) { + _this.varRefs.set(property, new Set()); + } + _this.varRefs.get(property).add(ref); + }); + } else if ( + property === "background-color" || + property === "box-shadow" + ) { + this.iterateVarDeps(value, function (v) { + return _this.resolveVariableType(v, VAR_TYPE_BGCOLOR); + }); + } else if (isTextColorProperty(property)) { + this.iterateVarDeps(value, function (v) { + return _this.resolveVariableType(v, VAR_TYPE_TEXTCOLOR); + }); + } else if ( + property.startsWith("border") || + property.startsWith("outline") + ) { + this.iterateVarDeps(value, function (v) { + return _this.resolveVariableType(v, VAR_TYPE_BORDERCOLOR); + }); + } else if ( + property === "background" || + property === "background-image" + ) { + this.iterateVarDeps(value, function (v) { + if (_this.isVarType(v, VAR_TYPE_BGCOLOR | VAR_TYPE_BGIMG)) { + return; + } + var isBgColor = + _this.findVarRef(v, function (ref) { + return ( + _this.unknownColorVars.has(ref) || + _this.isVarType( + ref, + VAR_TYPE_TEXTCOLOR | VAR_TYPE_BORDERCOLOR + ) + ); + }) != null; + _this.itarateVarRefs(v, function (ref) { + if (isBgColor) { + _this.resolveVariableType(ref, VAR_TYPE_BGCOLOR); + } else { + _this.unknownBgVars.add(ref); + } + }); + }); + } + }; + VariablesStore.prototype.iterateVarDeps = function (value, iterator) { + var varDeps = new Set(); + iterateVarDependencies(value, function (v) { + return varDeps.add(v); + }); + varDeps.forEach(function (v) { + return iterator(v); + }); + }; + VariablesStore.prototype.findVarRef = function ( + varName, + iterator, + stack + ) { + var e_1, _a; + if (stack === void 0) { + stack = new Set(); + } + if (stack.has(varName)) { + return null; + } + stack.add(varName); + var result = iterator(varName); + if (result) { + return varName; + } + var refs = this.varRefs.get(varName); + if (!refs || refs.size === 0) { + return null; + } + try { + for ( + var refs_1 = __values(refs), refs_1_1 = refs_1.next(); + !refs_1_1.done; + refs_1_1 = refs_1.next() + ) { + var ref = refs_1_1.value; + var found = this.findVarRef(ref, iterator, stack); + if (found) { + return found; + } + } + } catch (e_1_1) { + e_1 = {error: e_1_1}; + } finally { + try { + if (refs_1_1 && !refs_1_1.done && (_a = refs_1.return)) + _a.call(refs_1); + } finally { + if (e_1) throw e_1.error; + } + } + return null; + }; + VariablesStore.prototype.itarateVarRefs = function (varName, iterator) { + this.findVarRef(varName, function (ref) { + iterator(ref); + return false; + }); + }; + VariablesStore.prototype.setOnRootVariableChange = function (callback) { + this.onRootVariableDefined = callback; + }; + VariablesStore.prototype.putRootVars = function (styleElement, theme) { + var e_2, _a; + var _this = this; + var sheet = styleElement.sheet; + if (sheet.cssRules.length > 0) { + sheet.deleteRule(0); + } + var declarations = new Map(); + iterateCSSDeclarations( + document.documentElement.style, + function (property, value) { + if (isVariable(property)) { + if (_this.isVarType(property, VAR_TYPE_BGCOLOR)) { + declarations.set( + wrapBgColorVariableName(property), + tryModifyBgColor(value, theme) + ); + } + if (_this.isVarType(property, VAR_TYPE_TEXTCOLOR)) { + declarations.set( + wrapTextColorVariableName(property), + tryModifyTextColor(value, theme) + ); + } + if (_this.isVarType(property, VAR_TYPE_BORDERCOLOR)) { + declarations.set( + wrapBorderColorVariableName(property), + tryModifyBorderColor(value, theme) + ); + } + _this.subscribeForVarTypeChange( + property, + _this.onRootVariableDefined + ); + } + } + ); + var cssLines = []; + cssLines.push(":root {"); + try { + for ( + var declarations_1 = __values(declarations), + declarations_1_1 = declarations_1.next(); + !declarations_1_1.done; + declarations_1_1 = declarations_1.next() + ) { + var _b = __read(declarations_1_1.value, 2), + property = _b[0], + value = _b[1]; + cssLines.push( + " ".concat(property, ": ").concat(value, ";") + ); + } + } catch (e_2_1) { + e_2 = {error: e_2_1}; + } finally { + try { + if ( + declarations_1_1 && + !declarations_1_1.done && + (_a = declarations_1.return) + ) + _a.call(declarations_1); + } finally { + if (e_2) throw e_2.error; + } + } + cssLines.push("}"); + var cssText = cssLines.join("\n"); + sheet.insertRule(cssText); + }; + return VariablesStore; + })(); + var variablesStore = new VariablesStore(); + function getVariableRange(input, searchStart) { + if (searchStart === void 0) { + searchStart = 0; + } + var start = input.indexOf("var(", searchStart); + if (start >= 0) { + var range = getParenthesesRange(input, start + 3); + if (range) { + return {start: start, end: range.end}; + } + return null; + } + } + function getVariablesMatches(input) { + var ranges = []; + var i = 0; + var range; + while ((range = getVariableRange(input, i))) { + var start = range.start, + end = range.end; + ranges.push({ + start: start, + end: end, + value: input.substring(start, end) + }); + i = range.end + 1; + } + return ranges; + } + function replaceVariablesMatches(input, replacer) { + var matches = getVariablesMatches(input); + var matchesCount = matches.length; + if (matchesCount === 0) { + return input; + } + var inputLength = input.length; + var replacements = matches.map(function (m) { + return replacer(m.value); + }); + var parts = []; + parts.push(input.substring(0, matches[0].start)); + for (var i = 0; i < matchesCount; i++) { + parts.push(replacements[i]); + var start = matches[i].end; + var end = i < matchesCount - 1 ? matches[i + 1].start : inputLength; + parts.push(input.substring(start, end)); + } + return parts.join(""); + } + function getVariableNameAndFallback(match) { + var commaIndex = match.indexOf(","); + var name; + var fallback; + if (commaIndex >= 0) { + name = match.substring(4, commaIndex).trim(); + fallback = match.substring(commaIndex + 1, match.length - 1).trim(); + } else { + name = match.substring(4, match.length - 1).trim(); + fallback = ""; + } + return {name: name, fallback: fallback}; + } + function replaceCSSVariablesNames(value, nameReplacer, fallbackReplacer) { + var matchReplacer = function (match) { + var _a = getVariableNameAndFallback(match), + name = _a.name, + fallback = _a.fallback; + var newName = nameReplacer(name); + if (!fallback) { + return "var(".concat(newName, ")"); + } + var newFallback; + if (isVarDependant(fallback)) { + newFallback = replaceCSSVariablesNames( + fallback, + nameReplacer, + fallbackReplacer + ); + } else if (fallbackReplacer) { + newFallback = fallbackReplacer(fallback); + } else { + newFallback = fallback; + } + return "var(".concat(newName, ", ").concat(newFallback, ")"); + }; + return replaceVariablesMatches(value, matchReplacer); + } + function iterateVarDependencies(value, iterator) { + replaceCSSVariablesNames(value, function (varName) { + iterator(varName); + return varName; + }); + } + function wrapBgColorVariableName(name) { + return "--darkreader-bg".concat(name); + } + function wrapTextColorVariableName(name) { + return "--darkreader-text".concat(name); + } + function wrapBorderColorVariableName(name) { + return "--darkreader-border".concat(name); + } + function wrapBgImgVariableName(name) { + return "--darkreader-bgimg".concat(name); + } + function isVariable(property) { + return property.startsWith("--"); + } + function isVarDependant(value) { + return value.includes("var("); + } + function isConstructedColorVar(value) { + return value.match(/^\s*(rgb|hsl)a?\(/); + } + function isTextColorProperty(property) { + return ( + property === "color" || + property === "caret-color" || + property === "-webkit-text-fill-color" + ); + } + var rawValueRegex = /^\d{1,3}, ?\d{1,3}, ?\d{1,3}$/; + function parseRawValue(color) { + if (rawValueRegex.test(color)) { + var splitted = color.split(","); + var resultInRGB_1 = "rgb("; + splitted.forEach(function (number) { + resultInRGB_1 += "".concat(number.trim(), ", "); + }); + resultInRGB_1 = resultInRGB_1.substring( + 0, + resultInRGB_1.length - 2 + ); + resultInRGB_1 += ")"; + return {isRaw: true, color: resultInRGB_1}; + } + return {isRaw: false, color: color}; + } + function handleRawValue(color, theme, modifyFunction) { + var _a = parseRawValue(color), + isRaw = _a.isRaw, + newColor = _a.color; + var rgb = parseColorWithCache(newColor); + if (rgb) { + var outputColor = modifyFunction(rgb, theme); + if (isRaw) { + var outputInRGB = parseColorWithCache(outputColor); + return outputInRGB + ? "" + .concat(outputInRGB.r, ", ") + .concat(outputInRGB.g, ", ") + .concat(outputInRGB.b) + : outputColor; + } + return outputColor; + } + return newColor; + } + function tryModifyBgColor(color, theme) { + return handleRawValue(color, theme, modifyBackgroundColor); + } + function tryModifyTextColor(color, theme) { + return handleRawValue(color, theme, modifyForegroundColor); + } + function tryModifyBorderColor(color, theme) { + return handleRawValue(color, theme, modifyBorderColor); + } + function insertVarValues(source, varValues, stack) { + if (stack === void 0) { + stack = new Set(); + } + var containsUnresolvedVar = false; + var matchReplacer = function (match) { + var _a = getVariableNameAndFallback(match), + name = _a.name, + fallback = _a.fallback; + if (stack.has(name)) { + containsUnresolvedVar = true; + return null; + } + stack.add(name); + var varValue = varValues.get(name) || fallback; + var inserted = null; + if (varValue) { + if (isVarDependant(varValue)) { + inserted = insertVarValues(varValue, varValues, stack); + } else { + inserted = varValue; + } + } + if (!inserted) { + containsUnresolvedVar = true; + return null; + } + return inserted; + }; + var replaced = replaceVariablesMatches(source, matchReplacer); + if (containsUnresolvedVar) { + return null; + } + return replaced; + } + + var overrides = { + "background-color": { + customProp: "--darkreader-inline-bgcolor", + cssProp: "background-color", + dataAttr: "data-darkreader-inline-bgcolor" + }, + "background-image": { + customProp: "--darkreader-inline-bgimage", + cssProp: "background-image", + dataAttr: "data-darkreader-inline-bgimage" + }, + "border-color": { + customProp: "--darkreader-inline-border", + cssProp: "border-color", + dataAttr: "data-darkreader-inline-border" + }, + "border-bottom-color": { + customProp: "--darkreader-inline-border-bottom", + cssProp: "border-bottom-color", + dataAttr: "data-darkreader-inline-border-bottom" + }, + "border-left-color": { + customProp: "--darkreader-inline-border-left", + cssProp: "border-left-color", + dataAttr: "data-darkreader-inline-border-left" + }, + "border-right-color": { + customProp: "--darkreader-inline-border-right", + cssProp: "border-right-color", + dataAttr: "data-darkreader-inline-border-right" + }, + "border-top-color": { + customProp: "--darkreader-inline-border-top", + cssProp: "border-top-color", + dataAttr: "data-darkreader-inline-border-top" + }, + "box-shadow": { + customProp: "--darkreader-inline-boxshadow", + cssProp: "box-shadow", + dataAttr: "data-darkreader-inline-boxshadow" + }, + "color": { + customProp: "--darkreader-inline-color", + cssProp: "color", + dataAttr: "data-darkreader-inline-color" + }, + "fill": { + customProp: "--darkreader-inline-fill", + cssProp: "fill", + dataAttr: "data-darkreader-inline-fill" + }, + "stroke": { + customProp: "--darkreader-inline-stroke", + cssProp: "stroke", + dataAttr: "data-darkreader-inline-stroke" + }, + "outline-color": { + customProp: "--darkreader-inline-outline", + cssProp: "outline-color", + dataAttr: "data-darkreader-inline-outline" + }, + "stop-color": { + customProp: "--darkreader-inline-stopcolor", + cssProp: "stop-color", + dataAttr: "data-darkreader-inline-stopcolor" + } + }; + var overridesList = Object.values(overrides); + var normalizedPropList = {}; + overridesList.forEach(function (_a) { + var cssProp = _a.cssProp, + customProp = _a.customProp; + return (normalizedPropList[customProp] = cssProp); + }); + var INLINE_STYLE_ATTRS = [ + "style", + "fill", + "stop-color", + "stroke", + "bgcolor", + "color" + ]; + var INLINE_STYLE_SELECTOR = INLINE_STYLE_ATTRS.map(function (attr) { + return "[".concat(attr, "]"); + }).join(", "); + function getInlineOverrideStyle() { + return overridesList + .map(function (_a) { + var dataAttr = _a.dataAttr, + customProp = _a.customProp, + cssProp = _a.cssProp; + return [ + "[".concat(dataAttr, "] {"), + " " + .concat(cssProp, ": var(") + .concat(customProp, ") !important;"), + "}" + ].join("\n"); + }) + .join("\n"); + } + function getInlineStyleElements(root) { + var results = []; + if (root instanceof Element && root.matches(INLINE_STYLE_SELECTOR)) { + results.push(root); + } + if ( + root instanceof Element || + (isShadowDomSupported && root instanceof ShadowRoot) || + root instanceof Document + ) { + push(results, root.querySelectorAll(INLINE_STYLE_SELECTOR)); + } + return results; + } + var treeObservers = new Map(); + var attrObservers = new Map(); + function watchForInlineStyles(elementStyleDidChange, shadowRootDiscovered) { + deepWatchForInlineStyles( + document, + elementStyleDidChange, + shadowRootDiscovered + ); + iterateShadowHosts(document.documentElement, function (host) { + deepWatchForInlineStyles( + host.shadowRoot, + elementStyleDidChange, + shadowRootDiscovered + ); + }); + } + function deepWatchForInlineStyles( + root, + elementStyleDidChange, + shadowRootDiscovered + ) { + if (treeObservers.has(root)) { + treeObservers.get(root).disconnect(); + attrObservers.get(root).disconnect(); + } + var discoveredNodes = new WeakSet(); + function discoverNodes(node) { + getInlineStyleElements(node).forEach(function (el) { + if (discoveredNodes.has(el)) { + return; + } + discoveredNodes.add(el); + elementStyleDidChange(el); + }); + iterateShadowHosts(node, function (n) { + if (discoveredNodes.has(node)) { + return; + } + discoveredNodes.add(node); + shadowRootDiscovered(n.shadowRoot); + deepWatchForInlineStyles( + n.shadowRoot, + elementStyleDidChange, + shadowRootDiscovered + ); + }); + } + var treeObserver = createOptimizedTreeObserver(root, { + onMinorMutations: function (_a) { + var additions = _a.additions; + additions.forEach(function (added) { + return discoverNodes(added); + }); + }, + onHugeMutations: function () { + discoverNodes(root); + } + }); + treeObservers.set(root, treeObserver); + var attemptCount = 0; + var start = null; + var ATTEMPTS_INTERVAL = getDuration({seconds: 10}); + var RETRY_TIMEOUT = getDuration({seconds: 2}); + var MAX_ATTEMPTS_COUNT = 50; + var cache = []; + var timeoutId = null; + var handleAttributeMutations = throttle(function (mutations) { + mutations.forEach(function (m) { + if (INLINE_STYLE_ATTRS.includes(m.attributeName)) { + elementStyleDidChange(m.target); + } + }); + }); + var attrObserver = new MutationObserver(function (mutations) { + if (timeoutId) { + cache.push.apply( + cache, + __spreadArray([], __read(mutations), false) + ); + return; + } + attemptCount++; + var now = Date.now(); + if (start == null) { + start = now; + } else if (attemptCount >= MAX_ATTEMPTS_COUNT) { + if (now - start < ATTEMPTS_INTERVAL) { + timeoutId = setTimeout(function () { + start = null; + attemptCount = 0; + timeoutId = null; + var attributeCache = cache; + cache = []; + handleAttributeMutations(attributeCache); + }, RETRY_TIMEOUT); + cache.push.apply( + cache, + __spreadArray([], __read(mutations), false) + ); + return; + } + start = now; + attemptCount = 1; + } + handleAttributeMutations(mutations); + }); + attrObserver.observe(root, { + attributes: true, + attributeFilter: INLINE_STYLE_ATTRS.concat( + overridesList.map(function (_a) { + var dataAttr = _a.dataAttr; + return dataAttr; + }) + ), + subtree: true + }); + attrObservers.set(root, attrObserver); + } + function stopWatchingForInlineStyles() { + treeObservers.forEach(function (o) { + return o.disconnect(); + }); + attrObservers.forEach(function (o) { + return o.disconnect(); + }); + treeObservers.clear(); + attrObservers.clear(); + } + var inlineStyleCache = new WeakMap(); + var filterProps = ["brightness", "contrast", "grayscale", "sepia", "mode"]; + function getInlineStyleCacheKey(el, theme) { + return INLINE_STYLE_ATTRS.map(function (attr) { + return "".concat(attr, '="').concat(el.getAttribute(attr), '"'); + }) + .concat( + filterProps.map(function (prop) { + return "".concat(prop, '="').concat(theme[prop], '"'); + }) + ) + .join(" "); + } + function shouldIgnoreInlineStyle(element, selectors) { + for (var i = 0, len = selectors.length; i < len; i++) { + var ingnoredSelector = selectors[i]; + if (element.matches(ingnoredSelector)) { + return true; + } + } + return false; + } + function overrideInlineStyle( + element, + theme, + ignoreInlineSelectors, + ignoreImageSelectors + ) { + var cacheKey = getInlineStyleCacheKey(element, theme); + if (cacheKey === inlineStyleCache.get(element)) { + return; + } + var unsetProps = new Set(Object.keys(overrides)); + function setCustomProp(targetCSSProp, modifierCSSProp, cssVal) { + var isPropertyVariable = targetCSSProp.startsWith("--"); + var _a = isPropertyVariable ? {} : overrides[targetCSSProp], + customProp = _a.customProp, + dataAttr = _a.dataAttr; + var mod = getModifiableCSSDeclaration( + modifierCSSProp, + cssVal, + {style: element.style}, + variablesStore, + ignoreImageSelectors, + null + ); + if (!mod) { + return; + } + var value = mod.value; + if (typeof value === "function") { + value = value(theme); + } + if (isPropertyVariable && typeof value === "object") { + var typedValue = value; + typedValue.declarations.forEach(function (_a) { + var property = _a.property, + value = _a.value; + !(value instanceof Promise) && + element.style.setProperty(property, value); + }); + } else { + element.style.setProperty(customProp, value); + if (!element.hasAttribute(dataAttr)) { + element.setAttribute(dataAttr, ""); + } + unsetProps.delete(targetCSSProp); + } + } + if (ignoreInlineSelectors.length > 0) { + if (shouldIgnoreInlineStyle(element, ignoreInlineSelectors)) { + unsetProps.forEach(function (cssProp) { + element.removeAttribute(overrides[cssProp].dataAttr); + }); + return; + } + } + if (element.hasAttribute("bgcolor")) { + var value = element.getAttribute("bgcolor"); + if ( + value.match(/^[0-9a-f]{3}$/i) || + value.match(/^[0-9a-f]{6}$/i) + ) { + value = "#".concat(value); + } + setCustomProp("background-color", "background-color", value); + } + if (element.hasAttribute("color") && element.rel !== "mask-icon") { + var value = element.getAttribute("color"); + if ( + value.match(/^[0-9a-f]{3}$/i) || + value.match(/^[0-9a-f]{6}$/i) + ) { + value = "#".concat(value); + } + setCustomProp("color", "color", value); + } + if (element instanceof SVGElement) { + if (element.hasAttribute("fill")) { + var SMALL_SVG_LIMIT_1 = 32; + var value_1 = element.getAttribute("fill"); + if (value_1 !== "none") { + if (!(element instanceof SVGTextElement)) { + var handleSVGElement = function () { + var _a = element.getBoundingClientRect(), + width = _a.width, + height = _a.height; + var isBg = + width > SMALL_SVG_LIMIT_1 || + height > SMALL_SVG_LIMIT_1; + setCustomProp( + "fill", + isBg ? "background-color" : "color", + value_1 + ); + }; + if (isReadyStateComplete()) { + handleSVGElement(); + } else { + addReadyStateCompleteListener(handleSVGElement); + } + } else { + setCustomProp("fill", "color", value_1); + } + } + } + if (element.hasAttribute("stop-color")) { + setCustomProp( + "stop-color", + "background-color", + element.getAttribute("stop-color") + ); + } + } + if (element.hasAttribute("stroke")) { + var value = element.getAttribute("stroke"); + setCustomProp( + "stroke", + element instanceof SVGLineElement || + element instanceof SVGTextElement + ? "border-color" + : "color", + value + ); + } + element.style && + iterateCSSDeclarations(element.style, function (property, value) { + if (property === "background-image" && value.includes("url")) { + return; + } + if ( + overrides.hasOwnProperty(property) || + (property.startsWith("--") && !normalizedPropList[property]) + ) { + setCustomProp(property, property, value); + } else { + var overridenProp = normalizedPropList[property]; + if ( + overridenProp && + !element.style.getPropertyValue(overridenProp) && + !element.hasAttribute(overridenProp) + ) { + if ( + overridenProp === "background-color" && + element.hasAttribute("bgcolor") + ) { + return; + } + element.style.setProperty(property, ""); + } + } + }); + if ( + element.style && + element instanceof SVGTextElement && + element.style.fill + ) { + setCustomProp( + "fill", + "color", + element.style.getPropertyValue("fill") + ); + } + forEach(unsetProps, function (cssProp) { + element.removeAttribute(overrides[cssProp].dataAttr); + }); + inlineStyleCache.set(element, getInlineStyleCacheKey(element, theme)); + } + + var metaThemeColorName = "theme-color"; + var metaThemeColorSelector = 'meta[name="'.concat(metaThemeColorName, '"]'); + var srcMetaThemeColor = null; + var observer = null; + function changeMetaThemeColor(meta, theme) { + srcMetaThemeColor = srcMetaThemeColor || meta.content; + var color = parseColorWithCache(srcMetaThemeColor); + if (!color) { + return; + } + meta.content = modifyBackgroundColor(color, theme); + } + function changeMetaThemeColorWhenAvailable(theme) { + var meta = document.querySelector(metaThemeColorSelector); + if (meta) { + changeMetaThemeColor(meta, theme); + } else { + if (observer) { + observer.disconnect(); + } + observer = new MutationObserver(function (mutations) { + loop: for (var i = 0; i < mutations.length; i++) { + var addedNodes = mutations[i].addedNodes; + for (var j = 0; j < addedNodes.length; j++) { + var node = addedNodes[j]; + if ( + node instanceof HTMLMetaElement && + node.name === metaThemeColorName + ) { + observer.disconnect(); + observer = null; + changeMetaThemeColor(node, theme); + break loop; + } + } + } + }); + observer.observe(document.head, {childList: true}); + } + } + function restoreMetaThemeColor() { + if (observer) { + observer.disconnect(); + observer = null; + } + var meta = document.querySelector(metaThemeColorSelector); + if (meta && srcMetaThemeColor) { + meta.content = srcMetaThemeColor; + } + } + + var themeCacheKeys = [ + "mode", + "brightness", + "contrast", + "grayscale", + "sepia", + "darkSchemeBackgroundColor", + "darkSchemeTextColor", + "lightSchemeBackgroundColor", + "lightSchemeTextColor" + ]; + function getThemeKey(theme) { + var resultKey = ""; + themeCacheKeys.forEach(function (key) { + resultKey += "".concat(key, ":").concat(theme[key], ";"); + }); + return resultKey; + } + var asyncQueue = createAsyncTasksQueue(); + function createStyleSheetModifier() { + var renderId = 0; + var rulesTextCache = new Set(); + var rulesModCache = new Map(); + var varTypeChangeCleaners = new Set(); + var prevFilterKey = null; + var hasNonLoadedLink = false; + var wasRebuilt = false; + function shouldRebuildStyle() { + return hasNonLoadedLink && !wasRebuilt; + } + function modifySheet(options) { + var rules = options.sourceCSSRules; + var theme = options.theme, + ignoreImageAnalysis = options.ignoreImageAnalysis, + force = options.force, + prepareSheet = options.prepareSheet, + isAsyncCancelled = options.isAsyncCancelled; + var rulesChanged = rulesModCache.size === 0; + var notFoundCacheKeys = new Set(rulesModCache.keys()); + var themeKey = getThemeKey(theme); + var themeChanged = themeKey !== prevFilterKey; + if (hasNonLoadedLink) { + wasRebuilt = true; + } + var modRules = []; + iterateCSSRules( + rules, + function (rule) { + var cssText = rule.cssText; + var textDiffersFromPrev = false; + notFoundCacheKeys.delete(cssText); + if (rule.parentRule instanceof CSSMediaRule) { + cssText += ";".concat(rule.parentRule.media.mediaText); + } + if (!rulesTextCache.has(cssText)) { + rulesTextCache.add(cssText); + textDiffersFromPrev = true; + } + if (textDiffersFromPrev) { + rulesChanged = true; + } else { + modRules.push(rulesModCache.get(cssText)); + return; + } + var modDecs = []; + rule.style && + iterateCSSDeclarations( + rule.style, + function (property, value) { + var mod = getModifiableCSSDeclaration( + property, + value, + rule, + variablesStore, + ignoreImageAnalysis, + isAsyncCancelled + ); + if (mod) { + modDecs.push(mod); + } + } + ); + var modRule = null; + if (modDecs.length > 0) { + var parentRule = rule.parentRule; + modRule = { + selector: rule.selectorText, + declarations: modDecs, + parentRule: parentRule + }; + modRules.push(modRule); + } + rulesModCache.set(cssText, modRule); + }, + function () { + hasNonLoadedLink = true; + } + ); + notFoundCacheKeys.forEach(function (key) { + rulesTextCache.delete(key); + rulesModCache.delete(key); + }); + prevFilterKey = themeKey; + if (!force && !rulesChanged && !themeChanged) { + return; + } + renderId++; + function setRule(target, index, rule) { + var selector = rule.selector, + declarations = rule.declarations; + var getDeclarationText = function (dec) { + var property = dec.property, + value = dec.value, + important = dec.important, + sourceValue = dec.sourceValue; + return "" + .concat(property, ": ") + .concat(value == null ? sourceValue : value) + .concat(important ? " !important" : "", ";"); + }; + var cssRulesText = ""; + declarations.forEach(function (declarations) { + cssRulesText += "".concat( + getDeclarationText(declarations), + " " + ); + }); + var ruleText = "" + .concat(selector, " { ") + .concat(cssRulesText, " }"); + target.insertRule(ruleText, index); + } + var asyncDeclarations = new Map(); + var varDeclarations = new Map(); + var asyncDeclarationCounter = 0; + var varDeclarationCounter = 0; + var rootReadyGroup = {rule: null, rules: [], isGroup: true}; + var groupRefs = new WeakMap(); + function getGroup(rule) { + if (rule == null) { + return rootReadyGroup; + } + if (groupRefs.has(rule)) { + return groupRefs.get(rule); + } + var group = {rule: rule, rules: [], isGroup: true}; + groupRefs.set(rule, group); + var parentGroup = getGroup(rule.parentRule); + parentGroup.rules.push(group); + return group; + } + varTypeChangeCleaners.forEach(function (clear) { + return clear(); + }); + varTypeChangeCleaners.clear(); + modRules + .filter(function (r) { + return r; + }) + .forEach(function (_a) { + var selector = _a.selector, + declarations = _a.declarations, + parentRule = _a.parentRule; + var group = getGroup(parentRule); + var readyStyleRule = { + selector: selector, + declarations: [], + isGroup: false + }; + var readyDeclarations = readyStyleRule.declarations; + group.rules.push(readyStyleRule); + function handleAsyncDeclaration( + property, + modified, + important, + sourceValue + ) { + var asyncKey = ++asyncDeclarationCounter; + var asyncDeclaration = { + property: property, + value: null, + important: important, + asyncKey: asyncKey, + sourceValue: sourceValue + }; + readyDeclarations.push(asyncDeclaration); + var currentRenderId = renderId; + modified.then(function (asyncValue) { + if ( + !asyncValue || + isAsyncCancelled() || + currentRenderId !== renderId + ) { + return; + } + asyncDeclaration.value = asyncValue; + asyncQueue.add(function () { + if ( + isAsyncCancelled() || + currentRenderId !== renderId + ) { + return; + } + rebuildAsyncRule(asyncKey); + }); + }); + } + function handleVarDeclarations( + property, + modified, + important, + sourceValue + ) { + var _a = modified, + varDecs = _a.declarations, + onTypeChange = _a.onTypeChange; + var varKey = ++varDeclarationCounter; + var currentRenderId = renderId; + var initialIndex = readyDeclarations.length; + var oldDecs = []; + if (varDecs.length === 0) { + var tempDec = { + property: property, + value: sourceValue, + important: important, + sourceValue: sourceValue, + varKey: varKey + }; + readyDeclarations.push(tempDec); + oldDecs = [tempDec]; + } + varDecs.forEach(function (mod) { + if (mod.value instanceof Promise) { + handleAsyncDeclaration( + mod.property, + mod.value, + important, + sourceValue + ); + } else { + var readyDec = { + property: mod.property, + value: mod.value, + important: important, + sourceValue: sourceValue, + varKey: varKey + }; + readyDeclarations.push(readyDec); + oldDecs.push(readyDec); + } + }); + onTypeChange.addListener(function (newDecs) { + if ( + isAsyncCancelled() || + currentRenderId !== renderId + ) { + return; + } + var readyVarDecs = newDecs.map(function (mod) { + return { + property: mod.property, + value: mod.value, + important: important, + sourceValue: sourceValue, + varKey: varKey + }; + }); + var index = readyDeclarations.indexOf( + oldDecs[0], + initialIndex + ); + readyDeclarations.splice.apply( + readyDeclarations, + __spreadArray( + [index, oldDecs.length], + __read(readyVarDecs), + false + ) + ); + oldDecs = readyVarDecs; + rebuildVarRule(varKey); + }); + varTypeChangeCleaners.add(function () { + return onTypeChange.removeListeners(); + }); + } + declarations.forEach(function (_a) { + var property = _a.property, + value = _a.value, + important = _a.important, + sourceValue = _a.sourceValue; + if (typeof value === "function") { + var modified = value(theme); + if (modified instanceof Promise) { + handleAsyncDeclaration( + property, + modified, + important, + sourceValue + ); + } else if (property.startsWith("--")) { + handleVarDeclarations( + property, + modified, + important, + sourceValue + ); + } else { + readyDeclarations.push({ + property: property, + value: modified, + important: important, + sourceValue: sourceValue + }); + } + } else { + readyDeclarations.push({ + property: property, + value: value, + important: important, + sourceValue: sourceValue + }); + } + }); + }); + var sheet = prepareSheet(); + function buildStyleSheet() { + function createTarget(group, parent) { + var rule = group.rule; + if (rule instanceof CSSMediaRule) { + var media = rule.media; + var index = parent.cssRules.length; + parent.insertRule( + "@media ".concat(media.mediaText, " {}"), + index + ); + return parent.cssRules[index]; + } + return parent; + } + function iterateReadyRules(group, target, styleIterator) { + group.rules.forEach(function (r) { + if (r.isGroup) { + var t = createTarget(r, target); + iterateReadyRules(r, t, styleIterator); + } else { + styleIterator(r, target); + } + }); + } + iterateReadyRules( + rootReadyGroup, + sheet, + function (rule, target) { + var index = target.cssRules.length; + rule.declarations.forEach(function (_a) { + var asyncKey = _a.asyncKey, + varKey = _a.varKey; + if (asyncKey != null) { + asyncDeclarations.set(asyncKey, { + rule: rule, + target: target, + index: index + }); + } + if (varKey != null) { + varDeclarations.set(varKey, { + rule: rule, + target: target, + index: index + }); + } + }); + setRule(target, index, rule); + } + ); + } + function rebuildAsyncRule(key) { + var _a = asyncDeclarations.get(key), + rule = _a.rule, + target = _a.target, + index = _a.index; + target.deleteRule(index); + setRule(target, index, rule); + asyncDeclarations.delete(key); + } + function rebuildVarRule(key) { + var _a = varDeclarations.get(key), + rule = _a.rule, + target = _a.target, + index = _a.index; + target.deleteRule(index); + setRule(target, index, rule); + } + buildStyleSheet(); + } + return { + modifySheet: modifySheet, + shouldRebuildStyle: shouldRebuildStyle + }; + } + + var STYLE_SELECTOR = 'style, link[rel*="stylesheet" i]:not([disabled])'; + function isFontsGoogleApiStyle(element) { + if (!element.href) { + return false; + } + try { + var elementURL = new URL(element.href); + return elementURL.hostname === "fonts.googleapis.com"; + } catch (err) { + logInfo("Couldn't construct ".concat(element.href, " as URL")); + return false; + } + } + function shouldManageStyle(element) { + return ( + (element instanceof HTMLStyleElement || + element instanceof SVGStyleElement || + (element instanceof HTMLLinkElement && + element.rel && + element.rel.toLowerCase().includes("stylesheet") && + element.href && + !element.disabled && + (isFirefox + ? !element.href.startsWith("moz-extension://") + : true) && + !isFontsGoogleApiStyle(element))) && + !element.classList.contains("darkreader") && + element.media.toLowerCase() !== "print" && + !element.classList.contains("stylus") + ); + } + function getManageableStyles(node, results, deep) { + if (results === void 0) { + results = []; + } + if (deep === void 0) { + deep = true; + } + if (shouldManageStyle(node)) { + results.push(node); + } else if ( + node instanceof Element || + (isShadowDomSupported && node instanceof ShadowRoot) || + node === document + ) { + forEach(node.querySelectorAll(STYLE_SELECTOR), function (style) { + return getManageableStyles(style, results, false); + }); + if (deep) { + iterateShadowHosts(node, function (host) { + return getManageableStyles(host.shadowRoot, results, false); + }); + } + } + return results; + } + var syncStyleSet = new WeakSet(); + var corsStyleSet = new WeakSet(); + var canOptimizeUsingProxy$1 = false; + document.addEventListener( + "__darkreader__inlineScriptsAllowed", + function () { + canOptimizeUsingProxy$1 = true; + } + ); + var loadingLinkCounter = 0; + var rejectorsForLoadingLinks = new Map(); + function cleanLoadingLinks() { + rejectorsForLoadingLinks.clear(); + } + function manageStyle(element, _a) { + var update = _a.update, + loadingStart = _a.loadingStart, + loadingEnd = _a.loadingEnd; + var prevStyles = []; + var next = element; + while ( + (next = next.nextElementSibling) && + next.matches(".darkreader") + ) { + prevStyles.push(next); + } + var corsCopy = + prevStyles.find(function (el) { + return el.matches(".darkreader--cors") && !corsStyleSet.has(el); + }) || null; + var syncStyle = + prevStyles.find(function (el) { + return el.matches(".darkreader--sync") && !syncStyleSet.has(el); + }) || null; + var corsCopyPositionWatcher = null; + var syncStylePositionWatcher = null; + var cancelAsyncOperations = false; + var isOverrideEmpty = true; + var sheetModifier = createStyleSheetModifier(); + var observer = new MutationObserver(function () { + update(); + }); + var observerOptions = { + attributes: true, + childList: true, + subtree: true, + characterData: true + }; + function containsCSSImport() { + return ( + element instanceof HTMLStyleElement && + element.textContent.trim().match(cssImportRegex) + ); + } + function hasImports(cssRules, checkCrossOrigin) { + var result = false; + if (cssRules) { + var rule = void 0; + cssRulesLoop: for ( + var i = 0, len = cssRules.length; + i < len; + i++ + ) { + rule = cssRules[i]; + if (rule.href) { + if (checkCrossOrigin) { + if ( + rule.href.startsWith("http") && + !rule.href.startsWith(location.origin) + ) { + result = true; + break cssRulesLoop; + } + } else { + result = true; + break cssRulesLoop; + } + } + } + } + return result; + } + function getRulesSync() { + if (corsCopy) { + return corsCopy.sheet.cssRules; + } + if (containsCSSImport()) { + return null; + } + var cssRules = safeGetSheetRules(); + if ( + element instanceof HTMLLinkElement && + !isRelativeHrefOnAbsolutePath(element.href) && + hasImports(cssRules, false) + ) { + return null; + } + if (hasImports(cssRules, true)) { + return null; + } + return cssRules; + } + function insertStyle() { + if (corsCopy) { + if (element.nextSibling !== corsCopy) { + element.parentNode.insertBefore( + corsCopy, + element.nextSibling + ); + } + if (corsCopy.nextSibling !== syncStyle) { + element.parentNode.insertBefore( + syncStyle, + corsCopy.nextSibling + ); + } + } else if (element.nextSibling !== syncStyle) { + element.parentNode.insertBefore(syncStyle, element.nextSibling); + } + } + function createSyncStyle() { + syncStyle = + element instanceof SVGStyleElement + ? document.createElementNS( + "http://www.w3.org/2000/svg", + "style" + ) + : document.createElement("style"); + syncStyle.classList.add("darkreader"); + syncStyle.classList.add("darkreader--sync"); + syncStyle.media = "screen"; + if (element.title) { + syncStyle.title = element.title; + } + syncStyleSet.add(syncStyle); + } + var isLoadingRules = false; + var wasLoadingError = false; + var loadingLinkId = ++loadingLinkCounter; + function getRulesAsync() { + return __awaiter(this, void 0, void 0, function () { + var cssText, + cssBasePath, + _a, + cssRules, + accessError, + fullCSSText; + var _b; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + if (!(element instanceof HTMLLinkElement)) + return [3, 7]; + (_a = __read(getRulesOrError(), 2)), + (cssRules = _a[0]), + (accessError = _a[1]); + if ( + !( + (!cssRules && !accessError && !isSafari) || + (isSafari && !element.sheet) || + isStillLoadingError(accessError) + ) + ) + return [3, 5]; + _c.label = 1; + case 1: + _c.trys.push([1, 3, , 4]); + return [4, linkLoading(element, loadingLinkId)]; + case 2: + _c.sent(); + return [3, 4]; + case 3: + _c.sent(); + wasLoadingError = true; + return [3, 4]; + case 4: + if (cancelAsyncOperations) { + return [2, null]; + } + (_b = __read(getRulesOrError(), 2)), + (cssRules = _b[0]), + (accessError = _b[1]); + _c.label = 5; + case 5: + if (cssRules) { + if (!hasImports(cssRules, false)) { + return [2, cssRules]; + } + } + return [4, loadText(element.href)]; + case 6: + cssText = _c.sent(); + cssBasePath = getCSSBaseBath(element.href); + if (cancelAsyncOperations) { + return [2, null]; + } + return [3, 8]; + case 7: + if (containsCSSImport()) { + cssText = element.textContent.trim(); + cssBasePath = getCSSBaseBath(location.href); + } else { + return [2, null]; + } + _c.label = 8; + case 8: + if (!cssText) return [3, 13]; + _c.label = 9; + case 9: + _c.trys.push([9, 11, , 12]); + return [4, replaceCSSImports(cssText, cssBasePath)]; + case 10: + fullCSSText = _c.sent(); + corsCopy = createCORSCopy(element, fullCSSText); + return [3, 12]; + case 11: + _c.sent(); + return [3, 12]; + case 12: + if (corsCopy) { + corsCopyPositionWatcher = watchForNodePosition( + corsCopy, + "prev-sibling" + ); + return [2, corsCopy.sheet.cssRules]; + } + _c.label = 13; + case 13: + return [2, null]; + } + }); + }); + } + function details(options) { + var rules = getRulesSync(); + if (!rules) { + if (options.secondRound) { + return null; + } + if (isLoadingRules || wasLoadingError) { + return null; + } + isLoadingRules = true; + loadingStart(); + getRulesAsync() + .then(function (results) { + isLoadingRules = false; + loadingEnd(); + if (results) { + update(); + } + }) + .catch(function (err) { + isLoadingRules = false; + loadingEnd(); + }); + return null; + } + return {rules: rules}; + } + var forceRenderStyle = false; + function render(theme, ignoreImageAnalysis) { + var rules = getRulesSync(); + if (!rules) { + return; + } + cancelAsyncOperations = false; + function removeCSSRulesFromSheet(sheet) { + for (var i = sheet.cssRules.length - 1; i >= 0; i--) { + sheet.deleteRule(i); + } + } + function prepareOverridesSheet() { + if (!syncStyle) { + createSyncStyle(); + } + syncStylePositionWatcher && syncStylePositionWatcher.stop(); + insertStyle(); + if (syncStyle.sheet == null) { + syncStyle.textContent = ""; + } + var sheet = syncStyle.sheet; + removeCSSRulesFromSheet(sheet); + if (syncStylePositionWatcher) { + syncStylePositionWatcher.run(); + } else { + syncStylePositionWatcher = watchForNodePosition( + syncStyle, + "prev-sibling", + function () { + forceRenderStyle = true; + buildOverrides(); + } + ); + } + return syncStyle.sheet; + } + function buildOverrides() { + var force = forceRenderStyle; + forceRenderStyle = false; + sheetModifier.modifySheet({ + prepareSheet: prepareOverridesSheet, + sourceCSSRules: rules, + theme: theme, + ignoreImageAnalysis: ignoreImageAnalysis, + force: force, + isAsyncCancelled: function () { + return cancelAsyncOperations; + } + }); + isOverrideEmpty = syncStyle.sheet.cssRules.length === 0; + if (sheetModifier.shouldRebuildStyle()) { + addReadyStateCompleteListener(function () { + return update(); + }); + } + } + buildOverrides(); + } + function getRulesOrError() { + try { + if (element.sheet == null) { + return [null, null]; + } + return [element.sheet.cssRules, null]; + } catch (err) { + return [null, err]; + } + } + function isStillLoadingError(error) { + return error && error.message && error.message.includes("loading"); + } + function safeGetSheetRules() { + var _a = __read(getRulesOrError(), 2), + cssRules = _a[0], + err = _a[1]; + if (err) { + return null; + } + return cssRules; + } + function watchForSheetChanges() { + watchForSheetChangesUsingProxy(); + if (!(canOptimizeUsingProxy$1 && element.sheet)) { + watchForSheetChangesUsingRAF(); + } + } + var rulesChangeKey = null; + var rulesCheckFrameId = null; + function getRulesChangeKey() { + var rules = safeGetSheetRules(); + return rules ? rules.length : null; + } + function didRulesKeyChange() { + return getRulesChangeKey() !== rulesChangeKey; + } + function watchForSheetChangesUsingRAF() { + rulesChangeKey = getRulesChangeKey(); + stopWatchingForSheetChangesUsingRAF(); + var checkForUpdate = function () { + if (didRulesKeyChange()) { + rulesChangeKey = getRulesChangeKey(); + update(); + } + if (canOptimizeUsingProxy$1 && element.sheet) { + stopWatchingForSheetChangesUsingRAF(); + return; + } + rulesCheckFrameId = requestAnimationFrame(checkForUpdate); + }; + checkForUpdate(); + } + function stopWatchingForSheetChangesUsingRAF() { + cancelAnimationFrame(rulesCheckFrameId); + } + var areSheetChangesPending = false; + function onSheetChange() { + canOptimizeUsingProxy$1 = true; + stopWatchingForSheetChangesUsingRAF(); + if (areSheetChangesPending) { + return; + } + function handleSheetChanges() { + areSheetChangesPending = false; + if (cancelAsyncOperations) { + return; + } + update(); + } + areSheetChangesPending = true; + if (typeof queueMicrotask === "function") { + queueMicrotask(handleSheetChanges); + } else { + requestAnimationFrame(handleSheetChanges); + } + } + function watchForSheetChangesUsingProxy() { + element.addEventListener( + "__darkreader__updateSheet", + onSheetChange + ); + } + function stopWatchingForSheetChangesUsingProxy() { + element.removeEventListener( + "__darkreader__updateSheet", + onSheetChange + ); + } + function stopWatchingForSheetChanges() { + stopWatchingForSheetChangesUsingProxy(); + stopWatchingForSheetChangesUsingRAF(); + } + function pause() { + observer.disconnect(); + cancelAsyncOperations = true; + corsCopyPositionWatcher && corsCopyPositionWatcher.stop(); + syncStylePositionWatcher && syncStylePositionWatcher.stop(); + stopWatchingForSheetChanges(); + } + function destroy() { + pause(); + removeNode(corsCopy); + removeNode(syncStyle); + loadingEnd(); + if (rejectorsForLoadingLinks.has(loadingLinkId)) { + var reject = rejectorsForLoadingLinks.get(loadingLinkId); + rejectorsForLoadingLinks.delete(loadingLinkId); + reject && reject(); + } + } + function watch() { + observer.observe(element, observerOptions); + if (element instanceof HTMLStyleElement) { + watchForSheetChanges(); + } + } + var maxMoveCount = 10; + var moveCount = 0; + function restore() { + if (!syncStyle) { + return; + } + moveCount++; + if (moveCount > maxMoveCount) { + return; + } + insertStyle(); + corsCopyPositionWatcher && corsCopyPositionWatcher.skip(); + syncStylePositionWatcher && syncStylePositionWatcher.skip(); + if (!isOverrideEmpty) { + forceRenderStyle = true; + update(); + } + } + return { + details: details, + render: render, + pause: pause, + destroy: destroy, + watch: watch, + restore: restore + }; + } + function linkLoading(link, loadingId) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [ + 2, + new Promise(function (resolve, reject) { + var cleanUp = function () { + link.removeEventListener("load", onLoad); + link.removeEventListener("error", onError); + rejectorsForLoadingLinks.delete(loadingId); + }; + var onLoad = function () { + cleanUp(); + resolve(); + }; + var onError = function () { + cleanUp(); + reject( + "Linkelement " + .concat(loadingId, " couldn't be loaded. ") + .concat(link.href) + ); + }; + rejectorsForLoadingLinks.set(loadingId, function () { + cleanUp(); + reject(); + }); + link.addEventListener("load", onLoad); + link.addEventListener("error", onError); + if (!link.href) { + onError(); + } + }) + ]; + }); + }); + } + function getCSSImportURL(importDeclaration) { + return getCSSURLValue( + importDeclaration + .substring(7) + .trim() + .replace(/;$/, "") + .replace(/screen$/, "") + ); + } + function loadText(url) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!url.startsWith("data:")) return [3, 3]; + return [4, fetch(url)]; + case 1: + return [4, _a.sent().text()]; + case 2: + return [2, _a.sent()]; + case 3: + return [ + 4, + bgFetch({ + url: url, + responseType: "text", + mimeType: "text/css", + origin: window.location.origin + }) + ]; + case 4: + return [2, _a.sent()]; + } + }); + }); + } + function replaceCSSImports(cssText, basePath, cache) { + if (cache === void 0) { + cache = new Map(); + } + return __awaiter(this, void 0, void 0, function () { + var importMatches, + importMatches_1, + importMatches_1_1, + match, + importURL, + absoluteURL, + importedCSS, + e_1_1; + var e_1, _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + cssText = removeCSSComments(cssText); + cssText = replaceCSSFontFace(cssText); + cssText = replaceCSSRelativeURLsWithAbsolute( + cssText, + basePath + ); + importMatches = getMatches(cssImportRegex, cssText); + _b.label = 1; + case 1: + _b.trys.push([1, 10, 11, 12]); + (importMatches_1 = __values(importMatches)), + (importMatches_1_1 = importMatches_1.next()); + _b.label = 2; + case 2: + if (!!importMatches_1_1.done) return [3, 9]; + match = importMatches_1_1.value; + importURL = getCSSImportURL(match); + absoluteURL = getAbsoluteURL(basePath, importURL); + importedCSS = void 0; + if (!cache.has(absoluteURL)) return [3, 3]; + importedCSS = cache.get(absoluteURL); + return [3, 7]; + case 3: + _b.trys.push([3, 6, , 7]); + return [4, loadText(absoluteURL)]; + case 4: + importedCSS = _b.sent(); + cache.set(absoluteURL, importedCSS); + return [ + 4, + replaceCSSImports( + importedCSS, + getCSSBaseBath(absoluteURL), + cache + ) + ]; + case 5: + importedCSS = _b.sent(); + return [3, 7]; + case 6: + _b.sent(); + importedCSS = ""; + return [3, 7]; + case 7: + cssText = cssText.split(match).join(importedCSS); + _b.label = 8; + case 8: + importMatches_1_1 = importMatches_1.next(); + return [3, 2]; + case 9: + return [3, 12]; + case 10: + e_1_1 = _b.sent(); + e_1 = {error: e_1_1}; + return [3, 12]; + case 11: + try { + if ( + importMatches_1_1 && + !importMatches_1_1.done && + (_a = importMatches_1.return) + ) + _a.call(importMatches_1); + } finally { + if (e_1) throw e_1.error; + } + return [7]; + case 12: + cssText = cssText.trim(); + return [2, cssText]; + } + }); + }); + } + function createCORSCopy(srcElement, cssText) { + if (!cssText) { + return null; + } + var cors = document.createElement("style"); + cors.classList.add("darkreader"); + cors.classList.add("darkreader--cors"); + cors.media = "screen"; + cors.textContent = cssText; + srcElement.parentNode.insertBefore(cors, srcElement.nextSibling); + cors.sheet.disabled = true; + corsStyleSet.add(cors); + return cors; + } + + var observers = []; + var observedRoots; + var undefinedGroups = new Map(); + var elementsDefinitionCallback; + function collectUndefinedElements(root) { + if (!isDefinedSelectorSupported) { + return; + } + forEach(root.querySelectorAll(":not(:defined)"), function (el) { + var tag = el.tagName.toLowerCase(); + if (!tag.includes("-")) { + var extendedTag = el.getAttribute("is"); + if (extendedTag) { + tag = extendedTag; + } else { + return; + } + } + if (!undefinedGroups.has(tag)) { + undefinedGroups.set(tag, new Set()); + customElementsWhenDefined(tag).then(function () { + if (elementsDefinitionCallback) { + var elements = undefinedGroups.get(tag); + undefinedGroups.delete(tag); + elementsDefinitionCallback(Array.from(elements)); + } + }); + } + undefinedGroups.get(tag).add(el); + }); + } + var canOptimizeUsingProxy = false; + document.addEventListener( + "__darkreader__inlineScriptsAllowed", + function () { + canOptimizeUsingProxy = true; + } + ); + var resolvers = new Map(); + function handleIsDefined(e) { + canOptimizeUsingProxy = true; + if (resolvers.has(e.detail.tag)) { + var resolve = resolvers.get(e.detail.tag); + resolve(); + } + } + function customElementsWhenDefined(tag) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [ + 2, + new Promise(function (resolve) { + if ( + window.customElements && + typeof customElements.whenDefined === "function" + ) { + customElements.whenDefined(tag).then(function () { + return resolve(); + }); + } else if (canOptimizeUsingProxy) { + resolvers.set(tag, resolve); + document.dispatchEvent( + new CustomEvent( + "__darkreader__addUndefinedResolver", + {detail: {tag: tag}} + ) + ); + } else { + var checkIfDefined_1 = function () { + var elements = undefinedGroups.get(tag); + if (elements && elements.size > 0) { + if ( + elements + .values() + .next() + .value.matches(":defined") + ) { + resolve(); + } else { + requestAnimationFrame(checkIfDefined_1); + } + } + }; + requestAnimationFrame(checkIfDefined_1); + } + }) + ]; + }); + }); + } + function watchWhenCustomElementsDefined(callback) { + elementsDefinitionCallback = callback; + } + function unsubscribeFromDefineCustomElements() { + elementsDefinitionCallback = null; + undefinedGroups.clear(); + document.removeEventListener( + "__darkreader__isDefined", + handleIsDefined + ); + } + function watchForStyleChanges(currentStyles, update, shadowRootDiscovered) { + stopWatchingForStyleChanges(); + var prevStyles = new Set(currentStyles); + var prevStyleSiblings = new WeakMap(); + var nextStyleSiblings = new WeakMap(); + function saveStylePosition(style) { + prevStyleSiblings.set(style, style.previousElementSibling); + nextStyleSiblings.set(style, style.nextElementSibling); + } + function forgetStylePosition(style) { + prevStyleSiblings.delete(style); + nextStyleSiblings.delete(style); + } + function didStylePositionChange(style) { + return ( + style.previousElementSibling !== prevStyleSiblings.get(style) || + style.nextElementSibling !== nextStyleSiblings.get(style) + ); + } + currentStyles.forEach(saveStylePosition); + function handleStyleOperations(operations) { + var createdStyles = operations.createdStyles, + removedStyles = operations.removedStyles, + movedStyles = operations.movedStyles; + createdStyles.forEach(function (s) { + return saveStylePosition(s); + }); + movedStyles.forEach(function (s) { + return saveStylePosition(s); + }); + removedStyles.forEach(function (s) { + return forgetStylePosition(s); + }); + createdStyles.forEach(function (s) { + return prevStyles.add(s); + }); + removedStyles.forEach(function (s) { + return prevStyles.delete(s); + }); + if ( + createdStyles.size + removedStyles.size + movedStyles.size > + 0 + ) { + update({ + created: Array.from(createdStyles), + removed: Array.from(removedStyles), + moved: Array.from(movedStyles), + updated: [] + }); + } + } + function handleMinorTreeMutations(_a) { + var additions = _a.additions, + moves = _a.moves, + deletions = _a.deletions; + var createdStyles = new Set(); + var removedStyles = new Set(); + var movedStyles = new Set(); + additions.forEach(function (node) { + return getManageableStyles(node).forEach(function (style) { + return createdStyles.add(style); + }); + }); + deletions.forEach(function (node) { + return getManageableStyles(node).forEach(function (style) { + return removedStyles.add(style); + }); + }); + moves.forEach(function (node) { + return getManageableStyles(node).forEach(function (style) { + return movedStyles.add(style); + }); + }); + handleStyleOperations({ + createdStyles: createdStyles, + removedStyles: removedStyles, + movedStyles: movedStyles + }); + additions.forEach(function (n) { + iterateShadowHosts(n, subscribeForShadowRootChanges); + collectUndefinedElements(n); + }); + } + function handleHugeTreeMutations(root) { + var styles = new Set(getManageableStyles(root)); + var createdStyles = new Set(); + var removedStyles = new Set(); + var movedStyles = new Set(); + styles.forEach(function (s) { + if (!prevStyles.has(s)) { + createdStyles.add(s); + } + }); + prevStyles.forEach(function (s) { + if (!styles.has(s)) { + removedStyles.add(s); + } + }); + styles.forEach(function (s) { + if ( + !createdStyles.has(s) && + !removedStyles.has(s) && + didStylePositionChange(s) + ) { + movedStyles.add(s); + } + }); + handleStyleOperations({ + createdStyles: createdStyles, + removedStyles: removedStyles, + movedStyles: movedStyles + }); + iterateShadowHosts(root, subscribeForShadowRootChanges); + collectUndefinedElements(root); + } + function handleAttributeMutations(mutations) { + var updatedStyles = new Set(); + var removedStyles = new Set(); + mutations.forEach(function (m) { + var target = m.target; + if (target.isConnected) { + if (shouldManageStyle(target)) { + updatedStyles.add(target); + } else if ( + target instanceof HTMLLinkElement && + target.disabled + ) { + removedStyles.add(target); + } + } + }); + if (updatedStyles.size + removedStyles.size > 0) { + update({ + updated: Array.from(updatedStyles), + created: [], + removed: Array.from(removedStyles), + moved: [] + }); + } + } + function observe(root) { + var treeObserver = createOptimizedTreeObserver(root, { + onMinorMutations: handleMinorTreeMutations, + onHugeMutations: handleHugeTreeMutations + }); + var attrObserver = new MutationObserver(handleAttributeMutations); + attrObserver.observe(root, { + attributes: true, + attributeFilter: ["rel", "disabled", "media", "href"], + subtree: true + }); + observers.push(treeObserver, attrObserver); + observedRoots.add(root); + } + function subscribeForShadowRootChanges(node) { + var shadowRoot = node.shadowRoot; + if (shadowRoot == null || observedRoots.has(shadowRoot)) { + return; + } + observe(shadowRoot); + shadowRootDiscovered(shadowRoot); + } + observe(document); + iterateShadowHosts( + document.documentElement, + subscribeForShadowRootChanges + ); + watchWhenCustomElementsDefined(function (hosts) { + var newStyles = []; + hosts.forEach(function (host) { + return push(newStyles, getManageableStyles(host.shadowRoot)); + }); + update({created: newStyles, updated: [], removed: [], moved: []}); + hosts.forEach(function (host) { + var shadowRoot = host.shadowRoot; + if (shadowRoot == null) { + return; + } + subscribeForShadowRootChanges(host); + iterateShadowHosts(shadowRoot, subscribeForShadowRootChanges); + collectUndefinedElements(shadowRoot); + }); + }); + document.addEventListener("__darkreader__isDefined", handleIsDefined); + collectUndefinedElements(document); + } + function resetObservers() { + observers.forEach(function (o) { + return o.disconnect(); + }); + observers.splice(0, observers.length); + observedRoots = new WeakSet(); + } + function stopWatchingForStyleChanges() { + resetObservers(); + unsubscribeFromDefineCustomElements(); + } + + function hexify(number) { + return (number < 16 ? "0" : "") + number.toString(16); + } + function generateUID() { + if ("randomUUID" in crypto) { + var uuid = crypto.randomUUID(); + return ( + uuid.substring(0, 8) + + uuid.substring(9, 13) + + uuid.substring(14, 18) + + uuid.substring(19, 23) + + uuid.substring(24) + ); + } + return Array.from(crypto.getRandomValues(new Uint8Array(16))) + .map(function (x) { + return hexify(x); + }) + .join(""); + } + + var adoptedStyleOverrides = new WeakMap(); + var overrideList = new WeakSet(); + function createAdoptedStyleSheetOverride(node) { + var cancelAsyncOperations = false; + function injectSheet(sheet, override) { + var newSheets = __spreadArray( + [], + __read(node.adoptedStyleSheets), + false + ); + var sheetIndex = newSheets.indexOf(sheet); + var existingIndex = newSheets.indexOf(override); + if (sheetIndex === existingIndex - 1) { + return; + } + if (existingIndex >= 0) { + newSheets.splice(existingIndex, 1); + } + newSheets.splice(sheetIndex + 1, 0, override); + node.adoptedStyleSheets = newSheets; + } + function destroy() { + cancelAsyncOperations = true; + var newSheets = __spreadArray( + [], + __read(node.adoptedStyleSheets), + false + ); + node.adoptedStyleSheets.forEach(function (adoptedStyleSheet) { + if (overrideList.has(adoptedStyleSheet)) { + var existingIndex = newSheets.indexOf(adoptedStyleSheet); + if (existingIndex >= 0) { + newSheets.splice(existingIndex, 1); + } + adoptedStyleOverrides.delete(adoptedStyleSheet); + overrideList.delete(adoptedStyleSheet); + } + }); + node.adoptedStyleSheets = newSheets; + } + function render(theme, ignoreImageAnalysis) { + node.adoptedStyleSheets.forEach(function (sheet) { + if (overrideList.has(sheet)) { + return; + } + var rules = sheet.rules; + var override = new CSSStyleSheet(); + function prepareOverridesSheet() { + for (var i = override.cssRules.length - 1; i >= 0; i--) { + override.deleteRule(i); + } + injectSheet(sheet, override); + adoptedStyleOverrides.set(sheet, override); + overrideList.add(override); + return override; + } + var sheetModifier = createStyleSheetModifier(); + sheetModifier.modifySheet({ + prepareSheet: prepareOverridesSheet, + sourceCSSRules: rules, + theme: theme, + ignoreImageAnalysis: ignoreImageAnalysis, + force: false, + isAsyncCancelled: function () { + return cancelAsyncOperations; + } + }); + }); + } + return { + render: render, + destroy: destroy + }; + } + + function injectProxy(enableStyleSheetsProxy) { + document.dispatchEvent( + new CustomEvent("__darkreader__inlineScriptsAllowed") + ); + var addRuleDescriptor = Object.getOwnPropertyDescriptor( + CSSStyleSheet.prototype, + "addRule" + ); + var insertRuleDescriptor = Object.getOwnPropertyDescriptor( + CSSStyleSheet.prototype, + "insertRule" + ); + var deleteRuleDescriptor = Object.getOwnPropertyDescriptor( + CSSStyleSheet.prototype, + "deleteRule" + ); + var removeRuleDescriptor = Object.getOwnPropertyDescriptor( + CSSStyleSheet.prototype, + "removeRule" + ); + var documentStyleSheetsDescriptor = enableStyleSheetsProxy + ? Object.getOwnPropertyDescriptor(Document.prototype, "styleSheets") + : null; + var shouldWrapHTMLElement = [ + "baidu.com", + "baike.baidu.com", + "ditu.baidu.com", + "map.baidu.com", + "maps.baidu.com", + "haokan.baidu.com", + "pan.baidu.com", + "passport.baidu.com", + "tieba.baidu.com", + "www.baidu.com" + ].includes(location.hostname); + var getElementsByTagNameDescriptor = shouldWrapHTMLElement + ? Object.getOwnPropertyDescriptor( + Element.prototype, + "getElementsByTagName" + ) + : null; + var cleanUp = function () { + Object.defineProperty( + CSSStyleSheet.prototype, + "addRule", + addRuleDescriptor + ); + Object.defineProperty( + CSSStyleSheet.prototype, + "insertRule", + insertRuleDescriptor + ); + Object.defineProperty( + CSSStyleSheet.prototype, + "deleteRule", + deleteRuleDescriptor + ); + Object.defineProperty( + CSSStyleSheet.prototype, + "removeRule", + removeRuleDescriptor + ); + document.removeEventListener("__darkreader__cleanUp", cleanUp); + document.removeEventListener( + "__darkreader__addUndefinedResolver", + addUndefinedResolver + ); + if (enableStyleSheetsProxy) { + Object.defineProperty( + Document.prototype, + "styleSheets", + documentStyleSheetsDescriptor + ); + } + if (shouldWrapHTMLElement) { + Object.defineProperty( + Element.prototype, + "getElementsByTagName", + getElementsByTagNameDescriptor + ); + } + }; + var addUndefinedResolver = function (e) { + customElements.whenDefined(e.detail.tag).then(function () { + document.dispatchEvent( + new CustomEvent("__darkreader__isDefined", { + detail: {tag: e.detail.tag} + }) + ); + }); + }; + document.addEventListener("__darkreader__cleanUp", cleanUp); + document.addEventListener( + "__darkreader__addUndefinedResolver", + addUndefinedResolver + ); + var updateSheetEvent = new Event("__darkreader__updateSheet"); + function proxyAddRule(selector, style, index) { + addRuleDescriptor.value.call(this, selector, style, index); + if ( + this.ownerNode && + !this.ownerNode.classList.contains("darkreader") + ) { + this.ownerNode.dispatchEvent(updateSheetEvent); + } + return -1; + } + function proxyInsertRule(rule, index) { + var returnValue = insertRuleDescriptor.value.call( + this, + rule, + index + ); + if ( + this.ownerNode && + !this.ownerNode.classList.contains("darkreader") + ) { + this.ownerNode.dispatchEvent(updateSheetEvent); + } + return returnValue; + } + function proxyDeleteRule(index) { + deleteRuleDescriptor.value.call(this, index); + if ( + this.ownerNode && + !this.ownerNode.classList.contains("darkreader") + ) { + this.ownerNode.dispatchEvent(updateSheetEvent); + } + } + function proxyRemoveRule(index) { + removeRuleDescriptor.value.call(this, index); + if ( + this.ownerNode && + !this.ownerNode.classList.contains("darkreader") + ) { + this.ownerNode.dispatchEvent(updateSheetEvent); + } + } + function proxyDocumentStyleSheets() { + var _this = this; + var getCurrentValue = function () { + var docSheets = documentStyleSheetsDescriptor.get.call(_this); + var filteredSheets = __spreadArray( + [], + __read(docSheets), + false + ).filter(function (styleSheet) { + return !styleSheet.ownerNode.classList.contains( + "darkreader" + ); + }); + filteredSheets.item = function (item) { + return filteredSheets[item]; + }; + return Object.setPrototypeOf( + filteredSheets, + StyleSheetList.prototype + ); + }; + var elements = getCurrentValue(); + var styleSheetListBehavior = { + get: function (_, property) { + return getCurrentValue()[property]; + } + }; + elements = new Proxy(elements, styleSheetListBehavior); + return elements; + } + function proxyGetElementsByTagName(tagName) { + var _this = this; + if (tagName !== "style") { + return getElementsByTagNameDescriptor.value.call(this, tagName); + } + var getCurrentElementValue = function () { + var elements = getElementsByTagNameDescriptor.value.call( + _this, + tagName + ); + return Object.setPrototypeOf( + __spreadArray([], __read(elements), false).filter(function ( + element + ) { + return !element.classList.contains("darkreader"); + }), + NodeList.prototype + ); + }; + var elements = getCurrentElementValue(); + var nodeListBehavior = { + get: function (_, property) { + return getCurrentElementValue()[ + Number(property) || property + ]; + } + }; + elements = new Proxy(elements, nodeListBehavior); + return elements; + } + Object.defineProperty( + CSSStyleSheet.prototype, + "addRule", + Object.assign({}, addRuleDescriptor, {value: proxyAddRule}) + ); + Object.defineProperty( + CSSStyleSheet.prototype, + "insertRule", + Object.assign({}, insertRuleDescriptor, {value: proxyInsertRule}) + ); + Object.defineProperty( + CSSStyleSheet.prototype, + "deleteRule", + Object.assign({}, deleteRuleDescriptor, {value: proxyDeleteRule}) + ); + Object.defineProperty( + CSSStyleSheet.prototype, + "removeRule", + Object.assign({}, removeRuleDescriptor, {value: proxyRemoveRule}) + ); + if (enableStyleSheetsProxy) { + Object.defineProperty( + Document.prototype, + "styleSheets", + Object.assign({}, documentStyleSheetsDescriptor, { + get: proxyDocumentStyleSheets + }) + ); + } + if (shouldWrapHTMLElement) { + Object.defineProperty( + Element.prototype, + "getElementsByTagName", + Object.assign({}, getElementsByTagNameDescriptor, { + value: proxyGetElementsByTagName + }) + ); + } + } + + var INSTANCE_ID = generateUID(); + var styleManagers = new Map(); + var adoptedStyleManagers = []; + var filter = null; + var fixes = null; + var isIFrame$1 = null; + var ignoredImageAnalysisSelectors = null; + var ignoredInlineSelectors = null; + function createOrUpdateStyle(className, root) { + if (root === void 0) { + root = document.head || document; + } + var element = root.querySelector(".".concat(className)); + if (!element) { + element = document.createElement("style"); + element.classList.add("darkreader"); + element.classList.add(className); + element.media = "screen"; + element.textContent = ""; + } + return element; + } + function createOrUpdateScript(className, root) { + if (root === void 0) { + root = document.head || document; + } + var element = root.querySelector(".".concat(className)); + if (!element) { + element = document.createElement("script"); + element.classList.add("darkreader"); + element.classList.add(className); + } + return element; + } + var nodePositionWatchers = new Map(); + function setupNodePositionWatcher(node, alias) { + nodePositionWatchers.has(alias) && + nodePositionWatchers.get(alias).stop(); + nodePositionWatchers.set(alias, watchForNodePosition(node, "parent")); + } + function stopStylePositionWatchers() { + forEach(nodePositionWatchers.values(), function (watcher) { + return watcher.stop(); + }); + nodePositionWatchers.clear(); + } + function createStaticStyleOverrides() { + var fallbackStyle = createOrUpdateStyle( + "darkreader--fallback", + document + ); + fallbackStyle.textContent = getModifiedFallbackStyle(filter, { + strict: true + }); + document.head.insertBefore(fallbackStyle, document.head.firstChild); + setupNodePositionWatcher(fallbackStyle, "fallback"); + var userAgentStyle = createOrUpdateStyle("darkreader--user-agent"); + userAgentStyle.textContent = getModifiedUserAgentStyle( + filter, + isIFrame$1, + filter.styleSystemControls + ); + document.head.insertBefore(userAgentStyle, fallbackStyle.nextSibling); + setupNodePositionWatcher(userAgentStyle, "user-agent"); + var textStyle = createOrUpdateStyle("darkreader--text"); + if (filter.useFont || filter.textStroke > 0) { + textStyle.textContent = createTextStyle(filter); + } else { + textStyle.textContent = ""; + } + document.head.insertBefore(textStyle, fallbackStyle.nextSibling); + setupNodePositionWatcher(textStyle, "text"); + var invertStyle = createOrUpdateStyle("darkreader--invert"); + if (fixes && Array.isArray(fixes.invert) && fixes.invert.length > 0) { + invertStyle.textContent = [ + "".concat(fixes.invert.join(", "), " {"), + " filter: ".concat( + getCSSFilterValue( + __assign(__assign({}, filter), { + contrast: + filter.mode === 0 + ? filter.contrast + : clamp(filter.contrast - 10, 0, 100) + }) + ), + " !important;" + ), + "}" + ].join("\n"); + } else { + invertStyle.textContent = ""; + } + document.head.insertBefore(invertStyle, textStyle.nextSibling); + setupNodePositionWatcher(invertStyle, "invert"); + var inlineStyle = createOrUpdateStyle("darkreader--inline"); + inlineStyle.textContent = getInlineOverrideStyle(); + document.head.insertBefore(inlineStyle, invertStyle.nextSibling); + setupNodePositionWatcher(inlineStyle, "inline"); + var overrideStyle = createOrUpdateStyle("darkreader--override"); + overrideStyle.textContent = + fixes && fixes.css ? replaceCSSTemplates(fixes.css) : ""; + document.head.appendChild(overrideStyle); + setupNodePositionWatcher(overrideStyle, "override"); + var variableStyle = createOrUpdateStyle("darkreader--variables"); + var selectionColors = getSelectionColor(filter); + var darkSchemeBackgroundColor = filter.darkSchemeBackgroundColor, + darkSchemeTextColor = filter.darkSchemeTextColor, + lightSchemeBackgroundColor = filter.lightSchemeBackgroundColor, + lightSchemeTextColor = filter.lightSchemeTextColor, + mode = filter.mode; + var schemeBackgroundColor = + mode === 0 ? lightSchemeBackgroundColor : darkSchemeBackgroundColor; + var schemeTextColor = + mode === 0 ? lightSchemeTextColor : darkSchemeTextColor; + schemeBackgroundColor = modifyBackgroundColor( + parseColorWithCache(schemeBackgroundColor), + filter + ); + schemeTextColor = modifyForegroundColor( + parseColorWithCache(schemeTextColor), + filter + ); + variableStyle.textContent = [ + ":root {", + " --darkreader-neutral-background: ".concat( + schemeBackgroundColor, + ";" + ), + " --darkreader-neutral-text: ".concat(schemeTextColor, ";"), + " --darkreader-selection-background: ".concat( + selectionColors.backgroundColorSelection, + ";" + ), + " --darkreader-selection-text: ".concat( + selectionColors.foregroundColorSelection, + ";" + ), + "}" + ].join("\n"); + document.head.insertBefore(variableStyle, inlineStyle.nextSibling); + setupNodePositionWatcher(variableStyle, "variables"); + var rootVarsStyle = createOrUpdateStyle("darkreader--root-vars"); + document.head.insertBefore(rootVarsStyle, variableStyle.nextSibling); + var injectProxyArg = !(fixes && fixes.disableStyleSheetsProxy); + { + var proxyScript = createOrUpdateScript("darkreader--proxy"); + proxyScript.append( + "(".concat(injectProxy, ")(").concat(injectProxyArg, ")") + ); + document.head.insertBefore(proxyScript, rootVarsStyle.nextSibling); + proxyScript.remove(); + } + } + var shadowRootsWithOverrides = new Set(); + function createShadowStaticStyleOverrides(root) { + var inlineStyle = createOrUpdateStyle("darkreader--inline", root); + inlineStyle.textContent = getInlineOverrideStyle(); + root.insertBefore(inlineStyle, root.firstChild); + var overrideStyle = createOrUpdateStyle("darkreader--override", root); + overrideStyle.textContent = + fixes && fixes.css ? replaceCSSTemplates(fixes.css) : ""; + root.insertBefore(overrideStyle, inlineStyle.nextSibling); + var invertStyle = createOrUpdateStyle("darkreader--invert", root); + if (fixes && Array.isArray(fixes.invert) && fixes.invert.length > 0) { + invertStyle.textContent = [ + "".concat(fixes.invert.join(", "), " {"), + " filter: ".concat( + getCSSFilterValue( + __assign(__assign({}, filter), { + contrast: + filter.mode === 0 + ? filter.contrast + : clamp(filter.contrast - 10, 0, 100) + }) + ), + " !important;" + ), + "}" + ].join("\n"); + } else { + invertStyle.textContent = ""; + } + root.insertBefore(invertStyle, overrideStyle.nextSibling); + shadowRootsWithOverrides.add(root); + } + function replaceCSSTemplates($cssText) { + return $cssText.replace(/\${(.+?)}/g, function (_, $color) { + var color = parseColorWithCache($color); + if (color) { + return modifyColor(color, filter); + } + return $color; + }); + } + function cleanFallbackStyle() { + var fallback = document.querySelector(".darkreader--fallback"); + if (fallback) { + fallback.textContent = ""; + } + } + function createDynamicStyleOverrides() { + cancelRendering(); + var allStyles = getManageableStyles(document); + var newManagers = allStyles + .filter(function (style) { + return !styleManagers.has(style); + }) + .map(function (style) { + return createManager(style); + }); + newManagers + .map(function (manager) { + return manager.details({secondRound: false}); + }) + .filter(function (detail) { + return detail && detail.rules.length > 0; + }) + .forEach(function (detail) { + variablesStore.addRulesForMatching(detail.rules); + }); + variablesStore.matchVariablesAndDependants(); + variablesStore.setOnRootVariableChange(function () { + variablesStore.putRootVars( + document.head.querySelector(".darkreader--root-vars"), + filter + ); + }); + variablesStore.putRootVars( + document.head.querySelector(".darkreader--root-vars"), + filter + ); + styleManagers.forEach(function (manager) { + return manager.render(filter, ignoredImageAnalysisSelectors); + }); + if (loadingStyles.size === 0) { + cleanFallbackStyle(); + } + newManagers.forEach(function (manager) { + return manager.watch(); + }); + var inlineStyleElements = toArray( + document.querySelectorAll(INLINE_STYLE_SELECTOR) + ); + iterateShadowHosts(document.documentElement, function (host) { + createShadowStaticStyleOverrides(host.shadowRoot); + var elements = host.shadowRoot.querySelectorAll( + INLINE_STYLE_SELECTOR + ); + if (elements.length > 0) { + push(inlineStyleElements, elements); + } + }); + inlineStyleElements.forEach(function (el) { + return overrideInlineStyle( + el, + filter, + ignoredInlineSelectors, + ignoredImageAnalysisSelectors + ); + }); + handleAdoptedStyleSheets(document); + } + var loadingStylesCounter = 0; + var loadingStyles = new Set(); + function createManager(element) { + var loadingStyleId = ++loadingStylesCounter; + function loadingStart() { + if (!isDOMReady() || !didDocumentShowUp) { + loadingStyles.add(loadingStyleId); + logInfo( + "Current amount of styles loading: ".concat( + loadingStyles.size + ) + ); + var fallbackStyle = document.querySelector( + ".darkreader--fallback" + ); + if (!fallbackStyle.textContent) { + fallbackStyle.textContent = getModifiedFallbackStyle( + filter, + {strict: false} + ); + } + } + } + function loadingEnd() { + loadingStyles.delete(loadingStyleId); + logInfo( + "Removed loadingStyle " + .concat(loadingStyleId, ", now awaiting: ") + .concat(loadingStyles.size) + ); + if (loadingStyles.size === 0 && isDOMReady()) { + cleanFallbackStyle(); + } + } + function update() { + var details = manager.details({secondRound: true}); + if (!details) { + return; + } + variablesStore.addRulesForMatching(details.rules); + variablesStore.matchVariablesAndDependants(); + manager.render(filter, ignoredImageAnalysisSelectors); + } + var manager = manageStyle(element, { + update: update, + loadingStart: loadingStart, + loadingEnd: loadingEnd + }); + styleManagers.set(element, manager); + return manager; + } + function removeManager(element) { + var manager = styleManagers.get(element); + if (manager) { + manager.destroy(); + styleManagers.delete(element); + } + } + var throttledRenderAllStyles = throttle(function (callback) { + styleManagers.forEach(function (manager) { + return manager.render(filter, ignoredImageAnalysisSelectors); + }); + adoptedStyleManagers.forEach(function (manager) { + return manager.render(filter, ignoredImageAnalysisSelectors); + }); + callback && callback(); + }); + var cancelRendering = function () { + throttledRenderAllStyles.cancel(); + }; + function onDOMReady() { + if (loadingStyles.size === 0) { + cleanFallbackStyle(); + return; + } + } + var documentVisibilityListener = null; + var didDocumentShowUp = !document.hidden; + function watchForDocumentVisibility(callback) { + var alreadyWatching = Boolean(documentVisibilityListener); + documentVisibilityListener = function () { + if (!document.hidden) { + stopWatchingForDocumentVisibility(); + callback(); + didDocumentShowUp = true; + } + }; + if (!alreadyWatching) { + document.addEventListener( + "visibilitychange", + documentVisibilityListener + ); + } + } + function stopWatchingForDocumentVisibility() { + document.removeEventListener( + "visibilitychange", + documentVisibilityListener + ); + documentVisibilityListener = null; + } + function createThemeAndWatchForUpdates() { + createStaticStyleOverrides(); + function runDynamicStyle() { + createDynamicStyleOverrides(); + watchForUpdates(); + } + if (document.hidden && !filter.immediateModify) { + watchForDocumentVisibility(runDynamicStyle); + } else { + runDynamicStyle(); + } + changeMetaThemeColorWhenAvailable(filter); + } + function handleAdoptedStyleSheets(node) { + try { + if (Array.isArray(node.adoptedStyleSheets)) { + if (node.adoptedStyleSheets.length > 0) { + var newManger = createAdoptedStyleSheetOverride(node); + adoptedStyleManagers.push(newManger); + newManger.render(filter, ignoredImageAnalysisSelectors); + } + } + } catch (err) {} + } + function watchForUpdates() { + var managedStyles = Array.from(styleManagers.keys()); + watchForStyleChanges( + managedStyles, + function (_a) { + var created = _a.created, + updated = _a.updated, + removed = _a.removed, + moved = _a.moved; + var stylesToRemove = removed; + var stylesToManage = created + .concat(updated) + .concat(moved) + .filter(function (style) { + return !styleManagers.has(style); + }); + var stylesToRestore = moved.filter(function (style) { + return styleManagers.has(style); + }); + stylesToRemove.forEach(function (style) { + return removeManager(style); + }); + var newManagers = stylesToManage.map(function (style) { + return createManager(style); + }); + newManagers + .map(function (manager) { + return manager.details({secondRound: false}); + }) + .filter(function (detail) { + return detail && detail.rules.length > 0; + }) + .forEach(function (detail) { + variablesStore.addRulesForMatching(detail.rules); + }); + variablesStore.matchVariablesAndDependants(); + newManagers.forEach(function (manager) { + return manager.render( + filter, + ignoredImageAnalysisSelectors + ); + }); + newManagers.forEach(function (manager) { + return manager.watch(); + }); + stylesToRestore.forEach(function (style) { + return styleManagers.get(style).restore(); + }); + }, + function (shadowRoot) { + createShadowStaticStyleOverrides(shadowRoot); + handleAdoptedStyleSheets(shadowRoot); + } + ); + watchForInlineStyles( + function (element) { + overrideInlineStyle( + element, + filter, + ignoredInlineSelectors, + ignoredImageAnalysisSelectors + ); + if (element === document.documentElement) { + var styleAttr = element.getAttribute("style") || ""; + if (styleAttr.includes("--")) { + variablesStore.matchVariablesAndDependants(); + variablesStore.putRootVars( + document.head.querySelector( + ".darkreader--root-vars" + ), + filter + ); + } + } + }, + function (root) { + createShadowStaticStyleOverrides(root); + var inlineStyleElements = root.querySelectorAll( + INLINE_STYLE_SELECTOR + ); + if (inlineStyleElements.length > 0) { + forEach(inlineStyleElements, function (el) { + return overrideInlineStyle( + el, + filter, + ignoredInlineSelectors, + ignoredImageAnalysisSelectors + ); + }); + } + } + ); + addDOMReadyListener(onDOMReady); + } + function stopWatchingForUpdates() { + styleManagers.forEach(function (manager) { + return manager.pause(); + }); + stopStylePositionWatchers(); + stopWatchingForStyleChanges(); + stopWatchingForInlineStyles(); + removeDOMReadyListener(onDOMReady); + cleanReadyStateCompleteListeners(); + } + var metaObserver; + function addMetaListener() { + metaObserver = new MutationObserver(function () { + if (document.querySelector('meta[name="darkreader-lock"]')) { + metaObserver.disconnect(); + removeDynamicTheme(); + } + }); + metaObserver.observe(document.head, {childList: true, subtree: true}); + } + function createDarkReaderInstanceMarker() { + var metaElement = document.createElement("meta"); + metaElement.name = "darkreader"; + metaElement.content = INSTANCE_ID; + document.head.appendChild(metaElement); + } + function isAnotherDarkReaderInstanceActive() { + if (document.querySelector('meta[name="darkreader-lock"]')) { + return true; + } + var meta = document.querySelector('meta[name="darkreader"]'); + if (meta) { + if (meta.content !== INSTANCE_ID) { + return true; + } + return false; + } + createDarkReaderInstanceMarker(); + addMetaListener(); + return false; + } + function createOrUpdateDynamicTheme( + filterConfig, + dynamicThemeFixes, + iframe + ) { + filter = filterConfig; + fixes = dynamicThemeFixes; + if (fixes) { + ignoredImageAnalysisSelectors = Array.isArray( + fixes.ignoreImageAnalysis + ) + ? fixes.ignoreImageAnalysis + : []; + ignoredInlineSelectors = Array.isArray(fixes.ignoreInlineStyle) + ? fixes.ignoreInlineStyle + : []; + } else { + ignoredImageAnalysisSelectors = []; + ignoredInlineSelectors = []; + } + if (filter.immediateModify) { + setIsDOMReady(function () { + return true; + }); + } + isIFrame$1 = iframe; + if (document.head) { + if (isAnotherDarkReaderInstanceActive()) { + return; + } + document.documentElement.setAttribute( + "data-darkreader-mode", + "dynamic" + ); + document.documentElement.setAttribute( + "data-darkreader-scheme", + filter.mode ? "dark" : "dimmed" + ); + createThemeAndWatchForUpdates(); + } else { + if (!isFirefox) { + var fallbackStyle = createOrUpdateStyle("darkreader--fallback"); + document.documentElement.appendChild(fallbackStyle); + fallbackStyle.textContent = getModifiedFallbackStyle(filter, { + strict: true + }); + } + var headObserver_1 = new MutationObserver(function () { + if (document.head) { + headObserver_1.disconnect(); + if (isAnotherDarkReaderInstanceActive()) { + removeDynamicTheme(); + return; + } + createThemeAndWatchForUpdates(); + } + }); + headObserver_1.observe(document, {childList: true, subtree: true}); + } + } + function removeProxy() { + document.dispatchEvent(new CustomEvent("__darkreader__cleanUp")); + removeNode(document.head.querySelector(".darkreader--proxy")); + } + function removeDynamicTheme() { + document.documentElement.removeAttribute("data-darkreader-mode"); + document.documentElement.removeAttribute("data-darkreader-scheme"); + cleanDynamicThemeCache(); + removeNode(document.querySelector(".darkreader--fallback")); + if (document.head) { + restoreMetaThemeColor(); + removeNode(document.head.querySelector(".darkreader--user-agent")); + removeNode(document.head.querySelector(".darkreader--text")); + removeNode(document.head.querySelector(".darkreader--invert")); + removeNode(document.head.querySelector(".darkreader--inline")); + removeNode(document.head.querySelector(".darkreader--override")); + removeNode(document.head.querySelector(".darkreader--variables")); + removeNode(document.head.querySelector(".darkreader--root-vars")); + removeNode(document.head.querySelector('meta[name="darkreader"]')); + removeProxy(); + } + shadowRootsWithOverrides.forEach(function (root) { + removeNode(root.querySelector(".darkreader--inline")); + removeNode(root.querySelector(".darkreader--override")); + }); + shadowRootsWithOverrides.clear(); + forEach(styleManagers.keys(), function (el) { + return removeManager(el); + }); + loadingStyles.clear(); + cleanLoadingLinks(); + forEach(document.querySelectorAll(".darkreader"), removeNode); + adoptedStyleManagers.forEach(function (manager) { + manager.destroy(); + }); + adoptedStyleManagers.splice(0); + metaObserver && metaObserver.disconnect(); + } + function cleanDynamicThemeCache() { + variablesStore.clear(); + parsedURLCache.clear(); + stopWatchingForDocumentVisibility(); + cancelRendering(); + stopWatchingForUpdates(); + cleanModificationCache(); + clearColorCache(); + } + + var blobRegex = /url\(\"(blob\:.*?)\"\)/g; + function replaceBlobs(text) { + return __awaiter(this, void 0, void 0, function () { + var promises, data; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + promises = []; + getMatches(blobRegex, text, 1).forEach(function (url) { + var promise = loadAsDataURL(url); + promises.push(promise); + }); + return [4, Promise.all(promises)]; + case 1: + data = _a.sent(); + return [ + 2, + text.replace(blobRegex, function () { + return 'url("'.concat(data.shift(), '")'); + }) + ]; + } + }); + }); + } + var banner = + '/*\n _______\n / \\\n .==. .==.\n (( ))==(( ))\n / "==" "=="\\\n /____|| || ||___\\\n ________ ____ ________ ___ ___\n | ___ \\ / \\ | ___ \\ | | / /\n | | \\ \\ / /\\ \\ | | \\ \\| |_/ /\n | | ) / /__\\ \\ | |__/ /| ___ \\\n | |__/ / ______ \\| ____ \\| | \\ \\\n_______|_______/__/ ____ \\__\\__|___\\__\\__|___\\__\\____\n| ___ \\ | ____/ / \\ | ___ \\ | ____| ___ \\\n| | \\ \\| |___ / /\\ \\ | | \\ \\| |___| | \\ \\\n| |__/ /| ____/ /__\\ \\ | | ) | ____| |__/ /\n| ____ \\| |__/ ______ \\| |__/ /| |___| ____ \\\n|__| \\__\\____/__/ \\__\\_______/ |______|__| \\__\\\n https://darkreader.org\n*/\n\n/*! Dark reader generated CSS | Licensed under MIT https://github.com/darkreader/darkreader/blob/main/LICENSE */\n'; + function collectCSS() { + return __awaiter(this, void 0, void 0, function () { + function addStaticCSS(selector, comment) { + var staticStyle = document.querySelector(selector); + if (staticStyle && staticStyle.textContent) { + css.push("/* ".concat(comment, " */")); + css.push(staticStyle.textContent); + css.push(""); + } + } + var css, modifiedCSS, formattedCSS, _a, _b; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + css = [banner]; + addStaticCSS(".darkreader--fallback", "Fallback Style"); + addStaticCSS( + ".darkreader--user-agent", + "User-Agent Style" + ); + addStaticCSS(".darkreader--text", "Text Style"); + addStaticCSS(".darkreader--invert", "Invert Style"); + addStaticCSS( + ".darkreader--variables", + "Variables Style" + ); + modifiedCSS = []; + document + .querySelectorAll(".darkreader--sync") + .forEach(function (element) { + forEach( + element.sheet.cssRules, + function (rule) { + rule && + rule.cssText && + modifiedCSS.push(rule.cssText); + } + ); + }); + if (!modifiedCSS.length) return [3, 2]; + formattedCSS = formatCSS(modifiedCSS.join("\n")); + css.push("/* Modified CSS */"); + _b = (_a = css).push; + return [4, replaceBlobs(formattedCSS)]; + case 1: + _b.apply(_a, [_c.sent()]); + css.push(""); + _c.label = 2; + case 2: + addStaticCSS(".darkreader--override", "Override Style"); + return [2, css.join("\n")]; + } + }); + }); + } + + var isDarkReaderEnabled = false; + var isIFrame = (function () { + try { + return window.self !== window.top; + } catch (err) { + console.warn(err); + return true; + } + })(); + function enable(themeOptions, fixes) { + if (themeOptions === void 0) { + themeOptions = {}; + } + if (fixes === void 0) { + fixes = null; + } + var theme = __assign(__assign({}, DEFAULT_THEME), themeOptions); + if (theme.engine !== ThemeEngine.dynamicTheme) { + throw new Error("Theme engine is not supported."); + } + createOrUpdateDynamicTheme(theme, fixes, isIFrame); + isDarkReaderEnabled = true; + } + function isEnabled() { + return isDarkReaderEnabled; + } + function disable() { + removeDynamicTheme(); + isDarkReaderEnabled = false; + } + var darkScheme = matchMedia("(prefers-color-scheme: dark)"); + var store = { + themeOptions: null, + fixes: null + }; + function handleColorScheme() { + if (darkScheme.matches) { + enable(store.themeOptions, store.fixes); + } else { + disable(); + } + } + function auto(themeOptions, fixes) { + if (themeOptions === void 0) { + themeOptions = {}; + } + if (fixes === void 0) { + fixes = null; + } + if (themeOptions) { + store = {themeOptions: themeOptions, fixes: fixes}; + handleColorScheme(); + if (isMatchMediaChangeEventListenerSupported) { + darkScheme.addEventListener("change", handleColorScheme); + } else { + darkScheme.addListener(handleColorScheme); + } + } else { + if (isMatchMediaChangeEventListenerSupported) { + darkScheme.removeEventListener("change", handleColorScheme); + } else { + darkScheme.removeListener(handleColorScheme); + } + disable(); + } + } + function exportGeneratedCSS() { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + return [4, collectCSS()]; + case 1: + return [2, _a.sent()]; + } + }); + }); + } + var setFetchMethod = setFetchMethod$1; + + exports.auto = auto; + exports.disable = disable; + exports.enable = enable; + exports.exportGeneratedCSS = exportGeneratedCSS; + exports.isEnabled = isEnabled; + exports.setFetchMethod = setFetchMethod; + + Object.defineProperty(exports, "__esModule", {value: true}); +}); + +layui.define([], function(exports) { + exports('darkreader', DarkReader); +}); \ No newline at end of file diff --git a/component/pear/module/drawer.js b/component/pear/module/drawer.js deleted file mode 100644 index a95e41a..0000000 --- a/component/pear/module/drawer.js +++ /dev/null @@ -1,420 +0,0 @@ -layui.define(['jquery', 'element', 'layer', 'loading'], function (exports) { - "use strict"; - - /** - * Drawer component - * */ - var MOD_NAME = 'drawer', - $ = layui.jquery, - element = layui.element, - layer = layui.layer, - loading = layui.loading; - - - var drawer = new function () { - - /** - * open drawer - * */ - this.open = function (option) { - // 默认使用 legacy 模式 - if (option.legacy === undefined) { - option.legacy = true; - }; - if (option.legacy) { - var obj = new mSlider({ - target: option.target, - dom: option.dom, - direction: option.direction, - distance: option.distance, - time: option.time ? option.time : 0, - maskClose: option.maskClose, - callback: option.success - }); - obj.open(); - return obj; - } else { - return layerDrawer(option); - } - } - this.title = layer.title; - this.style = layer.style; - this.close = layer.close; - this.closeAll = layer.closeAll; - } - - /** - * - * 封装 layer.open - * type,anim,move,fixed不可用,其它参数和 layer.open 一致 - * @param {LayerOption} option - * @returns 原生 layer 的 index - */ - function layerDrawer(option) { - var opt = normalizeOption(option) - if (opt.target) appendToTarget(opt); - if (opt.url) loadFragment(opt); - var layerIndex = layer.open(opt); - - return layerIndex; - } - - /** - * 加载 HTML 片段到 layer content - * @param {*} option - */ - function loadFragment(option) { - option.success = Aspect(option.success, function (layero, index) { - var layerID = "#" + layero.attr("id"); - loading.block({ - type: 1, - elem: layerID, - msg: '' - }); - $.ajax({ - url: option.url, - dataType: "html", - success: function (result) { - layero.children('.layui-layer-content').html(result); - loading.blockRemove(layerID); - } - }) - }) - } - - /** - *将 layer 挂载到指定节点 - * @param {object} opt - */ - function appendToTarget(opt) { - var targetDOM = $(opt.target); - var contentDOM = $(opt.content); - contentDOM.appendTo(targetDOM); - opt.skin = getDrawerAnimationClass(opt.offset, true); - opt.offset = calcOffset(opt.offset, opt.area, targetDOM); - // 处理关闭后偶现 DOM 仍显示的问题,layer 的 BUG - opt.end = Aspect(opt.end, function () { - contentDOM.css("display", "none"); - }) - if (opt.shade) { - opt.success = Aspect(opt.success, function (layero, index) { - var shadeDOM = $("#layui-layer-shade" + index); - shadeDOM.css("position", "absolute"); - shadeDOM.appendTo(layero.parent()); - }) - } - } - - /** - * 规格化 layer.open 选项,兼容原版 Drawer 所有选项 - * @param {LayerOption} option layer.open 的选项 - * @returns 规格化后的 layer.open 选项 - */ - function normalizeOption(option) { - if (option.direction && !option.offset) { - if (option.direction === "right") { - option.offset = "r"; - } else if (option.direction === "left") { - option.offset = "l"; - } else if (option.direction === "top") { - option.offset = "t"; - } else if (option.direction === "bottom") { - option.offset = "b"; - } else { - option.offset = "r"; - } - } - if (option.distance && !option.area) { - option.area = option.distance; - } - if (option.dom && !option.content) { - option.content = $(option.dom); - } - if (option.maskClose && option.shadeClose === undefined) { - option.shadeClose = (option.maskClose + "").toString() !== "false" ? true : false; - } - - option.type = 1 - option.anim = -1; - option.move = false; - option.fixed = true; - if (option.iframe) { - option.type = 2; - option.content = option.iframe; - } - if (option.offset === undefined) option.offset = "r"; - option.area = calcDrawerArea(option.offset, option.area); - if (option.title === undefined) option.title = false; - if (option.closeBtn === undefined) option.closeBtn = false; - if (option.shade === undefined) option.shade = 0.3; - if (option.shadeClose === undefined) option.shadeClose = true; - if (option.skin === undefined) option.skin = getDrawerAnimationClass(option.offset); - if (option.resize === undefined) option.resize = false; - if (option.success === undefined) option.success = function () { }; // 处理遮罩需要 - if (option.end === undefined) option.end = function () { }; - - return option; - } - - /** - * 计算抽屉宽高 - * @param {string} offset 抽屉方向 l = 左, r = 右, t = 上, b = 下 - * @param {string[] | string} drawerArea 抽屉大小,字符串数组格式:[width, height],字符串格式:百分比或单位 px。 - * @returns 抽屉宽高数组 - */ - function calcDrawerArea(offset, drawerArea) { - if (drawerArea instanceof Array) { - return drawerArea; - } - if (drawerArea === undefined || drawerArea === "auto") { - drawerArea = "30%"; - } - if (offset === "l" || offset === "r") { - return [drawerArea, "100%"]; - } else if (offset === "t" || offset === "b") { - return ["100%", drawerArea]; - } - return [drawerArea, "100%"]; - } - - /** - * 获取抽屉动画类 - * @param {string} offset 抽屉方向 - * @param {boolean} 是否 absolute 布局 - * @returns 抽屉入场动画类 - */ - function getDrawerAnimationClass(offset, isAbsolute) { - var positionAbsoluteClass = "position-absolute "; - var prefixClass = "pear-drawer pear-drawer-anim layui-anim layer-anim-"; - var suffix = "rl"; - - if (isAbsolute) { - prefixClass = positionAbsoluteClass + prefixClass; - } - if (offset === "l") { - suffix = "lr"; - } else if (offset === "r") { - suffix = "rl"; - } else if (offset === "t") { - suffix = "tb"; - } else if (offset === "b") { - suffix = "bt"; - } - return prefixClass + suffix; - } - - /** - * 指定挂载容器重新计算 offset - * @param {*} offset 位置 - * @param {*} area 范围大小 - * @param {*} targetEl 挂载节点 - * @returns 包含抽屉位置信息的数组,[top,left] - */ - function calcOffset(offset, area, targetEl) { - if (offset === undefined || offset === "l" || offset === "t") { - offset = "lt"; - } else if (offset === "r") { - var left; - if (area instanceof Array) { - area = area[0]; - } - if (area.indexOf("%") != -1) { - left = targetEl.innerWidth() * (1 - area.replace("%", "") / 100); - } else { - left = targetEl.innerWidth() - area; - } - offset = [0, left]; - } else if (offset === "b") { - var top; - if (area instanceof Array) { - area = area[1]; - } - if (area.indexOf("%") != -1) { - top = targetEl.innerHeight() * (1 - area.replace("%", "") / 100); - } else { - top = targetEl.innerHeight() - area; - } - offset = [top, 0]; - } - - return offset; - } - - /** - * 简易的切面 - * @param {Function} func 被通知的对象,原函数 - * @param {Function | undefined} before 前置通知 - * @param {Function | undefined} after 后置通知 - * @returns 代理函数 - */ - function Aspect(target, before, after) { - function proxyFunc() { - if (before && typeof before === "function") { - before.apply(this, arguments) - } - target.apply(this, arguments); - if (after && typeof after === "function") { - after.apply(this, arguments) - } - } - return proxyFunc; - } - - exports(MOD_NAME, drawer); -}); - -/** - * 源码 - * */ -(function (b, c) { - function a(d) { - this.opts = { - "target": d.target || "body", - "direction": d.direction || "left", - "distance": d.distance || "60%", - "dom": this.Q(d.dom), - "time": d.time || "", - "maskClose": (d.maskClose + "").toString() !== "false" ? true : false, - "callback": d.callback || "" - }; - this.rnd = this.rnd(); - this.target = this.opts.target; - this.dom = this.opts.dom[0]; - this.wrap = ""; - this.inner = ""; - this.mask = ""; - this.init() - } - a.prototype = { - Q: function (d) { - return document.querySelectorAll(d) - }, - isMobile: function () { - return navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i) ? true : false - }, - addEvent: function (f, e, d) { - if (f.attachEvent) { - f.attachEvent("on" + e, d) - } else { - f.addEventListener(e, d, false) - } - }, - rnd: function () { - return Math.random().toString(36).substr(2, 6) - }, - init: function () { - var g = this; - if (!g.dom) { - console.log("未正确绑定弹窗容器"); - return - } - g.dom.style.display = "block"; // 兼容 layer 捕获层 - var d = document.createElement("div"); - var e = document.createElement("div"); - var f = document.createElement("div"); - d.setAttribute("class", "mSlider-main ms-" + g.rnd); - e.setAttribute("class", "mSlider-inner"); - f.setAttribute("class", "mSlider-mask"); - g.Q(g.target)[0].appendChild(d); - g.Q(".ms-" + g.rnd)[0].appendChild(e); - g.Q(".ms-" + g.rnd)[0].appendChild(f); - g.wrap = g.Q(".ms-" + g.rnd)[0]; - g.inner = g.Q(".ms-" + g.rnd + " .mSlider-inner")[0]; - g.mask = g.Q(".ms-" + g.rnd + " .mSlider-mask")[0]; - g.inner.appendChild(g.dom); - switch (g.opts.direction) { - case "top": - g.top = "0"; - g.left = "0"; - g.width = "100%"; - g.height = g.opts.distance; - g.translate = "0,-100%,0"; - break; - case "bottom": - g.bottom = "0"; - g.left = "0"; - g.width = "100%"; - g.height = g.opts.distance; - g.translate = "0,100%,0"; - break; - case "right": - g.top = "0"; - g.right = "0"; - g.width = g.opts.distance; - g.height = document.documentElement.clientHeight + "px"; - g.translate = "100%,0,0"; - break; - default: - g.top = "0"; - g.left = "0"; - g.width = g.opts.distance; - g.height = document.documentElement.clientHeight + "px"; - g.translate = "-100%,0,0" - } - g.wrap.style.display = "none"; - g.wrap.style.position = (g.target === "body" ? "fixed" : "absolute"); - g.wrap.style.top = "0"; - g.wrap.style.left = "0"; - g.wrap.style.width = "100%"; - g.wrap.style.height = "100%"; - g.wrap.style.zIndex = 9999999; - g.inner.style.position = "absolute"; - g.inner.style.top = g.top; - g.inner.style.bottom = g.bottom; - g.inner.style.left = g.left; - g.inner.style.right = g.right; - g.inner.style.width = g.width; - g.inner.style.height = (g.target === "body" ? g.height : "100%"); - g.inner.style.backgroundColor = "#fff"; - g.inner.style.transform = "translate3d(" + g.translate + ")"; - g.inner.style.webkitTransition = "all .2s ease-out"; - g.inner.style.transition = "all .2s ease-out"; - g.inner.style.zIndex = 10000000; - g.mask.style.width = "100%"; - g.mask.style.height = "100%"; - g.mask.style.opacity = "0.1"; - g.mask.style.backgroundColor = "black"; - g.mask.style.zIndex = "9999998"; - g.mask.style.webkitBackfaceVisibility = "hidden"; - g.events() - }, - open: function () { - var d = this; - d.wrap.style.display = "block"; - setTimeout(function () { - d.inner.style.transform = "translate3d(0,0,0)"; - d.inner.style.webkitTransform = "translate3d(0,0,0)"; - d.mask.style.opacity = 0.1 - }, 30); - if (d.opts.time) { - d.timer = setTimeout(function () { - d.close() - }, d.opts.time) - } - }, - close: function () { - var d = this; - d.timer && clearTimeout(d.timer); - d.inner.style.webkitTransform = "translate3d(" + d.translate + ")"; - d.inner.style.transform = "translate3d(" + d.translate + ")"; - d.mask.style.opacity = 0; - setTimeout(function () { - d.wrap.style.display = "none"; - d.timer = null; - d.opts.callback && d.opts.callback() - }, 300) - }, - events: function () { - var d = this; - d.addEvent(d.mask, "touchmove", function (f) { - f.preventDefault() - }); - d.addEvent(d.mask, (d.isMobile() ? "touchend" : "click"), function (f) { - if (d.opts.maskClose) { - d.close() - } - }) - } - }; - b.mSlider = a -})(window); diff --git a/component/pear/module/frame.js b/component/pear/module/frame.js index 5ee6841..0bdc5cd 100644 --- a/component/pear/module/frame.js +++ b/component/pear/module/frame.js @@ -1,70 +1,129 @@ -layui.define(['jquery', 'element'], function(exports) { +layui.define(['jquery', 'element'], function (exports) { "use strict"; var $ = layui.jquery; + var element = layui.element; - var frame = function(opt) { + var frame = function (opt) { this.option = opt; }; - frame.prototype.render = function(opt) { + frame.prototype.render = function (opt) { var option = { - elem: opt.elem, url: opt.url, + elem: opt.elem, title: opt.title, width: opt.width, height: opt.height, - done: opt.done ? opt.done : function() { + done: opt.done ? opt.done : function () { console.log("菜单渲染成功"); } } renderContent(option); - $("#" + option.elem).width(option.width); - $("#" + option.elem).height(option.height); return new frame(option); } - frame.prototype.changePage = function(url, loading) { + frame.prototype.changePage = function (url, loading) { var $frameLoad = $("#" + this.option.elem).find(".pear-frame-loading"); - var $frame = $("#" + this.option.elem + " iframe"); - $frame.attr("src", url); - renderContentLoading($frame, $frameLoad, loading); + var $frame = $("#" + this.option.elem + " .pear-frame-content"); + if(loading) { + $frameLoad.css({ + display: 'block' + }); + } + $.ajax({ + url: url, + type: 'get', + dataType: 'html', + success: function (data) { + $frame.html(data) + $frame.attr("src", url); + $frameLoad.fadeOut(1000); + element.init(); + }, + error: function (xhr, textstatus, thrown) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } + }); } - frame.prototype.changePageByElement = function(elem, url, title, loading) { + frame.prototype.changePageByElement = function (elem, url, loading) { var $frameLoad = $("#" + elem).find(".pear-frame-loading"); - var $frame = $("#" + elem + " iframe"); - $frame.attr("src", url); - $("#" + elem + " .title").html(title); - renderContentLoading($frame, $frameLoad, loading); + var $frame = $("#" + elem + " .pear-frame-content"); + if(loading) { + $frameLoad.css({ + display: 'block' + }); + } + $.ajax({ + url: url, + type: 'get', + dataType: 'html', + success: function (data) { + $frame.html(data) + $frame.attr("src", url); + $frameLoad.fadeOut(1000); + element.init(); + }, + error: function (xhr, textstatus, thrown) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } + }); } - frame.prototype.refresh = function(loading) { + frame.prototype.refresh = function (loading) { var $frameLoad = $("#" + this.option.elem).find(".pear-frame-loading"); - var $frame = $("#" + this.option.elem).find("iframe"); - $frame.attr("src", $frame.attr("src")); - renderContentLoading($frame, $frameLoad, loading); - } - - function renderContent(option) { - var iframe = ``; - var loading = `
    -
    - -
    -
    `; - $("#" + option.elem).html("
    " + iframe + loading + "
    "); - } - - function renderContentLoading (iframeEl, loadingEl, isLoading) { - if (isLoading) { - loadingEl.css({ + var $frame = $("#" + this.option.elem).find(".pear-frame-content"); + if(loading) { + $frameLoad.css({ display: 'block' }); - $(iframeEl).on('load', function() { - loadingEl.fadeOut(1000); - }) } + $.ajax({ + url: $frame.attr("src"), + type: 'get', + dataType: 'html', + success: function (data) { + $frame.html(data) + $frameLoad.fadeOut(1000); + element.init(); + }, + error: function (xhr, textstatus, thrown) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } + }); + } + + function renderContent(option) { + + $("#" + option.elem).html(` +
    +
    +
    +
    + + + + +
    +
    +
    `); + + var $frame = $("#" + option.elem).find(".pear-frame-content"); + + $.ajax({ + url: option.url, + type: 'get', + dataType: 'html', + success: function (data) { + $frame.html(data); + $frame.attr("src", option.url); + element.init(); + }, + error: function (xhr, textstatus, thrown) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } + }); } exports('frame', new frame()); diff --git a/component/pear/module/loading.js b/component/pear/module/loading.js index 447bd38..5ff7ec9 100644 --- a/component/pear/module/loading.js +++ b/component/pear/module/loading.js @@ -1,422 +1,422 @@ layui.define(['table', 'jquery', 'element'], function (exports) { - "use strict"; + "use strict"; - var MOD_NAME = 'loading', - $ = layui.jquery, + var MOD_NAME = 'loading', + $ = layui.jquery, element = layui.element; - var pearOper = new function () { - this.blockRemove = function(dom,time){ + var pearOper = new function () { + this.blockRemove = function (dom, time) { Notiflix.Block.Remove(dom, time); } - this.block = function(option){ - if(option.type==1){ + this.block = function (option) { + if (option.type == 1) { Notiflix.Block.Standard( - option.elem - ,option.msg); + option.elem + , option.msg); } - else if(option.type==2){ + else if (option.type == 2) { Notiflix.Block.Hourglass( - option.elem - ,option.msg); + option.elem + , option.msg); } - else if(option.type==3){ + else if (option.type == 3) { Notiflix.Block.Circle( - option.elem - ,option.msg); + option.elem + , option.msg); } - else if(option.type==4){ + else if (option.type == 4) { Notiflix.Block.Arrows( - option.elem - ,option.msg); + option.elem + , option.msg); } - else if(option.type==5){ + else if (option.type == 5) { Notiflix.Block.Dots( - option.elem - ,option.msg); + option.elem + , option.msg); } - else if(option.type==6){ + else if (option.type == 6) { Notiflix.Block.Pulse( - option.elem - ,option.msg); + option.elem + , option.msg); } } - this.report = function(option){ - if(option.type=="success"){ + this.report = function (option) { + if (option.type == "success") { Notiflix.Report.Success( - option.title, - option.message,'确认'); - }else if(option.type=="failure"){ + option.title, + option.message, '确认'); + } else if (option.type == "failure") { Notiflix.Report.Failure( - option.title, - option.message,'确认'); - }else if(option.type=="warning"){ + option.title, + option.message, '确认'); + } else if (option.type == "warning") { Notiflix.Report.Warning( - option.title, - option.message,'确认'); - }else if(option.type=="info"){ + option.title, + option.message, '确认'); + } else if (option.type == "info") { Notiflix.Report.Info( - option.title, - option.message,'确认'); + option.title, + option.message, '确认'); } } - this.notice = function(option){ + this.notice = function (option) { Notiflix.Notify.Init({ - position:option.position?"right-top":option.position, - }); - if(option.type=="success"){ + position: option.position ? "right-top" : option.position, + }); + if (option.type == "success") { Notiflix.Notify.Success(option.title); - }else if(option.type=="failure"){ + } else if (option.type == "failure") { Notiflix.Notify.Failure(option.title); - }else if(option.type=="warning"){ + } else if (option.type == "warning") { Notiflix.Notify.Warning(option.title); - }else if(option.type=="info"){ + } else if (option.type == "info") { Notiflix.Notify.Info(option.title); } } - this.confirm = function(option){ + this.confirm = function (option) { Notiflix.Confirm.Show( - option.title, - option.message, - '确认', - '取消', - option.success, - option.cancle + option.title, + option.message, + '确认', + '取消', + option.success, + option.cancle ); } - this.drawer = function(position,dom,distance){ + this.drawer = function (position, dom, distance) { var _right = new mSlider({ - dom: dom, - direction: position, - distance:distance + dom: dom, + direction: position, + distance: distance }); - _right.open(); + _right.open(); } - this.loadRemove = function(time){ + this.loadRemove = function (time) { Notiflix.Loading.Remove(time); } - this.Load = function(type,message){ - if(type==1){ + this.Load = function (type, message) { + if (type == 1) { Notiflix.Loading.Standard(message); - }else if(type==2){ + } else if (type == 2) { Notiflix.Loading.Hourglass(message); - }else if(type==3){ + } else if (type == 3) { Notiflix.Loading.Circle(message); - }else if(type==4){ + } else if (type == 4) { Notiflix.Loading.Dots(message); - }else if(type==5){ + } else if (type == 5) { Notiflix.Loading.Pulse(message); } } - this.msg = function(option){ - if(option.type=="success"){ + this.msg = function (option) { + if (option.type == "success") { - layer.msg(option.title,{icon:1,time:option.time},option.callback); + layer.msg(option.title, { icon: 1, time: option.time }, option.callback); - }else if(option.type=="failure"){ + } else if (option.type == "failure") { - layer.msg(option.title,{icon:2,time:option.time},option.callback); + layer.msg(option.title, { icon: 2, time: option.time }, option.callback); - }else if(option.type=="warning"){ + } else if (option.type == "warning") { - layer.msg(option.title,{icon:3,time:option.time},option.callback); + layer.msg(option.title, { icon: 3, time: option.time }, option.callback); - }else if(option.type=="info"){ + } else if (option.type == "info") { - layer.msg(option.title,{icon:4,time:option.time},option.callback); + layer.msg(option.title, { icon: 4, time: option.time }, option.callback); } } - }; + }; // Notiflix: Notify Default Settings on var notifySettings = { - wrapID: 'NotiflixNotifyWrap', // can not customizable - width: '280px', - position: 'right-top', // 'right-top' - 'right-bottom' - 'left-top' - 'left-bottom' - distance: '10px', - opacity: 1, - borderRadius: '5px', - rtl: false, - timeout: 3000, - messageMaxLength: 110, - backOverlay: false, - backOverlayColor: 'rgba(0,0,0,0.5)', - plainText: true, - showOnlyTheLastOne: false, - clickToClose: false, - - ID: 'NotiflixNotify', - className: 'notiflix-notify', - zindex: 4001, - useGoogleFont: true, - fontFamily: 'Quicksand', - fontSize: '13px', - cssAnimation: true, - cssAnimationDuration: 400, - cssAnimationStyle: 'fade', // 'fade' - 'zoom' - 'from-right' - 'from-top' - 'from-bottom' - 'from-left' - closeButton: false, - useIcon: true, - useFontAwesome: false, - fontAwesomeIconStyle: 'basic', // 'basic' - 'shadow' - fontAwesomeIconSize: '34px', - - success: { - background: '#32c682', - textColor: '#fff', - childClassName: 'success', - notiflixIconColor: 'rgba(0,0,0,0.2)', - fontAwesomeClassName: 'fas fa-check-circle', - fontAwesomeIconColor: 'rgba(0,0,0,0.2)', - }, - - failure: { - background: '#ff5549', - textColor: '#fff', - childClassName: 'failure', - notiflixIconColor: 'rgba(0,0,0,0.2)', - fontAwesomeClassName: 'fas fa-times-circle', - fontAwesomeIconColor: 'rgba(0,0,0,0.2)', - }, - - warning: { - background: '#eebf31', - textColor: '#fff', - childClassName: 'warning', - notiflixIconColor: 'rgba(0,0,0,0.2)', - fontAwesomeClassName: 'fas fa-exclamation-circle', - fontAwesomeIconColor: 'rgba(0,0,0,0.2)', - }, - - info: { - background: '#26c0d3', - textColor: '#fff', - childClassName: 'info', - notiflixIconColor: 'rgba(0,0,0,0.2)', - fontAwesomeClassName: 'fas fa-info-circle', - fontAwesomeIconColor: 'rgba(0,0,0,0.2)', - }, + wrapID: 'NotiflixNotifyWrap', // can not customizable + width: '280px', + position: 'right-top', // 'right-top' - 'right-bottom' - 'left-top' - 'left-bottom' + distance: '10px', + opacity: 1, + borderRadius: '5px', + rtl: false, + timeout: 3000, + messageMaxLength: 110, + backOverlay: false, + backOverlayColor: 'rgba(0,0,0,0.5)', + plainText: true, + showOnlyTheLastOne: false, + clickToClose: false, + + ID: 'NotiflixNotify', + className: 'notiflix-notify', + zindex: 4001, + useGoogleFont: true, + fontFamily: 'Quicksand', + fontSize: '13px', + cssAnimation: true, + cssAnimationDuration: 400, + cssAnimationStyle: 'fade', // 'fade' - 'zoom' - 'from-right' - 'from-top' - 'from-bottom' - 'from-left' + closeButton: false, + useIcon: true, + useFontAwesome: false, + fontAwesomeIconStyle: 'basic', // 'basic' - 'shadow' + fontAwesomeIconSize: '34px', + + success: { + background: '#32c682', + textColor: '#fff', + childClassName: 'success', + notiflixIconColor: 'rgba(0,0,0,0.2)', + fontAwesomeClassName: 'fas fa-check-circle', + fontAwesomeIconColor: 'rgba(0,0,0,0.2)', + }, + + failure: { + background: '#ff5549', + textColor: '#fff', + childClassName: 'failure', + notiflixIconColor: 'rgba(0,0,0,0.2)', + fontAwesomeClassName: 'fas fa-times-circle', + fontAwesomeIconColor: 'rgba(0,0,0,0.2)', + }, + + warning: { + background: '#eebf31', + textColor: '#fff', + childClassName: 'warning', + notiflixIconColor: 'rgba(0,0,0,0.2)', + fontAwesomeClassName: 'fas fa-exclamation-circle', + fontAwesomeIconColor: 'rgba(0,0,0,0.2)', + }, + + info: { + background: '#26c0d3', + textColor: '#fff', + childClassName: 'info', + notiflixIconColor: 'rgba(0,0,0,0.2)', + fontAwesomeClassName: 'fas fa-info-circle', + fontAwesomeIconColor: 'rgba(0,0,0,0.2)', + }, }; // Notiflix: Notify Default Settings off // Notiflix: Report Default Settings on var reportSettings = { - ID: 'NotiflixReportWrap', // can not customizable - className: 'notiflix-report', - width: '320px', - backgroundColor: '#f8f8f8', - borderRadius: '25px', - rtl: false, - zindex: 4002, - backOverlay: true, - backOverlayColor: 'rgba(0, 0, 0, 0.5)', - useGoogleFont: true, - fontFamily: 'Quicksand', - svgSize: '110px', - plainText: true, - titleFontSize: '16px', - titleMaxLength: 34, - messageFontSize: '13px', - messageMaxLength: 400, - buttonFontSize: '14px', - buttonMaxLength: 34, - cssAnimation: true, - cssAnimationDuration: 360, - cssAnimationStyle: 'fade', // 'fade' - 'zoom' - - success: { - svgColor: '#32c682', - titleColor: '#1e1e1e', - messageColor: '#242424', - buttonBackground: '#32c682', - buttonColor: '#fff', - }, - - failure: { - svgColor: '#ff5549', - titleColor: '#1e1e1e', - messageColor: '#242424', - buttonBackground: '#ff5549', - buttonColor: '#fff', - }, - - warning: { - svgColor: '#eebf31', - titleColor: '#1e1e1e', - messageColor: '#242424', - buttonBackground: '#eebf31', - buttonColor: '#fff', - }, - - info: { - svgColor: '#26c0d3', - titleColor: '#1e1e1e', - messageColor: '#242424', - buttonBackground: '#26c0d3', - buttonColor: '#fff', - }, + ID: 'NotiflixReportWrap', // can not customizable + className: 'notiflix-report', + width: '320px', + backgroundColor: '#f8f8f8', + borderRadius: '25px', + rtl: false, + zindex: 4002, + backOverlay: true, + backOverlayColor: 'rgba(0, 0, 0, 0.5)', + useGoogleFont: true, + fontFamily: 'Quicksand', + svgSize: '110px', + plainText: true, + titleFontSize: '16px', + titleMaxLength: 34, + messageFontSize: '13px', + messageMaxLength: 400, + buttonFontSize: '14px', + buttonMaxLength: 34, + cssAnimation: true, + cssAnimationDuration: 360, + cssAnimationStyle: 'fade', // 'fade' - 'zoom' + + success: { + svgColor: '#32c682', + titleColor: '#1e1e1e', + messageColor: '#242424', + buttonBackground: '#32c682', + buttonColor: '#fff', + }, + + failure: { + svgColor: '#ff5549', + titleColor: '#1e1e1e', + messageColor: '#242424', + buttonBackground: '#ff5549', + buttonColor: '#fff', + }, + + warning: { + svgColor: '#eebf31', + titleColor: '#1e1e1e', + messageColor: '#242424', + buttonBackground: '#eebf31', + buttonColor: '#fff', + }, + + info: { + svgColor: '#26c0d3', + titleColor: '#1e1e1e', + messageColor: '#242424', + buttonBackground: '#26c0d3', + buttonColor: '#fff', + }, }; // Notiflix: Report Default Settings off // Notiflix: Confirm Default Settings on var confirmSettings = { - ID: 'NotiflixConfirmWrap', // can not customizable - className: 'notiflix-confirm', - width: '300px', - zindex: 4003, - position: 'center', // 'center' - 'center-top' - 'right-top' - 'right-bottom' - 'left-top' - 'left-bottom' - distance: '10px', - backgroundColor: '#f8f8f8', - borderRadius: '25px', - backOverlay: true, - backOverlayColor: 'rgba(0,0,0,0.5)', - rtl: false, - useGoogleFont: true, - fontFamily: 'Quicksand', - cssAnimation: true, - cssAnimationStyle: 'fade', // 'zoom' - 'fade' - cssAnimationDuration: 300, - plainText: true, - - titleColor: '#32c682', - titleFontSize: '16px', - titleMaxLength: 34, - - messageColor: '#1e1e1e', - messageFontSize: '14px', - messageMaxLength: 110, - - buttonsFontSize: '15px', - buttonsMaxLength: 34, - okButtonColor: '#f8f8f8', - okButtonBackground: '#32c682', - cancelButtonColor: '#f8f8f8', - cancelButtonBackground: '#a9a9a9', + ID: 'NotiflixConfirmWrap', // can not customizable + className: 'notiflix-confirm', + width: '300px', + zindex: 4003, + position: 'center', // 'center' - 'center-top' - 'right-top' - 'right-bottom' - 'left-top' - 'left-bottom' + distance: '10px', + backgroundColor: '#f8f8f8', + borderRadius: '25px', + backOverlay: true, + backOverlayColor: 'rgba(0,0,0,0.5)', + rtl: false, + useGoogleFont: true, + fontFamily: 'Quicksand', + cssAnimation: true, + cssAnimationStyle: 'fade', // 'zoom' - 'fade' + cssAnimationDuration: 300, + plainText: true, + + titleColor: '#32c682', + titleFontSize: '16px', + titleMaxLength: 34, + + messageColor: '#1e1e1e', + messageFontSize: '14px', + messageMaxLength: 110, + + buttonsFontSize: '15px', + buttonsMaxLength: 34, + okButtonColor: '#f8f8f8', + okButtonBackground: '#32c682', + cancelButtonColor: '#f8f8f8', + cancelButtonBackground: '#a9a9a9', }; // Notiflix: Confirm Default Settings off // Notiflix: Loading Default Settings on var loadingSettings = { - ID: 'NotiflixLoadingWrap', // can not customizable - className: 'notiflix-loading', - zindex: 4000, - backgroundColor: 'rgba(0,0,0,0.8)', - rtl: false, - useGoogleFont: true, - fontFamily: 'Quicksand', - cssAnimation: true, - cssAnimationDuration: 400, - clickToClose: false, - customSvgUrl: null, - svgSize: '80px', - svgColor: '#32c682', - messageID: 'NotiflixLoadingMessage', - messageFontSize: '15px', - messageMaxLength: 34, - messageColor: '#dcdcdc', + ID: 'NotiflixLoadingWrap', // can not customizable + className: 'notiflix-loading', + zindex: 4000, + backgroundColor: 'rgba(0,0,0,0.8)', + rtl: false, + useGoogleFont: true, + fontFamily: 'Quicksand', + cssAnimation: true, + cssAnimationDuration: 400, + clickToClose: false, + customSvgUrl: null, + svgSize: '80px', + svgColor: '#32c682', + messageID: 'NotiflixLoadingMessage', + messageFontSize: '15px', + messageMaxLength: 34, + messageColor: '#dcdcdc', }; // Notiflix: Loading Default Settings off // Notiflix: Block Default Settings on var blockSettings = { - ID: 'NotiflixBlockWrap', // can not customizable - querySelectorLimit: 200, - className: 'notiflix-block', - position: 'absolute', - zindex: 1000, - backgroundColor: 'rgba(255,255,255,0.9)', - rtl: false, - useGoogleFont: true, - fontFamily: 'Quicksand', - cssAnimation: true, - cssAnimationDuration: 300, - svgSize: '45px', - svgColor: '#383838', - messageFontSize: '14px', - messageMaxLength: 34, - messageColor: '#383838', + ID: 'NotiflixBlockWrap', // can not customizable + querySelectorLimit: 200, + className: 'notiflix-block', + position: 'absolute', + zindex: 1000, + backgroundColor: 'rgba(255,255,255,0.9)', + rtl: false, + useGoogleFont: true, + fontFamily: 'Quicksand', + cssAnimation: true, + cssAnimationDuration: 300, + svgSize: '45px', + svgColor: '#383838', + messageFontSize: '14px', + messageMaxLength: 34, + messageColor: '#383838', }; // Notiflix: Block Default Settings off // Notiflix: Extend on var extendNotiflix = function () { - // variables - var extended = {}; - var deep = false; - var i = 0; - // check if a deep merge - if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]') { - deep = arguments[0]; - i++; - } - // merge the object into the extended object - var merge = function (obj) { - for (var prop in obj) { - if (Object.prototype.hasOwnProperty.call(obj, prop)) { - // if property is an object, merge properties - if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]') { - extended[prop] = extendNotiflix(extended[prop], obj[prop]); - } else { - extended[prop] = obj[prop]; - } - } - } - }; - // loop through each object and conduct a merge - for (; i < arguments.length; i++) { - merge(arguments[i]); - } - return extended; + // variables + var extended = {}; + var deep = false; + var i = 0; + // check if a deep merge + if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]') { + deep = arguments[0]; + i++; + } + // merge the object into the extended object + var merge = function (obj) { + for (var prop in obj) { + if (Object.prototype.hasOwnProperty.call(obj, prop)) { + // if property is an object, merge properties + if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]') { + extended[prop] = extendNotiflix(extended[prop], obj[prop]); + } else { + extended[prop] = obj[prop]; + } + } + } + }; + // loop through each object and conduct a merge + for (; i < arguments.length; i++) { + merge(arguments[i]); + } + return extended; }; // Notiflix: Extend off // Notiflix: Plaintext on var notiflixPlaintext = function (html) { - var htmlPool = document.createElement('div'); - htmlPool.innerHTML = html; - return htmlPool.textContent || htmlPool.innerText || ''; + var htmlPool = document.createElement('div'); + htmlPool.innerHTML = html; + return htmlPool.textContent || htmlPool.innerText || ''; }; // Notiflix: Plaintext off // Notiflix: GoogleFont on var notiflixGoogleFont = function (use, family) { - if (!document.getElementById('NotiflixQuicksand') && use && (family && typeof family === 'string' && family.toLowerCase() === 'quicksand')) { - // google fonts dns prefetch on - var dns = ''; - var dnsRange = document.createRange(); - dnsRange.selectNode(document.head); - var dnsFragment = dnsRange.createContextualFragment(dns); - document.head.appendChild(dnsFragment); - // google fonts dns prefetch off - - // google fonts style on - var font = ''; - var fontRange = document.createRange(); - fontRange.selectNode(document.head); - var fontFragment = fontRange.createContextualFragment(font); - document.head.appendChild(fontFragment); - // google fonts style off - } + if (!document.getElementById('NotiflixQuicksand') && use && (family && typeof family === 'string' && family.toLowerCase() === 'quicksand')) { + // google fonts dns prefetch on + var dns = ''; + var dnsRange = document.createRange(); + dnsRange.selectNode(document.head); + var dnsFragment = dnsRange.createContextualFragment(dns); + document.head.appendChild(dnsFragment); + // google fonts dns prefetch off + + // google fonts style on + var font = ''; + var fontRange = document.createRange(); + fontRange.selectNode(document.head); + var fontFragment = fontRange.createContextualFragment(font); + document.head.appendChild(fontFragment); + // google fonts style off + } }; // Notiflix: GoogleFont off // Notiflix: Console Error on var notiflixConsoleError = function (title, message) { - return console.error('%c ' + title + ' ', 'padding:2px;border-radius:20px;color:#fff;background:#ff5549', '\n' + message + '\nVisit documentation page to learn more: https://www.notiflix.com/documentation'); + return console.error('%c ' + title + ' ', 'padding:2px;border-radius:20px;color:#fff;background:#ff5549', '\n' + message + '\nVisit documentation page to learn more: https://www.notiflix.com/documentation'); }; // Notiflix: Console Error off // Notiflix: Console Log on var notiflixConsoleLog = function (title, message) { - return console.log('%c ' + title + ' ', 'padding:2px;border-radius:20px;color:#fff;background:#26c0d3', '\n' + message + '\nVisit documentation page to learn more: https://www.notiflix.com/documentation'); + return console.log('%c ' + title + ' ', 'padding:2px;border-radius:20px;color:#fff;background:#26c0d3', '\n' + message + '\nVisit documentation page to learn more: https://www.notiflix.com/documentation'); }; // Notiflix: Console Log off @@ -427,327 +427,327 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var newLoadingSettings; var newBlockSettings; var Notiflix = { - // Notify on - Notify: { - - // Init - Init: function (userNotifyOpt) { - // extend options - newNotifySettings = extendNotiflix(true, notifySettings, userNotifyOpt); - // use GoogleFonts if "Quicksand" - notiflixGoogleFont(newNotifySettings.useGoogleFont, newNotifySettings.fontFamily); - }, - - // Merge First Init - Merge: function (userNotifyExtend) { - // if initialized already - if (newNotifySettings) { - newNotifySettings = extendNotiflix(true, newNotifySettings, userNotifyExtend); - } - // initialize first - else { - notiflixConsoleError('Notiflix Error', 'You have to initialize the Notify module before call Merge function.'); - return false; - } - }, - - // Display Notification: Success - Success: function (message, callback) { - // if not initialized pretend like init - if (!newNotifySettings) { - Notiflix.Notify.Init({}); - } - var theType = newNotifySettings.success; - NotiflixNotify(message, callback, theType, 'Success'); - }, - - // Display Notification: Failure - Failure: function (message, callback) { - // if not initialized pretend like init - if (!newNotifySettings) { - Notiflix.Notify.Init({}); - } - var theType = newNotifySettings.failure; - NotiflixNotify(message, callback, theType, 'Failure'); - }, - - // Display Notification: Warning - Warning: function (message, callback) { - // if not initialized pretend like init - if (!newNotifySettings) { - Notiflix.Notify.Init({}); - } - var theType = newNotifySettings.warning; - NotiflixNotify(message, callback, theType, 'Warning'); - }, - - // Display Notification: Info - Info: function (message, callback) { - // if not initialized pretend like init - if (!newNotifySettings) { - Notiflix.Notify.Init({}); - } - var theType = newNotifySettings.info; - NotiflixNotify(message, callback, theType, 'Info'); - }, - }, - // Notify off - - // Report on - Report: { - - // Init - Init: function (userReportOpt) { - // extend options - newReportSettings = extendNotiflix(true, reportSettings, userReportOpt); - // use GoogleFonts if "Quicksand" - notiflixGoogleFont(newReportSettings.useGoogleFont, newReportSettings.fontFamily); - }, - - // Merge First Init - Merge: function (userReportExtend) { - // if initialized already - if (newReportSettings) { - newReportSettings = extendNotiflix(true, newReportSettings, userReportExtend); - } - // initialize first - else { - notiflixConsoleError('Notiflix Error', 'You have to initialize the Report module before call Merge function.'); - return false; - } - }, - - // Display Report: Success - Success: function (title, message, buttonText, buttonCallback) { - // if not initialized pretend like init - if (!newReportSettings) { - Notiflix.Report.Init({}); - } - var theType = newReportSettings.success; - NotiflixReport(title, message, buttonText, buttonCallback, theType, 'Success'); - }, - - // Display Report: Failure - Failure: function (title, message, buttonText, buttonCallback) { - // if not initialized pretend like init - if (!newReportSettings) { - Notiflix.Report.Init({}); - } - var theType = newReportSettings.failure; - NotiflixReport(title, message, buttonText, buttonCallback, theType, 'Failure'); - }, - - // Display Report: Warning - Warning: function (title, message, buttonText, buttonCallback) { - // if not initialized pretend like init - if (!newReportSettings) { - Notiflix.Report.Init({}); - } - var theType = newReportSettings.warning; - NotiflixReport(title, message, buttonText, buttonCallback, theType, 'Warning'); - }, - - // Display Report: Info - Info: function (title, message, buttonText, buttonCallback) { - // if not initialized pretend like init - if (!newReportSettings) { - Notiflix.Report.Init({}); - } - var theType = newReportSettings.info; - NotiflixReport(title, message, buttonText, buttonCallback, theType, 'Info'); - }, - }, - // Report off - - // Confirm on - Confirm: { - - // Init - Init: function (userConfirmOpt) { - // extend options - newConfirmSettings = extendNotiflix(true, confirmSettings, userConfirmOpt); - // use GoogleFonts if "Quicksand" - notiflixGoogleFont(newConfirmSettings.useGoogleFont, newConfirmSettings.fontFamily); - }, - - // Merge First Init - Merge: function (userConfirmExtend) { - // if initialized already - if (newConfirmSettings) { - newConfirmSettings = extendNotiflix(true, newConfirmSettings, userConfirmExtend); - } - // initialize first - else { - notiflixConsoleError('Notiflix Error', 'You have to initialize the Confirm module before call Merge function.'); - return false; - } - }, - - // Display Confirm: Show - Show: function (title, message, okText, cancelText, okCallback, cancelCallback) { - if (!title) { title = 'Notiflix Confirm'; } - if (!message) { message = 'Do you agree with me?'; } - if (!okText) { okText = 'Yes'; } - if (!cancelText) { cancelText = 'No'; } - if (!okCallback) { okCallback = undefined; } - if (!cancelCallback) { cancelCallback = undefined; } - NotiflixConfirm(title, message, okText, cancelText, okCallback, cancelCallback); - }, - }, - // Confirm off - - // Loading on - Loading: { - - // Init - Init: function (userLoadingOpt) { - // extend options - newLoadingSettings = extendNotiflix(true, loadingSettings, userLoadingOpt); - // use GoogleFonts if "Quicksand" - notiflixGoogleFont(newLoadingSettings.useGoogleFont, newLoadingSettings.fontFamily); - }, - - // Merge First Init - Merge: function (userLoadingExtend) { - // if initialized already - if (newLoadingSettings) { - newLoadingSettings = extendNotiflix(true, newLoadingSettings, userLoadingExtend); - } - // initialize first - else { - notiflixConsoleError('Notiflix Error', 'You have to initialize the Loading module before call Merge function.'); - return false; - } - }, - - // Display Loading: Standard - Standard: function (message) { - NotiflixLoading(message, 'standard', true, 0); // true => display || 0 => delay - }, - - // Display Loading: Hourglass - Hourglass: function (message) { - NotiflixLoading(message, 'hourglass', true, 0); // true => display || 0 => delay - }, - - // Display Loading: Circle - Circle: function (message) { - NotiflixLoading(message, 'circle', true, 0); // true => display || 0 => delay - }, - - // Display Loading: Arrows - Arrows: function (message) { - NotiflixLoading(message, 'arrows', true, 0); // true => display || 0 => delay - }, - - // Display Loading: Dots - Dots: function (message) { - NotiflixLoading(message, 'dots', true, 0); // true => display || 0 => delay - }, - - // Display Loading: Pulse - Pulse: function (message) { - NotiflixLoading(message, 'pulse', true, 0); // true => display || 0 => delay - }, - - // Display Loading: Custom - Custom: function (message) { - NotiflixLoading(message, 'custom', true, 0); // true => display || 0 => delay - }, - - // Display Loading: Notiflix - Notiflix: function (message) { - NotiflixLoading(message, 'notiflix', true, 0); // true => display || 0 => delay - }, - - // Remove Loading - Remove: function (theDelay) { - if (!theDelay) { theDelay = 0; } - NotiflixLoading(false, false, false, theDelay); // false = Remove - }, - - // Change The Message - Change: function (newMessage) { - NotiflixLoadingChange(newMessage); - }, - }, - // Loading off - - // Block on - Block: { - - // Initialize - Init: function (userBlockOpt) { - // extend options - newBlockSettings = extendNotiflix(true, blockSettings, userBlockOpt); - // use GoogleFonts if "Quicksand" - notiflixGoogleFont(newBlockSettings.useGoogleFont, newBlockSettings.fontFamily); - }, - - // Merge First Initialize - Merge: function (userBlockExtend) { - // if initialized already - if (newBlockSettings) { - newBlockSettings = extendNotiflix(true, newBlockSettings, userBlockExtend); - } - // initialize first - else { - notiflixConsoleError('Notiflix Error', 'You have to initialize the "Notiflix.Block" module before call Merge function.'); - return false; - } - }, - - // Display Block: Standard - Standard: function (selector, message) { - var block = true; - var theIcon = 'standard'; - NotiflixBlockUnblockElement(block, selector, theIcon, message); - }, - - // Display Block: Hourglass - Hourglass: function (selector, message) { - var block = true; - var theIcon = 'hourglass'; - NotiflixBlockUnblockElement(block, selector, theIcon, message); - }, - - // Display Block: Circle - Circle: function (selector, message) { - var block = true; - var theIcon = 'circle'; - NotiflixBlockUnblockElement(block, selector, theIcon, message); - }, - - // Display Block: Arrows - Arrows: function (selector, message) { - var block = true; - var theIcon = 'arrows'; - NotiflixBlockUnblockElement(block, selector, theIcon, message); - }, - - // Display Block: Dots - Dots: function (selector, message) { - var block = true; - var theIcon = 'dots'; - NotiflixBlockUnblockElement(block, selector, theIcon, message); - }, - - // Display Block: Pulse - Pulse: function (selector, message) { - var block = true; - var theIcon = 'pulse'; - NotiflixBlockUnblockElement(block, selector, theIcon, message); - }, - - // Remove Block - Remove: function (selector, delay) { - var block = false; - var theIcon = null; - var message = null; - NotiflixBlockUnblockElement(block, selector, theIcon, message, delay); - }, - }, - // Block off + // Notify on + Notify: { + + // Init + Init: function (userNotifyOpt) { + // extend options + newNotifySettings = extendNotiflix(true, notifySettings, userNotifyOpt); + // use GoogleFonts if "Quicksand" + notiflixGoogleFont(newNotifySettings.useGoogleFont, newNotifySettings.fontFamily); + }, + + // Merge First Init + Merge: function (userNotifyExtend) { + // if initialized already + if (newNotifySettings) { + newNotifySettings = extendNotiflix(true, newNotifySettings, userNotifyExtend); + } + // initialize first + else { + notiflixConsoleError('Notiflix Error', 'You have to initialize the Notify module before call Merge function.'); + return false; + } + }, + + // Display Notification: Success + Success: function (message, callback) { + // if not initialized pretend like init + if (!newNotifySettings) { + Notiflix.Notify.Init({}); + } + var theType = newNotifySettings.success; + NotiflixNotify(message, callback, theType, 'Success'); + }, + + // Display Notification: Failure + Failure: function (message, callback) { + // if not initialized pretend like init + if (!newNotifySettings) { + Notiflix.Notify.Init({}); + } + var theType = newNotifySettings.failure; + NotiflixNotify(message, callback, theType, 'Failure'); + }, + + // Display Notification: Warning + Warning: function (message, callback) { + // if not initialized pretend like init + if (!newNotifySettings) { + Notiflix.Notify.Init({}); + } + var theType = newNotifySettings.warning; + NotiflixNotify(message, callback, theType, 'Warning'); + }, + + // Display Notification: Info + Info: function (message, callback) { + // if not initialized pretend like init + if (!newNotifySettings) { + Notiflix.Notify.Init({}); + } + var theType = newNotifySettings.info; + NotiflixNotify(message, callback, theType, 'Info'); + }, + }, + // Notify off + + // Report on + Report: { + + // Init + Init: function (userReportOpt) { + // extend options + newReportSettings = extendNotiflix(true, reportSettings, userReportOpt); + // use GoogleFonts if "Quicksand" + notiflixGoogleFont(newReportSettings.useGoogleFont, newReportSettings.fontFamily); + }, + + // Merge First Init + Merge: function (userReportExtend) { + // if initialized already + if (newReportSettings) { + newReportSettings = extendNotiflix(true, newReportSettings, userReportExtend); + } + // initialize first + else { + notiflixConsoleError('Notiflix Error', 'You have to initialize the Report module before call Merge function.'); + return false; + } + }, + + // Display Report: Success + Success: function (title, message, buttonText, buttonCallback) { + // if not initialized pretend like init + if (!newReportSettings) { + Notiflix.Report.Init({}); + } + var theType = newReportSettings.success; + NotiflixReport(title, message, buttonText, buttonCallback, theType, 'Success'); + }, + + // Display Report: Failure + Failure: function (title, message, buttonText, buttonCallback) { + // if not initialized pretend like init + if (!newReportSettings) { + Notiflix.Report.Init({}); + } + var theType = newReportSettings.failure; + NotiflixReport(title, message, buttonText, buttonCallback, theType, 'Failure'); + }, + + // Display Report: Warning + Warning: function (title, message, buttonText, buttonCallback) { + // if not initialized pretend like init + if (!newReportSettings) { + Notiflix.Report.Init({}); + } + var theType = newReportSettings.warning; + NotiflixReport(title, message, buttonText, buttonCallback, theType, 'Warning'); + }, + + // Display Report: Info + Info: function (title, message, buttonText, buttonCallback) { + // if not initialized pretend like init + if (!newReportSettings) { + Notiflix.Report.Init({}); + } + var theType = newReportSettings.info; + NotiflixReport(title, message, buttonText, buttonCallback, theType, 'Info'); + }, + }, + // Report off + + // Confirm on + Confirm: { + + // Init + Init: function (userConfirmOpt) { + // extend options + newConfirmSettings = extendNotiflix(true, confirmSettings, userConfirmOpt); + // use GoogleFonts if "Quicksand" + notiflixGoogleFont(newConfirmSettings.useGoogleFont, newConfirmSettings.fontFamily); + }, + + // Merge First Init + Merge: function (userConfirmExtend) { + // if initialized already + if (newConfirmSettings) { + newConfirmSettings = extendNotiflix(true, newConfirmSettings, userConfirmExtend); + } + // initialize first + else { + notiflixConsoleError('Notiflix Error', 'You have to initialize the Confirm module before call Merge function.'); + return false; + } + }, + + // Display Confirm: Show + Show: function (title, message, okText, cancelText, okCallback, cancelCallback) { + if (!title) { title = 'Notiflix Confirm'; } + if (!message) { message = 'Do you agree with me?'; } + if (!okText) { okText = 'Yes'; } + if (!cancelText) { cancelText = 'No'; } + if (!okCallback) { okCallback = undefined; } + if (!cancelCallback) { cancelCallback = undefined; } + NotiflixConfirm(title, message, okText, cancelText, okCallback, cancelCallback); + }, + }, + // Confirm off + + // Loading on + Loading: { + + // Init + Init: function (userLoadingOpt) { + // extend options + newLoadingSettings = extendNotiflix(true, loadingSettings, userLoadingOpt); + // use GoogleFonts if "Quicksand" + notiflixGoogleFont(newLoadingSettings.useGoogleFont, newLoadingSettings.fontFamily); + }, + + // Merge First Init + Merge: function (userLoadingExtend) { + // if initialized already + if (newLoadingSettings) { + newLoadingSettings = extendNotiflix(true, newLoadingSettings, userLoadingExtend); + } + // initialize first + else { + notiflixConsoleError('Notiflix Error', 'You have to initialize the Loading module before call Merge function.'); + return false; + } + }, + + // Display Loading: Standard + Standard: function (message) { + NotiflixLoading(message, 'standard', true, 0); // true => display || 0 => delay + }, + + // Display Loading: Hourglass + Hourglass: function (message) { + NotiflixLoading(message, 'hourglass', true, 0); // true => display || 0 => delay + }, + + // Display Loading: Circle + Circle: function (message) { + NotiflixLoading(message, 'circle', true, 0); // true => display || 0 => delay + }, + + // Display Loading: Arrows + Arrows: function (message) { + NotiflixLoading(message, 'arrows', true, 0); // true => display || 0 => delay + }, + + // Display Loading: Dots + Dots: function (message) { + NotiflixLoading(message, 'dots', true, 0); // true => display || 0 => delay + }, + + // Display Loading: Pulse + Pulse: function (message) { + NotiflixLoading(message, 'pulse', true, 0); // true => display || 0 => delay + }, + + // Display Loading: Custom + Custom: function (message) { + NotiflixLoading(message, 'custom', true, 0); // true => display || 0 => delay + }, + + // Display Loading: Notiflix + Notiflix: function (message) { + NotiflixLoading(message, 'notiflix', true, 0); // true => display || 0 => delay + }, + + // Remove Loading + Remove: function (theDelay) { + if (!theDelay) { theDelay = 0; } + NotiflixLoading(false, false, false, theDelay); // false = Remove + }, + + // Change The Message + Change: function (newMessage) { + NotiflixLoadingChange(newMessage); + }, + }, + // Loading off + + // Block on + Block: { + + // Initialize + Init: function (userBlockOpt) { + // extend options + newBlockSettings = extendNotiflix(true, blockSettings, userBlockOpt); + // use GoogleFonts if "Quicksand" + notiflixGoogleFont(newBlockSettings.useGoogleFont, newBlockSettings.fontFamily); + }, + + // Merge First Initialize + Merge: function (userBlockExtend) { + // if initialized already + if (newBlockSettings) { + newBlockSettings = extendNotiflix(true, newBlockSettings, userBlockExtend); + } + // initialize first + else { + notiflixConsoleError('Notiflix Error', 'You have to initialize the "Notiflix.Block" module before call Merge function.'); + return false; + } + }, + + // Display Block: Standard + Standard: function (selector, message) { + var block = true; + var theIcon = 'standard'; + NotiflixBlockUnblockElement(block, selector, theIcon, message); + }, + + // Display Block: Hourglass + Hourglass: function (selector, message) { + var block = true; + var theIcon = 'hourglass'; + NotiflixBlockUnblockElement(block, selector, theIcon, message); + }, + + // Display Block: Circle + Circle: function (selector, message) { + var block = true; + var theIcon = 'circle'; + NotiflixBlockUnblockElement(block, selector, theIcon, message); + }, + + // Display Block: Arrows + Arrows: function (selector, message) { + var block = true; + var theIcon = 'arrows'; + NotiflixBlockUnblockElement(block, selector, theIcon, message); + }, + + // Display Block: Dots + Dots: function (selector, message) { + var block = true; + var theIcon = 'dots'; + NotiflixBlockUnblockElement(block, selector, theIcon, message); + }, + + // Display Block: Pulse + Pulse: function (selector, message) { + var block = true; + var theIcon = 'pulse'; + NotiflixBlockUnblockElement(block, selector, theIcon, message); + }, + + // Remove Block + Remove: function (selector, delay) { + var block = false; + var theIcon = null; + var message = null; + NotiflixBlockUnblockElement(block, selector, theIcon, message, delay); + }, + }, + // Block off }; // Notiflix: Main off @@ -755,298 +755,298 @@ layui.define(['table', 'jquery', 'element'], function (exports) { // Notiflix: Notify Single on var notiflixNotifyCount = 0; var NotiflixNotify = function (message, callback, theType, staticType) { - if (arguments && arguments.length === 4) { - - // notify counter on - notiflixNotifyCount++; - // notify counter off - - // if no message on - if (!message) { - message = 'Notiflix ' + staticType; - } - // if no message off - - // if plainText true = HTML tags not allowed on - if (newNotifySettings.plainText) { - message = notiflixPlaintext(message); // message plain text - } - // if plainText true = HTML tags not allowed off - - // if plainText false but the message length more than messageMaxLength = HTML tags error on - if (!newNotifySettings.plainText && message.length > newNotifySettings.messageMaxLength) { - Notiflix.Notify.Merge({ closeButton: true, plainText: false, }); - message = 'HTML Tags Error: Your content length is more than "messageMaxLength" option.'; // message html error - } - // if plainText false but the message length more than messageMaxLength = HTML tags error off - - // message max length substring on - if (message.length > newNotifySettings.messageMaxLength) { - message = message.substring(0, newNotifySettings.messageMaxLength) + '...'; - } - // message max length substring off - - // font awesome icon style on - if (newNotifySettings.fontAwesomeIconStyle === 'shadow') { - theType.fontAwesomeIconColor = theType.background; - } - // font awesome icon style off - - // if cssAnimaion false -> duration on - if (!newNotifySettings.cssAnimation) { - newNotifySettings.cssAnimationDuration = 0; - } - // if cssAnimaion false -> duration off - - // notify wrap on - var docBody = document.body; - var ntflxNotifyWrap = document.createElement('div'); - ntflxNotifyWrap.id = notifySettings.wrapID; - ntflxNotifyWrap.style.width = newNotifySettings.width; - ntflxNotifyWrap.style.zIndex = newNotifySettings.zindex; - ntflxNotifyWrap.style.opacity = newNotifySettings.opacity; - - // wrap position on - if (newNotifySettings.position === 'right-bottom') { - ntflxNotifyWrap.style.right = newNotifySettings.distance; - ntflxNotifyWrap.style.bottom = newNotifySettings.distance; - ntflxNotifyWrap.style.top = 'auto'; - ntflxNotifyWrap.style.left = 'auto'; - } else if (newNotifySettings.position === 'left-top') { - ntflxNotifyWrap.style.left = newNotifySettings.distance; - ntflxNotifyWrap.style.top = newNotifySettings.distance; - ntflxNotifyWrap.style.right = 'auto'; - ntflxNotifyWrap.style.bottom = 'auto'; - } else if (newNotifySettings.position === 'left-bottom') { - ntflxNotifyWrap.style.left = newNotifySettings.distance; - ntflxNotifyWrap.style.bottom = newNotifySettings.distance; - ntflxNotifyWrap.style.top = 'auto'; - ntflxNotifyWrap.style.right = 'auto'; - } else { // 'right-top' or else - ntflxNotifyWrap.style.right = newNotifySettings.distance; - ntflxNotifyWrap.style.top = newNotifySettings.distance; - ntflxNotifyWrap.style.left = 'auto'; - ntflxNotifyWrap.style.bottom = 'auto'; - } - // wrap position off - - // if background overlay true on - var notifyOverlay; - if (newNotifySettings.backOverlay) { - notifyOverlay = document.createElement('div'); - notifyOverlay.id = newNotifySettings.ID + 'Overlay'; - notifyOverlay.style.width = '100%'; - notifyOverlay.style.height = '100%'; - notifyOverlay.style.position = 'fixed'; - notifyOverlay.style.zIndex = newNotifySettings.zindex; - notifyOverlay.style.left = 0; - notifyOverlay.style.top = 0; - notifyOverlay.style.right = 0; - notifyOverlay.style.bottom = 0; - notifyOverlay.style.background = newNotifySettings.backOverlayColor; - notifyOverlay.className = (newNotifySettings.cssAnimation ? 'with-animation' : ''); - notifyOverlay.style.animationDuration = (newNotifySettings.cssAnimation) ? newNotifySettings.cssAnimationDuration + 'ms' : ''; - if (!document.getElementById(notifyOverlay.id)) { - docBody.appendChild(notifyOverlay); - } - } - // if background overlay true off - - if (!document.getElementById(ntflxNotifyWrap.id)) { - docBody.appendChild(ntflxNotifyWrap); - } - // notify wrap off - - // notify content on - var ntflxNotify = document.createElement('div'); - ntflxNotify.id = newNotifySettings.ID + '-' + notiflixNotifyCount; - ntflxNotify.className = newNotifySettings.className + ' ' + theType.childClassName + ' ' + (newNotifySettings.cssAnimation ? 'with-animation' : '') + ' ' + (newNotifySettings.useIcon ? 'with-icon' : '') + ' nx-' + newNotifySettings.cssAnimationStyle + ' ' + (newNotifySettings.closeButton && !callback ? 'with-close-button' : '') + ' ' + (callback && typeof callback === 'function' ? 'with-callback' : '') + ' ' + (newNotifySettings.clickToClose ? 'click-to-close' : ''); - ntflxNotify.style.fontSize = newNotifySettings.fontSize; - ntflxNotify.style.color = theType.textColor; - ntflxNotify.style.background = theType.background; - ntflxNotify.style.borderRadius = newNotifySettings.borderRadius; - - // rtl on - if (newNotifySettings.rtl) { - ntflxNotify.setAttribute('dir', 'rtl'); - ntflxNotify.classList.add('rtl-on'); - } - // rtl off - - // font-family on - ntflxNotify.style.fontFamily = '"' + newNotifySettings.fontFamily + '"' + ', sans-serif'; - // font-family off - - // use css animation on - if (newNotifySettings.cssAnimation) { - ntflxNotify.style.animationDuration = newNotifySettings.cssAnimationDuration + 'ms'; - } - // use css animation off - - // close button element on - var closeButtonHTML = ''; - if (newNotifySettings.closeButton && !callback) { - closeButtonHTML = ''; - } - // close buttpon element off - - // use icon on - if (newNotifySettings.useIcon) { - // use font awesome - if (newNotifySettings.useFontAwesome) { - ntflxNotify.innerHTML = '' + message + '' + (newNotifySettings.closeButton ? closeButtonHTML : ''); - } - // use notiflix icon - else { - var svgIcon; - if (staticType === 'Success') { // success - svgIcon = ''; - } else if (staticType === 'Failure') { // failure - svgIcon = ''; - } else if (staticType === 'Warning') { // warning - svgIcon = ''; - } else if (staticType === 'Info') { // info - svgIcon = ''; - } else { - svgIcon = ''; - } - ntflxNotify.innerHTML = svgIcon + '' + message + '' + (newNotifySettings.closeButton ? closeButtonHTML : ''); - } - } - // without icon - else { - ntflxNotify.innerHTML = '' + message + '' + (newNotifySettings.closeButton ? closeButtonHTML : ''); - } - // use icon off - // notify content off - - // notify append or prepend on - if (newNotifySettings.position === 'left-bottom' || newNotifySettings.position === 'right-bottom') { // the new one will be first - var notifyWrap = document.getElementById(ntflxNotifyWrap.id); - notifyWrap.insertBefore(ntflxNotify, notifyWrap.firstChild); - } else { - document.getElementById(ntflxNotifyWrap.id).appendChild(ntflxNotify); - } - - if (newNotifySettings.useIcon) { // if useIcon, dynamically vertical align the contents - var messageIcon = document.getElementById(ntflxNotify.id).querySelectorAll('.nmi')[0]; - var messageIconH = 40; - // if font awesome - if (newNotifySettings.useFontAwesome) { - messageIconH = Math.round(parseInt(messageIcon.offsetHeight)); - } - // if notiflix SVG - else { - var SvgBBox = messageIcon.getBBox(); - messageIconH = Math.round(parseInt(SvgBBox.width)); - } - var messageText = document.getElementById(ntflxNotify.id).querySelectorAll('span')[0]; - var messageTextH = Math.round(messageText.offsetHeight); - if (messageTextH <= messageIconH) { - messageText.style.paddingTop = (messageIconH - messageTextH) / 2 + 'px'; - messageText.style.paddingBottom = (messageIconH - messageTextH) / 2 + 'px'; - } - } - // notify append or prepend off - - // remove by timeout or click on - if (document.getElementById(ntflxNotify.id)) { - // set elements on - var removeDiv = document.getElementById(ntflxNotify.id); - var removeWrap = document.getElementById(ntflxNotifyWrap.id); - var removeOverlay; - if (newNotifySettings.backOverlay) { - removeOverlay = document.getElementById(notifyOverlay.id); - } - // set elements on - - // timeout vars on - var timeoutHide; - var timeoutRemove; - // timeout vars off - - // hide notify elm and hide overlay on - var hideNotifyElementsAndOverlay = function () { - removeDiv.classList.add('remove'); - if (newNotifySettings.backOverlay && removeWrap.childElementCount <= 0) { - removeOverlay.classList.add('remove'); - } - clearTimeout(timeoutHide); - }; - // hide notify elm and hide overlay off - - // remove notify elm and wrapper on - var removeNotifyElmentsAndWrapper = function () { - var notifyExist = document.getElementById(ntflxNotify.id); - if (notifyExist && removeDiv.parentNode !== null) { - removeDiv.parentNode.removeChild(removeDiv); - } - if (removeWrap.childElementCount <= 0 && removeWrap.parentNode !== null) { // if childs count === 0 remove wrap - removeWrap.parentNode.removeChild(removeWrap); - if (newNotifySettings.backOverlay && removeOverlay.parentNode !== null) { - removeOverlay.parentNode.removeChild(removeOverlay); - } - } - clearTimeout(timeoutRemove); - }; - // remove notify elm and wrapper off - - // if close button and callback undefined on - if (newNotifySettings.closeButton && !callback) { - var closeButtonElm = document.getElementById(ntflxNotify.id).querySelectorAll('span.notify-close-button')[0]; - closeButtonElm.addEventListener('click', function () { - hideNotifyElementsAndOverlay(); - var clickToCloseTimeout = setTimeout(function () { - removeNotifyElmentsAndWrapper(); - clearTimeout(clickToCloseTimeout); - }, newNotifySettings.cssAnimationDuration); - }); - } - // if close button and callback undefined off - - // if callback or click to close on - if ((callback && typeof callback === 'function') || newNotifySettings.clickToClose) { - removeDiv.addEventListener('click', function (e) { - if (callback && typeof callback === 'function') { - callback(); - } - hideNotifyElementsAndOverlay(); - var callbackTimeout = setTimeout(function () { - removeNotifyElmentsAndWrapper(); - clearTimeout(callbackTimeout); - }, newNotifySettings.cssAnimationDuration); - }); - } - // if callback or click to close off - - // else auto remove on - if (!newNotifySettings.closeButton && !callback) { - timeoutHide = setTimeout(function () { - hideNotifyElementsAndOverlay(); - }, newNotifySettings.timeout); - timeoutRemove = setTimeout(function () { - removeNotifyElmentsAndWrapper(); - }, newNotifySettings.timeout + newNotifySettings.cssAnimationDuration); - } - // else auto remove off - } - // remove by timeout or click off - - // notify - show only the last one on - if (newNotifySettings.showOnlyTheLastOne && notiflixNotifyCount > 0) { - var allNotifyElmNotTheLastOne = document.querySelectorAll('[id^=' + newNotifySettings.ID + '-]:not([id=' + newNotifySettings.ID + '-' + notiflixNotifyCount + '])'); - for (var i = 0; i < allNotifyElmNotTheLastOne.length; i++) { - var eachNotifyElmNotLastOne = allNotifyElmNotTheLastOne[i]; - if (eachNotifyElmNotLastOne.parentNode !== null) { - eachNotifyElmNotLastOne.parentNode.removeChild(eachNotifyElmNotLastOne); - } - } - } - // notify - show only the last one off - - } else { - notiflixConsoleError('Notiflix Error', 'Where is the arguments?'); - } + if (arguments && arguments.length === 4) { + + // notify counter on + notiflixNotifyCount++; + // notify counter off + + // if no message on + if (!message) { + message = 'Notiflix ' + staticType; + } + // if no message off + + // if plainText true = HTML tags not allowed on + if (newNotifySettings.plainText) { + message = notiflixPlaintext(message); // message plain text + } + // if plainText true = HTML tags not allowed off + + // if plainText false but the message length more than messageMaxLength = HTML tags error on + if (!newNotifySettings.plainText && message.length > newNotifySettings.messageMaxLength) { + Notiflix.Notify.Merge({ closeButton: true, plainText: false, }); + message = 'HTML Tags Error: Your content length is more than "messageMaxLength" option.'; // message html error + } + // if plainText false but the message length more than messageMaxLength = HTML tags error off + + // message max length substring on + if (message.length > newNotifySettings.messageMaxLength) { + message = message.substring(0, newNotifySettings.messageMaxLength) + '...'; + } + // message max length substring off + + // font awesome icon style on + if (newNotifySettings.fontAwesomeIconStyle === 'shadow') { + theType.fontAwesomeIconColor = theType.background; + } + // font awesome icon style off + + // if cssAnimaion false -> duration on + if (!newNotifySettings.cssAnimation) { + newNotifySettings.cssAnimationDuration = 0; + } + // if cssAnimaion false -> duration off + + // notify wrap on + var docBody = document.body; + var ntflxNotifyWrap = document.createElement('div'); + ntflxNotifyWrap.id = notifySettings.wrapID; + ntflxNotifyWrap.style.width = newNotifySettings.width; + ntflxNotifyWrap.style.zIndex = newNotifySettings.zindex; + ntflxNotifyWrap.style.opacity = newNotifySettings.opacity; + + // wrap position on + if (newNotifySettings.position === 'right-bottom') { + ntflxNotifyWrap.style.right = newNotifySettings.distance; + ntflxNotifyWrap.style.bottom = newNotifySettings.distance; + ntflxNotifyWrap.style.top = 'auto'; + ntflxNotifyWrap.style.left = 'auto'; + } else if (newNotifySettings.position === 'left-top') { + ntflxNotifyWrap.style.left = newNotifySettings.distance; + ntflxNotifyWrap.style.top = newNotifySettings.distance; + ntflxNotifyWrap.style.right = 'auto'; + ntflxNotifyWrap.style.bottom = 'auto'; + } else if (newNotifySettings.position === 'left-bottom') { + ntflxNotifyWrap.style.left = newNotifySettings.distance; + ntflxNotifyWrap.style.bottom = newNotifySettings.distance; + ntflxNotifyWrap.style.top = 'auto'; + ntflxNotifyWrap.style.right = 'auto'; + } else { // 'right-top' or else + ntflxNotifyWrap.style.right = newNotifySettings.distance; + ntflxNotifyWrap.style.top = newNotifySettings.distance; + ntflxNotifyWrap.style.left = 'auto'; + ntflxNotifyWrap.style.bottom = 'auto'; + } + // wrap position off + + // if background overlay true on + var notifyOverlay; + if (newNotifySettings.backOverlay) { + notifyOverlay = document.createElement('div'); + notifyOverlay.id = newNotifySettings.ID + 'Overlay'; + notifyOverlay.style.width = '100%'; + notifyOverlay.style.height = '100%'; + notifyOverlay.style.position = 'fixed'; + notifyOverlay.style.zIndex = newNotifySettings.zindex; + notifyOverlay.style.left = 0; + notifyOverlay.style.top = 0; + notifyOverlay.style.right = 0; + notifyOverlay.style.bottom = 0; + notifyOverlay.style.background = newNotifySettings.backOverlayColor; + notifyOverlay.className = (newNotifySettings.cssAnimation ? 'with-animation' : ''); + notifyOverlay.style.animationDuration = (newNotifySettings.cssAnimation) ? newNotifySettings.cssAnimationDuration + 'ms' : ''; + if (!document.getElementById(notifyOverlay.id)) { + docBody.appendChild(notifyOverlay); + } + } + // if background overlay true off + + if (!document.getElementById(ntflxNotifyWrap.id)) { + docBody.appendChild(ntflxNotifyWrap); + } + // notify wrap off + + // notify content on + var ntflxNotify = document.createElement('div'); + ntflxNotify.id = newNotifySettings.ID + '-' + notiflixNotifyCount; + ntflxNotify.className = newNotifySettings.className + ' ' + theType.childClassName + ' ' + (newNotifySettings.cssAnimation ? 'with-animation' : '') + ' ' + (newNotifySettings.useIcon ? 'with-icon' : '') + ' nx-' + newNotifySettings.cssAnimationStyle + ' ' + (newNotifySettings.closeButton && !callback ? 'with-close-button' : '') + ' ' + (callback && typeof callback === 'function' ? 'with-callback' : '') + ' ' + (newNotifySettings.clickToClose ? 'click-to-close' : ''); + ntflxNotify.style.fontSize = newNotifySettings.fontSize; + ntflxNotify.style.color = theType.textColor; + ntflxNotify.style.background = theType.background; + ntflxNotify.style.borderRadius = newNotifySettings.borderRadius; + + // rtl on + if (newNotifySettings.rtl) { + ntflxNotify.setAttribute('dir', 'rtl'); + ntflxNotify.classList.add('rtl-on'); + } + // rtl off + + // font-family on + ntflxNotify.style.fontFamily = '"' + newNotifySettings.fontFamily + '"' + ', sans-serif'; + // font-family off + + // use css animation on + if (newNotifySettings.cssAnimation) { + ntflxNotify.style.animationDuration = newNotifySettings.cssAnimationDuration + 'ms'; + } + // use css animation off + + // close button element on + var closeButtonHTML = ''; + if (newNotifySettings.closeButton && !callback) { + closeButtonHTML = ''; + } + // close buttpon element off + + // use icon on + if (newNotifySettings.useIcon) { + // use font awesome + if (newNotifySettings.useFontAwesome) { + ntflxNotify.innerHTML = '' + message + '' + (newNotifySettings.closeButton ? closeButtonHTML : ''); + } + // use notiflix icon + else { + var svgIcon; + if (staticType === 'Success') { // success + svgIcon = ''; + } else if (staticType === 'Failure') { // failure + svgIcon = ''; + } else if (staticType === 'Warning') { // warning + svgIcon = ''; + } else if (staticType === 'Info') { // info + svgIcon = ''; + } else { + svgIcon = ''; + } + ntflxNotify.innerHTML = svgIcon + '' + message + '' + (newNotifySettings.closeButton ? closeButtonHTML : ''); + } + } + // without icon + else { + ntflxNotify.innerHTML = '' + message + '' + (newNotifySettings.closeButton ? closeButtonHTML : ''); + } + // use icon off + // notify content off + + // notify append or prepend on + if (newNotifySettings.position === 'left-bottom' || newNotifySettings.position === 'right-bottom') { // the new one will be first + var notifyWrap = document.getElementById(ntflxNotifyWrap.id); + notifyWrap.insertBefore(ntflxNotify, notifyWrap.firstChild); + } else { + document.getElementById(ntflxNotifyWrap.id).appendChild(ntflxNotify); + } + + if (newNotifySettings.useIcon) { // if useIcon, dynamically vertical align the contents + var messageIcon = document.getElementById(ntflxNotify.id).querySelectorAll('.nmi')[0]; + var messageIconH = 40; + // if font awesome + if (newNotifySettings.useFontAwesome) { + messageIconH = Math.round(parseInt(messageIcon.offsetHeight)); + } + // if notiflix SVG + else { + var SvgBBox = messageIcon.getBBox(); + messageIconH = Math.round(parseInt(SvgBBox.width)); + } + var messageText = document.getElementById(ntflxNotify.id).querySelectorAll('span')[0]; + var messageTextH = Math.round(messageText.offsetHeight); + if (messageTextH <= messageIconH) { + messageText.style.paddingTop = (messageIconH - messageTextH) / 2 + 'px'; + messageText.style.paddingBottom = (messageIconH - messageTextH) / 2 + 'px'; + } + } + // notify append or prepend off + + // remove by timeout or click on + if (document.getElementById(ntflxNotify.id)) { + // set elements on + var removeDiv = document.getElementById(ntflxNotify.id); + var removeWrap = document.getElementById(ntflxNotifyWrap.id); + var removeOverlay; + if (newNotifySettings.backOverlay) { + removeOverlay = document.getElementById(notifyOverlay.id); + } + // set elements on + + // timeout vars on + var timeoutHide; + var timeoutRemove; + // timeout vars off + + // hide notify elm and hide overlay on + var hideNotifyElementsAndOverlay = function () { + removeDiv.classList.add('remove'); + if (newNotifySettings.backOverlay && removeWrap.childElementCount <= 0) { + removeOverlay.classList.add('remove'); + } + clearTimeout(timeoutHide); + }; + // hide notify elm and hide overlay off + + // remove notify elm and wrapper on + var removeNotifyElmentsAndWrapper = function () { + var notifyExist = document.getElementById(ntflxNotify.id); + if (notifyExist && removeDiv.parentNode !== null) { + removeDiv.parentNode.removeChild(removeDiv); + } + if (removeWrap.childElementCount <= 0 && removeWrap.parentNode !== null) { // if childs count === 0 remove wrap + removeWrap.parentNode.removeChild(removeWrap); + if (newNotifySettings.backOverlay && removeOverlay.parentNode !== null) { + removeOverlay.parentNode.removeChild(removeOverlay); + } + } + clearTimeout(timeoutRemove); + }; + // remove notify elm and wrapper off + + // if close button and callback undefined on + if (newNotifySettings.closeButton && !callback) { + var closeButtonElm = document.getElementById(ntflxNotify.id).querySelectorAll('span.notify-close-button')[0]; + closeButtonElm.addEventListener('click', function () { + hideNotifyElementsAndOverlay(); + var clickToCloseTimeout = setTimeout(function () { + removeNotifyElmentsAndWrapper(); + clearTimeout(clickToCloseTimeout); + }, newNotifySettings.cssAnimationDuration); + }); + } + // if close button and callback undefined off + + // if callback or click to close on + if ((callback && typeof callback === 'function') || newNotifySettings.clickToClose) { + removeDiv.addEventListener('click', function (e) { + if (callback && typeof callback === 'function') { + callback(); + } + hideNotifyElementsAndOverlay(); + var callbackTimeout = setTimeout(function () { + removeNotifyElmentsAndWrapper(); + clearTimeout(callbackTimeout); + }, newNotifySettings.cssAnimationDuration); + }); + } + // if callback or click to close off + + // else auto remove on + if (!newNotifySettings.closeButton && !callback) { + timeoutHide = setTimeout(function () { + hideNotifyElementsAndOverlay(); + }, newNotifySettings.timeout); + timeoutRemove = setTimeout(function () { + removeNotifyElmentsAndWrapper(); + }, newNotifySettings.timeout + newNotifySettings.cssAnimationDuration); + } + // else auto remove off + } + // remove by timeout or click off + + // notify - show only the last one on + if (newNotifySettings.showOnlyTheLastOne && notiflixNotifyCount > 0) { + var allNotifyElmNotTheLastOne = document.querySelectorAll('[id^=' + newNotifySettings.ID + '-]:not([id=' + newNotifySettings.ID + '-' + notiflixNotifyCount + '])'); + for (var i = 0; i < allNotifyElmNotTheLastOne.length; i++) { + var eachNotifyElmNotLastOne = allNotifyElmNotTheLastOne[i]; + if (eachNotifyElmNotLastOne.parentNode !== null) { + eachNotifyElmNotLastOne.parentNode.removeChild(eachNotifyElmNotLastOne); + } + } + } + // notify - show only the last one off + + } else { + notiflixConsoleError('Notiflix Error', 'Where is the arguments?'); + } }; // Notiflix: Notify Single off @@ -1054,151 +1054,151 @@ layui.define(['table', 'jquery', 'element'], function (exports) { // Notiflix: Report Single on var NotiflixReport = function (title, message, buttonText, buttonCallback, theType, staticType) { - // check the arguments on - if (!title) { title = 'Notiflix ' + staticType; } - if (!message) { - if (staticType === 'Success') { - message = '"Do not try to become a person of success but try to become a person of value."

    - Albert Einstein'; - } - else if (staticType === 'Failure') { - message = '"Failure is simply the opportunity to begin again, this time more intelligently."

    - Henry Ford'; - } - else if (staticType === 'Warning') { - message = '"The peoples who want to live comfortably without producing and fatigue; they are doomed to lose their dignity, then liberty, and then independence and destiny."

    - Mustafa Kemal Ataturk'; - } - else if (staticType === 'Info') { - message = '"Knowledge rests not upon truth alone, but upon error also."

    - Carl Gustav Jung'; - } - } - if (!buttonText) { buttonText = 'Okay'; } - if (!buttonCallback) { buttonCallback = undefined; } - // check the arguments off - - // if plainText true = HTML tags not allowed on - if (newReportSettings.plainText) { - title = notiflixPlaintext(title); - message = notiflixPlaintext(message); - buttonText = notiflixPlaintext(buttonText); - } - // if plainText true = HTML tags not allowed off - - // if plainText false but the contents length more than *MaxLength = HTML tags error on - if (!newReportSettings.plainText) { - if (title.length > newReportSettings.titleMaxLength) { - title = 'HTML Tags Error'; // title html error - message = 'Your Title content length is more than "titleMaxLength" option.'; // message html error - buttonText = 'Okay'; // button html error - } - if (message.length > newReportSettings.messageMaxLength) { - title = 'HTML Tags Error'; // title html error - message = 'Your Message content length is more than "messageMaxLength" option.'; // message html error - buttonText = 'Okay'; // button html error - } - if (buttonText.length > newReportSettings.buttonMaxLength) { - title = 'HTML Tags Error'; // title html error - message = 'Your Button content length is more than "buttonMaxLength" option.'; // message html error - buttonText = 'Okay'; // button html error - } - } - // if plainText false but the contents length more than *MaxLength = HTML tags error off - - // max length on - if (title.length > newReportSettings.titleMaxLength) { - title = title.substring(0, newReportSettings.titleMaxLength) + '...'; - } - if (message.length > newReportSettings.messageMaxLength) { - message = message.substring(0, newReportSettings.messageMaxLength) + '...'; - } - if (buttonText.length > newReportSettings.buttonMaxLength) { - buttonText = buttonText.substring(0, newReportSettings.buttonMaxLength) + '...'; - } - // max length off - - // if cssAnimaion false -> duration on - if (!newReportSettings.cssAnimation) { - newReportSettings.cssAnimationDuration = 0; - } - // if cssAnimaion false -> duration off - - // report wrap on - var docBody = document.body; - var ntflxReportWrap = document.createElement('div'); - ntflxReportWrap.id = reportSettings.ID; - ntflxReportWrap.className = newReportSettings.className; - ntflxReportWrap.style.width = newReportSettings.width; - ntflxReportWrap.style.zIndex = newReportSettings.zindex; - ntflxReportWrap.style.borderRadius = newReportSettings.borderRadius; - ntflxReportWrap.style.fontFamily = '"' + newReportSettings.fontFamily + '"' + ', sans-serif'; - - // rtl on - if (newReportSettings.rtl) { - ntflxReportWrap.setAttribute('dir', 'rtl'); - ntflxReportWrap.classList.add('rtl-on'); - } - // rtl off - - // overlay on - var reportOverlay = ''; - if (newReportSettings.backOverlay) { - reportOverlay = '
    '; - } - // overlay off - - // svg icon on - var svgIcon = ''; - if (staticType === 'Success') { - svgIcon = notiflixReportSvgSuccess(newReportSettings.svgSize, theType.svgColor); - } else if (staticType === 'Failure') { - svgIcon = notiflixReportSvgFailure(newReportSettings.svgSize, theType.svgColor); - } else if (staticType === 'Warning') { - svgIcon = notiflixReportSvgWarning(newReportSettings.svgSize, theType.svgColor); - } else if (staticType === 'Info') { - svgIcon = notiflixReportSvgInfo(newReportSettings.svgSize, theType.svgColor); - } - // svg icon off - - ntflxReportWrap.innerHTML = reportOverlay + '
    ' + - '
    ' + svgIcon + '
    ' + - '
    ' + title + '
    ' + - '

    ' + message + '

    ' + - '' + buttonText + '' + - '
    '; - - // if there is no report element - if (!document.getElementById(ntflxReportWrap.id)) { - // append - docBody.appendChild(ntflxReportWrap); - - // vertical align on - var windowH = Math.round(window.innerHeight); - var reportH = Math.round(document.getElementById(ntflxReportWrap.id).offsetHeight); - ntflxReportWrap.style.top = (windowH - reportH) / 2 + 'px'; - // vertical align off - - // callback on - var getReportWrap = document.getElementById(ntflxReportWrap.id); - var reportButton = document.getElementById('NXReportButton'); - reportButton.addEventListener('click', function () { - // if callback on - if (buttonCallback && typeof buttonCallback === 'function') { - buttonCallback(); - } - // if callback off - - // remove element on - getReportWrap.classList.add('remove'); - var timeout = setTimeout(function () { - if (getReportWrap.parentNode !== null) { - getReportWrap.parentNode.removeChild(getReportWrap); - } - clearTimeout(timeout); - }, newReportSettings.cssAnimationDuration); - // remove element off - }); - // callback off - - } - // report wrap off + // check the arguments on + if (!title) { title = 'Notiflix ' + staticType; } + if (!message) { + if (staticType === 'Success') { + message = '"Do not try to become a person of success but try to become a person of value."

    - Albert Einstein'; + } + else if (staticType === 'Failure') { + message = '"Failure is simply the opportunity to begin again, this time more intelligently."

    - Henry Ford'; + } + else if (staticType === 'Warning') { + message = '"The peoples who want to live comfortably without producing and fatigue; they are doomed to lose their dignity, then liberty, and then independence and destiny."

    - Mustafa Kemal Ataturk'; + } + else if (staticType === 'Info') { + message = '"Knowledge rests not upon truth alone, but upon error also."

    - Carl Gustav Jung'; + } + } + if (!buttonText) { buttonText = 'Okay'; } + if (!buttonCallback) { buttonCallback = undefined; } + // check the arguments off + + // if plainText true = HTML tags not allowed on + if (newReportSettings.plainText) { + title = notiflixPlaintext(title); + message = notiflixPlaintext(message); + buttonText = notiflixPlaintext(buttonText); + } + // if plainText true = HTML tags not allowed off + + // if plainText false but the contents length more than *MaxLength = HTML tags error on + if (!newReportSettings.plainText) { + if (title.length > newReportSettings.titleMaxLength) { + title = 'HTML Tags Error'; // title html error + message = 'Your Title content length is more than "titleMaxLength" option.'; // message html error + buttonText = 'Okay'; // button html error + } + if (message.length > newReportSettings.messageMaxLength) { + title = 'HTML Tags Error'; // title html error + message = 'Your Message content length is more than "messageMaxLength" option.'; // message html error + buttonText = 'Okay'; // button html error + } + if (buttonText.length > newReportSettings.buttonMaxLength) { + title = 'HTML Tags Error'; // title html error + message = 'Your Button content length is more than "buttonMaxLength" option.'; // message html error + buttonText = 'Okay'; // button html error + } + } + // if plainText false but the contents length more than *MaxLength = HTML tags error off + + // max length on + if (title.length > newReportSettings.titleMaxLength) { + title = title.substring(0, newReportSettings.titleMaxLength) + '...'; + } + if (message.length > newReportSettings.messageMaxLength) { + message = message.substring(0, newReportSettings.messageMaxLength) + '...'; + } + if (buttonText.length > newReportSettings.buttonMaxLength) { + buttonText = buttonText.substring(0, newReportSettings.buttonMaxLength) + '...'; + } + // max length off + + // if cssAnimaion false -> duration on + if (!newReportSettings.cssAnimation) { + newReportSettings.cssAnimationDuration = 0; + } + // if cssAnimaion false -> duration off + + // report wrap on + var docBody = document.body; + var ntflxReportWrap = document.createElement('div'); + ntflxReportWrap.id = reportSettings.ID; + ntflxReportWrap.className = newReportSettings.className; + ntflxReportWrap.style.width = newReportSettings.width; + ntflxReportWrap.style.zIndex = newReportSettings.zindex; + ntflxReportWrap.style.borderRadius = newReportSettings.borderRadius; + ntflxReportWrap.style.fontFamily = '"' + newReportSettings.fontFamily + '"' + ', sans-serif'; + + // rtl on + if (newReportSettings.rtl) { + ntflxReportWrap.setAttribute('dir', 'rtl'); + ntflxReportWrap.classList.add('rtl-on'); + } + // rtl off + + // overlay on + var reportOverlay = ''; + if (newReportSettings.backOverlay) { + reportOverlay = '
    '; + } + // overlay off + + // svg icon on + var svgIcon = ''; + if (staticType === 'Success') { + svgIcon = notiflixReportSvgSuccess(newReportSettings.svgSize, theType.svgColor); + } else if (staticType === 'Failure') { + svgIcon = notiflixReportSvgFailure(newReportSettings.svgSize, theType.svgColor); + } else if (staticType === 'Warning') { + svgIcon = notiflixReportSvgWarning(newReportSettings.svgSize, theType.svgColor); + } else if (staticType === 'Info') { + svgIcon = notiflixReportSvgInfo(newReportSettings.svgSize, theType.svgColor); + } + // svg icon off + + ntflxReportWrap.innerHTML = reportOverlay + '
    ' + + '
    ' + svgIcon + '
    ' + + '
    ' + title + '
    ' + + '

    ' + message + '

    ' + + '' + buttonText + '' + + '
    '; + + // if there is no report element + if (!document.getElementById(ntflxReportWrap.id)) { + // append + docBody.appendChild(ntflxReportWrap); + + // vertical align on + var windowH = Math.round(window.innerHeight); + var reportH = Math.round(document.getElementById(ntflxReportWrap.id).offsetHeight); + ntflxReportWrap.style.top = (windowH - reportH) / 2 + 'px'; + // vertical align off + + // callback on + var getReportWrap = document.getElementById(ntflxReportWrap.id); + var reportButton = document.getElementById('NXReportButton'); + reportButton.addEventListener('click', function () { + // if callback on + if (buttonCallback && typeof buttonCallback === 'function') { + buttonCallback(); + } + // if callback off + + // remove element on + getReportWrap.classList.add('remove'); + var timeout = setTimeout(function () { + if (getReportWrap.parentNode !== null) { + getReportWrap.parentNode.removeChild(getReportWrap); + } + clearTimeout(timeout); + }, newReportSettings.cssAnimationDuration); + // remove element off + }); + // callback off + + } + // report wrap off }; // Notiflix: Report Single off @@ -1206,383 +1206,383 @@ layui.define(['table', 'jquery', 'element'], function (exports) { // Notiflix: Confirm Single on var NotiflixConfirm = function (title, message, okButtonText, cancelButtonText, okButtonCallback, cancelButtonCallback) { - // if not initialized pretend like init - if (!newConfirmSettings) { - Notiflix.Confirm.Init({}); - } - - // if plainText true => HTML tags not allowed on - if (newConfirmSettings.plainText) { - title = notiflixPlaintext(title); - message = notiflixPlaintext(message); - okButtonText = notiflixPlaintext(okButtonText); - cancelButtonText = notiflixPlaintext(cancelButtonText); - } - // if plainText true => HTML tags not allowed off - - // if plainText false but the contents length more than *MaxLength = HTML tags error on - if (!newConfirmSettings.plainText) { - if (title.length > newConfirmSettings.titleMaxLength) { - title = 'HTML Tags Error'; // title html error - message = 'Your Title content length is more than "titleMaxLength" option.'; // message html error - okButtonText = 'Okay'; // button html error - cancelButtonText = '...'; // button html error - } - if (message.length > newConfirmSettings.messageMaxLength) { - title = 'HTML Tags Error'; // title html error - message = 'Your Message content length is more than "messageMaxLength" option.'; // message html error - okButtonText = 'Okay'; // button html error - cancelButtonText = '...'; // button html error - } - if ((okButtonText.length || cancelButtonText.length) > newConfirmSettings.buttonsMaxLength) { - title = 'HTML Tags Error'; // title html error - message = 'Your Buttons contents length is more than "buttonsMaxLength" option.'; // message html error - okButtonText = 'Okay'; // button html error - cancelButtonText = '...'; // button html error - } - } - // if plainText false but the contents length more than *MaxLength = HTML tags error off - - // max length on - if (title.length > newConfirmSettings.titleMaxLength) { - title = title.substring(0, newConfirmSettings.titleMaxLength) + '...'; - } - if (message.length > newConfirmSettings.messageMaxLength) { - message = message.substring(0, newConfirmSettings.messageMaxLength) + '...'; - } - if (okButtonText.length > newConfirmSettings.buttonsMaxLength) { - okButtonText = okButtonText.substring(0, newConfirmSettings.buttonsMaxLength) + '...'; - } - if (cancelButtonText.length > newConfirmSettings.buttonsMaxLength) { - cancelButtonText = cancelButtonText.substring(0, newConfirmSettings.buttonsMaxLength) + '...'; - } - // max length off - - // if cssAnimaion false -> duration on - if (!newConfirmSettings.cssAnimation) { - newConfirmSettings.cssAnimationDuration = 0; - } - // if cssAnimaion false -> duration off - - // confirm wrap on - var docBody = document.body; - var ntflxConfirmWrap = document.createElement('div'); - ntflxConfirmWrap.id = confirmSettings.ID; - ntflxConfirmWrap.className = newConfirmSettings.className + (newConfirmSettings.cssAnimation ? ' with-animation nx-' + newConfirmSettings.cssAnimationStyle : ''); - ntflxConfirmWrap.style.width = newConfirmSettings.width; - ntflxConfirmWrap.style.zIndex = newConfirmSettings.zindex; - - // rtl on - if (newConfirmSettings.rtl) { - ntflxConfirmWrap.setAttribute('dir', 'rtl'); - ntflxConfirmWrap.classList.add('rtl-on'); - } - // rtl off - - // font-family on - ntflxConfirmWrap.style.fontFamily = '"' + newConfirmSettings.fontFamily + '"' + ', sans-serif'; - // font-family off - - // if background overlay true on - var confirmOverlay = ''; - if (newConfirmSettings.backOverlay) { - confirmOverlay = '
    '; - } - // if background overlay true off - - // if have a callback => add cancel button on - var cancelButtonHTML = ''; - if (okButtonCallback) { - cancelButtonHTML = '' + cancelButtonText + ''; - } - // if have a callback => add cancel button off - - ntflxConfirmWrap.innerHTML = confirmOverlay + - '
    ' + - '
    ' + - '
    ' + title + '
    ' + - '

    ' + message + '

    ' + - '
    ' + - '
    ' + - '' + okButtonText + '' + - cancelButtonHTML + - '
    ' + - '
    '; - // confirm wrap off - - // if there is no confirm box on - if (!document.getElementById(ntflxConfirmWrap.id)) { - docBody.appendChild(ntflxConfirmWrap); - - // position on - if (newConfirmSettings.position === 'center') { // if center-center - var windowH = Math.round(window.innerHeight); - var confirmH = Math.round(document.getElementById(ntflxConfirmWrap.id).offsetHeight); - ntflxConfirmWrap.style.top = (windowH - confirmH) / 2 + 'px'; - ntflxConfirmWrap.style.left = newConfirmSettings.distance; - ntflxConfirmWrap.style.right = newConfirmSettings.distance; - ntflxConfirmWrap.style.bottom = 'auto'; - ntflxConfirmWrap.style.margin = 'auto'; - } else if (newConfirmSettings.position === 'right-top') { // if right-top - ntflxConfirmWrap.style.right = newConfirmSettings.distance; - ntflxConfirmWrap.style.top = newConfirmSettings.distance; - ntflxConfirmWrap.style.bottom = 'auto'; - ntflxConfirmWrap.style.left = 'auto'; - ntflxConfirmWrap.style.margin = 'auto'; - } else if (newConfirmSettings.position === 'right-bottom') { // if right-bottom - ntflxConfirmWrap.style.right = newConfirmSettings.distance; - ntflxConfirmWrap.style.bottom = newConfirmSettings.distance; - ntflxConfirmWrap.style.top = 'auto'; - ntflxConfirmWrap.style.left = 'auto'; - ntflxConfirmWrap.style.margin = 'auto'; - } else if (newConfirmSettings.position === 'left-top') { // if left-top - ntflxConfirmWrap.style.left = newConfirmSettings.distance; - ntflxConfirmWrap.style.top = newConfirmSettings.distance; - ntflxConfirmWrap.style.right = 'auto'; - ntflxConfirmWrap.style.bottom = 'auto'; - ntflxConfirmWrap.style.margin = 'auto'; - } else if (newConfirmSettings.position === 'left-bottom') { // if left-bottom - ntflxConfirmWrap.style.left = newConfirmSettings.distance; - ntflxConfirmWrap.style.bottom = newConfirmSettings.distance; - ntflxConfirmWrap.style.top = 'auto'; - ntflxConfirmWrap.style.right = 'auto'; - ntflxConfirmWrap.style.margin = 'auto'; - } else { // if center-top - ntflxConfirmWrap.style.top = newConfirmSettings.distance; - ntflxConfirmWrap.style.left = 0; - ntflxConfirmWrap.style.right = 0; - ntflxConfirmWrap.style.bottom = 'auto'; - ntflxConfirmWrap.style.margin = 'auto'; - } - // position off - - // buttons listener on - var confirmCloseWrap = document.getElementById(ntflxConfirmWrap.id); - var okButton = document.getElementById('NXConfirmButtonOk'); - - // ok button listener on - okButton.addEventListener('click', function () { - // if ok callback && if ok callback is a function - if (okButtonCallback && typeof okButtonCallback === 'function') { - okButtonCallback(); - } - confirmCloseWrap.classList.add('remove'); - - var timeout = setTimeout(function () { - if (confirmCloseWrap.parentNode !== null) { - confirmCloseWrap.parentNode.removeChild(confirmCloseWrap); - clearTimeout(timeout); - } - }, newConfirmSettings.cssAnimationDuration); - }); - // ok button listener off - - // if ok callback && if ok callback a function => add Cancel Button listener on - if (okButtonCallback && typeof okButtonCallback === 'function') { - // cancel button listener on - var cancelButton = document.getElementById('NXConfirmButtonCancel'); - cancelButton.addEventListener('click', function () { - // if cancel callback && if cancel callback a function - if (cancelButtonCallback && typeof cancelButtonCallback === 'function') { - cancelButtonCallback(); - } - confirmCloseWrap.classList.add('remove'); - - var timeout = setTimeout(function () { - if (confirmCloseWrap.parentNode !== null) { - confirmCloseWrap.parentNode.removeChild(confirmCloseWrap); - clearTimeout(timeout); - } - }, newConfirmSettings.cssAnimationDuration); - }); - // cancel button listener off - } - // if ok callback && if ok callback a function => add Cancel Button listener off - // buttons listener off - } - // if there is no confirm box off + // if not initialized pretend like init + if (!newConfirmSettings) { + Notiflix.Confirm.Init({}); + } + + // if plainText true => HTML tags not allowed on + if (newConfirmSettings.plainText) { + title = notiflixPlaintext(title); + message = notiflixPlaintext(message); + okButtonText = notiflixPlaintext(okButtonText); + cancelButtonText = notiflixPlaintext(cancelButtonText); + } + // if plainText true => HTML tags not allowed off + + // if plainText false but the contents length more than *MaxLength = HTML tags error on + if (!newConfirmSettings.plainText) { + if (title.length > newConfirmSettings.titleMaxLength) { + title = 'HTML Tags Error'; // title html error + message = 'Your Title content length is more than "titleMaxLength" option.'; // message html error + okButtonText = 'Okay'; // button html error + cancelButtonText = '...'; // button html error + } + if (message.length > newConfirmSettings.messageMaxLength) { + title = 'HTML Tags Error'; // title html error + message = 'Your Message content length is more than "messageMaxLength" option.'; // message html error + okButtonText = 'Okay'; // button html error + cancelButtonText = '...'; // button html error + } + if ((okButtonText.length || cancelButtonText.length) > newConfirmSettings.buttonsMaxLength) { + title = 'HTML Tags Error'; // title html error + message = 'Your Buttons contents length is more than "buttonsMaxLength" option.'; // message html error + okButtonText = 'Okay'; // button html error + cancelButtonText = '...'; // button html error + } + } + // if plainText false but the contents length more than *MaxLength = HTML tags error off + + // max length on + if (title.length > newConfirmSettings.titleMaxLength) { + title = title.substring(0, newConfirmSettings.titleMaxLength) + '...'; + } + if (message.length > newConfirmSettings.messageMaxLength) { + message = message.substring(0, newConfirmSettings.messageMaxLength) + '...'; + } + if (okButtonText.length > newConfirmSettings.buttonsMaxLength) { + okButtonText = okButtonText.substring(0, newConfirmSettings.buttonsMaxLength) + '...'; + } + if (cancelButtonText.length > newConfirmSettings.buttonsMaxLength) { + cancelButtonText = cancelButtonText.substring(0, newConfirmSettings.buttonsMaxLength) + '...'; + } + // max length off + + // if cssAnimaion false -> duration on + if (!newConfirmSettings.cssAnimation) { + newConfirmSettings.cssAnimationDuration = 0; + } + // if cssAnimaion false -> duration off + + // confirm wrap on + var docBody = document.body; + var ntflxConfirmWrap = document.createElement('div'); + ntflxConfirmWrap.id = confirmSettings.ID; + ntflxConfirmWrap.className = newConfirmSettings.className + (newConfirmSettings.cssAnimation ? ' with-animation nx-' + newConfirmSettings.cssAnimationStyle : ''); + ntflxConfirmWrap.style.width = newConfirmSettings.width; + ntflxConfirmWrap.style.zIndex = newConfirmSettings.zindex; + + // rtl on + if (newConfirmSettings.rtl) { + ntflxConfirmWrap.setAttribute('dir', 'rtl'); + ntflxConfirmWrap.classList.add('rtl-on'); + } + // rtl off + + // font-family on + ntflxConfirmWrap.style.fontFamily = '"' + newConfirmSettings.fontFamily + '"' + ', sans-serif'; + // font-family off + + // if background overlay true on + var confirmOverlay = ''; + if (newConfirmSettings.backOverlay) { + confirmOverlay = '
    '; + } + // if background overlay true off + + // if have a callback => add cancel button on + var cancelButtonHTML = ''; + if (okButtonCallback) { + cancelButtonHTML = '' + cancelButtonText + ''; + } + // if have a callback => add cancel button off + + ntflxConfirmWrap.innerHTML = confirmOverlay + + '
    ' + + '
    ' + + '
    ' + title + '
    ' + + '

    ' + message + '

    ' + + '
    ' + + '
    ' + + '' + okButtonText + '' + + cancelButtonHTML + + '
    ' + + '
    '; + // confirm wrap off + + // if there is no confirm box on + if (!document.getElementById(ntflxConfirmWrap.id)) { + docBody.appendChild(ntflxConfirmWrap); + + // position on + if (newConfirmSettings.position === 'center') { // if center-center + var windowH = Math.round(window.innerHeight); + var confirmH = Math.round(document.getElementById(ntflxConfirmWrap.id).offsetHeight); + ntflxConfirmWrap.style.top = (windowH - confirmH) / 2 + 'px'; + ntflxConfirmWrap.style.left = newConfirmSettings.distance; + ntflxConfirmWrap.style.right = newConfirmSettings.distance; + ntflxConfirmWrap.style.bottom = 'auto'; + ntflxConfirmWrap.style.margin = 'auto'; + } else if (newConfirmSettings.position === 'right-top') { // if right-top + ntflxConfirmWrap.style.right = newConfirmSettings.distance; + ntflxConfirmWrap.style.top = newConfirmSettings.distance; + ntflxConfirmWrap.style.bottom = 'auto'; + ntflxConfirmWrap.style.left = 'auto'; + ntflxConfirmWrap.style.margin = 'auto'; + } else if (newConfirmSettings.position === 'right-bottom') { // if right-bottom + ntflxConfirmWrap.style.right = newConfirmSettings.distance; + ntflxConfirmWrap.style.bottom = newConfirmSettings.distance; + ntflxConfirmWrap.style.top = 'auto'; + ntflxConfirmWrap.style.left = 'auto'; + ntflxConfirmWrap.style.margin = 'auto'; + } else if (newConfirmSettings.position === 'left-top') { // if left-top + ntflxConfirmWrap.style.left = newConfirmSettings.distance; + ntflxConfirmWrap.style.top = newConfirmSettings.distance; + ntflxConfirmWrap.style.right = 'auto'; + ntflxConfirmWrap.style.bottom = 'auto'; + ntflxConfirmWrap.style.margin = 'auto'; + } else if (newConfirmSettings.position === 'left-bottom') { // if left-bottom + ntflxConfirmWrap.style.left = newConfirmSettings.distance; + ntflxConfirmWrap.style.bottom = newConfirmSettings.distance; + ntflxConfirmWrap.style.top = 'auto'; + ntflxConfirmWrap.style.right = 'auto'; + ntflxConfirmWrap.style.margin = 'auto'; + } else { // if center-top + ntflxConfirmWrap.style.top = newConfirmSettings.distance; + ntflxConfirmWrap.style.left = 0; + ntflxConfirmWrap.style.right = 0; + ntflxConfirmWrap.style.bottom = 'auto'; + ntflxConfirmWrap.style.margin = 'auto'; + } + // position off + + // buttons listener on + var confirmCloseWrap = document.getElementById(ntflxConfirmWrap.id); + var okButton = document.getElementById('NXConfirmButtonOk'); + + // ok button listener on + okButton.addEventListener('click', function () { + // if ok callback && if ok callback is a function + if (okButtonCallback && typeof okButtonCallback === 'function') { + okButtonCallback(); + } + confirmCloseWrap.classList.add('remove'); + + var timeout = setTimeout(function () { + if (confirmCloseWrap.parentNode !== null) { + confirmCloseWrap.parentNode.removeChild(confirmCloseWrap); + clearTimeout(timeout); + } + }, newConfirmSettings.cssAnimationDuration); + }); + // ok button listener off + + // if ok callback && if ok callback a function => add Cancel Button listener on + if (okButtonCallback && typeof okButtonCallback === 'function') { + // cancel button listener on + var cancelButton = document.getElementById('NXConfirmButtonCancel'); + cancelButton.addEventListener('click', function () { + // if cancel callback && if cancel callback a function + if (cancelButtonCallback && typeof cancelButtonCallback === 'function') { + cancelButtonCallback(); + } + confirmCloseWrap.classList.add('remove'); + + var timeout = setTimeout(function () { + if (confirmCloseWrap.parentNode !== null) { + confirmCloseWrap.parentNode.removeChild(confirmCloseWrap); + clearTimeout(timeout); + } + }, newConfirmSettings.cssAnimationDuration); + }); + // cancel button listener off + } + // if ok callback && if ok callback a function => add Cancel Button listener off + // buttons listener off + } + // if there is no confirm box off }; // Notiflix: Confirm Single off // Notiflix: Loading Single on var NotiflixLoading = function (message, iconType, display, theDelay) { - // if not initialized pretend like init - if (!newLoadingSettings) { - Notiflix.Loading.Init({}); - } - // check the message - if (!message) { - message = ''; - } - // show loading - if (display) { - - // if message settings on - if (message.toString().length > newLoadingSettings.messageMaxLength) { - message = notiflixPlaintext(message).toString().substring(0, newLoadingSettings.messageMaxLength) + '...'; - } else { - message = notiflixPlaintext(message).toString(); - } - var intSvgSize = parseInt(newLoadingSettings.svgSize); - var messageHTML = ''; - if (message.length > 0) { - var messagePosTop = Math.round(intSvgSize - (intSvgSize / 4)).toString() + 'px'; - var messageHeight = (parseInt(newLoadingSettings.messageFontSize) * 1.4).toString() + 'px'; - messageHTML = '

    ' + message + '

    '; - } - // if message settings off - - // if cssAnimaion false -> duration on - if (!newLoadingSettings.cssAnimation) { - newLoadingSettings.cssAnimationDuration = 0; - } - // if cssAnimaion false -> duration off - - // svgIcon on - var svgIcon = ''; - if (iconType === 'standard') { - svgIcon = notiflixIndicatorSvgStandard(newLoadingSettings.svgSize, newLoadingSettings.svgColor); - } else if (iconType === 'hourglass') { - svgIcon = notiflixIndicatorSvgHourglass(newLoadingSettings.svgSize, newLoadingSettings.svgColor); - } else if (iconType === 'circle') { - svgIcon = notiflixIndicatorSvgCircle(newLoadingSettings.svgSize, newLoadingSettings.svgColor); - } else if (iconType === 'arrows') { - svgIcon = notiflixIndicatorSvgArrows(newLoadingSettings.svgSize, newLoadingSettings.svgColor); - } else if (iconType === 'dots') { - svgIcon = notiflixIndicatorSvgDots(newLoadingSettings.svgSize, newLoadingSettings.svgColor); - } else if (iconType === 'pulse') { - svgIcon = notiflixIndicatorSvgPulse(newLoadingSettings.svgSize, newLoadingSettings.svgColor); - } else if (iconType === 'custom' && newLoadingSettings.customSvgUrl !== null) { - svgIcon = 'Notiflix'; - } else if (iconType === 'custom' && newLoadingSettings.customSvgUrl == null) { - notiflixConsoleError('Notiflix Error', 'You have to set a static SVG url to "customSvgUrl" option to use Loading Custom.'); - return false; - } else if (iconType === 'notiflix') { - svgIcon = notiflixIndicatorSvgNotiflix(newLoadingSettings.svgSize, '#f8f8f8', '#32c682'); - } - var svgPosTop = 0; - if (message.length > 0) { - svgPosTop = '-' + Math.round(intSvgSize - (intSvgSize / 4)).toString() + 'px'; - } - var svgIconHTML = '
    ' + svgIcon + '
    '; - // svgIcon off - - // loading wrap on - var docBody = document.body; - var ntflxLoadingWrap = document.createElement('div'); - ntflxLoadingWrap.id = loadingSettings.ID; - ntflxLoadingWrap.className = newLoadingSettings.className + (newLoadingSettings.cssAnimation ? ' with-animation' : '') + (newLoadingSettings.clickToClose ? ' click-to-close' : ''); - ntflxLoadingWrap.style.zIndex = newLoadingSettings.zindex; - ntflxLoadingWrap.style.background = newLoadingSettings.backgroundColor; - ntflxLoadingWrap.style.animationDuration = newLoadingSettings.cssAnimationDuration + 'ms'; - ntflxLoadingWrap.style.fontFamily = '"' + newLoadingSettings.fontFamily + '"' + ', sans-serif'; - - // rtl on - if (newLoadingSettings.rtl) { - ntflxLoadingWrap.setAttribute('dir', 'rtl'); - ntflxLoadingWrap.classList.add('rtl-on'); - } - // rtl off - - // append on - ntflxLoadingWrap.innerHTML = svgIconHTML + messageHTML; - - // if there is no loading element - if (!document.getElementById(ntflxLoadingWrap.id)) { - // append - docBody.appendChild(ntflxLoadingWrap); - - // if click to close - if (newLoadingSettings.clickToClose) { - var loadingWrapElm = document.getElementById(ntflxLoadingWrap.id); - loadingWrapElm.addEventListener('click', function () { - ntflxLoadingWrap.classList.add('remove'); - var timeout = setTimeout(function () { - if (ntflxLoadingWrap.parentNode !== null) { - ntflxLoadingWrap.parentNode.removeChild(ntflxLoadingWrap); - clearTimeout(timeout); - } - }, newLoadingSettings.cssAnimationDuration); - }); - } - } - // append off - - } - // remove loading - else { - // if there is a loading element - if (document.getElementById(loadingSettings.ID)) { - var loadingElm = document.getElementById(loadingSettings.ID); - var timeout = setTimeout(function () { - loadingElm.classList.add('remove'); - var timeout2 = setTimeout(function () { - if (loadingElm.parentNode !== null) { - loadingElm.parentNode.removeChild(loadingElm); - clearTimeout(timeout2); - } - }, newLoadingSettings.cssAnimationDuration); - clearTimeout(timeout); - }, theDelay); - } - } + // if not initialized pretend like init + if (!newLoadingSettings) { + Notiflix.Loading.Init({}); + } + // check the message + if (!message) { + message = ''; + } + // show loading + if (display) { + + // if message settings on + if (message.toString().length > newLoadingSettings.messageMaxLength) { + message = notiflixPlaintext(message).toString().substring(0, newLoadingSettings.messageMaxLength) + '...'; + } else { + message = notiflixPlaintext(message).toString(); + } + var intSvgSize = parseInt(newLoadingSettings.svgSize); + var messageHTML = ''; + if (message.length > 0) { + var messagePosTop = Math.round(intSvgSize - (intSvgSize / 4)).toString() + 'px'; + var messageHeight = (parseInt(newLoadingSettings.messageFontSize) * 1.4).toString() + 'px'; + messageHTML = '

    ' + message + '

    '; + } + // if message settings off + + // if cssAnimaion false -> duration on + if (!newLoadingSettings.cssAnimation) { + newLoadingSettings.cssAnimationDuration = 0; + } + // if cssAnimaion false -> duration off + + // svgIcon on + var svgIcon = ''; + if (iconType === 'standard') { + svgIcon = notiflixIndicatorSvgStandard(newLoadingSettings.svgSize, newLoadingSettings.svgColor); + } else if (iconType === 'hourglass') { + svgIcon = notiflixIndicatorSvgHourglass(newLoadingSettings.svgSize, newLoadingSettings.svgColor); + } else if (iconType === 'circle') { + svgIcon = notiflixIndicatorSvgCircle(newLoadingSettings.svgSize, newLoadingSettings.svgColor); + } else if (iconType === 'arrows') { + svgIcon = notiflixIndicatorSvgArrows(newLoadingSettings.svgSize, newLoadingSettings.svgColor); + } else if (iconType === 'dots') { + svgIcon = notiflixIndicatorSvgDots(newLoadingSettings.svgSize, newLoadingSettings.svgColor); + } else if (iconType === 'pulse') { + svgIcon = notiflixIndicatorSvgPulse(newLoadingSettings.svgSize, newLoadingSettings.svgColor); + } else if (iconType === 'custom' && newLoadingSettings.customSvgUrl !== null) { + svgIcon = 'Notiflix'; + } else if (iconType === 'custom' && newLoadingSettings.customSvgUrl == null) { + notiflixConsoleError('Notiflix Error', 'You have to set a static SVG url to "customSvgUrl" option to use Loading Custom.'); + return false; + } else if (iconType === 'notiflix') { + svgIcon = notiflixIndicatorSvgNotiflix(newLoadingSettings.svgSize, '#f8f8f8', '#32c682'); + } + var svgPosTop = 0; + if (message.length > 0) { + svgPosTop = '-' + Math.round(intSvgSize - (intSvgSize / 4)).toString() + 'px'; + } + var svgIconHTML = '
    ' + svgIcon + '
    '; + // svgIcon off + + // loading wrap on + var docBody = document.body; + var ntflxLoadingWrap = document.createElement('div'); + ntflxLoadingWrap.id = loadingSettings.ID; + ntflxLoadingWrap.className = newLoadingSettings.className + (newLoadingSettings.cssAnimation ? ' with-animation' : '') + (newLoadingSettings.clickToClose ? ' click-to-close' : ''); + ntflxLoadingWrap.style.zIndex = newLoadingSettings.zindex; + ntflxLoadingWrap.style.background = newLoadingSettings.backgroundColor; + ntflxLoadingWrap.style.animationDuration = newLoadingSettings.cssAnimationDuration + 'ms'; + ntflxLoadingWrap.style.fontFamily = '"' + newLoadingSettings.fontFamily + '"' + ', sans-serif'; + + // rtl on + if (newLoadingSettings.rtl) { + ntflxLoadingWrap.setAttribute('dir', 'rtl'); + ntflxLoadingWrap.classList.add('rtl-on'); + } + // rtl off + + // append on + ntflxLoadingWrap.innerHTML = svgIconHTML + messageHTML; + + // if there is no loading element + if (!document.getElementById(ntflxLoadingWrap.id)) { + // append + docBody.appendChild(ntflxLoadingWrap); + + // if click to close + if (newLoadingSettings.clickToClose) { + var loadingWrapElm = document.getElementById(ntflxLoadingWrap.id); + loadingWrapElm.addEventListener('click', function () { + ntflxLoadingWrap.classList.add('remove'); + var timeout = setTimeout(function () { + if (ntflxLoadingWrap.parentNode !== null) { + ntflxLoadingWrap.parentNode.removeChild(ntflxLoadingWrap); + clearTimeout(timeout); + } + }, newLoadingSettings.cssAnimationDuration); + }); + } + } + // append off + + } + // remove loading + else { + // if there is a loading element + if (document.getElementById(loadingSettings.ID)) { + var loadingElm = document.getElementById(loadingSettings.ID); + var timeout = setTimeout(function () { + loadingElm.classList.add('remove'); + var timeout2 = setTimeout(function () { + if (loadingElm.parentNode !== null) { + loadingElm.parentNode.removeChild(loadingElm); + clearTimeout(timeout2); + } + }, newLoadingSettings.cssAnimationDuration); + clearTimeout(timeout); + }, theDelay); + } + } }; // Notiflix: Loading Single off // Notiflix: Loading Change Message on var NotiflixLoadingChange = function (newMessage) { - // check the new message - if (!newMessage) { - newMessage = ''; - } - // if has any loading - if (document.getElementById(loadingSettings.ID)) { - // if there is a new message - if (newMessage.length > 0) { - // max length on - if (newMessage.length > newLoadingSettings.messageMaxLength) { - newMessage = notiflixPlaintext(newMessage).toString().substring(0, newLoadingSettings.messageMaxLength) + '...'; - } else { - newMessage = notiflixPlaintext(newMessage).toString(); - } - // max length off - - // there is a message element - var oldMessageElm = document.getElementById(loadingSettings.ID).getElementsByTagName('p')[0]; - if (oldMessageElm) { - oldMessageElm.innerHTML = newMessage; // change the message - } - // there is no message element - else { - // create a new message element on - var newMessageHTML = document.createElement('p'); - newMessageHTML.id = newLoadingSettings.messageID; - newMessageHTML.className = 'loading-message new'; - newMessageHTML.style.color = newLoadingSettings.messageColor; - newMessageHTML.style.fontSize = newLoadingSettings.messageFontSize; - var intSvgSize = parseInt(newLoadingSettings.svgSize); - var messagePosTop = Math.round(intSvgSize - (intSvgSize / 4)).toString() + 'px'; - newMessageHTML.style.top = messagePosTop; - var messageHeight = (parseInt(newLoadingSettings.messageFontSize) * 1.4).toString() + 'px'; - newMessageHTML.style.height = messageHeight; - newMessageHTML.innerHTML = newMessage; - var messageWrap = document.getElementById(loadingSettings.ID); - messageWrap.appendChild(newMessageHTML); - // create a new message element off - - // vertical align svg on - var svgDivElm = document.getElementById(loadingSettings.ID).getElementsByTagName('div')[0]; - var svgNewPosTop = '-' + Math.round(intSvgSize - (intSvgSize / 4)).toString() + 'px'; - svgDivElm.style.top = svgNewPosTop; - // vertical align svg off - } - } - // if no message - else { - notiflixConsoleError('Notiflix Error', 'Where is the new message?'); - } - } + // check the new message + if (!newMessage) { + newMessage = ''; + } + // if has any loading + if (document.getElementById(loadingSettings.ID)) { + // if there is a new message + if (newMessage.length > 0) { + // max length on + if (newMessage.length > newLoadingSettings.messageMaxLength) { + newMessage = notiflixPlaintext(newMessage).toString().substring(0, newLoadingSettings.messageMaxLength) + '...'; + } else { + newMessage = notiflixPlaintext(newMessage).toString(); + } + // max length off + + // there is a message element + var oldMessageElm = document.getElementById(loadingSettings.ID).getElementsByTagName('p')[0]; + if (oldMessageElm) { + oldMessageElm.innerHTML = newMessage; // change the message + } + // there is no message element + else { + // create a new message element on + var newMessageHTML = document.createElement('p'); + newMessageHTML.id = newLoadingSettings.messageID; + newMessageHTML.className = 'loading-message new'; + newMessageHTML.style.color = newLoadingSettings.messageColor; + newMessageHTML.style.fontSize = newLoadingSettings.messageFontSize; + var intSvgSize = parseInt(newLoadingSettings.svgSize); + var messagePosTop = Math.round(intSvgSize - (intSvgSize / 4)).toString() + 'px'; + newMessageHTML.style.top = messagePosTop; + var messageHeight = (parseInt(newLoadingSettings.messageFontSize) * 1.4).toString() + 'px'; + newMessageHTML.style.height = messageHeight; + newMessageHTML.innerHTML = newMessage; + var messageWrap = document.getElementById(loadingSettings.ID); + messageWrap.appendChild(newMessageHTML); + // create a new message element off + + // vertical align svg on + var svgDivElm = document.getElementById(loadingSettings.ID).getElementsByTagName('div')[0]; + var svgNewPosTop = '-' + Math.round(intSvgSize - (intSvgSize / 4)).toString() + 'px'; + svgDivElm.style.top = svgNewPosTop; + // vertical align svg off + } + } + // if no message + else { + notiflixConsoleError('Notiflix Error', 'Where is the new message?'); + } + } }; // Notiflix: Loading Change Message off @@ -1591,501 +1591,340 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var notiflixBlockElementCounter = 0; var NotiflixBlockUnblockElement = function (block, selector, iconType, message, theDelay) { - // check typeof selector on - if (typeof selector !== 'string') { - notiflixConsoleError('Notiflix Error', 'The selector must be a String.'); - return false; - } - // check typeof selector off - - // check the delay on - if (typeof theDelay !== 'number') { - theDelay = 0; - } - // check the delay off - - // check the selector on - var getSelector = document.querySelectorAll(selector); - if (getSelector.length > 0) { - - // if not initialized pretend like init on - if (!newBlockSettings) { - Notiflix.Block.Init({}); - } - // if not initialized pretend like init off - - // check the message on - if (!message || (message && typeof message !== 'string')) { - message = undefined; - } - // check the message off - - } else { - notiflixConsoleError('Notiflix Error', 'You called the "Notiflix.Block..." function with "' + selector + '" selector, but there is no such element(s) on the document.'); - return false; - } - // check the selector off - - // if cssAnimaion false => duration on - if (!newBlockSettings.cssAnimation) { - newBlockSettings.cssAnimationDuration = 0; - } - // if cssAnimaion false => duration off - - // check the class name on - var blockClassName = 'notiflix-block'; - if (newBlockSettings.className && typeof newBlockSettings.className === 'string') { - blockClassName = newBlockSettings.className.trim(); - } - // check the class name off - - // check query limit on - var getQueryLimit = (typeof newBlockSettings.querySelectorLimit === 'number' ? newBlockSettings.querySelectorLimit : 200); - var checkQueryLimit = (getSelector.length >= getQueryLimit ? getQueryLimit : getSelector.length); - // check query limit off - - // block - if (block) { - - // add element(s) and style on - for (var i = 0; i < checkQueryLimit; i++) { - var eachSelector = getSelector[i]; - - // check block element exist on - var eachBlockElement = eachSelector.querySelectorAll('[id^=' + blockSettings.ID + ']'); - if (eachBlockElement.length < 1) { - - // check the icon on - var icon = ''; - if (iconType) { - if (iconType === 'hourglass') { - icon = notiflixIndicatorSvgHourglass(newBlockSettings.svgSize, newBlockSettings.svgColor); - } else if (iconType === 'circle') { - icon = notiflixIndicatorSvgCircle(newBlockSettings.svgSize, newBlockSettings.svgColor); - } else if (iconType === 'arrows') { - icon = notiflixIndicatorSvgArrows(newBlockSettings.svgSize, newBlockSettings.svgColor); - } else if (iconType === 'dots') { - icon = notiflixIndicatorSvgDots(newBlockSettings.svgSize, newBlockSettings.svgColor); - } else if (iconType === 'pulse') { - icon = notiflixIndicatorSvgPulse(newBlockSettings.svgSize, newBlockSettings.svgColor); - } else { - icon = notiflixIndicatorSvgStandard(newBlockSettings.svgSize, newBlockSettings.svgColor); - } - } - var intSvgSize = parseInt(newBlockSettings.svgSize); - var posRatio = Math.round(intSvgSize - (intSvgSize / 5)).toString() + 'px'; - var svgPosTop = (message && message.length > 0 ? '-' + posRatio : 0); - var iconElement = '' + icon + ''; - // check the icon off - - // check the message on - var messageElement = ''; - var messageHeight = 0; - if (message) { - if (message.length > newBlockSettings.messageMaxLength) { - message = notiflixPlaintext(message).toString().substring(0, newBlockSettings.messageMaxLength) + '...'; - } else { - message = notiflixPlaintext(message).toString(); - } - messageHeight = Math.round(parseInt(newBlockSettings.messageFontSize) * 1.4).toString() + 'px'; - messageElement = '' + message + ''; - } - // check the message off - - // block element on - notiflixBlockElementCounter++; - var notiflixBlockWrap = document.createElement('div'); - notiflixBlockWrap.id = blockSettings.ID + '-' + notiflixBlockElementCounter; - notiflixBlockWrap.className = blockClassName + '-wrap' + (newBlockSettings.cssAnimation ? ' with-animation' : ''); - notiflixBlockWrap.style.position = newBlockSettings.position; - notiflixBlockWrap.style.zIndex = newBlockSettings.zindex; - notiflixBlockWrap.style.background = newBlockSettings.backgroundColor; - notiflixBlockWrap.style.animationDuration = newBlockSettings.cssAnimationDuration + 'ms'; - notiflixBlockWrap.style.fontFamily = '"' + newBlockSettings.fontFamily + '"' + ', sans-serif'; - // block element off - - // block element rtl on - if (newBlockSettings.rtl) { - notiflixBlockWrap.setAttribute('dir', 'rtl'); - notiflixBlockWrap.classList.add('rtl-on'); - } - // block element rtl off - - // block element data on - notiflixBlockWrap.innerHTML = iconElement + messageElement; - // block element data off - - // append block element on - var eachSelectorPos = getComputedStyle(eachSelector).getPropertyValue('position'); - eachSelectorPos = eachSelectorPos && typeof eachSelectorPos === 'string' ? eachSelectorPos.toLowerCase() : 'relative'; - - // selector internal style on - var eachSelectorIdOrClass = ''; - if (eachSelector.getAttribute('id')) { - eachSelectorIdOrClass = '#' + eachSelector.getAttribute('id'); - } else if (eachSelector.classList[0]) { - eachSelectorIdOrClass = '.' + eachSelector.classList[0]; - } - - var positions = ['absolute', 'relative', 'fixed', 'sticky']; - if (positions.indexOf(eachSelectorPos) <= -1) { - var minHeight = Math.round((parseInt(messageHeight) + intSvgSize) * 1.5).toString() + 'px'; - var style = ''; - var styleRange = document.createRange(); - styleRange.selectNode(document.head); - var styleFragment = styleRange.createContextualFragment(style); - document.head.appendChild(styleFragment); - eachSelector.classList.add(blockClassName + '-position'); - } - // selector internal style off - - // append - eachSelector.appendChild(notiflixBlockWrap); - // append block element off - } - // check block element exist off - } - // add element(s) and style off - } - // unblock/remove - else { - - // Step 3 => Remove each block element on - var removeBlockElements = function (eachOne) { - var timeout = setTimeout(function () { - // remove element - eachOne.remove(); - - // remove this selector internal style - var eachOneId = eachOne.getAttribute('id'); - var eachOneStyle = document.getElementById('Style-' + eachOneId); - if (eachOneStyle) { - eachOneStyle.remove(); - } - - // clear timeout - clearTimeout(timeout); - }, newBlockSettings.cssAnimationDuration); - } - // Step 3 => Remove each block element off - - // Step 2A => Remove each block element on - var removeClassBlockElements = function (eachBlockElement) { - // if elements exist - if (eachBlockElement && eachBlockElement.length > 0) { - for (var i = 0; i < eachBlockElement.length; i++) { - var eachOne = eachBlockElement[i]; - if (eachOne) { - // add remove class - eachOne.classList.add('remove'); - // remove block elements - removeBlockElements(eachOne); - } - } - } - // not exist - else { - notiflixConsoleLog('Notiflix Info', '"Notiflix.Block.Remove();" function called with "' + selector + '" selector, but this selector does not have a "Notiflix.Block..." element to remove.'); - } - } - // Step 2A => Remove each block element on - - // Step 2B => Remove each selector class name on - var removeEachSelectorClassName = function (eachSelector) { - var timeout = setTimeout(function () { - // remove class name - var positionClass = blockClassName + '-position'; - eachSelector.classList.remove(positionClass); - - // clear timeout - clearTimeout(timeout); - }, newBlockSettings.cssAnimationDuration + 300); - } - // Step 2B => Remove each selector class name off - - // Step 1 => Remove selector class name on - var selectorTimeout = setTimeout(function () { - for (var i = 0; i < checkQueryLimit; i++) { - var eachSelector = getSelector[i]; - - // remove each selector class name - removeEachSelectorClassName(eachSelector); - - // remove each block element - eachBlockElement = eachSelector.querySelectorAll('[id^=' + blockSettings.ID + ']'); - removeClassBlockElements(eachBlockElement); - } - // clear timeout - clearTimeout(selectorTimeout); - }, theDelay); - // Step 1 => Remove selector class name off - } + // check typeof selector on + if (typeof selector !== 'string') { + notiflixConsoleError('Notiflix Error', 'The selector must be a String.'); + return false; + } + // check typeof selector off + + // check the delay on + if (typeof theDelay !== 'number') { + theDelay = 0; + } + // check the delay off + + // check the selector on + var getSelector = document.querySelectorAll(selector); + if (getSelector.length > 0) { + + // if not initialized pretend like init on + if (!newBlockSettings) { + Notiflix.Block.Init({}); + } + // if not initialized pretend like init off + + // check the message on + if (!message || (message && typeof message !== 'string')) { + message = undefined; + } + // check the message off + + } else { + notiflixConsoleError('Notiflix Error', 'You called the "Notiflix.Block..." function with "' + selector + '" selector, but there is no such element(s) on the document.'); + return false; + } + // check the selector off + + // if cssAnimaion false => duration on + if (!newBlockSettings.cssAnimation) { + newBlockSettings.cssAnimationDuration = 0; + } + // if cssAnimaion false => duration off + + // check the class name on + var blockClassName = 'notiflix-block'; + if (newBlockSettings.className && typeof newBlockSettings.className === 'string') { + blockClassName = newBlockSettings.className.trim(); + } + // check the class name off + + // check query limit on + var getQueryLimit = (typeof newBlockSettings.querySelectorLimit === 'number' ? newBlockSettings.querySelectorLimit : 200); + var checkQueryLimit = (getSelector.length >= getQueryLimit ? getQueryLimit : getSelector.length); + // check query limit off + + // block + if (block) { + + // add element(s) and style on + for (var i = 0; i < checkQueryLimit; i++) { + var eachSelector = getSelector[i]; + + // check block element exist on + var eachBlockElement = eachSelector.querySelectorAll('[id^=' + blockSettings.ID + ']'); + if (eachBlockElement.length < 1) { + + // check the icon on + var icon = ''; + if (iconType) { + if (iconType === 'hourglass') { + icon = notiflixIndicatorSvgHourglass(newBlockSettings.svgSize, newBlockSettings.svgColor); + } else if (iconType === 'circle') { + icon = notiflixIndicatorSvgCircle(newBlockSettings.svgSize, newBlockSettings.svgColor); + } else if (iconType === 'arrows') { + icon = notiflixIndicatorSvgArrows(newBlockSettings.svgSize, newBlockSettings.svgColor); + } else if (iconType === 'dots') { + icon = notiflixIndicatorSvgDots(newBlockSettings.svgSize, newBlockSettings.svgColor); + } else if (iconType === 'pulse') { + icon = notiflixIndicatorSvgPulse(newBlockSettings.svgSize, newBlockSettings.svgColor); + } else { + icon = notiflixIndicatorSvgStandard(newBlockSettings.svgSize, newBlockSettings.svgColor); + } + } + var intSvgSize = parseInt(newBlockSettings.svgSize); + var posRatio = Math.round(intSvgSize - (intSvgSize / 5)).toString() + 'px'; + var svgPosTop = (message && message.length > 0 ? '-' + posRatio : 0); + var iconElement = '' + icon + ''; + // check the icon off + + // check the message on + var messageElement = ''; + var messageHeight = 0; + if (message) { + if (message.length > newBlockSettings.messageMaxLength) { + message = notiflixPlaintext(message).toString().substring(0, newBlockSettings.messageMaxLength) + '...'; + } else { + message = notiflixPlaintext(message).toString(); + } + messageHeight = Math.round(parseInt(newBlockSettings.messageFontSize) * 1.4).toString() + 'px'; + messageElement = '' + message + ''; + } + // check the message off + + // block element on + notiflixBlockElementCounter++; + var notiflixBlockWrap = document.createElement('div'); + notiflixBlockWrap.id = blockSettings.ID + '-' + notiflixBlockElementCounter; + notiflixBlockWrap.className = blockClassName + '-wrap' + (newBlockSettings.cssAnimation ? ' with-animation' : ''); + notiflixBlockWrap.style.position = newBlockSettings.position; + notiflixBlockWrap.style.zIndex = newBlockSettings.zindex; + notiflixBlockWrap.style.background = newBlockSettings.backgroundColor; + notiflixBlockWrap.style.animationDuration = newBlockSettings.cssAnimationDuration + 'ms'; + notiflixBlockWrap.style.fontFamily = '"' + newBlockSettings.fontFamily + '"' + ', sans-serif'; + // block element off + + // block element rtl on + if (newBlockSettings.rtl) { + notiflixBlockWrap.setAttribute('dir', 'rtl'); + notiflixBlockWrap.classList.add('rtl-on'); + } + // block element rtl off + + // block element data on + notiflixBlockWrap.innerHTML = iconElement + messageElement; + // block element data off + + // append block element on + var eachSelectorPos = getComputedStyle(eachSelector).getPropertyValue('position'); + eachSelectorPos = eachSelectorPos && typeof eachSelectorPos === 'string' ? eachSelectorPos.toLowerCase() : 'relative'; + + // selector internal style on + var eachSelectorIdOrClass = ''; + if (eachSelector.getAttribute('id')) { + eachSelectorIdOrClass = '#' + eachSelector.getAttribute('id'); + } else if (eachSelector.classList[0]) { + eachSelectorIdOrClass = '.' + eachSelector.classList[0]; + } + + var positions = ['absolute', 'relative', 'fixed', 'sticky']; + if (positions.indexOf(eachSelectorPos) <= -1) { + var minHeight = Math.round((parseInt(messageHeight) + intSvgSize) * 1.5).toString() + 'px'; + var style = ''; + var styleRange = document.createRange(); + styleRange.selectNode(document.head); + var styleFragment = styleRange.createContextualFragment(style); + document.head.appendChild(styleFragment); + eachSelector.classList.add(blockClassName + '-position'); + } + // selector internal style off + + // append + eachSelector.appendChild(notiflixBlockWrap); + // append block element off + } + // check block element exist off + } + // add element(s) and style off + } + // unblock/remove + else { + + // Step 3 => Remove each block element on + var removeBlockElements = function (eachOne) { + var timeout = setTimeout(function () { + // remove element + eachOne.remove(); + + // remove this selector internal style + var eachOneId = eachOne.getAttribute('id'); + var eachOneStyle = document.getElementById('Style-' + eachOneId); + if (eachOneStyle) { + eachOneStyle.remove(); + } + + // clear timeout + clearTimeout(timeout); + }, newBlockSettings.cssAnimationDuration); + } + // Step 3 => Remove each block element off + + // Step 2A => Remove each block element on + var removeClassBlockElements = function (eachBlockElement) { + // if elements exist + if (eachBlockElement && eachBlockElement.length > 0) { + for (var i = 0; i < eachBlockElement.length; i++) { + var eachOne = eachBlockElement[i]; + if (eachOne) { + // add remove class + eachOne.classList.add('remove'); + // remove block elements + removeBlockElements(eachOne); + } + } + } + // not exist + else { + notiflixConsoleLog('Notiflix Info', '"Notiflix.Block.Remove();" function called with "' + selector + '" selector, but this selector does not have a "Notiflix.Block..." element to remove.'); + } + } + // Step 2A => Remove each block element on + + // Step 2B => Remove each selector class name on + var removeEachSelectorClassName = function (eachSelector) { + var timeout = setTimeout(function () { + // remove class name + var positionClass = blockClassName + '-position'; + eachSelector.classList.remove(positionClass); + + // clear timeout + clearTimeout(timeout); + }, newBlockSettings.cssAnimationDuration + 300); + } + // Step 2B => Remove each selector class name off + + // Step 1 => Remove selector class name on + var selectorTimeout = setTimeout(function () { + for (var i = 0; i < checkQueryLimit; i++) { + var eachSelector = getSelector[i]; + + // remove each selector class name + removeEachSelectorClassName(eachSelector); + + // remove each block element + eachBlockElement = eachSelector.querySelectorAll('[id^=' + blockSettings.ID + ']'); + removeClassBlockElements(eachBlockElement); + } + // clear timeout + clearTimeout(selectorTimeout); + }, theDelay); + // Step 1 => Remove selector class name off + } }; // Notiflix: Block or Unblock Element off // Notiflix: Report SVG Success on var notiflixReportSvgSuccess = function (width, color) { - if (!width) { width = '110px'; } - if (!color) { color = '#32c682'; } - var reportSvgSuccess = ''; - return reportSvgSuccess; + if (!width) { width = '110px'; } + if (!color) { color = '#32c682'; } + var reportSvgSuccess = ''; + return reportSvgSuccess; }; // Notiflix: Report SVG Success off // Notiflix: Report SVG Failure on var notiflixReportSvgFailure = function (width, color) { - if (!width) { width = '110px'; } - if (!color) { color = '#ff5549'; } - var reportSvgFailure = ''; - return reportSvgFailure; + if (!width) { width = '110px'; } + if (!color) { color = '#ff5549'; } + var reportSvgFailure = ''; + return reportSvgFailure; }; // Notiflix: Report SVG Failure off // Notiflix: Report SVG Warning on var notiflixReportSvgWarning = function (width, color) { - if (!width) { width = '110px'; } - if (!color) { color = '#eebf31'; } - var reportSvgWarning = ''; - return reportSvgWarning; + if (!width) { width = '110px'; } + if (!color) { color = '#eebf31'; } + var reportSvgWarning = ''; + return reportSvgWarning; }; // Notiflix: Report SVG Warning off // Notiflix: Report SVG Info on var notiflixReportSvgInfo = function (width, color) { - if (!width) { width = '110px'; } - if (!color) { color = '#26c0d3'; } - var reportSvgInfo = ''; - return reportSvgInfo; + if (!width) { width = '110px'; } + if (!color) { color = '#26c0d3'; } + var reportSvgInfo = ''; + return reportSvgInfo; }; // Notiflix: Report SVG Info off - // Notiflix: Indicator SVG standard on var notiflixIndicatorSvgStandard = function (width, color) { - if (!width) { width = '60px'; } - if (!color) { color = '#32c682'; } - var standard = ''; - return standard; + if (!width) { width = '60px'; } + if (!color) { color = '#32c682'; } + var standard = ''; + return standard; }; // Notiflix: Indicator SVG standard off // Notiflix: Indicator SVG hourglass on var notiflixIndicatorSvgHourglass = function (width, color) { - if (!width) { width = '60px'; } - if (!color) { color = '#32c682'; } - var hourglass = ' '; - return hourglass; + if (!width) { width = '60px'; } + if (!color) { color = '#32c682'; } + var hourglass = ' '; + return hourglass; }; // Notiflix: Indicator SVG hourglass off // Notiflix: Indicator SVG circle on var notiflixIndicatorSvgCircle = function (width, color) { - if (!width) { width = '60px'; } - if (!color) { color = '#32c682'; } - var circle = ''; - return circle; + if (!width) { width = '60px'; } + if (!color) { color = '#32c682'; } + var circle = ''; + return circle; }; // Notiflix: Indicator SVG circle off // Notiflix: Indicator SVG arrows on var notiflixIndicatorSvgArrows = function (width, color) { - if (!width) { width = '60px'; } - if (!color) { color = '#32c682'; } - var arrows = ''; - return arrows; + if (!width) { width = '60px'; } + if (!color) { color = '#32c682'; } + var arrows = ''; + return arrows; }; // Notiflix: Indicator SVG arrows off // Notiflix: Indicator SVG dots on var notiflixIndicatorSvgDots = function (width, color) { - if (!width) { width = '60px'; } - if (!color) { color = '#32c682'; } - var dots = ' '; - return dots; + if (!width) { width = '60px'; } + if (!color) { color = '#32c682'; } + var dots = ' '; + return dots; }; // Notiflix: Indicator SVG dots off // Notiflix: Indicator SVG pulse on var notiflixIndicatorSvgPulse = function (width, color) { - if (!width) { width = '60px'; } - if (!color) { color = '#32c682'; } - var pulse = ''; - return pulse; + if (!width) { width = '60px'; } + if (!color) { color = '#32c682'; } + var pulse = ''; + return pulse; }; // Notiflix: Indicator SVG pulse off // Notiflix: Indicator SVG notiflix on var notiflixIndicatorSvgNotiflix = function (width, white, green) { - if (!width) { width = '60px'; } - if (!white) { white = '#f8f8f8'; } - if (!green) { green = '#32c682'; } - var notiflixIcon = ''; - return notiflixIcon; + if (!width) { width = '60px'; } + if (!white) { white = '#f8f8f8'; } + if (!green) { green = '#32c682'; } + var notiflixIcon = ''; + return notiflixIcon; }; - // Notiflix: Indicator SVG notiflix off - - - /* - * 侧边滑出弹层插件 mSlider.js - * DH (https://denghao.me) - * 2018-07 - */ - // (function(b, c) { - // function a(d) { - // this.opts = { - // "direction": d.direction || "left", - // "distance": d.distance || "60%", - // "dom": this.Q(d.dom), - // "time": d.time || "", - // "maskClose": (d.maskClose + "").toString() !== "false" ? true : false, - // "callback": d.callback || "" - // }; - // this.rnd = this.rnd(); - // this.dom = this.opts.dom[0]; - // this.wrap = ""; - // this.inner = ""; - // this.mask = ""; - // this.init() - // } - // a.prototype = { - // Q: function(d) { - // return document.querySelectorAll(d) - // }, - // isMobile: function() { - // return navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i) ? true : false - // }, - // addEvent: function(f, e, d) { - // if (f.attachEvent) { - // f.attachEvent("on" + e, d) - // } else { - // f.addEventListener(e, d, false) - // } - // }, - // rnd: function() { - // return Math.random().toString(36).substr(2, 6) - // }, - // init: function() { - // var g = this; - // if (!g.dom) { - // console.log("未正确绑定弹窗容器"); - // return - // } - // var d = document.createElement("div"); - // var e = document.createElement("div"); - // var f = document.createElement("div"); - // d.setAttribute("class", "mSlider-main ms-" + g.rnd); - // e.setAttribute("class", "mSlider-inner"); - // f.setAttribute("class", "mSlider-mask"); - // g.Q("body")[0].appendChild(d); - // g.Q(".ms-" + g.rnd)[0].appendChild(e); - // g.Q(".ms-" + g.rnd)[0].appendChild(f); - // g.wrap = g.Q(".ms-" + g.rnd)[0]; - // g.inner = g.Q(".ms-" + g.rnd + " .mSlider-inner")[0]; - // g.mask = g.Q(".ms-" + g.rnd + " .mSlider-mask")[0]; - // g.inner.appendChild(g.dom); - // switch (g.opts.direction) { - // case "top": - // g.top = "0"; - // g.left = "0"; - // g.width = "100%"; - // g.height = g.opts.distance; - // g.translate = "0,-100%,0"; - // break; - // case "bottom": - // g.bottom = "0"; - // g.left = "0"; - // g.width = "100%"; - // g.height = g.opts.distance; - // g.translate = "0,100%,0"; - // break; - // case "right": - // g.top = "0"; - // g.right = "0"; - // g.width = g.opts.distance; - // g.height = document.documentElement.clientHeight + "px"; - // g.translate = "100%,0,0"; - // break; - // default: - // g.top = "0"; - // g.left = "0"; - // g.width = g.opts.distance; - // g.height = document.documentElement.clientHeight + "px"; - // g.translate = "-100%,0,0" - // } - // g.wrap.style.display = "none"; - // g.wrap.style.position = "fixed"; - // g.wrap.style.top = "0"; - // g.wrap.style.left = "0"; - // g.wrap.style.width = "100%"; - // g.wrap.style.height = "100%"; - // g.wrap.style.zIndex = 99; - // g.inner.style.position = "absolute"; - // g.inner.style.top = g.top; - // g.inner.style.bottom = g.bottom; - // g.inner.style.left = g.left; - // g.inner.style.right = g.right; - // g.inner.style.width = g.width; - // g.inner.style.height = g.height; - // g.inner.style.backgroundColor = "#fff"; - // g.inner.style.transform = "translate3d(" + g.translate + ")"; - // g.inner.style.webkitTransition = "all .2s ease-out"; - // g.inner.style.transition = "all .2s ease-out"; - // g.inner.style.zIndex = 100; - // g.mask.style.width = "100%"; - // g.mask.style.height = "100%"; - // g.mask.style.opacity = "0"; - // g.mask.style.backgroundColor = "black"; - // g.mask.style.zIndex = "98"; - // g.mask.style.webkitTransition = "all .2s ease-out"; - // g.mask.style.transition = "all .2s ease-out"; - // g.mask.style.webkitBackfaceVisibility = "hidden"; - // g.events() - // }, - // open: function() { - // var d = this; - // d.wrap.style.display = "block"; - - // setTimeout(function() { - // d.inner.style.transform = "translate3d(0,0,0)"; - // d.inner.style.webkitTransform = "translate3d(0,0,0)"; - // d.mask.style.opacity = 0.5 - // }, 30); - // if (d.opts.time) { - // d.timer = setTimeout(function() { - // d.close() - // }, d.opts.time) - // } - // }, - // close: function() { - // var d = this; - // d.timer && clearTimeout(d.timer); - // d.inner.style.webkitTransform = "translate3d(" + d.translate + ")"; - // d.inner.style.transform = "translate3d(" + d.translate + ")"; - // d.mask.style.opacity = 0; - // setTimeout(function() { - // d.wrap.style.display = "none"; - // d.timer = null; - // d.opts.callback && d.opts.callback() - // }, 300) - // }, - // events: function() { - // var d = this; - // d.addEvent(d.mask, "touchmove", function(f) { - // f.preventDefault() - // }); - // d.addEvent(d.mask, (d.isMobile() ? "touchend" : "click"), function(f) { - // if (d.opts.maskClose) { - // d.close() - // } - // }) - // } - // }; - // b.mSlider = a - // })(window); - - exports(MOD_NAME,pearOper); + + exports(MOD_NAME, pearOper); }) diff --git a/component/pear/module/menu.js b/component/pear/module/menu.js index 33cde7f..88b348a 100644 --- a/component/pear/module/menu.js +++ b/component/pear/module/menu.js @@ -21,14 +21,15 @@ layui.define(['table', 'jquery', 'element'], function (exports) { defaultSelect: opt.defaultSelect, control: opt.control, controlWidth: opt.controlWidth ? opt.controlWidth : "auto", - defaultMenu: opt.defaultMenu, + defaultMenu: opt.defaultMenu || 0, accordion: opt.accordion, - height: opt.height, - theme: opt.theme, + height: opt.height || "100%", + theme: opt.theme || "dark-theme", data: opt.data ? opt.data : [], change: opt.change ? opt.change : function () { }, done: opt.done ? opt.done : function () { } } + var tempDone = option.done; option.done = function(){ if (option.control) { @@ -96,7 +97,8 @@ layui.define(['table', 'jquery', 'element'], function (exports) { menuPath: dom.attr("menu-title"), menuIcon: dom.attr("menu-icon"), menuUrl: dom.attr("menu-url"), - openType: dom.attr("open-type") + menuType: dom.attr("menu-type"), + menuOpenType: dom.attr("menu-open-type") }; var doms = hash(dom); if (doms != null) { @@ -304,7 +306,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { '" ' + target + '>' + item.title + ''; } else if (item.type == 1) { - content += '' + item.title + ''; @@ -374,7 +376,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { ''; } else if (note.type == 1) { // 创 建 菜 单 结 构 - content += '' + note.title + ''; @@ -433,7 +435,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { '">' + note.title + ''; } else if (note.type == 1) { // 创 建 菜 单 结 构 - content += '' + note.title + ''; } diff --git a/component/pear/module/message.js b/component/pear/module/message.js index 54e96bd..51ba162 100644 --- a/component/pear/module/message.js +++ b/component/pear/module/message.js @@ -10,7 +10,6 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }; message.prototype.render = function (opt) { - //默认配置值 var option = { elem: opt.elem, url: opt.url ? opt.url : false, @@ -25,7 +24,6 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var mutationObserver = new MutationObserver(function (mutationsList, observer) { if (getComputedStyle(targetNode).display !== 'none') { var rect = targetNode.getBoundingClientRect(); - //是否超出右侧屏幕 if (rect.right > $(window).width()) { var elemRight = document.querySelector(option.elem).getBoundingClientRect().right; var offsetRight = 20; @@ -110,24 +108,13 @@ layui.define(['table', 'jquery', 'element'], function (exports) { '
    '; }) - // 空内容 if(item.children.length==0){ noticeContent +='

    暂无数据

    '; } noticeContent += '
    '; }) - var notice; - if (count > 0){ - notice = '
  • ' + - '' + - '
    '; - }else { - notice = '
  • ' + - '' + - '
    '; - } - + var notice = '
  • '; noticeTitle += ''; noticeContent += '
    '; notice += noticeTitle; diff --git a/component/pear/module/popover/popover.js b/component/pear/module/popover/popover.js index 7f2e9bd..2dcb57c 100644 --- a/component/pear/module/popover/popover.js +++ b/component/pear/module/popover/popover.js @@ -128,7 +128,6 @@ layui.define(['jquery', 'element'], function(exports) { return out; }; - // The actual plugin constructor function WebuiPopover(element, options) { this.$element = $(element); diff --git a/component/pear/module/tab.js b/component/pear/module/tab.js index 088a3aa..b2d29d3 100644 --- a/component/pear/module/tab.js +++ b/component/pear/module/tab.js @@ -1,11 +1,11 @@ -layui.define(['jquery', 'element'], function(exports) { +layui.define(['jquery', 'element'], function (exports) { "use strict"; var MOD_NAME = 'tab', $ = layui.jquery, element = layui.element; - var pearTab = function(opt) { + var pearTab = function (opt) { this.option = opt; }; @@ -13,7 +13,7 @@ layui.define(['jquery', 'element'], function(exports) { var tabDataCurrent = 0; var contextTabDOM; - pearTab.prototype.render = function(opt) { + pearTab.prototype.render = function (opt) { var option = { elem: opt.elem, @@ -27,7 +27,7 @@ layui.define(['jquery', 'element'], function(exports) { session: opt.session ? opt.session : false, preload: opt.preload ? opt.preload : false, closeEvent: opt.closeEvent, - success: opt.success ? opt.success : function(id) {} + success: opt.success ? opt.success : function (id) { } } if (option.session) { @@ -35,7 +35,7 @@ layui.define(['jquery', 'element'], function(exports) { tabData = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-data")); option.data = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-data")); tabDataCurrent = sessionStorage.getItem(option.elem + "-pear-tab-data-current"); - tabData.forEach(function(item, index) { + tabData.forEach(function (item, index) { if (item.id == tabDataCurrent) { option.index = index; } @@ -48,10 +48,10 @@ layui.define(['jquery', 'element'], function(exports) { var lastIndex; var tab = createTab(option); $("#" + option.elem).html(tab); - $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-prev").click(function() { + $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-prev").click(function () { rollPage("left", option); }) - $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-next").click(function() { + $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-next").click(function () { rollPage("right", option); }) element.init(); @@ -66,7 +66,7 @@ layui.define(['jquery', 'element'], function(exports) { option.success(sessionStorage.getItem(option.elem + "-pear-tab-data-current")); $("body .layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title").on("contextmenu", "li", - function(e) { + function (e) { // 获取当前元素位置 var top = e.clientY; var left = e.clientX; @@ -95,23 +95,23 @@ layui.define(['jquery', 'element'], function(exports) { isOutAnim: false, offset: [top, left], content: menu, //iframe的url, - success: function(layero, index) { + success: function (layero, index) { layer.close(lastIndex); lastIndex = index; menuEvent(option, index); var timer; - $(layero).on('mouseout', function() { - timer = setTimeout(function() { + $(layero).on('mouseout', function () { + timer = setTimeout(function () { layer.close(index); }, 30) }); - $(layero).on('mouseover', function() { + $(layero).on('mouseover', function () { clearTimeout(timer); }); // 清除 item 右击 - $(layero).on('contextmenu', function() { + $(layero).on('contextmenu', function () { return false; }) @@ -124,35 +124,20 @@ layui.define(['jquery', 'element'], function(exports) { return new pearTab(option); } - pearTab.prototype.click = function(callback) { - var elem = this.option.elem; + pearTab.prototype.click = function (callback) { var option = this.option; - element.on('tab(' + this.option.elem + ')', function(data) { + var elem = this.option.elem; + element.on('tab(' + this.option.elem + ')', function (data) { var id = $("#" + elem + " .layui-tab-title .layui-this").attr("lay-id"); sessionStorage.setItem(option.elem + "-pear-tab-data-current", id); - if (!option.preload) { - var $iframe = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-content").find( - "iframe[id='" + id + "']"); - var iframeUrl = $iframe.attr("src"); - if (!iframeUrl || iframeUrl === "about:blank") { - // 获取 url 并重载 - tabData.forEach(function(item, index) { - if (item.id === id) { - iframeUrl = item.url; - } - }) - tabIframeLoading(elem); - $iframe.attr("src", iframeUrl); - } - } callback(id); }); } - pearTab.prototype.positionTab = function() { + pearTab.prototype.positionTab = function () { var $tabTitle = $('.layui-tab[lay-filter=' + this.option.elem + '] .layui-tab-title'); var autoLeft = 0; - $tabTitle.children("li").each(function() { + $tabTitle.children("li").each(function () { if ($(this).hasClass('layui-this')) { return false; } else { @@ -164,12 +149,12 @@ layui.define(['jquery', 'element'], function(exports) { }, 200); } - pearTab.prototype.clear = function() { + pearTab.prototype.clear = function () { sessionStorage.removeItem(this.option.elem + "-pear-tab-data"); sessionStorage.removeItem(this.option.elem + "-pear-tab-data-current"); } - pearTab.prototype.addTab = function(opt) { + pearTab.prototype.addTab = function (opt) { var title = ''; if (opt.close) { title += '' + opt.title + @@ -181,8 +166,8 @@ layui.define(['jquery', 'element'], function(exports) { element.tabAdd(this.option.elem, { title: title, content: '', id: opt.id }); tabData.push(opt); @@ -193,25 +178,25 @@ layui.define(['jquery', 'element'], function(exports) { var index = 0; // 根据过滤 fliter 标识, 重置选项卡标题 - pearTab.prototype.changeTabTitleById = function(elem, id, title) { + pearTab.prototype.changeTabTitleById = function (elem, id, title) { var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title [lay-id='" + id + "'] .title"); currentTab.html(title); } // 根据过滤 filter 标识, 删除指定选项卡 - pearTab.prototype.delTabByElem = function(elem, id, callback) { + pearTab.prototype.delTabByElem = function (elem, id, callback) { var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title [lay-id='" + id + "']"); if (currentTab.find("span").is(".able-close")) { tabDelete(elem, id, callback); } } // 根据过滤 filter 标识, 删除其他选项卡 - pearTab.prototype.delOtherTabByElem = function(elem, callback) { + pearTab.prototype.delOtherTabByElem = function (elem, callback) { var currentId = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this").attr( "lay-id"); var tabtitle = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li"); - $.each(tabtitle, function(i) { + $.each(tabtitle, function (i) { if ($(this).attr("lay-id") != currentId) { if ($(this).find("span").is(".able-close")) { tabDelete(elem, $(this).attr("lay-id"), callback); @@ -221,109 +206,72 @@ layui.define(['jquery', 'element'], function(exports) { } // 根据过滤 filter 标识, 删除全部选项卡 - pearTab.prototype.delAllTabByElem = function(elem, callback) { + pearTab.prototype.delAllTabByElem = function (elem, callback) { var currentId = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this").attr( "lay-id"); var tabtitle = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li"); - $.each(tabtitle, function(i) { + $.each(tabtitle, function (i) { if ($(this).find("span").is(".able-close")) { tabDelete(elem, $(this).attr("lay-id"), callback); } }) } // 根据过滤 filter 标识, 删除当前选项卡 - pearTab.prototype.delCurrentTabByElem = function(elem, callback) { + pearTab.prototype.delCurrentTabByElem = function (elem, callback) { var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this"); if (currentTab.find("span").is(".able-close")) { var currentId = currentTab.attr("lay-id"); tabDelete(elem, currentId, callback); } } + + /** + * @since Pear Admin 4.0 + * + * + */ + pearTab.prototype.addTabOnly = function (opt, time) { - // 通过过滤 filter 标识, 新增标签页 - pearTab.prototype.addTabOnlyByElem = function(elem, opt, time) { - var title = ''; - if (opt.close) { - title += '' + opt.title + - '' - } else { - title += '' + opt.title + - '' - } - if ($(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li[lay-id]").length <= 0) { - element.tabAdd(elem, { - title: title, - content: '', - id: opt.id - }); - if (time != false && time != 0) { - tabIframeLoading(elem, opt.id); - } - tabData.push(opt); - sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData)); - } else { - var isData = false; - $.each($(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li[lay-id]"), function() { - if ($(this).attr("lay-id") == opt.id) { - isData = true; - } - }) - - if (isData == false) { - element.tabAdd(elem, { - title: title, - content: '', - id: opt.id - }); - if (time != false && time != 0) { - tabIframeLoading(elem, opt.id); - } - tabData.push(opt); - sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData)); + var title = `${opt.title}`; - } - } - sessionStorage.setItem(elem + "-pear-tab-data-current", opt.id); - element.tabChange(elem, opt.id); - } - - /** 添 加 唯 一 选 项 卡 */ - pearTab.prototype.addTabOnly = function(opt, time) { - var title = ''; - if (opt.close) { - title += '' + opt.title + - ''; - } else { - title += '' + opt.title + - ''; - } if ($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]").length <= 0) { - element.tabAdd(this.option.elem, { - title: title, - content: '', - id: opt.id + + var that = this; + + $.ajax({ + url: opt.url, + type: 'get', + dataType: 'html', + async: false, + success: function (data) { + element.tabAdd(that.option.elem, { + title: title, + content: '
    ' + data + '
    ', + id: opt.id + }); + }, + error: function (xhr, textstatus, thrown) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } }); - if (time != false && time != 0) { - tabIframeLoading(this.option.elem, opt.id); - } + tabData.push(opt); - sessionStorage.setItem(this.option.elem + "-pear-tab-data", JSON.stringify(tabData)); - sessionStorage.setItem(this.option.elem + "-pear-tab-data-current", opt.id); + sessionStorage.setItem(that.option.elem + "-pear-tab-data", JSON.stringify(tabData)); + sessionStorage.setItem(that.option.elem + "-pear-tab-data-current", opt.id); + } else { + var isData = false; $.each($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]"), - function() { + function () { if ($(this).attr("lay-id") == opt.id) { isData = true; } }) + if (isData == false) { if (this.option.tabMax != false) { @@ -338,19 +286,29 @@ layui.define(['jquery', 'element'], function(exports) { } } - element.tabAdd(this.option.elem, { - title: title, - content: '', - id: opt.id + var that = this; + + $.ajax({ + url: opt.url, + type: 'get', + dataType: 'html', + async: false, + success: function (data) { + element.tabAdd(that.option.elem, { + title: title, + content: '
    ' + data + '
    ', + id: opt.id + }); + tabData.push(opt); + sessionStorage.setItem(that.option.elem + "-pear-tab-data", JSON.stringify(tabData)); + sessionStorage.setItem(that.option.elem + "-pear-tab-data-current", opt.id); + }, + error: function (xhr, textstatus, thrown) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } }); - if (time != false && time != 0) { - tabIframeLoading(this.option.elem, opt.id); - } - tabData.push(opt); - sessionStorage.setItem(this.option.elem + "-pear-tab-data", JSON.stringify(tabData)); - sessionStorage.setItem(this.option.elem + "-pear-tab-data-current", opt.id); } } element.tabChange(this.option.elem, opt.id); @@ -358,56 +316,49 @@ layui.define(['jquery', 'element'], function(exports) { } // 刷 新 指 定 的 选 项 卡 - pearTab.prototype.refresh = function(time) { - // 刷 新 指 定 的 选 项 卡 - var $iframe = $(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-content .layui-show") - .find("iframe"); + pearTab.prototype.refresh = function (time) { + var $iframe = $(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-content .layui-show > div"); + var $iframeLoad; + if (time != false && time != 0) { - tabIframeLoading(this.option.elem); + $iframe.parent().append(`
    `); + $iframeLoad = $("#" + this.option.elem).find("#pear-tab-loading" + index++); + $iframeLoad.css({ + display: "block" + }); } - $iframe.attr("src", $iframe.attr("src")); - } - function tabIframeLoading(elem, id) { - var load = '
    ' + - '
    ' + - '' + - '
    ' + - '
    ' - var $iframe = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-content .layui-show").find("iframe"); - if (id) { - $iframe = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-content").find("iframe[id='" + id + - "']"); - } - $iframe.parent().append(load); - var pearLoad = $("#" + elem).find("#pear-tab-loading" + index); - pearLoad.css({ - display: "block" + $.ajax({ + url: $iframe.attr("src"), + type: 'get', + dataType: 'html', + success: function (data) { + $iframe.html(data); + if ($iframeLoad != undefined) { + $iframeLoad.fadeOut(1000, function () { + $iframeLoad.remove(); + }); + } + }, + error: function (xhr) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } }); - index++; - $iframe.on("load", function() { - pearLoad.fadeOut(1000, function() { - pearLoad.remove(); - }); - }) } function tabDelete(elem, id, callback, option) { - //根据 elem id 来删除指定的 layui title li var tabTitle = $(".layui-tab[lay-filter='" + elem + "']").find(".layui-tab-title"); - - // 删除指定 id 的 title var removeTab = tabTitle.find("li[lay-id='" + id + "']"); var nextNode = removeTab.next("li"); if (!removeTab.hasClass("layui-this")) { removeTab.remove(); - var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("iframe[id='" + id + "']") - .parent(); + var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("div[id='" + id + "']") + .parent(); tabContent.remove(); tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-data")); tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-data-current"); - tabData = tabData.filter(function(item) { + tabData = tabData.filter(function (item) { return item.id != id; }) sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData)); @@ -428,7 +379,7 @@ layui.define(['jquery', 'element'], function(exports) { callback(currId); tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-data")); tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-data-current"); - tabData = tabData.filter(function(item) { + tabData = tabData.filter(function (item) { return item.id != id; }) sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData)); @@ -436,7 +387,7 @@ layui.define(['jquery', 'element'], function(exports) { removeTab.remove(); // 删除 content - var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("iframe[id='" + id + "']").parent(); + var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("div[id='" + id + "']").parent(); // 删除 tabContent.remove(); } @@ -458,12 +409,11 @@ layui.define(['jquery', 'element'], function(exports) { '" lay-allowClose="true">'; var title = '
      '; var content = '
      '; - var control = - '
      • '; + var control = '
        • '; // 处 理 选 项 卡 头 部 var index = 0; - $.each(option.data, function(i, item) { + $.each(option.data, function (i, item) { var TitleItem = ''; if (option.index == index) { TitleItem += '
      • ' + $.ajax({ + url: item.url, + type: 'get', + dataType: 'html', + async: false, + success: function (data) { + content += '
        ' + data + '
        '; + }, + error: function (xhr) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } + }); + } else { - if (!option.preload) { - item.url = "about:blank"; - } - // 处 理 显 示 内 容 - content += '
        ' + + $.ajax({ + url: item.url, + type: 'get', + dataType: 'html', + async: false, + success: function (data) { + content += '
        ' + data + '
        '; + }, + error: function (xhr) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } + }); } index++; }); @@ -531,7 +500,7 @@ layui.define(['jquery', 'element'], function(exports) { } function closeEvent(option) { - $(".layui-tab[lay-filter='" + option.elem + "']").on("click", ".layui-tab-close", function() { + $(".layui-tab[lay-filter='" + option.elem + "']").on("click", ".layui-tab-close", function () { var layid = $(this).parent().attr("lay-id"); tabDelete(option.elem, layid, option.closeEvent, option); }) @@ -539,7 +508,7 @@ layui.define(['jquery', 'element'], function(exports) { function menuEvent(option, index) { - $("#" + option.elem + "closeThis").click(function() { + $("#" + option.elem + "closeThis").click(function () { var currentTab = contextTabDOM; if (currentTab.find("span").is(".able-close")) { @@ -554,10 +523,10 @@ layui.define(['jquery', 'element'], function(exports) { layer.close(index); }) - $("#" + option.elem + "closeOther").click(function() { + $("#" + option.elem + "closeOther").click(function () { var currentId = contextTabDOM.attr("lay-id"); var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li"); - $.each(tabtitle, function(i) { + $.each(tabtitle, function (i) { if ($(this).attr("lay-id") != currentId) { if ($(this).find("span").is(".able-close")) { tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, @@ -568,10 +537,10 @@ layui.define(['jquery', 'element'], function(exports) { layer.close(index); }) - $("#" + option.elem + "closeAll").click(function() { + $("#" + option.elem + "closeAll").click(function () { var currentId = contextTabDOM.attr("lay-id"); var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li"); - $.each(tabtitle, function(i) { + $.each(tabtitle, function (i) { if ($(this).find("span").is(".able-close")) { tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option); } @@ -581,7 +550,7 @@ layui.define(['jquery', 'element'], function(exports) { } function toolEvent(option) { - $("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeThis", function() { + $("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeThis", function () { var currentTab = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title .layui-this"); if (currentTab.find("span").is(".able-close")) { @@ -595,11 +564,11 @@ layui.define(['jquery', 'element'], function(exports) { } }) - $("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeOther", function() { + $("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeOther", function () { var currentId = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title .layui-this").attr("lay-id"); var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li"); - $.each(tabtitle, function(i) { + $.each(tabtitle, function (i) { if ($(this).attr("lay-id") != currentId) { if ($(this).find("span").is(".able-close")) { tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, @@ -609,11 +578,11 @@ layui.define(['jquery', 'element'], function(exports) { }) }) - $("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeAll", function() { + $("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeAll", function () { var currentId = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title .layui-this").attr("lay-id"); var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li"); - $.each(tabtitle, function(i) { + $.each(tabtitle, function (i) { if ($(this).find("span").is(".able-close")) { tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option); } @@ -626,10 +595,10 @@ layui.define(['jquery', 'element'], function(exports) { var $tabTitle = $('#' + option.elem + ' .layui-tab-title'); var mouseScrollStep = 100 // 鼠标滚轮 - $bodyTab.on("mousewheel DOMMouseScroll", function(e) { + $bodyTab.on("mousewheel DOMMouseScroll", function (e) { e.originalEvent.preventDefault() var delta = (e.originalEvent.wheelDelta && (e.originalEvent.wheelDelta > 0 ? "top" : - "down")) || // chrome & ie + "down")) || // chrome & ie (e.originalEvent.detail && (e.originalEvent.detail > 0 ? "down" : "top")); // firefox var scrollLeft = $tabTitle.scrollLeft(); @@ -643,11 +612,11 @@ layui.define(['jquery', 'element'], function(exports) { // 触摸移动 var touchX = 0; - $bodyTab.on("touchstart", function(e) { + $bodyTab.on("touchstart", function (e) { var touch = e.originalEvent.targetTouches[0]; touchX = touch.pageX }) - $bodyTab.on("touchmove", function(e) { + $bodyTab.on("touchmove", function (e) { var event = e.originalEvent; if (event.targetTouches.length > 1) return; event.preventDefault(); diff --git a/component/pear/module/treetable.js b/component/pear/module/treetable.js deleted file mode 100644 index ab0d7a9..0000000 --- a/component/pear/module/treetable.js +++ /dev/null @@ -1,253 +0,0 @@ -layui.define(['layer', 'table'], function (exports) { - var $ = layui.jquery; - var layer = layui.layer; - var table = layui.table; - - var instances = []; - - var treetable = { - - render: function (param) { - param.method = param.method?param.method:"GET"; - if (!treetable.checkParam(param)) { - return; - } - if (param.data) { - treetable.init(param, param.data); - } else { - if(param.method === 'post' || param.method === 'POST') { - $.post(param.url, param.where, function(res){ - if(param.parseData){ - res = param.parseData(res); - param.data = res.data; - } - treetable.init(param, res.data); - }); - } else { - $.get(param.url, param.where, function(res){ - if(param.parseData){ - res = param.parseData(res); - param.data = res.data; - } - treetable.init(param, res.data); - }); - } - } - }, - // 渲染表格 - init: function (param, data) { - var mData = []; - var doneCallback = param.done; - var tNodes = data; - for (var i = 0; i < tNodes.length; i++) { - var tt = tNodes[i]; - if (!tt.id) { - tt.id = tt[param.treeIdName]; - } - if (!tt.pid) { - tt.pid = tt[param.treePidName]; - } - } - - var sort = function (s_pid, data) { - for (var i = 0; i < data.length; i++) { - if (data[i].pid == s_pid) { - var len = mData.length; - if (len > 0 && mData[len - 1].id == s_pid) { - mData[len - 1].isParent = true; - } - mData.push(data[i]); - sort(data[i].id, data); - } - } - }; - sort(param.treeSpid, tNodes); - - param.prevUrl = param.url; - param.url = undefined; - param.data = mData; - param.page = { - count: param.data.length, - limit: param.data.length - }; - param.cols[0][param.treeColIndex].templet = function (d) { - var mId = d.id; - var mPid = d.pid; - var isDir = d.isParent; - var emptyNum = treetable.getEmptyNum(mPid, mData); - var iconHtml = ''; - for (var i = 0; i < emptyNum; i++) { - iconHtml += ''; - } - if (isDir) { - iconHtml += ' '; - } else { - iconHtml += ''; - } - iconHtml += '  '; - var ttype = isDir ? 'dir' : 'file'; - var vg = ''; - return vg + iconHtml + d[param.cols[0][param.treeColIndex].field] + '' - }; - - param.done = function (res, curr, count) { - $(param.elem).next().addClass('treeTable'); - $('.treeTable .layui-table-page').css('display', 'none'); - $(param.elem).next().attr('treeLinkage', param.treeLinkage); - if (param.treeDefaultClose) { - treetable.foldAll(param.elem); - } - if (doneCallback) { - doneCallback(res, curr, count); - } - }; - - // 渲染表格 - table.render(param); - var result = instances.some(item=>item.key===param.elem); - if(!result){ - instances.push({key:param.elem,value:param}); - } - }, - reload: function(elem) { - instances.forEach(function(item){ - if(item.key === elem) { - $(elem).next().remove(); - item.value.data = undefined; - item.value.url = item.value.prevUrl; - treetable.render(item.value); - } - }) - }, - search: function(elem,keyword) { - var $tds = $(elem).next('.treeTable').find('.layui-table-body tbody tr td'); - if (!keyword) { - $tds.css('background-color', 'transparent'); - layer.msg("请输入关键字", {icon: 5}); - return; - } - var searchCount = 0; - $tds.each(function () { - $(this).css('background-color', 'transparent'); - if ($(this).text().indexOf(keyword) >= 0) { - $(this).css('background-color', 'rgba(250,230,160,0.5)'); - if (searchCount == 0) { - $('body,html').stop(true); - $('body,html').animate({scrollTop: $(this).offset().top - 150}, 500); - } - searchCount++; - } - }); - if (searchCount == 0) { - layer.msg("没有匹配结果", {icon: 5}); - } else { - treetable.expandAll(elem); - } - }, - getEmptyNum: function (pid, data) { - var num = 0; - if (!pid) { - return num; - } - var tPid; - for (var i = 0; i < data.length; i++) { - if (pid == data[i].id) { - num += 1; - tPid = data[i].pid; - break; - } - } - return num + treetable.getEmptyNum(tPid, data); - }, - // 展开/折叠行 - toggleRows: function ($dom, linkage) { - var type = $dom.attr('lay-ttype'); - if ('file' == type) { - return; - } - var mId = $dom.attr('lay-tid'); - var isOpen = $dom.hasClass('open'); - if (isOpen) { - $dom.removeClass('open'); - } else { - $dom.addClass('open'); - } - $dom.closest('tbody').find('tr').each(function () { - var $ti = $(this).find('.treeTable-icon'); - var pid = $ti.attr('lay-tpid'); - var ttype = $ti.attr('lay-ttype'); - var tOpen = $ti.hasClass('open'); - if (mId == pid) { - if (isOpen) { - $(this).hide(); - if ('dir' == ttype && tOpen == isOpen) { - $ti.trigger('click'); - } - } else { - $(this).show(); - if (linkage && 'dir' == ttype && tOpen == isOpen) { - $ti.trigger('click'); - } - } - } - }); - }, - // 检查参数 - checkParam: function (param) { - if (!param.treeSpid && param.treeSpid != 0) { - layer.msg('参数treeSpid不能为空', {icon: 5}); - return false; - } - - if (!param.treeIdName) { - layer.msg('参数treeIdName不能为空', {icon: 5}); - return false; - } - - if (!param.treePidName) { - layer.msg('参数treePidName不能为空', {icon: 5}); - return false; - } - - if (!param.treeColIndex && param.treeColIndex != 0) { - layer.msg('参数treeColIndex不能为空', {icon: 5}); - return false; - } - return true; - }, - // 展开所有 - expandAll: function (dom) { - $(dom).next('.treeTable').find('.layui-table-body tbody tr').each(function () { - var $ti = $(this).find('.treeTable-icon'); - var ttype = $ti.attr('lay-ttype'); - var tOpen = $ti.hasClass('open'); - if ('dir' == ttype && !tOpen) { - $ti.trigger('click'); - } - }); - }, - // 折叠所有 - foldAll: function (dom) { - $(dom).next('.treeTable').find('.layui-table-body tbody tr').each(function () { - var $ti = $(this).find('.treeTable-icon'); - var ttype = $ti.attr('lay-ttype'); - var tOpen = $ti.hasClass('open'); - if ('dir' == ttype && tOpen) { - $ti.trigger('click'); - } - }); - } - }; - - // 给图标列绑定事件 - $('body').on('click', '.treeTable .treeTable-icon', function () { - var treeLinkage = $(this).parents('.treeTable').attr('treeLinkage'); - if ('true' == treeLinkage) { - treetable.toggleRows($(this), true); - } else { - treetable.toggleRows($(this), false); - } - }); - - exports('treetable', treetable); -}); \ No newline at end of file diff --git a/component/pear/pear.js b/component/pear/pear.js index 236631c..2b5ba63 100644 --- a/component/pear/pear.js +++ b/component/pear/pear.js @@ -18,12 +18,10 @@ layui.config({ echartsTheme: "echartsTheme",// 数据图表主题 encrypt: "encrypt", // 数据加密组件 select: "select", // 下拉多选组件 - drawer: "drawer", // 抽屉弹层组件 notice: "notice", // 消息提示组件 step:"step", // 分布表单组件 tag:"tag", // 多标签页组件 popup:"popup", // 弹层封装 - treetable:"treetable", // 树状表格 dtree:"dtree", // 树结构 tinymce:"tinymce/tinymce", // 编辑器 area:"area", // 省市级联 @@ -45,7 +43,8 @@ layui.config({ nprogress: "nprogress", // 进度过渡 watermark:"watermark/watermark", //水印组件 fullscreen:"fullscreen", //全屏组件 - popover:"popover/popover" //汽泡组件 + popover:"popover/popover", //汽泡组件 + darkreader: "darkreader" }).use(['layer', 'theme'], function () { layui.theme.changeTheme(window, false); }); \ No newline at end of file diff --git a/config/pear.config.yml b/config/pear.config.yml index 4b7cd70..1576697 100644 --- a/config/pear.config.yml +++ b/config/pear.config.yml @@ -1,9 +1,9 @@ ## 网站配置 -logo: +information: ## 网站名称 - title: "Pear Admin" + name: "Pear Admin" ## 网站图标 - image: "admin/images/logo.png" + logo: "admin/images/logo.png" ## 菜单配置 menu: ## 菜单数据来源 @@ -54,7 +54,7 @@ theme: ## 主题色配置列表 colors: - id: "1" - color: "#2d8cf0" + color: "#16baaa" second: "#ecf5ff" - id: "2" color: "#36b368" @@ -68,6 +68,9 @@ colors: - id: "5" color: "#3963bc" second: "#ecf5ff" +- id: "6" + color: "#009688" + second: "#f0f9eb" ## 其他配置 other: ## 主页动画时长 diff --git a/index.html b/index.html index 3e90a71..61d4053 100644 --- a/index.html +++ b/index.html @@ -3,13 +3,15 @@ - 主页 + Pear Admin 4.0 + + @@ -22,7 +24,7 @@ - +
      • @@ -35,7 +37,6 @@
        • -
        • @@ -57,11 +58,11 @@ - +
      -
      +
      @@ -70,15 +71,7 @@
      - +
      @@ -96,27 +89,28 @@ diff --git a/login.html b/login.html index a1dc971..0631748 100644 --- a/login.html +++ b/login.html @@ -6,26 +6,26 @@ 登录 - + - +
      Pear Admin
      - 明 湖 区 最 具 影 响 力 的 设 计 规 范 之 一 + 致 力 于 让 " Web " 开 发 变 得 简 单 优 雅
      - +
      - +
      - +
      @@ -33,7 +33,7 @@
      @@ -68,4 +68,4 @@ }) - + \ No newline at end of file diff --git a/view/console/console1.html b/view/console/console1.html index 763eea9..47d133a 100644 --- a/view/console/console1.html +++ b/view/console/console1.html @@ -6,11 +6,10 @@ - - -
      + +
      @@ -150,7 +149,7 @@
      -
      +
      @@ -258,9 +257,6 @@
      - - - - - - - + }); + + + + \ No newline at end of file diff --git a/view/demo/index.html b/view/demo/index.html deleted file mode 100644 index 5525c9b..0000000 --- a/view/demo/index.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - -
      -
      -
      - -
      - - - - - diff --git a/view/document/area.html b/view/document/area.html deleted file mode 100644 index 1ccb2ed..0000000 --- a/view/document/area.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - 区域选择 - - - -
      -
      -
      -
      开发环境
      -
      - Area 省市级联 选择组件 -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -							    
      -							    并
      -							    
      -						        并
      -							    
      -							
      -
      -
      -
      -
      -
      -
      -
      - 基本使用 -
      -
      -
      -
      -
      网点地址
      -
      - -
      -
      - -
      -
      - -
      -
      -
      -
      -
      -
      -
      -
      -
      - 基本使用 -
      -
      -
      -
      -
      网点地址
      -
      - -
      -
      - -
      -
      - -
      -
      -
      -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -							layui.use(['area'], function () {
      -							    var area = layui.area;
      -								 
      -							    area.render({
      -							        elem: '#area-picker',
      -							        change: function (res) {
      -							            console.log(res);
      -							        }
      -							    });
      -							});
      -						
      -
      -
      -
      -
      -
      - - - - - - diff --git a/view/document/button.html b/view/document/button.html deleted file mode 100644 index 62a86f2..0000000 --- a/view/document/button.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - - 按钮组件 - - - -
      -
      -
      -
      - 开发环境 -
      -
      - Pear Button 参考 Element UI 样式 ,提供 Button 服务 -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								
      -								或
      -								
      -							
      -
      -
      -
      -
      -
      -
      -
      - 简单使用 -
      -
      -    -    -
      -
      -    -    -    -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								
      -								
      -															
      -								
      -								
      -							
      -
      -
      -
      -
      -
      -
      -
      - 简约样式 -
      -
      -    -    -    -    -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								
      -								
      -															
      -								
      -								
      -							
      -
      -
      -
      -
      -
      -
      -
      - 按钮大小 -
      -
      -    -    -    -    -
      -
      -    -    -    -    -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								  
      -								  
      -								  
      -								  
      -							
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - 按钮组 -
      -
      -
      - - - -
      -
      -
      -
      - - - -
      -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								
      - - - -
      -
      -
      -
      -
      -
      -
      -
      -
      - Load 自动 -
      -
      - -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								layui.use(["button"], function() {
      -								    var button = layui.button;
      -								    
      -									button.load({
      -								        elem:'[load]',
      -								        time: 600,
      -								        done: function(){
      -									        popup.success("加载完成");
      -								        }
      -								    })
      -								})
      -							
      -
      -
      -
      -
      -
      -
      -
      - Load 手动 -
      -
      - - - - -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								layui.use(["button"], function() {
      -								    var button = layui.button;
      -								    
      -									var dom = button.load({
      -								        elem:'[load]',
      -								    })
      -									
      -								    dom.stop(function() {
      -								        popup.failure("已停止");
      -								    });
      -								})
      -							
      -
      -
      -
      -
      -
      -
      -
      - 本页跳转 -
      -
      - -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								layui.use(["jquery"], function() {
      -								    var $ = layui.jquery;
      -								    
      -								    $("[to]").click(function(){
      -								        top.layui.frame.changePageByElement("content","http://www.baidu.com","百度一下",true)
      -								    })
      -								})
      -							
      -
      -
      -
      -
      -
      - - - - - diff --git a/view/document/card.html b/view/document/card.html deleted file mode 100644 index 4f98816..0000000 --- a/view/document/card.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - 数据卡片 - - - -
      -
      -
      -
      - -
      - -
      - -
      - -
      -
      - - - -
      -
      -
      -
      -
      -
      - - - - - diff --git a/view/document/core.html b/view/document/core.html deleted file mode 100644 index 1c81d15..0000000 --- a/view/document/core.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - 数据卡片 - - - -
      -
      - -
      -
      -
      -
      - -
      -
      -
      -
      - -
      -
      -
      -
      - -
      -
      -
      -
      - -
      -
      -
      -
      - -
      -
      -
      -
      - -
      -
      -
      -
      - -
      -
      -
      -
      - -
      -
      -
      -
      - -
      -
      -
      -
      - -
      -
      -
      -
      - -
      -
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      方法描述参数备注
      admin.collapseSide侧边收缩无模式限制
      admin.refreshThis刷新当前无模式限制
      admin.refresh刷新指定id: 编号仅限 TAB 模式
      admin.addTab新增卡片id:编号,title:标题,url:路径仅限 TAB 模式
      admin.changeTabTitle修改标题id:编号,title:标题仅限 TAB 模式
      admin.closeTab关闭卡片id:编号仅限 TAB 模式
      admin.closeCurrentTab关闭当前仅限 TAB 模式
      admin.closeAllTab关闭所有仅限 TAB 模式
      admin.closeOtherTab关闭其他仅限 TAB 模式
      admin.changeIframe切换页面id:编号,title:标题,url:路径仅限 IFRAME 模式
      admin.jump兼容切换id:编号,title:标题,url:路径无模式限制
      admin.fullScreen全屏模式无模式限制
      -
      -
      - - - - - diff --git a/view/document/count.html b/view/document/count.html deleted file mode 100644 index e8f9f1b..0000000 --- a/view/document/count.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - 数字滚动 - - - -
      -
      -
      -
      - 开发环境 -
      -
      - Pear Count 数据滚动特效 -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								
      -								 并
      -								
      -							
      -
      -
      -
      -
      -
      -
      -
      - 简单使用 -
      -
      -

      0

      -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								layui.use(['count'], function() {
      -								    var count = layui.count;
      -									
      -								    count.up("number1", {
      -								        time: 8000,
      -								        num: 4540.34,
      -								        regulator: 100
      -								    })
      -								})
      -							
      -
      -
      -
      -
      -
      -
      -
      - 保留小数 -
      -
      -

      0

      -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -							layui.use(['count'], function() {
      -							    var count = layui.count;
      -								
      -							    count.up("number2", {
      -							        time: 8000,
      -							        num: 4540.34,
      -							        bit: 2,
      -							        regulator: 100
      -							    })
      -							})
      -						
      -
      -
      -
      -
      -
      - - -
      - - - - - diff --git a/view/document/drawer.html b/view/document/drawer.html deleted file mode 100644 index 591e23b..0000000 --- a/view/document/drawer.html +++ /dev/null @@ -1,597 +0,0 @@ - - - - - 抽屉组件 - - - - -
      -
      -
      -
      开发环境
      -
      - Drawer 在 弹出层 UI 上带来不一样的体验. -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								
      -								 并
      -								
      -							
      -
      -
      -
      -
      -
      -
      -
      抽屉
      -
      - - - - -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								layui.use(['drawer'], function() {
      -									var drawer = layui.drawer;
      -
      -								    drawer.open({
      -								        direction: "right",
      -								        dom: ".layer-top",
      -								        distance: "30%"
      -								    });
      -								})
      -							
      -
      -
      -
      -
      -
      -
      -
      进阶
      -
      - -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								var dom;
      -
      -								$(".drawer-close-mask").click(function() {
      -								    dom = drawer.open({
      -								        direction: "right",
      -								        dom: ".layer-close-mask",
      -								        distance: "30%",
      -								        maskClose: false
      -								    });
      -								})
      -
      -								$("#btnClose").click(function() {
      -								    dom.close();
      -								})
      -
      -							
      -
      -
      -
      -
      -
      -
      -
      扩展
      -
      - -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								layui.use(['drawer'], function() {
      -									var drawer = layui.drawer;
      -
      -								    $(".drawer-auto-close").click(function() {
      -								        dom = drawer.open({
      -								            direction: "right",
      -								            dom: ".layer-auto-close",
      -								            distance: "30%",
      -								            maskClose: false,
      -								            time: 1000
      -								        });
      -								    })
      -								})
      -							
      -
      -
      -
      -
      -
      -
      -
      扩展
      -
      - -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								layui.use(['drawer'], function() {
      -									var drawer = layui.drawer;
      -
      -								    $(".drawer-auto-close").click(function() {
      -								        dom = drawer.open({
      -								            direction: "right",
      -								            dom: ".layer-auto-close",
      -								            distance: "30%",
      -								            success:function(){
      -								                layer.msg("触发回调函数");
      -								            }
      -								        });
      -								    })
      -								})
      -							
      -
      -
      -
      -
      - -
      -
      -
      扩展
      -
      -
      - -
      -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -									layui.use(['drawer'], function() {
      -									  var drawer = layui.drawer;
      -									    $("#targetDemo").click(function () {
      -									      drawer.open({
      -									      // 指定挂载节点
      -									      target: "#targetEl"
      -									      direction: "right",
      -									      dom: ".layer-right",
      -									      distance: "50%",
      -									      });
      -									})
      -							
      -
      -
      -
      -
      - -
      -
      -
      基于 layer 的抽屉扩展
      -
      -

      兼容原版 drawer 所有参数,要使用 layer 扩展,设置 legacy 选项为 false 即可

      - - - - - - - - -
      - -
      -
      指定容器内打开,需使用 layer 捕获层模式,并设置目标容器 style="overflow: hidden; - position: relative;"
      -
      - 使用 url 参数指定抽屉代码片段地址,会使用 ajax 请求将代码片段拼接到抽屉中,和原来的页面在同一个页面上, 传值更方便。注意片段和原页面不能出现相同的 ID。 -
      -
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -											$("#layerDrawerLeft").click(function(){
      -											  drawer.open({
      -											    legacy: false,
      -											    offset: 'l',
      -											    area: "30%",
      -											    content: "left内容",
      -											  })
      -											})
      -											$("#layerDrawerRight").click(function () {
      -											  drawer.open({
      -											    legacy: false,
      -											    offset: 'r',
      -											    area: "30%",
      -											    content: "right内容",
      -											  })
      -											})
      -											$("#layerDrawerTop").click(function () {
      -											  drawer.open({
      -											    legacy: false,
      -										      offset: "t",
      -											    content: "top内容",
      -											  })
      -											})
      -											$("#layerDrawerBottom").click(function () {
      -											  drawer.open({
      -											    legacy: false,
      -											    offset: "b",
      -											    content: "bottom内容",
      -											  })
      -											})
      -
      -											$("#layerDrawer").click(function () {
      -											  var index = drawer.open({
      -											    legacy: false,
      -											    title: ['标题', 'font-size:16px;color:#2d8cf0'],
      -											    maxmin: true,
      -											    offset: "r",
      -											    area: "30%",
      -											    content: "抽屉内容",
      -											    btn:"关闭",
      -											    yes:function(index,layero){
      -											      drawer.close(index);
      -											      console.log(index,layero);
      -											    },
      -											    btnAlign: "l",
      -											    closeBtn: 1,
      -											  })
      -											})
      -
      -											$("#layerDrawerParent").click(function () {
      -
      -											  var index = parent.layui.drawer.open({
      -												    legacy: false,
      -												    title: ['标题', 'font-size:16px;color:#2d8cf0'],
      -												    maxmin: true,
      -												    offset: "r",
      -												    area: "30%",
      -												    content: "抽屉内容",
      -												    btn:"关闭",
      -												    yes:function(index,layero){
      -												      drawer.close(index);
      -												      console.log(index,layero);
      -												    },
      -												    btnAlign: "l",
      -												    closeBtn: 1,
      -												})
      -											})
      -
      -											$("#layertargetDemo").click(function () {
      -											    drawer.open({
      -											    legacy: false,
      -											    target: "#layertargetEl",
      -											    direction: "right",
      -											    dom: ".layer-right",
      -											    distance: "50%",
      -											    });
      -											})
      -
      -											$("#layerDrawerIframe").click(function () {
      -											  drawer.open({
      -											  legacy: false,
      -											  title: ['用户管理', 'font-size:16px;color:#2d8cf0'],
      -											  offset: 'r',
      -											  area: "80%",
      -											   maxmin: true,
      -											   closeBtn: 1,
      -											   iframe: window.location.origin + "/view/document/table.html"
      -											  })
      -											})
      -
      -											$("#layerDrawerURL").click(function () {
      -											   drawer.open({
      -										     legacy: false,
      -										     title: ['用户管理', 'font-size:16px;color:#2d8cf0'],
      -											   offset: 'r',
      -											   area: "80%",
      -											   maxmin: true,
      -											   closeBtn: 1,
      -											   url: window.location.origin + "/view/document/drawerFragment.html"
      -											   })
      -											})
      -							
      -
      -
      -
      -
      -
      - - - - - - - - - - - - - - - - diff --git a/view/document/drawerFragment.html b/view/document/drawerFragment.html deleted file mode 100644 index bb399a0..0000000 --- a/view/document/drawerFragment.html +++ /dev/null @@ -1,385 +0,0 @@ - -
      -
      -
      -
      -
      - -
      - -
      -
      -
      - -
      - -
      -
      -
      - -
      - -
      -
      -
      - -
      - -
      -
      -
      - -
      - -
      -
      -
      - - - -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - - - - - - - - - - - - - diff --git a/view/document/dtree.html b/view/document/dtree.html deleted file mode 100644 index 8029ebb..0000000 --- a/view/document/dtree.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - 树形结构 - - - -
      -
      -
      -
      开发环境
      -
      Dtree 提供 树状态 的数据结构展示
      -
      -
      -
      -
      -
      -

      显示代码

      -
      -
      -								
      -								 并
      -								
      -								 并
      -								
      -							
      -
      -
      -
      -
      -
      -
      -
      - 嵌套数据格式 -
      -
      -
        -
        -
        -
        -
        -
        -
        -

        显示代码

        -
        -
        -								layui.use(['dtree'], function () {
        -								    dtree = layui.dtree;
        -								 
        -								    dtree.render({
        -								        elem: "#demoTree",
        -								        initLevel: "1",
        -								        method: 'get',
        -								        url: "admin/data/dtree.json"
        -								    });
        -								});
        -							
        -
        -
        -
        -
        -
        -
        -
        - 嵌套数据格式 -
        -
        -
          -
          -
          -
          -
          -
          -
          -

          显示代码

          -
          -
          -								layui.use(['dtree'], function () {
          -								    dtree = layui.dtree;
          -								 
          -								    dtree.render({
          -								        elem: "#demoTree",
          -								        initLevel: "1",
          -								        method: 'get',
          -								        url: "admin/data/dtree.json",
          -								        dataFormat: "list", 
          -								        checkbar: true
          -								    });
          -								});
          -							
          -
          -
          -
          -
          -
          -
          -
          - 下拉树 -
          -
          -
            -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								layui.use(['dtree'], function () {
            -								    dtree = layui.dtree;
            -								 
            -								    dtree.render({
            -								        elem: "#demoTree2",
            -								        initLevel: "1",
            -								        method: 'get',
            -								        url: "admin/data/dtree.json",
            -								        select: true
            -								    });
            -								});
            -							
            -
            -
            -
            -
            -
            - - - - - \ No newline at end of file diff --git a/view/document/encrypt.html b/view/document/encrypt.html deleted file mode 100644 index 7c7ac6f..0000000 --- a/view/document/encrypt.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - 哈希加密 - - - -
            -
            -
            -
            - 开发环境 -
            -
            - Pear encrypt 为前端开发 提供 加密服务 -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -								 并
            -								
            -							
            -
            -
            -
            -
            -
            -
            -
            加密操作
            -
            -
            -
            - -
            -
            - -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            加密结果
            -
            - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								layui.use(['encrypt'], function() {
            -									var encrypt = layui.encrypt;
            -								
            -								    encrypt.md5( str );
            -									
            -								    encrypt.sha1( str );
            -									
            -								    encrypt.sha256( str );
            -								})
            -							
            -
            -
            -
            -
            -
            -
            -
            API 文档
            -
            -
            - encrypt.md5( str ) -- MD5加密 -
            -
            - encrypt.sha1( str ) -- SHA1加密 -
            -
            - encrypt.sha256( str ) -- SHA256加密 -
            -
            - encrypt.sha512( str ) -- SHA512加密 -
            -
            - encrypt.rmd160( str ) -- RMD160加密 -
            -
            - encrypt.crc32( str ) -- CRC32加密 -
            -
            - encrypt.Base64Encode( str ) -- BASE64加密 -
            -
            -
            -
            -
            -
            -
            - - - - - diff --git a/view/document/form.html b/view/document/form.html deleted file mode 100644 index c991209..0000000 --- a/view/document/form.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - 表单页面 - - - -
            -
            -
            -
            开发环境
            -
            - Pear 基于 Form 的基础上扩展样式 -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -								 或
            -								
            -							
            -
            -
            -
            -
            -
            输入框
            -
            -
            - -
            -
            - -
            -
            - -
            -
            -
            -
            -
            下拉选择框
            -
            -
            - -
            -
            - -
            -
            - -
            -
            - -
            -
            - -
            -
            -
            -
            -
            复选框
            -
            -
            - - - - -
            -
            -
            -
            -
            -
            -
            扩展样式
            -
            -
            - -
            -
            - -
            -
            - -
            - -
            -
            -
            -
            文本域
            -
            -
            - -
            -
            -
            -
            -
            开关
            -
            -
            -    -    -    -    -
            -
            -
            -
            -
            单选框
            -
            -
            - - - -
            -
            -
            -
            -
            - - - - - diff --git a/view/document/fullscreen.html b/view/document/fullscreen.html deleted file mode 100644 index ad625aa..0000000 --- a/view/document/fullscreen.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - 全屏组件 - - - - -
            -
            -
            -
            开发环境
            -
            - fullscreen 用于控制页面或元素全屏 -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -								 并
            -								
            -								 并
            -								
            -							
            -
            -
            -
            -
            -
            -
            -
            全屏控制
            -
            - - - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -				layui.use(['fullscreen'], function() {
            -    var fullscreen = layui.fullscreen;
            -     fullscreen.fullScreen();
            -	    fullscreen.fullClose();
            -	    fullscreen.fullScreen("#fulltarget");
            -	    fullscreen.isFullscreen();
            -
            -			})
            -			
            -
            -
            -
            -
            -
            -
            -
            指定容器全屏
            -
            -
            - - -
            -
            -
            -
            -
            - - - - - diff --git a/view/document/icon.html b/view/document/icon.html deleted file mode 100644 index c453abb..0000000 --- a/view/document/icon.html +++ /dev/null @@ -1,2195 +0,0 @@ - - - - - 图标列表 - - - - - - - - - - -
            - -
            -
            -
              - -
            • - -
              加载
              -
              &#xe6f0;
              -
            • - -
            • - -
              download
              -
              &#xe68d;
              -
            • - -
            • - -
              electronics
              -
              &#xe68e;
              -
            • - -
            • - -
              drag
              -
              &#xe68f;
              -
            • - -
            • - -
              elipsis
              -
              &#xe690;
              -
            • - -
            • - -
              export
              -
              &#xe691;
              -
            • - -
            • - -
              explain
              -
              &#xe692;
              -
            • - -
            • - -
              edit
              -
              &#xe693;
              -
            • - -
            • - -
              eye-close
              -
              &#xe694;
              -
            • - -
            • - -
              email
              -
              &#xe695;
              -
            • - -
            • - -
              error
              -
              &#xe696;
              -
            • - -
            • - -
              favorite
              -
              &#xe697;
              -
            • - -
            • - -
              file-common
              -
              &#xe698;
              -
            • - -
            • - -
              file-delete
              -
              &#xe699;
              -
            • - -
            • - -
              file-add
              -
              &#xe69a;
              -
            • - -
            • - -
              film
              -
              &#xe69b;
              -
            • - -
            • - -
              fabulous
              -
              &#xe69c;
              -
            • - -
            • - -
              file
              -
              &#xe69d;
              -
            • - -
            • - -
              folder-close
              -
              &#xe69e;
              -
            • - -
            • - -
              filter
              -
              &#xe69f;
              -
            • - -
            • - -
              good
              -
              &#xe6a0;
              -
            • - -
            • - -
              hide
              -
              &#xe6a1;
              -
            • - -
            • - -
              home
              -
              &#xe6a2;
              -
            • - -
            • - -
              history
              -
              &#xe6a3;
              -
            • - -
            • - -
              file-open
              -
              &#xe6a4;
              -
            • - -
            • - -
              forward
              -
              &#xe6a5;
              -
            • - -
            • - -
              import
              -
              &#xe6a6;
              -
            • - -
            • - -
              image-text
              -
              &#xe6a7;
              -
            • - -
            • - -
              keyboard-26
              -
              &#xe6a8;
              -
            • - -
            • - -
              keyboard-9
              -
              &#xe6a9;
              -
            • - -
            • - -
              link
              -
              &#xe6aa;
              -
            • - -
            • - -
              layout
              -
              &#xe6ab;
              -
            • - -
            • - -
              fullscreen-shrink
              -
              &#xe6ac;
              -
            • - -
            • - -
              layers
              -
              &#xe6ad;
              -
            • - -
            • - -
              lock
              -
              &#xe6ae;
              -
            • - -
            • - -
              fullscreen-expand
              -
              &#xe6af;
              -
            • - -
            • - -
              map
              -
              &#xe6b0;
              -
            • - -
            • - -
              meh
              -
              &#xe6b1;
              -
            • - -
            • - -
              menu
              -
              &#xe6b2;
              -
            • - -
            • - -
              loading
              -
              &#xe6b3;
              -
            • - -
            • - -
              help
              -
              &#xe6b4;
              -
            • - -
            • - -
              minus-circle
              -
              &#xe6b5;
              -
            • - -
            • - -
              modular
              -
              &#xe6b6;
              -
            • - -
            • - -
              notification
              -
              &#xe6b7;
              -
            • - -
            • - -
              mic
              -
              &#xe6b8;
              -
            • - -
            • - -
              more
              -
              &#xe6b9;
              -
            • - -
            • - -
              pad
              -
              &#xe6ba;
              -
            • - -
            • - -
              operation
              -
              &#xe6bb;
              -
            • - -
            • - -
              play
              -
              &#xe6bc;
              -
            • - -
            • - -
              print
              -
              &#xe6bd;
              -
            • - -
            • - -
              mobile-phone
              -
              &#xe6be;
              -
            • - -
            • - -
              minus
              -
              &#xe6bf;
              -
            • - -
            • - -
              navigation
              -
              &#xe6c0;
              -
            • - -
            • - -
              pdf
              -
              &#xe6c1;
              -
            • - -
            • - -
              prompt
              -
              &#xe6c2;
              -
            • - -
            • - -
              move
              -
              &#xe6c3;
              -
            • - -
            • - -
              refresh
              -
              &#xe6c4;
              -
            • - -
            • - -
              run-up
              -
              &#xe6c5;
              -
            • - -
            • - -
              picture
              -
              &#xe6c6;
              -
            • - -
            • - -
              run-in
              -
              &#xe6c7;
              -
            • - -
            • - -
              pin
              -
              &#xe6c8;
              -
            • - -
            • - -
              save
              -
              &#xe6c9;
              -
            • - -
            • - -
              search
              -
              &#xe6ca;
              -
            • - -
            • - -
              share
              -
              &#xe6cb;
              -
            • - -
            • - -
              scanning
              -
              &#xe6cc;
              -
            • - -
            • - -
              security
              -
              &#xe6cd;
              -
            • - -
            • - -
              sign-out
              -
              &#xe6ce;
              -
            • - -
            • - -
              select
              -
              &#xe6cf;
              -
            • - -
            • - -
              stop
              -
              &#xe6d0;
              -
            • - -
            • - -
              success
              -
              &#xe6d1;
              -
            • - -
            • - -
              smile
              -
              &#xe6d2;
              -
            • - -
            • - -
              switch
              -
              &#xe6d3;
              -
            • - -
            • - -
              setting
              -
              &#xe6d4;
              -
            • - -
            • - -
              survey
              -
              &#xe6d5;
              -
            • - -
            • - -
              task
              -
              &#xe6d6;
              -
            • - -
            • - -
              skip
              -
              &#xe6d7;
              -
            • - -
            • - -
              text
              -
              &#xe6d8;
              -
            • - -
            • - -
              time
              -
              &#xe6d9;
              -
            • - -
            • - -
              telephone-out
              -
              &#xe6da;
              -
            • - -
            • - -
              toggle-left
              -
              &#xe6db;
              -
            • - -
            • - -
              toggle-right
              -
              &#xe6dc;
              -
            • - -
            • - -
              telephone
              -
              &#xe6dd;
              -
            • - -
            • - -
              top
              -
              &#xe6de;
              -
            • - -
            • - -
              unlock
              -
              &#xe6df;
              -
            • - -
            • - -
              user
              -
              &#xe6e0;
              -
            • - -
            • - -
              upload
              -
              &#xe6e1;
              -
            • - -
            • - -
              work
              -
              &#xe6e2;
              -
            • - -
            • - -
              training
              -
              &#xe6e3;
              -
            • - -
            • - -
              warning
              -
              &#xe6e4;
              -
            • - -
            • - -
              zoom-in
              -
              &#xe6e5;
              -
            • - -
            • - -
              zoom-out
              -
              &#xe6e6;
              -
            • - -
            • - -
              add-bold
              -
              &#xe6e7;
              -
            • - -
            • - -
              arrow-left-bold
              -
              &#xe6e8;
              -
            • - -
            • - -
              arrow-up-bold
              -
              &#xe6e9;
              -
            • - -
            • - -
              close-bold
              -
              &#xe6ea;
              -
            • - -
            • - -
              arrow-down-bold
              -
              &#xe6eb;
              -
            • - -
            • - -
              minus-bold
              -
              &#xe6ec;
              -
            • - -
            • - -
              arrow-right-bold
              -
              &#xe6ed;
              -
            • - -
            • - -
              select-bold
              -
              &#xe6ee;
              -
            • - -
            • - -
              column-3
              -
              &#xe663;
              -
            • - -
            • - -
              column-4
              -
              &#xe664;
              -
            • - -
            • - -
              add
              -
              &#xe665;
              -
            • - -
            • - -
              add-circle
              -
              &#xe666;
              -
            • - -
            • - -
              adjust
              -
              &#xe667;
              -
            • - -
            • - -
              arrow-up-circle
              -
              &#xe668;
              -
            • - -
            • - -
              arrow-right-circle
              -
              &#xe669;
              -
            • - -
            • - -
              arrow-down
              -
              &#xe66a;
              -
            • - -
            • - -
              ashbin
              -
              &#xe66b;
              -
            • - -
            • - -
              arrow-right
              -
              &#xe66c;
              -
            • - -
            • - -
              browse
              -
              &#xe66d;
              -
            • - -
            • - -
              bottom
              -
              &#xe66e;
              -
            • - -
            • - -
              back
              -
              &#xe66f;
              -
            • - -
            • - -
              bad
              -
              &#xe670;
              -
            • - -
            • - -
              arrow-double-left
              -
              &#xe671;
              -
            • - -
            • - -
              arrow-left-circle
              -
              &#xe672;
              -
            • - -
            • - -
              arrow-double-right
              -
              &#xe673;
              -
            • - -
            • - -
              caps-lock
              -
              &#xe674;
              -
            • - -
            • - -
              camera
              -
              &#xe675;
              -
            • - -
            • - -
              chart-bar
              -
              &#xe676;
              -
            • - -
            • - -
              attachment
              -
              &#xe677;
              -
            • - -
            • - -
              code
              -
              &#xe678;
              -
            • - -
            • - -
              close
              -
              &#xe679;
              -
            • - -
            • - -
              check-item
              -
              &#xe67a;
              -
            • - -
            • - -
              calendar
              -
              &#xe67b;
              -
            • - -
            • - -
              comment
              -
              &#xe67c;
              -
            • - -
            • - -
              column-vertical
              -
              &#xe67d;
              -
            • - -
            • - -
              column-horizontal
              -
              &#xe67e;
              -
            • - -
            • - -
              complete
              -
              &#xe67f;
              -
            • - -
            • - -
              chart-pie
              -
              &#xe680;
              -
            • - -
            • - -
              cry
              -
              &#xe681;
              -
            • - -
            • - -
              customer-service
              -
              &#xe682;
              -
            • - -
            • - -
              delete
              -
              &#xe683;
              -
            • - -
            • - -
              direction-down
              -
              &#xe684;
              -
            • - -
            • - -
              copy
              -
              &#xe685;
              -
            • - -
            • - -
              cut
              -
              &#xe686;
              -
            • - -
            • - -
              data-view
              -
              &#xe687;
              -
            • - -
            • - -
              direction-down-circle
              -
              &#xe688;
              -
            • - -
            • - -
              direction-right
              -
              &#xe689;
              -
            • - -
            • - -
              direction-up
              -
              &#xe68a;
              -
            • - -
            • - -
              discount
              -
              &#xe68b;
              -
            • - -
            • - -
              direction-left
              -
              &#xe68c;
              -
            • -
            -
            -
            -
              - -
            • - -
              - 加载 -
              -
              .pear-icon-load -
              -
            • - -
            • - -
              - download -
              -
              .pear-icon-download -
              -
            • - -
            • - -
              - electronics -
              -
              .pear-icon-electronics -
              -
            • - -
            • - -
              - drag -
              -
              .pear-icon-drag -
              -
            • - -
            • - -
              - elipsis -
              -
              .pear-icon-elipsis -
              -
            • - -
            • - -
              - export -
              -
              .pear-icon-export -
              -
            • - -
            • - -
              - explain -
              -
              .pear-icon-explain -
              -
            • - -
            • - -
              - edit -
              -
              .pear-icon-edit -
              -
            • - -
            • - -
              - eye-close -
              -
              .pear-icon-eye-close -
              -
            • - -
            • - -
              - email -
              -
              .pear-icon-email -
              -
            • - -
            • - -
              - error -
              -
              .pear-icon-error -
              -
            • - -
            • - -
              - favorite -
              -
              .pear-icon-favorite -
              -
            • - -
            • - -
              - file-common -
              -
              .pear-icon-file-common -
              -
            • - -
            • - -
              - file-delete -
              -
              .pear-icon-file-delete -
              -
            • - -
            • - -
              - file-add -
              -
              .pear-icon-file-add -
              -
            • - -
            • - -
              - film -
              -
              .pear-icon-film -
              -
            • - -
            • - -
              - fabulous -
              -
              .pear-icon-fabulous -
              -
            • - -
            • - -
              - file -
              -
              .pear-icon-file -
              -
            • - -
            • - -
              - folder-close -
              -
              .pear-icon-folder-close -
              -
            • - -
            • - -
              - filter -
              -
              .pear-icon-filter -
              -
            • - -
            • - -
              - good -
              -
              .pear-icon-good -
              -
            • - -
            • - -
              - hide -
              -
              .pear-icon-hide -
              -
            • - -
            • - -
              - home -
              -
              .pear-icon-home -
              -
            • - -
            • - -
              - history -
              -
              .pear-icon-history -
              -
            • - -
            • - -
              - file-open -
              -
              .pear-icon-file-open -
              -
            • - -
            • - -
              - forward -
              -
              .pear-icon-forward -
              -
            • - -
            • - -
              - import -
              -
              .pear-icon-import -
              -
            • - -
            • - -
              - image-text -
              -
              .pear-icon-image-text -
              -
            • - -
            • - -
              - keyboard-26 -
              -
              .pear-icon-keyboard-26 -
              -
            • - -
            • - -
              - keyboard-9 -
              -
              .pear-icon-keyboard-9 -
              -
            • - -
            • - -
              - link -
              -
              .pear-icon-link -
              -
            • - -
            • - -
              - layout -
              -
              .pear-icon-layout -
              -
            • - -
            • - -
              - fullscreen-shrink -
              -
              .pear-icon-fullscreen-shrink -
              -
            • - -
            • - -
              - layers -
              -
              .pear-icon-layers -
              -
            • - -
            • - -
              - lock -
              -
              .pear-icon-lock -
              -
            • - -
            • - -
              - fullscreen-expand -
              -
              .pear-icon-fullscreen-expand -
              -
            • - -
            • - -
              - map -
              -
              .pear-icon-map -
              -
            • - -
            • - -
              - meh -
              -
              .pear-icon-meh -
              -
            • - -
            • - -
              - menu -
              -
              .pear-icon-menu -
              -
            • - -
            • - -
              - loading -
              -
              .pear-icon-loading -
              -
            • - -
            • - -
              - help -
              -
              .pear-icon-help -
              -
            • - -
            • - -
              - minus-circle -
              -
              .pear-icon-minus-circle -
              -
            • - -
            • - -
              - modular -
              -
              .pear-icon-modular -
              -
            • - -
            • - -
              - notification -
              -
              .pear-icon-notification -
              -
            • - -
            • - -
              - mic -
              -
              .pear-icon-mic -
              -
            • - -
            • - -
              - more -
              -
              .pear-icon-more -
              -
            • - -
            • - -
              - pad -
              -
              .pear-icon-pad -
              -
            • - -
            • - -
              - operation -
              -
              .pear-icon-operation -
              -
            • - -
            • - -
              - play -
              -
              .pear-icon-play -
              -
            • - -
            • - -
              - print -
              -
              .pear-icon-print -
              -
            • - -
            • - -
              - mobile-phone -
              -
              .pear-icon-mobile-phone -
              -
            • - -
            • - -
              - minus -
              -
              .pear-icon-minus -
              -
            • - -
            • - -
              - navigation -
              -
              .pear-icon-navigation -
              -
            • - -
            • - -
              - pdf -
              -
              .pear-icon-pdf -
              -
            • - -
            • - -
              - prompt -
              -
              .pear-icon-prompt -
              -
            • - -
            • - -
              - move -
              -
              .pear-icon-move -
              -
            • - -
            • - -
              - refresh -
              -
              .pear-icon-refresh -
              -
            • - -
            • - -
              - run-up -
              -
              .pear-icon-run-up -
              -
            • - -
            • - -
              - picture -
              -
              .pear-icon-picture -
              -
            • - -
            • - -
              - run-in -
              -
              .pear-icon-run-in -
              -
            • - -
            • - -
              - pin -
              -
              .pear-icon-pin -
              -
            • - -
            • - -
              - save -
              -
              .pear-icon-save -
              -
            • - -
            • - -
              - search -
              -
              .pear-icon-search -
              -
            • - -
            • - -
              - share -
              -
              .pear-icon-share -
              -
            • - -
            • - -
              - scanning -
              -
              .pear-icon-scanning -
              -
            • - -
            • - -
              - security -
              -
              .pear-icon-security -
              -
            • - -
            • - -
              - sign-out -
              -
              .pear-icon-sign-out -
              -
            • - -
            • - -
              - select -
              -
              .pear-icon-select -
              -
            • - -
            • - -
              - stop -
              -
              .pear-icon-stop -
              -
            • - -
            • - -
              - success -
              -
              .pear-icon-success -
              -
            • - -
            • - -
              - smile -
              -
              .pear-icon-smile -
              -
            • - -
            • - -
              - switch -
              -
              .pear-icon-switch -
              -
            • - -
            • - -
              - setting -
              -
              .pear-icon-setting -
              -
            • - -
            • - -
              - survey -
              -
              .pear-icon-survey -
              -
            • - -
            • - -
              - task -
              -
              .pear-icon-task -
              -
            • - -
            • - -
              - skip -
              -
              .pear-icon-skip -
              -
            • - -
            • - -
              - text -
              -
              .pear-icon-text -
              -
            • - -
            • - -
              - time -
              -
              .pear-icon-time -
              -
            • - -
            • - -
              - telephone-out -
              -
              .pear-icon-telephone-out -
              -
            • - -
            • - -
              - toggle-left -
              -
              .pear-icon-toggle-left -
              -
            • - -
            • - -
              - toggle-right -
              -
              .pear-icon-toggle-right -
              -
            • - -
            • - -
              - telephone -
              -
              .pear-icon-telephone -
              -
            • - -
            • - -
              - top -
              -
              .pear-icon-top -
              -
            • - -
            • - -
              - unlock -
              -
              .pear-icon-unlock -
              -
            • - -
            • - -
              - user -
              -
              .pear-icon-user -
              -
            • - -
            • - -
              - upload -
              -
              .pear-icon-upload -
              -
            • - -
            • - -
              - work -
              -
              .pear-icon-work -
              -
            • - -
            • - -
              - training -
              -
              .pear-icon-training -
              -
            • - -
            • - -
              - warning -
              -
              .pear-icon-warning -
              -
            • - -
            • - -
              - zoom-in -
              -
              .pear-icon-zoom-in -
              -
            • - -
            • - -
              - zoom-out -
              -
              .pear-icon-zoom-out -
              -
            • - -
            • - -
              - add-bold -
              -
              .pear-icon-add-bold -
              -
            • - -
            • - -
              - arrow-left-bold -
              -
              .pear-icon-arrow-left-bold -
              -
            • - -
            • - -
              - arrow-up-bold -
              -
              .pear-icon-arrow-up-bold -
              -
            • - -
            • - -
              - close-bold -
              -
              .pear-icon-close-bold -
              -
            • - -
            • - -
              - arrow-down-bold -
              -
              .pear-icon-arrow-down-bold -
              -
            • - -
            • - -
              - minus-bold -
              -
              .pear-icon-minus-bold -
              -
            • - -
            • - -
              - arrow-right-bold -
              -
              .pear-icon-arrow-right-bold -
              -
            • - -
            • - -
              - select-bold -
              -
              .pear-icon-select-bold -
              -
            • - -
            • - -
              - column-3 -
              -
              .pear-icon-3column -
              -
            • - -
            • - -
              - column-4 -
              -
              .pear-icon-column-4 -
              -
            • - -
            • - -
              - add -
              -
              .pear-icon-add -
              -
            • - -
            • - -
              - add-circle -
              -
              .pear-icon-add-circle -
              -
            • - -
            • - -
              - adjust -
              -
              .pear-icon-adjust -
              -
            • - -
            • - -
              - arrow-up-circle -
              -
              .pear-icon-arrow-up-circle -
              -
            • - -
            • - -
              - arrow-right-circle -
              -
              .pear-icon-arrow-right-circle -
              -
            • - -
            • - -
              - arrow-down -
              -
              .pear-icon-arrow-down -
              -
            • - -
            • - -
              - ashbin -
              -
              .pear-icon-ashbin -
              -
            • - -
            • - -
              - arrow-right -
              -
              .pear-icon-arrow-right -
              -
            • - -
            • - -
              - browse -
              -
              .pear-icon-browse -
              -
            • - -
            • - -
              - bottom -
              -
              .pear-icon-bottom -
              -
            • - -
            • - -
              - back -
              -
              .pear-icon-back -
              -
            • - -
            • - -
              - bad -
              -
              .pear-icon-bad -
              -
            • - -
            • - -
              - arrow-double-left -
              -
              .pear-icon-arrow-double-left -
              -
            • - -
            • - -
              - arrow-left-circle -
              -
              .pear-icon-arrow-left-circle -
              -
            • - -
            • - -
              - arrow-double-right -
              -
              .pear-icon-arrow-double-right -
              -
            • - -
            • - -
              - caps-lock -
              -
              .pear-icon-caps-lock -
              -
            • - -
            • - -
              - camera -
              -
              .pear-icon-camera -
              -
            • - -
            • - -
              - chart-bar -
              -
              .pear-icon-chart-bar -
              -
            • - -
            • - -
              - attachment -
              -
              .pear-icon-attachment -
              -
            • - -
            • - -
              - code -
              -
              .pear-icon-code -
              -
            • - -
            • - -
              - close -
              -
              .pear-icon-close -
              -
            • - -
            • - -
              - check-item -
              -
              .pear-icon-check-item -
              -
            • - -
            • - -
              - calendar -
              -
              .pear-icon-calendar -
              -
            • - -
            • - -
              - comment -
              -
              .pear-icon-comment -
              -
            • - -
            • - -
              - column-vertical -
              -
              .pear-icon-column-vertical -
              -
            • - -
            • - -
              - column-horizontal -
              -
              .pear-icon-column-horizontal -
              -
            • - -
            • - -
              - complete -
              -
              .pear-icon-complete -
              -
            • - -
            • - -
              - chart-pie -
              -
              .pear-icon-chart-pie -
              -
            • - -
            • - -
              - cry -
              -
              .pear-icon-cry -
              -
            • - -
            • - -
              - customer-service -
              -
              .pear-icon-customer-service -
              -
            • - -
            • - -
              - delete -
              -
              .pear-icon-delete -
              -
            • - -
            • - -
              - direction-down -
              -
              .pear-icon-direction-down -
              -
            • - -
            • - -
              - copy -
              -
              .pear-icon-copy -
              -
            • - -
            • - -
              - cut -
              -
              .pear-icon-cut -
              -
            • - -
            • - -
              - data-view -
              -
              .pear-icon-data-view -
              -
            • - -
            • - -
              - direction-down-circle -
              -
              .pear-icon-direction-down-circle -
              -
            • - -
            • - -
              - direction-right -
              -
              .pear-icon-direction-right -
              -
            • - -
            • - -
              - direction-up -
              -
              .pear-icon-direction-up -
              -
            • - -
            • - -
              - discount -
              -
              .pear-icon-discount -
              -
            • - -
            • - -
              - direction-left -
              -
              .pear-icon-direction-left -
              -
            • - -
            - -
            -
            - - -
            - -
            -
            - - - \ No newline at end of file diff --git a/view/document/iconPicker.html b/view/document/iconPicker.html deleted file mode 100644 index ed72b62..0000000 --- a/view/document/iconPicker.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - Document - - - -
            -
            -
            -
            开发环境
            -
            - IconPicker 提供图标选择功能 -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -								 并
            -								
            -								 并
            -								
            -							
            -
            -
            -
            -
            -
            -
            -
            - 默认图标 -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								layui.use(['iconPicker'], function() {
            -								    var iconPicker = layui.iconPicker;
            -								
            -								    iconPicker.render({
            -								        elem: '#iconPicker',
            -								        type: 'fontClass',
            -								        search: true,
            -								        page: true,
            -								        limit: 16,
            -								        click: function(data) {
            -								           console.log(data);
            -								        },
            -								        success: function(d) {
            -								            console.log(d);
            -								        }
            -								    });
            -									
            -								});
            -							
            -
            -
            -
            -
            -
            -
            -
            默认选中
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								layui.use(['iconPicker'], function() {
            -								    var iconPicker = layui.iconPicker;
            -								
            -								    iconPicker.render({
            -								        elem: '#iconPicker2',
            -								        type: 'fontClass',
            -								        search: true,
            -								        page: true,
            -								        limit: 16,
            -								        click: function(data) {
            -								           console.log(data);
            -								        },
            -								        success: function(d) {
            -								            console.log(d);
            -								        }
            -								    });
            -									
            -								});
            -							
            -
            -
            -
            -
            -
            -
            -
            不分页
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								layui.use(['iconPicker'], function() {
            -								    var iconPicker = layui.iconPicker;
            -								
            -								    iconPicker.render({
            -								        elem: '#iconPicker',
            -								        type: 'fontClass',
            -								        search: true,
            -								        page: false,
            -								        limit: 16,
            -								        click: function(data) {
            -								           console.log(data);
            -								        },
            -								        success: function(d) {
            -								            console.log(d);
            -								        }
            -								    });
            -									
            -								});
            -							
            -
            -
            -
            -
            -
            - - - - - \ No newline at end of file diff --git a/view/document/loading.html b/view/document/loading.html deleted file mode 100644 index 9140e9d..0000000 --- a/view/document/loading.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - 加载组件 - - - - -
            -
            加载组件
            -
            -
            - loading.Load(1,message); -
            -
            - loading.Load(2,message); -
            -
            - loading.Load(3,message); -
            -
            - loading.Load(4,message); -
            -
            - loading.Load(5,message); -
            -
            - loading.remove(time); -
            -
            -
            - - - - - -
            -
            - -
            -
            加载组件
            -
            - - - - - - - - -
            - -
            -
            - -
            - -
            - - - - - - diff --git a/view/document/menu.html b/view/document/menu.html deleted file mode 100644 index 7f9a4ec..0000000 --- a/view/document/menu.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - 数据菜单 - - - -
            -
            -
            -
            开发环境
            -
            - Menu 数据菜单对普通菜单的深度封装 -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -								 并
            -								
            -								 并
            -								
            -							
            -
            -
            -
            -
            -
            -
            -
            实例
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -								var sideMenu = menu.render({
            -								    elem: 'sideMenu',
            -								    async: true,
            -								    theme: "light-theme",
            -								    height: '300px',
            -								    control: false, 
            -								    defaultMenu: 0,
            -								    accordion: true,
            -								    url: "../../admin/data/menu.json",
            -								    parseData: false,
            -								    done: function() {
            -								        layer.msg("加载完成")
            -								    }
            -								});
            -								
            -								sideMenu.click(function(dom, data) {
            -								    
            -									layer.msg("菜单点击 : " + JSON.stringify(data));
            -								})
            -						
            -
            -
            -
            -
            -
            - - - - - diff --git a/view/document/notice.html b/view/document/notice.html deleted file mode 100644 index 8b30118..0000000 --- a/view/document/notice.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - 通知组件 - - - -
            -
            -
            -
            -
            开发环境
            -
            - Notice 用于 消息通知 场景 -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -									
            -									 或
            -									
            -									 并
            -									
            -									 并
            -									
            -								
            -
            -
            -
            -
            -
            -
            -
            消息提醒
            -
            -
            - notice.success("成功消息") -
            -
            - notice.error("危险消息") -
            -
            - notice.warning("警告消息") -
            -
            - notice.info("通用消息") -
            -
            -
            - - - - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -									layui.use(['notice', 'jquery', 'layer', 'code'], function() {
            -									    var notice = layui.notice;
            -										                         
            -									    notice.success("成功消息")
            -									    notice.error("危险消息")
            -									    notice.warning("警告消息")
            -									    notice.info("通用消息")
            -									})
            -								
            -
            -
            -
            -
            -
            -
            -
            - 消息移除 -
            -
            - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -									layui.use(['notice', 'jquery', 'layer', 'code'], function() {
            -									    var notice = layui.notice;
            -										                         
            -									    notice.clear();
            -									})
            -								
            -
            -
            -
            -
            -
            -
            - - - - - - diff --git a/view/document/popover.html b/view/document/popover.html deleted file mode 100644 index 5f27eac..0000000 --- a/view/document/popover.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - 汽泡组件 - - - -
            -
            -
            -
            -
            开发环境
            -
            - popover 用于 汽泡显示 场景 -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -									
            -									 并
            -									
            -									 并
            -									
            -								
            -
            -
            -
            -
            -
            -
            -
            汽泡控制
            -
            - - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -									layui.use(['popover', 'jquery', 'layer', 'code'], function() {
            -									   var popover = layui.popover;
            -    popover.show('#el1');
            -    popover.hide('#el1'); //或 $('#el1').webuiPopover('hide');
            -
            -
            -									})
            -								
            -
            -
            -
            -
            -
            -
            -
            - 不同方式 -
            -
            - - - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -									layui.use(['toast', 'jquery', 'layer', 'code'], function() {
            -									    var popover = layui.popover;
            -    popover.create('#el1',{title:' hello popover-manual',content:'这里显示内容',trigger:'manual',placement:'auto',
            -        animation:'pop',
            -        closeable:true,
            -        delay: {
            -            //show and hide delay time of the popover, works only when trigger is 'hover',the value can be number or object
            -            show: null,
            -            hide: 100
            -        },
            -        opacity:0.98,
            -        type:'html',//content type, values:'html','iframe','async'
            -    });
            -
            -									})
            -								
            -
            -
            -
            -
            -
            -
            -
            - 隐藏 -
            -
            - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -									layui.use(['popover', 'jquery', 'layer', 'code'], function() {
            -									    var popover = layui.popover;
            -									    popover.hideAll();
            -									})
            -								
            -
            -
            -
            -
            -
            -
            - - - - - - diff --git a/view/document/popup.html b/view/document/popup.html deleted file mode 100644 index 8204653..0000000 --- a/view/document/popup.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - 封装弹窗 - - - -
            -
            -
            -
            开发环境
            -
            - Popup 基于 Layer 的 二次封装, 提供简洁高效的 API 调用 -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -								 并
            -								
            -								 并
            -								
            -							
            -
            -
            -
            -
            -
            -
            -
            提示消息
            -
            - - - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								layui.use(['popup'], function() {
            -								    var popup = layui.popup;
            -								  
            -								    popup.success("成功消息")
            -								    popup.failure("失败消息")
            -								    popup.warning("警告消息")
            -								})
            -							
            -
            -
            -
            -
            -
            -
            -
            回调函数
            -
            - - - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								layui.use(['popup'], function() {
            -								    var popup = layui.popup;
            -								  
            -								    popup.success("成功消息",callback)
            -								    popup.failure("失败消息",callback)
            -								    popup.warning("警告消息",callback)
            -								})
            -							
            -
            -
            -
            -
            -
            - - - - - diff --git a/view/document/select.html b/view/document/select.html deleted file mode 100644 index 8effad4..0000000 --- a/view/document/select.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - 多选组件 - - - -
            -
            -
            -
            - 开发环境 -
            -
            - Select 应用于 多选 场景 -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -								 并
            -								
            -								 并
            -								
            -							
            -
            -
            -
            -
            -
            -
            -
            - 默认主题 -
            -
            - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -      								
            -      							
            -
            -
            -
            -
            -
            -
            -
            - 绿色主题 -
            -
            - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -							
            -
            -
            -
            -
            -
            -
            -
            - 通用主题 -
            -
            - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -							
            -
            -
            -
            -
            -
            -
            -
            - 警告主题 -
            -
            - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -							
            -
            -
            -
            -
            -
            -
            -
            - 危险主题 -
            -
            - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -							
            -
            -
            -
            -
            -
            - - - - - - diff --git a/view/document/step.html b/view/document/step.html deleted file mode 100644 index da55064..0000000 --- a/view/document/step.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - 分布表单 - - - -
            -
            -
            -
            开发环境
            -
            Step 步骤表单
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -								 并
            -								
            -								 并
            -								
            -							
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -		                        layui.use(['form', 'step','element'], function() {
            -		                            var $ = layui.$,
            -		                            form = layui.form,
            -		                            step = layui.step;
            -		                            
            -		                            step.render({
            -		                                elem: '#stepForm',
            -		                                filter: 'stepForm',
            -		                                width: '100%',
            -		                                stepWidth: '600px',
            -		                                height: '500px',
            -		                                stepItems: [{
            -		                                    title: '填写'
            -		                                }, {
            -		                                    title: '确认'
            -		                                }, {
            -		                                    title: '完成'
            -		                                }]
            -		                            });
            -		                         
            -		                            form.on('submit(formStep)', function(data) {
            -		                                step.next('#stepForm');
            -		                                return false;
            -		                            });
            -		                         
            -		                            form.on('submit(formStep2)', function(data) {
            -		                                step.next('#stepForm');
            -		                                return false;
            -		                            });
            -		                         
            -		                            $('.pre').click(function() {
            -		                                step.pre('#stepForm');
            -		                                return false;
            -		                            });
            -		                         
            -		                            $('.next').click(function() {
            -		                                step.next('#stepForm');
            -		                                return false;
            -		                            });
            -		                        })
            -							
            -
            -
            -
            -
            -
            - - - - - diff --git a/view/document/tab.html b/view/document/tab.html deleted file mode 100644 index adee0e3..0000000 --- a/view/document/tab.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - 多选项卡 - - - -
            -
            -
            -
            开发环境
            -
            - Tab.js 是一个多视图组件,你可在任何地方内嵌它,并执行常用操作,Admin 正式使用该组件进行路由切换 -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -							    
            -							    并
            -							    
            -							    并
            -							    
            -							
            -
            -
            -
            -
            -
            -
            -
            - 常用操作 -
            -
            - - - -
            -
            -
            -
            -
            -
            - 基本使用 -
            -
            - -
            -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -								tab.render({
            -								    elem: 'contents',
            -								    roll: false,
            -								    tool: false,
            -								    width: '100%',
            -								    height: '480px',
            -								    index: 0,
            -								    tabMax: 30,
            -								    closeEvent: function(id) {
            -										
            -								        // do something
            -								    },
            -								    data: [{
            -								        id: "1",
            -								        title: "首页",
            -								        url: "http://www.baidu.com",
            -								        close: false
            -								    },{
            -								        id: "2",
            -								        title: "百度一下",
            -								        url: "http://www.baidu.com",
            -								        close: false
            -								    }]
            -								});
            -								
            -								
            -						
            -
            -
            -
            -
            -
            - - - - - - diff --git a/view/document/tabContent.html b/view/document/tabContent.html deleted file mode 100644 index d01129b..0000000 --- a/view/document/tabContent.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - 多选项卡内容 - - - -
            -
            -
            - - -
            -
            - - - - - diff --git a/view/document/table.html b/view/document/table.html deleted file mode 100644 index 187cf78..0000000 --- a/view/document/table.html +++ /dev/null @@ -1,412 +0,0 @@ - - - - - - 数据表格 - - - - - -
            -
            -
            -
            -
            - -
            - -
            -
            -
            - -
            - -
            -
            -
            - -
            - -
            -
            -
            - -
            - -
            -
            -
            - -
            - -
            -
            -
            - - - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - - - - - - - - - - - - - -
            -
            -
            -

            上侧弹层内容...

            -
            -
            - - - - - - - diff --git a/view/document/tag.html b/view/document/tag.html deleted file mode 100644 index f2a5628..0000000 --- a/view/document/tag.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - - 标签组件 - - - - - - -
            -
            -
            -
            开发环境
            -
            - Tag 标签组件 -
            -
            -
            - -
            -
            -
            -

            显示代码

            -
            -
            -								
            -								 并
            -								
            -								 并
            -								
            -							
            -
            -
            -
            -
            -
            -
            -
            主题风格
            -
            -
            - - - - -
            -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -							
            - - - - -
            -
            -
            -
            -
            -
            -
            -
            -
            动态操作
            -
            -
            - - - - -
            -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								tag.add('demo', {text: '新选项',id: 12})
            -								 
            -								tag.delete('demo', '44');
            -							
            -
            -
            -
            -
            -
            -
            -
            圆角风格
            -
            -
            - - - - - -
            -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            - - - - - -
            -
            -
            -
            -
            -
            -
            -
            -
            删除功能
            -
            -
            - - - - - -
            -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            - - - - -
            - - tag.on('delete(demo)', function(data) { - console.log('删除'); - console.log(this); - console.log(data.index); - console.log(data.elem); - console.log(data.othis); - }); -
            -
            -
            -
            -
            -
            -
            -
            新建功能
            -
            -
            - - - - -
            -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -							
            - - - - -
            - - tag.on('add(demo)', function(data) { - console.log('新建'); - console.log(this); - console.log(data.index); - console.log(data.elem); - }); -
            -
            -
            -
            -
            -
            - - - - - diff --git a/view/document/tinymce.html b/view/document/tinymce.html deleted file mode 100644 index 86bf479..0000000 --- a/view/document/tinymce.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - 文本编辑 - - - -
            -
            -
            -
            - 开发环境 -
            -
            - Tinymce 文本编辑器 -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -								 并
            -								
            -								 并
            -								
            -							
            -
            -
            -
            -
            -
            -
            -
            富文本编辑器
            -
            - -
            - -
            -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								layui.use(['tinymce'], function() {
            -								    var tinymce = layui.tinymce
            -								
            -								    var edit = tinymce.render({
            -								        elem: "#edit",
            -								        height: 400
            -								    });
            -									
            -								    edit.getContent()
            -								});
            -							
            -
            -
            -
            -
            -
            - - - - - diff --git a/view/document/toast.html b/view/document/toast.html deleted file mode 100644 index cbbd33e..0000000 --- a/view/document/toast.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - - 通知组件 - - - -
            -
            -
            -
            -
            开发环境
            -
            - toast 用于 消息通知 场景 -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -									
            -									 或
            -									
            -									 并
            -									
            -									 并
            -									
            -								
            -
            -
            -
            -
            -
            -
            -
            消息提醒
            -
            -
            - toast.success({title:"成功消息",message:"消息描述"}) -
            -
            - toast.error({title:"危险消息",message:"消息描述"}) -
            -
            - toast.warning({title:"警告消息",message:"消息描述"}) -
            -
            - toast.info({title:"通知消息",message:"消息描述"}) -
            -
            -
            - - - - - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -									layui.use(['toast', 'jquery', 'layer', 'code'], function() {
            -									    var toast = layui.toast;
            -										                         
            -									    toast.success({title: 'Caution',message: 'You forgot important data',position: 'topRight'});
            -									    
            -										toast.info({title: 'Caution',message: 'You forgot important data',position: 'topRight'});
            -									    
            -										toast.warning({title: 'Caution',message: 'You forgot important data',position: 'topRight'});
            -									    
            -										toast.error({title: 'Caution',message: 'You forgot important data',position: 'topRight'});
            -									    
            -										toast.question({title: 'Caution',message: 'You forgot important data',position: 'topRight'});
            -									})
            -								
            -
            -
            -
            -
            -
            -
            -
            - 不同位置 -
            -
            - - - - - - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -									layui.use(['toast', 'jquery', 'layer', 'code'], function() {
            -									    var toast = layui.toast;
            -										                         
            -									    $(".toast-top-left-btn").click(function(){
            -									        toast.success({title: 'Caution',message: 'You forgot important data',position: 'topLeft'});
            -									    })
            -									    $(".toast-top-center-btn").click(function(){
            -									        toast.success({title: 'Caution',message: 'You forgot important data',position: 'topCenter'});
            -									    })
            -									    $(".toast-top-right-btn").click(function(){
            -									        toast.success({title: 'Caution',message: 'You forgot important data',position: 'topRight'});
            -									    })
            -									    $(".toast-bottom-left-btn").click(function(){
            -									        toast.success({title: 'Caution',message: 'You forgot important data',position: 'bottomLeft'});
            -									    })
            -									    $(".toast-bottom-center-btn").click(function(){
            -									        toast.success({title: 'Caution',message: 'You forgot important data',position: 'bottomCenter'});
            -									    })
            -									    $(".toast-bottom-right-btn").click(function(){
            -									        toast.success({title: 'Caution',message: 'You forgot important data',position: 'bottomRight'});
            -									    })
            -									})
            -								
            -
            -
            -
            -
            -
            -
            -
            - 消息移除 -
            -
            - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -									layui.use(['toast', 'jquery', 'layer', 'code'], function() {
            -									    var toast = layui.toast;
            -										                         
            -									    toast.destroy();
            -									})
            -								
            -
            -
            -
            -
            -
            -
            - - - - - - diff --git a/view/document/topBar.html b/view/document/topBar.html deleted file mode 100644 index d57de7d..0000000 --- a/view/document/topBar.html +++ /dev/null @@ -1,279 +0,0 @@ - - - - - 回到顶部 - - - - - - - -
            -
            - -
            -
            动态
            -
            -
            -
            -
            -
            -

            七彩枫叶 在 Pear Admin 专区 回答问题

            - 几秒前 -
            -
            -
            -
            -
            -

            简 在 Pear Admin 专区 进行了 提问

            - 2天前 -
            -
            -
            -
            -
            -

            恒宇少年 将 Pear Admin 更新至 2.3.0 版本

            - 7天前 -
            -
            -
            -
            -
            -

            如花 在 Pear Admin 社区 发布了 建议

            - 7天前 -
            -
            -
            -
            -
            -

            就眠仪式 在 Pear Admin 社区 发布了 建议

            - 8天前 -
            -
            -
            -
            -
            -

            贤心 在 Pear Admin 专区 进行了 提问

            - 8天前 -
            -
            -
            -
            -
            -

            七彩枫叶 在 Pear Admin 专区 回答问题

            - 几秒前 -
            -
            -
            -
            -
            -

            简 在 Pear Admin 专区 进行了 提问

            - 2天前 -
            -
            -
            -
            -
            -

            恒宇少年 将 Pear Admin 更新至 2.3.0 版本

            - 7天前 -
            -
            -
            -
            -
            -

            如花 在 Pear Admin 社区 发布了 建议

            - 7天前 -
            -
            -
            -
            -
            -

            就眠仪式 在 Pear Admin 社区 发布了 建议

            - 8天前 -
            -
            -
            -
            -
            -

            贤心 在 Pear Admin 专区 进行了 提问

            - 8天前 -
            -
            -
            -
            -
            -

            七彩枫叶 在 Pear Admin 专区 回答问题

            - 几秒前 -
            -
            -
            -
            -
            -

            简 在 Pear Admin 专区 进行了 提问

            - 2天前 -
            -
            -
            -
            -
            -

            恒宇少年 将 Pear Admin 更新至 2.3.0 版本

            - 7天前 -
            -
            -
            -
            -
            -

            如花 在 Pear Admin 社区 发布了 建议

            - 7天前 -
            -
            -
            -
            -
            -

            就眠仪式 在 Pear Admin 社区 发布了 建议

            - 8天前 -
            -
            -
            -
            -
            -

            贤心 在 Pear Admin 专区 进行了 提问

            - 8天前 -
            -
            -
            -
            -
            -

            七彩枫叶 在 Pear Admin 专区 回答问题

            - 几秒前 -
            -
            -
            -
            -
            -

            简 在 Pear Admin 专区 进行了 提问

            - 2天前 -
            -
            -
            -
            -
            -

            恒宇少年 将 Pear Admin 更新至 2.3.0 版本

            - 7天前 -
            -
            -
            -
            -
            -

            如花 在 Pear Admin 社区 发布了 建议

            - 7天前 -
            -
            -
            -
            -
            -

            就眠仪式 在 Pear Admin 社区 发布了 建议

            - 8天前 -
            -
            -
            -
            -
            -

            次等水货 在 Pear Admin 专区 进行了 提问

            - 8天前 -
            -
            -
            -
            -
            -

            七彩枫叶 在 Pear Admin 专区 回答问题

            - 几秒前 -
            -
            -
            -
            -
            -

            简 在 Pear Admin 专区 进行了 提问

            - 2天前 -
            -
            -
            -
            -
            -

            恒宇少年 将 Pear Admin 更新至 2.3.0 版本

            - 7天前 -
            -
            -
            -
            -
            -

            如花 在 Pear Admin 社区 发布了 建议

            - 7天前 -
            -
            -
            -
            -
            -

            就眠仪式 在 Pear Admin 社区 发布了 建议

            - 8天前 -
            -
            -
            -
            -
            -

            微笑刺客 在 Pear Admin 专区 进行了 提问

            - 8天前 -
            -
            -
            -
            -
            -
            - -
            -
            - - - - - - diff --git a/view/document/treetable.html b/view/document/treetable.html deleted file mode 100644 index edc0d4d..0000000 --- a/view/document/treetable.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - 树形表格 - - - -
            -
            -
            -
            - -
            - -
            - - -
            -
            -
            -
            - -
            -
            -
            -
            -
            - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/view/document/watermark.html b/view/document/watermark.html deleted file mode 100644 index 5d67a7d..0000000 --- a/view/document/watermark.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - 水印组件 - - - -
            -
            -
            -
            开发环境
            -
            - watermark 用于水印叠加 -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								
            -								 并
            -								
            -								 并
            -								
            -							
            -
            -
            -
            -
            -
            -
            -
            水印创建
            -
            - - - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								layui.use(['watermark'], function() {
            -								    var watermark = layui.watermark;
            -
            -    var mark_node=new watermark({
            -        content: "单行水印"
            -    });
            -
            -    new watermark({
            -        content: "多行水印1
            多行水印2", - height:40 - }); - - new watermark({ - content: "指定容器上", - appendTo:'#water_div', - }); - - }) -
            -
            -
            -
            -
            -
            -
            -
            指定容器水印
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            移除水印
            -
            - -
            -
            -
            -
            -
            -
            -

            显示代码

            -
            -
            -								layui.use(['watermark'], function() {
            -								    var popup = layui.popup;
            -                                    mark_node.destroy();
            -								})
            -							
            -
            -
            -
            -
            -
            - - - - - diff --git a/view/echarts/column.html b/view/echarts/column.html deleted file mode 100644 index 4175261..0000000 --- a/view/echarts/column.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - 条状图表 - - - - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - - - - - - - - diff --git a/view/echarts/line.html b/view/echarts/line.html deleted file mode 100644 index f8080e9..0000000 --- a/view/echarts/line.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - 折线图表 - - - - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - - - - - - - - diff --git a/view/echarts/script/column1.js b/view/echarts/script/column1.js deleted file mode 100644 index db5e817..0000000 --- a/view/echarts/script/column1.js +++ /dev/null @@ -1,137 +0,0 @@ -layui.use(['echarts'], function() { - let echarts = layui.echarts; - var column1 = echarts.init(document.getElementById('column1'),null, { - width: 600, - height: 400 - }); -option = { - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'shadow' , - color: '#fff', - fontSize: '26' - } - }, - legend: { - top:'5%', - right:'10%', - data: ['猕猴桃', '香蕉'], - fontSize:12, - color:'#808080', - icon:'rect' - }, - grid: { - top:60, - left:50, - bottom:60, - right:60 - }, - xAxis: [{ - type: 'category', - axisTick:{ - show:false - }, - axisLine:{ - show:false - }, - axisLabel:{ - color:'#4D4D4D', - fontSize:14, - margin:21, - fontWeight:'bold' - }, - data: ['第一周', '第二周', '第三周', '第四周'], - - }], - yAxis: [{ - name:'单位:万', - nameTextStyle:{ - color:'#808080', - fontSize:12, - padding:[0, 0, 0, -5] - }, - max: function(value) { - if(value.max<5){ - return 5 - }else{ - return value.max - } - }, - type: 'value', - axisLine:{ - show:false - }, - axisLabel:{ - color:'#808080', - fontSize:12, - margin:5 - }, - splitLine:{ - show:false - }, - axisTick:{ - show:false - } - }], - series: [ - { - name: '猕猴桃', - type: 'bar', - label:{ - show:true, - position:'top', - fontSize:14, - color:'#3DC3F0', - fontWeight:'bold' - }, - barMaxWidth:60, - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: '#3DC3F0' // 0% 处的颜色 - }, { - offset: 1, color: '#CCF2FF' // 100% 处的颜色 - }] - }, - data: [60, 110, 180, 100] - }, - { - name: '香蕉', - type: 'bar', - label:{ - show:true, - position:'top', - fontSize:14, - color:'#3D8BF0', - fontWeight:'bold' - }, - barMaxWidth:60, - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: '#3D8BF0' // 0% 处的颜色 - }, { - offset: 1, color: '#CCE2FF' // 100% 处的颜色 - }] - }, - data: [90, 130, 170, 130] - } - ] -}; - - column1.setOption(option); - - window.onresize = function() { - column1.resize(); - } - -}) diff --git a/view/echarts/script/column2.js b/view/echarts/script/column2.js deleted file mode 100644 index 6393cce..0000000 --- a/view/echarts/script/column2.js +++ /dev/null @@ -1,73 +0,0 @@ -layui.use(['echarts'], function() { - let echarts = layui.echarts; - var column2 = echarts.init(document.getElementById('column2'),null, { - width: 600, - height: 400 - }); - - var data = [1000, 600, 500, 300]; - option = { - backgroundColor: '#ffffff', - title: { - text: 'ETC交易成功率', - left: 'center', - top: 2, - fontSize: 20 - }, - color: ['#fed46b','#2194ff', ], - tooltip: { - trigger: 'axis', - axisPointer: { // 坐标轴指示器,坐标轴触发有效 - type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' - } - }, - grid: { - left: '3%', - right: '4%', - bottom: '10%', - containLabel: true - }, - legend: { - left: 'center', - bottom: '2%', - data: ['去年', '今年', ] - }, - xAxis: [{ - type: 'category', - data: ['09-22', '09-22', '09-22', '09-22', '09-22', '09-22', '09-22'], - axisTick: { - alignWithLabel: true - } - }], - yAxis: [{ - type: 'value' - }], - barMaxWidth: '30', - label:{ - show:true, - position:'top', - formatter:function(params){ - return params.value+'%' - } - }, - series: [ - - { - name: '去年', - type: 'bar', - data: [90, 52, 90, 80, 90, 70, 90] - }, - { - name: '今年', - type: 'bar', - data: [10, 52, 90, 70, 90, 70, 90] - }, - ] - }; - column2.setOption(option); - - window.onresize = function() { - column2.resize(); - } - -}) diff --git a/view/echarts/script/column3.js b/view/echarts/script/column3.js deleted file mode 100644 index 897e495..0000000 --- a/view/echarts/script/column3.js +++ /dev/null @@ -1,120 +0,0 @@ -layui.use(['echarts'], function() { - let echarts = layui.echarts; - var column3 = echarts.init(document.getElementById('column3'),null, { - width: 600, - height: 400 - }); - - const colorList = ["#9E87FF", '#73DDFF', '#fe9a8b', '#F56948', '#9E87FF'] - -option = { - backgroundColor: '#fff', - tooltip: { - trigger: "axis", - padding: [8, 10], - backgroundColor: 'rgba(255,255,255,0.5)', - axisPointer: { - type: "shadow", - color: "#fff" - } - }, - legend: { - data: ['新开会员', '激活会员', '关闭会员'], - align: 'left', - right: 0, - - color: "#333", - fontSize: 14, - fontWeight: 200, - - itemWidth: 14, - itemHeight: 14, - itemGap: 35 - }, - grid: { - left: '0', - right: '0', - bottom: '8%', - top: '15%', - containLabel: true - }, - label: { - show: true, - position: 'top', - color: '#333', - fontSize: 14, - fontWeight: 700 - }, - xAxis: [{ - type: 'category', - offset: 10, - data: ['团队1', '团队2', '团队3', '团队4'], - axisLine: { - show: false - }, - axisTick: { - show: false - }, - axisLabel: { - show: true, - color: "#333", - fontSize: 16, - fontWeight: 200 - - }, - }], - yAxis: [{ - type: 'value', - axisLabel: { - show: false - }, - axisTick: { - show: false - }, - axisLine: { - show: false - }, - splitLine: { - show: false - } - }], - series: [{ - name: '新开会员', - type: 'bar', - data: [20, 34, 18, 14, 16], - barWidth: 22, //柱子宽度 - barGap: 1, //柱子之间间距 - itemStyle: { - color: '#0071c8', - opacity: 1, - } - }, { - name: '激活会员', - type: 'bar', - data: [10, 24, 5, 24, 16], - barWidth: 22, - barGap: 1, - itemStyle: { - color: '#fdc508', - opacity: 1, - } - }, { - name: '关闭会员', - type: 'bar', - data: [7, 24, 18, 20, 6], - barWidth: 22, - barGap: 1, - itemStyle: { - color: '#dfeafc', - opacity: 1, - } - }] -}; - - column3.setOption(option); - - window.onresize = function() { - column3.resize(); - } - -}) diff --git a/view/echarts/script/column4.js b/view/echarts/script/column4.js deleted file mode 100644 index 6cd871f..0000000 --- a/view/echarts/script/column4.js +++ /dev/null @@ -1,84 +0,0 @@ -layui.use(['echarts'], function() { - let echarts = layui.echarts; - var column4 = echarts.init(document.getElementById('column4'),null, { - width: 600, - height: 400 - }); - option = { - backgroundColor:'#fff', - title:{ - text:"描边柱状图", - top:10, - left:15, - color:"#35598d", - fontSize:16, - fontWeight:'normal' - }, - tooltip: { - trigger: 'axis', - formatter:'{b}:{c}', - }, - grid: { - left: '5%', - right: '6%', - bottom: '3%', - top: '20%', - containLabel: true - }, - xAxis :{ - type : 'category', - data : ['策略1','策略2','策略3','策略4','策略5','策略6','策略7','策略8','策略9'], - axisLabel:{ //坐标轴字体颜色 - color: '#9eaaba' - }, - axisLine:{ - lineStyle:{ - color:"#e5e5e5" - } - }, - axisTick:{ //y轴刻度线 - show:false - }, - splitLine:{ //网格 - show: false, - } - }, - yAxis :{ - type : 'value', - axisLabel:{ //坐标轴字体颜色 - color: '#9eaaba' - }, - axisLine:{ - show:false, - }, - axisTick:{ //y轴刻度线 - show:false - }, - splitLine:{ //网格 - show: true, - lineStyle:{ - color:'#dadde4', - type:"dashed" //坐标网线类型 - } - } - }, - series:{ - name:'', - type:'bar', - barWidth : '40%', //柱子宽度 - itemStyle:{ //柱子颜色 - borderWidth: 2, - borderColor: 'rgb(79, 116, 223)', - color:'rgba(79, 116, 223, .3)', - }, - data:[320, 332, 301, 334, 390, 330, 320, 230, 156] - } - }; - - column4.setOption(option); - - window.onresize = function() { - column4.resize(); - } - -}) diff --git a/view/echarts/script/line1.js b/view/echarts/script/line1.js deleted file mode 100644 index 1a0ce7b..0000000 --- a/view/echarts/script/line1.js +++ /dev/null @@ -1,236 +0,0 @@ -layui.use(['echarts'], function() { - let echarts = layui.echarts; - var line2 = echarts.init(document.getElementById('line2'),null, { - width: 600, - height: 400 - }); - - const colorList = ["#9E87FF", '#73DDFF', '#fe9a8b', '#F56948', '#9E87FF'] - option = { - backgroundColor: '#fff', - title: { - text: '全国6月销售统计', - fontSize: 12, - fontWeight: 400, - left: 'center', - top: '5%' - }, - legend: { - icon: 'circle', - top: '5%', - right: '5%', - itemWidth: 6, - itemGap: 20, - color: '#556677' - }, - tooltip: { - trigger: 'axis', - axisPointer: { - label: { - show: true, - backgroundColor: '#fff', - color: '#556677', - borderColor: 'rgba(0,0,0,0)', - shadowColor: 'rgba(0,0,0,0)', - shadowOffsetY: 0 - }, - lineStyle: { - width: 0 - } - }, - backgroundColor: '#fff', - color: '#5c6c7c', - padding: [10, 10], - extraCssText: 'box-shadow: 1px 0 2px 0 rgba(163,163,163,0.5)' - }, - grid: { - top: '15%' - }, - xAxis: [{ - type: 'category', - data: ['北京', '上海', '广州', '深圳', '香港', '澳门', '台湾'], - axisLine: { - lineStyle: { - color: '#DCE2E8' - } - }, - axisTick: { - show: false - }, - axisLabel: { - interval: 0, - color: '#556677', - // 默认x轴字体大小 - fontSize: 12, - // margin:文字到x轴的距离 - margin: 15 - }, - axisPointer: { - label: { - // padding: [11, 5, 7], - padding: [0, 0, 10, 0], - - // 这里的margin和axisLabel的margin要一致! - margin: 15, - // 移入时的字体大小 - fontSize: 12, - backgroundColor: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, - color: '#fff' // 0% 处的颜色 - }, { - // offset: 0.9, - offset: 0.86, - - color: '#fff' // 0% 处的颜色 - }, { - offset: 0.86, - color: '#33c0cd' // 0% 处的颜色 - }, { - offset: 1, - color: '#33c0cd' // 100% 处的颜色 - }], - global: false // 缺省为 false - } - } - }, - boundaryGap: false - }], - yAxis: [{ - type: 'value', - axisTick: { - show: false - }, - axisLine: { - show: true, - lineStyle: { - color: '#DCE2E8' - } - }, - axisLabel: { - color: '#556677', - }, - splitLine: { - show: false - } - }, { - type: 'value', - position: 'right', - axisTick: { - show: false - }, - axisLabel: { - color: '#556677', - formatter: '{value}' - }, - axisLine: { - show: true, - lineStyle: { - color: '#DCE2E8' - } - }, - splitLine: { - show: false - } - }], - series: [{ - name: 'Adidas', - type: 'line', - data: [10, 10, 30, 12, 15, 3, 7], - symbolSize: 1, - symbol: 'circle', - smooth: true, - yAxisIndex: 0, - showSymbol: true, - lineStyle: { - width: 5, - color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{ - offset: 0, - color: '#9effff' - }, - { - offset: 1, - color: '#9E87FF' - } - ]), - shadowColor: 'rgba(158,135,255, 0.3)', - shadowBlur: 10, - shadowOffsetY: 20 - }, - itemStyle: { - color: colorList[0], - borderColor: colorList[0] - } - }, { - name: 'Nike', - type: 'line', - data: [5, 12, 11, 14, 25, 16, 10], - symbolSize: 1, - symbol: 'circle', - smooth: true, - yAxisIndex: 0, - showSymbol: true, - lineStyle: { - width: 5, - color: new echarts.graphic.LinearGradient(1, 1, 0, 0, [{ - offset: 0, - color: '#73DD39' - }, - { - offset: 1, - color: '#73DDFF' - } - ]), - shadowColor: 'rgba(115,221,255, 0.3)', - shadowBlur: 10, - shadowOffsetY: 20 - }, - itemStyle: { - color: colorList[1], - borderColor: colorList[1] - } - }, - { - name: '老北京布鞋', - type: 'line', - data: [150, 120, 170, 140, 500, 160, 110], - symbolSize: 1, - yAxisIndex: 1, - symbol: 'circle', - smooth: true, - showSymbol: true, - lineStyle: { - width: 5, - color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{ - offset: 0, - color: '#fe9a' - }, - { - offset: 1, - color: '#fe9a8b' - } - ]), - shadowColor: 'rgba(254,154,139, 0.3)', - shadowBlur: 10, - shadowOffsetY: 20 - }, - itemStyle: { - color: colorList[2], - borderColor: colorList[2] - } - } - ] - }; - - line2.setOption(option); - - window.onresize = function() { - line2.resize(); - } - -}) diff --git a/view/echarts/script/line2.js b/view/echarts/script/line2.js deleted file mode 100644 index c0bb531..0000000 --- a/view/echarts/script/line2.js +++ /dev/null @@ -1,148 +0,0 @@ -layui.use(['echarts'], function() { - let echarts = layui.echarts; - var line1 = echarts.init(document.getElementById('line1'),null, { - width: 600, - height: 400 - }); - - const colorList = ["#9E87FF", '#73DDFF', '#fe9a8b', '#F56948', '#9E87FF'] - option = { - - backgroundColor: '#fff', - tooltip: { - show: false - }, - grid: { - top: '10%', - bottom: '6%', - left: '6%', - right: '6%', - containLabel: true - }, - xAxis: [{ - type: 'category', - boundaryGap: false, - axisLine: { - show: false - }, - axisTick: { - show: false - }, - axisLabel: { - margin: 10, - fontSize: 14, - color: 'rgba(#999)' - }, - splitLine: { - show: true, - lineStyle: { - color: '#939ab6', - opacity: .15 - } - }, - data: ['10:00', '10:10', '10:10', '10:30', '10:40', '10:50'] - },], - yAxis: [{ - type: 'value', - offset: 15, - max: 100, - min: 0, - axisTick: { - show: false - }, - axisLine: { - show: false - }, - axisLabel: { - margin: 10, - fontSize: 14, - color: '#999' - - }, - splitLine: { - show: false - } - - }], - series: [{ - name: '2', - type: 'line', - z: 3, - showSymbol: false, - smoothMonotone: 'x', - lineStyle: { - width: 3, - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: 'rgba(59,102,246)' // 0% 处的颜色 - }, { - offset: 1, color: 'rgba(118,237,252)' // 100% 处的颜色 - }] - }, - shadowBlur: 4, - shadowColor: 'rgba(69,126,247,.2)', - shadowOffsetY: 4 - }, - areaStyle: { - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: 'rgba(227,233,250,.9)' // 0% 处的颜色 - }, { - offset: 1, color: 'rgba(248,251,252,.3)' // 100% 处的颜色 - }] - } - }, - smooth: true, - data: [20, 56, 17, 40, 68, 42] - },{ - name: '1', - type: 'line', - showSymbol: false, - smoothMonotone: 'x', - - lineStyle: { - width: 3, - color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ - offset: 0, - color: 'rgba(255,84,108)' - }, { - offset: 1, - color: 'rgba(252,140,118)' - }], false), - shadowBlur: 4, - shadowColor: 'rgba(253,121,128,.2)', - shadowOffsetY: 4 - }, - areaStyle: { - color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ - offset: 0, - color: 'rgba(255,84,108,.15)' - }, { - offset: 1, - color: 'rgba(252,140,118,0)' - }], false), - }, - smooth: true, - data: [20, 71, 8, 50, 57, 32] - } - ] - - }; - - line1.setOption(option); - - window.onresize = function() { - line1.resize(); - } - -}) diff --git a/view/echarts/script/line3.js b/view/echarts/script/line3.js deleted file mode 100644 index 12bfbc7..0000000 --- a/view/echarts/script/line3.js +++ /dev/null @@ -1,102 +0,0 @@ -layui.use(['echarts'], function() { - let echarts = layui.echarts; - - var line3 = echarts.init(document.getElementById('line3'),null, { - width: 600, - height: 400 - }); - - const colorList = ["#9E87FF", '#73DDFF', '#fe9a8b', '#F56948', '#9E87FF'] - - option = { - backgroundColor: '#fff', - title: { - text: "告警数", - left: "18px", - top: "0", - color: "#999", - fontSize: 12, - fontWeight: '400' - }, - color: ['#73A0FA', '#73DEB3', '#FFB761'], - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'cross', - crossStyle: { - color: '#999' - }, - lineStyle: { - type: 'dashed' - } - } - }, - grid: { - left: '25', - right: '25', - bottom: '24', - top: '75', - containLabel: true - }, - legend: { - data: ['上周', '本周'], - orient: 'horizontal', - icon: "rect", - show: true, - left: 20, - top: 25, - }, - xAxis: { - type: 'category', - data: ['爱立信端局', '中兴端局', '爱立信HSS', '中兴HSS', '华为HSS', '华为智能网', '中兴VIMS'], - splitLine: { - show: false - }, - axisTick: { - show: false - }, - axisLine: { - show: false - }, - }, - yAxis: { - type: 'value', - axisLabel: { - color: '#999', - fontSize: 12 - }, - splitLine: { - show: true, - lineStyle: { - color: '#F3F4F4' - } - }, - axisTick: { - show: false - }, - axisLine: { - show: false - }, - }, - series: [{ - name: '上周', - type: 'line', - smooth: true, - data: [1800, 1000, 2000, 1000, 500, 100, 1200] - }, - { - name: '本周', - type: 'line', - smooth: true, - data: [1700, 999, 1100, 899, 199, 99, 1000] - } - ] - }; - - line3.setOption(option); - - window.onresize = function() { - line3.resize(); - } - -}) diff --git a/view/echarts/script/line4.js b/view/echarts/script/line4.js deleted file mode 100644 index 19e9f79..0000000 --- a/view/echarts/script/line4.js +++ /dev/null @@ -1,167 +0,0 @@ -layui.use(['echarts'], function() { - let echarts = layui.echarts; - - var line4 = echarts.init(document.getElementById('line4'),null, { - width: 600, - height: 400 - }); - - const colorList = ["#9E87FF", '#73DDFF', '#fe9a8b', '#F56948', '#9E87FF'] - option = { - title: { - text: '用电量' - }, - tooltip: { - trigger: 'axis' - }, - legend: { - data: ['2018', '2019'] - }, - grid: { - left: '3%', - right: '4%', - bottom: '3%', - containLabel: true - }, - toolbox: { - feature: { - saveAsImage: {} - } - }, - xAxis: { - type: 'category', - boundaryGap: false,//坐标轴两边留白 - data: ['12201', '12202', '12203','12204','12301','12302','12303','12304','12401', '12402', '12403','12404'], - axisLabel: { //坐标轴刻度标签的相关设置。 - interval: 0,//设置为 1,表示『隔一个标签显示一个标签』 - // margin:15, - - color: '#1B253A', - fontStyle: 'normal', - fontFamily: '微软雅黑', - fontSize: 12, - - formatter:function(params) { - var newParamsName = ""; - var paramsNameNumber = params.length; - var provideNumber = 4; //一行显示几个字 - var rowNumber = Math.ceil(paramsNameNumber / provideNumber); - if (paramsNameNumber > provideNumber) { - for (var p = 0; p < rowNumber; p++) { - var tempStr = ""; - var start = p * provideNumber; - var end = start + provideNumber; - if (p == rowNumber - 1) { - tempStr = params.substring(start, paramsNameNumber); - } else { - tempStr = params.substring(start, end) + "\n"; - } - newParamsName += tempStr; - } - - } else { - newParamsName = params; - } - return newParamsName - }, - //rotate:50, - }, - axisTick:{//坐标轴刻度相关设置。 - show: false, - }, - axisLine:{//坐标轴轴线相关设置 - lineStyle:{ - color:'#E5E9ED', - // opacity:0.2 - } - }, - splitLine: { //坐标轴在 grid 区域中的分隔线。 - show: true, - lineStyle: { - color: '#E5E9ED', - // opacity:0.1 - } - } - }, - yAxis: [ - { - type: 'value', - splitNumber: 5, - axisLabel: { - - color: '#a8aab0', - fontStyle: 'normal', - fontFamily: '微软雅黑', - fontSize: 12 - - }, - axisLine:{ - show: false - }, - axisTick:{ - show: false - }, - splitLine: { - show: true, - lineStyle: { - color: '#E5E9ED', - // opacity:0.1 - } - } - - } - ], - series: [ - { - name: '2018', - type: 'line', - itemStyle: { - color:'#3A84FF', - lineStyle: { - color: "#3A84FF", - width:1 - }, - areaStyle: { - color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{ - offset: 0, - color: 'rgba(58,132,255,0)' - }, { - offset: 1, - color: 'rgba(58,132,255,0.35)' - }]), - } - }, - data: [ 1, 2, 3, 3, 5, 6, 5, 3, 6, 5, 5, 4] - }, - { - name: '2019', - type: 'line', - itemStyle: { - color:'rgba(255,80,124,1)', - lineStyle: { - color: "rgba(255,80,124,1)", - width:1 - }, - areaStyle: { - color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{ - offset: 0, - color: 'rgba(255,80,124,0)' - }, { - offset: 1, - color: 'rgba(255,80,124,0.35)' - }]), - } - }, - data: [9, 5,7,8,6,7,8,7,7,6,8,6] - } - ] - }; - - - line4.setOption(option); - - window.onresize = function() { - line4.resize(); - } - -}) diff --git a/view/error/403.html b/view/error/403.html deleted file mode 100644 index 36d1e15..0000000 --- a/view/error/403.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - -
            - -
            -

            403

            -

            抱歉,你无权访问该页面

            - -
            -
            - - - - \ No newline at end of file diff --git a/view/error/404.html b/view/error/404.html deleted file mode 100644 index b13115a..0000000 --- a/view/error/404.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - -
            - -
            -

            404

            -

            抱歉,你访问的页面不存在或仍在开发中

            - -
            -
            - - - - \ No newline at end of file diff --git a/view/error/500.html b/view/error/500.html deleted file mode 100644 index 505d41b..0000000 --- a/view/error/500.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - -
            - -
            -

            500

            -

            抱歉,服务器出错了

            - -
            -
            - - - - \ No newline at end of file diff --git a/view/result/error.html b/view/result/error.html index d7abae6..a226525 100644 --- a/view/result/error.html +++ b/view/result/error.html @@ -1,45 +1,44 @@ - - - 失败 - - - - -
            -
            -
            -
            - -
            -

            提交失败

            -

            - 请核对并修改以下信息后,再重新提交。如果仅是简单操作,使用 Message 全局提示反馈即可。 - 本文字区域可以展示简单的补充说明,如果有类似展示 - “单据”的需求,下面这个灰色区域可以呈现比较复杂的内容。 -

            -
            - -
            -
            - -     - -
            + + + + 失败 + + + + +
            +
            +
            +
            + +
            +

            提交失败

            +

            + 请核对并修改以下信息后,再重新提交。如果仅是简单操作,使用 Message 全局提示反馈即可。 + 本文字区域可以展示简单的补充说明,如果有类似展示 + “单据”的需求,下面这个灰色区域可以呈现比较复杂的内容。 +

            +
            + +
            +
            + +     +
            - - - - - +
            + + + \ No newline at end of file diff --git a/view/result/success.html b/view/result/success.html index 5a2c7d4..2f2a3a5 100644 --- a/view/result/success.html +++ b/view/result/success.html @@ -1,37 +1,45 @@ - - - 成功 - - - - -
            -
            -
            -
            - -
            -

            提交成功

            -

            - 提交结果页用于反馈一系列操作任务的处理结果, - 如果仅是简单操作,使用 Message 全局提示反馈即可。 - 本文字区域可以展示简单的补充说明,如果有类似展示 - “单据”的需求,下面这个灰色区域可以呈现比较复杂的内容。 -

            -
            - -
            -
            - -     - -
            + + + + 成功 + + + + +
            +
            +
            +
            + +
            +

            提交成功

            +

            + 提交结果页用于反馈一系列操作任务的处理结果, + 如果仅是简单操作,使用 Message 全局提示反馈即可。 + 本文字区域可以展示简单的补充说明,如果有类似展示 + “单据”的需求,下面这个灰色区域可以呈现比较复杂的内容。 +

            +
            + +
            +
            + +     +
            - - - - +
            + + + \ No newline at end of file diff --git a/view/system/deptment.html b/view/system/deptment.html deleted file mode 100644 index 3114717..0000000 --- a/view/system/deptment.html +++ /dev/null @@ -1,289 +0,0 @@ - - - - - 部门管理 - - - - -
            -
            -
            -
            -
            - -
            - -
            -
            -
            - -
            - -
            -
            -
            - -
            - -
            -
            -
            - - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              - - - - - - - - - \ No newline at end of file diff --git a/view/system/dict.html b/view/system/dict.html deleted file mode 100644 index 3a87150..0000000 --- a/view/system/dict.html +++ /dev/null @@ -1,341 +0,0 @@ - - - - - 数据字典 - - - -
              -
              -
              -
              -
              -
              - -
              - -
              - - -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              - - - - - - - - - - - - - - - - -
              -
              -
              -
              -
              - - - - - - - - - - - - - - - - - diff --git a/view/system/log.html b/view/system/log.html deleted file mode 100644 index d4fde96..0000000 --- a/view/system/log.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - 行为日志 - - - -
              -
              -
              -
                -
              • 登录日志
              • -
              • 操作日志
              • -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              - - - - - - - - - - \ No newline at end of file diff --git a/view/system/operate.html b/view/system/operate.html deleted file mode 100644 index fec1c87..0000000 --- a/view/system/operate.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - 表单页面 - - - -
              -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - -
              - - -
              -
              -
              -
              -
              -
              - - -
              -
              -
              - - - - - diff --git a/view/system/operate/add.html b/view/system/operate/add.html deleted file mode 100644 index 82ecdf3..0000000 --- a/view/system/operate/add.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - 新增页面 - - - -
              -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - -
              - - -
              -
              -
              -
              -
              -
              - - -
              -
              -
              - - - - - - diff --git a/view/system/operate/edit.html b/view/system/operate/edit.html deleted file mode 100644 index 82dbce8..0000000 --- a/view/system/operate/edit.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - 修改页面 - - - -
              -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - -
              - - -
              -
              -
              -
              -
              -
              - - -
              -
              -
              - - - - - - diff --git a/view/system/operate/profile.html b/view/system/operate/profile.html deleted file mode 100644 index 6041005..0000000 --- a/view/system/operate/profile.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - 头像上传 - - - -
              -
              -
              - -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              - - - - - -
              -
              建议:图片的尺寸宽高比为1:1,大小在5m以内。
              -
              -
              - - - - - - \ No newline at end of file diff --git a/view/system/person.html b/view/system/person.html deleted file mode 100644 index 16ad62a..0000000 --- a/view/system/person.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - 个人资料 - - - - -
              -
              -
              -
              -
              - -

              就眠仪式

              -

              China , 中国

              -
              -
              -
              - 今日事 ,今日毕 -
              -
              - -
              -
              - 归档 -
              -
              -
                -
              • 优化代码格式2020-06-04 11:28
              • -
              • 新增消息组件2020-06-01 04:23
              • -
              • 移动端兼容2020-05-22 21:38
              • -
              • 系统布局优化2020-05-15 14:26
              • -
              • 兼容多系统菜单模式2020-05-13 16:32
              • -
              • 兼容多标签页切换2019-12-9 14:58
              • -
              • 扩展下拉组件2019-12-7 9:06
              • -
              • 扩展卡片样式2019-12-1 10:26
              • -
              -
              -
              -
              -
              -
              -
              - 我的文章 -
              -
              -
              -
              -
              -
              -
              - -
              -
              -
              为什么程序员们愿意在GitHub上开源自己的成果给别人免费使用和学习?
              -
              - “Git的精髓在于让所有人的贡献无缝合并。而GitHub的天才之处,在于理解了Git的精髓。”来一句我们程序员们接地气的话:分享是一种快乐~ -
              -
              2020-06-12        评论 5 点赞 12 转发 4
              -
              -
              -
              -
              - -
              -
              -
              为什么程序员们愿意在GitHub上开源自己的成果给别人免费使用和学习?
              -
              - “Git的精髓在于让所有人的贡献无缝合并。而GitHub的天才之处,在于理解了Git的精髓。”来一句我们程序员们接地气的话:分享是一种快乐~ -
              -
              2020-06-12        评论 5 点赞 12 转发 4
              -
              -
              -
              -
              - -
              -
              -
              为什么程序员们愿意在GitHub上开源自己的成果给别人免费使用和学习?
              -
              - “Git的精髓在于让所有人的贡献无缝合并。而GitHub的天才之处,在于理解了Git的精髓。”来一句我们程序员们接地气的话:分享是一种快乐~ -
              -
              2020-06-12        评论 5 点赞 12 转发 4
              -
              -
              -
              -
              - -
              -
              -
              为什么程序员们愿意在GitHub上开源自己的成果给别人免费使用和学习?
              -
              - “Git的精髓在于让所有人的贡献无缝合并。而GitHub的天才之处,在于理解了Git的精髓。”来一句我们程序员们接地气的话:分享是一种快乐~ -
              -
              2020-06-12        评论 5 点赞 12 转发 4
              -
              -
              -
              -
              - -
              -
              -
              为什么程序员们愿意在GitHub上开源自己的成果给别人免费使用和学习?
              -
              - “Git的精髓在于让所有人的贡献无缝合并。而GitHub的天才之处,在于理解了Git的精髓。”来一句我们程序员们接地气的话:分享是一种快乐~ -
              -
              2020-06-12        评论 5 点赞 12 转发 4
              -
              -
              -
              -
              - -
              -
              -
              为什么程序员们愿意在GitHub上开源自己的成果给别人免费使用和学习?
              -
              - “Git的精髓在于让所有人的贡献无缝合并。而GitHub的天才之处,在于理解了Git的精髓。”来一句我们程序员们接地气的话:分享是一种快乐~ -
              -
              2020-06-12        评论 5 点赞 12 转发 4
              -
              -
              -
              -
              - -
              -
              -
              为什么程序员们愿意在GitHub上开源自己的成果给别人免费使用和学习?
              -
              - “Git的精髓在于让所有人的贡献无缝合并。而GitHub的天才之处,在于理解了Git的精髓。”来一句我们程序员们接地气的话:分享是一种快乐~ -
              -
              2020-06-12        评论 5 点赞 12 转发 4
              -
              -
              -
              -
              -
              -
              -
              -
              -
              - - - - - diff --git a/view/system/power.html b/view/system/power.html deleted file mode 100644 index cb0a594..0000000 --- a/view/system/power.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - 权限管理 - - - -
              -
              -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - - -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/view/system/profile.html b/view/system/profile.html deleted file mode 100644 index 6041005..0000000 --- a/view/system/profile.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - 头像上传 - - - -
              -
              -
              - -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              - - - - - -
              -
              建议:图片的尺寸宽高比为1:1,大小在5m以内。
              -
              -
              - - - - - - \ No newline at end of file diff --git a/view/system/role.html b/view/system/role.html deleted file mode 100644 index 7c93e19..0000000 --- a/view/system/role.html +++ /dev/null @@ -1,226 +0,0 @@ - - - - - 角色管理 - - - -
              -
              -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - - -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              - - - - - - - - - - - - diff --git a/view/system/space.html b/view/system/space.html deleted file mode 100644 index 8ab19e3..0000000 --- a/view/system/space.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - 空白页面 - - - - -
              -
              -
              -

              Space Page

              -
              -
              - - - - diff --git a/view/system/theme.html b/view/system/theme.html deleted file mode 100644 index 2b38992..0000000 --- a/view/system/theme.html +++ /dev/null @@ -1,300 +0,0 @@ - - - - - 主题预览 - - - -
              -
              按钮
              -
              - - -
              -
              -
              -
              输入框
              -
              -
              -
              - -
              -
              -
              -
              -
              -
              复选框
              -
              -
              - - - - - - -
              -
              -
              -
              -
              开关
              -
              -
              -    -    -    -    -
              -
              -
              -
              -
              单选框
              -
              -
              - - - -
              -
              -
              -
              -
              下拉
              -
              - -
              -
              -
              -
              -
              -
              -
              - - - - - - - - - - - - - -
              -
              选项卡
              -
              -
              -
                -
              • 网站设置
              • -
              • 用户管理
              • -
              • 权限分配
              • -
              • 商品管理
              • -
              • 订单管理
              • -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              进度条
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              分页
              -
              -
              -
              -
              -
              -
              辅助元素
              -
              -
              快乐的时候不敢尽兴,频繁警戒自己保持清醒.
              -
              路上没有灯火的时候,就点亮自己的头颅.
              -
              -
              -
              -
              -
              -
                -
              • - -
                -

                8月18日

                -

                - layui 2.0 的一切准备工作似乎都已到位。发布之弦,一触即发。 -

                -
                -
              • -
              • - -
                -

                8月16日

                -

                杜甫的思想核心是儒家的仁政思想,他有“致君尧舜上,再使风俗淳”的宏伟抱负。个人最爱的名篇有:

                -
                -
              • -
              • - -
                -

                8月15日

                -

                - 中国人民抗日战争胜利72周年 -

                -
                -
              • -
              -
              -
              -
              -
              日期选择
              -
              - -
              -
              - - - - - - - - diff --git a/view/system/user.html b/view/system/user.html deleted file mode 100644 index 7db350d..0000000 --- a/view/system/user.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - 用户管理 - - - -
              -
              -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - -
              - -
              -
              -
              - - -
              -
              -
              -
              -
              -
              -
              -
              -
              -
              - - - - - - - - - - - - - - - - - - -- Gitee From eead3c8f0f351b0d1fd298c414c20068aa39990f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Thu, 22 Jun 2023 01:10:49 +0800 Subject: [PATCH 002/141] update --- admin/css/admin.css | 17 +-- component/pear/module/admin.js | 203 +++++++++++++++++++++------------ config/pear.config.yml | 11 +- index.html | 13 ++- 4 files changed, 150 insertions(+), 94 deletions(-) diff --git a/admin/css/admin.css b/admin/css/admin.css index 61b3093..2a6c070 100644 --- a/admin/css/admin.css +++ b/admin/css/admin.css @@ -63,6 +63,10 @@ body, display: none; } +.pear-admin .layui-logo .title { + font-size: 20px; +} + .pear-admin .layui-layout-right .layui-nav-child { border: 1px solid whitesmoke; border-radius: 4px; @@ -88,13 +92,12 @@ body, } .pear-admin .layui-logo { - box-sizing: border-box; - background-color: #28333E; - border-bottom: 1px solid rgba(0, 0, 0, .12); width: 230px; - height: 60px; - line-height: 60px; + height: 59px; + line-height: 59px; position: relative; + background-color: #28333E; + border-bottom: 1px solid rgba(0, 0, 0, .12); } .pear-admin .layui-logo img { @@ -102,10 +105,10 @@ body, height: 34px; } -.pear-admin .layui-logo .text { +.pear-admin .layui-logo .title { font-size: 21px; font-weight: 550; - color: var(--global-primary-color); + color: #5FB878; position: relative; top: 5px; margin-left: 5px; diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 7e55066..40ba8a6 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -4,8 +4,10 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm var $ = layui.jquery, form = layui.form, + element = layui.element, yaml = layui.yaml, pearTab = layui.tab, + convert = layui.convert, pearMenu = layui.menu, pearFrame = layui.frame, pearTheme = layui.theme, @@ -85,60 +87,38 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm */ this.render = (options) => { if (options !== undefined) { - this.renderFramework(options); + applyConfig(options); } else { this.configurationProvider().then((result) => { - this.renderFramework(result); + applyConfig(result); }) } } - /** - * @since Pear Admin 4.0 - */ - this.renderFramework = (options) => { - - this.renderInformation(options.information); - - this.renderMenu(options); - - this.renderContent(options); - - // - - - // TODO 机制 - $(".loader-main").fadeOut(360, () => { - $(".loader-main").remove(); - }); + this.messageRender = function (option) { + var option = { + elem: '.message', + url: option.header.message, + height: '250px' + }; + msgInstance = message.render(option); } - /** - * @since Pear Admin 4.0 - * - * 初始化 Web information 网站信息 - */ - this.renderInformation = (informationOptions) => { - const $logo = $(".pear-admin .layui-logo .logo"); - if(informationOptions && informationOptions.logo) { - $logo.attr("src", informationOptions.logo); - } - const $text = $(".pear-admin .layui-logo .text"); - if(informationOptions && informationOptions.name) { - $text.html(informationOptions.name); - } + this.logoRender = function (param) { + $(".layui-logo .logo").attr("src", param.logo.image); + $(".layui-logo .title").html(param.logo.title); } - this.renderMenu = (param) => { - - const isControl = filterStorage("control", param, param.menu.control); - + this.menuRender = function (param) { sideMenu = pearMenu.render({ - elem: 'menu', + elem: 'sideMenu', async: param.menu.async !== undefined ? param.menu.async : true, + theme: "dark-theme", + height: '100%', method: param.menu.method, - control: isControl == true ? 'control' : false, + control: isControl(param) === 'true' || isControl(param) === true ? 'control' : false, // control controlWidth: param.menu.controlWidth, + defaultMenu: 0, accordion: param.menu.accordion, url: param.menu.data, data: param.menu.data, @@ -154,7 +134,11 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm }); } - this.renderContent = function (param) { + this.bodyRender = function (param) { + + body.on("click", ".refresh", function () { + refresh(); + }) if (isMuiltTab(param) === "true" || isMuiltTab(param) === true) { bodyTab = pearTab.render({ @@ -209,7 +193,6 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm compatible(); }) } else { - bodyFrame = pearFrame.render({ elem: 'content', title: '首页', @@ -229,25 +212,11 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } } - function applyConfig(param) { - config = param; - pearAdmin.logoRender(param); - pearAdmin.menuRender(param); - pearAdmin.bodyRender(param); - pearAdmin.themeRender(param); - pearAdmin.keepLoad(param); - if (param.header.message != false) { - pearAdmin.messageRender(param); - } - } - - this.messageRender = function (option) { - var option = { - elem: '.message', - url: option.header.message, - height: '250px' - }; - msgInstance = message.render(option); + this.keepLoad = function (param) { + compatible() + setTimeout(function () { + $(".loader-main").fadeOut(200); + }, param.other.keepLoad) } this.themeRender = function (option) { @@ -388,6 +357,105 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm msgInstance.click(callback); } } + + this.collapseSide = function () { + collapse() + } + + this.refreshThis = function () { + refresh() + } + + this.refresh = function (id) { + $("iframe[id='" + id + "']").attr('src', $("iframe[id='" + id + "']").attr('src')); + } + + this.addTab = function (id, title, url) { + if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { + bodyTab.addTabOnly({ + id: id, + title: title, + url: url, + icon: null, + close: true + }, 400); + } else { + return; + } + } + + this.closeTab = function (id) { + if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { + pearTab.delTabByElem('content', id, function (currentId) { + sideMenu.selectItem(currentId); + }); + } else { + return; + } + } + + this.closeCurrentTab = function () { + if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { + pearTab.delCurrentTabByElem('content', function (id) { + sideMenu.selectItem(id); + }); + } else { + return; + } + } + + this.closeOtherTab = function () { + if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { + pearTab.delOtherTabByElem('content', function (id) { + sideMenu.selectItem(id); + }); + } else { + return; + } + } + + this.closeAllTab = function () { + if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { + pearTab.delAllTabByElem('content', function (id) { + sideMenu.selectItem(id); + }); + } else { + return; + } + } + + this.changeTabTitle = function (id, title) { + pearTab.changeTabTitleById('content', id, title); + } + + this.changeIframe = function (id, title, url) { + if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { + return; + } else { + sideMenu.selectItem(id); + bodyFrame.changePage(url, true); + } + } + + this.jump = function (id, title, url) { + if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { + pearAdmin.addTab(id, title, url) + } else { + pearAdmin.changeIframe(id, title, url) + } + } + + this.fullScreen = function () { + if ($(".fullScreen").hasClass("layui-icon-screen-restore")) { + screenFun(2).then(function () { + $(".fullScreen").eq(0).removeClass("layui-icon-screen-restore"); + }); + } else { + screenFun(1).then(function () { + $(".fullScreen").eq(0).addClass("layui-icon-screen-restore"); + }); + } + } }; function refresh() { @@ -927,19 +995,6 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } } - /** - * @since Pear Admin 4.0 - */ - function filterStorage (optionName, options, optionValue) { - if (options.theme.allowCustom) { - const storageValue = localStorage.getItem(optionName); - if(optionValue != undefined && optionValue != null) { - return storageValue; - } - } - return optionValue; - } - function isControl(option) { if (option.theme.allowCustom) { if (localStorage.getItem("control") != null) { diff --git a/config/pear.config.yml b/config/pear.config.yml index 1576697..4b7cd70 100644 --- a/config/pear.config.yml +++ b/config/pear.config.yml @@ -1,9 +1,9 @@ ## 网站配置 -information: +logo: ## 网站名称 - name: "Pear Admin" + title: "Pear Admin" ## 网站图标 - logo: "admin/images/logo.png" + image: "admin/images/logo.png" ## 菜单配置 menu: ## 菜单数据来源 @@ -54,7 +54,7 @@ theme: ## 主题色配置列表 colors: - id: "1" - color: "#16baaa" + color: "#2d8cf0" second: "#ecf5ff" - id: "2" color: "#36b368" @@ -68,9 +68,6 @@ colors: - id: "5" color: "#3963bc" second: "#ecf5ff" -- id: "6" - color: "#009688" - second: "#f0f9eb" ## 其他配置 other: ## 主页动画时长 diff --git a/index.html b/index.html index 61d4053..7ed70e6 100644 --- a/index.html +++ b/index.html @@ -10,8 +10,6 @@ - - @@ -24,7 +22,7 @@ - +
                @@ -58,11 +56,11 @@ - +
              - +
              @@ -94,7 +92,7 @@ var admin = layui.admin; var popup = layui.popup; var darkreader = layui.darkreader; - + admin.setConfigurationPath("config/pear.config.yml"); admin.render(); @@ -111,6 +109,9 @@ resolve(true) }); }) + + // 消息点击回调 + admin.message(function(id, title, context, form) {}); }) -- Gitee From aea728009dd7ddd0f8531f9560a70d572f4d681b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Thu, 22 Jun 2023 02:05:56 +0800 Subject: [PATCH 003/141] update --- component/pear/css/module/dtree/dtree.css | 112 - component/pear/css/module/dtree/dtree.js | 4947 ----------------- .../pear/css/module/dtree/font/dtreefont.css | 229 - .../pear/css/module/dtree/font/dtreefont.eot | Bin 19508 -> 0 bytes .../pear/css/module/dtree/font/dtreefont.svg | 80 - .../pear/css/module/dtree/font/dtreefont.ttf | Bin 19344 -> 0 bytes .../pear/css/module/dtree/font/dtreefont.woff | Bin 19420 -> 0 bytes .../pear/css/module/dtree/font/icons.json | 283 - component/pear/css/pear.css | 2 - component/pear/module/admin.js | 8 +- component/pear/module/echartsTheme.js | 84 +- config/pear.config.yml | 11 +- index.html | 5 +- view/console/console1.html | 849 +-- view/console/console2.html | 45 +- 15 files changed, 517 insertions(+), 6138 deletions(-) delete mode 100644 component/pear/css/module/dtree/dtree.css delete mode 100644 component/pear/css/module/dtree/dtree.js delete mode 100644 component/pear/css/module/dtree/font/dtreefont.css delete mode 100644 component/pear/css/module/dtree/font/dtreefont.eot delete mode 100644 component/pear/css/module/dtree/font/dtreefont.svg delete mode 100644 component/pear/css/module/dtree/font/dtreefont.ttf delete mode 100644 component/pear/css/module/dtree/font/dtreefont.woff delete mode 100644 component/pear/css/module/dtree/font/icons.json diff --git a/component/pear/css/module/dtree/dtree.css b/component/pear/css/module/dtree/dtree.css deleted file mode 100644 index 3e5364d..0000000 --- a/component/pear/css/module/dtree/dtree.css +++ /dev/null @@ -1,112 +0,0 @@ - -/**************** 主题换肤 ****************/ -/* 默认风格*/ -.dtree-theme-item-this{background-color: #d2d2d2!important;} -.dtree-theme-item:hover{background-color: #eaeceb!important;} -.dtree-theme-item cite{font-size:12px!important;} -.dtree-theme-item:hover cite{color:#fe7786!important;} - -.dtree-theme-dtreefont{font-size: 16px!important;} -.dtree-theme-ficon{color:#000!important;} -.dtree-theme-icon{color:orange!important;} -.dtree-theme-checkbox:hover{color:#fe7786!important;} -.dtree-theme-choose{color:#fe7786!important;} - -/* layui主题风格*/ -.dtree-layui-item-this{background: none!important;} -.dtree-layui-item:hover{background: none!important;} -.dtree-layui-item cite{font-size:14px!important;} -.dtree-layui-item:hover cite{opacity:0.5;filter:Alpha(opacity=50);text-decoration: underline;} - -.dtree-layui-dtreefont{font-size: 18px!important;} -.dtree-layui-ficon{font-size: 18px!important;color:#393D49!important;} -.dtree-layui-icon{color:#666!important;} -.dtree-layui-checkbox:hover{color:#5FB878!important;} -.dtree-layui-choose{color:#5FB878!important;} - -/* laySimple主题风格*/ -.dtree-laySimple-item-this{background-color: #d2d2d2!important;} -.dtree-laySimple-item:hover{background-color: #eaeceb!important;} -.dtree-laySimple-item cite{font-size:12px!important;} -.dtree-laySimple-item:hover cite{color:#01AAED!important;} - -.dtree-laySimple-dtreefont{font-size: 16px!important;} -.dtree-laySimple-ficon{font-size: 14px!important;color:#393D49!important;} -.dtree-laySimple-icon{color:#393D49!important;} -.dtree-laySimple-checkbox:hover{color:#01AAED!important;} -.dtree-laySimple-choose{color:#01AAED!important;} -/**************** 树基础 ****************/ -/* 菜单栏*/ -.dtree-menubar {padding-left: 10px;} -.dtree-menubar .layui-btn-group .layui-btn-sm{height: 20px;line-height: 20px;padding: 0 5px;font-size: 12px;} -.dtree-menubar .layui-btn-group .layui-btn-sm i{font-size: 12px!important;} - -/* 工具栏*/ -.dtree-toolbar{position: absolute;z-index: 940520;padding: 0;background-color: #eceaeb;} -.dtree-toolbar .layui-nav-child{position: static;} -.dtree-toolbar .layui-nav-child dd{cursor: pointer;} -.dtree-toolbar .layui-nav-child dd a i{font-size:16px;display: inline-block;margin: 0px 1px;color:#fe7786;} -.dtree-toolbar .layui-nav-child dd a i:hover{font-weight: bold;} -.dtree-toolbar .layui-nav-bar{display: none!important;} -.dtree-toolbar-tool{padding: 30px;} - -.dtree-toolbar-fixed{position: absolute;right: 5px;top: 2px;font-style: normal;transition: all .3s;-webkit-transition: all .3s;} -/*.dtree-toolbar-fixed a{border:1px solid #fe7786;}*/ -.dtree-toolbar-fixed a i{font-size:14px;display: inline-block;margin: 0px 1px;color:#fe7786;} -.dtree-toolbar-fixed a i:hover{opacity:0.8;filter:Alpha(opacity=80);} - -/* 树基本*/ -.dtree{width:260px;} -.dtree-nav-item{line-height:33px;padding-left:16px;} -.dtree-nav-ul-sid{display: none;} -.dtree-none-text{font-size: 12px;text-align: center;color: gray;} - -/* 树线*/ -.dtree-nav-first-line,.dtree-nav-line,.dtree-nav-last-line{position: relative;} -.dtree-nav-first-line:before{content:"";position: absolute;height: 0;border-left: 1px dotted #c0c4cc;} -.dtree-nav-first-line:after{content:"";position: absolute;height: 0;border-top: 1px dotted #c0c4cc;} - -.dtree-nav-line:before{content:"";position: absolute;top: 0;left: 7px;width: 0;height: 100%;border-left: 1px dotted #c0c4cc;} -.dtree-nav-line:after{content:"";position: absolute;top: 16px;left: 8px;width: 9px;height: 0;border-top: 1px dotted #c0c4cc;} - -.dtree-nav-last-line:before{content:"";position: absolute;top: 0;left: 7px;width: 0;height: 17px;border-left: 1px dotted #c0c4cc;} -.dtree-nav-last-line:after{content:"";position: absolute;top: 16px;left: 8px;width: 9px;height: 0;border-top: 1px dotted #c0c4cc;} - - -/* 图标及复选框*/ -.dtreefont{cursor: pointer;} -.dtreefont-special{margin: 0 4px;} -.dtree-nav-checkbox-div{display: inline-block;} -.dtree-nav-checkbox-div>i{display: inline-block;margin: 0px 1px;} -.dtree-nav-checkbox-div>i:last-child{margin-right: 4px;} -.dtree-nav-checkbox-div>i:hover{opacity:0.8;filter:Alpha(opacity=80);} - -/* 行 文字*/ -.dtree-nav-div{display:block;vertical-align:top;position:relative;} -.dtree-nav-div cite{font-style: normal;cursor: pointer;} -.dtree-nav-div:hover cite{opacity:0.7;filter:Alpha(opacity=70);transition: all .3s;-webkit-transition: all .3s;} - -/* 规则属性*/ -.dtree-nav-show {display: block!important;} -.dtree-nav-hide {display: none!important;} -.dtree-nav-this {} -.dtree-icon-hide {opacity:0;filter:Alpha(opacity=0);} -.dtree-icon-null-open,.dtree-icon-null-close,.dtree-icon-null{margin: 0 2px;} -.dtree-disabled{cursor: not-allowed; color:#c2c2c2!important;} -.dtree-disabled:hover{color:#c2c2c2!important;} -.dtree-nav-div cite.dtree-disabled{font-style: normal; cursor: not-allowed; color:#c2c2c2!important;} -.dtree-nav-div>cite.dtree-disabled:hover{color:#c2c2c2!important;} - - -/** 下拉树属性*/ -.dtree-select{position: absolute;max-height: 500px;height: 350px;overflow: auto;width: 99%;z-index: 123;display: none;border:1px solid silver;top: 42px;} -.dtree-select-show{display: block!important;} - -/* 简单适配*/ -@media screen and (max-width:1700px) and (min-width:1300px){ - .dtree-nav-item {padding-left: 15px;} -} - - - - diff --git a/component/pear/css/module/dtree/dtree.js b/component/pear/css/module/dtree/dtree.js deleted file mode 100644 index a05b22a..0000000 --- a/component/pear/css/module/dtree/dtree.js +++ /dev/null @@ -1,4947 +0,0 @@ -/** - *@Name dtree 树形组件 - *@Author 智慧的小西瓜 - *@DOCS http://www.wisdomelon.com/DTreeHelper/ - *@License https://www.layui.com/ - *@LASTTIME 2019/10/24 - *@VERSION v2.5.6 - */ -layui.define(['jquery','layer','form'], function(exports) { - var $ = layui.$, - layer = layui.layer, - form = layui.form; - - // 树的公共定义样式汇总 - var LI_NAV_CHILD = "dtree-nav-ul-sid", LI_NAV_ITEM = "dtree-nav-item", - LI_DIV_ITEM = "dtree-nav-div", DTREEFONTSPECIAL="dtreefont-special", NONETITLE="dtree-none-text", - LI_DIV_MENUBAR = "dtree-menubar", - LI_DIV_TOOLBAR = "dtree-toolbar", TOOLBAR_TOOL = "dtree-toolbar-tool", TOOLBAR_TOOL_EM = "dtree-toolbar-fixed", - LI_DIV_CHECKBAR = "dtree-nav-checkbox-div", - LI_CLICK_CHECKBAR = "d-click-checkbar", //绑定点击复选框时需要用到 - LI_DIV_TEXT_CLASS = "t-click", UL_ROOT="dtree", - LI_NAV_FIRST_LINE = "dtree-nav-first-line", LI_NAV_LINE = "dtree-nav-line", LI_NAV_LAST_LINE = "dtree-nav-last-line"; - - - // 树的公共指定 - var NAV_THIS = "dtree-nav-this", //当前节点 - NAV_SHOW = "dtree-nav-show", //显示子节点 - NAV_HIDE = "dtree-nav-hide", //隐藏节点 - NAV_DIS = "dtree-disabled", //禁用节点 - ICON_HIDE = "dtree-icon-hide", //隐藏图标 - $BODY = $("body"), //body选择器 - $WIN = $(window), //window窗口 - $DOC = $(document), //当前文档 - MOD_NAME = "dtree", //模块名称 - VERSION = "v2.5.6", //版本 - OPTIONS = {}, //全局属性配置 - DTrees = {}; //当前被实例化的树的集合 - - // 树的自定义图标 - var DTREEFONT = "dtreefont", //默认使用图标字体 - LI_DIV_CHECKBAR_ON = "dtree-icon-fuxuankuangxuanzhong", //复选框选中图标 - LI_DIV_CHECKBAR_OUT = "dtree-icon-fuxuankuang", //复选框未选中图标 - LI_DIV_CHECKBAR_NOALL = "dtree-icon-fuxuankuang-banxuan", //复选框半选图标 - LI_DIV_MENUBAR_DOWN = "dtree-icon-move-down", //menubar的展开全部的图标 - LI_DIV_MENUBAR_UP = "dtree-icon-move-up", //menubar的收缩全部的图标 - LI_DIV_MENUBAR_REFRESH = "dtree-icon-refresh", //menubar的刷新图标 - LI_DIV_MENUBAR_CHECKALL = "dtree-icon-roundcheckfill", //menubar的全选图标 - LI_DIV_MENUBAR_UNCHECKALL = "dtree-icon-roundclosefill", //menubar的全不选图标 - LI_DIV_MENUBAR_INVERTALL = "dtree-icon-roundcheck", //menubar的反选图标 - LI_DIV_MENUBAR_DELETE = "dtree-icon-delete1", //menubar的删除图标 - LI_DIV_MENUBAR_SEARCH = "dtree-icon-search_list_light", //menubar的搜索图标 - LI_DIV_TOOLBAR_PULLDOWN = "dtree-icon-pulldown", //toolbar的展开图标 - LI_DIV_TOOLBAR_PULLUP = "dtree-icon-pullup", //toolbar的收缩图标 - LI_DIV_TOOLBAR_ADD = "dtree-icon-roundadd", //toolbar的新增图标 - LI_DIV_TOOLBAR_EDIT = "dtree-icon-bianji", //toolbar的编辑图标 - LI_DIV_TOOLBAR_DEL = "dtree-icon-roundclose"; //toolbar的删除图标 - - // 树的非叶子节点图标集合 - var nodeIconArray = { - "-1": {"open": "dtree-icon-null-open", "close": "dtree-icon-null-close"}, //未指定 - "0" : {"open": "dtree-icon-wenjianjiazhankai", "close": "dtree-icon-weibiaoti5"}, //文件夹(二级图标默认样式) - "1" : {"open": "dtree-icon-jian", "close": "dtree-icon-jia"}, //+-图标(一级图标默认样式) - "2" : {"open": "dtree-icon-xiangxia1", "close": "dtree-icon-xiangyou"} //箭头图标 - }; - - // 树的叶子节点图标集合 - var leafIconArray = { - "-1": "dtree-icon-null", //未指定 - "0" : "dtree-icon-weibiaoti5", //文件夹 - "1" : "dtree-icon-yonghu", //人员 - "2" : "dtree-icon-fenzhijigou", //机构 - "3" : "dtree-icon-fenguangbaobiao", //报表 - "4" : "dtree-icon-xinxipilu", //信息 - "5" : "dtree-icon-shuye1", //叶子(二级图标默认样式) - "6" : "dtree-icon-caidan_xunzhang", //勋章 - "7" : "dtree-icon-normal-file", //文件 - "8" : "dtree-icon-dian", //小圆点(一级图标默认样式) - "9" : "dtree-icon-set-sm", //齿轮 - "10" : "dtree-icon-rate" //星星 - }; - - // 树的自定义样式 - var DTREE = "dtree-", //自定义样式前缀 - ITEMTHIS = "-item-this", //自定义样式当前行选中后缀 - ITEM = "-item", //自定义样式当前行后缀 - DFONT = "-dtreefont", //自定义样式图标样式后缀 - FICON = "-ficon", //自定义样式一级图标样式后缀 - ICON = "-icon", //自定义样式二级图标样式后缀 - CBOX = "-checkbox", //自定义样式复选框样式后缀 - CHS = "-choose"; //自定义样式复选框选中样式后缀 - - // 树自定义操作事件名称集合 绑定dtree-click的事件 - var eventName = { - checkNodeClick: "checkNodeClick", //点击复选框 - itemNodeClick: "itemNodeClick" //点击子节点div - }; - - // 树默认toolbar提供的功能集合 绑定dtree-tool的事件 - var defaultTool = { - pulldown: "pulldown", //点击展开当前节点下的全部节点 - pullup: "pullup", //点击收缩当前节点下的全部节点 - addTool: "addToolbar", //点击toolbar新增 - editTool: "editToolbar", //点击toolbar编辑 - delTool: "delToolbar" //点击toolbar删除 - }; - - // 树默认menubar提供的功能集合 绑定dtree-menu的事件 - var defaultMenu = { - moveDown: "moveDown", //menubar展开全部节点 - moveUp: "moveUp", //menubar收缩全部节点 - refresh: "refresh", //menubar刷新树 - checkAll: "checkAll", //menubar全选 - unCheckAll: "unCheckAll", //menubar全不选 - invertAll: "invertAll", //menubar反选 - remove: "remove", //menubar删除选中节点 - searchNode: "searchNode" //menubar查询节点 - }; - - // 树的公共事件 - var event = { - getElemId: function(options){ // 根据传入的参数获取ID - var elem = options.elem || ""; - var obj = options.obj || $(elem); - - if (obj.length == 0) { //页面中未找到绑定id - return ""; - } else { - return $(obj)[0].id; - } - }, - escape: function(html){ - if(typeof html !== 'string') return ''; - return html.replace(entityReg.escape, function(match){return entityMap.escape[match];}); - }, - unescape: function(str){ - if(typeof str !== 'string') return ''; - return str.replace(entityReg.unescape, function(match){return entityMap.unescape[match];}); - }, - cloneObj: function (obj, filter) { //深复制对象方法 - var newObj = {}; - if (obj instanceof Array) { - newObj = []; - } - var str = ""; - if(typeof filter !== 'undefined') {str = filter.join(",");} - for (var key in obj) { - if(str.indexOf(key) == -1){ - var val = obj[key]; - newObj[key] = typeof val === 'object' ? event.cloneObj(val, typeof filter !== undefined ? filter : []): val; - } - - } - return newObj; - }, - trimToDot: function(str){ - return str.replace(/ /g, "."); - } - }; - - // 特殊符号转义 - var keys = Object.keys || function(obj) { - obj = Object(obj); - var arr = []; - for(var a in obj) arr.push(a); - return arr; - }; - var invert = function(obj){ - obj = Object(obj); - var result = {}; - for(var a in obj) result[obj[a]] = a; - return result; - }; - var entityMap = { - escape: { - "&" : "&", - "<" : "<", - ">" : ">", - "'" : "&quo;" - } - }; - entityMap.unescape = invert(entityMap.escape); - var entityReg = { - escape: RegExp('[' + keys(entityMap.escape).join('') + ']', 'g'), - unescape: RegExp('(' + keys(entityMap.unescape).join('|') + ')', 'g') - }; - - //异步加载接口 - var AjaxHelper = { - request : function(config) { - var data = config.data ? config.data : {}; - var async = (typeof (config.async) === "boolean") ? config.async : true; - $.ajax({ - type : config.type ? config.type : "POST", - headers : config.headers, - url : config.url, - dataType : config.dataType ? config.dataType : "json", - data : data, - async : async, - contentType : config.contentType, - xhrFields: {withCredentials: config.withCredentials}, - success : config.success, - error : function(XMLHttpRequest, textStatus, errorThrown) { - if (typeof (config.error) === "function") { - config.error(XMLHttpRequest, textStatus, errorThrown); - } else { - layer.msg("异步加载失败: " + textStatus,{icon:5, shift:6}); - } - }, - statusCode : { - 404 : function() { - layer.msg('未找到指定请求,请检查访问路径!',{icon:5, shift:6}); - }, - 500 : function() { - layer.msg('系统错误!',{icon:5, shift:6}); - } - }, - complete : function(XMLHttpRequest, textStatus) { - if (typeof (config.complete) === "function") { - config.complete(XMLHttpRequest, textStatus); - } - } - }); - }, - serialize: function(param){ //json序列化 key=value&key1=value1 - var p = "?"; - for (var key in param) { - p += key + "=" + param[key] + "&"; - } - p = p.substring(0, p.length-1); - return p; - } - }; - - // 树类 - var DTree = function(options){ - var _this = this; - /** 默认赋值**/ - this.formatter = { // 数据过滤 - title: false // 文字,默认不开启 - }; - this.response = { // 树返回的json格式 - statusName: "code", //返回标识 - statusCode: 200, //返回码 - message: "message", //返回信息 - rootName: "data", //根节点名称 - treeId: "id", //节点ID - parentId: "parentId", //父节点ID - title: "title", //节点名称 - ficonClass: "ficonClass", //自定义一级图标 - iconClass: "iconClass", //自定义二级图标 - childName: "children", //子节点名称 - last: "last", //是否最后一级节点 -// level: "level", //层级 - spread: "spread", //展开 - disabled: "disabled", //禁用 - hide: "hide", //隐藏 - checkArr: "checkArr", //复选框列表 - checked: "checked", //是否选中 - type: "type", //复选框标记 - basicData: "basicData" //表示用户自定义需要存储在树节点中的数据 - }; - this.defaultRequest = { // 树的默认发起请求参数格式,最后会将value作为参数名称传递 - nodeId: "nodeId", //节点ID - parentId: "parentId", //父节点ID - context: "context", //节点内容 - leaf: "leaf", //是否叶子节点 - level: "level", //层级 - spread: "spread", //节点展开状态 - dataType: "dataType", //节点标记 - checked: "checked", //节点复选框选中状态 - initchecked: "initchecked", //节点复选框初始状态 - basicData: "basicData", //用户自定义的记录节点数据 - recordData: "recordData", //当前data数据(排除basicData和children字段) - }; - this.toolbarFun = { - addTreeNode: function(param, $div) { //添加树节点后调用的函数,用于用户自定义,如未指定则树不会发生变化 - return ; - }, - editTreeNode: function(param, $div) { //编辑树节点后调用的函数,用于用户自定义,如未指定则树不会发生变化 - return ; - }, - editTreeLoad: function(param){ // 编辑树的数据回显,用于打开编辑时,回填数据 - return ; - }, - delTreeNode: function(param, $div){ //删除树后调用的函数,用于用户自定义,如未指定则树不会发生变化 - return ; - }, - loadToolbarBefore: function(buttons, param, $div){ // 右键菜单加载前的函数 - return buttons; - } - }; - this.toolbarStyle = { - title: "节点", - area: ["60%","80%"] - }; - this.menubarFun = { - remove: function(checkbarNodes){ //删除复选框选中节点,需要用户自定义,如未指定则树只是页面上做了修改 - return true; - } - }; - this.menubarTips = { - toolbar: [], - group: [defaultMenu.moveDown, defaultMenu.moveUp, defaultMenu.refresh, defaultMenu.checkAll, defaultMenu.unCheckAll, defaultMenu.invertAll, defaultMenu.remove, defaultMenu.searchNode], - freedom: [] - }; - this.checkbarFun = { - chooseBefore: function($i, node){ // 复选框点击前回调 - return true; - }, - chooseDone: function(checkbarNodesParam) { //复选框点击事件完毕后,返回该树关于复选框操作的全部信息,用于用户自定义,如未指定则树只是页面上做了修改 - return ; - } - }; - this.iframeDefaultRequest = { //iframe的默认参数,目的是与加载树的参数不一样 - nodeId: "nodeId", //节点ID - parentId: "parentId", //父节点ID - context: "context", //节点内容 - leaf: "leaf", //是否叶子节点 - level: "level", //层级 - spread: "spread", //节点展开状态 - dataType: "dataType", //节点标记 - checked: "checked", //节点复选框选中状态 - initchecked: "initchecked", //节点复选框初始状态 - basicData: "basicData", //用户自定义的记录节点数据 - recordData: "recordData", //当前data数据(排除basicData和children字段) - }; - - this.iframeFun = { - iframeDone: function(iframeParam){ //iframe加载完毕后,用于用户自定义事件 - return ; - } - }; - this.style = { //树最终使用的样式集合 - item: "", //每一项div的样式 - itemThis: "", //选中div的样式 - dfont: "", //一级图标的样式 - icon: "", //二级图标的样式 - cbox: "", //复选框的样式 - chs: "" //复选框选中的样式 - }; - this.usefontStyle = { //树最终使用的图标集合 - fnode:{ //一级节点 - node:{ //非叶子节点 - open:"", //节点展开 - close:"" //节点关闭 - }, - leaf:"" //叶子节点 - }, - snode:{ //二级节点 - node:{ //非叶子节点 - open:"", //节点展开 - close:"" //节点关闭 - }, - leaf:"" //叶子节点 - }, - checkbox:{ //复选框 - on:"", //复选框选中 - out:"", //未选中 - noall:"" //半选 - }, - menubar:{ //菜单栏 - movedown:"", //全部展开 - moveup:"", //全部收缩 - refresh:"", //刷新 - checkAll:"", //全选 - unCheckAll:"", //全不选 - invertAll:"", //反选 - remove:"", //删除 - search:"" //搜索 - }, - menubarExt:"", //扩展菜单栏 - toolbar:{ //工具栏 - menubar:{ //依附在菜单栏的工具栏 - movedown:"", //全部展开 - moveup:"", //全部收缩 - refresh:"", //刷新 - checkAll:"", //全选 - unCheckAll:"", //全不选 - invertAll:"", //反选 - remove:"", //删除 - search:"" //搜索 - }, - menubarExt:"", //依附在菜单栏的扩展菜单栏 - pulldown:"", //展开 - pullup:"", //收缩 - add:"", //添加 - edit:"", //编辑 - del:"" //删除 - }, - toolbarExt:"" //扩展工具栏 - } - - /** 数据绑定**/ - this.node = { // 树节点选中时,包含当前节点的全部信息 - nodeId: "", //节点ID - parentId: "", //父节点ID - context: "", //节点内容 - leaf: "", //是否叶子节点 - level: "", //层级 - spread: "", //节点展开状态 - dataType: "", //节点标记 - checked: "", //节点复选框选中状态 - initchecked: "", //节点复选框初始状态 - basicData: "", //用户自定义的记录节点数据 - recordData: "", //当前data数据(排除basicData和children字段) - }; - - this.toolbarMenu = {}; // 工具栏右键菜单绑定的所有元素 - this.checkbarNode = []; // 复选框标记的全部节点数据 - this.errData = []; // 记录在渲染节点时有问题的数据 - this.checkArrLen = 0; //添加节点的时判断复选框个数 - this.temp = []; // 临时变量 - this.bak = ""; // 临时变量 - this.setting(options); - }; - - /******************** 初始参数加载 ********************/ - // 设置基本参数值 - DTree.prototype.setting = function(options) { - this.options = options || {}; - - /** 绑定元素参数(必填,2个参数项必填一个)**/ - this.elem = this.options.elem || OPTIONS.elem || ""; //树绑定的元素ID:#elem - if(typeof this.options.obj === 'undefined'){ - if(this.elem) { - if($(this.elem).length > 0) { - this.obj = $(this.elem); - } - } - } else { - this.obj = this.options.obj || OPTIONS.obj || this.obj; //树绑定的jquery元素,用于当元素是延迟加载出来的话,可以用这个找到 - this.elem = "#" + this.obj[0].id; - } - - /** 基本参数**/ - this.scroll = this.options.scroll || OPTIONS.scroll || this.elem; //树的上级div容器,让树可以显示滚动条的div容器的ID - this.accordion = (typeof (this.options.accordion) === "boolean") ? this.options.accordion : (typeof (OPTIONS.accordion) === "boolean") ? OPTIONS.accordion : false; //手风琴加载, 默认false - if(this.accordion) { - this.initLevel = 1; //默认展开节点 1节 - } else { - this.initLevel = this.options.initLevel || OPTIONS.initLevel || 2; //默认展开节点 2节 - } - this.type = this.options.type || OPTIONS.type || "load"; //树的加载方式 all,全量树, load,增量树,默认load - this.cache = (typeof (this.options.cache) === "boolean") ? this.options.cache : (typeof (OPTIONS.cache) === "boolean") ? OPTIONS.cache : true; //数据缓存,默认true - this.record = this.options.record || OPTIONS.record || false; //开启数据记录模式,默认false - this.load = (typeof (this.options.load) === "boolean") ? this.options.load : (typeof (OPTIONS.load) === "boolean") ? OPTIONS.load : true; //开启加载动画,默认true - this.none = this.options.none || OPTIONS.nont || "无数据"; //初始加载无记录时显示文字 - this.tempHeight = this.options.height || OPTIONS.height; //临时转换高度变量 - if(this.tempHeight) { // 设置高度 - if(/^full-\d+$/.test(this.tempHeight)) { - this.fullHeightGap = this.tempHeight.split('-')[1]; - this.height = $WIN.height() - this.fullHeightGap; //设置高度 - } else { - this.fullHeightGap = this.tempHeight; - this.height = this.tempHeight; - } - } else { - this.fullHeightGap = ""; - this.height = ""; - } - this.width = this.options.width || OPTIONS.width || "260"; //宽度 - this.obj.css("width", this.width); - - /** 样式相关参数**/ - this.iconfont = this.options.iconfont || OPTIONS.iconfont || DTREEFONT; //默认图标字体 dtreefont - this.iconfontStyle = this.options.iconfontStyle || OPTIONS.iconfontStyle || {}; //用于自定义树的每个关键部位使用的图标 - this.nodeIconArray = $.extend(nodeIconArray, this.options.nodeIconArray || OPTIONS.nodeIconArray) || nodeIconArray; //用户自定义非叶子节点图标集合,node - this.leafIconArray = $.extend(leafIconArray, this.options.leafIconArray || OPTIONS.leafIconArray) || leafIconArray; //用户自定义叶子节点图标集合,leaf - this.skin = this.options.skin || OPTIONS.skin || "theme"; // 自定义样式 - if(this.skin == "layui"){ // layui主题 - this.line = (typeof (this.options.line) === "boolean") ? this.options.line : (typeof (OPTIONS.line) === "boolean") ? OPTIONS.line : true; //开启树线,默认开启 - this.ficon = this.options.ficon || OPTIONS.ficon || "7"; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'7' - this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "1") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示一级图标,默认'1' - this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1]; //一级图标中的leaf节点图标 - this.icon = this.options.icon || OPTIONS.icon || "-1"; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'-1' - this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "-1") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'-1' - this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标 - } else if(this.skin == "laySimple"){ // laySimple主题 - this.line = this.options.line || OPTIONS.line || false; //开启树线,默认不开启 - this.ficon = this.options.ficon || OPTIONS.ficon || ["2","-1"]; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'-1' - this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "2") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示一级图标,默认'2' - this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1]; // 一级图标中的leaf节点图标 - this.icon = this.options.icon || OPTIONS.icon || "-1"; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'-1' - this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "-1") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'-1' - this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标 - } else { // 默认主题 或者自定义主题 - this.line = this.options.line || OPTIONS.line || false; //开启树线,默认不开启 - this.ficon = this.options.ficon || OPTIONS.ficon || "8"; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'8' - this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "1") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示一级图标,默认'1' - this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1]; // 一级图标中的leaf节点图标 - this.icon = this.options.icon || OPTIONS.icon || "5"; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'5' - this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "0") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'0' - this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标 - } - - /** 数据加载参数**/ - this.url = this.options.url || OPTIONS.url || ""; //请求地址 - this.async = (typeof (this.options.async) === "boolean") ? this.options.async : (typeof (OPTIONS.async) === "boolean") ? OPTIONS.async : true; //异步同步加载,默认异步加载 - this.headers = this.options.headers || OPTIONS.headers || {}; //ajax header属性 - this.method = this.options.method || OPTIONS.method || "post"; //请求类型 - this.dataType = this.options.dataType || OPTIONS.dataType || "json"; //参数类型 - this.contentType = this.options.contentType || OPTIONS.contentType || "application/x-www-form-urlencoded"; //发送信息至服务器时内容编码类型 - this.defaultRequest = $.extend(this.defaultRequest, this.options.defaultRequest || OPTIONS.defaultRequest) || this.defaultRequest; //默认请求参数 - this.filterRequest = this.options.filterRequest || OPTIONS.filterRequest || []; //过滤请求参数 - this.request = this.options.request || OPTIONS.request || {}; //用户自定义请求参数 - this.response = $.extend(this.response, this.options.response || OPTIONS.response) || this.response; //返回json格式 - this.data = this.options.data || OPTIONS.data || null; //初始化指定该参数,则不会访问异步接口 - this.dataFormat = this.options.dataFormat || OPTIONS.dataFormat || "levelRelationship"; //用于用户配置的data数据格式,list:列表, levelRelationship:层级关系,默认 - this.dataStyle = this.options.dataStyle || OPTIONS.dataStyle || "defaultStyle"; //用于用户配置layui通用的json数据风格,layuiStyle:layui风格,defaultStyle:默认风格 - this.errDataShow = this.options.errDataShow || OPTIONS.errDataShow || false; //是否在递归数据出现错误后,显示错误信息,默认false - this.withCredentials = this.options.withCredentials || OPTIONS.withCredentials || false; //是否允许跨域请求,默认false - this.success = this.options.success || OPTIONS.success || function(data, obj){}; //树加载完毕后执行解析树之前的回调 - this.done = this.options.done || OPTIONS.done || function(data, obj){}; //树加载完毕后的回调 - this.formatter = $.extend(this.formatter, this.options.formatter || OPTIONS.formatter) || this.formatter; //数据过滤 - this.error = this.options.error || OPTIONS.error || function(XMLHttpRequest, textStatus, errorThrown){}; // 异步加载异常回调 - this.complete = this.options.complete || OPTIONS.complete || function(XMLHttpRequest, textStatus){}; // 异步加载完成回调 - - /** 复选框参数**/ - this.checkbar = this.options.checkbar || OPTIONS.checkbar || false; //是否开启复选框模式 - this.checkbarLoad = this.options.checkbarLoad || OPTIONS.checkbarLoad || "node"; //复选框作用范围,node:所有节点, leaf:最后一级;默认所有节点 - this.checkbarType = this.options.checkbarType || OPTIONS.checkbarType || "all"; //复选框选中形式 all:子集选中父级也选中, no-all:子集选中父级半选中,子集全选父级选中,p-casc:父级选中子集全选,子集无法改变父级选中状态, self:没有任何级联关系,only:只能选中一个复选框。 默认all - this.checkbarData = this.options.checkbarData || OPTIONS.checkbarData || "choose"; //复选框记录数据类型形式, change表示记录变更数据,choose表示记录选中数据,all记录全部数据,halfChoose记录选中和半选中的数据,默认choose - this.checkbarFun = $.extend(this.checkbarFun, this.options.checkbarFun || OPTIONS.checkbarFun) || this.checkbarFun; //checkbar事件加载 - - /** 菜单栏参数**/ - this.menubar = this.options.menubar || OPTIONS.menubar || false; //是否打开菜单栏 - this.menubarTips = $.extend(this.menubarTips, this.options.menubarTips || OPTIONS.menubarTips) || this.menubarTips; //菜单栏吸附, toolbar:依附在工具栏,group:依附在按钮组,freedom,自由 - this.menubarFun = $.extend(this.menubarFun, this.options.menubarFun || OPTIONS.menubarFun) || this.menubarFun; //menubar事件加载 - - /** 工具栏参数**/ - this.toolbar = this.options.toolbar || OPTIONS.toolbar || false; //是否开启可编辑模式 - this.toolbarWay = this.options.toolbarWay || OPTIONS.toolbarWay || "contextmenu"; //工具栏显示方式,contextmenu:右键,follow:跟随节点,fixed:固定在节点右侧 - this.toolbarStyle = $.extend(this.toolbarStyle, this.options.toolbarStyle || OPTIONS.toolbarStyle) || this.toolbarStyle; //toolbar的自定义风格,标题,弹框大小 - this.toolbarLoad = this.options.toolbarLoad || OPTIONS.toolbarLoad || "node"; //toolbar作用范围:node:所有节点,noleaf:非最后一级节点,leaf:最后一级 - this.toolbarShow = this.options.toolbarShow || OPTIONS.toolbarShow || ["add","edit","delete"]; //toolbar三个按钮自定义加载 - this.toolbarBtn = this.options.toolbarBtn || OPTIONS.toolbarBtn || null; //toolbar增删改中内容的自定义加载 - this.toolbarExt = this.options.toolbarExt || OPTIONS.toolbarExt || []; //toolbar按钮扩展 - this.toolbarFun = $.extend(this.toolbarFun, this.options.toolbarFun || OPTIONS.toolbarFun) || this.toolbarFun; //toolbar事件加载 - - /** iframe模式参数**/ - this.useIframe = this.options.useIframe || OPTIONS.useIframe || false; //是否加载iframe 默认false, - this.iframeElem = this.options.iframeElem || OPTIONS.iframeElem || ""; //iframe的ID - this.iframeUrl = this.options.iframeUrl || OPTIONS.iframeUrl || ""; //树关联的iframe地址 - this.iframeLoad = this.options.iframeLoad || OPTIONS.iframeLoad || "leaf"; //点击哪一层加载frame: node:所有节点, leaf:默认,最后一级 - this.iframeDefaultRequest = $.extend(this.iframeDefaultRequest, this.options.iframeDefaultRequest || OPTIONS.iframeDefaultRequest) || this.iframeDefaultRequest; //iframe的默认传递参数 - this.iframeRequest = $.extend(this.iframeRequest, this.options.iframeRequest) || $.extend(this.iframeRequest, OPTIONS.iframeRequest) || this.iframeRequest; //iframe的自定义参数 - this.iframeFun = $.extend(this.iframeFun, this.options.iframeFun) || $.extend(this.iframeFun, OPTIONS.iframeFun) || this.iframeFun; //iframe事件加载 - - /** 下拉树模式参数**/ - this.select = this.options.select || false; - if(this.select) { - // 重置下拉树 - this.selectSetting(); - } - - /** 调用确认最终主题方法*/ - this.ensureTheme(); - }; - - // 设置基本参数值 - DTree.prototype.reloadSetting = function(options) { - this.options = $.extend(this.options, options) || this.options; - - /** 绑定元素参数**/ - this.elem = this.options.elem || this.elem; //树绑定的元素ID:#elem - if(typeof this.options.obj === 'undefined'){ - if(this.elem) { - if($(this.elem).length > 0) { - this.obj = $(this.elem); - } - } - } else { - this.obj = this.options.obj || this.obj; //树绑定的jquery元素,用于当元素是延迟加载出来的话,可以用这个找到 - this.elem = "#" + this.obj[0].id; - } - - /** 基本参数**/ - this.scroll = this.options.scroll || this.scroll; //树的上级div容器,让树可以显示滚动条的div容器 - this.accordion = (typeof (this.options.accordion) === "boolean") ? this.options.accordion : this.accordion; //开启手风琴加载 - if(this.accordion) { - this.initLevel = 1; //默认展开节点 1节 - } else { - this.initLevel = this.options.initLevel || this.initLevel; //默认展开节点 2节 - } - this.type = this.options.type || this.type; //树的加载方式 all,全量树, load,增量树,默认load - this.cache = (typeof (this.options.cache) === "boolean") ? this.options.cache : this.cache; //开启数据缓存 - this.record = (typeof (this.options.record) === "boolean") ? this.options.record : this.record; //开启数据记录模式 - this.load = (typeof (this.options.load) === "boolean") ? this.options.load : this.load; //开启加载动画 - this.none = this.options.none || this.none; //初始节点加载无数据时显示文字 - this.tempHeight = this.options.height || this.height; //临时转换高度变量 - if(this.tempHeight) { //设置高度 - if(/^full-\d+$/.test(this.tempHeight)) { - this.fullHeightGap = this.tempHeight.split('-')[1]; - this.height = $WIN.height() - this.fullHeightGap; - } else { - this.fullHeightGap = this.tempHeight; - this.height = this.tempHeight; - } - } - this.width = this.options.width || this.width; //宽度 - this.obj.css("width", this.width); - - /** 样式相关参数**/ - this.line = (typeof (this.options.line) === "boolean") ? this.options.line : this.line; //开启树线,默认不开启 - this.iconfont = this.options.iconfont || this.iconfont; //默认图标字体 dtreefont - this.iconfontStyle = this.options.iconfontStyle || this.iconfontStyle; //用于自定义树的每个关键部位使用的图标 - this.nodeIconArray = $.extend(nodeIconArray, this.options.nodeIconArray) || this.nodeIconArray; //用户自定义非叶子节点图标集合,node - this.leafIconArray = $.extend(leafIconArray, this.options.leafIconArray) || this.leafIconArray; //用户自定义叶子节点图标集合,leaf - this.skin = this.options.skin || this.skin; //自定义样式 - if(this.skin == "layui"){ //layui主题 - this.line = (typeof (this.options.line) === "boolean") ? this.options.line : true; //开启树线,默认开启 - this.ficon = this.options.ficon || this.ficon; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'7' - this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "1") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'1' - this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1]; //一级图标中的leaf节点图标 - this.icon = this.options.icon || this.icon; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'-1' - this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "-1") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'-1' - this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标 - } else if(this.skin == "laySimple"){ //laySimple主题 - this.line = (typeof (this.options.line) === "boolean") ? this.options.line : false; //开启树线,默认不开启 - this.ficon = this.options.ficon || this.ficon; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'-1' - this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "2") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'2' - this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1];//一级图标中的leaf节点图标 - this.icon = this.options.icon || this.icon; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'-1' - this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "-1") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'-1' - this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标 - } else { // 默认主题 或者自定义主题 - this.line = (typeof (this.options.line) === "boolean") ? this.options.line : false; //开启树线,默认不开启 - this.ficon = this.options.ficon || this.ficon; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'8' - this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "1") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'1' - this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1]; // 一级图标中的leaf节点图标 - this.icon = this.options.icon || this.icon; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'5' - this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "0") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'0' - this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标 - } - - /** 数据加载参数**/ - this.url = this.options.url || this.url; //请求地址 - this.async = (typeof (this.options.async) === "boolean") ? this.options.async : this.async; //异步同步加载,默认异步加载 - this.headers = this.options.headers || this.headers; //ajax header属性 - this.method = this.options.method || this.method; //请求类型 - this.dataType = this.options.dataType || this.dataType; //参数类型 - this.contentType = this.options.contentType || this.contentType; //发送信息至服务器时内容编码类型 - this.defaultRequest = $.extend(this.defaultRequest, this.options.defaultRequest) || this.defaultRequest; //默认请求参数 - this.filterRequest = this.options.filterRequest || this.filterRequest; //过滤请求参数 - this.request = this.options.request || this.request; //用户自定义请求参数 - this.response = $.extend(this.response, this.options.response) || this.response; //返回json格式 - this.data = this.options.data || this.data; //初始化指定该参数,则不会访问异步接口 - this.dataFormat = this.options.dataFormat || this.dataFormat; //用于用户配置的data数据格式,list:列表, levelRelationship:层级关系,默认 - this.dataStyle = this.options.dataStyle || this.dataStyle; //用于用户配置layui通用的json数据风格,layuiStyle:layui风格,defaultStyle:默认风格 - this.errDataShow = (typeof (this.options.errDataShow) === "boolean") ? this.options.errDataShow : this.errDataShow; //是否在使用list模式递归数据出现错误时,显示错误信息 - this.withCredentials = (typeof (this.options.withCredentials) === "boolean") ? this.options.withCredentials : this.withCredentials; //是否允许跨域请求 - this.success = this.options.success || this.success; //树加载完毕后执行解析树之前的回调 - this.done = this.options.done || this.done; //树加载完毕后的回调 - this.formatter = $.extend(this.formatter, this.options.formatter)|| this.formatter; //数据过滤 - this.error = this.options.error || this.error; //异步加载异常回调 - this.complete = this.options.complete || this.complete; //异步加载完成回调 - - /** 复选框参数**/ - this.checkbar = this.options.checkbar || this.checkbar; //是否开启复选框模式 - this.checkbarLoad = this.options.checkbarLoad || this.checkbarLoad; //复选框作用范围,node:所有节点, leaf:最后一级;默认所有节点 - this.checkbarType = this.options.checkbarType || this.checkbarType; //复选框选中形式 all:子集选中父级也选中, no-all:子集选中父级半选中,子集全选父级选中,p-casc:父级选中子集全选,子集无法改变父级选中状态, self:没有任何级联关系,only:只能选中一个复选框。 默认all - this.checkbarData = this.options.checkbarData || this.checkbarData; //复选框记录数据类型形式, change表示记录变更数据,choose表示记录选中数据,all记录全部数据,halfChoose记录选中和半选中的数据,默认choose - this.checkbarFun = $.extend(this.checkbarFun, this.options.checkbarFun)|| this.checkbarFun; //checkbar事件加载 - - /** 菜单栏参数**/ - this.menubar = this.options.menubar || this.menubar; //是否打开菜单栏 - this.menubarTips = $.extend(this.menubarTips, this.options.menubarTips) || this.menubarTips; //菜单栏吸附, toolbar:依附在工具栏,group:依附在按钮组,freedom,自由 - this.menubarFun = $.extend(this.menubarFun, this.options.menubarFun) || this.menubarFun; //menubar事件加载 - - /** 工具栏参数**/ - this.toolbar = this.options.toolbar || this.toolbar; //是否开启工具栏 - this.toolbarWay = this.options.toolbarWay || this.toolbarWay; //工具栏显示方式,contextmenu:右键,follow:跟随节点,fixed:固定在节点右侧 - this.toolbarStyle = $.extend(this.toolbarStyle, this.options.toolbarStyle) || this.toolbarStyle; //toolbar的自定义风格,标题,弹框大小 - this.toolbarLoad = this.options.toolbarLoad || this.toolbarLoad; //toolbar作用范围:node:所有节点,noleaf:非最后一级节点,leaf:最后一级 - this.toolbarShow = this.options.toolbarShow || this.toolbarShow; //toolbar三个按钮 - this.toolbarBtn = this.options.toolbarBtn || this.toolbarBtn; //toolbar增删改中内容的自定义加载 - this.toolbarExt = this.options.toolbarExt || this.toolbarExt; //toolbar按钮扩展 - this.toolbarFun = $.extend(this.toolbarFun, this.options.toolbarFun) || this.toolbarFun; //toolbar事件加载 - - /** iframe模式参数**/ - this.useIframe = this.options.useIframe || this.useIframe;//是否加载iframe 默认false - this.iframeElem = this.options.iframeElem || this.iframeElem; //iframe的ID - this.iframeUrl = this.options.iframeUrl || this.iframeUrl; //树关联的iframe地址 - this.iframeLoad = this.options.iframeLoad || this.iframeLoad; //点击哪一层加载frame: node:所有节点, leaf:默认,最后一级 - this.iframeDefaultRequest = $.extend(this.iframeDefaultRequest, this.options.iframeDefaultRequest) || this.iframeDefaultRequest; //iframe的默认传递参数 - this.iframeRequest = $.extend(this.iframeRequest, this.options.iframeRequest) || this.iframeRequest; //iframe的自定义参数 - this.iframeFun = $.extend(this.iframeFun, this.options.iframeFun) || this.iframeFun; //iframe事件加载 - - /** 下拉树模式参数**/ - if(this.select) { - // 重置下拉树 - this.reloadSelectSetting(); - } - - /** 调用确认最终主题方法*/ - this.ensureTheme(); - - }; - - // 设置下拉树的基本参数值 - DTree.prototype.selectSetting = function() { - /** select模式参数*/ - this.select = true; //配置成select模式 - - this.selectInitVal = this.obj.attr("data-value") || this.options.selectInitVal || ""; //输入框的值 - this.selectTreeDiv = this.obj[0].id + "_tree_div"; // 上级DIV节点 - this.selectCardDiv = this.obj[0].id + "_select_card_div"; // 上级layui卡片节点 - this.selectDiv = this.obj[0].id + "_select_div"; // 模拟的select节点 - this.selectTipsName = this.obj[0].id + "_select_input"; // select的提示输入框名称 - this.selectTips = this.options.selectTips || "请选择"; // 输入框的提示语 - this.selectInputName = this.options.selectInputName || {nodeId: this.obj[0].id + "_select_nodeId"}; // select表单中的元素 - - // 调取下拉树的特殊处理页面元素标识 - this.renderSelectDom(); - } - - // 重新设置下拉树的基本参数值 - DTree.prototype.reloadSelectSetting = function() { - - this.selectInitVal = this.obj.attr("data-value") || this.options.selectInitVal || this.selectInitVal; //输入框的值 - this.selectTips = this.options.selectTips || this.selectTips; // 输入框的提示语 - this.selectInputName = $.extend(this.selectInputName, this.options.selectInputName) || this.selectInputName; // select表单中的元素 - - // 调取下拉树的特殊处理页面元素标识 - this.reloadSelectDom(); - } - - /******************** 下拉树设置区域 ********************/ - // 渲染下拉树的Dom结构 - DTree.prototype.renderSelectDom = function() { - var _this = this; - var rootId = _this.obj[0].id; - - // 设置自定义表单隐藏域 - var selectInputName = _this.selectInputName; - var selectInput = []; - for(var key in selectInputName) { - selectInput.push(''); - } - - // 设置html - var prevHtml = ['
              ', - '
              ', selectInput.join(""), - '', - '', - '
              '].join(''); - - _this.obj.before(prevHtml); - - _this.obj.wrap('
              ').wrap('
              ').wrap('
              '); - - } - - // 重新渲染下拉树的Dom结构 - DTree.prototype.reloadSelectDom = function() { - var _this = this; - var rootId = _this.obj[0].id; - - // 设置自定义表单隐藏域 - var selectInputName = _this.selectInputName; - var selectInput = []; - for(var key in selectInputName) { - selectInput.push(''); - } - - $("div[dtree-id='"+rootId+"'][dtree-select='"+_this.selectDiv+"']").find("div.layui-select-title").html(""); - - // 设置html - var prevHtml = [selectInput.join(""), - '', - ''].join(''); - - $("div[dtree-id='"+rootId+"'][dtree-select='"+_this.selectDiv+"']").find("div.layui-select-title").html(prevHtml); - - } - - // 设置输入框的值 - DTree.prototype.selectVal = function(param) { - var _this = this; - var rootId = _this.obj[0].id; - var selectInputName = _this.selectInputName; - var selectTipsNameValue = ""; - var selectValues = {}; - - // 如果开启了复选框,则此方法用来取值 - if(_this.checkbar) { - $("div[dtree-select='" + _this.selectDiv + "']").find("input[dtree-id='" + rootId + "']").each(function(){ - var name = $(this).attr("name"); - var val = $(this).val(); - selectValues[name] = val; - }); - } else { - if(typeof param === 'undefined') { // 不传,则为当前树中记录的ID - param = _this.getNowParam(); - } - if(typeof param === 'string') { // 传递ID,则查询树节点ID对应的值 - param = _this.getParam(param); - } - - selectTipsNameValue = param["context"]; - for(var key in selectInputName) { - selectValues[selectInputName[key]] = param[key]; - $("div[dtree-select='" + _this.selectDiv + "']").find("input[dtree-id='" + rootId + "'][name='"+selectInputName[key]+"']").val(param[key] || ""); - } - - if(param["nodeId"] && !param["context"]) { - selectTipsNameValue = _this.getParam(param["nodeId"]); - } - - // 返显提示输入框值 - $("div[dtree-select='" + _this.selectDiv + "']").find("input[dtree-id='" + rootId + "'][name='"+_this.selectTipsName+"']").val(selectTipsNameValue || ""); - - } - - - // 返回隐藏域中的值 - return selectValues; - } - - // 设置复选框模式中的下拉树的值 - DTree.prototype.selectCheckboxVal = function() { - var _this = this; - var rootId = _this.obj[0].id; - var selectInputName = _this.selectInputName; - - // 获取全部复选框选中节点 - var param = _this.getCheckbarJsonArrParam(); - - selectTipsNameValue = param["context"]; - var selectValues = {}; - for(var key in selectInputName) { - var value = param[key].join(","); - selectValues[selectInputName[key]] = value; - $("div[dtree-select='" + _this.selectDiv + "']").find("input[dtree-id='" + rootId + "'][name='"+selectInputName[key]+"']").val(value); - } - - $("div[dtree-select='" + _this.selectDiv + "']").find("input[dtree-id='" + rootId + "'][name='"+_this.selectTipsName+"']").val(selectTipsNameValue); - - // 返回隐藏域中的值 - return selectValues; - } - - // 重置下拉树的值 - DTree.prototype.selectResetVal = function() { - var _this = this; - var rootId = _this.obj[0].id; - // 表单清空 - $("input[dtree-id='"+rootId+"']").val(""); - // 节点重置 - _this.cancelNavThis(); - if(_this.checkbar) { - // 复选框重置 - _this.cancelCheckedNode(); - } - } - - - /******************** 字体及图标区域 ********************/ - // 确认最终主题 - DTree.prototype.ensureTheme = function(){ - var _this = this; - - // 确认style - this.style.item = DTREE + this.skin + ITEM; - this.style.itemThis = DTREE + this.skin + ITEMTHIS; - this.style.dfont = DTREE + this.skin + DFONT; - this.style.ficon = DTREE + this.skin + FICON; - this.style.icon = DTREE + this.skin + ICON; - this.style.cbox = DTREE + this.skin + CBOX; - this.style.chs = DTREE + this.skin + CHS; - - // 确认usefontStyle - var iconfont = this.iconfont; - var iconfonts = []; - if(typeof iconfont === 'string') { - iconfonts.push(iconfont); - } else { - iconfonts = iconfont; - } - - var iconfontStyle = this.iconfontStyle; - var iconfontStyles = []; - if(iconfontStyle.length == undefined) { - iconfontStyles.push(iconfontStyle); - } else { - iconfontStyles = iconfontStyle; - } - - for(var i=0; i 0) { - $lis.each(function(){ - _this.showLineLi($(this)); - }); - } else { - _this.obj.find("li[data-id]").each(function(){ - _this.showLineLi($(this)); - }); - } - } - } - - // 真正显示树线的方法 - DTree.prototype.showLineLi = function($li){ - var _this = this; - var $div = $li.children("div"), - $nextLi = $li.next("li"), - $ul = $li.parent("ul"); - if($ul[0].id == _this.obj[0].id) { - // 根节点下的节点 - $li.removeClass(LI_NAV_LINE); - $li.removeClass(LI_NAV_LAST_LINE); - $li.addClass(LI_NAV_FIRST_LINE); - } else { - // 非根节点下的节点 - var $pnextLi = $ul.parent("li").next("li"); - if($pnextLi.length == 0) { - if($nextLi.length == 0){ - $li.removeClass(LI_NAV_LINE); - $li.removeClass(LI_NAV_FIRST_LINE); - $li.addClass(LI_NAV_LAST_LINE); - } else { - $li.removeClass(LI_NAV_FIRST_LINE); - $li.removeClass(LI_NAV_LAST_LINE); - $li.addClass(LI_NAV_LINE); - } - }else { - var $pnextdiv = $pnextLi.children("div"); - if($nextLi.length == 0 && $div.children("cite").attr("data-leaf") == "leaf" && $pnextdiv.children("cite").attr("data-leaf") == "leaf") { - $li.removeClass(LI_NAV_FIRST_LINE); - $li.removeClass(LI_NAV_LINE); - $li.addClass(LI_NAV_LAST_LINE); - } else { - $li.removeClass(LI_NAV_FIRST_LINE); - $li.removeClass(LI_NAV_LAST_LINE); - $li.addClass(LI_NAV_LINE); - } - } - } - } - - /******************** 初始化数据区域 ********************/ - // 设置高度 - DTree.prototype.autoHeight = function(){ - var _this = this; - var height = _this.height; - if(height != "") { - if(_this.elem == _this.scroll){ - _this.obj.parent().css("height", height + "px"); - } else { - var $toolbarDiv = _this.obj.closest(_this.scroll); - $toolbarDiv.css("height", height + "px"); - } - } - }; - - // 重载树 - DTree.prototype.reload = function(options){ - var _this = this; - _this.reloadSetting(options); - _this.init(); - }; - - // 初始化树 - DTree.prototype.init = function(){ - var _this = this; - if (typeof _this !== "object") { - //_this.obj.html(_this.getNoneDom().errText("树组件未成功加载,请检查配置")); - layer.msg("树组件未成功加载,请检查配置", {icon:5}); - return ; - } - - // 设置组件高度 - _this.autoHeight(); - - if(_this.data) { - if(typeof _this.data.length === 'undefined'){ - //_this.obj.html(_this.getNoneDom().errText("数据解析异常,data数据格式不正确")); - layer.msg("数据解析异常,data数据格式不正确", {icon:5}); - return ; - } - - if(_this.data.length == 0) { - _this.obj.html(_this.getNoneDom().text()); - return ; - } - - //先将ul中的元素清空 - _this.obj.html(""); - - setTimeout(function () { - // 加载完毕后执行树解析前的回调 - _this.success(_this.data, _this.obj); - - // 第一次解析树 - if (_this.dataFormat == 'list'){ - //1.识别根节点ul中的data-id标签,判断顶级父节点 - var pid = _this.obj.attr("data-id"); - //2.构建一个存放节点的树组 - var rootListData = _this.queryListTreeByPid(pid, _this.data); - _this.loadListTree(rootListData, _this.data, 1); - } else { - _this.loadTree(_this.data, 1); - } - - // 显示树线 - _this.showLine(); - - // 这种情况下需要一开始就将toolbar显示在页面上 - if(_this.toolbar && _this.toolbarWay != 'contextmenu') { - _this.setToolbarDom().setToolbarPlace(_this.toolbarMenu); - } - - // 判断是否存在错误数据,并是否打印错误数据 - _this.msgErrData(); - - // 设置复选框的初始值 - if(_this.select){ - _this.selectVal(_this.selectInitVal); - } - - // 保存树副本 - _this.bak = _this.obj.html(); - - // 加载完毕后的回调 - _this.done(_this.data, _this.obj); - }, 100); - } else { - if (!_this.url) { - //_this.obj.html(_this.getNoneDom().errText("数据请求异常,url参数未指定")); - layer.msg("数据请求异常,url参数未指定", {icon:5}); - return ; - } - - //先将ul中的元素清空 - _this.obj.html(""); - - var index = _this.load ? layer.load(1) : ""; - - AjaxHelper.request({ - async: _this.async, - headers: _this.headers, - type: _this.method, - url: _this.url, - dataType: _this.dataType, - contentType: _this.contentType, - withCredentials: _this.withCredentials, - data: _this.getFilterRequestParam(_this.getRequestParam()), - success: function(result) { - if (typeof result === 'string') { - result = $.parseJSON(result); - } - - // 加载完毕后执行树解析前的回调 - _this.success(result, _this.obj); - - var code = ""; - if (_this.dataStyle == 'layuiStyle'){ - code = result[_this.response.statusName]; - } else { - code = result.status[_this.response.statusName]; - } - - if (code == _this.response.statusCode) { - var d = result[_this.response.rootName]; - - if(typeof d.length === 'undefined'){ - _this.obj.html(_this.getNoneDom().errText("数据解析异常,url回调后的数据格式不正确")); - //layer.msg("数据解析异常,url回调后的数据格式不正确", {icon:5}); - return ; - } - - if(d.length == 0) { - _this.obj.html(_this.getNoneDom().text()); - return ; - } - - // 第一次解析树 - if (_this.dataFormat == 'list'){ - //1.识别根节点ul中的data-id标签,判断顶级父节点 - var pid = _this.obj.attr("data-id"); - //2.构建一个存放节点的树组 - var rootListData = _this.queryListTreeByPid(pid, d); - _this.loadListTree(rootListData, d, 1); - } else { - _this.loadTree(d, 1); - } - - // 显示树线 - _this.showLine(); - - // 这种情况下需要一开始就将toolbar显示在页面上 - if(_this.toolbar && _this.toolbarWay != 'contextmenu') { - _this.setToolbarDom().setToolbarPlace(_this.toolbarMenu); - } - - // 判断是否存在错误数据,并是否打印错误数据 - _this.msgErrData(); - - // 设置复选框的初始值 - if(_this.select){ - _this.selectVal(_this.selectInitVal); - } - - // 保存树副本 - _this.bak = _this.obj.html(); - - // 加载完毕后的回调 - _this.done(result, _this.obj); - } else { - // 如果打印不出任何信息说明是在这里,用了错误的数据格式, 或返回码不正确 - if (_this.dataStyle == 'layuiStyle'){ - _this.obj.html(_this.getNoneDom().errText(result[_this.response.message])); - _this.error(null, code, result[_this.response.message]); - //layer.msg(result[_this.response.message], {icon:2}); - } else { - _this.obj.html(_this.getNoneDom().errText(result.status[_this.response.message])); - _this.error(null, code, result.status[_this.response.message]); - //layer.msg(result.status[_this.response.message], {icon:2}); - } - } - }, - error: function(XMLHttpRequest, textStatus, errorThrown){// 异步加载异常回调 - _this.obj.html(_this.getNoneDom().errText(textStatus + ": " + errorThrown)); - _this.error(XMLHttpRequest, textStatus, errorThrown); - }, - complete: function(XMLHttpRequest, textStatus){// 异步加载完成回调 - if(_this.load){layer.close(index);} - _this.complete(XMLHttpRequest, textStatus); - } - }); - } - }; - - // 加载子节点 - DTree.prototype.getChild = function($div, data) { - var _this = this, $ul = $div.next("ul"); - - _this.setNodeParam($div); - - if(typeof data !== 'undefined') { - if(typeof data.length === 'undefined'){ - //_this.obj.html(_this.getNoneDom().errText("数据解析异常,data数据格式不正确")); - layer.msg("数据解析异常,data数据格式不正确", {icon:5}); - return ; - } - - //先将ul中的元素清空 - $ul.html(""); - - // 解析树 - if (_this.dataFormat == 'list'){ - var pid = _this.node.nodeId; - var level = parseInt(_this.node.level)+1; - - var listData = _this.queryListTreeByPid(pid, data); - _this.loadListTree(listData, _this.data, level); - } else { - _this.loadTree(data, level); - } - - // 显示树线 - _this.showLine(); - - // 这种情况下需要一开始就将toolbar显示在页面上 - if(_this.toolbar && _this.toolbarWay != 'contextmenu') { - _this.setToolbarDom().setToolbarPlace(_this.toolbarMenu); - } - - // 判断是否存在错误数据,并是否打印错误数据 - _this.msgErrData(); - - // 保存树副本 - _this.bak = _this.obj.html(); - - } else { - if (!_this.url) { - //_this.obj.html(_this.getNoneDom().errText("数据请求异常,url参数未指定")); - layer.msg("数据请求异常,url参数未指定", {icon:5}); - return ; - } - - $ul.html(""); - var index = _this.load ? layer.load(1) : ""; - AjaxHelper.request({ - async: _this.async, - headers: _this.headers, - type: _this.method, - url: _this.url, - dataType: _this.dataType, - withCredentials: _this.withCredentials, - data: _this.getFilterRequestParam(_this.getRequestParam()), - success: function(result) { - if (typeof result === 'string') { - result = $.parseJSON(result); - } - var code = ""; - if (_this.dataStyle == 'layuiStyle'){ - code = result[_this.response.statusName]; - } else { - code = result.status[_this.response.statusName]; - } - - if (code == _this.response.statusCode) { - // 解析树 - var pid = _this.node.nodeId; - var level = parseInt(_this.node.level)+1; - if (_this.dataFormat == 'list'){ - var pListData = _this.queryListTreeByPid(pid, result[_this.response.rootName]); - _this.loadListTree(pListData, result[_this.response.rootName], level, $ul); - } else { - _this.loadTree(result[_this.response.rootName], level, $ul); - } - - // 显示树线 - _this.showLine(); - - // 这种情况下需要一开始就将toolbar显示在页面上 - if(_this.toolbar && _this.toolbarWay != 'contextmenu') { - _this.setToolbarDom().setToolbarPlace(_this.toolbarMenu); - } - - // 判断是否存在错误数据,并是否打印错误数据 - _this.msgErrData(); - - $ul.addClass(NAV_SHOW); - - // 保存树副本 - _this.bak = _this.obj.html(); - } else { - if (_this.dataStyle == 'layuiStyle'){ - _this.obj.html(_this.getNoneDom().errText(result[_this.response.message])); - _this.error(null, code, result[_this.response.message]); - //layer.msg(result[_this.response.message], {icon:2}); - } else { - _this.obj.html(_this.getNoneDom().errText(result.status[_this.response.message])); - _this.error(null, code, result.status[_this.response.message]); - //layer.msg(result.status[_this.response.message], {icon:2}); - } - } - }, - error: function(XMLHttpRequest, textStatus, errorThrown){// 异步加载异常回调 - _this.obj.html(_this.getNoneDom().errText(textStatus + ": " + errorThrown)); - _this.error(XMLHttpRequest, textStatus, errorThrown); - }, - complete: function(XMLHttpRequest, textStatus){// 异步加载完成回调 - if(_this.load){layer.close(index);} - _this.complete(XMLHttpRequest, textStatus); - } - }); - } - }; - - // 初始化树或者拼接树 - DTree.prototype.loadListTree = function(pListData, listData, level, $ul){ - var _this = this; - $ul = $ul || _this.getNodeDom().nowOrRootUl(); //当前选中的节点或根节点 - if (pListData.length > 0){ - for (var i = 0; i < pListData.length; i++) { - // 1.获取已知节点的全部数据 - var data = pListData[i]; - if(typeof data !== "object") continue; - var parseData = _this.parseData(data); - var childListData = _this.queryListTreeByPid(parseData.treeId(), listData); // 根据已知数据的id判断该条数据是否还有子数据 - - // 3. 页面元素加载数据 - $ul.append(_this.getLiItemDom(parseData.treeId(), parseData.parentId(), parseData.title(), parseData.fmtTitle(), parseData.last(childListData.length), parseData.ficonClass(), parseData.iconClass(), parseData.checkArr(), level, parseData.spread(level), parseData.disabled(), parseData.hide(), parseData.basicData(), parseData.recordData(), ($ul.hasClass(UL_ROOT) ? "root" : "item"))); - // 4.有子数据的元素加载子节点 - if(childListData.length > 0){ - var cLevel = parseInt(level)+1; - _this.loadListTree(childListData, listData, cLevel, _this.obj.find("ul[data-id='"+parseData.treeId()+"']")); - } - } - } - }; - - // 根据父ID查找list数据中匹配的元素 - DTree.prototype.queryListTreeByPid = function(pid, listData){ - var _this = this; - var rootListData = []; - if (listData) { - for (var i = 0; i < listData.length; i++) { - var data = listData[i]; - if(typeof data !== "object") continue; - if(pid == "null" || pid == null){ - if(data[_this.response.parentId] == null) { rootListData.push(data); } - } else { - if (data[_this.response.parentId] == pid){ - if (data[_this.response.treeId] == pid){ - _this.errData.push(data); - } else { - rootListData.push(data); - } - } - } - } - } - return rootListData; - }; - - // 初始化树或者拼接树 - DTree.prototype.loadTree = function(root, level, $ul){ - var _this = this; - if (root) { - $ul = $ul || _this.getNodeDom().nowOrRootUl(); //当前选中的节点或根节点 - for (var i = 0; i < root.length; i++) { // 遍历跟节点或追加的跟节点 - var data = root[i]; - if(typeof data !== "object") continue; - if(data[_this.response.treeId] == data[_this.response.parentId]) { _this.errData.push(data); } - var parseData = _this.parseData(data); - var children = parseData.children(); - $ul.append(_this.getLiItemDom(parseData.treeId(), parseData.parentId(), parseData.title(), parseData.fmtTitle(), parseData.last(children.length), parseData.ficonClass(), parseData.iconClass(), parseData.checkArr(), level, parseData.spread(level), parseData.disabled(), parseData.hide(), parseData.basicData(), parseData.recordData(), ($ul.hasClass(UL_ROOT) ? "root" : "item"))); - if (children.length != 0) { - var cLevel = parseInt(level)+1; - _this.loadTree(children, cLevel, _this.obj.find("ul[data-id='"+parseData.treeId()+"']")); - } - } - } - }; - - // 判断在数据加载时是否存在错误数据,并是否打印错误数据 - DTree.prototype.msgErrData = function() { - var _this = this; - if(_this.errData.length > 0 && _this.errDataShow) { - var title = ""; - for(var i=0; i<_this.errData.length; i++) { - var edata = _this.errData[i]; - title += "数据:【"+edata[_this.response.title]+"】中节点id和上级id值一致! \n"; - } - layer.msg(title, {icon:2,time:5000}); - } - // 显示之后,将错误数据制空 - _this.errData = []; - }; - - // 解析data数据 - DTree.prototype.parseData = function(data) { - var _this = this; - - return { - treeId: function(){ - return data[_this.response.treeId]; - }, - parentId: function(){ - return data[_this.response.parentId]; - }, - fmtTitle: function(){ - if(typeof _this.formatter.title === 'function'){ - var ftitle = _this.formatter.title(data); - var tt = data[_this.response.title]; - tt = (ftitle == "" || ftitle == undefined || ftitle == null) ? tt : ftitle; - return tt || ""; - } - return data[_this.response.title]; - }, - title: function(){ - return data[_this.response.title]; - }, - level: function(){ - return data[_this.response.level] || ""; - }, - ficonClass: function(){ - return data[_this.response.ficonClass] || ""; - }, - iconClass: function(){ - return data[_this.response.iconClass] || ""; - }, - last: function(len){ - return ((len == 0) ? - ((typeof (data[_this.response.last]) === "boolean") ? data[_this.response.last] : true) : - ((typeof (data[_this.response.last]) === "boolean") ? data[_this.response.last] : false)); - }, - spread: function(level){ - return ((level < _this.initLevel) ? - ((typeof (data[_this.response.spread]) === "boolean") ? data[_this.response.spread] : true) : - ((typeof (data[_this.response.spread]) === "boolean") ? data[_this.response.spread] : false)); - }, - disabled: function(){ - return (typeof (data[_this.response.disabled]) === "boolean") ? data[_this.response.disabled] : false; - }, - hide: function(){ - return (typeof (data[_this.response.hide]) === "boolean") ? data[_this.response.hide] : false; - }, - checkArr: function(){ - var checkArr = []; - var checkArrData = data[_this.response.checkArr]; - if(typeof checkArrData === 'string'){ - if(checkArrData.indexOf("{") > -1 && checkArrData.indexOf("}") > -1){ - checkArrData = JSON.parse(checkArrData); - } else { - checkArrData = {"type":"0","checked":checkArrData}; - } - } - if(typeof checkArrData === 'object'){ - if(typeof checkArrData.length === 'undefined'){ - checkArr.push(checkArrData); - } else { - checkArr = checkArrData; - } - } - - if(checkArr.length > 0 && checkArr.length > _this.checkArrLen){ - _this.checkArrLen = checkArr.length; // 获取复选框个数 - } - return checkArr; - - }, - children: function(){ - return data[_this.response.childName] || []; - }, - basicData: function(){ - return event.escape(JSON.stringify(data[_this.response.basicData])) || JSON.stringify({}); - }, - recordData: function(){ - var recordData = _this.record ? event.cloneObj(data, [_this.response.treeId, - _this.response.parentId, - _this.response.title, - _this.response.iconClass, - _this.response.childName, - _this.response.last, - _this.response.spread, - _this.response.disabled, - _this.response.hide, - _this.response.checkArr, - _this.response.checked, - _this.response.type, - _this.response.basicData]) : {}; - - return event.escape(JSON.stringify(recordData)); - }, - data: function(){ - return data; - } - } - - }; - - //当无节点数据时显示dom - DTree.prototype.getNoneDom = function(){ - var _this = this, - rootId = _this.obj[0].id, - noneTitle = _this.none; - - return { - text: function(){ - return "
              "+noneTitle+"
              "; - }, - errText: function(errInfo){ - return "
              "+errInfo+"
              "; - } - } - }; - - //新增节点的dom值 - DTree.prototype.getDom = function(treeId, parentId, title, fmtTitle, last, ficonClass, iconClass, checkArr, level, spread, disabled, hide) { - var _this = this, - rootId = _this.obj[0].id, - toolbar = _this.toolbar, - checkbar = _this.checkbar; - - return { - fnode: function() { // + - 图标 - // 获取图标的变量 - var fnodeIcon = _this.fnodeIcon, - fleafIcon = _this.fleafIcon; - - var fleafIconLeaf = _this.usefontStyle.fnode.leaf, - fnodeIconOpen = _this.usefontStyle.fnode.node.open, - fnodeIconClose = _this.usefontStyle.fnode.node.close; - - if(ficonClass){ - var iconfont = _this.iconfont; - if(typeof iconfont === 'string') { - fleafIconLeaf = iconfont + " " + ficonClass; - fnodeIconOpen = iconfont + " " + ficonClass; - fnodeIconClose = iconfont + " " + ficonClass; - } else { - fleafIconLeaf = iconfont[0] + " " + ficonClass; - fnodeIconOpen = iconfont[0] + " " + ficonClass; - fnodeIconClose = iconfont[0] + " " + ficonClass; - } - } - - if(fnodeIcon != "-1" && fleafIcon != "-1"){ // 都加载 - return last ? "" : - (spread ? "" : ""); - } - - if(fnodeIcon != "-1" && fleafIcon == "-1"){ // 加载node 隐藏leaf - return last ? "" : - (spread ? "" : ""); - } - - if(fnodeIcon == "-1" && fleafIcon != "-1"){ // 隐藏node 加载leaf - return last ? "" : - (spread ? "" : ""); - } - - if(fnodeIcon == "-1" && fleafIcon == "-1"){ // 都隐藏 - return last ? "" : - (spread ? "" : ""); - } - }, - node: function() { // 二级图标样式 - // 获取图标的变量 - var nodeIcon = _this.nodeIcon, - leafIcon = _this.leafIcon; - - var sleafIconLeaf = _this.usefontStyle.snode.leaf, - snodeIconOpen = _this.usefontStyle.snode.node.open, - snodeIconClose = _this.usefontStyle.snode.node.close; - if(iconClass){ - var iconfont = _this.iconfont; - if(typeof iconfont === 'string') { - sleafIconLeaf = iconfont + " " + iconClass; - snodeIconOpen = iconfont + " " + iconClass; - snodeIconClose = iconfont + " " + iconClass; - } else { - sleafIconLeaf = iconfont[0] + " " + iconClass; - snodeIconOpen = iconfont[0] + " " + iconClass; - snodeIconClose = iconfont[0] + " " + iconClass; - } - } - - if(nodeIcon != "-1" && leafIcon != "-1"){ // 都加载 - return last ? "" : - (spread ? "" : ""); - } - - if(nodeIcon != "-1" && leafIcon == "-1"){ // 加载node 隐藏leaf - return last ? "" : - (spread ? "" : ""); - } - - if(nodeIcon == "-1" && leafIcon != "-1"){ // 隐藏node 加载leaf - return last ? "" : - (spread ? "" : ""); - } - - if(nodeIcon == "-1" && leafIcon == "-1"){ // 都隐藏 - return last ? "" : - (spread ? "" : ""); - } - }, - checkbox: function() { // 复选框 - var flag = false; - if(_this.checkbarLoad == "node"){if (checkbar) {flag = true;}} else {if (last) {if (checkbar) {flag = true;}}} - - if(flag){ - var result = "
              "; - if(checkArr && checkArr.length > 0){ - - for (var i = 0; i < checkArr.length; i++) { - var checkData = checkArr[i]; - var checked = checkData.checked; - var CHOOSE_CLASS = _this.usefontStyle.checkbox.out; - if (checked == "2") { //半选择 - CHOOSE_CLASS = _this.usefontStyle.checkbox.noall + " " + _this.style.chs; - } else if (checked == "1") { //选择 - CHOOSE_CLASS = _this.usefontStyle.checkbox.on + " " + _this.style.chs; - } else { //未选择或者无值 - CHOOSE_CLASS = _this.usefontStyle.checkbox.out; - } - var disClass = ""; - if(disabled){disClass = NAV_DIS;} - result += ""; - } - } - result += "
              "; - return result; - } - - return ""; - }, - text: function() { // 文字显示 - var disClass = ""; - if(disabled){disClass = NAV_DIS;} - return ""+fmtTitle+""; - }, - ul: function() { //子节点ul - return last ? "
                " : - (spread ? "
                  " : "
                    "); - } - }; - }; - - //替换节点的dom值,或指定值 - DTree.prototype.replaceDom = function($div, treeId, last, spread, disabled, hide) { - var _this = this, - rootId = _this.obj[0].id, - toolbar = _this.toolbar, - checkbar = _this.checkbar; - - return { - fnode: function(ficonClass) { // + - 图标 - var fnode = ""; - - // 获取图标的变量 - var fnodeIcon = _this.fnodeIcon, - fleafIcon = _this.fleafIcon; - - var fleafIconLeaf = _this.usefontStyle.fnode.leaf, - fnodeIconOpen = _this.usefontStyle.fnode.node.open, - fnodeIconClose = _this.usefontStyle.fnode.node.close; - - if(ficonClass){ - var iconfont = _this.iconfont; - if(typeof iconfont === 'string') { - fleafIconLeaf = iconfont + " " + ficonClass; - fnodeIconOpen = iconfont + " " + ficonClass; - fnodeIconClose = iconfont + " " + ficonClass; - } else { - fleafIconLeaf = iconfont[0] + " " + ficonClass; - fnodeIconOpen = iconfont[0] + " " + ficonClass; - fnodeIconClose = iconfont[0] + " " + ficonClass; - } - } - - if(fnodeIcon != "-1" && leafIcon != "-1"){ // 都加载 - fnode = last ? "" : - (spread ? "" : ""); - }else if(nodeIcon != "-1" && leafIcon == "-1"){ // 加载node 隐藏leaf - fnode = last ? "" : - (spread ? "" : ""); - }else if(nodeIcon == "-1" && leafIcon != "-1"){ // 隐藏node 加载leaf - fnode = last ? "" : - (spread ? "" : ""); - }else if(nodeIcon == "-1" && leafIcon == "-1"){ // 都隐藏 - fnode = last ? "" : - (spread ? "" : ""); - } - if(fnode != ""){_this.getNodeDom($div).fnode().replaceWith($(fnode));} - }, - node: function(iconClass) { // 二级图标样式 - var snode = ""; - - // 获取图标的变量 - var nodeIcon = _this.nodeIcon, - leafIcon = _this.leafIcon; - - var sleafIconLeaf = _this.usefontStyle.snode.leaf, - snodeIconOpen = _this.usefontStyle.snode.node.open, - snodeIconClose = _this.usefontStyle.snode.node.close; - if(iconClass){ - var iconfont = _this.iconfont; - if(typeof iconfont === 'string') { - sleafIconLeaf = iconfont + " " + iconClass; - snodeIconOpen = iconfont + " " + iconClass; - snodeIconClose = iconfont + " " + iconClass; - } else { - sleafIconLeaf = iconfont[0] + " " + iconClass; - snodeIconOpen = iconfont[0] + " " + iconClass; - snodeIconClose = iconfont[0] + " " + iconClass; - } - } - - if(nodeIcon != "-1" && leafIcon != "-1"){ // 都加载 - snode = last ? "" : - (spread ? "" : ""); - }else if(nodeIcon != "-1" && leafIcon == "-1"){ // 加载node 隐藏leaf - snode = last ? "" : - (spread ? "" : ""); - }else if(nodeIcon == "-1" && leafIcon != "-1"){ // 隐藏node 加载leaf - snode = last ? "" : - (spread ? "" : ""); - }else if(nodeIcon == "-1" && leafIcon == "-1"){ // 都隐藏 - snode = last ? "" : - (spread ? "" : ""); - } - if(snode != ""){_this.getNodeDom($div).snode().replaceWith($(snode));} - }, - checkbox: function(checkArr) { // 复选框 - var flag = false; - if(_this.checkbarLoad == "node"){if (checkbar) {flag = true;}} else {if (last) {if (checkbar) {flag = true;}}} - - if(flag){ - var result = "
                    "; - if(checkArr && checkArr.length > 0){ - - for (var i = 0; i < checkArr.length; i++) { - var checkData = checkArr[i]; - var checked = checkData.checked; - var CHOOSE_CLASS = _this.usefontStyle.checkbox.out; - if (checked == "2") { //半选择 - CHOOSE_CLASS = _this.usefontStyle.checkbox.noall + " " + _this.style.chs; - } else if (checked == "1") { //选择 - CHOOSE_CLASS = _this.usefontStyle.checkbox.on + " " + _this.style.chs; - } else { //未选择或者无值 - CHOOSE_CLASS = _this.usefontStyle.checkbox.out; - } - var disClass = ""; - if(disabled){disClass = NAV_DIS;} - result += ""; - } - } - result += "
                    "; - _this.getNodeDom($div).snode().next("div").replaceWith($(result)); - } - }, - text: function(title) { // 文字显示 - var disClass = ""; - if(disabled){disClass = NAV_DIS;} - var cite = ""+title+"" - _this.getNodeDom($div).cite().replaceWith($(cite)); - }, - ul: function() { //子节点ul - var ul = last ? "
                      " : - (spread ? "
                        " : "
                          "); - _this.getNodeDom($div).nextUl().replaceWith($(ul)); - }, - div: function(){ - $div.attr("data-id", treeId); - }, - basicData: function(basicData){ - basicData = (basicData == "{}") ? "" : basicData; - $div.attr("data-basic", basicData); - }, - recordData: function(recordData){ - recordData = (recordData == "{}") ? "" : recordData; - $div.attr("data-record", recordData); - }, - p_li: function(pId){ - var $li = $div.parent("li"); - $li.attr("data-id", treeId); - if(pId) { - $li.attr("data-pid", pId); - } - return $li; - } - }; - - }; - - // 获取拼接好的li - DTree.prototype.getLiItemDom = function(treeId, parentId, title, fmtTitle, last, ficonClass, iconClass, checkArr, level, spread, disabled, hide, basicData, recordData, flag) { - var _this = this, - rootId = _this.obj[0].id; - - var dom = _this.getDom(treeId, parentId, title, fmtTitle, last, ficonClass, iconClass, checkArr, level, spread, disabled, hide); - basicData = (basicData == "{}") ? "" : basicData; - recordData = (recordData == "{}") ? "" : recordData; - var div = "
                          " + - div , - dom.fnode(), - dom.node(), - dom.checkbox(), - dom.text(), - "
                          ", dom.ul(), ""].join(""); - - return li; - }; - - // 初始化节点,用于数据回显 - DTree.prototype.dataInit = function(chooseId){ - var _this = this; - var $div = _this.obj.find("div[data-id='"+chooseId+"']"); - _this.getNodeDom($div).parentLi().find("."+NAV_THIS).removeClass(NAV_THIS); - _this.getNodeDom($div).parentLi().find("."+_this.style.itemThis).removeClass(_this.style.itemThis); - $div.addClass(NAV_THIS); - $div.addClass(_this.style.itemThis); - _this.setNodeParam($div); - // 将该节点的父节点全部展开 - var $li_parents = $div.parents("."+LI_NAV_ITEM); - $li_parents.children("ul").addClass(NAV_SHOW); - $li_parents.children("."+LI_DIV_ITEM).children("i[data-spread]."+event.trimToDot(_this.usefontStyle.fnode.node.close)).addClass(_this.usefontStyle.fnode.node.open); - $li_parents.children("."+LI_DIV_ITEM).children("i[data-spread]."+event.trimToDot(_this.usefontStyle.fnode.node.close)).removeClass(_this.usefontStyle.fnode.node.close); - $li_parents.children("."+LI_DIV_ITEM).children("i[data-spread]."+event.trimToDot(_this.usefontStyle.snode.node.close)).addClass(_this.usefontStyle.snode.node.open); - $li_parents.children("."+LI_DIV_ITEM).children("i[data-spread]."+event.trimToDot(_this.usefontStyle.snode.node.close)).removeClass(_this.usefontStyle.snode.node.close); - return _this.getNowParam(); - }; - - // 基于备份的Html数据回滚 - DTree.prototype.rollbackHtml = function(chooseId){ - var _this = this; - if(_this.bak) { - _this.obj.html(_this.bak); - // 取消全部选中状态 - _this.cancelNavThis(); - if(_this.checkbar) { - _this.cancelCheckedNode(); - _this.chooseDataInit(chooseId); - } else { - _this.dataInit(chooseId); - } - - _this.bak = _this.obj.html(); - } - }; - - - /******************** 基础事件区域 ********************/ - // 数据格式化 - DTree.prototype.escape = function(html){ - return event.escape(html); - }; - - // 格式化数据转回正常数据 - DTree.prototype.unescape = function(str){ - return event.unescape(str); - }; - - // 取消选中div - DTree.prototype.cancelNavThis = function(){ - var _this = this; - _this.obj.find("div[data-id]").parent().find("."+NAV_THIS).removeClass(NAV_THIS); - _this.obj.find("div[data-id]").parent().find("."+_this.style.itemThis).removeClass(_this.style.itemThis); - } - - // 选中div - DTree.prototype.navThis = function(id){ - var _this = this; - var $div = (typeof id === 'object') ? id : (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']").length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']"); - if($div != null) { - _this.cancelNavThis(); - $div.addClass(NAV_THIS); - $div.addClass(_this.style.itemThis); - } - } - - // 手风琴模式操作其他节点 - DTree.prototype.accordionUL = function($ul) { - var _this = this; - if(_this.accordion) { - $ul.closest("li[data-index]").siblings("li[data-index]").children("ul[data-id]").removeClass(NAV_SHOW); - var $divs = $ul.closest("li[data-index]").siblings("li[data-index]").children("ul[data-id]").prev("div"); - if($divs.length && $divs.length > 0) { - for (var i=0; i<$divs.length; i++) { - var $div = $($divs[i]); - var $i_spread = _this.getNodeDom($div).fnode(), - $i_node = _this.getNodeDom($div).snode(); - if($i_spread.attr("data-spread") != 'last'){ - _this.operateIcon($i_spread, $i_node).close(); - } - } - } - - } - }; - - // 展开或隐藏节点 作用点: div - DTree.prototype.clickSpread = function($div) { - var _this = this; - var $i_spread = _this.getNodeDom($div).fnode(), - $i_node = _this.getNodeDom($div).snode(), - $cite = _this.getNodeDom($div).cite(), - spread = $i_spread.attr("data-spread"), - $ul = $div.next("ul"); - - if ($ul.length > 0) { - if (spread == "close") { - if (_this.type=="load") { //增加加载 - if (_this.cache) { //开启缓存 - if ($ul.html()) { - $ul.addClass(NAV_SHOW); - _this.accordionUL($ul); - } else { //加载节点 - _this.getChild($div); - _this.accordionUL($ul); - } - }else { //每次取新的数据 - $ul.html(""); - _this.getChild($div); - _this.accordionUL($ul); - } - } else { // 全量加载 - $ul.addClass(NAV_SHOW); - _this.accordionUL($ul); - } - _this.operateIcon($i_spread, $i_node).open(); - } else if (spread == "open") { - $ul.removeClass(NAV_SHOW); - _this.operateIcon($i_spread, $i_node).close(); - } - } - }; - - // 设置节点为disabled - DTree.prototype.setDisabledNodes = function(disabledIds){ - var _this = this; - var disabledId = disabledIds.split(","); - for (var i=0; i 0) { - _this.getChild($div, data); - } else { - var parseData = _this.parseData(data); - - if(parseData.treeId()){ - var level = parseInt($div.parent("li").attr("data-index"))+1; - $ul.append(_this.getLiItemDom(parseData.treeId(), parseData.parentId(), parseData.title(), parseData.fmtTitle(), parseData.last(0), parseData.ficonClass(), parseData.iconClass(), parseData.checkArr(), level, parseData.spread(), parseData.disabled(), parseData.hide(), parseData.basicData(), parseData.recordData(), "item")); - - // 建造完毕后,选中该DIV - $thisDiv = $ul.find("div[data-id='"+parseData.treeId()+"']"); - _this.setNodeParam($thisDiv); - - _this.showLine($ul.find("li")); - } else { - layer.msg("添加失败,节点ID为undefined!",{icon:5}); - // 重新赋值 - _this.setNodeParam($div); - } - } - } else { - _this.getChild($div); - } - } - - // 局部刷新树--编辑当前节点选中节点时 - DTree.prototype.partialRefreshEdit = function($div, data){ - var _this = this; - $ul = $div.next("ul"), - $p_li = $div.parent("li"); - - if(data) { - if(typeof data === 'object') { - var parseData = _this.parseData(data); - - if(parseData.treeId()){ - var replaceDom = _this.replaceDom($div, parseData.treeId(), parseData.last(0), parseData.spread(), parseData.disabled(), parseData.hide()); - replaceDom.div(); - replaceDom.node(parseData.iconClass()); - replaceDom.checkbox(parseData.checkArr()); - replaceDom.text(parseData.title()); - replaceDom.ul(); - replaceDom.basicData(parseData.basicData()); - replaceDom.recordData(parseData.recordData()); - - var parentId = parseData.parentId(); - var oldParentId = $p_li.attr("data-pid"); - if(parentId && parentId != oldParentId) { - // 变更了父节点 - $p_li = replaceDom.p_li(parentId); - - // 根据parentId找到下挂节点的ul - var $goto_div = _this.getNodeDom(parentId).div(), - $goto_ul = _this.getNodeDom(parentId).nextUl(); - // 判断父级ul中是否还存在li,如果不存在,则需要修改节点的样式 - if($goto_ul.children("li").length == 0){ - var $icon_i = $goto_div.find("i[data-spread]"); - _this.operateIcon($icon_i.eq(0), $icon_i.eq(1)).openWithLeaf(); - $goto_ul.addClass(NAV_SHOW); - } - $goto_ul.append($p_li); - } else { - replaceDom.p_li(); - } - _this.setNodeParam($div); - } else { - layer.msg("编辑失败,节点ID为undefined!",{icon:5}); - // 重新赋值 - _this.setNodeParam($div); - } - } else { - _this.getNodeDom($div).cite().html(data); - } - } - } - - // 局部刷新树--当前节点选中被删除时 - DTree.prototype.partialRefreshDel = function($div){ - var _this = this; - $p_li = $div.parent("li"); - $p_ul = _this.getNodeDom($div).parentUl(); - $p_div = _this.getNodeDom($div).parentDiv(); - - $p_li.remove(); - _this.showLine($p_ul.find("li")); - // 判断父级ul中是否还存在li,如果不存在,则需要修改节点的样式 - if($p_ul.children("li").length == 0){ - var $icon_i = $p_div.find("i[data-spread]"); - _this.operateIcon($icon_i.eq(0), $icon_i.eq(1)).closeWithLeaf(); - } - _this.initNodeParam(); - } - - /******************** 复选框区域 ********************/ - // 初始化复选框的值 - DTree.prototype.chooseDataInit = function(chooseIds){ - var _this = this; - var chooseId = chooseIds.split(","); - for (var i=0; i."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - _this.checkStatus($child_li_i).noCheck(); - - // 处理父级节点的选中状态 - for (var i = 1, item = $parent_li; i < item.length; i++) { - var flag = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"'][data-checked='1']").length; - if (flag == 0) { - //把父级去掉选中 - var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - _this.checkStatus($item_i).noCheck(); - } - } - } else { - // 处理当前节点的选中状态 - _this.checkStatus($i).check(); - - // 处理子级节点的选中状态 - var $child_li_i = $child_li.find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - _this.checkStatus($child_li_i).check(); - - // 处理父级节点的选中状态 - for (var i = 1, item = $parent_li; i < item.length; i++) { - var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - //把父级选中 - _this.checkStatus($item_i).check(); - } - } - }; - - //实现复选框点击, no-all 子集选中父级半选中,子集全选父级选中 - DTree.prototype.checkAllOrNoallOrNot = function($i) { - var _this = this; - //$i 当前点击的checkbox - var $div = $i.closest("."+LI_DIV_ITEM), - dataPar = $i.attr("data-par"), - dataType = $i.attr("data-type"), - $li = $i.closest(dataPar), //当前checkbox的上级li节点 - $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点 - $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点 - - if ($i.attr("data-checked") == "1") { //当前复选框为选中状态,点击后变为未选中状态 - // 处理当前节点的选中状态 - _this.checkStatus($i).noCheck(); - - // 处理子级节点的选中状态 - var $child_li_i = $child_li.find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - _this.checkStatus($child_li_i).noCheck(); - - // 处理父级节点的选中状态 - for (var i = 1, item = $parent_li; i < item.length; i++) { - var flag = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"'][data-checked='1']").length; - var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - if (flag == 0) { - //把父级去掉选中 - _this.checkStatus($item_i).noCheck(); - } else { - //把父级半选 - _this.checkStatus($item_i).noallCheck(); - } - } - } else { //当前复选框为未选中状态,点击后变为选中状态 - // 处理当前节点的选中状态 - _this.checkStatus($i).check(); - - // 处理子级节点的选中状态 - var $child_li_i = $child_li.find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - _this.checkStatus($child_li_i).check(); - - // 处理父级节点的选中状态 - for (var i = 1, item = $parent_li; i < item.length; i++) { - var flag1 = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"'][data-checked='1']").length; - var flag2 = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']").length; - var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - if (flag1 != flag2) { - // 父级复选框半选 - _this.checkStatus($item_i).noallCheck(); - } else { - // 父级复选框全选 - _this.checkStatus($item_i).check(); - } - } - } - }; - - //实现复选框点击,p-casc:父级选中子集全选,子集无法改变父级选中状态 - DTree.prototype.checkAllOrPcascOrNot = function($i) { - var _this = this; - //$i 当前点击的checkbox - var $div = $i.closest("."+LI_DIV_ITEM), - dataPar = $i.attr("data-par"), - dataType = $i.attr("data-type"), - $li = $i.closest(dataPar), //当前checkbox的上级li节点 - $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点 - $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点 - - if ($i.attr("data-checked") == "1") { //当前复选框为选中状态,点击后变为未选中状态 - // 处理当前节点的选中状态 - _this.checkStatus($i).noCheck(); - - // 处理子级节点的选中状态 - var $child_li_i = $child_li.find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - _this.checkStatus($child_li_i).noCheck(); - - } else { //当前复选框为未选中状态,点击后变为选中状态 - // 处理当前节点的选中状态 - _this.checkStatus($i).check(); - - // 处理子级节点的选中状态 - var $child_li_i = $child_li.find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - _this.checkStatus($child_li_i).check(); - } - }; - - //实现复选框点击,self:各自选中互不影响 - DTree.prototype.checkOrNot = function($i) { - var _this = this; - //$i 当前点击的checkbox - var $div = $i.closest("."+LI_DIV_ITEM), - dataPar = $i.attr("data-par"), - dataType = $i.attr("data-type"), - $li = $i.closest(dataPar), //当前checkbox的上级li节点 - $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点 - $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点 - - if ($i.attr("data-checked") == "1") { //当前复选框为选中状态,点击后变为未选中状态 - // 处理当前节点的选中状态 - _this.checkStatus($i).noCheck(); - } else { //当前复选框为未选中状态,点击后变为选中状态 - // 处理当前节点的选中状态 - _this.checkStatus($i).check(); - } - }; - - //实现复选框点击,only:只能选中1个复选框 - DTree.prototype.checkOnly = function($i) { - var _this = this; - //$i 当前点击的checkbox - var $div = $i.closest("."+LI_DIV_ITEM), - dataPar = $i.attr("data-par"), - dataType = $i.attr("data-type"), - $li = $i.closest(dataPar), //当前checkbox的上级li节点 - $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点 - $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点 - - var checked = $i.attr("data-checked"); - // 将全部节点全部设为未选中状态 - var $all_i = _this.obj.find("i[data-checked]"); - _this.checkStatus($all_i).noCheck(); - - if (checked != "1") { //当前复选框为未选中状态,点击后变为选中状态 - // 处理当前节点的选中状态 - _this.checkStatus($i).check(); - } - }; - - //实现复选框点击 - DTree.prototype.changeCheck = function($i) { - var _this = this; - var temp = _this.temp; - if(typeof $i === 'undefined') { - $i = temp[0]; - } - // 复选框选中事件 - if (_this.checkbarType == "all") { - _this.checkAllOrNot($i); - } else if(_this.checkbarType == "no-all") { - _this.checkAllOrNoallOrNot($i); - } else if(_this.checkbarType == "p-casc") { - _this.checkAllOrPcascOrNot($i); - } else if(_this.checkbarType == "self") { - _this.checkOrNot($i); - } else if(_this.checkbarType == "only") { - _this.checkOnly($i); - } else { - _this.checkAllOrNot($i); - } - - if(_this.select) { - // 设置复选框模式中的下拉树的值 - _this.selectCheckboxVal(); - } - - // 获取复选框选中节点的内容 - var checkbarNodes = _this.setAndGetCheckbarNodesParam(true); - - // 用户自定义想做的事情 - _this.checkbarFun.chooseDone(checkbarNodes); - layui.event.call(this, MOD_NAME, "chooseDone("+$(_this.obj)[0].id+")", {"checkbarParams": checkbarNodes}); - _this.temp = []; - }; - - //复选框半选状态初始化设置 - DTree.prototype.initNoAllCheck = function(){ - var _this = this; - //1.获取所有选中节点 - var $is = _this.obj.find("i[data-checked='1']"); - if($is.length > 0){ - for ( var key = 0; key < $is.length; key++) { - var $i = $($is[key]), - dataPar = $i.attr("data-par"), - dataType = $i.attr("data-type"), - $li = $i.closest(dataPar), //当前checkbox的上级li节点 - $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点 - $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点 - - // 处理父级节点的选中状态 - for (var i = 1, item = $parent_li; i < item.length; i++) { - var flag1 = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"'][data-checked='1']").length; - var flag2 = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']").length; - var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - if (flag1 != flag2) { - // 父级复选框半选 - _this.checkStatus($item_i).noallCheck(); - } else { - // 父级复选框全选 - _this.checkStatus($item_i).check(); - } - } - } - } - }; - - //复选框选中状态初始化设置 - DTree.prototype.initAllCheck = function(){ - var _this = this; - //1.获取所有选中节点 - var $is = _this.obj.find("i[data-checked='1']"); - if($is.length > 0){ - for ( var key = 0; key < $is.length; key++) { - var $i = $($is[key]), - dataPar = $i.attr("data-par"), - dataType = $i.attr("data-type"), - $li = $i.closest(dataPar), //当前checkbox的上级li节点 - $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点 - $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点 - - // 处理父级节点的选中状态 - for (var i = 1, item = $parent_li; i < item.length; i++) { - var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - // 父级复选框全选 - _this.checkStatus($item_i).check(); - } - } - } - }; - - // 设置复选框选中/未选中/半选 _this.checkStatus($i).check(); _this.checkStatus($i).noCheck(); _this.checkStatus($i).noallCheck(); - DTree.prototype.checkStatus = function($i) { - var _this = this; - return { - check: function(){ - $i.removeClass(_this.usefontStyle.checkbox.out); - $i.removeClass(_this.usefontStyle.checkbox.noall); - $i.addClass(_this.usefontStyle.checkbox.on); - $i.addClass(_this.style.chs); - $i.attr("data-checked","1"); - }, - noCheck: function(){ - $i.removeClass(_this.usefontStyle.checkbox.noall); - $i.removeClass(_this.usefontStyle.checkbox.on); - $i.removeClass(_this.style.chs); - $i.addClass(_this.usefontStyle.checkbox.out); - $i.attr("data-checked","0"); - }, - noallCheck: function(){ - $i.removeClass(_this.usefontStyle.checkbox.out); - $i.removeClass(_this.usefontStyle.checkbox.on); - $i.addClass(_this.usefontStyle.checkbox.noall); - $i.addClass(_this.style.chs); - $i.attr("data-checked","2"); - } - } - }; - - // 设置树的复选框操作值的全部参数,并获取 - DTree.prototype.setAndGetCheckbarNodesParam = function(requestParamFlag) { - var _this = this; - //操作前先清空 - _this.checkbarNode = []; - // 选择所有复选框节点 - if (_this.checkbarData == "change"){ //记录变更数据 - _this.obj.find("i[data-par][dtree-disabled='false']").each(function(){ - var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM); - if ($i.attr("data-checked") != $i.attr("data-initchecked")) { - if(requestParamFlag) { - _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i))); - } else { - _this.checkbarNode.push(_this.getCheckbarNodeParam($div, $i)); - } - } - }); - } else if (_this.checkbarData == "all"){ //记录全部数据 - _this.obj.find("i[data-par][data-checked][dtree-disabled='false']").each(function(){ - var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM); - if(requestParamFlag) { - _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i))); - } else { - _this.checkbarNode.push(_this.getCheckbarNodeParam($div, $i)); - } - }); - } else if (_this.checkbarData == "choose"){ //记录选中数据 - _this.obj.find("i[data-par][data-checked='1'][dtree-disabled='false']").each(function(){ - var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM); - if(requestParamFlag) { - _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i))); - } else { - _this.checkbarNode.push(_this.getCheckbarNodeParam($div, $i)); - } - }); - } else if (_this.checkbarData == "halfChoose"){ //记录选中和半选数据 - _this.obj.find("i[data-par][data-checked='1'][dtree-disabled='false']").each(function(){ - var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM); - if(requestParamFlag) { - _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i))); - } else { - _this.checkbarNode.push(_this.getCheckbarNodeParam($div, $i)); - } - }); - _this.obj.find("i[data-par][data-checked='2'][dtree-disabled='false']").each(function(){ - var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM); - if(requestParamFlag) { - _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i))); - } else { - _this.checkbarNode.push(_this.getCheckbarNodeParam($div, $i)); - } - }); - } - return _this.checkbarNode; - }; - - // 获取树的复选框操作值的全部参数 - DTree.prototype.getCheckbarNodesParam = function() { - var _this = this; - return _this.setAndGetCheckbarNodesParam(true); - }; - - // 获取树的一个复选框的参数 - DTree.prototype.getCheckbarNodeParam = function($div, $i){ - var _this = this; - var temp_node = {}; - temp_node.nodeId = $div.attr("data-id"); - temp_node.parentId = _this.getNodeDom($div).parentLi().attr("data-pid"); - temp_node.context = (typeof _this.formatter.title === 'function') ? _this.getNodeDom($div).cite().attr("data-title") : _this.getNodeDom($div).cite().text(); - temp_node.leaf = _this.getNodeDom($div).cite().attr("data-leaf") == "leaf" ? true : false; - temp_node.level = _this.getNodeDom($div).parentLi().attr("data-index"); - temp_node.spread = _this.getNodeDom($div).fnode().attr("data-spread") == "open" ? true : false; - - var basicData = $div.attr("data-basic"); - if(basicData) { - basicData = JSON.parse(event.unescape(basicData)); - } - temp_node.basicData = basicData; - var recordData = $div.attr("data-record"); - if(recordData) { - recordData = JSON.parse(event.unescape(recordData)); - } - temp_node.recordData = recordData; - - temp_node.dataType = $i.attr("data-type"); - temp_node.checked = $i.attr("data-checked"); - temp_node.initchecked = $i.attr("data-initchecked"); - return temp_node; - }; - - // 获取基于返回参数的树的复选框参数 - DTree.prototype.getCheckbarJsonArrParam = function(){ - var _this = this; - var checkbarJsonArr = { - nodeId: [], //节点ID - parentId: [], //父节点ID - context: [], //节点内容 - leaf: [], //是否叶子节点 - level: [], //层级 - spread: [], //节点展开状态 - dataType: [], //节点标记 - checked: [], //节点复选框选中状态 - initchecked: [], //节点复选框初始状态 - basicData: [], //用户自定义的记录节点数据 - recordData: [], //当前data数据(排除basicData和children字段) - }; - // 获取全部复选框选中节点 - var params = _this.setAndGetCheckbarNodesParam(false); - if(params && params.length > 0) { - for(var i=0; i 0) { _this.checkStatus($i).check(); } - } - - //取消全部复选框选中 - DTree.prototype.cancelCheckedNode = function(nodeId){ - var _this = this; - var $i = _this.obj.find("i[data-par][data-checked!='0']"); - if($i.length > 0) { _this.checkStatus($i).noCheck(); } - } - - //反选复选框 - DTree.prototype.invertCheckedNode = function(nodeId){ - var _this = this; - if(_this.obj.find("i[data-par]").length > 0) { - var b = false; - _this.obj.find("i[data-par]").each(function(){ - var $i = $(this); - if($i.attr("data-checked") == '2'){ - b = true; - }else if($i.attr("data-checked") == '0') { - _this.checkStatus($i).check(); - }else if($i.attr("data-checked") == '1') { - _this.checkStatus($i).noCheck(); - } - }); - - if(b) { - _this.initNoAllCheck(); - } else { - _this.initAllCheck(); - } - } - } - - //删除选中节点 - DTree.prototype.removeCheckedNode = function(nodeId){ - var _this = this; - var len = _this.obj.find("i[data-par][data-checked='1']").length; - if(len == 0){ - layer.msg("请至少选中一个节点",{icon:2}); - }else{ - //操作前先清空 - _this.checkbarNode = []; - // 选择所有复选框节点 - var i_node = {}; - _this.obj.find("i[data-par][data-checked='1']").each(function(){ - var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM); - - _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i))); - }); - - layer.confirm('确定要删除选中节点?', {icon: 3, title:'删除选中节点'}, function(index1){ - var flag = _this.menubarFun.remove(_this.checkbarNode); - if(flag){ - _this.obj.find("i[data-par][data-checked='1']").closest("."+LI_DIV_ITEM).next("ul").remove(); - _this.obj.find("i[data-par][data-checked='1']").closest("."+LI_DIV_ITEM).remove(); - _this.checkbarNode=[]; - } - - layer.close(index1); - }); - } - } - - /******************** 工具栏及菜单栏区域 ********************/ - // 初始化菜单栏和工具栏的div - DTree.prototype.initTreePlus = function(){ - var _this = this; - // 初始化菜单栏和工具栏的div - _this.obj.prevAll('div#dtree_menubar_'+_this.obj[0].id).remove(); - _this.toolbarMenu = {}; - if(_this.menubar && _this.menubarTips.group && _this.menubarTips.group.length > 0) _this.obj.before("
                          "); - if(_this.toolbar){ - if(_this.toolbarWay == "contextmenu") { - _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).remove(); - _this.obj.before("
                          "); - } - } - - }; - - // 开启工具栏和菜单栏 - DTree.prototype.openTreePlus = function(){ - var _this = this; - // 先对工具栏做处理,因为菜单栏可能会与工具栏产生关联。 - var ggMenu = []; - if(_this.toolbar) _this.getToolbarDom(); - - if(_this.menubar) { - var menubarTips = _this.menubarTips, - mtbar = menubarTips.toolbar, - group = menubarTips.group, - freedom = menubarTips.freedom; - if(mtbar && mtbar.length > 0){ - // 菜单栏吸附工具栏上 - for(var i=0; i 0){ - // 菜单栏吸附在上方的按钮组div中 - for(var i=0; i"; - break; - case defaultMenu.moveUp: - gg = ""; - break; - case defaultMenu.refresh: - gg = ""; - break; - case defaultMenu.checkAll: - gg = (_this.checkbar && _this.checkbarType != 'only') ? "" : ""; - break; - case defaultMenu.unCheckAll: - gg = (_this.checkbar && _this.checkbarType != 'only') ? "" : ""; - break; - case defaultMenu.invertAll: - gg = (_this.checkbar && _this.checkbarType != 'only') ? "" : ""; - break; - case defaultMenu.remove: - gg = (_this.checkbar) ? "" : ""; - break; - case defaultMenu.searchNode: - gg = ""; - break; - } - return gg; - }; - - // 获取扩展菜单栏 - DTree.prototype.getExtMenubarDom = function(menu){ - var _this = this; - return ""; - }; - - // 获取依附在工具栏的菜单栏 - DTree.prototype.getMenubarToolDom = function(menu){ - var _this = this; - var rootId = _this.obj[0].id; - switch (menu) { - case defaultMenu.moveDown: - _this.toolbarMenu[defaultMenu.moveDown] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.moveDown, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.movedown, "展开全部"); - break; - case defaultMenu.moveUp: - _this.toolbarMenu[defaultMenu.moveUp] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.moveUp, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.moveup, "收缩全部"); - break; - case defaultMenu.refresh: - _this.toolbarMenu[defaultMenu.refresh] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.refresh, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.refresh, "刷新"); - break; - case defaultMenu.checkAll: - if(_this.checkbar && _this.checkbarType != 'only') - _this.toolbarMenu[defaultMenu.checkAll] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.checkAll, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.checkAll, "全选节点"); - break; - case defaultMenu.unCheckAll: - if(_this.checkbar && _this.checkbarType != 'only') - _this.toolbarMenu[defaultMenu.unCheckAll] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.unCheckAll, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.unCheckAll, "全不选节点"); - break; - case defaultMenu.invertAll: - if(_this.checkbar && _this.checkbarType != 'only') - _this.toolbarMenu[defaultMenu.invertAll] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.invertAll, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.invertAll, "反选节点"); - break; - case defaultMenu.remove: - if(_this.checkbar) - _this.toolbarMenu[defaultMenu.remove] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.remove, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.remove, "删除选中"); - break; - case defaultMenu.searchNode: - _this.toolbarMenu[defaultMenu.searchNode] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.searchNode, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.searchNode, "查询"); - break; - } - }; - - // 获取依附在工具栏的扩展菜单栏 - DTree.prototype.getExtMenubarToolDom = function(menu){ - var _this = this; - _this.toolbarMenu[menu.menubarId] = _this.setToolbarDom().setMenuToolbarOption(menu.menubarId, menu.title, _this.usefontStyle.toolbar.menubarExt+" "+menu.icon, ""); - }; - - // menubar内置方法 - DTree.prototype.menubarMethod = function(){ - var _this = this; - return { - openAllNode: function(obj){ // 展开所有节点 - var $ulNode = obj || _this.obj.children("li").children("ul"); - // 遍历所有ul子节点 - for (var i = 0; i < $ulNode.length; i++) { - // 获取当前节点的信息 - var $ul = $($ulNode[i]), - $div = $ul.prev("div"), - $i_spread = _this.getNodeDom($div).fnode(), - $i_node = _this.getNodeDom($div).snode(), - $cite = _this.getNodeDom($div).cite(), - spread = $i_spread.attr("data-spread"), - leaf = $cite.attr("data-leaf"); - - if (leaf == "leaf") { continue; } // 说明是叶子了,则继续循环下一个 - - if (spread == "open") { - // 说明该节点已经展开了,则进行子节点循环 - } else { - if (_this.type=="load") { //是否全量加载 - if (_this.cache) { //是否开启缓存 - if ($ul.html()) { - $ul.addClass(NAV_SHOW); - } else { //加载节点 - _this.getChild($div); - } - }else { //每次取新的数据 - $ul.html(""); - _this.getChild($div); - } - } else { // 全量加载 - $ul.addClass(NAV_SHOW); - } - _this.operateIcon($i_spread, $i_node).open(); - - } - var $childUl = $ul.children("li").children("ul"); - _this.menubarMethod().openAllNode($childUl); - } - }, - closeAllNode: function(){ //收缩所有节点 - _this.obj.find("."+LI_NAV_CHILD).each(function(){ - // 获取当前节点的信息 - var $ul = $(this), - $div = $ul.prev("div"), - $i_spread = _this.getNodeDom($div).fnode(), - $i_node = _this.getNodeDom($div).snode(), - $cite = _this.getNodeDom($div).cite(), - spread = $i_spread.attr("data-spread"), - leaf = $cite.attr("data-leaf"); - - $ul.removeClass(NAV_SHOW); - _this.operateIcon($i_spread, $i_node).close(); - }); - }, - refreshTree: function(){// 刷新树 - _this.refreshTree(); - }, - checkAll: function(){ // 全选节点 - _this.checkAllNode(); - }, - unCheckAll: function(){ // 全不选节点 - _this.cancelCheckedNode(); - }, - invertAll: function(){ // 反选节点 - _this.invertCheckedNode(); - }, - remove: function(){// 删除选中节点 - _this.removeCheckedNode(); - }, - searchNode: function(){//模糊查询该值,展开该值节点 - layer.prompt({ - formType: 0, - value: "", - title: '查询节点' - }, function(value, index1, elem){ - if (value) { - var flag = _this.searchNode(value); - if (!flag) { - layer.msg("该名称节点不存在!", {icon:5}); - } - } else { - layer.msg("未指定查询节点名称", {icon:5}); - } - layer.close(index1); - }); - }, - extMethod: function(menuId, $div, flag){ - if(_this.menubar && _this.menubarTips.group && _this.menubarTips.group.length > 0 && flag == "group"){ - for(var i=0; i<_this.menubarTips.group.length; i++){ - var ext = _this.menubarTips.group[i]; - if (menuId == ext.menubarId){ - ext.handler(_this.getRequestParam(_this.getNodeParam($div), $div)); - break; - } - } - } - if(_this.menubar && _this.menubarTips.toolbar && _this.menubarTips.toolbar.length > 0 && flag == "toolbar"){ - for(var i=0; i<_this.menubarTips.toolbar.length; i++){ - var ext = _this.menubarTips.toolbar[i]; - if (menuId == ext.menubarId){ - ext.handler(_this.getRequestParam(_this.getNodeParam($div), $div)); - break; - } - } - } - if(_this.menubar && _this.menubarTips.freedom && _this.menubarTips.freedom.length > 0 && flag == "freedom"){ - for(var i=0; i<_this.menubarTips.freedom.length; i++){ - var ext = _this.menubarTips.freedom[i]; - if (menuId == ext.menubarId){ - ext.handler(_this.getRequestParam(_this.getNodeParam($div), $div)); - break; - } - } - } - } - }; - }; - - // menubar监听方法 - DTree.prototype.menubarListener = function(menuId, flag){ - var _this = this; - var $div = _this.getNodeDom().nowDiv(); - switch (menuId) { - case defaultMenu.moveDown: // 展开全部节点 - _this.menubarMethod().openAllNode(); - break; - case defaultMenu.moveUp: // 收缩全部节点 - _this.menubarMethod().closeAllNode(); - break; - case defaultMenu.refresh: - _this.menubarMethod().refreshTree(); // 刷新树 - break; - case defaultMenu.checkAll: - _this.menubarMethod().checkAll(); - break; - case defaultMenu.unCheckAll: - _this.menubarMethod().unCheckAll(); - break; - case defaultMenu.invertAll: - _this.menubarMethod().invertAll(); - break; - case defaultMenu.remove: - _this.menubarMethod().remove(); - break; - case defaultMenu.searchNode: - _this.menubarMethod().searchNode(); - break; - default: - _this.menubarMethod().extMethod(menuId, $div, flag); - break; - } - }; - - //模糊查询该值,展开该值节点 - DTree.prototype.searchNode = function(value){ - var _this = this; - var b = false; - var $lis = []; - _this.obj.find("cite[data-leaf]").each(function(){ - var $nthis = $(this); - var html = $nthis.html(); - if(html.indexOf(value) > -1){ - if($nthis.attr("data-leaf") == "leaf") { - // 叶子节点提供包含父节点的所有信息 - var title = ""; - $nthis.parents("li").each(function(){ - title = "-" + $(this).find("cite[data-leaf]").html() + title; - }); - title = title.substring(1, title.length); - $nthis.attr("title", title); - } - // 保存当前cite所在的li及父li中包含该值,则只保留父的 - var i = 0; - $nthis.parents("li").each(function(){ - var html2 = $(this).find("cite[data-leaf]").html(); - if(html2.indexOf(value) > -1){ - i++; - } - if(i >= 2){ - return true; - } - }); - if (i < 2){ - $lis.push($nthis.closest("li").prop("outerHTML")); - } - } - }); - if($lis.length > 0) { - b = true; - // 1.将树节点清空 - _this.obj.html(""); - // 2.遍历所有cite节点,展开当前cite节点 - for(var i=0; i<$lis.length; i++){ - _this.obj.append($lis[i]); - } - } - return b; - }; - - - /******************** 工具栏区域 ********************/ - // 获取工具栏 - DTree.prototype.getToolbarDom = function(){ - var _this = this; - var toolbarShow = _this.toolbarShow, - toolbarExt = _this.toolbarExt, - toolbarWay = _this.toolbarWay; - - if(toolbarShow.length > 0){ - for(var i=0; i 0){ - for(var i=0; i "+other +title+""; - } else if(toolbarWay == "fixed" || toolbarWay == "follow") { - return ""; - } - }, - setMenuToolbarOption: function(menubarId, title, classId, other){ - var rootId = _this.obj[0].id; - if(toolbarWay == "contextmenu") { - return "
                           "+other +title+"
                          "; - } else if(toolbarWay == "fixed" || toolbarWay == "follow") { - return ""; - } - }, - setToolbarPlace: function(toolbarMenu){ - if(toolbarWay == "contextmenu") { - if(toolbarMenu){ - _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).find('div.layui-nav-item>dl.layui-nav-child').html(""); - for(var key in toolbarMenu){ - _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).find('div.layui-nav-item>dl.layui-nav-child').append(toolbarMenu[key]); - } - } - } else if(toolbarWay == "fixed" || toolbarWay == "follow") { - _this.obj.find("cite[data-leaf][dtree-disabled='false']").each(function(){ - var $cite = $(this); - _this.dynamicToolbarDom($cite); - }); - } - } - } - }; - - // 在节点后动态绑定fixed和follow条件的工具栏 - DTree.prototype.dynamicToolbarDom = function($cite){ - var _this = this; - var toolbarWay = _this.toolbarWay; - if($cite.next("em."+TOOLBAR_TOOL_EM).length == 0) { - var $div = $cite.parent("div"); - var param = _this.getRequestParam(_this.getTempNodeParam($div)); - var toolbarMenus = _this.toolbarFun.loadToolbarBefore(event.cloneObj(_this.toolbarMenu), param, $div); - var hideCls = (toolbarWay == "follow") ? NAV_HIDE : ""; - var em = [""]; - if(toolbarMenus){ - for(var key in toolbarMenus){ - em.push(toolbarMenus[key]); - } - } - em.push(""); - $cite.after(em.join('')); - } - } - - // 隐藏toolbar - DTree.prototype.toolbarHide = function() { - var _this = this; - if(_this.toolbar && _this.toolbarWay == "contextmenu") { - var $toolBarDiv = _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id); - $toolBarDiv.find(".layui-nav-child").removeClass('layui-anim-fadein layui-show'); - } - } - - // toolbar内置方法 - DTree.prototype.toolbarMethod = function(){ - var _this = this; - return { - pulldown: function(obj){ // 展开当前点击节点的下面全部节点 - if(!obj) return; - var $ulNode = obj; - // 遍历所有ul子节点 - for (var i = 0; i < $ulNode.length; i++) { - // 获取当前节点的信息 - var $ul = $($ulNode[i]), - $div = $ul.prev("div"), - $i_spread = _this.getNodeDom($div).fnode(), - $i_node = _this.getNodeDom($div).snode(), - $cite = _this.getNodeDom($div).cite(), - spread = $i_spread.attr("data-spread"), - leaf = $cite.attr("data-leaf"); - - if (leaf == "leaf") { continue; } // 说明是叶子了,则继续循环下一个 - - if (spread == "open") { - // 说明该节点已经展开了,则进行子节点循环 - } else { - if (_this.type=="load") { //是否全量加载 - if (_this.cache) { //是否开启缓存 - if ($ul.html()) { - $ul.addClass(NAV_SHOW); - } else { //加载节点 - _this.getChild($div); - } - }else { //每次取新的数据 - $ul.html(""); - _this.getChild($div); - } - } else { // 全量加载 - $ul.addClass(NAV_SHOW); - } - _this.operateIcon($i_spread, $i_node).open(); - - } - var $childUl = $ul.children("li").children("ul"); - _this.toolbarMethod().pulldown($childUl); - } - }, - pullup: function($li){ // 收缩当前点击节点的下面全部节点 - $li.find("."+LI_NAV_CHILD).each(function(){ - // 获取当前节点的信息 - var $ul = $(this), - $div = $ul.prev("div"), - $i_spread = _this.getNodeDom($div).fnode(), - $i_node = _this.getNodeDom($div).snode(), - $cite = _this.getNodeDom($div).cite(), - spread = $i_spread.attr("data-spread"), - leaf = $cite.attr("data-leaf"); - - $ul.removeClass(NAV_SHOW); - _this.operateIcon($i_spread, $i_node).close(); - }); - } - } - }; - - // toolbar监听方法 - DTree.prototype.toolbarListener = function(tool, $div) { - var _this = this; - var $cite = $div.children("cite[data-leaf]"), - $ul = $div.next("ul"), - $p_li = $div.parent("li[data-index]"), //当前选中节点的顶级li节点 - $p_ul = $p_li.parent("ul"), //当前选中节点的顶级li节点的父级ul - $p_div = $p_ul.prev("div"), //当前选中节点的顶级li节点的父级ul的前一个div - title = $cite.html(); - switch (tool) { - case defaultTool.pulldown: - _this.toolbarMethod().pulldown($ul); - break; - case defaultTool.pullup: - _this.toolbarMethod().pullup($p_li); - break; - case defaultTool.addTool: - var content = _this.loadToolBar(title, defaultTool.addTool); - - layer.open({ - title: "新增"+_this.toolbarStyle.title, - type: 1, - area: _this.toolbarStyle.area, - content: content, - success: function(layero, index){ - form.render(); - form.on("submit(dtree_addNode_form)",function(data){ - var data = data.field; - var parentId = $div.attr("data-id"), - id = $div.attr("data-id")+"_node_"+$ul[0].childNodes.length, - leaf = true, - checked = "0", - level = parseInt($p_li.attr("data-index"))+1; - - // 创建子节点的DOM,添加子节点 - var checkArr = []; - if (_this.checkArrLen > 0) { - for (var i = 0; i < _this.checkArrLen; i++) { - checkArr.push({"type":i,"checked":"0"}); - } - } - - $ul.append(_this.getLiItemDom(id, parentId, data.addNodeName, data.addNodeName, true, "", "", checkArr, level, false, false, false, "", "", "item")); - // 先将li节点隐藏 - $ul.find("li[data-id='"+id+"']").hide(); - // 重新赋值 - var $addDiv = $ul.find("div[data-id='"+id+"']"); - node = _this.getNodeParam($addDiv); - - //获取组装后的requestNode,组合参数 - var requestNode = _this.getRequestParam(node); - requestNode = $.extend(requestNode, data); - - _this.temp = [id, $ul, $div, level]; - // 用户自定义想做的事情 - _this.toolbarFun.addTreeNode(requestNode, $div); - - layer.close(index); - return false; - }); - } - }); - break; - case defaultTool.editTool: - var content = _this.loadToolBar(title, defaultTool.editTool); - - layer.open({ - title: "编辑"+_this.toolbarStyle.title, - type: 1, - area: _this.toolbarStyle.area, - content: content, - success: function(layero, index){ - _this.toolbarFun.editTreeLoad(_this.getRequestParam(_this.getNodeParam($div))); - form.render(); - form.on("submit(dtree_editNode_form)",function(data){ - var data = data.field; - $cite.html(data.editNodeName); - node = _this.getNodeParam($div); - var requestNode = _this.getRequestParam(node); - requestNode = $.extend(requestNode, data); - _this.temp = [$cite, $div, title, $p_div]; - _this.toolbarFun.editTreeNode(requestNode, $div); - - layer.close(index); - }); - } - }); - break; - case defaultTool.delTool: - layer.confirm('确定要删除该'+_this.toolbarStyle.title+'?', {icon: 3, title:'删除'+_this.toolbarStyle.title}, function(index){ - var node = _this.getNodeParam($div); - _this.temp = [$p_li, $p_div]; - _this.toolbarFun.delTreeNode(_this.getRequestParam(_this.getNodeParam($div)), $div); - - layer.close(index); - }); - break; - default: - if(_this.toolbarExt.length > 0){ - for(var i=0; i<_this.toolbarExt.length; i++){ - var ext = _this.toolbarExt[i]; - if (tool == ext.toolbarId){ - ext.handler(_this.getRequestParam(_this.getNodeParam($div)), $div); - break; - } - } - } - break; - } - } - - - // 加载toolBar中的内容 - DTree.prototype.loadToolBar = function(title, name){ - var _this = this; - var toolbarShow = _this.toolbarShow; - var nodeBarContents = _this.toolbarBtn; - - var html = ""; - switch (name) { - case defaultTool.addTool: - var addNodeBarDef = [{"label": "当前选中", "name": "nodeTitle", "type": "text", "value": title, "defElem": "nowChoose", "readonly": true}, - {"label": "新增"+_this.toolbarStyle.title, "name": "addNodeName", "type": "text", "value": "", "defElem": "nowChange", "verify": "required"}, - {"type": "submit", "value": "确认添加", "defElem": "btn", "filter": "dtree_addNode_form"}]; - - //2. 用户自定义的节点内容 - var addNodeBar = ['
                          ']; - - if(nodeBarContents != null && nodeBarContents.length > 0){ - if(nodeBarContents[0] != null && nodeBarContents[0] != undefined && nodeBarContents[0].length > 0){ - var addNodeBarContents = nodeBarContents[0]; - // 1. 检查是否包含了now、newly、btn这三个默认项,将其他元素依次排列,将特殊元素至于栈顶 - for(var i=0; i', '
                          ']; - // 3.遍历生成按钮 - for(var j=0; j
                          '); - addNodeBar.push(addBtn.join('')); - addNodeBar.push('
                          '); - html = addNodeBar.join(''); - break; - - case defaultTool.editTool: - var editNodeBarDef = [{"label": "当前选中", "name": "nodeTitle", "type": "text", "value": title, "defElem": "nowChoose", "readonly": true}, - {"label": "编辑"+_this.toolbarStyle.title, "name": "editNodeName", "type": "text", "value": "", "defElem": "nowChange", "verify": "required"}, - {"type": "submit", "value": "确认编辑", "defElem": "btn", "filter": "dtree_editNode_form"}]; - - var editNodeBar = ['
                          ']; - //2. 用户自定义的节点内容 - if(nodeBarContents != null && nodeBarContents.length > 0){ - - if(nodeBarContents[1] != null && nodeBarContents[1] != undefined && nodeBarContents[1].length > 0){ - var editNodeBarContents = nodeBarContents[1]; - // 1. 检查是否包含了now、newly、btn这三个默认项,将其他元素依次排列,将特殊元素至于栈顶 - for(var i=0; i', '
                          ']; - // 3.遍历生成按钮 - for(var j=0; j
                          '); - editNodeBar.push(editBtn.join('')); - editNodeBar.push('
                          '); - html = editNodeBar.join(''); - break; - } - return html; - }; - - // 获取toolbar详细的标签信息 - DTree.prototype.loadToolBarDetail = function(nodeBarContents){ - var _this = this; - var readonly = (typeof (nodeBarContents.readonly) === "boolean") ? nodeBarContents.readonly : false; - var disabled = (typeof (nodeBarContents.disabled) === "boolean") ? nodeBarContents.disabled : false; - var id = nodeBarContents.id ? nodeBarContents.id : ""; - var name = nodeBarContents.name ? nodeBarContents.name : ""; - var val = nodeBarContents.value ? nodeBarContents.value : ""; - var verify = nodeBarContents.verify ? nodeBarContents.verify : ""; - var placeholder = nodeBarContents.placeholder ? nodeBarContents.placeholder : val; - return{ - text: function(){ - return ['
                          ', - '', - '
                          ', - '', - '
                          ', - '
                          '].join(''); - }, - textarea: function(){ - return ['
                          ', - '', - '
                          ', - '', - '
                          ', - '
                          '].join(''); - }, - hidden: function(){ - return [''].join(''); - }, - select: function(){ - var optionsData = (typeof nodeBarContents.optionsData === 'object') ? nodeBarContents.optionsData : nodeBarContents.optionsData(); - var options = ""; - for(var key in optionsData){ - if(val == optionsData[key]){ - options += ""; - } else { - options += ""; - } - } - return ['
                          ', - '', - '
                          ', - '', '
                          ', '
                          '].join(''); - }, - submit: function(){ - var filter = nodeBarContents.filter; - return [''].join(''); - }, - button: function(){ - return [''].join(''); - }, - reset: function(){ - return [''].join(''); - } - } - }; - - // 新增节点后改变节点内容 - DTree.prototype.changeTreeNodeAdd = function(returnID){ - var _this = this; - var temp = _this.temp; - var id = temp[0], $ul = temp[1], $div = temp[2], level = temp[3]; - var flag = false; - if(returnID){ - var $thisDiv = _this.obj.find("[data-id='"+id+"']"); - if(typeof returnID === "object"){ - // 如果是JSON格式数据,则将当前DIV删除,重新建造DIV - $thisDiv.remove(); - var parseData = _this.parseData(returnID); - - if(parseData.treeId()){ - $ul.append(_this.getLiItemDom(parseData.treeId(), parseData.parentId(), parseData.title(), parseData.fmtTitle(), parseData.last(0), parseData.ficonClass(), parseData.iconClass(), parseData.checkArr(), level, parseData.spread(), parseData.disabled(), parseData.hide(), parseData.basicData(), parseData.recordData(), "item")); - - // 建造完毕后,选中该DIV - $thisDiv = $ul.find("div[data-id='"+parseData.treeId()+"']"); - _this.setNodeParam($thisDiv) - } else { - layer.msg("添加失败,节点ID为undefined!",{icon:5}); - // 将li节点删除 - $ul.find("li[data-id='"+id+"']").remove(); - // 重新赋值 - _this.setNodeParam($div); - // 临时变量制空 - _this.temp = []; - return ; - } - }else if(returnID == 'refresh'){ - // 如果是设置为refresh参数,则向后台发送请求,获取新增节点下的真实参数,局部刷新树。 - flag = true; - } else if(typeof returnID === "string" || typeof returnID === 'number' || returnID == true){ - $thisDiv.attr("data-id", returnID); - // 将li节点展示 - $ul.find("li[data-id='"+returnID+"']").show(); - _this.setNodeParam($thisDiv) - } - - // 判断当前点击的节点是否是最后一级节点,如果是,则需要修改节点的样式 - var $icon_i = $div.find("i[data-spread]"); - if ($icon_i.eq(0).attr("data-spread") == "last") { - _this.operateIcon($icon_i.eq(0), $icon_i.eq(1)).openWithLeaf(); - } else { //如果不是,也要修改节点样式 - _this.operateIcon($icon_i.eq(0), $icon_i.eq(1)).open(); - } - $ul.addClass(NAV_SHOW); //展开UL - _this.accordionUL($ul); - if(flag) { - _this.getChild($div); - } else { - // _this.showLine(); - _this.showLine($ul.find("li")); - // 这种情况下需要在新增节点后对节点新增工具栏 - if(_this.toolbar && _this.toolbarWay != 'contextmenu') { - _this.dynamicToolbarDom($thisDiv.find("cite[data-leaf]")); - } - } - - } else { - // 将li节点删除 - $ul.find("li[data-id='"+id+"']").remove(); - // 重新赋值 - _this.setNodeParam($div); - } - - _this.temp = []; // 临时变量制空 - - }; - - // 编辑页打开后显示编辑页内容 - DTree.prototype.changeTreeNodeDone = function(param){ - var _this = this; - form.val('dtree_editNode_form', param); - form.render(); - }; - - // 修改节点后改变节点内容 - DTree.prototype.changeTreeNodeEdit = function(returnID){ - var _this = this; - var temp = _this.temp; - var $cite = temp[0], $div = temp[1], title = temp[2], $p_div = temp[3]; - var flag = false; - if(returnID){ - if(typeof returnID === "object"){ - var parseData = _this.parseData(data); - - if(parseData.treeId()){ - var replaceDom = _this.replaceDom($div, parseData.treeId(), parseData.last(0), parseData.spread(), parseData.disabled(), parseData.hide()); - replaceDom.node(parseData.iconClass()); - replaceDom.checkbox(parseData.checkArr()); - replaceDom.text(parseData.title()); - replaceDom.ul(); - replaceDom.basicData(parseData.basicData()); - replaceDom.recordData(parseData.recordData()); - _this.setNodeParam($div); - } else { - layer.msg("编辑失败,节点ID为undefined!",{icon:5}); - // 重新赋值 - _this.setNodeParam($div); - } - } - } else { - $cite.html(title); - _this.getNodeParam($div); - } - - _this.temp = []; // 临时变量制空 - }; - - // 删除节点后改变节点内容 - DTree.prototype.changeTreeNodeDel = function(flag){ - var _this = this; - var temp = _this.temp; - var $p_li = temp[0], - $p_ul = $p_li.parent("ul"), - $p_div = temp[1]; - - if(flag){ - $p_li.remove(); - _this.showLine($p_ul.find("li")); - // 判断父级ul中是否还存在li,如果不存在,则需要修改节点的样式 - if($p_ul.children("li").length == 0){ - var $icon_i = $p_div.find("i[data-spread]"); - _this.operateIcon($icon_i.eq(0), $icon_i.eq(1)).closeWithLeaf(); - } - _this.initNodeParam(); - } - - _this.temp = []; // 临时变量制空 - }; - - /******************** iframe区域 ********************/ - // 加载iframe - DTree.prototype.loadIframe = function($div, iframeParam) { - var _this = this; - var $cite = _this.getNodeDom($div).cite(); - if (!_this.useIframe) { // 启用iframe - return false; - } - var iframeElem = _this.iframeElem, - iframeUrl = _this.iframeUrl, - iframeLoad = _this.iframeLoad; - - var flag = iframeLoad == "leaf" ? (($cite.attr("data-leaf") == "leaf") ? true : false) : true; - - if (flag) { - if ($(iframeElem).length > 0) { //iframe存在 - if (!iframeUrl) { - layer.msg("数据请求异常,iframeUrl参数未指定", {icon:5}); - return false; - } - var param = AjaxHelper.serialize(iframeParam); - if(iframeUrl.indexOf("?")> -1){ - param = "&"+param.substring(1, param.length); - } - var url = iframeUrl + param; - $(iframeElem).attr("src", url); - } else { - layer.msg("iframe绑定异常,请确认页面中是否有iframe页对应的容器", {icon:5}); - return false; - } - } - return flag; - }; - - // 获取传递出去的参数,根据iframe.iframeDefaultRequest、iframe.iframeRequest和node拼出发出请求的参数 - DTree.prototype.getIframeRequestParam = function(nodes){ - var _this = this; - var request = _this.iframeRequest, - defaultRequestNames = _this.iframeDefaultRequest, - node = nodes || _this.node, - requestParam = {}; - - // 先拼用户自定义的,在拼树生成的,这样的话用户可以自定义当树未生成时的节点的初始值 - for ( var key in request) { - requestParam[key] = request[key]; - } - for ( var key in defaultRequestNames) { - var paramName = defaultRequestNames[key]; - var paramValue = node[key]; - if(typeof paramValue === "boolean"){ - requestParam[paramName] = paramValue; - }else { - if(paramValue){ - requestParam[paramName] = paramValue; - } - } - } - - // 解决传递中文的乱码问题 - var reg = /[\u4E00-\u9FA5\uF900-\uFA2D]/; //正则匹配中文 - for(var key in requestParam){ - if(reg.test(requestParam[key])) { - var str = requestParam[key]; - requestParam[key] = encodeURI(encodeURI(str)); - } - } - - return requestParam; - }; - - /******************** 数据回调区域 ********************/ - // 根据具体的id获取基于当前id的div以及对应的其他dom元素 - DTree.prototype.getNodeDom = function(id){ - var _this = this; - // 获取当前div,如果id就是一个dom,则就是这个,如果不是则进行选择。如果选不中则为null - var $div = (typeof id === 'object') ? id : (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']").length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']"); - return { - div: function(){ // 获取当前div - return $div; - }, - fnode: function(){ // 获取一级图标元素 - return ($div == null) ? null : $div.find("i[data-spread]").eq(0); - }, - snode: function(){ // 获取二级图标元素 - return ($div == null) ? null : $div.find("i[data-spread]").eq(1); - }, - checkbox: function(){ // 获取复选框元素 - return ($div == null) ? null : $div.find("i[data-par]"); - }, - cite: function(){ // 获取cite元素 - return ($div == null) ? null : $div.find("cite[data-leaf]"); - }, - nextUl: function(){ // 获取相邻的ul元素 - return ($div == null) ? null : $div.next("ul"); - }, - parentLi: function(){ // 获取父级li元素 - return ($div == null) ? null : $div.parent("li"); - }, - parentUl: function(){ // 获取基于当前$div的上级$ul - return ($div == null) ? null : $div.parent("li").parent("ul"); - }, - parentDiv: function(){ // 获取基于当前$div的上级$div - return ($div == null) ? null : $div.parent("li").parent("ul").prev("div"); - }, - nowDiv: function(){ // 获取当前选中节点,没有则返回null - return (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS).length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS); - }, - nowOrRootDiv: function(){ // 获取当前选中节点,没有则返回根节点下的第一个div - return (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS).length == 0) ? _this.obj.children("li").eq(0).children("div").eq(0) : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS); - }, - nowOrRootUl: function(){ // 获取当前选中节点下一个UL 或根节点。为了将新节点放入ul下 - return (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS).length == 0) ? _this.obj : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS).next("ul"); - } - } - }; - - // 获取当前选中节点下一个UL 或根节点。为了将新节点放入ul下 - DTree.prototype.getNowNodeUl = function() { - var _this = this; - return _this.getNodeDom().nowOrRootUl(); - }; - - // 获取当前选中节点 或第一个根节点。 - DTree.prototype.getNowNode = function() { - var _this = this; - return _this.getNodeDom().nowOrRootDiv(); - }; - - // 获取当前选中节点 无则返回null。 - DTree.prototype.getNowNodeOrNull = function() { - var _this = this; - return _this.getNodeDom().nowDiv(); - }; - - // 获取指定节点。 - DTree.prototype.getNode = function(id) { - var _this = this; - return _this.getNodeDom(id).div(); - }; - - // 设置当前选中节点的全部参数 - DTree.prototype.setNodeParam = function($div) { - var _this = this; - _this.node.nodeId = $div.attr("data-id"); - _this.node.parentId = _this.getNodeDom($div).parentLi().attr("data-pid"); - _this.node.context = (typeof _this.formatter.title === 'function') ? _this.getNodeDom($div).cite().attr("data-title") : _this.getNodeDom($div).cite().text(); - _this.node.leaf = _this.getNodeDom($div).cite().attr("data-leaf") == "leaf" ? true : false; - _this.node.level = _this.getNodeDom($div).parentLi().attr("data-index"); - _this.node.spread = _this.getNodeDom($div).fnode().attr("data-spread") == "open" ? true : false; - - var basicData = $div.attr("data-basic"); - if(basicData) { - basicData = JSON.parse(event.unescape(basicData)); - } - _this.node.basicData = basicData; - - var recordData = $div.attr("data-record"); - if(recordData) { - recordData = JSON.parse(event.unescape(recordData)); - } - _this.node.recordData = recordData; - - if (_this.getNodeDom($div).checkbox()) { - var dataTypes = "", checkeds = "", initcheckeds = ""; - _this.getNodeDom($div).checkbox().each(function(){ - dataTypes += $(this).attr("data-type") + ","; - checkeds += $(this).attr("data-checked") + ","; - initcheckeds += $(this).attr("data-initchecked") + ","; - }); - dataTypes = dataTypes.substring(0, dataTypes.length-1); - checkeds = checkeds.substring(0, checkeds.length-1); - initcheckeds = initcheckeds.substring(0, initcheckeds.length-1); - - _this.node.dataType = dataTypes; - _this.node.checked = checkeds; - _this.node.initchecked = initcheckeds; - } - }; - - // 获取当前选中节点的全部参数 - DTree.prototype.getNodeParam = function($div) { - var _this = this; - if ($div) { - _this.setNodeParam($div); - } else { - if(_this.obj.find("div[data-id]").parent().find("."+NAV_THIS).length == 0){ - _this.initNodeParam(); - } - } - return this.node; - }; - - // 获取一个临时的node参数 - DTree.prototype.getTempNodeParam = function($div) { - var _this = this; - var temp_node = {}; - temp_node.nodeId = $div.attr("data-id"); - temp_node.parentId = _this.getNodeDom($div).parentLi().attr("data-pid"); - temp_node.context = (typeof _this.formatter.title === 'function') ? _this.getNodeDom($div).cite().attr("data-title") : _this.getNodeDom($div).cite().text(); - temp_node.leaf = _this.getNodeDom($div).cite().attr("data-leaf") == "leaf" ? true : false; - temp_node.level = _this.getNodeDom($div).parentLi().attr("data-index"); - temp_node.spread = _this.getNodeDom($div).fnode().attr("data-spread") == "open" ? true : false; - - var basicData = $div.attr("data-basic"); - if(basicData) { - basicData = JSON.parse(event.unescape(basicData)); - } - temp_node.basicData = basicData; - var recordData = $div.attr("data-record"); - if(recordData) { - recordData = JSON.parse(event.unescape(recordData)); - } - temp_node.recordData = recordData; - - if (_this.getNodeDom($div).checkbox()) { - var dataTypes = "", checkeds = "", initcheckeds = ""; - _this.getNodeDom($div).checkbox().each(function(){ - dataTypes += $(this).attr("data-type") + ","; - checkeds += $(this).attr("data-checked") + ","; - initcheckeds += $(this).attr("data-initchecked") + ","; - }); - dataTypes = dataTypes.substring(0, dataTypes.length-1); - checkeds = checkeds.substring(0, checkeds.length-1); - initcheckeds = initcheckeds.substring(0, initcheckeds.length-1); - - temp_node.dataType = dataTypes; - temp_node.checked = checkeds; - temp_node.initchecked = initcheckeds; - } - return temp_node; - }; - - // 重置参数 - DTree.prototype.initNodeParam = function(){ - var _this = this; - _this.node.nodeId = ""; - _this.node.parentId = ""; - _this.node.context = ""; - _this.node.leaf = ""; - _this.node.level = ""; - _this.node.spread = ""; - _this.node.dataType = ""; - _this.node.checked = ""; - _this.node.initchecked = ""; - _this.node.basicData = ""; - _this.node.recordData = ""; - - if(_this.select) { - _this.selectResetVal(); - } - }; - - // 获取传递出去的参数,根据defaultRequest、request和node拼出发出请求的参数 - DTree.prototype.getRequestParam = function(nodes){ - var _this = this; - var request = _this.request, - defaultRequestNames = _this.defaultRequest, - node = nodes || _this.node, - requestParam = {}; - - // 先拼用户自定义的,在拼树生成的,这样的话用户可以自定义当树未生成时的节点的初始值 - for ( var key in request) { - requestParam[key] = request[key]; - } - for ( var key in defaultRequestNames) { - var paramName = defaultRequestNames[key]; - var paramValue = node[key]; - if(typeof paramValue === "boolean"){ - requestParam[paramName] = paramValue; - }else { - if(paramValue){ - requestParam[paramName] = paramValue; - } - } - - } - return requestParam; - }; - - // 获取filterParam过滤后的requestParam - DTree.prototype.getFilterRequestParam = function(requestParam){ - var _this = this; - var filterRequest = _this.filterRequest; - return event.cloneObj(requestParam, filterRequest); - }; - - // 获取当前选中值 - DTree.prototype.getNowParam = function(){ - var _this = this; - - return _this.getRequestParam(_this.getNodeParam()); - }; - - // 获取指定节点选中值 - DTree.prototype.getParam = function(id){ - var _this = this; - - // 获取当前div,如果id就是一个dom,则就是这个,如果不是则进行选择。如果选不中则为null - var $div = (typeof id === 'object') ? id : (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']").length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']"); - if($div != null){ return _this.callbackData().node(_this.getTempNodeParam($div)); } else { return {}; } - }; - - // 获取参数的上级节点 - DTree.prototype.getParentParam = function(id){ - var _this = this; - // 获取当前div,如果id就是一个dom,则就是这个,如果不是则进行选择。如果选不中则为null - var $div = (typeof id === 'object') ? id : (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']").length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']"); - if($div != null){ return _this.callbackData().parentNode($div); } else { return {}; } - }; - - // 获取参数的全部上级节点 - DTree.prototype.getAllParentParam = function(id){ - var _this = this; - // 获取当前div,如果id就是一个dom,则就是这个,如果不是则进行选择。如果选不中则为null - var $div = (typeof id === 'object') ? id : (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']").length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']"); - var arr = []; - if($div != null){ - var level = _this.getTempNodeParam($div).level; - for(var i=1; i 0){ - $childDivs.each(function(){ - var $cDiv = $(this); - childNode.push(_this.getRequestParam(_this.getTempNodeParam($cDiv))); - }); - } - return childNode; - }, - parentNode: function($div){ // 获取上级节点值 - var pId = _this.getNodeDom($div).parentLi().attr("data-pid"); - var $pdiv = _this.obj.find("div[data-id='"+pId+"']"); - if($pdiv.length > 0) {return _this.getRequestParam(_this.getTempNodeParam($pdiv));} else {return {};} - - } - } - }; - - /******************** 事件回调区域 ********************/ - // 绑定浏览器事件 - DTree.prototype.bindBrowserEvent = function(){ - var _this = this; - var rootId = _this.obj[0].id; - - // 绑定文件夹展开/收缩的图标的点击事件,点击时给当前节点的div添加选中class - _this.obj.on("click", "i[data-spread]", function(event) { - event.stopPropagation(); - var $i = $(this), - $div = $i.parent("div"), - node = _this.getNodeParam($div); - - _this.toolbarHide(); - _this.navThis($div); - _this.clickSpread($div); // 展开或隐藏节点 - - // 树状态改变后,用户自定义想做的事情 - layui.event.call(this, MOD_NAME, "changeTree("+$(_this.obj)[0].id+")", { - dom: _this.callbackData().dom($i), - param: _this.callbackData().node(node), - show: _this.callbackData().dom($i).attr("data-spread") == "open" ? true : false - }); - }); - - // 绑定所有子节点div的单击事件,点击时触发加载iframe或用户自定义想做的事情 - _this.obj.on("click", "div[dtree-click='"+eventName.itemNodeClick+"'][dtree-disabled='false']", function(event) { - event.stopPropagation(); - var $div = $(this), - $cite = $div.find("cite"), - node = _this.getNodeParam($div); - _this.toolbarHide(); - _this.navThis($div); - - if(_this.select) { - _this.selectVal(node.nodeId); - $("div[dtree-id='" + rootId + "'][dtree-select='"+_this.selectDiv+"']").click(); - } - - if (_this.useIframe) { - var iframeParam = _this.getFilterRequestParam(_this.getIframeRequestParam(node)); - var flag = _this.loadIframe($div, iframeParam); // 加载iframe - if (flag) { - // iframe加载完毕后,用户自定义想做的事情 - _this.iframeFun.iframeDone(iframeParam); - - layui.event.call(this, MOD_NAME, "iframeDone("+$(_this.obj)[0].id+")", { - "iframeParam": iframeParam, - dom: _this.callbackData().dom($div) - }); - } - } else { - // 单击事件执行完毕后,用户自定义想做的事情 - layui.event.call(this, MOD_NAME, "node("+$(_this.obj)[0].id+")", { - param: _this.callbackData().node(node), - childParams: _this.callbackData().childNode($div), - parentParam: _this.callbackData().parentNode($div), - dom: _this.callbackData().dom($div) - }); - } - }); - - // 绑定所有子节点div的双击事件,暴露on给用户自定义 - _this.obj.on("dblclick", "div[dtree-click='"+eventName.itemNodeClick+"'][dtree-disabled='false']", function(event) { - event.stopPropagation(); - var $div = $(this), - $cite = $div.find("cite"), - node = _this.getNodeParam($div); - _this.toolbarHide(); - _this.navThis($div); - - if(_this.select) { - _this.selectVal(node.nodeId); - $("div[dtree-id='" + rootId + "'][dtree-select='"+_this.selectDiv+"']").click(); - } - - // 双击事件执行完毕后,用户自定义想做的事情 - layui.event.call(this, MOD_NAME, "nodedblclick("+$(_this.obj)[0].id+")", { - param: _this.callbackData().node(node), - childParams: _this.callbackData().childNode($div), - parentParam: _this.callbackData().parentNode($div), - dom: _this.callbackData().dom($div) - }); - }); - - if(_this.checkbar) { - // 绑定cheboxbar的节点复选框 - _this.obj.on("click", "i[dtree-click='"+eventName.checkNodeClick+"'][dtree-disabled='false']", function(event) { - _this.toolbarHide(); - var $i = $(this), - $div = $i.closest("div[dtree-click='"+eventName.itemNodeClick+"']"), - node = _this.getNodeParam($div); - // 复选框选中前的回调 - var flag = _this.checkbarFun.chooseBefore($i, _this.getRequestParam(node)); - _this.temp = [$i]; - if(flag){_this.changeCheck();} - - event.stopPropagation(); - }); - } - - if(_this.menubar) { - // 绑定menubar的点击事件 - _this.obj.prevAll('div#dtree_menubar_'+_this.obj[0].id).on("click", "button[d-menu]", function(event) { - event.stopPropagation(); - _this.toolbarHide(); - _this.menubarListener($(this).attr("d-menu"), "group"); - }); - - // 绑定menubar的点击事件 - _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).on("click", "a[d-menu]", function(event) { - event.stopPropagation(); - _this.toolbarHide(); - _this.menubarListener($(this).attr("d-menu"), "toolbar"); - }); - - // 绑定menubar的点击按钮事件 - _this.obj.closest('body').find("*[dtree-id='"+_this.obj[0].id+"'][dtree-menu]").on("click", function(event) { - event.stopPropagation(); - _this.toolbarHide(); - _this.menubarListener($(this).attr("dtree-menu"), "freedom"); - }); - } - - if(_this.toolbar) { - if(_this.toolbarWay == "contextmenu") { - //绑定所有子节点div的右键点击事件,用于显示toolbar - _this.obj.on("contextmenu", "div[dtree-click='"+eventName.itemNodeClick+"'][d-contextmenu='true'][dtree-disabled='false']", function(e){ - var $div = $(this), - node = _this.getNodeParam($div); - - _this.toolbarHide(); - // toolbar加载前执行的方法,执行完毕之后创建按钮 - _this.setToolbarDom().setToolbarPlace(_this.toolbarFun.loadToolbarBefore(event.cloneObj(_this.toolbarMenu), _this.getRequestParam(node), $div)); - - var e = e || window.event, - mx = e.pageX - $div.offset().left +45 , - my = $div.offset().top - _this.obj.closest(_this.scroll).offset().top +15; - - _this.navThis($div); - var $toolBarDiv = _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id); - $toolBarDiv.find(".layui-nav-child").addClass('layui-anim-fadein layui-show'); - $toolBarDiv.css({'left':mx+'px','top':my+'px'}); - - e.stopPropagation(); - return false; - }); - - // 绑定装载树的上层出现滚动条的容器,让toolbar隐藏 - _this.obj.closest(_this.scroll).scroll(function() { - _this.toolbarHide(); - }); - - // 绑定toolbar的点击事件 - _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).on("click", "a[dtree-tool]", function(event) { - event.stopPropagation(); - var $div = _this.getNodeDom().nowOrRootDiv(), - node = _this.getNodeParam($div); - _this.toolbarHide(); - var tool = $(this).attr("dtree-tool"); - _this.toolbarListener(tool, $div); - }); - } else if(_this.toolbarWay == "fixed") { - // 绑定toolbar的点击事件 - _this.obj.on("click", "a[dtree-tool]", function(event) { - event.stopPropagation(); - var $a = $(this), - $cite = $a.parent("em."+TOOLBAR_TOOL_EM).prev("cite"), //当前选中节点的text - $div = $cite.parent("div"), - node = _this.getNodeParam($div); - var tool = $a.attr("dtree-tool"); - - _this.toolbarHide(); - _this.navThis($div); - _this.toolbarListener(tool, $div); - }); - } else if(_this.toolbarWay == "follow") { - //绑定所有子节点div的mouseover mouseout事件,用于显示或隐藏toolbar - _this.obj.on("mouseover mouseout", "div[dtree-click='"+eventName.itemNodeClick+"'][dtree-disabled='false']", function(event){ - var $div = $(this), - $toolBarEm = $div.children("em."+TOOLBAR_TOOL_EM); - if(event.type == "mouseover"){ - $toolBarEm.removeClass(NAV_HIDE); - event.stopPropagation(); - } else if(event.type == "mouseout"){ - $toolBarEm.addClass(NAV_HIDE); - event.stopPropagation(); - } - }); - - // 绑定toolbar的点击事件 - _this.obj.on("click", "a[dtree-tool]", function(event) { - event.stopPropagation(); - var $a = $(this), - $cite = $a.parent("em."+TOOLBAR_TOOL_EM).prev("cite"), //当前选中节点的text - $div = $cite.parent("div"), - node = _this.getNodeParam($div); - var tool = $a.attr("dtree-tool"); - - _this.toolbarHide(); - _this.navThis($div); - _this.toolbarListener(tool, $div); - }); - } - } - - if(_this.select) { - // 绑定select的点击事件 - $("div[dtree-id='" + rootId + "'][dtree-select='"+_this.selectDiv+"']").on("click", function(event){ - event.stopPropagation(); - $(this).toggleClass("layui-form-selected"); - $("div[dtree-id='" + rootId + "'][dtree-card='"+_this.selectCardDiv+"']").toggleClass("dtree-select-show layui-anim layui-anim-upbit"); - - // 下拉树面板开闭状态改变后,用户自定义想做的事情 - layui.event.call(this, MOD_NAME, "changeSelect("+$(_this.obj)[0].id+")", { - show: $(this).hasClass("layui-form-selected"), - param: _this.selectVal() - }); - }); - - } - }; - - // 绑定body的单击,让本页面所有的toolbar隐藏 - $BODY.on("click", function(event){ - $("div."+LI_DIV_TOOLBAR).find(".layui-show").removeClass('layui-anim-fadein layui-show'); - // $("div[dtree-id][dtree-select]").removeClass("layui-form-selected"); - // $("div[dtree-id][dtree-card]").removeClass("dtree-select-show layui-anim layui-anim-upbit"); - - }); - - // 解绑浏览器事件 - DTree.prototype.unbindBrowserEvent = function(){ - var _this = this; - - // 本身事件解绑 - _this.obj.unbind(); - // 菜单栏解绑 - if(_this.menubar){ - _this.obj.prevAll('div#dtree_menubar_'+_this.obj[0].id).unbind(); - if(_this.obj.closest('body').find("*[dtree-id='"+_this.obj[0].id+"'][dtree-menu]").length > 0){ - _this.obj.closest('body').find("*[dtree-id='"+_this.obj[0].id+"'][dtree-menu]").unbind(); - } - } - - // 工具栏解绑 - if(_this.toolbar){ - if(_this.toolbarWay == "contextmenu") { - _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).unbind(); - if(_this.obj.closest(_this.scroll).length > 0){ - _this.obj.closest(_this.scroll).unbind(); - } - } - } - - // 下拉树解绑 - if(_this.select) { - // 解绑select的点击事件 - $("div[dtree-id='" + _this.obj[0].id + "'][dtree-select='"+_this.selectDiv+"']").removeClass("layui-form-selected"); - $("div[dtree-id='" + _this.obj[0].id + "'][dtree-card='"+_this.selectCardDiv+"']").removeClass("dtree-select-show layui-anim layui-anim-upbit"); - $("div[dtree-id='" + _this.obj[0].id + "'][dtree-select='"+_this.selectDiv+"']").unbind(); - } - }; - - - /** 外部访问 **/ - var dtree = { - set: function(options){ //设置全局属性 - if(typeof options !== 'undefined') { - $.extend(OPTIONS, options); - } - }, - render: function(options){ // 初始化树 - var dTree = null; - var id = event.getElemId(options); - if(id == "") { - layer.msg("页面中未找到绑定id", {icon:5}); - } else { - dTree = DTrees[id]; - if(typeof dTree === 'object'){ - dTree.unbindBrowserEvent(); - } - // 创建树 - dTree = new DTree(options); - // 添加到树数组中去 - DTrees[id] = dTree; - dTree.initTreePlus(); - dTree.openTreePlus(); - dTree.init(); - dTree.bindBrowserEvent(); - } - - return dTree; - }, - renderSelect: function(options){ // 初始化下拉树 - var dTree = null; - var id = event.getElemId(options); - if(id == "") { - layer.msg("页面中未找到绑定id", {icon:5}); - } else { - dTree = DTrees[id]; - if(typeof dTree === 'object'){ - dTree.unbindBrowserEvent(); - } - // 创建下拉树 - dTree = new DTree(options); - dTree.selectSetting(); - // 添加到树数组中去 - DTrees[id] = dTree; - dTree.initTreePlus(); - dTree.openTreePlus(); - dTree.init(); - dTree.bindBrowserEvent(); - } - - return dTree; - }, - reload: function(dTree, options){ // 重新加载树 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - dTree.reloadSetting(options); - dTree.initTreePlus(); - dTree.openTreePlus(); - dTree.initNodeParam(); - dTree.init(); - dTree.unbindBrowserEvent(); - dTree.bindBrowserEvent(); - }, - on: function(events, callback) { // 绑定事件 - if(events.indexOf("'") > 0){ - events = events.replace(/'/g,""); - } - if(events.indexOf('"') > 0) { - events = events.replace(/"/g,""); - } - return layui.onevent.call(this, MOD_NAME, events, callback); - }, - click: function(dTree, id) { // 模拟单击事件 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - $("div[dtree-click='"+eventName.itemNodeClick+"'][dtree-id='"+dTree.obj[0].id+"'][data-id='"+id+"']").click(); - }, - getNowParam: function(dTree){ // 获取当前选中值 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.getNowParam(); // 获取当前选中值 - }, - getParam: function(dTree, id){ // 获取指定节点值 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.getParam(id); // 获取指定节点值 - }, - getParentParam: function(dTree, id){ // 获取参数的上级节点 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.getParentParam(id); - }, - getAllParentParam: function(dTree, id){ // 获取参数的全部上级节点 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.getAllParentParam(id); - }, - getChildParam: function(dTree, id){ // 获取参数的全部下级节点 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.getChildParam(id); - }, - getCheckbarNodesParam: function(dTree){ // 获取复选框选中值 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return {}; - } - return dTree.getCheckbarNodesParam(); // 获取复选框选中值 - }, - dataInit: function(dTree, chooseId){ // 初始化选中树,针对数据反选 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - if(chooseId){ - return dTree.dataInit(chooseId); - } - }, - chooseDataInit: function(dTree, chooseIds){ // 初始化复选框选中,针对数据反选 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - if(chooseIds){ - return dTree.chooseDataInit(chooseIds); - } - }, - changeCheckbarNodes: function(dTree){ //判断复选框是否发生变更 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.changeCheckbarNodes(); - }, - initNoAllCheck: function(dTree) { //复选框半选状态初始化设置 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.initNoAllCheck(); - }, - initAllCheck: function(dTree){ // 复选框选中状态初始化设置 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.initAllCheck(); - }, - selectVal: function(dTree, param){ // select模式设置输入框选中值 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.selectVal(param); // select模式设置输入框选中值 - }, - escape: function(html){ // 字符串格式化 - return event.escape(html); - }, - unescape: function(str){ // 字符串反格式化 - return event.unescape(str); - }, - version: function(){ //获取版本号 - return VERSION; - } - }; - - exports('dtree', dtree); -}); \ No newline at end of file diff --git a/component/pear/css/module/dtree/font/dtreefont.css b/component/pear/css/module/dtree/font/dtreefont.css deleted file mode 100644 index df7af65..0000000 --- a/component/pear/css/module/dtree/font/dtreefont.css +++ /dev/null @@ -1,229 +0,0 @@ -@font-face { - font-family: 'dtreefont'; - src: url('dtreefont.eot?x3m8fp'); - src: url('dtreefont.eot?x3m8fp#iefix') format('embedded-opentype'), - url('dtreefont.ttf?x3m8fp') format('truetype'), - url('dtreefont.woff?x3m8fp') format('woff'), - url('dtreefont.svg?x3m8fp#dtreefont') format('svg'); - font-weight: normal; - font-style: normal; -} - -[class^="dtree-icon-"], [class*=" dtree-icon-"] { - /* use !important to prevent issues with browser extensions that change font */ - font-family: 'dtreefont' !important; - font-size: 16px; - font-style: normal; - -webkit-font-smoothing: antialiased; -} - -.dtree-icon-xiangxia1:before { - content: "\e771"; -} -.dtree-icon-normal-file:before { - content: "\e60c"; -} -.dtree-icon-xiangyou:before { - content: "\e78f"; -} -.dtree-icon-ok-circle:before { - content: "\1005"; -} -.dtree-icon-close1:before { - content: "\1006"; -} -.dtree-icon-close-fill:before { - content: "\1007"; -} -.dtree-icon-jian1:before { - content: "\e600"; -} -.dtree-icon-jia1:before { - content: "\e601"; -} -.dtree-icon-bianji:before { - content: "\e602"; -} -.dtree-icon-yonghu:before { - content: "\e603"; -} -.dtree-icon-shijian:before { - content: "\e606"; -} -.dtree-icon-fuxuankuang-banxuan:before { - content: "\e607"; -} -.dtree-icon-star:before { - content: "\e608"; -} -.dtree-icon-wenjianjiazhankai:before { - content: "\e60e"; -} -.dtree-icon-xiangmuxiaoxi:before { - content: "\e60f"; -} -.dtree-icon-search2:before { - content: "\e615"; -} -.dtree-icon-weibiaoti5:before { - content: "\e618"; -} -.dtree-icon-layim-theme:before { - content: "\e61b"; -} -.dtree-icon-shuye1:before { - content: "\e61e"; -} -.dtree-icon-add-circle:before { - content: "\e61f"; -} -.dtree-icon-xinxipilu:before { - content: "\e620"; -} -.dtree-icon-set-sm:before { - content: "\e621"; -} -.dtree-icon-about:before { - content: "\e623"; -} -.dtree-icon-chart-screen:before { - content: "\e62a"; -} -.dtree-icon-delete1:before { - content: "\e640"; -} -.dtree-icon-share3:before { - content: "\e641"; -} -.dtree-icon-youjian:before { - content: "\e642"; -} -.dtree-icon-check:before { - content: "\e645"; -} -.dtree-icon-close:before { - content: "\e646"; -} -.dtree-icon-favorfill:before { - content: "\e64b"; -} -.dtree-icon-favor:before { - content: "\e64c"; -} -.dtree-icon-fuxuankuangxuanzhong:before { - content: "\e652"; -} -.dtree-icon-fenguangbaobiao:before { - content: "\e655"; -} -.dtree-icon-jian:before { - content: "\e656"; -} -.dtree-icon-jia:before { - content: "\e657"; -} -.dtree-icon-fenzhijigou:before { - content: "\e658"; -} -.dtree-icon-roundcheckfill:before { - content: "\e659"; -} -.dtree-icon-roundcheck:before { - content: "\e65a"; -} -.dtree-icon-roundclosefill:before { - content: "\e65b"; -} -.dtree-icon-roundclose:before { - content: "\e65c"; -} -.dtree-icon-roundrightfill:before { - content: "\e65d"; -} -.dtree-icon-roundright:before { - content: "\e65e"; -} -.dtree-icon-like:before { - content: "\e66c"; -} -.dtree-icon-samefill:before { - content: "\e671"; -} -.dtree-icon-same:before { - content: "\e672"; -} -.dtree-icon-evaluate:before { - content: "\e674"; -} -.dtree-icon-circle1:before { - content: "\e687"; -} -.dtree-icon-radio:before { - content: "\e688"; -} -.dtree-icon-caidan_xunzhang:before { - content: "\e68e"; -} -.dtree-icon-pulldown:before { - content: "\e6a0"; -} -.dtree-icon-pullup:before { - content: "\e6a1"; -} -.dtree-icon-refresh:before { - content: "\e6a4"; -} -.dtree-icon-qrcode1:before { - content: "\e6b0"; -} -.dtree-icon-profile1:before { - content: "\e6b7"; -} -.dtree-icon-home1:before { - content: "\e6b8"; -} -.dtree-icon-homefill:before { - content: "\e6bb"; -} -.dtree-icon-roundaddfill:before { - content: "\e6d8"; -} -.dtree-icon-roundadd:before { - content: "\e6d9"; -} -.dtree-icon-fuxuankuang:before { - content: "\e6f2"; -} -.dtree-icon-wefill:before { - content: "\e6f5"; -} -.dtree-icon-sort:before { - content: "\e701"; -} -.dtree-icon-repair:before { - content: "\e738"; -} -.dtree-icon-shujudaping:before { - content: "\e742"; -} -.dtree-icon-dian:before { - content: "\e7a5"; -} -.dtree-icon-search_list_light:before { - content: "\e807"; -} -.dtree-icon-round_list_light:before { - content: "\e82b"; -} -.dtree-icon-star-fill:before { - content: "\e832"; -} -.dtree-icon-rate:before { - content: "\e833"; -} -.dtree-icon-move-up:before { - content: "\ea47"; -} -.dtree-icon-move-down:before { - content: "\ea48"; -} diff --git a/component/pear/css/module/dtree/font/dtreefont.eot b/component/pear/css/module/dtree/font/dtreefont.eot deleted file mode 100644 index 68bf5f2f2dd33daa67373cca102f8ad764d84c22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19508 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 - - -Generated by IcoMoon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/component/pear/css/module/dtree/font/dtreefont.ttf b/component/pear/css/module/dtree/font/dtreefont.ttf deleted file mode 100644 index 78bacd13a0a16b55e6b3be536b35e34e147a396a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19344 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 diff --git a/component/pear/css/module/dtree/font/icons.json b/component/pear/css/module/dtree/font/icons.json deleted file mode 100644 index fca4788..0000000 --- a/component/pear/css/module/dtree/font/icons.json +++ /dev/null @@ -1,283 +0,0 @@ -{ - "data": [{ - "cls": "dtree-icon-xiangxia1", - "uncode": "e771" - }, - { - "cls": "dtree-icon-xiangyou", - "uncode": "e78f" - }, - { - "cls": "dtree-icon-jian", - "uncode": "e656" - }, - { - "cls": "dtree-icon-jia", - "uncode": "e657" - }, - { - "cls": "dtree-icon-weibiaoti5", - "uncode": "e618" - }, - { - "cls": "dtree-icon-wenjianjiazhankai", - "uncode": "e60e" - }, - { - "cls": "dtree-icon-dian", - "uncode": "e7a5" - }, - { - "cls": "dtree-icon-yonghu", - "uncode": "e603" - }, - { - "cls": "dtree-icon-fenzhijigou", - "uncode": "e658" - }, - { - "cls": "dtree-icon-fenguangbaobiao", - "uncode": "e655" - }, - { - "cls": "dtree-icon-xinxipilu", - "uncode": "e620" - }, - { - "cls": "dtree-icon-shuye1", - "uncode": "e61e" - }, - { - "cls": "dtree-icon-caidan_xunzhang", - "uncode": "e68e" - }, - { - "cls": "dtree-icon-normal-file", - "uncode": "e60c" - }, - { - "cls": "dtree-icon-roundclose", - "uncode": "e65c" - }, - { - "cls": "dtree-icon-bianji", - "uncode": "e602" - }, - { - "cls": "dtree-icon-roundadd", - "uncode": "e6d9" - }, - { - "cls": "dtree-icon-fuxuankuangxuanzhong", - "uncode": "e652" - }, - { - "cls": "dtree-icon-fuxuankuang", - "uncode": "e6f2" - }, - { - "cls": "dtree-icon-fuxuankuang-banxuan", - "uncode": "e607" - }, - { - "cls": "dtree-icon-search_list_light", - "uncode": "e807" - }, - { - "cls": "dtree-icon-move-up", - "uncode": "ea47" - }, - { - "cls": "dtree-icon-move-down", - "uncode": "ea48" - }, - { - "cls": "dtree-icon-delete1", - "uncode": "e640" - }, - { - "cls": "dtree-icon-refresh", - "uncode": "e6a4" - }, - { - "cls": "dtree-icon-roundcheckfill", - "uncode": "e659" - }, - { - "cls": "dtree-icon-roundclosefill", - "uncode": "e65b" - }, - { - "cls": "dtree-icon-roundcheck", - "uncode": "e65a" - }, - { - "cls": "dtree-icon-pulldown", - "uncode": "e6a0" - }, - { - "cls": "dtree-icon-pullup", - "uncode": "e6a1" - }, - { - "cls": "dtree-icon-set-sm", - "uncode": "e621" - }, - { - "cls": "dtree-icon-rate", - "uncode": "e833" - }, - { - "cls": "dtree-icon-jian1", - "uncode": "e600" - }, - { - "cls": "dtree-icon-jia1", - "uncode": "e601" - }, - { - "cls": "dtree-icon-shijian", - "uncode": "e606" - }, - { - "cls": "dtree-icon-check", - "uncode": "e645" - }, - { - "cls": "dtree-icon-close", - "uncode": "e646" - }, - { - "cls": "dtree-icon-favorfill", - "uncode": "e64b" - }, - { - "cls": "dtree-icon-favor", - "uncode": "e64c" - }, - { - "cls": "dtree-icon-roundrightfill", - "uncode": "e65d" - }, - { - "cls": "dtree-icon-roundright", - "uncode": "e65e" - }, - { - "cls": "dtree-icon-samefill", - "uncode": "e671" - }, - { - "cls": "dtree-icon-same", - "uncode": "e672" - }, - { - "cls": "dtree-icon-qrcode1", - "uncode": "e6b0" - }, - { - "cls": "dtree-icon-profile1", - "uncode": "e6b7" - }, - { - "cls": "dtree-icon-home1", - "uncode": "e6b8" - }, - { - "cls": "dtree-icon-homefill", - "uncode": "e6bb" - }, - { - "cls": "dtree-icon-roundaddfill", - "uncode": "e6d8" - }, - { - "cls": "dtree-icon-wefill", - "uncode": "e6f5" - }, - { - "cls": "dtree-icon-sort", - "uncode": "e701" - }, - { - "cls": "dtree-icon-round_list_light", - "uncode": "e82b" - }, - { - "cls": "dtree-icon-search2", - "uncode": "e615" - }, - { - "cls": "dtree-icon-close1", - "uncode": "1006" - }, - { - "cls": "dtree-icon-close-fill", - "uncode": "1007" - }, - { - "cls": "dtree-icon-chart-screen", - "uncode": "e62a" - }, - { - "cls": "dtree-icon-star", - "uncode": "e608" - }, - { - "cls": "dtree-icon-ok-circle", - "uncode": "1005" - }, - { - "cls": "dtree-icon-add-circle", - "uncode": "e61f" - }, - { - "cls": "dtree-icon-about", - "uncode": "e623" - }, - { - "cls": "dtree-icon-circle1", - "uncode": "e687" - }, - { - "cls": "dtree-icon-radio", - "uncode": "e688" - }, - { - "cls": "dtree-icon-star-fill", - "uncode": "e832" - }, - { - "cls": "dtree-icon-shujudaping", - "uncode": "e742" - }, - { - "cls": "dtree-icon-share3", - "uncode": "e641" - }, - { - "cls": "dtree-icon-youjian", - "uncode": "e642" - }, - { - "cls": "dtree-icon-repair", - "uncode": "e738" - }, - { - "cls": "dtree-icon-evaluate", - "uncode": "e674" - }, - { - "cls": "dtree-icon-like", - "uncode": "e66c" - }, - { - "cls": "dtree-icon-layim-theme", - "uncode": "e61b" - }, - { - "cls": "dtree-icon-xiangmuxiaoxi", - "uncode": "e60f" - } - ] -} \ No newline at end of file diff --git a/component/pear/css/pear.css b/component/pear/css/pear.css index d50f24f..cd012a4 100644 --- a/component/pear/css/pear.css +++ b/component/pear/css/pear.css @@ -1,8 +1,6 @@ @import url("../../layui/css/layui.css"); @import url("../font/iconfont.css"); -@import url("module/dtree/font/dtreefont.css"); -@import url("module/dtree/dtree.css"); @import url("module/iconPicker.css"); @import url("module/nprogress.css"); @import url("module/message.css"); diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 40ba8a6..bc24448 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -1,4 +1,4 @@ -layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'menu', 'frame', 'theme', 'convert', 'fullscreen'], +layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'menu', 'frame', 'theme', 'fullscreen'], function (exports) { "use strict"; @@ -7,7 +7,6 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm element = layui.element, yaml = layui.yaml, pearTab = layui.tab, - convert = layui.convert, pearMenu = layui.menu, pearFrame = layui.frame, pearTheme = layui.theme, @@ -96,12 +95,11 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } this.messageRender = function (option) { - var option = { + msgInstance = message.render({ elem: '.message', url: option.header.message, height: '250px' - }; - msgInstance = message.render(option); + }); } this.logoRender = function (param) { diff --git a/component/pear/module/echartsTheme.js b/component/pear/module/echartsTheme.js index 2cf0bfa..c0c029b 100644 --- a/component/pear/module/echartsTheme.js +++ b/component/pear/module/echartsTheme.js @@ -1,4 +1,4 @@ -layui.define(function(exports) { +layui.define(function (exports) { exports('echartsTheme', { "color": [ @@ -21,10 +21,10 @@ layui.define(function(exports) { }, "line": { "itemStyle": { - "borderWidth": "3" + "borderWidth": "3" }, "lineStyle": { - "width": "4" + "width": "4" }, "symbolSize": "10", "symbol": "emptyCircle", @@ -32,10 +32,10 @@ layui.define(function(exports) { }, "radar": { "itemStyle": { - "borderWidth": "3" + "borderWidth": "3" }, "lineStyle": { - "width": "4" + "width": "4" }, "symbolSize": "10", "symbol": "emptyCircle", @@ -43,8 +43,8 @@ layui.define(function(exports) { }, "bar": { "itemStyle": { - "barBorderWidth": 0, - "barBorderColor": "#ccc" + "barBorderWidth": 0, + "barBorderColor": "#ccc" }, "emphasis": { "itemStyle": { @@ -55,8 +55,8 @@ layui.define(function(exports) { }, "pie": { "itemStyle": { - "borderWidth": 0, - "borderColor": "#ccc" + "borderWidth": 0, + "borderColor": "#ccc" }, "emphasis": { "itemStyle": { @@ -67,8 +67,8 @@ layui.define(function(exports) { }, "scatter": { "itemStyle": { - "borderWidth": 0, - "borderColor": "#ccc" + "borderWidth": 0, + "borderColor": "#ccc" }, "emphasis": { "itemStyle": { @@ -81,7 +81,7 @@ layui.define(function(exports) { "itemStyle": { "borderWidth": 0, "borderColor": "#ccc" - + }, "emphasis": { "itemStyle": { @@ -92,8 +92,8 @@ layui.define(function(exports) { }, "parallel": { "itemStyle": { - "borderWidth": 0, - "borderColor": "#ccc" + "borderWidth": 0, + "borderColor": "#ccc" }, "emphasis": { "itemStyle": { @@ -153,8 +153,8 @@ layui.define(function(exports) { "borderColor": "#ccc" }, "lineStyle": { - "width": "1", - "color": "#cccccc" + "width": "1", + "color": "#cccccc" }, "symbolSize": "10", "symbol": "emptyCircle", @@ -167,8 +167,8 @@ layui.define(function(exports) { "#c4ebad", "#96dee8" ], - "label": { - "color": "#ffffff" + "label": { + "color": "#ffffff" } }, "map": { @@ -177,7 +177,7 @@ layui.define(function(exports) { "borderColor": "#aaaaaa", "borderWidth": 0.5 }, - "label": { + "label": { "color": "#ffffff" }, "emphasis": { @@ -186,7 +186,7 @@ layui.define(function(exports) { "borderColor": "#3fb1e3", "borderWidth": 1 }, - "label":{ + "label": { "color": "rgb(63,177,227)" } } @@ -206,7 +206,7 @@ layui.define(function(exports) { "borderColor": "#3fb1e3", "borderWidth": 1 }, - "label":{ + "label": { "color": "rgb(63,177,227)" } } @@ -226,9 +226,9 @@ layui.define(function(exports) { }, "axisLabel": { "show": true, - + "color": "#999999" - + }, "splitLine": { "show": true, @@ -262,9 +262,9 @@ layui.define(function(exports) { } }, "axisLabel": { - "show": true, + "show": true, "color": "#999999" - + }, "splitLine": { "show": true, @@ -298,9 +298,9 @@ layui.define(function(exports) { } }, "axisLabel": { - "show": true, + "show": true, "color": "#999999" - + }, "splitLine": { "show": true, @@ -335,9 +335,9 @@ layui.define(function(exports) { }, "axisLabel": { "show": true, - + "color": "#999999" - + }, "splitLine": { "show": true, @@ -359,7 +359,7 @@ layui.define(function(exports) { }, "toolbox": { "iconStyle": { - "borderColor": "#999999" + "borderColor": "#999999" }, "emphasis": { "iconStyle": { @@ -389,33 +389,33 @@ layui.define(function(exports) { "color": "#626c91", "width": 1 }, - "itemStyle": { + "itemStyle": { "color": "#626c91", - "borderWidth": 1 - - }, - "controlStyle": { + "borderWidth": 1 + + }, + "controlStyle": { "color": "#626c91", "borderColor": "#626c91", - "borderWidth": 0.5 + "borderWidth": 0.5 }, "checkpointStyle": { "color": "#3fb1e3", "borderColor": "rgba(63,177,227,0.15)" }, - "label": { - "color": "#626c91" + "label": { + "color": "#626c91" }, "emphasis": { "itemStyle": { "color": "#626c91" }, - "controlStyle":{ + "controlStyle": { "color": "#626c91", "borderColor": "#626c91", "borderWidth": 0.5 }, - "label":{ + "label": { "color": "#626c91" } } @@ -437,8 +437,8 @@ layui.define(function(exports) { } }, "markPoint": { - "label": { - "color": "#ffffff" + "label": { + "color": "#ffffff" }, "emphasis": { "label": { diff --git a/config/pear.config.yml b/config/pear.config.yml index 4b7cd70..ec73717 100644 --- a/config/pear.config.yml +++ b/config/pear.config.yml @@ -54,18 +54,21 @@ theme: ## 主题色配置列表 colors: - id: "1" - color: "#2d8cf0" + color: "#16baaa" second: "#ecf5ff" - id: "2" + color: "#009688" + second: "#ecf5ff" +- id: "3" color: "#36b368" second: "#f0f9eb" -- id: "3" +- id: "4" color: "#f6ad55" second: "#fdf6ec" -- id: "4" +- id: "5" color: "#f56c6c" second: "#fef0f0" -- id: "5" +- id: "6" color: "#3963bc" second: "#ecf5ff" ## 其他配置 diff --git a/index.html b/index.html index 7ed70e6..c0f89f9 100644 --- a/index.html +++ b/index.html @@ -87,11 +87,10 @@ diff --git a/view/console/console1.html b/view/console/console1.html index 47d133a..71e8ff9 100644 --- a/view/console/console1.html +++ b/view/console/console1.html @@ -1,441 +1,512 @@ - - - 控制后台 - - - - - - -
                          -
                          -
                          -
                          -
                          今日访问
                          -
                          -
                          -
                          - 0 -
                          -
                          - - - - - - - - - -
                          + + + + 控制后台 + + + + + + + +
                          +
                          +
                          +
                          +
                          今日访问
                          +
                          +
                          +
                          + 0 +
                          +
                          + + + + + + + + + +
                          -
                          -
                          -
                          提交次数
                          -
                          -
                          -
                          - 0 -
                          -
                          - - - - - - - - - - - - - -
                          +
                          +
                          +
                          +
                          提交次数
                          +
                          +
                          +
                          + 0 +
                          +
                          + + + + + + + + + + + + +
                          -
                          -
                          -
                          下载数量
                          -
                          -
                          -
                          - 0 -
                          -
                          - - - - - - - - - - -
                          +
                          +
                          +
                          +
                          下载数量
                          +
                          +
                          +
                          + 0 +
                          +
                          + + + + + + + + + +
                          -
                          -
                          -
                          流量统计
                          -
                          -
                          -
                          - 0 -
                          -
                          - - - - - - - - - - - -
                          +
                          +
                          +
                          +
                          流量统计
                          +
                          +
                          +
                          + 0 +
                          +
                          + + + + + + + + + + +
                          -
                          -
                          -
                          -
                          -
                          -
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          -
                          -
                          动态
                          -
                          -
                          -
                          -
                          -
                          -

                          七彩枫叶 在 Pear Admin 专区 回答问题

                          - 几秒前 -
                          -
                          -
                          -
                          -
                          -

                          简 在 Pear Admin 专区 进行了 提问

                          - 2天前 -
                          -
                          -
                          -
                          -
                          -

                          恒宇少年 将 Pear Admin 更新至 2.3.0 - 版本

                          - 7天前 -
                          -
                          -
                          -
                          -
                          -

                          如花 在 Pear Admin 社区 发布了 建议

                          - 7天前 -
                          -
                          -
                          -
                          -
                          -

                          就眠仪式 在 Pear Admin 社区 发布了 建议

                          - 8天前 -
                          -
                          -
                          -
                          -
                          -

                          贤心 在 Pear Admin 专区 进行了 提问

                          - 8天前 -
                          -
                          -
                          -
                          +
                          +
                          +
                          动态
                          +
                          +
                          +
                          +
                          +
                          +

                          七彩枫叶 在 Pear Admin 专区 回答问题 +

                          + 几秒前 +
                          +
                          +
                          +
                          +
                          +

                          简 在 Pear + Admin 专区 进行了 提问 +

                          + 2天前 +
                          +
                          +
                          +
                          +
                          +

                          恒宇少年 将 Pear Admin 更新至 + 2.3.0 + 版本

                          + 7天前 +
                          +
                          +
                          +
                          +
                          +

                          如花 在 Pear Admin 社区 发布了 建议

                          + 7天前 +
                          +
                          +
                          +
                          +
                          +

                          就眠仪式 在 Pear Admin 社区 发布了 建议

                          + 8天前 +
                          +
                          +
                          +
                          +
                          +

                          贤心 在 Pear Admin 专区 进行了 提问 +

                          + 8天前 +
                          +
                          +
                          -
                          -
                          -
                          更 新
                          -
                          -
                            -
                          • 优化代码格式2021-09-06 11:28
                          • -
                          • 新增消息组件2021-09-06 11:28
                          • -
                          • 移动端兼容2021-09-06 11:28
                          • -
                          • 系统布局优化2021-09-06 11:28
                          • -
                          • 兼容多系统菜单模式2021-09-06 11:28
                          • -
                          • 兼容多标签页切换2021-09-06 11:28
                          • -
                          • 扩展下拉组件2021-09-06 11:28
                          • -
                          • 扩展卡片样式2021-09-06 11:28
                          • -
                          -
                          +
                          +
                          +
                          +
                          更 新
                          +
                          +
                            +
                          • 优化代码格式2021-09-06 + 11:28
                          • +
                          • 新增消息组件2021-09-06 + 11:28
                          • +
                          • 移动端兼容2021-09-06 + 11:28
                          • +
                          • 系统布局优化2021-09-06 + 11:28
                          • +
                          • 兼容多系统菜单模式2021-09-06 + 11:28
                          • +
                          • 兼容多标签页切换2021-09-06 + 11:28
                          • +
                          • 扩展下拉组件2021-09-06 + 11:28
                          • +
                          • 扩展卡片样式2021-09-06 + 11:28
                          • +
                          -
                          -
                          - 链接 -
                          -
                          - 官 - 网 -
                          - 下 载 -
                          - 后 端 -
                          +
                          +
                          +
                          + 链接
                          -
                          -
                          - 寄语 -
                          -
                          - 原想将澎湃的爱平平稳稳放置你手心,奈何我徒有一股蛮劲,只顾向你跑去,一个不稳跌的满身脏兮兮。试图爬起的我, - 心想你会不会笑我 " 献爱献的这样笨拙, 怎么不知避开爱里的埋伏 " -
                          +
                          + 官 + 网 +
                          + 下 载 +
                          + 后 端 +
                          +
                          +
                          +
                          + 寄语 +
                          +
                          + 原想将澎湃的爱平平稳稳放置你手心,奈何我徒有一股蛮劲,只顾向你跑去,一个不稳跌的满身脏兮兮。试图爬起的我, + 心想你会不会笑我 " 献爱献的这样笨拙, 怎么不知避开爱里的埋伏 "
                          - + - }); - - - + \ No newline at end of file diff --git a/view/console/console2.html b/view/console/console2.html index c9fa35f..c181f3d 100644 --- a/view/console/console2.html +++ b/view/console/console2.html @@ -207,43 +207,6 @@ table = layui.table, carousel = layui.carousel; - let cols = [ - [{ - type: 'checkbox' - }, - { - title: '角色名', - field: 'roleName', - align: 'center', - width: 100 - }, - { - title: 'Key值', - field: 'roleCode', - align: 'center' - }, - { - title: '描述', - field: 'details', - align: 'center' - }, - { - title: '是否可用', - field: 'enable', - align: 'center', - templet: '#role-enable' - } - ] - ] - - table.render({ - elem: '#role-table', - url: '../../admin/data/role.json', - page: true, - cols: cols, - skin: 'line' - }); - var echartsRecords = echarts.init(document.getElementById('echarts-records'), 'walden'); @@ -480,12 +443,10 @@ }] }; - echartsRecords.setOption(option); - - window.onresize = function () { + setTimeout(() => { + echartsRecords.setOption(option); echartsRecords.resize(); - } - + }, 500); }); -- Gitee From 8d289cd52365dbc92aaba8a9a68dc31ac0b4be09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Thu, 22 Jun 2023 15:41:24 +0800 Subject: [PATCH 004/141] update --- README.md | 139 +- admin/css/login.css | 45 +- admin/data/menu.json | 50 +- component/code/css/style.css | 9 - component/code/index.html | 81 - component/pear/css/module/card.css | 93 - component/pear/css/module/tag.css | 85 - component/pear/module/button.js | 26 +- component/pear/module/card.js | 275 - component/pear/module/context.js | 19 - component/pear/module/{ => core}/admin.js | 16 +- component/pear/module/{ => core}/menu.js | 16 +- .../pear/module/{frame.js => core/page.js} | 12 +- .../pear/module/{tab.js => core/tabPage.js} | 32 +- component/pear/module/design.js | 182 - component/pear/module/dtree.js | 5530 ----------------- .../pear/module/{ => extends}/echarts.js | 0 .../pear/module/{ => extends}/echartsTheme.js | 0 .../pear/module/{ => extends}/nprogress.js | 0 component/pear/module/extends/toast.js | 1225 ++++ component/pear/module/{ => extends}/yaml.js | 0 component/pear/module/fullscreen.js | 2 +- component/pear/module/step.js | 80 - component/pear/module/tag.js | 159 - component/pear/module/toast.js | 754 +-- component/pear/pear.js | 21 +- index.html | 3 +- login.html | 136 +- view/components/toast.html | 146 + view/exception/403.html | 0 view/exception/404.html | 0 view/exception/500.html | 0 32 files changed, 1939 insertions(+), 7197 deletions(-) delete mode 100644 component/code/css/style.css delete mode 100644 component/code/index.html delete mode 100644 component/pear/css/module/card.css delete mode 100644 component/pear/css/module/tag.css delete mode 100644 component/pear/module/card.js delete mode 100644 component/pear/module/context.js rename component/pear/module/{ => core}/admin.js (99%) rename component/pear/module/{ => core}/menu.js (98%) rename component/pear/module/{frame.js => core/page.js} (90%) rename component/pear/module/{tab.js => core/tabPage.js} (96%) delete mode 100644 component/pear/module/design.js delete mode 100644 component/pear/module/dtree.js rename component/pear/module/{ => extends}/echarts.js (100%) rename component/pear/module/{ => extends}/echartsTheme.js (100%) rename component/pear/module/{ => extends}/nprogress.js (100%) create mode 100644 component/pear/module/extends/toast.js rename component/pear/module/{ => extends}/yaml.js (100%) delete mode 100644 component/pear/module/step.js delete mode 100644 component/pear/module/tag.js create mode 100644 view/components/toast.html create mode 100644 view/exception/403.html create mode 100644 view/exception/404.html create mode 100644 view/exception/500.html diff --git a/README.md b/README.md index 2734d82..a07beda 100644 --- a/README.md +++ b/README.md @@ -1,137 +1,4 @@ +### 更新日志 -
                          - -
                          -
                          - -

                          - Pear Admin Layui -

                          -

                          - 开 箱 即 用 的 前 后 端 解 决 方 案 -

                          - - [预 览](http://layui.pearadmin.com) | [官 网](http://www.pearadmin.com/) | [文档](http://www.pearadmin.com/doc) - -
                          - -

                          - - Pear Admin Layui Version - - - Jquery Version - - - Layui Version - -

                          - -
                          - -
                          - -
                          -
                          - -### 项目介绍 - -

                          - -Pear Admin 是一款开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方开源组件,提供便捷快速的开发方式,延续 Admin 的设计规范。 - -异步 Ajax 的菜单构建,完善的多标签页,单标签页的共存,丰富自由的布局方式,为研发者提供相对完善的前端解决方案。 - -若你需要更多版本 (Java Go Think 等),请前往 [Pear Admin 社区](https://gitee.com/pear-admin) - -项目不定时更新,建议 Star watch 一份 - -

                          - -### Branch 说明 - -

                          - -main: 最新的功能,主要维护的版本。 - -package: 通过 gulp.js 提供打包构建,适合对资源加载和编译速度有要求的项目。 - -i18n: 集成 translate.js 提供 i18n 国际化功能的版本。 - -

                          - -### 项目结构 - -``` -Pear Admin Layui -│ -├─admin 资源 -│ │ -│ ├─css 样式 -│ │ -│ ├─data 数据 -│ │ -│ └─images 图片 -│ -├─component 组件 -│ │ -│ ├─code 设计器 -│ │ -│ ├─layui 核心框架 -│ │ -│ └─pear 扩展组件 -│ -├─config 配置 -│ │ -│ ├─pear.config.yml 配置文件 -│ │ -│ └─pear.config.json 配置文件 -│ -├─view 视图 -│ │ -│ ├─console 首页 -│ │ -│ ├─document 文档 -│ │ -│ ├─echarts 图表 -│ │ -│ ├─error 错误页 -│ │ -│ ├─result 结果页 -│ │ -│ └─system 系统管理 -│ -├─index.html 入口 -│ -└─login.html 登录 - -``` - -### 项目截图 - -| | | -|---------------------|---------------------| -|![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/221841_9d135fe6_4835367.png "屏幕截图.png") | ![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/221901_b5282417_4835367.png "屏幕截图.png") | -|![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/221920_84f71864_4835367.png "屏幕截图.png")| ![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/221953_eacb1578_4835367.png "屏幕截图.png") | -|![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222007_334b5411_4835367.png "屏幕截图.png")| ![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222020_ed5e67ac_4835367.png "屏幕截图.png") | -|![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222105_9a1036c6_4835367.png "屏幕截图.png")| ![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222116_50936543_4835367.png "屏幕截图.png") | -|![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222150_6251bb30_4835367.png "屏幕截图.png")| ![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222206_777ccf74_4835367.png "屏幕截图.png") | -|![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222315_712d2942_4835367.png "屏幕截图.png")|![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222345_2629d03c_4835367.png "屏幕截图.png") | -|![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222410_e83792fa_4835367.png "屏幕截图.png")| ![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222431_5b884442_4835367.png "屏幕截图.png") | -|![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222453_b02034b2_4835367.png "屏幕截图.png")| ![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222508_fec3ad5e_4835367.png "屏幕截图.png") | -|![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222533_abda701e_4835367.png "屏幕截图.png")|![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222547_db49f0b8_4835367.png "屏幕截图.png") | -|![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222611_7ffd378b_4835367.png "屏幕截图.png")|![输入图片说明](https://images.gitee.com/uploads/images/2021/0331/222625_55e092f3_4835367.png "屏幕截图.png") | - -### 开源共建 - -

                          - -1. 欢迎提交 [pull request](https://gitee.com/pear-admin/Pear-Admin-Layui/pulls),注意对应提交对应 `main` 分支 - -2. 欢迎提交 [issue](https://gitee.com/pear-admin/Pear-Admin-Layui/issues),请写清楚遇到问题的原因、开发环境、复显步骤。 - -

                          - -感谢每一位贡献代码的朋友。 - -如果对您有帮助,您可以点右上角 💘Star💘 支持 +[优化] 移动端 collapse 样式,由圆形调整为正方形。 +[重构] frame.js 组件, \ No newline at end of file diff --git a/admin/css/login.css b/admin/css/login.css index f23d728..b461dee 100644 --- a/admin/css/login.css +++ b/admin/css/login.css @@ -9,13 +9,10 @@ width: 100%; height: 40px; line-height: 40px; - background-color: #5FB878; font-size: 14px; } .layui-form-checked[lay-skin=primary] i { - border-color: #5FB878 !important; - background-color: #5FB878 !important; color: #fff !important; } @@ -29,46 +26,14 @@ margin-top: 20px !important; } +.layui-form-item .layui-form-checkbox[lay-skin=primary] { + margin-top: 0px !important; +} + .layui-input { height: 40px !important; line-height: 40px !important; - padding-left: 15px !important; - border-radius: 3px !important; -} - -.layui-input:focus { - box-shadow: 0px 0px 2px 1px #5FB878 !important; -} - -.layui-form-danger:focus{ - box-shadow: 0px 0px 2px 1px #f56c6c !important; -} - -.logo { - width: 60px !important; - margin-top: 10px !important; - margin-bottom: 10px !important; - margin-left: 20px !important; -} - -.title { - font-size: 30px !important; - font-weight: 550 !important; - margin-left: 20px !important; - color: #5FB878 !important; - display: inline-block !important; - height: 60px !important; - line-height: 60px !important; - margin-top: 10px !important; - position: absolute !important; -} - -.desc { - width: 100% !important; - text-align: center !important; - color: gray !important; - height: 60px !important; - line-height: 60px !important; + border-radius: 4px !important; } body { diff --git a/admin/data/menu.json b/admin/data/menu.json index c8691d2..1678e14 100644 --- a/admin/data/menu.json +++ b/admin/data/menu.json @@ -3,7 +3,6 @@ "title": "工作空间", "icon": "layui-icon layui-icon-console", "type": 0, - "href": "", "children": [{ "id": 10, "title": "控制后台", @@ -20,6 +19,21 @@ "href": "view/console/console2.html" }] }, + { + "id": 2, + "title": "扩展组件", + "icon": "layui-icon layui-icon-auz", + "type": 0, + "children": [{ + "id": 21, + "title": "消息通知", + "icon": "layui-icon layui-icon-face-smile", + "type": 1, + "openType": "_iframe", + "href": "view/components/toast.html" + } + ] + }, { "id": "result", "title": "结果页面", @@ -44,9 +58,41 @@ } ] }, + { + "id": "exception", + "title": "异常页面", + "icon": "layui-icon layui-icon-auz", + "type": 0, + "href": "", + "children": [{ + "id": "403", + "title": "403", + "icon": "layui-icon layui-icon-face-smile", + "type": 1, + "openType": "_iframe", + "href": "view/exception/403.html" + }, + { + "id": "404", + "title": "404", + "icon": "layui-icon layui-icon-face-cry", + "type": 1, + "openType": "_iframe", + "href": "view/exception/404.html" + }, + { + "id": "500", + "title": "500", + "icon": "layui-icon layui-icon-face-cry", + "type": 1, + "openType": "_iframe", + "href": "view/exception/500.html" + } + ] + }, { "id": "open", - "title": "更多功能", + "title": "菜单模式", "icon": "layui-icon layui-icon-auz", "type": 0, "href": "", diff --git a/component/code/css/style.css b/component/code/css/style.css deleted file mode 100644 index 5d460a5..0000000 --- a/component/code/css/style.css +++ /dev/null @@ -1,9 +0,0 @@ -html,body{background-color: whitesmoke} -.layui-fluid{margin-top: 15px;} -.content{min-height: 796px;} -.nav{text-align: center;} -.nav button{margin-bottom: 3px;width: 100%;margin-top: 3px;margin-bottom: 3px;border-radius: 1px;} -.nav button:hover{background-color: #5FB878;border: 1px solid #5FB878;color: white;} -.layui-card-body .layui-btn+.layui-btn{margin-left: 0px;} -.code-show{min-height: 454px;} -.js-show{min-height: 200px;} \ No newline at end of file diff --git a/component/code/index.html b/component/code/index.html deleted file mode 100644 index ba02488..0000000 --- a/component/code/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - layui表单生成器 - - - - -
                          -
                          -
                          - - - - -
                          -
                          -
                          -
                          - view -
                          -
                          -
                          -
                          -
                          -
                          -
                          -
                          -
                          -
                          html
                          -
                          - -
                          -
                          -
                          -
                          code
                          -
                          - -
                          -
                          -
                          -
                          -
                          - - - - - diff --git a/component/pear/css/module/card.css b/component/pear/css/module/card.css deleted file mode 100644 index 39b4ed2..0000000 --- a/component/pear/css/module/card.css +++ /dev/null @@ -1,93 +0,0 @@ -.project-list-item { - background-color: #fff; - border-radius: 4px; - cursor: pointer; - transition: all .2s; -} - -.project-list-item:hover { - box-shadow: 2px 0 4px rgba(0, 21, 41, .35); -} - -.project-list-item .project-list-item-cover { - width: 100%; - height: 180px; - display: block; - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} - -.project-list-item-body { - padding: 20px; - border: 1px solid #e8e8e8; -} - -.project-list-item .project-list-item-body>h2 { - font-size: 16px; - color: #333; - margin-bottom: 12px; -} - -.project-list-item .project-list-item-text { - height: 40px; - overflow: hidden; - margin-bottom: 12px; -} - -.project-list-item .project-list-item-desc { - position: relative; -} - -.project-list-item .project-list-item-desc .time { - color: #999; - font-size: 12px; -} - -.project-list-item .project-list-item-desc .ew-head-list { - position: absolute; - right: 0; - top: 0; -} - -.ew-head-list .ew-head-list-item:first-child { - margin-left: 0; -} - -.ew-head-list .ew-head-list-item { - width: 22px; - height: 22px; - border-radius: 50%; - border: 1px solid #fff; - margin-left: -10px; -} - -.ew-head-list .ew-head-list-item { - width: 22px; - height: 22px; - border-radius: 50%; - border: 1px solid #fff; - margin-left: -10px; -} - -.cloud-card-component { - padding: 20px; -} - -.cloud-card-component .layui-table-click { - border-radius: 6px!important; -} - -.ew-table-loading { - padding: 10px 0; - text-align: center; -} -.ew-table-loading > i { - color: #999; - font-size: 30px; -} -.ew-table-loading.ew-loading-float { - position: absolute; - top: 0; - left: 0; - right: 0; -} \ No newline at end of file diff --git a/component/pear/css/module/tag.css b/component/pear/css/module/tag.css deleted file mode 100644 index 7c244bc..0000000 --- a/component/pear/css/module/tag.css +++ /dev/null @@ -1,85 +0,0 @@ -.input-new-tag { - width: 90px; -} - -.input-new-tag input { - height: 100%!important; - border: none; - padding-left: 0px; -} - -.tag .layui-btn .tag-close:hover { - border-radius: 2px; - color: #fff; -} - -.tag .layui-btn .tag-close { - margin-left: 8px; - transition: all .2s; - -webkit-transition: all .2s; -} -.tag-item { - background-color: #5FB878; - color: white; - border: none; -} - -.tag-item:hover { - - color: white; - -} -.tag-item-normal { - background-color: #5FB878; - color: white; - border: none; -} - -.tag-item-warm { - background-color: #f6ad55; - color: white; - border: none; -} - -.tag-item-danger { - background-color: #f56c6c; - color: white; - border: none; -} - -.tag-item-dark { - background-color: #525252; - color: white; - border: none; -} - -.tag-item-primary { - background-color: white !important; - color: dimgray; - border: 1px solid dimgray; -} - -.tag-item-normal:hover { - - color: white !important; -} - -.tag-item-warm:hover { - - color: white; -} - -.tag-item-danger:hover { - - color: white; -} - -.tag-item-dark:hover { - - color: white; -} - -.tag-item-primary:hover { - color: dimgray; - border: 1px solid dimgray; -} \ No newline at end of file diff --git a/component/pear/module/button.js b/component/pear/module/button.js index d77c18d..c0eb62e 100644 --- a/component/pear/module/button.js +++ b/component/pear/module/button.js @@ -16,28 +16,28 @@ layui.define(['jquery'], function(exports) { * */ button.prototype.load = function(opt) { - var option = { + var options = { elem: opt.elem, time: opt.time ? opt.time : false, done: opt.done ? opt.done : function(){} } - var text = $(option.elem).html(); - - $(option.elem).html(""); + + var text = $(options.elem).html(); - $(option.elem).attr("disabled", "disabled"); + $(options.elem).html(""); + $(options.elem).attr("disabled", "disabled"); - var buttons = $(option.elem); + var $button = $(options.elem); - if (option.time != "" || option.time !=false) { + if (options.time != "" || options.time != false) { setTimeout(function() { - $(option.elem).attr("disabled", false); - buttons.html(text); - option.done(); - }, option.time); + $button.attr("disabled", false); + $button.html(text); + options.done(); + }, options.time); } - option.text = text; - return new button(option); + options.text = text; + return new button(options); } /** diff --git a/component/pear/module/card.js b/component/pear/module/card.js deleted file mode 100644 index 76934da..0000000 --- a/component/pear/module/card.js +++ /dev/null @@ -1,275 +0,0 @@ -layui.define(['table', 'laypage','jquery', 'element'], function(exports) { - "use strict"; - - var MOD_NAME = 'card', - $ = layui.jquery, - element = layui.element, - laypage = layui.laypage; - - var _instances = {}; // 记录所有实例 - - var defaultOption = { - elem: "#currentTableId",// 构建的模型 - url: "",// 数据 url 连接 - loading: true,//是否加载 - limit: 0, //每页数量默认是每行数量的双倍 - linenum: 4, //每行数量 2,3,4,6 - currentPage: 1,//当前页 - data:[], //静态数据 - limits:[], //页码 - page: true, //是否分页 - layout: ['count', 'prev', 'page', 'next','limit', 'skip'],//分页控件 - request: { - pageName: 'page' //页码的参数名称,默认:page - , limitName: 'limit' //每页数据量的参数名,默认:limit - , idName: 'id' //主键名称,默认:id - , titleName: 'title' //标题名称,默认:title - , imageName: 'image' //图片地址,默认:image - , remarkName: 'remark' //备注名称,默认:remark - , timeName: 'time' //时间名称,默认:time - }, - response: { - statusName: 'code' //规定数据状态的字段名称,默认:code - , statusCode: 0 //规定成功的状态码,默认:0 - , msgName: 'msg' //规定状态信息的字段名称,默认:msg - , countName: 'count' //规定数据总数的字段名称,默认:count - , dataName: 'data' //规定数据列表的字段名称,默认:data - }, - clickItem: function(data){}, - done: function () { - - } - }; - - var card = function(opt) { - _instances[opt.elem.substring(1)] = this; - this.reload(opt); - }; - card.prototype.initOptions = function (opt) { - this.option = $.extend(true, {}, defaultOption, opt); - if (!this.option.limit || this.option.limit == 0) { - this.option.limit = this.option.linenum * 2; - } - if (!this.option.limits || this.option.limits.length == 0) { - this.option.limits = [this.option.limit]; - } - }; - - card.prototype.init = function () { - var option = this.option; - var url = option.url; - var html = ""; - html += option.loading == true ? '
                          ' : '
                          '; - html += ''; - html += '
                          '; - $(option.elem).html(html); - html = ""; - if (!!url) { - if (url.indexOf("?") >= 0) { - url = url + '&v=1.0.0'; - } - else { - url = url + '?v=1.0.0'; - } - if (!!option.page) { - url = url + '&' + option.request.limitName + '=' + option.limit; - url = url + '&' + option.request.pageName + '=' + option.currentPage; - } - if (!!option.where) { - for (let key in option.where) { - url = url + '&' + key + '=' + option.where[key]; - } - } - getData(url).then(function(data){ - data = initData(data, option); - if (data.code != option.response.statusCode) { - option.data = []; - option.count = 0; - } else { - option.data = data.data; - option.count = data.count; - } - - if (!!option.data && option.data.length > 0) { - html = createComponent(option.elem.substring(1), option.linenum, option.data); - html += "
                          "; - } - else { - if (data.code != option.response.statusCode) { - html = "

                          " + data.msg + "

                          "; - } else { - html = "

                          没有数据

                          "; - } - } - $(option.elem).html(html); - if (option.page) { - laypage.render({ - elem: 'cardpage' - , count: option.count, limit: option.limit, limits: option.limits, curr: option.currentPage - , layout: option.layout - , jump: function (obj, first) { - option.limit = obj.limit; - option.currentPage = obj.curr; - if (!first) { - _instances[option.elem.substring(1)].reload(option); - } - } - }); - } - }); - } - else { - if (!option.alldata) { - option.alldata = option.data; - } - if (option.page) { - var data = []; - option.count = option.alldata.length; - for (var i = (option.currentPage - 1) * option.limit; i < option.currentPage * option.limit && i 0) { - html = createComponent(option.elem.substring(1), option.linenum, option.data); - html += "
                          "; - } - else { - html = "

                          没有数据

                          "; - } - $(option.elem).html(html); - if (option.page) { - laypage.render({ - elem: 'cardpage' - , count: option.count, limit: option.limit, limits: option.limits, curr: option.currentPage - , layout: option.layout - , jump: function (obj, first) { - option.limit = obj.limit; - option.currentPage = obj.curr; - if (!first) { - _instances[option.elem.substring(1)].reload(option); - } - } - }); - } - } - } - - card.prototype.reload = function (opt) { - this.initOptions(this.option ? $.extend(true, this.option, opt) : opt); - this.init(); // 初始化表格 - } - - function createComponent(elem,linenum,data) { - var html = "
                          " - var content = createCards(elem, linenum,data); - var page = ""; - content = content + page; - html += content + "
                          " - return html; - } - - function createCards(elem, linenum,data) { - var content = "
                          "; - for (var i = 0; i < data.length; i++) { - content += createCard(elem, linenum,data[i],i); - } - content += "
                          "; - return content; - } - - function createCard(elem, linenum, item, no) { - var line = 12 / linenum; - var card = - '

                          ' + item.title + '

                          ' + item.remark + '
                          ' +item.time + '
                          ' - return card; - } - - function initData(tempData, option) { - var data = {}; - data.code = tempData[option.response.statusName]; - data.msg = tempData[option.response.msgName]; - data.count = tempData[option.response.countName]; - var dataList = tempData[option.response.dataName]; - if(!dataList){ - return data; - } - data.data = []; - for (var i = 0; i < dataList.length; i++) { - var item = dataList[i]; - item.id = dataList[i][option.request.idName]; - item.image = dataList[i][option.request.imageName]; - item.title = dataList[i][option.request.titleName]; - item.remark = dataList[i][option.request.remarkName]; - item.time = dataList[i][option.request.timeName]; - data.data.push(item); - } - return data; - } - - function getData(url) { - var defer = $.Deferred(); - $.get(url + (url.indexOf("?") ? "&" : "?") + "fresh=" + Math.random(), function(result) { - defer.resolve(result) - }); - return defer.promise(); - } - - window.cardTableCheckedCard = function (elem,obj) { - $(obj).addClass('layui-table-click').siblings().removeClass('layui-table-click'); - var item = {}; - item.id = obj.id; - item.index = $(obj).attr('data-index'); - item.image = $(obj).find('.project-list-item-cover')[0].src; - item.title = $(obj).find('h2')[0].innerHTML; - item.remark = $(obj).find('.project-list-item-text')[0].innerHTML; - item.time = $(obj).find('.time')[0].innerHTML; - _instances[elem.id].option.checkedItem = item; - _instances[elem.id].option.clickItem(item); - } - - /** 对外提供的方法 */ - var tt = { - - render: function (options) { - return new card(options); - }, - - reload: function (id, opt) { - _instances[id].option.checkedItem = null; - _instances[id].reload(opt); - }, - - getChecked: function (id) { - var option = _instances[id].option; - var data = option.checkedItem; - var item = {}; - if (!data) { - return null; - } - item[option.request.idName] = data.id; - item[option.request.imageName] = data.image; - item[option.request.titleName] = data.title; - item[option.request.remarkName] = data.remark; - item[option.request.timeName] = data.time; - return item; - }, - - getAllData: function (id) { - var option = _instances[id].option; - var data = []; - for (var i = 0; i < option.data.length; i++) { - var item = {}; - item[option.request.idName] = option.data[i].id; - item[option.request.imageName] = option.data[i].image; - item[option.request.titleName] = option.data[i].title; - item[option.request.remarkName] = option.data[i].remark; - item[option.request.timeName] = option.data[i].time; - data.push(item); - } - return data; - }, - } - - exports(MOD_NAME, tt); -}) \ No newline at end of file diff --git a/component/pear/module/context.js b/component/pear/module/context.js deleted file mode 100644 index a803e02..0000000 --- a/component/pear/module/context.js +++ /dev/null @@ -1,19 +0,0 @@ -layui.define(['jquery', 'element'], function(exports) { - "use strict"; - - var MOD_NAME = 'context', - $ = layui.jquery, - element = layui.element; - - var context = new function() { - - this.put = function(key,value){ - localStorage.setItem(key,value); - } - - this.get = function(key){ - return localStorage.getItem(key); - } - } - exports(MOD_NAME, context); -}); diff --git a/component/pear/module/admin.js b/component/pear/module/core/admin.js similarity index 99% rename from component/pear/module/admin.js rename to component/pear/module/core/admin.js index bc24448..3a2cf80 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/core/admin.js @@ -1,14 +1,14 @@ -layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'menu', 'frame', 'theme', 'fullscreen'], +layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'theme', 'fullscreen'], function (exports) { "use strict"; var $ = layui.jquery, form = layui.form, - element = layui.element, yaml = layui.yaml, - pearTab = layui.tab, - pearMenu = layui.menu, - pearFrame = layui.frame, + page = layui.page, + tabPage = layui.tabPage, + menu = layui.menu, + pearTheme = layui.theme, message = layui.message, fullscreen = layui.fullscreen; @@ -108,7 +108,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } this.menuRender = function (param) { - sideMenu = pearMenu.render({ + sideMenu = menu.render({ elem: 'sideMenu', async: param.menu.async !== undefined ? param.menu.async : true, theme: "dark-theme", @@ -139,7 +139,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm }) if (isMuiltTab(param) === "true" || isMuiltTab(param) === true) { - bodyTab = pearTab.render({ + bodyTab = tabPage.render({ elem: 'content', roll: true, tool: true, @@ -191,7 +191,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm compatible(); }) } else { - bodyFrame = pearFrame.render({ + bodyFrame = page.render({ elem: 'content', title: '首页', url: param.tab.index.href, diff --git a/component/pear/module/menu.js b/component/pear/module/core/menu.js similarity index 98% rename from component/pear/module/menu.js rename to component/pear/module/core/menu.js index 88b348a..f4622b0 100644 --- a/component/pear/module/menu.js +++ b/component/pear/module/core/menu.js @@ -5,11 +5,11 @@ layui.define(['table', 'jquery', 'element'], function (exports) { $ = layui.jquery, element = layui.element; - var pearMenu = function (opt) { + var menu = function (opt) { this.option = opt; }; - pearMenu.prototype.render = function (opt) { + menu.prototype.render = function (opt) { var option = { elem: opt.elem, @@ -84,10 +84,10 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }); }, 1000) - return new pearMenu(option); + return new menu(option); } - pearMenu.prototype.click = function (clickEvent) { + menu.prototype.click = function (clickEvent) { var _this = this; $("body").on("click", "#" + _this.option.elem + " .site-demo-active", function () { var dom = $(this); @@ -141,14 +141,14 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return d; } - pearMenu.prototype.skin = function (skin) { + menu.prototype.skin = function (skin) { var menu = $(".pear-nav-tree[lay-filter='" + this.option.elem + "']").parent(); menu.removeClass("dark-theme"); menu.removeClass("light-theme"); menu.addClass(skin); } - pearMenu.prototype.selectItem = function (pearId) { + menu.prototype.selectItem = function (pearId) { if (this.option.control != false) { $("#" + this.option.elem + " a[menu-id='" + pearId + "']").parents(".layui-side-scroll ").find("ul").css({ display: "none" @@ -211,7 +211,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } var activeMenus; - pearMenu.prototype.collapse = function (time) { + menu.prototype.collapse = function (time) { var elem = this.option.elem; var config = this.option; if ($("#" + this.option.elem).is(".pear-nav-mini")) { @@ -569,5 +569,5 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }); } - exports(MOD_NAME, new pearMenu()); + exports(MOD_NAME, new menu()); }) diff --git a/component/pear/module/frame.js b/component/pear/module/core/page.js similarity index 90% rename from component/pear/module/frame.js rename to component/pear/module/core/page.js index 0bdc5cd..44ba8fd 100644 --- a/component/pear/module/frame.js +++ b/component/pear/module/core/page.js @@ -4,11 +4,11 @@ layui.define(['jquery', 'element'], function (exports) { var $ = layui.jquery; var element = layui.element; - var frame = function (opt) { + var page = function (opt) { this.option = opt; }; - frame.prototype.render = function (opt) { + page.prototype.render = function (opt) { var option = { url: opt.url, elem: opt.elem, @@ -23,7 +23,7 @@ layui.define(['jquery', 'element'], function (exports) { return new frame(option); } - frame.prototype.changePage = function (url, loading) { + page.prototype.changePage = function (url, loading) { var $frameLoad = $("#" + this.option.elem).find(".pear-frame-loading"); var $frame = $("#" + this.option.elem + " .pear-frame-content"); if(loading) { @@ -47,7 +47,7 @@ layui.define(['jquery', 'element'], function (exports) { }); } - frame.prototype.changePageByElement = function (elem, url, loading) { + page.prototype.changePageByElement = function (elem, url, loading) { var $frameLoad = $("#" + elem).find(".pear-frame-loading"); var $frame = $("#" + elem + " .pear-frame-content"); if(loading) { @@ -71,7 +71,7 @@ layui.define(['jquery', 'element'], function (exports) { }); } - frame.prototype.refresh = function (loading) { + page.prototype.refresh = function (loading) { var $frameLoad = $("#" + this.option.elem).find(".pear-frame-loading"); var $frame = $("#" + this.option.elem).find(".pear-frame-content"); if(loading) { @@ -126,5 +126,5 @@ layui.define(['jquery', 'element'], function (exports) { }); } - exports('frame', new frame()); + exports('page', new page()); }); diff --git a/component/pear/module/tab.js b/component/pear/module/core/tabPage.js similarity index 96% rename from component/pear/module/tab.js rename to component/pear/module/core/tabPage.js index b2d29d3..c74327a 100644 --- a/component/pear/module/tab.js +++ b/component/pear/module/core/tabPage.js @@ -1,11 +1,11 @@ layui.define(['jquery', 'element'], function (exports) { "use strict"; - var MOD_NAME = 'tab', + var MOD_NAME = 'tabPage', $ = layui.jquery, element = layui.element; - var pearTab = function (opt) { + var tabPage = function (opt) { this.option = opt; }; @@ -13,7 +13,7 @@ layui.define(['jquery', 'element'], function (exports) { var tabDataCurrent = 0; var contextTabDOM; - pearTab.prototype.render = function (opt) { + tabPage.prototype.render = function (opt) { var option = { elem: opt.elem, @@ -121,10 +121,10 @@ layui.define(['jquery', 'element'], function (exports) { }) mousewheelAndTouchmoveHandler(option) - return new pearTab(option); + return new tabPage(option); } - pearTab.prototype.click = function (callback) { + tabPage.prototype.click = function (callback) { var option = this.option; var elem = this.option.elem; element.on('tab(' + this.option.elem + ')', function (data) { @@ -134,7 +134,7 @@ layui.define(['jquery', 'element'], function (exports) { }); } - pearTab.prototype.positionTab = function () { + tabPage.prototype.positionTab = function () { var $tabTitle = $('.layui-tab[lay-filter=' + this.option.elem + '] .layui-tab-title'); var autoLeft = 0; $tabTitle.children("li").each(function () { @@ -149,12 +149,12 @@ layui.define(['jquery', 'element'], function (exports) { }, 200); } - pearTab.prototype.clear = function () { + tabPage.prototype.clear = function () { sessionStorage.removeItem(this.option.elem + "-pear-tab-data"); sessionStorage.removeItem(this.option.elem + "-pear-tab-data-current"); } - pearTab.prototype.addTab = function (opt) { + tabPage.prototype.addTab = function (opt) { var title = ''; if (opt.close) { title += '' + opt.title + @@ -178,21 +178,21 @@ layui.define(['jquery', 'element'], function (exports) { var index = 0; // 根据过滤 fliter 标识, 重置选项卡标题 - pearTab.prototype.changeTabTitleById = function (elem, id, title) { + tabPage.prototype.changeTabTitleById = function (elem, id, title) { var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title [lay-id='" + id + "'] .title"); currentTab.html(title); } // 根据过滤 filter 标识, 删除指定选项卡 - pearTab.prototype.delTabByElem = function (elem, id, callback) { + tabPage.prototype.delTabByElem = function (elem, id, callback) { var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title [lay-id='" + id + "']"); if (currentTab.find("span").is(".able-close")) { tabDelete(elem, id, callback); } } // 根据过滤 filter 标识, 删除其他选项卡 - pearTab.prototype.delOtherTabByElem = function (elem, callback) { + tabPage.prototype.delOtherTabByElem = function (elem, callback) { var currentId = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this").attr( "lay-id"); var tabtitle = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li"); @@ -206,7 +206,7 @@ layui.define(['jquery', 'element'], function (exports) { } // 根据过滤 filter 标识, 删除全部选项卡 - pearTab.prototype.delAllTabByElem = function (elem, callback) { + tabPage.prototype.delAllTabByElem = function (elem, callback) { var currentId = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this").attr( "lay-id"); var tabtitle = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li"); @@ -217,7 +217,7 @@ layui.define(['jquery', 'element'], function (exports) { }) } // 根据过滤 filter 标识, 删除当前选项卡 - pearTab.prototype.delCurrentTabByElem = function (elem, callback) { + tabPage.prototype.delCurrentTabByElem = function (elem, callback) { var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this"); if (currentTab.find("span").is(".able-close")) { var currentId = currentTab.attr("lay-id"); @@ -230,7 +230,7 @@ layui.define(['jquery', 'element'], function (exports) { * * */ - pearTab.prototype.addTabOnly = function (opt, time) { + tabPage.prototype.addTabOnly = function (opt, time) { var title = `${opt.title}`; @@ -316,7 +316,7 @@ layui.define(['jquery', 'element'], function (exports) { } // 刷 新 指 定 的 选 项 卡 - pearTab.prototype.refresh = function (time) { + tabPage.prototype.refresh = function (time) { var $iframe = $(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-content .layui-show > div"); var $iframeLoad; @@ -628,5 +628,5 @@ layui.define(['jquery', 'element'], function (exports) { }); } - exports(MOD_NAME, new pearTab()); + exports(MOD_NAME, new tabPage()); }) diff --git a/component/pear/module/design.js b/component/pear/module/design.js deleted file mode 100644 index 6bcf7ac..0000000 --- a/component/pear/module/design.js +++ /dev/null @@ -1,182 +0,0 @@ -layui.define(['layer', 'form'], function(exports) { - var layer = layui.layer, - form = layui.form, - $ = layui.$, - key = ''; - delHtml() - $('button').on('click', function() { - var _this = $(this), - size = _this.data('size'), - type = _this.data('type'), - html = ''; - key = randStrName(); - switch (type) { - case 'text': - html = input(type, size) - break; - case 'password': - html = input(type, size) - break; - case 'select': - html = select(size) - break; - case 'checkbox_a': - html = checkbox_a(size) - break; - case 'checkbox_b': - html = checkbox_b(size) - break; - case 'radio': - html = radio(size) - break; - case 'textarea': - html = textarea(size) - break; - case 'submit': - html = submits(size) - break; - case 'del': - $('form').html("\n") - delHtml() - $('.code-show').text('') - return false - break; - default: - layer.msg('类型错误', { - icon: 2 - }) - } - - $('form').append(html); - form.render(); - setHtml(html) - }) - - function delHtml() { - layui.data('form_html', { - key: 'html', - remove: true - }); - } - - function setHtml(html) { - var h = layui.data('form_html'); - if (h && h.html) { - var _d = h.html + html - } else { - var _d = html - } - layui.data('form_html', { - key: 'html', - value: _d - }) - $('.code-show').text('
                          \n' + _d + '
                          ') - - } - - function input(type, size) { - var name = type === 'text' ? '输入框' : (type === 'password' ? '密码框' : ''); - var html = '
                          \n' + - ' \n' + - '
                          \n' + - ' \n' + - '
                          \n' + - '
                          \n'; - return html; - } - - function select(size) { - var html = '
                          \n' + - ' \n' + - '
                          \n' + - ' \n' + - '
                          \n' + - '
                          \n'; - return html; - } - - function checkbox_a(size) { - var html = '
                          \n' + - ' \n' + - '
                          \n' + - ' \n' + - ' \n' + - ' \n' + - '
                          \n' + - '
                          \n'; - return html; - } - - function checkbox_b(size) { - var html = '
                          \n' + - ' \n' + - '
                          \n' + - ' \n' + - '
                          \n' + - '
                          \n'; - return html; - } - - function radio(size) { - var html = '
                          \n' + - ' \n' + - '
                          \n' + - ' \n' + - ' \n' + - '
                          \n' + - '
                          \n'; - return html; - } - - function textarea(size) { - var html = '
                          \n' + - ' \n' + - '
                          \n' + - ' \n' + - '
                          \n' + - '
                          \n'; - return html; - } - - function submits(size) { - var html = '
                          \n' + - '
                          \n' + - ' \n' + - ' \n' + - '
                          \n' + - '
                          \n'; - return html; - } - - function jscode() { - var html = ''; - return html; - } - - function randStrName() { - return Math.random().toString(36).substr(8); - } - var jscodehtml = jscode(); - $('.js-show').text(jscodehtml) - form.on('submit(formDemo)', function(data) { - layer.msg(JSON.stringify(data.field)); - return false; - }); - exports('design', {}); -}); diff --git a/component/pear/module/dtree.js b/component/pear/module/dtree.js deleted file mode 100644 index 21fcbab..0000000 --- a/component/pear/module/dtree.js +++ /dev/null @@ -1,5530 +0,0 @@ -layui.define(['jquery','layer','form'], function(exports) { - var $ = layui.$, - layer = layui.layer, - form = layui.form; - - // 树的公共定义样式汇总 - var LI_NAV_CHILD = "dtree-nav-ul-sid", LI_NAV_ITEM = "dtree-nav-item", - LI_DIV_ITEM = "dtree-nav-div", DTREEFONTSPECIAL="dtreefont-special", NONETITLE="dtree-none-text", - LI_DIV_MENUBAR = "dtree-menubar", - LI_DIV_TOOLBAR = "dtree-toolbar", TOOLBAR_TOOL = "dtree-toolbar-tool", TOOLBAR_TOOL_EM = "dtree-toolbar-fixed", - LI_DIV_CHECKBAR = "dtree-nav-checkbox-div", - LI_CLICK_CHECKBAR = "d-click-checkbar", //绑定点击复选框时需要用到 - LI_DIV_TEXT_CLASS = "t-click", UL_ROOT="dtree", - LI_NAV_FIRST_LINE = "dtree-nav-first-line", LI_NAV_LINE = "dtree-nav-line", LI_NAV_LAST_LINE = "dtree-nav-last-line"; - - - // 树的公共指定 - var NAV_THIS = "dtree-nav-this", //当前节点 - NAV_SHOW = "dtree-nav-show", //显示子节点 - NAV_HIDE = "dtree-nav-hide", //隐藏节点 - NAV_DIS = "dtree-disabled", //禁用节点 - ICON_HIDE = "dtree-icon-hide", //隐藏图标 - $BODY = $("body"), //body选择器 - $WIN = $(window), //window窗口 - $DOC = $(document), //当前文档 - MOD_NAME = "dtree", //模块名称 - VERSION = "v2.5.8", //版本 - OPTIONS = {}, //全局属性配置 - DTrees = {}; //当前被实例化的树的集合 - - // 树的自定义图标 - var DTREEFONT = "dtreefont", //默认使用图标字体 - LI_DIV_CHECKBAR_ON = "dtree-icon-fuxuankuangxuanzhong", //复选框选中图标 - LI_DIV_CHECKBAR_OUT = "dtree-icon-fuxuankuang", //复选框未选中图标 - LI_DIV_CHECKBAR_NOALL = "dtree-icon-fuxuankuang-banxuan", //复选框半选图标 - LI_DIV_MENUBAR_DOWN = "dtree-icon-move-down", //menubar的展开全部的图标 - LI_DIV_MENUBAR_UP = "dtree-icon-move-up", //menubar的收缩全部的图标 - LI_DIV_MENUBAR_REFRESH = "dtree-icon-refresh", //menubar的刷新图标 - LI_DIV_MENUBAR_CHECKALL = "dtree-icon-roundcheckfill", //menubar的全选图标 - LI_DIV_MENUBAR_UNCHECKALL = "dtree-icon-roundclosefill", //menubar的全不选图标 - LI_DIV_MENUBAR_INVERTALL = "dtree-icon-roundcheck", //menubar的反选图标 - LI_DIV_MENUBAR_DELETE = "dtree-icon-delete1", //menubar的删除图标 - LI_DIV_MENUBAR_SEARCH = "dtree-icon-search_list_light", //menubar的搜索图标 - LI_DIV_TOOLBAR_PULLDOWN = "dtree-icon-pulldown", //toolbar的展开图标 - LI_DIV_TOOLBAR_PULLUP = "dtree-icon-pullup", //toolbar的收缩图标 - LI_DIV_TOOLBAR_ADD = "dtree-icon-roundadd", //toolbar的新增图标 - LI_DIV_TOOLBAR_EDIT = "dtree-icon-bianji", //toolbar的编辑图标 - LI_DIV_TOOLBAR_DEL = "dtree-icon-roundclose"; //toolbar的删除图标 - - // 树的非叶子节点图标集合 - var nodeIconArray = { - "-1": {"open": "dtree-icon-null-open", "close": "dtree-icon-null-close"}, //未指定 - "0" : {"open": "dtree-icon-wenjianjiazhankai", "close": "dtree-icon-weibiaoti5"}, //文件夹(二级图标默认样式) - "1" : {"open": "dtree-icon-jian", "close": "dtree-icon-jia"}, //+-图标(一级图标默认样式) - "2" : {"open": "dtree-icon-xiangxia1", "close": "dtree-icon-xiangyou"} //箭头图标 - }; - - // 树的叶子节点图标集合 - var leafIconArray = { - "-1": "dtree-icon-null", //未指定 - "0" : "dtree-icon-weibiaoti5", //文件夹 - "1" : "dtree-icon-yonghu", //人员 - "2" : "dtree-icon-fenzhijigou", //机构 - "3" : "dtree-icon-fenguangbaobiao", //报表 - "4" : "dtree-icon-xinxipilu", //信息 - "5" : "dtree-icon-shuye1", //叶子(二级图标默认样式) - "6" : "dtree-icon-caidan_xunzhang", //勋章 - "7" : "dtree-icon-normal-file", //文件 - "8" : "dtree-icon-dian", //小圆点(一级图标默认样式) - "9" : "dtree-icon-set-sm", //齿轮 - "10" : "dtree-icon-rate" //星星 - }; - - // 树的自定义样式 - var DTREE = "dtree-", //自定义样式前缀 - ITEMTHIS = "-item-this", //自定义样式当前行选中后缀 - ITEM = "-item", //自定义样式当前行后缀 - DFONT = "-dtreefont", //自定义样式图标样式后缀 - FICON = "-ficon", //自定义样式一级图标样式后缀 - ICON = "-icon", //自定义样式二级图标样式后缀 - CBOX = "-checkbox", //自定义样式复选框样式后缀 - CHS = "-choose"; //自定义样式复选框选中样式后缀 - - // 树自定义操作事件名称集合 绑定dtree-click的事件 - var eventName = { - checkNodeClick: "checkNodeClick", //点击复选框 - itemNodeClick: "itemNodeClick" //点击子节点div - }; - - // 树默认toolbar提供的功能集合 绑定dtree-tool的事件 - var defaultTool = { - pulldown: "pulldown", //点击展开当前节点下的全部节点 - pullup: "pullup", //点击收缩当前节点下的全部节点 - addTool: "addToolbar", //点击toolbar新增 - editTool: "editToolbar", //点击toolbar编辑 - delTool: "delToolbar" //点击toolbar删除 - }; - - // 树默认menubar提供的功能集合 绑定dtree-menu的事件 - var defaultMenu = { - moveDown: "moveDown", //menubar展开全部节点 - moveUp: "moveUp", //menubar收缩全部节点 - refresh: "refresh", //menubar刷新树 - checkAll: "checkAll", //menubar全选 - unCheckAll: "unCheckAll", //menubar全不选 - invertAll: "invertAll", //menubar反选 - remove: "remove", //menubar删除选中节点 - searchNode: "searchNode" //menubar查询节点 - }; - - // 树的公共事件 - var event = { - getElemId: function(options){ // 根据传入的参数获取ID - var elem = options.elem || ""; - var obj = options.obj || $(elem); - - if (obj.length == 0) { //页面中未找到绑定id - return ""; - } else { - return $(obj)[0].id; - } - }, - escape: function(html){ // 编码 - if(typeof html !== 'string') return ''; - return html.replace(entityReg.escape, function(match){return entityMap.escape[match];}); - }, - unescape: function(str){ // 解码 - if(typeof str !== 'string') return ''; - return str.replace(entityReg.unescape, function(match){return entityMap.unescape[match];}); - }, - cloneObj: function (obj, filter) { //深复制对象方法 - var newObj = {}; - if (obj instanceof Array) { - newObj = []; - } - var str = ""; - if(typeof filter !== 'undefined') {str = filter.join(",");} - for (var key in obj) { - if(str.indexOf(key) == -1){ - var val = obj[key]; - newObj[key] = typeof val === 'object' ? event.cloneObj(val, typeof filter !== undefined ? filter : []): val; - } - - } - return newObj; - }, - trimToDot: function(str){ - return str.replace(/ /g, "."); - } - }; - - // 特殊符号转义 - var keys = Object.keys || function(obj) { - obj = Object(obj); - var arr = []; - for(var a in obj) arr.push(a); - return arr; - }; - var invert = function(obj){ - obj = Object(obj); - var result = {}; - for(var a in obj) result[obj[a]] = a; - return result; - }; - var entityMap = { - escape: { - "&" : "&", - "<" : "<", - ">" : ">", - "'" : "&quo;" - } - }; - entityMap.unescape = invert(entityMap.escape); - var entityReg = { - escape: RegExp('[' + keys(entityMap.escape).join('') + ']', 'g'), - unescape: RegExp('(' + keys(entityMap.unescape).join('|') + ')', 'g') - }; - - //异步加载接口 - var AjaxHelper = { - request : function(config) { - var data = config.data ? config.data : {}; - var async = (typeof (config.async) === "boolean") ? config.async : true; - $.ajax({ - type : config.type ? config.type : "POST", - headers : config.headers, - url : config.url, - dataType : config.dataType ? config.dataType : "json", - data : data, - async : async, - contentType : config.contentType, - xhrFields: {withCredentials: config.withCredentials}, - beforeSend: function (XMLHttpRequest, self) { - if (typeof (config.beforeSend) === "function") { - return config.beforeSend(XMLHttpRequest, self); - } - return true; - }, - success : config.success, - error : function(XMLHttpRequest, textStatus, errorThrown) { - if (typeof (config.error) === "function") { - config.error(XMLHttpRequest, textStatus, errorThrown); - } else { - layer.msg("异步加载失败: " + textStatus,{icon:5, shift:6}); - } - }, - statusCode : { - 404 : function() { - layer.msg('未找到指定请求,请检查访问路径!',{icon:5, shift:6}); - }, - 500 : function() { - layer.msg('系统错误!',{icon:5, shift:6}); - } - }, - complete : function(XMLHttpRequest, textStatus) { - if (typeof (config.complete) === "function") { - config.complete(XMLHttpRequest, textStatus); - } - } - }); - }, - serialize: function(first, param){ //json序列化 key=value&key1=value1 - var p = first; - for (var key in param) { - p += key + "=" + param[key] + "&"; - } - p = p.substring(0, p.length-1); - return p; - } - }; - - /** 树类 Class定义 */ - var DTree = function(options){ - var _this = this; - /** 默认赋值**/ - this.formatter = { // 数据过滤 - title: false // 文字,默认不开启 - }; - this.response = { // 树返回的json格式 - statusName: "code", //返回标识 - statusCode: 200, //返回码 - message: "message", //返回信息 - rootName: "data", //根节点名称 - treeId: "id", //节点ID - parentId: "parentId", //父节点ID - title: "title", //节点名称 - ficonClass: "ficonClass", //自定义一级图标 - iconClass: "iconClass", //自定义二级图标 - childName: "children", //子节点名称 - last: "last", //是否最后一级节点 -// level: "level", //层级 - spread: "spread", //展开 - disabled: "disabled", //禁用 - hide: "hide", //隐藏 - checkArr: "checkArr", //复选框列表 - checked: "checked", //是否选中 - type: "type", //复选框标记 - basicData: "basicData" //表示用户自定义需要存储在树节点中的数据 - }; - this.defaultRequest = { // 树的默认发起请求参数格式,最后会将value作为参数名称传递 - nodeId: "nodeId", //节点ID - parentId: "parentId", //父节点ID - context: "context", //节点内容 - leaf: "leaf", //是否叶子节点 - level: "level", //层级 - spread: "spread", //节点展开状态 - dataType: "dataType", //节点标记 - checked: "checked", //节点复选框选中状态 - initchecked: "initchecked", //节点复选框初始状态 - basicData: "basicData", //用户自定义的记录节点数据 - recordData: "recordData", //当前data数据(排除basicData和children字段) - }; - this.toolbarFun = { - addTreeNode: function(param, $div) { //添加树节点后调用的函数,用于用户自定义,如未指定则树不会发生变化 - return ; - }, - editTreeNode: function(param, $div) { //编辑树节点后调用的函数,用于用户自定义,如未指定则树不会发生变化 - return ; - }, - editTreeLoad: function(param){ // 编辑树的数据回显,用于打开编辑时,回填数据 - return ; - }, - delTreeNode: function(param, $div){ //删除树后调用的函数,用于用户自定义,如未指定则树不会发生变化 - return ; - }, - loadToolbarBefore: function(buttons, param, $div){ // 右键菜单加载前的函数 - return buttons; - } - }; - this.toolbarStyle = { // 工具栏弹出层的自定义样式 - title: "节点", - area: ["60%","80%"] - }; - this.menubarFun = { - remove: function(checkbarNodes){ //删除复选框选中节点,需要用户自定义,如未指定则树只是页面上做了修改 - return true; - } - }; - this.menubarTips = { // 菜单栏的默认显示 - toolbar: [], - group: [defaultMenu.moveDown, defaultMenu.moveUp, defaultMenu.refresh, defaultMenu.checkAll, defaultMenu.unCheckAll, defaultMenu.invertAll, defaultMenu.remove, defaultMenu.searchNode], - freedom: [] - }; - this.checkbarFun = { - chooseBefore: function($i, node){ // 复选框点击前回调 - return true; - }, - chooseDone: function(checkbarNodesParam) { //复选框点击事件完毕后,返回该树关于复选框操作的全部信息,用于用户自定义,如未指定则树只是页面上做了修改 - return ; - } - }; - this.iframeDefaultRequest = { //iframe的默认参数,目的是与加载树的参数不一样 - nodeId: "nodeId", //节点ID - parentId: "parentId", //父节点ID - context: "context", //节点内容 - leaf: "leaf", //是否叶子节点 - level: "level", //层级 - spread: "spread", //节点展开状态 - dataType: "dataType", //节点标记 - checked: "checked", //节点复选框选中状态 - initchecked: "initchecked", //节点复选框初始状态 - basicData: "basicData", //用户自定义的记录节点数据 - recordData: "recordData", //当前data数据(排除basicData和children字段) - }; - - this.iframeFun = { - iframeDone: function(iframeParam){ //iframe加载完毕后,用于用户自定义事件 - return ; - } - }; - this.style = { //树最终使用的样式集合 - item: "", //每一项div的样式 - itemThis: "", //选中div的样式 - dfont: "", //一级图标的样式 - icon: "", //二级图标的样式 - cbox: "", //复选框的样式 - chs: "" //复选框选中的样式 - }; - this.usefontStyle = { //树最终使用的图标集合 - fnode:{ //一级节点 - node:{ //非叶子节点 - open:"", //节点展开 - close:"" //节点关闭 - }, - leaf:"" //叶子节点 - }, - snode:{ //二级节点 - node:{ //非叶子节点 - open:"", //节点展开 - close:"" //节点关闭 - }, - leaf:"" //叶子节点 - }, - checkbox:{ //复选框 - on:"", //复选框选中 - out:"", //未选中 - noall:"" //半选 - }, - menubar:{ //菜单栏 - movedown:"", //全部展开 - moveup:"", //全部收缩 - refresh:"", //刷新 - checkAll:"", //全选 - unCheckAll:"", //全不选 - invertAll:"", //反选 - remove:"", //删除 - search:"" //搜索 - }, - menubarExt:"", //扩展菜单栏 - toolbar:{ //工具栏 - menubar:{ //依附在菜单栏的工具栏 - movedown:"", //全部展开 - moveup:"", //全部收缩 - refresh:"", //刷新 - checkAll:"", //全选 - unCheckAll:"", //全不选 - invertAll:"", //反选 - remove:"", //删除 - search:"" //搜索 - }, - menubarExt:"", //依附在菜单栏的扩展菜单栏 - pulldown:"", //展开 - pullup:"", //收缩 - add:"", //添加 - edit:"", //编辑 - del:"" //删除 - }, - toolbarExt:"" //扩展工具栏 - } - - /** 数据绑定**/ - this.node = { // 树节点选中时,包含当前节点的全部信息 - nodeId: "", //节点ID - parentId: "", //父节点ID - context: "", //节点内容 - leaf: "", //是否叶子节点 - level: "", //层级 - spread: "", //节点展开状态 - dataType: "", //节点标记 - checked: "", //节点复选框选中状态 - initchecked: "", //节点复选框初始状态 - basicData: "", //用户自定义的记录节点数据 - recordData: "", //当前data数据(排除basicData和children字段) - }; - - this.toolbarMenu = {}; // 工具栏右键菜单绑定的所有元素 - this.checkbarNode = []; // 复选框标记的全部节点数据 - this.errData = []; // 记录在渲染节点时有问题的数据 - this.checkArrLen = 0; // 添加节点的时判断复选框个数 - this.temp = []; // 临时变量 - this.bak = ""; // 临时变量 - this.setting(options); - }; - - /******************** 初始参数加载 ********************/ - /** - * @Desc: 设置基本属性值 - * @Param: options:JSON对象,初始设置dtree所需的全部属性 - */ - DTree.prototype.setting = function(options) { - this.options = options || {}; - - /** 绑定元素参数(必填,2个参数项必填一个)**/ - this.elem = this.options.elem || OPTIONS.elem || ""; //树绑定的元素ID:#elem - if(typeof this.options.obj === 'undefined'){ - if(this.elem) { - if($(this.elem).length > 0) { - this.obj = $(this.elem); - } - } - } else { - this.obj = this.options.obj || OPTIONS.obj || this.obj; //树绑定的jquery元素,用于当元素是延迟加载出来的话,可以用这个找到 - this.elem = "#" + this.obj[0].id; - } - - /** 基本参数**/ - this.scroll = this.options.scroll || OPTIONS.scroll || this.elem; //树的上级div容器,让树可以显示滚动条的div容器的ID - this.accordion = (typeof (this.options.accordion) === "boolean") ? this.options.accordion : (typeof (OPTIONS.accordion) === "boolean") ? OPTIONS.accordion : false; //手风琴加载, 默认false - if(this.accordion) { - this.initLevel = 1; //默认展开节点 1节 - } else { - this.initLevel = this.options.initLevel || OPTIONS.initLevel || 2; //默认展开节点 2节 - } - this.type = this.options.type || OPTIONS.type || "load"; //树的加载方式 all,全量树, load,增量树,默认load - this.cache = (typeof (this.options.cache) === "boolean") ? this.options.cache : (typeof (OPTIONS.cache) === "boolean") ? OPTIONS.cache : true; //数据缓存,默认true - this.record = this.options.record || OPTIONS.record || false; //开启数据记录模式,默认false - this.load = (typeof (this.options.load) === "boolean") ? this.options.load : (typeof (OPTIONS.load) === "boolean") ? OPTIONS.load : true; //开启加载动画,默认true - this.none = this.options.none || OPTIONS.nont || "无数据"; //初始加载无记录时显示文字 - this.tempHeight = this.options.height || OPTIONS.height; //临时转换高度变量 - if(this.tempHeight) { // 设置高度 - if(/^full-\d+$/.test(this.tempHeight)) { - this.fullHeightGap = this.tempHeight.split('-')[1]; - this.height = $WIN.height() - this.fullHeightGap; //设置高度 - } else { - this.fullHeightGap = this.tempHeight; - this.height = this.tempHeight; - } - } else { - this.fullHeightGap = ""; - this.height = ""; - } - this.width = this.options.width || OPTIONS.width || "260"; //宽度 - this.obj.css("width", this.width); - - /** 样式相关参数**/ - this.iconfont = this.options.iconfont || OPTIONS.iconfont || DTREEFONT; //默认图标字体 dtreefont - this.iconfontStyle = this.options.iconfontStyle || OPTIONS.iconfontStyle || {}; //用于自定义树的每个关键部位使用的图标 - this.nodeIconArray = $.extend(nodeIconArray, this.options.nodeIconArray || OPTIONS.nodeIconArray) || nodeIconArray; //用户自定义非叶子节点图标集合,node - this.leafIconArray = $.extend(leafIconArray, this.options.leafIconArray || OPTIONS.leafIconArray) || leafIconArray; //用户自定义叶子节点图标集合,leaf - this.skin = this.options.skin || OPTIONS.skin || "theme"; // 自定义样式 - if(this.skin == "layui"){ // layui主题 - this.line = (typeof (this.options.line) === "boolean") ? this.options.line : (typeof (OPTIONS.line) === "boolean") ? OPTIONS.line : true; //开启树线,默认开启 - this.ficon = this.options.ficon || OPTIONS.ficon || "7"; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'7' - this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "1") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示一级图标,默认'1' - this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1]; //一级图标中的leaf节点图标 - this.icon = this.options.icon || OPTIONS.icon || "-1"; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'-1' - this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "-1") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'-1' - this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标 - } else if(this.skin == "laySimple"){ // laySimple主题 - this.line = this.options.line || OPTIONS.line || false; //开启树线,默认不开启 - this.ficon = this.options.ficon || OPTIONS.ficon || ["2","-1"]; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'-1' - this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "2") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示一级图标,默认'2' - this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1]; // 一级图标中的leaf节点图标 - this.icon = this.options.icon || OPTIONS.icon || "-1"; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'-1' - this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "-1") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'-1' - this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标 - } else { // 默认主题 或者自定义主题 - this.line = this.options.line || OPTIONS.line || false; //开启树线,默认不开启 - this.ficon = this.options.ficon || OPTIONS.ficon || "8"; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'8' - this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "1") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示一级图标,默认'1' - this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1]; // 一级图标中的leaf节点图标 - this.icon = this.options.icon || OPTIONS.icon || "5"; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'5' - this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "0") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'0' - this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标 - } - - /** 数据加载参数**/ - this.url = this.options.url || OPTIONS.url || ""; //请求地址 - this.async = (typeof (this.options.async) === "boolean") ? this.options.async : (typeof (OPTIONS.async) === "boolean") ? OPTIONS.async : true; //异步同步加载,默认异步加载 - this.asyncLoad = this.options.asyncLoad || OPTIONS.asyncLoad || []; //初始异步加载层级数据 - this.headers = this.options.headers || OPTIONS.headers || {}; //ajax header属性 - this.method = this.options.method || OPTIONS.method || "post"; //请求类型 - this.dataType = this.options.dataType || OPTIONS.dataType || "json"; //参数类型 - this.contentType = this.options.contentType || OPTIONS.contentType || "application/x-www-form-urlencoded"; //发送信息至服务器时内容编码类型 - this.defaultRequest = $.extend(this.defaultRequest, this.options.defaultRequest || OPTIONS.defaultRequest) || this.defaultRequest; //默认请求参数 - this.filterRequest = this.options.filterRequest || OPTIONS.filterRequest || []; //过滤请求参数 - this.request = this.options.request || OPTIONS.request || {}; //用户自定义请求参数 - this.response = $.extend(this.response, this.options.response || OPTIONS.response) || this.response; //返回json格式 - this.data = this.options.data || OPTIONS.data || null; //初始化指定该参数,则不会访问异步接口 - this.dataFormat = this.options.dataFormat || OPTIONS.dataFormat || "levelRelationship"; //用于用户配置的data数据格式,list:列表, levelRelationship:层级关系,默认 - this.dataStyle = this.options.dataStyle || OPTIONS.dataStyle || "defaultStyle"; //用于用户配置layui通用的json数据风格,layuiStyle:layui风格,defaultStyle:默认风格 - this.errDataShow = this.options.errDataShow || OPTIONS.errDataShow || false; //是否在递归数据出现错误后,显示错误信息,默认false - this.withCredentials = this.options.withCredentials || OPTIONS.withCredentials || false; //是否允许跨域请求,默认false - this.beforeSend = this.options.beforeSend || OPTIONS.beforeSend || function(ajax, XMLHttpRequest, self){return true}; //异步加载之前的回调 - this.success = this.options.success || OPTIONS.success || function(data, obj, first){}; //树加载完毕后执行解析树之前的回调 - this.done = this.options.done || OPTIONS.done || function(data, obj, first){}; //树加载完毕后的回调 - this.formatter = $.extend(this.formatter, this.options.formatter || OPTIONS.formatter) || this.formatter; //数据过滤 - this.error = this.options.error || OPTIONS.error || function(XMLHttpRequest, textStatus, errorThrown){}; // 异步加载异常回调 - this.complete = this.options.complete || OPTIONS.complete || function(XMLHttpRequest, textStatus){}; // 异步加载完成回调 - - /** 复选框参数**/ - this.checkbar = this.options.checkbar || OPTIONS.checkbar || false; //是否开启复选框模式 - this.checkbarLoad = this.options.checkbarLoad || OPTIONS.checkbarLoad || "node"; //复选框作用范围,node:所有节点, leaf:最后一级;默认所有节点 - this.checkbarType = this.options.checkbarType || OPTIONS.checkbarType || "all"; //复选框选中形式 all:子集选中父级也选中, no-all:子集选中父级半选中,子集全选父级选中,p-casc:父级选中子集全选,子集无法改变父级选中状态, self:没有任何级联关系,only:只能选中一个复选框。 默认all - this.checkbarData = this.options.checkbarData || OPTIONS.checkbarData || "choose"; //复选框记录数据类型形式, change表示记录变更数据,choose表示记录选中数据,all记录全部数据,halfChoose记录选中和半选中的数据,默认choose - this.checkbarFun = $.extend(this.checkbarFun, this.options.checkbarFun || OPTIONS.checkbarFun) || this.checkbarFun; //checkbar事件加载 - - /** 菜单栏参数**/ - this.menubar = this.options.menubar || OPTIONS.menubar || false; //是否打开菜单栏 - this.menubarTips = $.extend(this.menubarTips, this.options.menubarTips || OPTIONS.menubarTips) || this.menubarTips; //菜单栏吸附, toolbar:依附在工具栏,group:依附在按钮组,freedom,自由 - this.menubarFun = $.extend(this.menubarFun, this.options.menubarFun || OPTIONS.menubarFun) || this.menubarFun; //menubar事件加载 - - /** 工具栏参数**/ - this.toolbar = this.options.toolbar || OPTIONS.toolbar || false; //是否开启可编辑模式 - this.toolbarWay = this.options.toolbarWay || OPTIONS.toolbarWay || "contextmenu"; //工具栏显示方式,contextmenu:右键,follow:跟随节点,fixed:固定在节点右侧 - this.toolbarStyle = $.extend(this.toolbarStyle, this.options.toolbarStyle || OPTIONS.toolbarStyle) || this.toolbarStyle; //toolbar的自定义风格,标题,弹框大小 - this.toolbarLoad = this.options.toolbarLoad || OPTIONS.toolbarLoad || "node"; //toolbar作用范围:node:所有节点,noleaf:非最后一级节点,leaf:最后一级 - this.toolbarShow = this.options.toolbarShow || OPTIONS.toolbarShow || ["add","edit","delete"]; //toolbar三个按钮自定义加载 - this.toolbarBtn = this.options.toolbarBtn || OPTIONS.toolbarBtn || null; //toolbar增删改中内容的自定义加载 - this.toolbarExt = this.options.toolbarExt || OPTIONS.toolbarExt || []; //toolbar按钮扩展 - this.toolbarFun = $.extend(this.toolbarFun, this.options.toolbarFun || OPTIONS.toolbarFun) || this.toolbarFun; //toolbar事件加载 - - /** iframe模式参数**/ - this.useIframe = this.options.useIframe || OPTIONS.useIframe || false; //是否加载iframe 默认false, - this.iframeElem = this.options.iframeElem || OPTIONS.iframeElem || ""; //iframe的ID - this.iframeUrl = this.options.iframeUrl || OPTIONS.iframeUrl || ""; //树关联的iframe地址 - this.iframeLoad = this.options.iframeLoad || OPTIONS.iframeLoad || "leaf"; //点击哪一层加载frame: node:所有节点, leaf:默认,最后一级 - this.iframeDefaultRequest = $.extend(this.iframeDefaultRequest, this.options.iframeDefaultRequest || OPTIONS.iframeDefaultRequest) || this.iframeDefaultRequest; //iframe的默认传递参数 - this.iframeRequest = $.extend(this.iframeRequest, this.options.iframeRequest) || $.extend(this.iframeRequest, OPTIONS.iframeRequest) || this.iframeRequest; //iframe的自定义参数 - this.iframeFun = $.extend(this.iframeFun, this.options.iframeFun) || $.extend(this.iframeFun, OPTIONS.iframeFun) || this.iframeFun; //iframe事件加载 - - /** 下拉树模式参数**/ - this.select = this.options.select || false; - if(this.select) { - // 重置下拉树 - this.selectSetting(); - } - - /** 调用确认最终主题方法*/ - this.ensureTheme(); - }; - - /** - * @Desc: 重置基本属性值 - * @Param: options:JSON对象,重置dtree所需的全部属性 - */ - DTree.prototype.reloadSetting = function(options) { - this.options = $.extend(this.options, options) || this.options; - - /** 绑定元素参数**/ - this.elem = this.options.elem || this.elem; //树绑定的元素ID:#elem - if(typeof this.options.obj === 'undefined'){ - if(this.elem) { - if($(this.elem).length > 0) { - this.obj = $(this.elem); - } - } - } else { - this.obj = this.options.obj || this.obj; //树绑定的jquery元素,用于当元素是延迟加载出来的话,可以用这个找到 - this.elem = "#" + this.obj[0].id; - } - - /** 基本参数**/ - this.scroll = this.options.scroll || this.scroll; //树的上级div容器,让树可以显示滚动条的div容器 - this.accordion = (typeof (this.options.accordion) === "boolean") ? this.options.accordion : this.accordion; //开启手风琴加载 - if(this.accordion) { - this.initLevel = 1; //默认展开节点 1节 - } else { - this.initLevel = this.options.initLevel || this.initLevel; //默认展开节点 2节 - } - this.type = this.options.type || this.type; //树的加载方式 all,全量树, load,增量树,默认load - this.cache = (typeof (this.options.cache) === "boolean") ? this.options.cache : this.cache; //开启数据缓存 - this.record = (typeof (this.options.record) === "boolean") ? this.options.record : this.record; //开启数据记录模式 - this.load = (typeof (this.options.load) === "boolean") ? this.options.load : this.load; //开启加载动画 - this.none = this.options.none || this.none; //初始节点加载无数据时显示文字 - this.tempHeight = this.options.height || this.height; //临时转换高度变量 - if(this.tempHeight) { //设置高度 - if(/^full-\d+$/.test(this.tempHeight)) { - this.fullHeightGap = this.tempHeight.split('-')[1]; - this.height = $WIN.height() - this.fullHeightGap; - } else { - this.fullHeightGap = this.tempHeight; - this.height = this.tempHeight; - } - } - this.width = this.options.width || this.width; //宽度 - this.obj.css("width", this.width); - - /** 样式相关参数**/ - this.line = (typeof (this.options.line) === "boolean") ? this.options.line : this.line; //开启树线,默认不开启 - this.iconfont = this.options.iconfont || this.iconfont; //默认图标字体 dtreefont - this.iconfontStyle = this.options.iconfontStyle || this.iconfontStyle; //用于自定义树的每个关键部位使用的图标 - this.nodeIconArray = $.extend(nodeIconArray, this.options.nodeIconArray) || this.nodeIconArray; //用户自定义非叶子节点图标集合,node - this.leafIconArray = $.extend(leafIconArray, this.options.leafIconArray) || this.leafIconArray; //用户自定义叶子节点图标集合,leaf - this.skin = this.options.skin || this.skin; //自定义样式 - if(this.skin == "layui"){ //layui主题 - this.line = (typeof (this.options.line) === "boolean") ? this.options.line : true; //开启树线,默认开启 - this.ficon = this.options.ficon || this.ficon; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'7' - this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "1") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'1' - this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1]; //一级图标中的leaf节点图标 - this.icon = this.options.icon || this.icon; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'-1' - this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "-1") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'-1' - this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标 - } else if(this.skin == "laySimple"){ //laySimple主题 - this.line = (typeof (this.options.line) === "boolean") ? this.options.line : false; //开启树线,默认不开启 - this.ficon = this.options.ficon || this.ficon; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'-1' - this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "2") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'2' - this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1];//一级图标中的leaf节点图标 - this.icon = this.options.icon || this.icon; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'-1' - this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "-1") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'-1' - this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标 - } else { // 默认主题 或者自定义主题 - this.line = (typeof (this.options.line) === "boolean") ? this.options.line : false; //开启树线,默认不开启 - this.ficon = this.options.ficon || this.ficon; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'8' - this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "1") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'1' - this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1]; // 一级图标中的leaf节点图标 - this.icon = this.options.icon || this.icon; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'5' - this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "0") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'0' - this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标 - } - - /** 数据加载参数**/ - this.url = this.options.url || this.url; //请求地址 - this.async = (typeof (this.options.async) === "boolean") ? this.options.async : this.async; //异步同步加载,默认异步加载 - this.asyncLoad = this.options.asyncLoad || this.asyncLoad; //初始异步加载层级数据 - this.headers = this.options.headers || this.headers; //ajax header属性 - this.method = this.options.method || this.method; //请求类型 - this.dataType = this.options.dataType || this.dataType; //参数类型 - this.contentType = this.options.contentType || this.contentType; //发送信息至服务器时内容编码类型 - this.defaultRequest = $.extend(this.defaultRequest, this.options.defaultRequest) || this.defaultRequest; //默认请求参数 - this.filterRequest = this.options.filterRequest || this.filterRequest; //过滤请求参数 - this.request = this.options.request || this.request; //用户自定义请求参数 - this.response = $.extend(this.response, this.options.response) || this.response; //返回json格式 - this.data = this.options.data || this.data; //初始化指定该参数,则不会访问异步接口 - this.dataFormat = this.options.dataFormat || this.dataFormat; //用于用户配置的data数据格式,list:列表, levelRelationship:层级关系,默认 - this.dataStyle = this.options.dataStyle || this.dataStyle; //用于用户配置layui通用的json数据风格,layuiStyle:layui风格,defaultStyle:默认风格 - this.errDataShow = (typeof (this.options.errDataShow) === "boolean") ? this.options.errDataShow : this.errDataShow; //是否在使用list模式递归数据出现错误时,显示错误信息 - this.withCredentials = (typeof (this.options.withCredentials) === "boolean") ? this.options.withCredentials : this.withCredentials; //是否允许跨域请求 - this.beforeSend = this.options.beforeSend || this.beforeSend; //异步加载之前的回调 - this.success = this.options.success || this.success; //树加载完毕后执行解析树之前的回调 - this.done = this.options.done || this.done; //树加载完毕后的回调 - this.formatter = $.extend(this.formatter, this.options.formatter)|| this.formatter; //数据过滤 - this.error = this.options.error || this.error; //异步加载异常回调 - this.complete = this.options.complete || this.complete; //异步加载完成回调 - - /** 复选框参数**/ - this.checkbar = this.options.checkbar || this.checkbar; //是否开启复选框模式 - this.checkbarLoad = this.options.checkbarLoad || this.checkbarLoad; //复选框作用范围,node:所有节点, leaf:最后一级;默认所有节点 - this.checkbarType = this.options.checkbarType || this.checkbarType; //复选框选中形式 all:子集选中父级也选中, no-all:子集选中父级半选中,子集全选父级选中,p-casc:父级选中子集全选,子集无法改变父级选中状态, self:没有任何级联关系,only:只能选中一个复选框。 默认all - this.checkbarData = this.options.checkbarData || this.checkbarData; //复选框记录数据类型形式, change表示记录变更数据,choose表示记录选中数据,all记录全部数据,halfChoose记录选中和半选中的数据,默认choose - this.checkbarFun = $.extend(this.checkbarFun, this.options.checkbarFun)|| this.checkbarFun; //checkbar事件加载 - - /** 菜单栏参数**/ - this.menubar = this.options.menubar || this.menubar; //是否打开菜单栏 - this.menubarTips = $.extend(this.menubarTips, this.options.menubarTips) || this.menubarTips; //菜单栏吸附, toolbar:依附在工具栏,group:依附在按钮组,freedom,自由 - this.menubarFun = $.extend(this.menubarFun, this.options.menubarFun) || this.menubarFun; //menubar事件加载 - - /** 工具栏参数**/ - this.toolbar = this.options.toolbar || this.toolbar; //是否开启工具栏 - this.toolbarWay = this.options.toolbarWay || this.toolbarWay; //工具栏显示方式,contextmenu:右键,follow:跟随节点,fixed:固定在节点右侧 - this.toolbarStyle = $.extend(this.toolbarStyle, this.options.toolbarStyle) || this.toolbarStyle; //toolbar的自定义风格,标题,弹框大小 - this.toolbarLoad = this.options.toolbarLoad || this.toolbarLoad; //toolbar作用范围:node:所有节点,noleaf:非最后一级节点,leaf:最后一级 - this.toolbarShow = this.options.toolbarShow || this.toolbarShow; //toolbar三个按钮 - this.toolbarBtn = this.options.toolbarBtn || this.toolbarBtn; //toolbar增删改中内容的自定义加载 - this.toolbarExt = this.options.toolbarExt || this.toolbarExt; //toolbar按钮扩展 - this.toolbarFun = $.extend(this.toolbarFun, this.options.toolbarFun) || this.toolbarFun; //toolbar事件加载 - - /** iframe模式参数**/ - this.useIframe = this.options.useIframe || this.useIframe;//是否加载iframe 默认false - this.iframeElem = this.options.iframeElem || this.iframeElem; //iframe的ID - this.iframeUrl = this.options.iframeUrl || this.iframeUrl; //树关联的iframe地址 - this.iframeLoad = this.options.iframeLoad || this.iframeLoad; //点击哪一层加载frame: node:所有节点, leaf:默认,最后一级 - this.iframeDefaultRequest = $.extend(this.iframeDefaultRequest, this.options.iframeDefaultRequest) || this.iframeDefaultRequest; //iframe的默认传递参数 - this.iframeRequest = $.extend(this.iframeRequest, this.options.iframeRequest) || this.iframeRequest; //iframe的自定义参数 - this.iframeFun = $.extend(this.iframeFun, this.options.iframeFun) || this.iframeFun; //iframe事件加载 - - /** 下拉树模式参数**/ - if(this.select) { - // 重置下拉树 - this.reloadSelectSetting(); - } - - /** 调用确认最终主题方法*/ - this.ensureTheme(); - - }; - - /** - * @Desc: 设置下拉树的基本参数值 - */ - DTree.prototype.selectSetting = function() { - /** select模式参数*/ - this.select = true; //配置成select模式 - - this.selectInitVal = this.obj.attr("data-value") || this.options.selectInitVal || ""; //输入框的值 - this.selectTreeDiv = this.obj[0].id + "_tree_div"; // 上级DIV节点 - this.selectCardDiv = this.obj[0].id + "_select_card_div"; // 上级layui卡片节点 - this.selectDiv = this.obj[0].id + "_select_div"; // 模拟的select节点 - this.selectTipsName = this.obj[0].id + "_select_input"; // select的提示输入框名称 - this.selectTips = this.options.selectTips || "请选择"; // 输入框的提示语 - this.selectCardHeight = this.options.selectCardHeight || "350"; // 下拉面板的高度 - this.selectInputName = this.options.selectInputName || {nodeId: this.obj[0].id + "_select_nodeId"}; // select表单中的元素 - - // 调取下拉树的特殊处理页面元素标识 - this.renderSelectDom(); - } - - /** - * @Desc: 重置下拉树的基本参数值 - */ - DTree.prototype.reloadSelectSetting = function() { - - this.selectInitVal = this.obj.attr("data-value") || this.options.selectInitVal || this.selectInitVal; //输入框的值 - this.selectTips = this.options.selectTips || this.selectTips; // 输入框的提示语 - this.selectCardHeight = this.options.selectCardHeight || this.selectCardHeight; // 下拉面板的高度 - this.selectInputName = $.extend(this.selectInputName, this.options.selectInputName) || this.selectInputName; // select表单中的元素 - - // 调取下拉树的特殊处理页面元素标识 - this.reloadSelectDom(); - } - - /******************** 下拉树设置区域 ********************/ - /** - * @Desc: 渲染下拉树的Dom结构 - */ - DTree.prototype.renderSelectDom = function() { - var _this = this; - var rootId = _this.obj[0].id; - - // 设置自定义表单隐藏域 - var selectInputName = _this.selectInputName; - var selectInput = []; - for(var key in selectInputName) { - selectInput.push(''); - } - - // 设置html - var prevHtml = ['
                          ', - '
                          ', selectInput.join(""), - '', - '', - '
                          '].join(''); - - _this.obj.before(prevHtml); - - var cardStyle = "style="; - if(this.selectCardHeight) { - cardStyle += "'height:"+_this.selectCardHeight+"px'"; - } - _this.obj.wrap('
                          ').wrap('
                          ').wrap('
                          '); - - } - - /** - * @Desc: 重新渲染下拉树的Dom结构 - */ - DTree.prototype.reloadSelectDom = function() { - var _this = this; - var rootId = _this.obj[0].id; - - // 设置自定义表单隐藏域 - var selectInputName = _this.selectInputName; - var selectInput = []; - for(var key in selectInputName) { - selectInput.push(''); - } - - $("div[dtree-id='"+rootId+"'][dtree-select='"+_this.selectDiv+"']").find("div.layui-select-title").html(""); - - // 设置html - var prevHtml = [selectInput.join(""), - '', - ''].join(''); - - $("div[dtree-id='"+rootId+"'][dtree-select='"+_this.selectDiv+"']").find("div.layui-select-title").html(prevHtml); - - var cardStyle = "style="; - if(this.selectCardHeight) { - cardStyle += "'height:"+_this.selectCardHeight+"px'"; - } - $("div[dtree-id='"+rootId+"'][dtree-card='"+_this.selectCardDiv+"']").attr("style", cardStyle); - } - - /** - * @Desc: 设置下拉树模式中,input输入框的值 - * @Param: param: input中的值对应树数据的ID值\当前树选中的数据JSON对象,可不传,不传的话则树内部读取 - */ - DTree.prototype.selectVal = function(param) { - var _this = this; - var rootId = _this.obj[0].id; - var selectInputName = _this.selectInputName; - var selectTipsNameValue = ""; - var selectValues = {}; - - // 如果开启了复选框,则此方法用来取值 - if(_this.checkbar) { - return _this.selectCheckboxVal(); - } - - if(typeof param === 'undefined') { // 不传,则为当前树中记录的ID - param = _this.getNowParam(); - } - if(typeof param === 'string') { // 传递ID,则查询树节点ID对应的值 - param = _this.getParam(param); - } - - selectTipsNameValue = param["context"]; - for(var key in selectInputName) { - selectValues[selectInputName[key]] = param[key]; - $("div[dtree-select='" + _this.selectDiv + "']").find("input[dtree-id='" + rootId + "'][name='"+selectInputName[key]+"']").val(param[key] || ""); - } - - if(param["nodeId"] && !param["context"]) { - selectTipsNameValue = _this.getParam(param["nodeId"]); - } - - // 返显提示输入框值 - $("div[dtree-select='" + _this.selectDiv + "']").find("input[dtree-id='" + rootId + "'][name='"+_this.selectTipsName+"']").val(selectTipsNameValue || ""); - - // 返回隐藏域中的值 - return selectValues; - } - - /** - * @Desc: 设置复选框模式中的下拉树的选中值 - */ - DTree.prototype.selectCheckboxVal = function() { - var _this = this; - var rootId = _this.obj[0].id; - var selectInputName = _this.selectInputName; - - // 获取全部复选框选中节点 - var param = _this.getCheckbarJsonArrParam(); - - selectTipsNameValue = param["context"]; - var selectValues = {}; - for(var key in selectInputName) { - var value = param[key].join(","); - selectValues[selectInputName[key]] = value; - $("div[dtree-select='" + _this.selectDiv + "']").find("input[dtree-id='" + rootId + "'][name='"+selectInputName[key]+"']").val(value); - } - - $("div[dtree-select='" + _this.selectDiv + "']").find("input[dtree-id='" + rootId + "'][name='"+_this.selectTipsName+"']").val(selectTipsNameValue); - - // 返回隐藏域中的值 - return selectValues; - } - - /** - * @Desc: 重置下拉树的值,1.表单清空;2.节点重置;3.复选框重置 - */ - DTree.prototype.selectResetVal = function() { - var _this = this; - var rootId = _this.obj[0].id; - // 表单清空 - $("input[dtree-id='"+rootId+"']").val(""); - // 节点重置 - _this.cancelNavThis(); - if(_this.checkbar) { - // 复选框重置 - _this.cancelCheckedNode(); - } - } - - - /******************** 字体及图标区域 ********************/ - /** - * @Desc: 树使用的最终主题方案 - */ - DTree.prototype.ensureTheme = function(){ - var _this = this; - - // 确认style - this.style.item = DTREE + this.skin + ITEM; - this.style.itemThis = DTREE + this.skin + ITEMTHIS; - this.style.dfont = DTREE + this.skin + DFONT; - this.style.ficon = DTREE + this.skin + FICON; - this.style.icon = DTREE + this.skin + ICON; - this.style.cbox = DTREE + this.skin + CBOX; - this.style.chs = DTREE + this.skin + CHS; - - // 确认usefontStyle - var iconfont = this.iconfont; - var iconfonts = []; - if(typeof iconfont === 'string') { - iconfonts.push(iconfont); - } else { - iconfonts = iconfont; - } - - var iconfontStyle = this.iconfontStyle; - var iconfontStyles = []; - if(iconfontStyle.length == undefined) { - iconfontStyles.push(iconfontStyle); - } else { - iconfontStyles = iconfontStyle; - } - - for(var i=0; i 0) { - $lis.each(function(){ - _this.showLineLi($(this)); - }); - } else { - _this.obj.find("li[data-id]").each(function(){ - _this.showLineLi($(this)); - }); - } - } - } - - /** - * @Desc: 真正显示树线的方法 - * @Param: $li: JQuery对象,表示组成树的li节点 - */ - DTree.prototype.showLineLi = function($li){ - var _this = this; - var $div = $li.children("div"), - $nextLi = $li.next("li"), - $ul = $li.parent("ul"); - if($ul[0].id == _this.obj[0].id) { - // 根节点下的节点 - $li.removeClass(LI_NAV_LINE); - $li.removeClass(LI_NAV_LAST_LINE); - $li.addClass(LI_NAV_FIRST_LINE); - } else { - // 非根节点下的节点 - var $pnextLi = $ul.parent("li").next("li"); - if($pnextLi.length == 0) { - if($nextLi.length == 0){ - $li.removeClass(LI_NAV_LINE); - $li.removeClass(LI_NAV_FIRST_LINE); - $li.addClass(LI_NAV_LAST_LINE); - } else { - $li.removeClass(LI_NAV_FIRST_LINE); - $li.removeClass(LI_NAV_LAST_LINE); - $li.addClass(LI_NAV_LINE); - } - }else { - var $pnextdiv = $pnextLi.children("div"); - if($nextLi.length == 0 && $div.children("cite").attr("data-leaf") == "leaf" && $pnextdiv.children("cite").attr("data-leaf") == "leaf") { - $li.removeClass(LI_NAV_FIRST_LINE); - $li.removeClass(LI_NAV_LINE); - $li.addClass(LI_NAV_LAST_LINE); - } else { - $li.removeClass(LI_NAV_FIRST_LINE); - $li.removeClass(LI_NAV_LAST_LINE); - $li.addClass(LI_NAV_LINE); - } - } - } - } - - /******************** 初始化数据区域 ********************/ - /** - * @Desc: 设置高度 - */ - DTree.prototype.autoHeight = function(){ - var _this = this; - var height = _this.height; - if(height != "") { - if(_this.elem == _this.scroll){ - _this.obj.parent().css("height", height + "px"); - } else { - var $toolbarDiv = _this.obj.closest(_this.scroll); - $toolbarDiv.css("height", height + "px"); - } - } - }; - - /** - * @Desc: 重载树 - * @Param: options: dtree的所有属性的json对象 - */ - DTree.prototype.reload = function(options){ - var _this = this; - _this.reloadSetting(options); - _this.init(); - }; - - /** - * @Desc: 初始化加载 - */ - DTree.prototype.loadTreeInit = function(){ - var _this = this; - var asyncLoad = _this.asyncLoad; - // 初始化加载 - _this.init(function(){ - // ajax加载之后的回调 - if(asyncLoad && asyncLoad.length > 0) { - _this.obj.addClass(NAV_SHOW); - - // 说明此时要异步加载子节点 - _this.loadChildTreeInit(asyncLoad, 0); - } - }) - } - - /** - * @Desc: 初始化加载子节点 - * @Param: asyncLoad: 需异步加载的层级,在基础属性中配置 - * @Param: i: 已经加载到的层级 - */ - DTree.prototype.loadChildTreeInit = function(asyncLoad, i){ - var _this = this; - if(i == asyncLoad.length) { // 满足条件,终止递归 - return ; - } - - var $div = _this.getNode(asyncLoad[i]); - - if($div && $div.length > 0) { - // 设置节点状态 - var $ul = $div.next("ul"), - $i_fnode = _this.getNodeDom($div).fnode(), - $i_snode = _this.getNodeDom($div).snode(); - - $ul.addClass(NAV_SHOW); - _this.accordionUL($ul); - _this.operateIcon($i_fnode, $i_snode).open(); - // 加载子节点 - _this.getChild($div, undefined, function(){ - // 继续递归 - _this.loadChildTreeInit(asyncLoad, ++i); - }); - } - - } - - /** - * @Desc: 初始化树 - * @Param: callback: 异步加载完成之后的回调函数 - */ - DTree.prototype.init = function(callback){ - var _this = this; - if (typeof _this !== "object") { - layer.msg("树组件未成功加载,请检查配置", {icon:5}); - return ; - } - - // 设置组件高度 - _this.autoHeight(); - - if(_this.data) { - _this.dataLoadTree(true, _this.obj, _this.data); - } else { - _this.asyncLoadTree(true, _this.obj, callback); - } - }; - - /** - * @Desc: 加载子节点 - * @Param: $div: JQuery对象,代表当前子节点的父节点div - * @Param: data: data方式加载的数据 - * @Param: callback: 子节点加载完成之后的回调喊出 - */ - DTree.prototype.getChild = function($div, data, callback) { - var _this = this, $ul = $div.next("ul"); - - _this.setNodeParam($div); - - if(typeof data !== 'undefined') { - _this.dataLoadTree(false, $ul, data); - } else { - _this.asyncLoadTree(false, $ul, callback); - } - }; - - /** - * @Desc: 用data加载树 - * @Param: first: 表示是否第一次加载 - * @Param: $ul: JQuery对象,代表当前数据加载到的ul标签里 - * @Param: data: data加载的数据 - */ - DTree.prototype.dataLoadTree = function(first, $ul, data){ - var _this = this; - - if(typeof data.length === 'undefined'){ - layer.msg("数据解析异常,data数据格式不正确", {icon:5}); - return ; - } - - if(first && data.length == 0) { - $ul.html(_this.getNoneDom().text()); - return ; - } - - //先将ul中的元素清空 - $ul.html(""); - - var index = _this.load ? layer.load(1) : ""; - - setTimeout(function () { - // 加载完毕后执行树解析前的回调 - var returnData = _this.success(data, $ul, first); - if(returnData) { - data = returnData; - } - - var pid = (first == true) ? $ul.attr("data-id") : _this.node.nodeId; - var level = (first == true) ? 1 : parseInt(_this.node.level)+1; - - // 解析树 - if (_this.dataFormat == 'list'){ - //1.构建一个存放节点的树组 - var rootListData = _this.queryListTreeByPid(pid, data); - _this.loadListTree(rootListData, _this.data, level); - } else { - _this.loadTree(data, level); - } - - // 显示树线 - _this.showLine(); - - // 这种情况下需要一开始就将toolbar显示在页面上 - if(_this.toolbar && _this.toolbarWay != 'contextmenu') { - _this.setToolbarDom().setToolbarPlace(_this.toolbarMenu); - } - - // 判断是否存在错误数据,并是否打印错误数据 - _this.msgErrData(); - - // 设置下拉树的初始值 - if(first && _this.select && _this.selectInitVal){ - if(_this.checkbar) { // 复选框模式下 - _this.chooseDataInit(_this.selectInitVal); - _this.selectCheckboxVal(_this.selectInitVal); - } else { // 普通模式下 - _this.dataInit(_this.selectInitVal); - _this.selectVal(_this.selectInitVal); - } - } - - // 保存树副本 - _this.bak = _this.obj.html(); - - // 加载完毕后的回调 - _this.done(_this.data, $ul, first); - - if(_this.load){layer.close(index);} - }, 100); - } - - /** - * @Desc: 异步加载树 - * @Param: first: 表示是否第一次加载 - * @Param: $ul: JQuery对象,代表当前数据加载到的ul标签里 - * @Param: callback: 异步加载完成之后的回调函数 - */ - DTree.prototype.asyncLoadTree = function(first, $ul, callback){ - var _this = this; - - if (!_this.url) { - layer.msg("数据请求异常,url参数未指定", {icon:5}); - return ; - } - - //先将ul中的元素清空 - $ul.html(""); - - var index = ""; - - AjaxHelper.request({ - async: _this.async, - headers: _this.headers, - type: _this.method, - url: _this.url, - dataType: _this.dataType, - contentType: _this.contentType, - withCredentials: _this.withCredentials, - data: _this.getFilterRequestParam(_this.getRequestParam()), - beforeSend: function(XMLHttpRequest, self){ - index = _this.load ? layer.load(1) : ""; - var returnFlag = _this.beforeSend(this, XMLHttpRequest, self); - if(!returnFlag) { - if(_this.load){layer.close(index);} - } - return returnFlag; - }, - success: function(result) { - if (typeof result === 'string') { - result = $.parseJSON(result); - } - - // 加载完毕后执行树解析前的回调 - var returnData = _this.success(result, $ul, first); - if(returnData) { - result = returnData; - } - - var code = ""; - if (_this.dataStyle == 'layuiStyle'){ - code = result[_this.response.statusName]; - } else { - code = result.status[_this.response.statusName]; - } - - if (code == _this.response.statusCode) { - - var d = result[_this.response.rootName]; - - if(first && typeof d.length === 'undefined'){ - $ul.html(_this.getNoneDom().errText("数据解析异常,url回调后的数据格式不正确")); - //layer.msg("数据解析异常,url回调后的数据格式不正确", {icon:5}); - return ; - } - - if(first && d.length == 0) { - $ul.html(_this.getNoneDom().text()); - return ; - } - - //1.识别根节点ul中的data-id标签,判断顶级父节点 - var pid = (first == true) ? $ul.attr("data-id") : _this.node.nodeId; - var level = (first == true) ? 1 : parseInt(_this.node.level)+1; - - // 第一次解析树 - if (_this.dataFormat == 'list'){ - //1.构建一个存放节点的树组 - var rootListData = _this.queryListTreeByPid(pid, d); - if(first) { - _this.loadListTree(rootListData, d, level); - } else { - _this.loadListTree(rootListData, d, level, $ul); - } - } else { - if(first) { - _this.loadTree(d, level); - } else { - _this.loadTree(d, level, $ul); - } - } - - // 显示树线 - _this.showLine(); - - // 这种情况下需要一开始就将toolbar显示在页面上 - if(_this.toolbar && _this.toolbarWay != 'contextmenu') { - _this.setToolbarDom().setToolbarPlace(_this.toolbarMenu); - } - - // 判断是否存在错误数据,并是否打印错误数据 - _this.msgErrData(); - - if(!first) { - $ul.addClass(NAV_SHOW); - } - - // 设置下拉树的初始值 - if(first && _this.select && _this.selectInitVal){ - if(_this.checkbar) { // 复选框模式下 - _this.chooseDataInit(_this.selectInitVal); - _this.selectCheckboxVal(_this.selectInitVal); - } else { // 普通模式下 - _this.dataInit(_this.selectInitVal); - _this.selectVal(_this.selectInitVal); - } - } - - // 保存树副本 - _this.bak = _this.obj.html(); - - // 加载完毕后的回调 - _this.done(result, $ul, first); - - callback && callback(); - } else { - // 如果打印不出任何信息说明是在这里,用了错误的数据格式, 或返回码不正确 - if (_this.dataStyle == 'layuiStyle'){ - _this.obj.html(_this.getNoneDom().errText(result[_this.response.message])); - _this.error(null, code, result[_this.response.message]); - } else { - _this.obj.html(_this.getNoneDom().errText(result.status[_this.response.message])); - _this.error(null, code, result.status[_this.response.message]); - } - } - }, - error: function(XMLHttpRequest, textStatus, errorThrown){// 异步加载异常回调 - _this.obj.html(_this.getNoneDom().errText(textStatus + ": " + errorThrown)); - _this.error(XMLHttpRequest, textStatus, errorThrown); - }, - complete: function(XMLHttpRequest, textStatus){// 异步加载完成回调 - if(_this.load){layer.close(index);} - _this.complete(XMLHttpRequest, textStatus); - } - }); - - } - - /** - * @Desc: 初始化渲染树或者拼接渲染树,list模式下 - * @Param: nowListData: 表示当前需要被渲染的数据 - * @Param: listData: 表示全部数据 - * @Param: level: 当前渲染的层级 - * @Param: $ul: JQuery对象,代表当前数据加载到的ul标签里 - */ - DTree.prototype.loadListTree = function(nowListData, listData, level, $ul){ - var _this = this; - $ul = $ul || _this.getNodeDom().nowOrRootUl(); //当前选中的节点或根节点 - if (nowListData.length > 0){ - for (var i = 0; i < nowListData.length; i++) { - // 1.获取已知节点的全部数据 - var data = nowListData[i]; - if(typeof data !== "object") continue; - var parseData = _this.parseData(data); - var childListData = _this.queryListTreeByPid(parseData.treeId(), listData); // 根据已知数据的id判断该条数据是否还有子数据 - - // 3. 页面元素加载数据 - $ul.append(_this.getLiItemDom(parseData.treeId(), parseData.parentId(), parseData.title(), parseData.fmtTitle(), parseData.last(childListData.length), parseData.ficonClass(), parseData.iconClass(), parseData.checkArr(), level, parseData.spread(level), parseData.disabled(), parseData.hide(), parseData.basicData(), parseData.recordData(), ($ul.hasClass(UL_ROOT) ? "root" : "item"))); - // 4.有子数据的元素加载子节点 - if(childListData.length > 0){ - var cLevel = parseInt(level)+1; - _this.loadListTree(childListData, listData, cLevel, _this.obj.find("ul[data-id='"+parseData.treeId()+"']")); - } - } - } - }; - - /** - * @Desc: 根据父ID查找list数据中匹配的元素 - * @Param: pid: 表示父ID - * @Param: listData: 表示全部数据 - */ - DTree.prototype.queryListTreeByPid = function(pid, listData){ - var _this = this; - var rootListData = []; - if (listData) { - for (var i = 0; i < listData.length; i++) { - var data = listData[i]; - if(typeof data !== "object") continue; - if(pid == "null" || pid == null){ - if(data[_this.response.parentId] == null) { rootListData.push(data); } - } else { - if (data[_this.response.parentId] == pid){ - if (data[_this.response.treeId] == pid){ - _this.errData.push(data); - } else { - rootListData.push(data); - } - } - } - } - } - return rootListData; - }; - - /** - * @Desc: 初始化渲染树或者拼接渲染树,层级关系模式下 - * @Param: listData: 表示全部数据 - * @Param: level: 当前渲染的层级 - * @Param: $ul: JQuery对象,代表当前数据加载到的ul标签里 - */ - DTree.prototype.loadTree = function(listData, level, $ul){ - var _this = this; - if (listData) { - $ul = $ul || _this.getNodeDom().nowOrRootUl(); //当前选中的节点或根节点 - for (var i = 0; i < listData.length; i++) { // 遍历跟节点或追加的跟节点 - var data = listData[i]; - if(typeof data !== "object") continue; - if(data[_this.response.treeId] == data[_this.response.parentId]) { _this.errData.push(data); } - var parseData = _this.parseData(data); - var children = parseData.children(); - $ul.append(_this.getLiItemDom(parseData.treeId(), parseData.parentId(), parseData.title(), parseData.fmtTitle(), parseData.last(children.length), parseData.ficonClass(), parseData.iconClass(), parseData.checkArr(), level, parseData.spread(level), parseData.disabled(), parseData.hide(), parseData.basicData(), parseData.recordData(), ($ul.hasClass(UL_ROOT) ? "root" : "item"))); - if (children.length != 0) { - var cLevel = parseInt(level)+1; - _this.loadTree(children, cLevel, _this.obj.find("ul[data-id='"+parseData.treeId()+"']")); - } - } - } - }; - - /** - * @Desc: 判断在数据加载时是否存在错误数据,并是否打印错误数据 - * @Param: - */ - DTree.prototype.msgErrData = function() { - var _this = this; - if(_this.errData.length > 0 && _this.errDataShow) { - var title = ""; - for(var i=0; i<_this.errData.length; i++) { - var edata = _this.errData[i]; - title += "数据:【"+edata[_this.response.title]+"】中节点id和上级id值一致! \n"; - } - layer.msg(title, {icon:2,time:5000}); - } - // 显示之后,将错误数据制空 - _this.errData = []; - }; - - /** - * @Desc: 解析单个数据 - * @Param: data: 被解析的单个数据对象 - */ - DTree.prototype.parseData = function(data) { - var _this = this; - - return { - treeId: function(){ - return data[_this.response.treeId]; - }, - parentId: function(){ - return data[_this.response.parentId]; - }, - fmtTitle: function(){ - if(typeof _this.formatter.title === 'function'){ - var ftitle = _this.formatter.title(data); - var tt = data[_this.response.title]; - tt = (ftitle == "" || ftitle == undefined || ftitle == null) ? tt : ftitle; - return tt || ""; - } - return data[_this.response.title]; - }, - title: function(){ - return data[_this.response.title]; - }, - level: function(){ - return data[_this.response.level] || ""; - }, - ficonClass: function(){ - return data[_this.response.ficonClass] || ""; - }, - iconClass: function(){ - return data[_this.response.iconClass] || ""; - }, - last: function(len){ - return ((len == 0) ? - ((typeof (data[_this.response.last]) === "boolean") ? data[_this.response.last] : true) : - ((typeof (data[_this.response.last]) === "boolean") ? data[_this.response.last] : false)); - }, - spread: function(level){ - return ((level < _this.initLevel) ? - ((typeof (data[_this.response.spread]) === "boolean") ? data[_this.response.spread] : true) : - ((typeof (data[_this.response.spread]) === "boolean") ? data[_this.response.spread] : false)); - }, - disabled: function(){ - return (typeof (data[_this.response.disabled]) === "boolean") ? data[_this.response.disabled] : false; - }, - hide: function(){ - return (typeof (data[_this.response.hide]) === "boolean") ? data[_this.response.hide] : false; - }, - checkArr: function(){ - var checkArr = []; - var checkArrData = data[_this.response.checkArr]; - if(typeof checkArrData === 'string'){ - if(checkArrData.indexOf("{") > -1 && checkArrData.indexOf("}") > -1){ - checkArrData = JSON.parse(checkArrData); - } else { - checkArrData = {"type":"0","checked":checkArrData}; - } - } - if((typeof checkArrData === 'object') && (checkArrData !== null)){ - if(typeof checkArrData.length === 'undefined'){ - checkArr.push(checkArrData); - } else { - checkArr = checkArrData; - } - } - - if(checkArr.length > 0 && checkArr.length > _this.checkArrLen){ - _this.checkArrLen = checkArr.length; // 获取复选框个数 - } - return checkArr; - - }, - children: function(){ - return data[_this.response.childName] || []; - }, - basicData: function(){ - return event.escape(JSON.stringify(data[_this.response.basicData])) || JSON.stringify({}); - }, - recordData: function(){ - var recordData = _this.record ? event.cloneObj(data, [_this.response.treeId, - _this.response.parentId, - _this.response.title, - _this.response.iconClass, - _this.response.childName, - _this.response.last, - _this.response.spread, - _this.response.disabled, - _this.response.hide, - _this.response.checkArr, - _this.response.checked, - _this.response.type, - _this.response.basicData]) : {}; - - return event.escape(JSON.stringify(recordData)); - }, - data: function(){ - return data; - } - } - - }; - - /** - * @Desc: 无节点数据、节点数据异常时显示dom - */ - DTree.prototype.getNoneDom = function(){ - var _this = this, - rootId = _this.obj[0].id, - noneTitle = _this.none; - - return { - text: function(){ - return "
                          "+noneTitle+"
                          "; - }, - errText: function(errInfo){ - return "
                          "+errInfo+"
                          "; - } - } - }; - - /** - * @Desc: 新增节点的dom值 - * @Param: treeId: 节点ID - * @Param: parentId: 节点父ID - * @Param: title: 节点标题 - * @Param: fmtTitle: 节点附加标题 - * @Param: last: 是否最后一级节点 - * @Param: ficonClass: 一级图标class - * @Param: iconClass: 二级图标class - * @Param: checkArr: 复选框 - * @Param: spread: 是否展开 - * @Param: disabled: 是否禁用 - * @Param: hide: 是否隐藏 - */ - DTree.prototype.getDom = function(treeId, parentId, title, fmtTitle, last, ficonClass, iconClass, checkArr, level, spread, disabled, hide) { - var _this = this, - rootId = _this.obj[0].id, - toolbar = _this.toolbar, - checkbar = _this.checkbar; - - return { - fnode: function() { // + - 图标 - // 获取图标的变量 - var fnodeIcon = _this.fnodeIcon, - fleafIcon = _this.fleafIcon; - - var fleafIconLeaf = _this.usefontStyle.fnode.leaf, - fnodeIconOpen = _this.usefontStyle.fnode.node.open, - fnodeIconClose = _this.usefontStyle.fnode.node.close; - - if(ficonClass){ - var iconfont = _this.iconfont; - if(typeof iconfont === 'string') { - fleafIconLeaf = iconfont + " " + ficonClass; - fnodeIconOpen = iconfont + " " + ficonClass; - fnodeIconClose = iconfont + " " + ficonClass; - } else { - fleafIconLeaf = iconfont[0] + " " + ficonClass; - fnodeIconOpen = iconfont[0] + " " + ficonClass; - fnodeIconClose = iconfont[0] + " " + ficonClass; - } - } - - if(fnodeIcon != "-1" && fleafIcon != "-1"){ // 都加载 - return last ? "" : - (spread ? "" : ""); - } - - if(fnodeIcon != "-1" && fleafIcon == "-1"){ // 加载node 隐藏leaf - return last ? "" : - (spread ? "" : ""); - } - - if(fnodeIcon == "-1" && fleafIcon != "-1"){ // 隐藏node 加载leaf - return last ? "" : - (spread ? "" : ""); - } - - if(fnodeIcon == "-1" && fleafIcon == "-1"){ // 都隐藏 - return last ? "" : - (spread ? "" : ""); - } - }, - node: function() { // 二级图标样式 - // 获取图标的变量 - var nodeIcon = _this.nodeIcon, - leafIcon = _this.leafIcon; - - var sleafIconLeaf = _this.usefontStyle.snode.leaf, - snodeIconOpen = _this.usefontStyle.snode.node.open, - snodeIconClose = _this.usefontStyle.snode.node.close; - if(iconClass){ - var iconfont = _this.iconfont; - if(typeof iconfont === 'string') { - sleafIconLeaf = iconfont + " " + iconClass; - snodeIconOpen = iconfont + " " + iconClass; - snodeIconClose = iconfont + " " + iconClass; - } else { - sleafIconLeaf = iconfont[0] + " " + iconClass; - snodeIconOpen = iconfont[0] + " " + iconClass; - snodeIconClose = iconfont[0] + " " + iconClass; - } - } - - if(nodeIcon != "-1" && leafIcon != "-1"){ // 都加载 - return last ? "" : - (spread ? "" : ""); - } - - if(nodeIcon != "-1" && leafIcon == "-1"){ // 加载node 隐藏leaf - return last ? "" : - (spread ? "" : ""); - } - - if(nodeIcon == "-1" && leafIcon != "-1"){ // 隐藏node 加载leaf - return last ? "" : - (spread ? "" : ""); - } - - if(nodeIcon == "-1" && leafIcon == "-1"){ // 都隐藏 - return last ? "" : - (spread ? "" : ""); - } - }, - checkbox: function() { // 复选框 - var flag = false; - if(_this.checkbarLoad == "node"){if (checkbar) {flag = true;}} else {if (last) {if (checkbar) {flag = true;}}} - - if(flag){ - var result = "
                          "; - if(checkArr && checkArr.length > 0){ - - for (var i = 0; i < checkArr.length; i++) { - var checkData = checkArr[i]; - var checked = checkData[_this.response.checked]; - var type = checkData[_this.response.type]; - var CHOOSE_CLASS = _this.usefontStyle.checkbox.out; - if (checked == "2") { //半选择 - CHOOSE_CLASS = _this.usefontStyle.checkbox.noall + " " + _this.style.chs; - } else if (checked == "1") { //选择 - CHOOSE_CLASS = _this.usefontStyle.checkbox.on + " " + _this.style.chs; - } else { //未选择或者无值 - CHOOSE_CLASS = _this.usefontStyle.checkbox.out; - } - var disClass = ""; - if(disabled){disClass = NAV_DIS;} - result += ""; - } - } - result += "
                          "; - return result; - } - - return ""; - }, - text: function() { // 文字显示 - var disClass = ""; - if(disabled){disClass = NAV_DIS;} - return ""+fmtTitle+""; - }, - ul: function() { //子节点ul - return last ? "
                            " : - (spread ? "
                              " : "
                                "); - } - }; - }; - - /** - * @Desc: 替换节点的dom值,或指定这些值 - * @Param: $div: JQuery对象,表示当前被操作的节点 - * @Param: treeId: 节点ID - * @Param: last: 是否最后一级节点 - * @Param: spread: 是否展开 - * @Param: disabled: 是否禁用 - * @Param: hide: 是否隐藏 - */ - DTree.prototype.replaceDom = function($div, treeId, last, spread, disabled, hide) { - var _this = this, - rootId = _this.obj[0].id, - toolbar = _this.toolbar, - checkbar = _this.checkbar; - - return { - fnode: function(ficonClass) { // + - 图标 - var fnode = ""; - - // 获取图标的变量 - var fnodeIcon = _this.fnodeIcon, - fleafIcon = _this.fleafIcon; - - var fleafIconLeaf = _this.usefontStyle.fnode.leaf, - fnodeIconOpen = _this.usefontStyle.fnode.node.open, - fnodeIconClose = _this.usefontStyle.fnode.node.close; - - if(ficonClass){ - var iconfont = _this.iconfont; - if(typeof iconfont === 'string') { - fleafIconLeaf = iconfont + " " + ficonClass; - fnodeIconOpen = iconfont + " " + ficonClass; - fnodeIconClose = iconfont + " " + ficonClass; - } else { - fleafIconLeaf = iconfont[0] + " " + ficonClass; - fnodeIconOpen = iconfont[0] + " " + ficonClass; - fnodeIconClose = iconfont[0] + " " + ficonClass; - } - } - - if(fnodeIcon != "-1" && leafIcon != "-1"){ // 都加载 - fnode = last ? "" : - (spread ? "" : ""); - }else if(nodeIcon != "-1" && leafIcon == "-1"){ // 加载node 隐藏leaf - fnode = last ? "" : - (spread ? "" : ""); - }else if(nodeIcon == "-1" && leafIcon != "-1"){ // 隐藏node 加载leaf - fnode = last ? "" : - (spread ? "" : ""); - }else if(nodeIcon == "-1" && leafIcon == "-1"){ // 都隐藏 - fnode = last ? "" : - (spread ? "" : ""); - } - if(fnode != ""){_this.getNodeDom($div).fnode().replaceWith($(fnode));} - }, - node: function(iconClass) { // 二级图标样式 - var snode = ""; - - // 获取图标的变量 - var nodeIcon = _this.nodeIcon, - leafIcon = _this.leafIcon; - - var sleafIconLeaf = _this.usefontStyle.snode.leaf, - snodeIconOpen = _this.usefontStyle.snode.node.open, - snodeIconClose = _this.usefontStyle.snode.node.close; - if(iconClass){ - var iconfont = _this.iconfont; - if(typeof iconfont === 'string') { - sleafIconLeaf = iconfont + " " + iconClass; - snodeIconOpen = iconfont + " " + iconClass; - snodeIconClose = iconfont + " " + iconClass; - } else { - sleafIconLeaf = iconfont[0] + " " + iconClass; - snodeIconOpen = iconfont[0] + " " + iconClass; - snodeIconClose = iconfont[0] + " " + iconClass; - } - } - - if(nodeIcon != "-1" && leafIcon != "-1"){ // 都加载 - snode = last ? "" : - (spread ? "" : ""); - }else if(nodeIcon != "-1" && leafIcon == "-1"){ // 加载node 隐藏leaf - snode = last ? "" : - (spread ? "" : ""); - }else if(nodeIcon == "-1" && leafIcon != "-1"){ // 隐藏node 加载leaf - snode = last ? "" : - (spread ? "" : ""); - }else if(nodeIcon == "-1" && leafIcon == "-1"){ // 都隐藏 - snode = last ? "" : - (spread ? "" : ""); - } - if(snode != ""){_this.getNodeDom($div).snode().replaceWith($(snode));} - }, - checkbox: function(checkArr) { // 复选框 - var flag = false; - if(_this.checkbarLoad == "node"){if (checkbar) {flag = true;}} else {if (last) {if (checkbar) {flag = true;}}} - - if(flag){ - var result = "
                                "; - if(checkArr && checkArr.length > 0){ - - for (var i = 0; i < checkArr.length; i++) { - var checkData = checkArr[i]; - var checked = checkData[_this.response.checked]; - var type = checkData[_this.response.type]; - var CHOOSE_CLASS = _this.usefontStyle.checkbox.out; - if (checked == "2") { //半选择 - CHOOSE_CLASS = _this.usefontStyle.checkbox.noall + " " + _this.style.chs; - } else if (checked == "1") { //选择 - CHOOSE_CLASS = _this.usefontStyle.checkbox.on + " " + _this.style.chs; - } else { //未选择或者无值 - CHOOSE_CLASS = _this.usefontStyle.checkbox.out; - } - var disClass = ""; - if(disabled){disClass = NAV_DIS;} - result += ""; - } - } - result += "
                                "; - _this.getNodeDom($div).snode().next("div").replaceWith($(result)); - } - }, - text: function(title) { // 文字显示 - var disClass = ""; - if(disabled){disClass = NAV_DIS;} - var cite = ""+title+"" - _this.getNodeDom($div).cite().replaceWith($(cite)); - }, - ul: function() { //子节点ul - var ul = last ? "
                                  " : - (spread ? "
                                    " : "
                                      "); - _this.getNodeDom($div).nextUl().replaceWith($(ul)); - }, - div: function(){ - $div.attr("data-id", treeId); - }, - basicData: function(basicData){ - basicData = (basicData == "{}") ? "" : basicData; - $div.attr("data-basic", basicData); - }, - recordData: function(recordData){ - recordData = (recordData == "{}") ? "" : recordData; - $div.attr("data-record", recordData); - }, - p_li: function(pId){ - var $li = $div.parent("li"); - $li.attr("data-id", treeId); - if(pId) { - $li.attr("data-pid", pId); - } - return $li; - } - }; - - }; - - /** - * @Desc: 获取拼接好的li的dom - * @Param: treeId: 节点ID - * @Param: parentId: 节点父ID - * @Param: title: 节点标题 - * @Param: fmtTitle: 节点附加标题 - * @Param: last: 是否最后一级节点 - * @Param: ficonClass: 一级图标class - * @Param: iconClass: 二级图标class - * @Param: checkArr: 复选框 - * @Param: level: 当前li的层级 - * @Param: spread: 是否展开 - * @Param: disabled: 是否禁用 - * @Param: hide: 是否隐藏 - * @Param: basicData: 自定义的扩展字段值(转义后的JSON字符) - * @Param: recordData: 开启记录模式的记录值(转义后的JSON字符) - * @Param: isRoot: 当前节点是否是根节点下的节点 - */ - DTree.prototype.getLiItemDom = function(treeId, parentId, title, fmtTitle, last, ficonClass, iconClass, checkArr, level, spread, disabled, hide, basicData, recordData, isRoot) { - var _this = this, - rootId = _this.obj[0].id; - - var dom = _this.getDom(treeId, parentId, title, fmtTitle, last, ficonClass, iconClass, checkArr, level, spread, disabled, hide); - basicData = (basicData == "{}") ? "" : basicData; - recordData = (recordData == "{}") ? "" : recordData; - var div = "
                                      " + - div , - dom.fnode(), - dom.node(), - dom.checkbox(), - dom.text(), - "
                                      ", dom.ul(), ""].join(""); - - return li; - }; - - /** - * @Desc: 初始化节点,用于数据回显 - * @Param: chooseId: 节点ID - */ - DTree.prototype.dataInit = function(chooseId){ - var _this = this; - var $div = _this.obj.find("div[data-id='"+chooseId+"']"); - if($div && $div.length > 0) { - _this.obj.find("."+NAV_THIS).removeClass(NAV_THIS); - _this.obj.find("."+_this.style.itemThis).removeClass(_this.style.itemThis); - $div.addClass(NAV_THIS); - $div.addClass(_this.style.itemThis); - _this.setNodeParam($div); - // 将该节点的父节点全部展开 - var $li_parents = $div.parents("."+LI_NAV_ITEM); - $li_parents.children("ul").addClass(NAV_SHOW); - $li_parents.children("."+LI_DIV_ITEM).children("i[data-spread]."+event.trimToDot(_this.usefontStyle.fnode.node.close)).addClass(_this.usefontStyle.fnode.node.open); - $li_parents.children("."+LI_DIV_ITEM).children("i[data-spread]."+event.trimToDot(_this.usefontStyle.fnode.node.close)).removeClass(_this.usefontStyle.fnode.node.close); - $li_parents.children("."+LI_DIV_ITEM).children("i[data-spread]."+event.trimToDot(_this.usefontStyle.snode.node.close)).addClass(_this.usefontStyle.snode.node.open); - $li_parents.children("."+LI_DIV_ITEM).children("i[data-spread]."+event.trimToDot(_this.usefontStyle.snode.node.close)).removeClass(_this.usefontStyle.snode.node.close); - } - return _this.getNowParam(); - }; - - /** - * @Desc: 基于备份的Html数据回滚 - * @Param: chooseId: 节点ID - */ - DTree.prototype.rollbackHtml = function(chooseId){ - var _this = this; - if(_this.bak) { - _this.obj.html(_this.bak); - // 取消全部选中状态 - _this.cancelNavThis(); - if(_this.checkbar) { - _this.cancelCheckedNode(); - _this.chooseDataInit(chooseId); - } else { - _this.dataInit(chooseId); - } - - _this.bak = _this.obj.html(); - } - }; - - - /******************** 基础事件区域 ********************/ - /** - * @Desc: 数据格式化 - * @Param: html: 需要格式化的数据 - */ - DTree.prototype.escape = function(html){ - return event.escape(html); - }; - - /** - * @Desc: 格式化数据转回正常数据 - * @Param: str: 需要转回的数据 - */ - DTree.prototype.unescape = function(str){ - return event.unescape(str); - }; - - /** - * @Desc: 取消选中当前选中的div - */ - DTree.prototype.cancelNavThis = function(){ - var _this = this; - _this.obj.find("div[data-id]").parent().find("."+NAV_THIS).removeClass(NAV_THIS); - _this.obj.find("div[data-id]").parent().find("."+_this.style.itemThis).removeClass(_this.style.itemThis); - } - - /** - * @Desc: 选中div - * @Param: id: 当前div本身 / 当前选中div的id值 - */ - DTree.prototype.navThis = function(id){ - var _this = this; - var $div = (typeof id === 'object') ? id : (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']").length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']"); - if($div != null) { - _this.cancelNavThis(); - $div.addClass(NAV_THIS); - $div.addClass(_this.style.itemThis); - } - } - - /** - * @Desc: 手风琴模式操作其他节点 - * @Param: $ul: JQuery对象,表示dtree中的ul节点 - */ - DTree.prototype.accordionUL = function($ul) { - var _this = this; - if(_this.accordion) { - $ul.closest("li[data-index]").siblings("li[data-index]").children("ul[data-id]").removeClass(NAV_SHOW); - var $divs = $ul.closest("li[data-index]").siblings("li[data-index]").children("ul[data-id]").prev("div"); - if($divs.length && $divs.length > 0) { - for (var i=0; i<$divs.length; i++) { - var $div = $($divs[i]); - var $i_fnode = _this.getNodeDom($div).fnode(), - $i_snode = _this.getNodeDom($div).snode(); - if($i_fnode.attr("data-spread") != 'last'){ - _this.operateIcon($i_fnode, $i_snode).close(); - } - } - } - - } - }; - - /** - * @Desc: 展开或隐藏节点 作用点: div - * @Param: $div: JQuery对象,表示当前操作的div节点 - */ - DTree.prototype.clickSpread = function($div) { - var _this = this; - var $i_fnode = _this.getNodeDom($div).fnode(), - $i_snode = _this.getNodeDom($div).snode(), - $cite = _this.getNodeDom($div).cite(), - spread = $i_fnode.attr("data-spread"), - $ul = $div.next("ul"); - - if ($ul.length > 0) { - if (spread == "close") { - if (_this.type=="load") { //增加加载 - if (_this.cache) { //开启缓存 - if ($ul.html()) { - $ul.addClass(NAV_SHOW); - _this.accordionUL($ul); - } else { //加载节点 - _this.getChild($div); - _this.accordionUL($ul); - } - }else { //每次取新的数据 - $ul.html(""); - _this.getChild($div); - _this.accordionUL($ul); - } - } else { // 全量加载 - $ul.addClass(NAV_SHOW); - _this.accordionUL($ul); - } - _this.operateIcon($i_fnode, $i_snode).open(); - } else if (spread == "open") { - $ul.removeClass(NAV_SHOW); - _this.operateIcon($i_fnode, $i_snode).close(); - } - } - }; - - /** - * @Desc: 设置节点为disabled - * @Param: disabledIds: 需要设置禁用的节点id字符串集合(用,分割)/id数组 - */ - DTree.prototype.setDisabledNodes = function(disabledIds){ - var _this = this; - var disabledId = []; - if(typeof disabledIds === "string") { - disabledId = disabledIds.split(","); - } else { - disabledId = disabledIds; - } - - if(disabledIds.length) { - for (var i=0; i 0) { - _this.getChild($div, data); - } else { - var parseData = _this.parseData(data); - - if(parseData.treeId()){ - var level = parseInt($div.parent("li").attr("data-index"))+1; - $ul.append(_this.getLiItemDom(parseData.treeId(), parseData.parentId(), parseData.title(), parseData.fmtTitle(), parseData.last(0), parseData.ficonClass(), parseData.iconClass(), parseData.checkArr(), level, parseData.spread(), parseData.disabled(), parseData.hide(), parseData.basicData(), parseData.recordData(), "item")); - - // 建造完毕后,选中该DIV - $thisDiv = $ul.find("div[data-id='"+parseData.treeId()+"']"); - _this.setNodeParam($thisDiv); - - _this.showLine($ul.find("li")); - } else { - layer.msg("添加失败,节点ID为undefined!",{icon:5}); - // 重新赋值 - _this.setNodeParam($div); - } - } - } else { - _this.getChild($div); - } - } - - /** - * @Desc: 局部刷新树--编辑当前节点选中节点时 - * @Param: $div: JQuery对象,当前编辑节点的Div - * @Param: data: 当前需要渲染的数据,JSON对象、字符串 - */ - DTree.prototype.partialRefreshEdit = function($div, data){ - var _this = this; - $ul = $div.next("ul"), - $p_li = $div.parent("li"); - - if(data) { - if(typeof data === 'object') { - var parseData = _this.parseData(data); - - if(parseData.treeId()){ - var replaceDom = _this.replaceDom($div, parseData.treeId(), parseData.last(0), parseData.spread(), parseData.disabled(), parseData.hide()); - replaceDom.div(); - replaceDom.node(parseData.iconClass()); - replaceDom.checkbox(parseData.checkArr()); - replaceDom.text(parseData.title()); - replaceDom.ul(); - replaceDom.basicData(parseData.basicData()); - replaceDom.recordData(parseData.recordData()); - - var parentId = parseData.parentId(); - var oldParentId = $p_li.attr("data-pid"); - if(parentId && parentId != oldParentId) { - // 变更了父节点 - $p_li = replaceDom.p_li(parentId); - - // 根据parentId找到下挂节点的ul - var $goto_div = _this.getNodeDom(parentId).div(), - $goto_ul = _this.getNodeDom(parentId).nextUl(); - // 判断父级ul中是否还存在li,如果不存在,则需要修改节点的样式 - if($goto_ul.children("li").length == 0){ - var $icon_i = $goto_div.find("i[data-spread]"); - _this.operateIcon($icon_i.eq(0), $icon_i.eq(1)).openWithLeaf(); - $goto_ul.addClass(NAV_SHOW); - } - $goto_ul.append($p_li); - } else { - replaceDom.p_li(); - } - _this.setNodeParam($div); - } else { - layer.msg("编辑失败,节点ID为undefined!",{icon:5}); - // 重新赋值 - _this.setNodeParam($div); - } - } else { - _this.getNodeDom($div).cite().html(data); - } - } - } - - /** - * @Desc: 局部刷新树--当前节点选中被删除时 - * @Param: $div: JQuery对象,当前被删除节点的Div - */ - DTree.prototype.partialRefreshDel = function($div){ - var _this = this; - $p_li = $div.parent("li"); - $p_ul = _this.getNodeDom($div).parentUl(); - $p_div = _this.getNodeDom($div).parentDiv(); - - $p_li.remove(); - _this.showLine($p_ul.find("li")); - // 判断父级ul中是否还存在li,如果不存在,则需要修改节点的样式 - if($p_ul.children("li").length == 0){ - var $icon_i = $p_div.find("i[data-spread]"); - _this.operateIcon($icon_i.eq(0), $icon_i.eq(1)).closeWithLeaf(); - } - _this.initNodeParam(); - } - - /*** - * @Desc: 搜索节点,保留上级节点 - * @param: value: 传入的节点名称 - * layui-dtree群友: 没水平的水瓶提供。 - */ - DTree.prototype.fuzzySearch = function (value) { - var _this = this; - // - if (value.trim() == '') { - _this.obj.find("li").removeClass("layui-hide").attr("dtree-hide", false) - return - } - _this.obj.find("li").addClass("layui-hide").attr("dtree-hide", true) - - var cites = [] - var filterMode = _this.filterMode - /*if (filterMode == 'default') { - cites = _this.obj.find("li>div cite:contains('" + value + "')"); - }*/ - cites = _this.obj.find("li>div cite:contains('" + value + "')"); - cites.each(function (index, cite) { - var li = $(cite).parent().parent(); - var curNode = _this.getParam(li.attr("data-id")); - li.removeClass("layui-hide").attr("dtree-hide", false); - // 显示所有子级 - li.find('ul li').removeClass("layui-hide").attr("dtree-hide", false); - // 显示所有父级 - li.parents('li').removeClass("layui-hide").attr("dtree-hide", false); - }) - } - - /******************** 复选框区域 ********************/ - /** - * @Desc: 初始化复选框的值 - * @Param: chooseIds: 需要被选中的节点id字符串集合(用,分割)/id数组/id二维数组(多级复选框) - */ - DTree.prototype.chooseDataInit = function(chooseIds){ - var _this = this; - // 多级复选框二维数组 - var chooseIdArrs = []; - var chooseId = []; - if(typeof chooseIds === "string") { - chooseId = chooseIds.split(","); - } else { - chooseId = chooseIds; - } - if(chooseId.length) { - // 说明是数组 - for (var i=0; i."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - _this.checkStatus($child_li_i).noCheck(); - - // 处理父级节点的选中状态 - for (var i = 1, item = $parent_li; i < item.length; i++) { - var flag = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"'][data-checked='1']").length; - if (flag == 0) { - //把父级去掉选中 - var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - _this.checkStatus($item_i).noCheck(); - } - } - } else { - // 处理当前节点的选中状态 - _this.checkStatus($i).check(); - - // 处理子级节点的选中状态 - var $child_li_i = $child_li.find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - _this.checkStatus($child_li_i).check(); - - // 处理父级节点的选中状态 - for (var i = 1, item = $parent_li; i < item.length; i++) { - var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - //把父级选中 - _this.checkStatus($item_i).check(); - } - } - }; - - /** - * @Desc: 实现复选框点击, no-all 子集选中父级半选中,子集全选父级选中 - * @Param: $i: JQuery对象,表示当前点击的checkbox节点 - */ - DTree.prototype.checkAllOrNoallOrNot = function($i) { - var _this = this; - //$i 当前点击的checkbox - var $div = $i.closest("."+LI_DIV_ITEM), - dataPar = $i.attr("data-par"), - dataType = $i.attr("data-type"), - $li = $i.closest(dataPar), //当前checkbox的上级li节点 - $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点 - $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点 - - if ($i.attr("data-checked") == "1") { //当前复选框为选中状态,点击后变为未选中状态 - // 处理当前节点的选中状态 - _this.checkStatus($i).noCheck(); - - // 处理子级节点的选中状态 - var $child_li_i = $child_li.find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - _this.checkStatus($child_li_i).noCheck(); - - // 处理父级节点的选中状态 - for (var i = 1, item = $parent_li; i < item.length; i++) { - var flag = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"'][data-checked='1']").length; - var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - if (flag == 0) { - //把父级去掉选中 - _this.checkStatus($item_i).noCheck(); - } else { - //把父级半选 - _this.checkStatus($item_i).noallCheck(); - } - } - } else { //当前复选框为未选中状态,点击后变为选中状态 - // 处理当前节点的选中状态 - _this.checkStatus($i).check(); - - // 处理子级节点的选中状态 - var $child_li_i = $child_li.find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - _this.checkStatus($child_li_i).check(); - - // 处理父级节点的选中状态 - for (var i = 1, item = $parent_li; i < item.length; i++) { - var flag1 = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"'][data-checked='1']").length; - var flag2 = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']").length; - var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - if (flag1 != flag2) { - // 父级复选框半选 - _this.checkStatus($item_i).noallCheck(); - } else { - // 父级复选框全选 - _this.checkStatus($item_i).check(); - } - } - } - }; - - /** - * @Desc: 实现复选框点击,p-casc:父级选中子集全选,子集无法改变父级选中状态 - * @Param: $i: JQuery对象,表示当前点击的checkbox节点 - */ - DTree.prototype.checkAllOrPcascOrNot = function($i) { - var _this = this; - //$i 当前点击的checkbox - var $div = $i.closest("."+LI_DIV_ITEM), - dataPar = $i.attr("data-par"), - dataType = $i.attr("data-type"), - $li = $i.closest(dataPar), //当前checkbox的上级li节点 - $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点 - $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点 - - if ($i.attr("data-checked") == "1") { //当前复选框为选中状态,点击后变为未选中状态 - // 处理当前节点的选中状态 - _this.checkStatus($i).noCheck(); - - // 处理子级节点的选中状态 - var $child_li_i = $child_li.find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - _this.checkStatus($child_li_i).noCheck(); - - } else { //当前复选框为未选中状态,点击后变为选中状态 - // 处理当前节点的选中状态 - _this.checkStatus($i).check(); - - // 处理子级节点的选中状态 - var $child_li_i = $child_li.find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - _this.checkStatus($child_li_i).check(); - } - }; - - /** - * @Desc: 实现复选框点击,self:各自选中互不影响 - * @Param: $i: JQuery对象,表示当前点击的checkbox节点 - */ - DTree.prototype.checkOrNot = function($i) { - var _this = this; - //$i 当前点击的checkbox - var $div = $i.closest("."+LI_DIV_ITEM), - dataPar = $i.attr("data-par"), - dataType = $i.attr("data-type"), - $li = $i.closest(dataPar), //当前checkbox的上级li节点 - $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点 - $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点 - - if ($i.attr("data-checked") == "1") { //当前复选框为选中状态,点击后变为未选中状态 - // 处理当前节点的选中状态 - _this.checkStatus($i).noCheck(); - } else { //当前复选框为未选中状态,点击后变为选中状态 - // 处理当前节点的选中状态 - _this.checkStatus($i).check(); - } - }; - - /** - * @Desc: 实现复选框点击,only:只能选中1个复选框 - * @Param: $i: JQuery对象,表示当前点击的checkbox节点 - */ - DTree.prototype.checkOnly = function($i) { - var _this = this; - //$i 当前点击的checkbox - var $div = $i.closest("."+LI_DIV_ITEM), - dataPar = $i.attr("data-par"), - dataType = $i.attr("data-type"), - $li = $i.closest(dataPar), //当前checkbox的上级li节点 - $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点 - $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点 - - var checked = $i.attr("data-checked"); - // 将全部节点全部设为未选中状态 - var $all_i = _this.obj.find("i[data-checked]"); - _this.checkStatus($all_i).noCheck(); - - if (checked != "1") { //当前复选框为未选中状态,点击后变为选中状态 - // 处理当前节点的选中状态 - _this.checkStatus($i).check(); - } - }; - - /** - * @Desc: 实现复选框点击汇总,分派具体的点击方式 - * @Param: $i: JQuery对象,表示当前点击的checkbox节点 - */ - DTree.prototype.changeCheck = function($i) { - var _this = this; - var temp = _this.temp; - if(typeof $i === 'undefined') { - $i = temp[0]; - } - // 复选框选中事件 - if (_this.checkbarType == "all") { - _this.checkAllOrNot($i); - } else if(_this.checkbarType == "no-all") { - _this.checkAllOrNoallOrNot($i); - } else if(_this.checkbarType == "p-casc") { - _this.checkAllOrPcascOrNot($i); - } else if(_this.checkbarType == "self") { - _this.checkOrNot($i); - } else if(_this.checkbarType == "only") { - _this.checkOnly($i); - } else { - _this.checkAllOrNot($i); - } - - if(_this.select) { - // 设置复选框模式中的下拉树的值 - _this.selectCheckboxVal(); - } - - // 获取复选框选中节点的内容 - var checkbarNodes = _this.setAndGetCheckbarNodesParam(true); - - // 用户自定义想做的事情 - _this.checkbarFun.chooseDone(checkbarNodes); - layui.event.call(this, MOD_NAME, "chooseDone("+$(_this.obj)[0].id+")", {"checkbarParams": checkbarNodes}); - _this.temp = []; - }; - - /** - * @Desc: 复选框半选状态初始化设置,树节点渲染完毕后重置半选状态 - */ - DTree.prototype.initNoAllCheck = function(){ - var _this = this; - //1.获取所有选中节点 - var $is = _this.obj.find("i[data-checked='1']"); - if($is.length > 0){ - for ( var key = 0; key < $is.length; key++) { - var $i = $($is[key]), - dataPar = $i.attr("data-par"), - dataType = $i.attr("data-type"), - $li = $i.closest(dataPar), //当前checkbox的上级li节点 - $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点 - $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点 - - // 处理父级节点的选中状态 - for (var i = 1, item = $parent_li; i < item.length; i++) { - var flag1 = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"'][data-checked='1']").length; - var flag2 = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']").length; - var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - if (flag1 != flag2) { - // 父级复选框半选 - _this.checkStatus($item_i).noallCheck(); - } else { - // 父级复选框全选 - _this.checkStatus($item_i).check(); - } - } - } - } - }; - - /** - * @Desc: 复选框选中状态初始化设置,树节点渲染完毕后重置选中状态 - */ - DTree.prototype.initAllCheck = function(){ - var _this = this; - //1.获取所有选中节点 - var $is = _this.obj.find("i[data-checked='1']"); - if($is.length > 0){ - for ( var key = 0; key < $is.length; key++) { - var $i = $($is[key]), - dataPar = $i.attr("data-par"), - dataType = $i.attr("data-type"), - $li = $i.closest(dataPar), //当前checkbox的上级li节点 - $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点 - $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点 - - // 处理父级节点的选中状态 - for (var i = 1, item = $parent_li; i < item.length; i++) { - var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']"); - // 父级复选框全选 - _this.checkStatus($item_i).check(); - } - } - } - }; - - /** - * @Desc: 设置复选框选中/未选中/半选 _this.checkStatus($i).check(); _this.checkStatus($i).noCheck(); _this.checkStatus($i).noallCheck(); - * @Param: $i: JQuery对象,表示当前点击的checkbox节点 - */ - DTree.prototype.checkStatus = function($i) { - var _this = this; - return { - check: function(){ - $i.removeClass(_this.usefontStyle.checkbox.out); - $i.removeClass(_this.usefontStyle.checkbox.noall); - $i.addClass(_this.usefontStyle.checkbox.on); - $i.addClass(_this.style.chs); - $i.attr("data-checked","1"); - }, - noCheck: function(){ - $i.removeClass(_this.usefontStyle.checkbox.noall); - $i.removeClass(_this.usefontStyle.checkbox.on); - $i.removeClass(_this.style.chs); - $i.addClass(_this.usefontStyle.checkbox.out); - $i.attr("data-checked","0"); - }, - noallCheck: function(){ - $i.removeClass(_this.usefontStyle.checkbox.out); - $i.removeClass(_this.usefontStyle.checkbox.on); - $i.addClass(_this.usefontStyle.checkbox.noall); - $i.addClass(_this.style.chs); - $i.attr("data-checked","2"); - } - } - }; - - /** - * @Desc: 设置树的复选框操作值的全部参数,并获取 - * @Param: requestParamFlag: 设置复选框返回值的数据结构, true:基于请求类型的返回对象数组, false:原始的节点返回对象数组 - */ - DTree.prototype.setAndGetCheckbarNodesParam = function(requestParamFlag) { - var _this = this; - //操作前先清空 - _this.checkbarNode = []; - // 选择所有复选框节点 - if (_this.checkbarData == "change"){ //记录变更数据 - _this.obj.find("i[data-par][dtree-disabled='false']").each(function(){ - var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM); - if ($i.attr("data-checked") != $i.attr("data-initchecked")) { - if(requestParamFlag) { - _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i))); - } else { - _this.checkbarNode.push(_this.getCheckbarNodeParam($div, $i)); - } - } - }); - } else if (_this.checkbarData == "all"){ //记录全部数据 - _this.obj.find("i[data-par][data-checked][dtree-disabled='false']").each(function(){ - var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM); - if(requestParamFlag) { - _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i))); - } else { - _this.checkbarNode.push(_this.getCheckbarNodeParam($div, $i)); - } - }); - } else if (_this.checkbarData == "choose"){ //记录选中数据 - _this.obj.find("i[data-par][data-checked='1'][dtree-disabled='false']").each(function(){ - var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM); - if(requestParamFlag) { - _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i))); - } else { - _this.checkbarNode.push(_this.getCheckbarNodeParam($div, $i)); - } - }); - } else if (_this.checkbarData == "halfChoose"){ //记录选中和半选数据 - _this.obj.find("i[data-par][data-checked='1'][dtree-disabled='false']").each(function(){ - var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM); - if(requestParamFlag) { - _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i))); - } else { - _this.checkbarNode.push(_this.getCheckbarNodeParam($div, $i)); - } - }); - _this.obj.find("i[data-par][data-checked='2'][dtree-disabled='false']").each(function(){ - var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM); - if(requestParamFlag) { - _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i))); - } else { - _this.checkbarNode.push(_this.getCheckbarNodeParam($div, $i)); - } - }); - } - return _this.checkbarNode; - }; - - /** - * @Desc: 获取树的复选框操作值的全部参数 - */ - DTree.prototype.getCheckbarNodesParam = function() { - var _this = this; - return _this.setAndGetCheckbarNodesParam(true); - }; - - /** - * @Desc: 获取树的一个复选框的参数 - * @Param: $div: JQuery对象,表示当前选中节点 - * @Param: $i: JQuery对象,表示当前选中的复选框节点 - */ - DTree.prototype.getCheckbarNodeParam = function($div, $i){ - var _this = this; - var temp_node = {}; - temp_node.nodeId = $div.attr("data-id"); - temp_node.parentId = _this.getNodeDom($div).parentLi().attr("data-pid"); - temp_node.context = (typeof _this.formatter.title === 'function') ? _this.getNodeDom($div).cite().attr("data-title") : _this.getNodeDom($div).cite().text(); - temp_node.leaf = _this.getNodeDom($div).cite().attr("data-leaf") == "leaf" ? true : false; - temp_node.level = _this.getNodeDom($div).parentLi().attr("data-index"); - temp_node.spread = _this.getNodeDom($div).fnode().attr("data-spread") == "open" ? true : false; - - var basicData = $div.attr("data-basic"); - if(basicData) { - basicData = JSON.parse(event.unescape(basicData)); - } - temp_node.basicData = basicData; - var recordData = $div.attr("data-record"); - if(recordData) { - recordData = JSON.parse(event.unescape(recordData)); - } - temp_node.recordData = recordData; - - temp_node.dataType = $i.attr("data-type"); - temp_node.checked = $i.attr("data-checked"); - temp_node.initchecked = $i.attr("data-initchecked"); - return temp_node; - }; - - /** - * @Desc: 获取基于返回参数的树的复选框参数,选中数据横向存储 - */ - DTree.prototype.getCheckbarJsonArrParam = function(){ - var _this = this; - var checkbarJsonArr = { - nodeId: [], //节点ID - parentId: [], //父节点ID - context: [], //节点内容 - leaf: [], //是否叶子节点 - level: [], //层级 - spread: [], //节点展开状态 - dataType: [], //节点标记 - checked: [], //节点复选框选中状态 - initchecked: [], //节点复选框初始状态 - basicData: [], //用户自定义的记录节点数据 - recordData: [], //当前data数据(排除basicData和children字段) - }; - // 获取全部复选框选中节点 - var params = _this.setAndGetCheckbarNodesParam(false); - if(params && params.length > 0) { - for(var i=0; i 0) { _this.checkStatus($i).check(); } - } - - /** - * @Desc: 取消全部复选框选中 - */ - DTree.prototype.cancelCheckedNode = function(){ - var _this = this; - var $i = _this.obj.find("i[data-par][data-checked!='0']"); - if($i.length > 0) { _this.checkStatus($i).noCheck(); } - } - - /** - * @Desc: 反选复选框 - */ - DTree.prototype.invertCheckedNode = function(){ - var _this = this; - if(_this.obj.find("i[data-par]").length > 0) { - var flag = false; - _this.obj.find("i[data-par]").each(function(){ - var $i = $(this); - if($i.attr("data-checked") == '2'){ - flag = true; - }else if($i.attr("data-checked") == '0') { - _this.checkStatus($i).check(); - }else if($i.attr("data-checked") == '1') { - _this.checkStatus($i).noCheck(); - } - }); - - if(flag) { - _this.initNoAllCheck(); - } else { - _this.initAllCheck(); - } - } - } - - /** - * @Desc: 删除选中节点 - */ - DTree.prototype.removeCheckedNode = function(){ - var _this = this; - var len = _this.obj.find("i[data-par][data-checked='1']").length; - if(len == 0){ - layer.msg("请至少选中一个节点",{icon:2}); - }else{ - //操作前先清空 - _this.checkbarNode = []; - // 选择所有复选框节点 - var i_node = {}; - _this.obj.find("i[data-par][data-checked='1']").each(function(){ - var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM); - - _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i))); - }); - - layer.confirm('确定要删除选中节点?', {icon: 3, title:'删除选中节点'}, function(index1){ - var flag = _this.menubarFun.remove(_this.checkbarNode); - if(flag){ - _this.obj.find("i[data-par][data-checked='1']").closest("."+LI_DIV_ITEM).next("ul").remove(); - _this.obj.find("i[data-par][data-checked='1']").closest("."+LI_DIV_ITEM).remove(); - _this.checkbarNode=[]; - } - - layer.close(index1); - }); - } - } - - /******************** 工具栏及菜单栏区域 ********************/ - /** - * @Desc: 初始化菜单栏和工具栏的div - */ - DTree.prototype.initTreePlus = function(){ - var _this = this; - // 初始化菜单栏和工具栏的div - _this.obj.prevAll('div#dtree_menubar_'+_this.obj[0].id).remove(); - _this.toolbarMenu = {}; - if(_this.menubar && _this.menubarTips.group && _this.menubarTips.group.length > 0) _this.obj.before("
                                      "); - if(_this.toolbar){ - if(_this.toolbarWay == "contextmenu") { - _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).remove(); - if(_this.toolbarShow && _this.toolbarShow.length > 0) { - _this.obj.before("
                                      "); - } - } - } - - }; - - /** - * @Desc: 开启工具栏和菜单栏 - */ - DTree.prototype.openTreePlus = function(){ - var _this = this; - // 先对工具栏做处理,因为菜单栏可能会与工具栏产生关联。 - var ggMenu = []; - if(_this.toolbar) _this.getToolbarDom(); - - if(_this.menubar) { - var menubarTips = _this.menubarTips, - mtbar = menubarTips.toolbar, - group = menubarTips.group, - freedom = menubarTips.freedom; - if(mtbar && mtbar.length > 0){ - // 菜单栏吸附工具栏上 - for(var i=0; i 0){ - // 菜单栏吸附在上方的按钮组div中 - for(var i=0; i"; - break; - case defaultMenu.moveUp: - gg = ""; - break; - case defaultMenu.refresh: - gg = ""; - break; - case defaultMenu.checkAll: - gg = (_this.checkbar && _this.checkbarType != 'only') ? "" : ""; - break; - case defaultMenu.unCheckAll: - gg = (_this.checkbar && _this.checkbarType != 'only') ? "" : ""; - break; - case defaultMenu.invertAll: - gg = (_this.checkbar && _this.checkbarType != 'only') ? "" : ""; - break; - case defaultMenu.remove: - gg = (_this.checkbar) ? "" : ""; - break; - case defaultMenu.searchNode: - gg = ""; - break; - } - return gg; - }; - - /** - * @Desc: 获取扩展菜单栏 - * @Param: menu: 扩展菜单栏的Json对象 - */ - DTree.prototype.getExtMenubarDom = function(menu){ - var _this = this; - return ""; - }; - - /** - * @Desc: 获取依附在工具栏的菜单栏 - * @Param: menu: 菜单栏的具体操作字符串 - */ - DTree.prototype.getMenubarToolDom = function(menu){ - var _this = this; - var rootId = _this.obj[0].id; - switch (menu) { - case defaultMenu.moveDown: - _this.toolbarMenu[defaultMenu.moveDown] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.moveDown, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.movedown, "展开全部"); - break; - case defaultMenu.moveUp: - _this.toolbarMenu[defaultMenu.moveUp] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.moveUp, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.moveup, "收缩全部"); - break; - case defaultMenu.refresh: - _this.toolbarMenu[defaultMenu.refresh] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.refresh, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.refresh, "刷新"); - break; - case defaultMenu.checkAll: - if(_this.checkbar && _this.checkbarType != 'only') - _this.toolbarMenu[defaultMenu.checkAll] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.checkAll, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.checkAll, "全选节点"); - break; - case defaultMenu.unCheckAll: - if(_this.checkbar && _this.checkbarType != 'only') - _this.toolbarMenu[defaultMenu.unCheckAll] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.unCheckAll, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.unCheckAll, "全不选节点"); - break; - case defaultMenu.invertAll: - if(_this.checkbar && _this.checkbarType != 'only') - _this.toolbarMenu[defaultMenu.invertAll] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.invertAll, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.invertAll, "反选节点"); - break; - case defaultMenu.remove: - if(_this.checkbar) - _this.toolbarMenu[defaultMenu.remove] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.remove, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.remove, "删除选中"); - break; - case defaultMenu.searchNode: - _this.toolbarMenu[defaultMenu.searchNode] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.searchNode, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.searchNode, "查询"); - break; - } - }; - - /** - * @Desc: 获取依附在工具栏的扩展菜单栏 - * @Param: menu: 扩展菜单栏的Json对象 - */ - DTree.prototype.getExtMenubarToolDom = function(menu){ - var _this = this; - _this.toolbarMenu[menu.menubarId] = _this.setToolbarDom().setMenuToolbarOption(menu.menubarId, menu.title, _this.usefontStyle.toolbar.menubarExt+" "+menu.icon, ""); - }; - - /** - * @Desc: menubar内置方法 - */ - DTree.prototype.menubarMethod = function(){ - var _this = this; - return { - openAllNode: function(obj){ // 展开所有节点 - var $ulNode = obj || _this.obj.children("li").children("ul"); - // 遍历所有ul子节点 - for (var i = 0; i < $ulNode.length; i++) { - // 获取当前节点的信息 - var $ul = $($ulNode[i]), - $div = $ul.prev("div"), - $i_fnode = _this.getNodeDom($div).fnode(), - $i_snode = _this.getNodeDom($div).snode(), - $cite = _this.getNodeDom($div).cite(), - spread = $i_fnode.attr("data-spread"), - leaf = $cite.attr("data-leaf"); - - if (leaf == "leaf") { - continue; - } // 说明是叶子了,则继续循环下一个 - - if (spread == "open") { - // 说明该节点已经展开了,则进行子节点循环 - } else { - if (_this.type=="load") { //是否全量加载 - if (_this.cache) { //是否开启缓存 - if ($ul.html()) { - $ul.addClass(NAV_SHOW); - } else { //加载节点 - _this.getChild($div); - } - }else { //每次取新的数据 - $ul.html(""); - _this.getChild($div); - } - } else { // 全量加载 - $ul.addClass(NAV_SHOW); - } - _this.operateIcon($i_fnode, $i_snode).open(); - - } - var $childUl = $ul.children("li").children("ul"); - _this.menubarMethod().openAllNode($childUl); - } - }, - closeAllNode: function(){ //收缩所有节点 - _this.obj.find("."+LI_NAV_CHILD).each(function(){ - // 获取当前节点的信息 - var $ul = $(this), - $div = $ul.prev("div"), - $i_fnode = _this.getNodeDom($div).fnode(), - $i_snode = _this.getNodeDom($div).snode(), - $cite = _this.getNodeDom($div).cite(), - spread = $i_fnode.attr("data-spread"), - leaf = $cite.attr("data-leaf"); - - $ul.removeClass(NAV_SHOW); - if(leaf !== "leaf") { - _this.operateIcon($i_fnode, $i_snode).close(); - } - }); - }, - refreshTree: function(){// 刷新树 - _this.refreshTree(); - }, - checkAll: function(){ // 全选节点 - _this.checkAllNode(); - }, - unCheckAll: function(){ // 全不选节点 - _this.cancelCheckedNode(); - }, - invertAll: function(){ // 反选节点 - _this.invertCheckedNode(); - }, - remove: function(){// 删除选中节点 - _this.removeCheckedNode(); - }, - searchNode: function(){//模糊查询该值,展开该值节点 - layer.prompt({ - formType: 0, - value: "", - title: '查询节点' - }, function(value, index1, elem){ - if (value) { - var flag = _this.searchNode(value); - if (!flag) { - layer.msg("该名称节点不存在!", {icon:5}); - } - } else { - layer.msg("未指定查询节点名称", {icon:5}); - } - layer.close(index1); - }); - }, - extMethod: function(menuId, $div, flag){ - if(_this.menubar && _this.menubarTips.group && _this.menubarTips.group.length > 0 && flag == "group"){ - for(var i=0; i<_this.menubarTips.group.length; i++){ - var ext = _this.menubarTips.group[i]; - if (menuId == ext.menubarId){ - ext.handler(_this.getRequestParam(_this.getNodeParam($div), $div)); - break; - } - } - } - if(_this.menubar && _this.menubarTips.toolbar && _this.menubarTips.toolbar.length > 0 && flag == "toolbar"){ - for(var i=0; i<_this.menubarTips.toolbar.length; i++){ - var ext = _this.menubarTips.toolbar[i]; - if (menuId == ext.menubarId){ - ext.handler(_this.getRequestParam(_this.getNodeParam($div), $div)); - break; - } - } - } - if(_this.menubar && _this.menubarTips.freedom && _this.menubarTips.freedom.length > 0 && flag == "freedom"){ - for(var i=0; i<_this.menubarTips.freedom.length; i++){ - var ext = _this.menubarTips.freedom[i]; - if (menuId == ext.menubarId){ - ext.handler(_this.getRequestParam(_this.getNodeParam($div), $div)); - break; - } - } - } - } - }; - }; - - /** - * @Desc: menubar监听方法 - * @Param: menuId:菜单栏的具体操作字符串 - * @Param: flag:菜单栏的显示方式 - */ - DTree.prototype.menubarListener = function(menuId, flag){ - var _this = this; - var $div = _this.getNodeDom().nowDiv(); - switch (menuId) { - case defaultMenu.moveDown: // 展开全部节点 - _this.menubarMethod().openAllNode(); - break; - case defaultMenu.moveUp: // 收缩全部节点 - _this.menubarMethod().closeAllNode(); - break; - case defaultMenu.refresh: - _this.menubarMethod().refreshTree(); // 刷新树 - break; - case defaultMenu.checkAll: - _this.menubarMethod().checkAll(); - break; - case defaultMenu.unCheckAll: - _this.menubarMethod().unCheckAll(); - break; - case defaultMenu.invertAll: - _this.menubarMethod().invertAll(); - break; - case defaultMenu.remove: - _this.menubarMethod().remove(); - break; - case defaultMenu.searchNode: - _this.menubarMethod().searchNode(); - break; - default: - _this.menubarMethod().extMethod(menuId, $div, flag); - break; - } - }; - - /** - * @Desc: 模糊查询该值,展开该值节点 - * @Param: value: 模糊查询的值 - */ - DTree.prototype.searchNode = function(value){ - var _this = this; - var b = false; - var $lis = []; - _this.obj.find("cite[data-leaf]").each(function(){ - var $nthis = $(this); - var html = $nthis.html(); - if(html.indexOf(value) > -1){ - if($nthis.attr("data-leaf") == "leaf") { - // 叶子节点提供包含父节点的所有信息 - var title = ""; - $nthis.parents("li").each(function(){ - title = "-" + $(this).find("cite[data-leaf]").html() + title; - }); - title = title.substring(1, title.length); - $nthis.attr("title", title); - } - // 保存当前cite所在的li及父li中包含该值,则只保留父的 - var i = 0; - $nthis.parents("li").each(function(){ - var html2 = $(this).find("cite[data-leaf]").html(); - if(html2.indexOf(value) > -1){ - i++; - } - if(i >= 2){ - return true; - } - }); - if (i < 2){ - $lis.push($nthis.closest("li").prop("outerHTML")); - } - } - }); - if($lis.length > 0) { - b = true; - // 1.将树节点清空 - _this.obj.html(""); - // 2.遍历所有cite节点,展开当前cite节点 - for(var i=0; i<$lis.length; i++){ - _this.obj.append($lis[i]); - } - } - return b; - }; - - - /******************** 工具栏区域 ********************/ - /** - * @Desc: 获取工具栏 - */ - DTree.prototype.getToolbarDom = function(){ - var _this = this; - var toolbarShow = _this.toolbarShow, - toolbarExt = _this.toolbarExt, - toolbarWay = _this.toolbarWay; - - if(toolbarShow.length > 0){ - for(var i=0; i 0){ - for(var i=0; i "+other +title+""; - } else if(toolbarWay == "fixed" || toolbarWay == "follow") { - return ""; - } - }, - setMenuToolbarOption: function(menubarId, title, classId, other){ - var rootId = _this.obj[0].id; - if(toolbarWay == "contextmenu") { - return "
                                       "+other +title+"
                                      "; - } else if(toolbarWay == "fixed" || toolbarWay == "follow") { - return ""; - } - }, - setToolbarPlace: function(toolbarMenu){ - if(toolbarWay == "contextmenu") { - if(toolbarMenu){ - _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).find('div.layui-nav-item>dl.layui-nav-child').html(""); - for(var key in toolbarMenu){ - _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).find('div.layui-nav-item>dl.layui-nav-child').append(toolbarMenu[key]); - } - } - } else if(toolbarWay == "fixed" || toolbarWay == "follow") { - _this.obj.find("cite[data-leaf][dtree-disabled='false']").each(function(){ - var $cite = $(this); - _this.dynamicToolbarDom($cite); - }); - } - } - } - }; - - /** - * @Desc: 在节点后动态绑定fixed和follow条件的工具栏 - * @Param: $cite: JQuery对象,表示当前文本节点 - */ - DTree.prototype.dynamicToolbarDom = function($cite){ - var _this = this; - var toolbarWay = _this.toolbarWay; - if($cite.next("em."+TOOLBAR_TOOL_EM).length == 0) { - var $div = $cite.parent("div"); - var param = _this.getRequestParam(_this.getTempNodeParam($div)); - var toolbarMenus = _this.toolbarFun.loadToolbarBefore(event.cloneObj(_this.toolbarMenu), param, $div); - var hideCls = (toolbarWay == "follow") ? NAV_HIDE : ""; - var em = [""]; - if(toolbarMenus){ - for(var key in toolbarMenus){ - em.push(toolbarMenus[key]); - } - } - em.push(""); - $cite.after(em.join('')); - } - } - - /** - * @Desc: 隐藏toolbar - */ - DTree.prototype.toolbarHide = function() { - var _this = this; - if(_this.toolbar && _this.toolbarWay == "contextmenu") { - var $toolBarDiv = _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id); - $toolBarDiv.find(".layui-nav-child").removeClass('layui-anim-fadein layui-show'); - } - } - - /** - * @Desc: toolbar内置方法 - */ - DTree.prototype.toolbarMethod = function(){ - var _this = this; - return { - pulldown: function(obj){ // 展开当前点击节点的下面全部节点 - if(!obj) return; - var $ulNode = obj; - // 遍历所有ul子节点 - for (var i = 0; i < $ulNode.length; i++) { - // 获取当前节点的信息 - var $ul = $($ulNode[i]), - $div = $ul.prev("div"), - $i_fnode = _this.getNodeDom($div).fnode(), - $i_snode = _this.getNodeDom($div).snode(), - $cite = _this.getNodeDom($div).cite(), - spread = $i_fnode.attr("data-spread"), - leaf = $cite.attr("data-leaf"); - - if (leaf == "leaf") { continue; } // 说明是叶子了,则继续循环下一个 - - if (spread == "open") { - // 说明该节点已经展开了,则进行子节点循环 - } else { - if (_this.type=="load") { //是否全量加载 - if (_this.cache) { //是否开启缓存 - if ($ul.html()) { - $ul.addClass(NAV_SHOW); - } else { //加载节点 - _this.getChild($div); - } - }else { //每次取新的数据 - $ul.html(""); - _this.getChild($div); - } - } else { // 全量加载 - $ul.addClass(NAV_SHOW); - } - _this.operateIcon($i_fnode, $i_snode).open(); - - } - var $childUl = $ul.children("li").children("ul"); - _this.toolbarMethod().pulldown($childUl); - } - }, - pullup: function($li){ // 收缩当前点击节点的下面全部节点 - $li.find("."+LI_NAV_CHILD).each(function(){ - // 获取当前节点的信息 - var $ul = $(this), - $div = $ul.prev("div"), - $i_fnode = _this.getNodeDom($div).fnode(), - $i_snode = _this.getNodeDom($div).snode(), - $cite = _this.getNodeDom($div).cite(), - spread = $i_fnode.attr("data-spread"), - leaf = $cite.attr("data-leaf"); - - $ul.removeClass(NAV_SHOW); - if(leaf !== "leaf") { - _this.operateIcon($i_fnode, $i_snode).close(); - } - }); - } - } - }; - - /** - * @Desc: toolbar监听方法 - * @Param: tool: 工具栏的具体操作字符串 - * @Param: $div: JQuery对象,表示当前操作节点 - */ - DTree.prototype.toolbarListener = function(tool, $div) { - var _this = this; - var $cite = $div.children("cite[data-leaf]"), - $ul = $div.next("ul"), - $p_li = $div.parent("li[data-index]"), //当前选中节点的顶级li节点 - $p_ul = $p_li.parent("ul"), //当前选中节点的顶级li节点的父级ul - $p_div = $p_ul.prev("div"), //当前选中节点的顶级li节点的父级ul的前一个div - title = (typeof _this.formatter.title === 'function') ? $cite.attr("data-title") : $cite.text(); - - switch (tool) { - case defaultTool.pulldown: - _this.toolbarMethod().pulldown($ul); - break; - case defaultTool.pullup: - _this.toolbarMethod().pullup($p_li); - break; - case defaultTool.addTool: - var content = _this.loadToolBar(title, defaultTool.addTool); - - layer.open({ - title: "新增"+_this.toolbarStyle.title, - type: 1, - area: _this.toolbarStyle.area, - content: content, - success: function(layero, index){ - form.render(); - form.on("submit(dtree_addNode_" + _this.obj[0].id + "_form)",function(data){ - var data = data.field; - var parentId = $div.attr("data-id"), - id = $div.attr("data-id")+"_node_"+$ul[0].childNodes.length, - leaf = true, - checked = "0", - level = parseInt($p_li.attr("data-index"))+1; - - var type = _this.response.type; - var checked = _this.response.checked; - // 创建子节点的DOM,添加子节点 - var checkArr = []; - if (_this.checkArrLen > 0) { - for (var i = 0; i < _this.checkArrLen; i++) { - checkArr.push({type: i, checked: "0"}); - } - } - - $ul.append(_this.getLiItemDom(id, parentId, data.addNodeName, data.addNodeName, true, "", "", checkArr, level, false, false, false, "", "", "item")); - // 先将li节点隐藏 - $ul.find("li[data-id='"+id+"']").hide(); - // 重新赋值 - var $addDiv = $ul.find("div[data-id='"+id+"']"); - node = _this.getNodeParam($addDiv); - - //获取组装后的requestNode,组合参数 - var requestNode = _this.getRequestParam(node); - requestNode = $.extend(requestNode, data); - - _this.temp = [id, $ul, $div, level]; - // 用户自定义想做的事情 - _this.toolbarFun.addTreeNode(requestNode, $div); - - layer.close(index); - return false; - }); - } - }); - break; - case defaultTool.editTool: - var content = _this.loadToolBar(title, defaultTool.editTool); - - layer.open({ - title: "编辑"+_this.toolbarStyle.title, - type: 1, - area: _this.toolbarStyle.area, - content: content, - success: function(layero, index){ - _this.toolbarFun.editTreeLoad(_this.getRequestParam(_this.getNodeParam($div))); - form.render(); - form.on("submit(dtree_editNode_" + _this.obj[0].id + "_form)",function(data){ - var data = data.field; - $cite.html(data.editNodeName); - node = _this.getNodeParam($div); - var requestNode = _this.getRequestParam(node); - requestNode = $.extend(requestNode, data); - _this.temp = [$cite, $div, title, $p_div]; - _this.toolbarFun.editTreeNode(requestNode, $div); - - layer.close(index); - }); - } - }); - break; - case defaultTool.delTool: - layer.confirm('确定要删除该'+_this.toolbarStyle.title+'?', {icon: 3, title:'删除'+_this.toolbarStyle.title}, function(index){ - var node = _this.getNodeParam($div); - _this.temp = [$p_li, $p_div]; - _this.toolbarFun.delTreeNode(_this.getRequestParam(_this.getNodeParam($div)), $div); - - layer.close(index); - }); - break; - default: - if(_this.toolbarExt.length > 0){ - for(var i=0; i<_this.toolbarExt.length; i++){ - var ext = _this.toolbarExt[i]; - if (tool == ext.toolbarId){ - ext.handler(_this.getRequestParam(_this.getNodeParam($div)), $div); - break; - } - } - } - break; - } - } - - - /** - * @Desc: 加载toolbar中的内容 - * @Param: title: 默认操作中的input输入框的值 - * @Param: name: 工具栏的具体操作字符串 - */ - DTree.prototype.loadToolBar = function(title, name){ - var _this = this; - var toolbarShow = _this.toolbarShow; - var nodeBarContents = _this.toolbarBtn; - - var html = ""; - switch (name) { - case defaultTool.addTool: - var addNodeBarDef = [{"label": "当前选中", "name": "nodeTitle", "type": "text", "value": title, "defElem": "nowChoose", "readonly": true}, - {"label": "新增"+_this.toolbarStyle.title, "name": "addNodeName", "type": "text", "value": "", "defElem": "nowChange", "verify": "required"}, - {"type": "submit", "value": "确认添加", "defElem": "btn", "filter": "dtree_addNode_" + _this.obj[0].id + "_form"}]; - - //2. 用户自定义的节点内容 - var addNodeBar = ['
                                      ']; - - if(nodeBarContents != null && nodeBarContents.length > 0){ - if(nodeBarContents[0] != null && nodeBarContents[0] != undefined && nodeBarContents[0].length > 0){ - var addNodeBarContents = nodeBarContents[0]; - // 1. 检查是否包含了now、newly、btn这三个默认项,将其他元素依次排列,将特殊元素至于栈顶 - for(var i=0; i', '
                                      ']; - // 3.遍历生成按钮 - for(var j=0; j
                                      '); - addNodeBar.push(addBtn.join('')); - addNodeBar.push('
                                      '); - html = addNodeBar.join(''); - break; - - case defaultTool.editTool: - var editNodeBarDef = [{"label": "当前选中", "name": "nodeTitle", "type": "text", "value": title, "defElem": "nowChoose", "readonly": true}, - {"label": "编辑"+_this.toolbarStyle.title, "name": "editNodeName", "type": "text", "value": "", "defElem": "nowChange", "verify": "required"}, - {"type": "submit", "value": "确认编辑", "defElem": "btn", "filter": "dtree_editNode_" + _this.obj[0].id + "_form"}]; - - var editNodeBar = ['
                                      ']; - //2. 用户自定义的节点内容 - if(nodeBarContents != null && nodeBarContents.length > 0){ - - if(nodeBarContents[1] != null && nodeBarContents[1] != undefined && nodeBarContents[1].length > 0){ - var editNodeBarContents = nodeBarContents[1]; - // 1. 检查是否包含了now、newly、btn这三个默认项,将其他元素依次排列,将特殊元素至于栈顶 - for(var i=0; i', '
                                      ']; - // 3.遍历生成按钮 - for(var j=0; j
                                      '); - editNodeBar.push(editBtn.join('')); - editNodeBar.push('
                                      '); - html = editNodeBar.join(''); - break; - } - return html; - }; - - /** - * @Desc: 获取toolbar详细的标签信息 - * @Param: nodeBarContents: 工具栏中的数据渲染内容JSON对象 - */ - DTree.prototype.loadToolBarDetail = function(nodeBarContents){ - var _this = this; - var readonly = (typeof (nodeBarContents.readonly) === "boolean") ? nodeBarContents.readonly : false; - var disabled = (typeof (nodeBarContents.disabled) === "boolean") ? nodeBarContents.disabled : false; - var id = nodeBarContents.id ? nodeBarContents.id : ""; - var name = nodeBarContents.name ? nodeBarContents.name : ""; - var val = nodeBarContents.value ? nodeBarContents.value : ""; - var verify = nodeBarContents.verify ? nodeBarContents.verify : ""; - var placeholder = nodeBarContents.placeholder ? nodeBarContents.placeholder : val; - return{ - text: function(){ - return ['
                                      ', - '', - '
                                      ', - '', - '
                                      ', - '
                                      '].join(''); - }, - textarea: function(){ - return ['
                                      ', - '', - '
                                      ', - '', - '
                                      ', - '
                                      '].join(''); - }, - hidden: function(){ - return [''].join(''); - }, - select: function(){ - var optionsData = (typeof nodeBarContents.optionsData === 'object') ? nodeBarContents.optionsData : nodeBarContents.optionsData(); - var options = ""; - for(var key in optionsData){ - if(val == optionsData[key]){ - options += ""; - } else { - options += ""; - } - } - return ['
                                      ', - '', - '
                                      ', - '', '
                                      ', '
                                      '].join(''); - }, - submit: function(){ - var filter = nodeBarContents.filter; - return [''].join(''); - }, - button: function(){ - return [''].join(''); - }, - reset: function(){ - return [''].join(''); - } - } - }; - - /** - * @Desc: 新增节点后改变节点内容 - * @Param: returnID: 当前需要加载的内容,JSON对象、字符串、指定字符串("refresh")、true - */ - DTree.prototype.changeTreeNodeAdd = function(returnID){ - var _this = this; - var temp = _this.temp; - var id = temp[0], $ul = temp[1], $div = temp[2], level = temp[3]; - var flag = false; - if(returnID){ - var $thisDiv = _this.obj.find("[data-id='"+id+"']"); - if(typeof returnID === "object"){ - // 如果是JSON格式数据,则将当前DIV删除,重新建造DIV - $thisDiv.remove(); - var parseData = _this.parseData(returnID); - - if(parseData.treeId()){ - $ul.append(_this.getLiItemDom(parseData.treeId(), parseData.parentId(), parseData.title(), parseData.fmtTitle(), parseData.last(0), parseData.ficonClass(), parseData.iconClass(), parseData.checkArr(), level, parseData.spread(), parseData.disabled(), parseData.hide(), parseData.basicData(), parseData.recordData(), "item")); - - // 建造完毕后,选中该DIV - $thisDiv = $ul.find("div[data-id='"+parseData.treeId()+"']"); - _this.setNodeParam($thisDiv) - } else { - layer.msg("添加失败,节点ID为undefined!",{icon:5}); - // 将li节点删除 - $ul.find("li[data-id='"+id+"']").remove(); - // 重新赋值 - _this.setNodeParam($div); - // 临时变量制空 - _this.temp = []; - return ; - } - }else if(returnID == 'refresh' || returnID == true){ - // 如果是设置为refresh参数,则向后台发送请求,获取新增节点下的真实参数,局部刷新树。 - flag = true; - } else if(typeof returnID === "string" || typeof returnID === 'number'){ - $thisDiv.attr("data-id", returnID); - // 将li节点展示 - $ul.find("li[data-id='"+returnID+"']").show(); - _this.setNodeParam($thisDiv) - } - - // 判断当前点击的节点是否是最后一级节点,如果是,则需要修改节点的样式 - var $icon_i = $div.find("i[data-spread]"); - if ($icon_i.eq(0).attr("data-spread") == "last") { - _this.operateIcon($icon_i.eq(0), $icon_i.eq(1)).openWithLeaf(); - } else { //如果不是,也要修改节点样式 - _this.operateIcon($icon_i.eq(0), $icon_i.eq(1)).open(); - } - $ul.addClass(NAV_SHOW); //展开UL - _this.accordionUL($ul); - if(flag) { - _this.getChild($div); - } else { - // _this.showLine(); - _this.showLine($ul.find("li")); - // 这种情况下需要在新增节点后对节点新增工具栏 - if(_this.toolbar && _this.toolbarWay != 'contextmenu') { - _this.dynamicToolbarDom($thisDiv.find("cite[data-leaf]")); - } - } - - } else { - // 将li节点删除 - $ul.find("li[data-id='"+id+"']").remove(); - // 重新赋值 - _this.setNodeParam($div); - } - - _this.temp = []; // 临时变量制空 - - }; - - /** - * @Desc: 编辑页打开后显示编辑页内容 - * @Param: param: 编辑页打开之后回显的数据集 - */ - DTree.prototype.changeTreeNodeDone = function(param){ - var _this = this; - form.val('dtree_editNode_' + _this.obj[0].id + '_form', param); - form.render(); - }; - - /** - * @Desc: 修改节点后改变节点内容 - * @Param: returnID: 当前需要变更的内容,JSON对象 - */ - DTree.prototype.changeTreeNodeEdit = function(returnID){ - var _this = this; - var temp = _this.temp; - var $cite = temp[0], $div = temp[1], title = temp[2], $p_div = temp[3]; - var flag = false; - if(returnID){ - if(typeof returnID === "object"){ - var parseData = _this.parseData(data); - - if(parseData.treeId()){ - var replaceDom = _this.replaceDom($div, parseData.treeId(), parseData.last(0), parseData.spread(), parseData.disabled(), parseData.hide()); - replaceDom.node(parseData.iconClass()); - replaceDom.checkbox(parseData.checkArr()); - replaceDom.text(parseData.title()); - replaceDom.ul(); - replaceDom.basicData(parseData.basicData()); - replaceDom.recordData(parseData.recordData()); - _this.setNodeParam($div); - } else { - layer.msg("编辑失败,节点ID为undefined!",{icon:5}); - // 重新赋值 - _this.setNodeParam($div); - } - } - } else { - $cite.html(title); - _this.getNodeParam($div); - } - - _this.temp = []; // 临时变量制空 - }; - - /** - * @Desc: 删除节点后改变节点内容 - * @Param: flag: 是否要删除节点 - */ - DTree.prototype.changeTreeNodeDel = function(flag){ - var _this = this; - var temp = _this.temp; - var $p_li = temp[0], - $p_ul = $p_li.parent("ul"), - $p_div = temp[1]; - - if(flag){ - $p_li.remove(); - _this.showLine($p_ul.find("li")); - // 判断父级ul中是否还存在li,如果不存在,则需要修改节点的样式 - if($p_ul.children("li").length == 0){ - var $icon_i = $p_div.find("i[data-spread]"); - _this.operateIcon($icon_i.eq(0), $icon_i.eq(1)).closeWithLeaf(); - } - _this.initNodeParam(); - } - - _this.temp = []; // 临时变量制空 - }; - - /******************** iframe区域 ********************/ - /** - * @Desc: 加载iframe - * @Param: $div: JQuery对象,表示当前节点 - * @Param: iframeParam: iframe加载的参数 - */ - DTree.prototype.loadIframe = function($div, iframeParam) { - var _this = this; - var $cite = _this.getNodeDom($div).cite(); - if (!_this.useIframe) { // 启用iframe - return false; - } - var iframeElem = _this.iframeElem, - iframeUrl = _this.iframeUrl, - iframeLoad = _this.iframeLoad; - - var flag = iframeLoad == "leaf" ? (($cite.attr("data-leaf") == "leaf") ? true : false) : true; - - if (flag) { - if ($(iframeElem).length > 0) { //iframe存在 - if (!iframeUrl) { - layer.msg("数据请求异常,iframeUrl参数未指定", {icon:5}); - return false; - } - var param = AjaxHelper.serialize("?", iframeParam); - if(iframeUrl.indexOf("?")> -1){ - param = "&"+param.substring(1, param.length); - } - var url = iframeUrl + param; - $(iframeElem).attr("src", url); - } else { - layer.msg("iframe绑定异常,请确认页面中是否有iframe页对应的容器", {icon:5}); - return false; - } - } - return flag; - }; - - /** - * @Desc: 获取传递出去的参数,根据iframe.iframeDefaultRequest、iframe.iframeRequest和node拼出发出请求的参数 - * @Param: nodes: 需要传递出去的参数 - */ - DTree.prototype.getIframeRequestParam = function(nodes){ - var _this = this; - var request = _this.iframeRequest, - defaultRequestNames = _this.iframeDefaultRequest, - node = nodes || _this.node, - requestParam = {}; - - // 先拼用户自定义的,在拼树生成的,这样的话用户可以自定义当树未生成时的节点的初始值 - for ( var key in request) { - requestParam[key] = request[key]; - } - for ( var key in defaultRequestNames) { - var paramName = defaultRequestNames[key]; - var paramValue = node[key]; - if(typeof paramValue === "boolean"){ - requestParam[paramName] = paramValue; - }else { - if(paramValue){ - requestParam[paramName] = paramValue; - } - } - } - - // 解决传递中文的乱码问题 - var reg = /[\u4E00-\u9FA5\uF900-\uFA2D]/; //正则匹配中文 - for(var key in requestParam){ - if(reg.test(requestParam[key])) { - var str = requestParam[key]; - requestParam[key] = encodeURI(encodeURI(str)); - } - } - - return requestParam; - }; - - /******************** 数据回调区域 ********************/ - /** - * @Desc: 根据具体的id获取基于当前id的div以及对应的其他dom元素 - * @Param: id: 节点的ID值 - */ - DTree.prototype.getNodeDom = function(id){ - var _this = this; - // 获取当前div,如果id就是一个dom,则就是这个,如果不是则进行选择。如果选不中则为null - var $div = (typeof id === 'object') ? id : (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']").length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']"); - return { - div: function(){ // 获取当前div - return $div; - }, - fnode: function(){ // 获取一级图标元素 - return ($div == null) ? null : $div.find("i[data-spread]").eq(0); - }, - snode: function(){ // 获取二级图标元素 - return ($div == null) ? null : $div.find("i[data-spread]").eq(1); - }, - checkbox: function(){ // 获取复选框元素 - return ($div == null) ? null : $div.find("i[data-par]"); - }, - cite: function(){ // 获取cite元素 - return ($div == null) ? null : $div.find("cite[data-leaf]"); - }, - nextUl: function(){ // 获取相邻的ul元素 - return ($div == null) ? null : $div.next("ul"); - }, - parentLi: function(){ // 获取父级li元素 - return ($div == null) ? null : $div.parent("li"); - }, - parentUl: function(){ // 获取基于当前$div的上级$ul - return ($div == null) ? null : $div.parent("li").parent("ul"); - }, - parentDiv: function(){ // 获取基于当前$div的上级$div - return ($div == null) ? null : $div.parent("li").parent("ul").prev("div"); - }, - nowDiv: function(){ // 获取当前选中节点,没有则返回null - return (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS).length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS); - }, - nowOrRootDiv: function(){ // 获取当前选中节点,没有则返回根节点下的第一个div - return (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS).length == 0) ? _this.obj.children("li").eq(0).children("div").eq(0) : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS); - }, - nowOrRootUl: function(){ // 获取当前选中节点下一个UL 或根节点。为了将新节点放入ul下 - return (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS).length == 0) ? _this.obj : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS).next("ul"); - } - } - }; - - /** - * @Desc: 获取当前选中节点下一个ul节点 或根节点。为了将新节点放入ul下 - */ - DTree.prototype.getNowNodeUl = function() { - var _this = this; - return _this.getNodeDom().nowOrRootUl(); - }; - - /** - * @Desc: 获取当前选中div节点 或第一个根div节点。 - */ - DTree.prototype.getNowNode = function() { - var _this = this; - return _this.getNodeDom().nowOrRootDiv(); - }; - - /** - * @Desc: 获取当前选中div节点 无则返回null。 - */ - DTree.prototype.getNowNodeOrNull = function() { - var _this = this; - return _this.getNodeDom().nowDiv(); - }; - - /** - * @Desc: 根据获取指定div节点。 - * @Param: id: 指定节点的ID - */ - DTree.prototype.getNode = function(id) { - var _this = this; - return _this.getNodeDom(id).div(); - }; - - /** - * @Desc: 设置当前选中节点的全部参数 - * @Param: $div: 当前选中的节点 - */ - DTree.prototype.setNodeParam = function($div) { - var _this = this; - _this.node.nodeId = $div.attr("data-id"); - _this.node.parentId = _this.getNodeDom($div).parentLi().attr("data-pid"); - _this.node.context = (typeof _this.formatter.title === 'function') ? _this.getNodeDom($div).cite().attr("data-title") : _this.getNodeDom($div).cite().text(); - _this.node.leaf = _this.getNodeDom($div).cite().attr("data-leaf") == "leaf" ? true : false; - _this.node.level = _this.getNodeDom($div).parentLi().attr("data-index"); - _this.node.spread = _this.getNodeDom($div).fnode().attr("data-spread") == "open" ? true : false; - - var basicData = $div.attr("data-basic"); - if(basicData) { - basicData = JSON.parse(event.unescape(basicData)); - } - _this.node.basicData = basicData; - - var recordData = $div.attr("data-record"); - if(recordData) { - recordData = JSON.parse(event.unescape(recordData)); - } - _this.node.recordData = recordData; - - if (_this.getNodeDom($div).checkbox()) { - var dataTypes = "", checkeds = "", initcheckeds = ""; - _this.getNodeDom($div).checkbox().each(function(){ - dataTypes += $(this).attr("data-type") + ","; - checkeds += $(this).attr("data-checked") + ","; - initcheckeds += $(this).attr("data-initchecked") + ","; - }); - dataTypes = dataTypes.substring(0, dataTypes.length-1); - checkeds = checkeds.substring(0, checkeds.length-1); - initcheckeds = initcheckeds.substring(0, initcheckeds.length-1); - - _this.node.dataType = dataTypes; - _this.node.checked = checkeds; - _this.node.initchecked = initcheckeds; - } - }; - - /** - * @Desc: 获取当前选中节点的全部参数 - * @Param: $div: 当前选中的节点 - */ - DTree.prototype.getNodeParam = function($div) { - var _this = this; - if ($div) { - _this.setNodeParam($div); - } else { - if(_this.obj.find("div[data-id]").parent().find("."+NAV_THIS).length == 0){ - _this.initNodeParam(); - } - } - return this.node; - }; - - /** - * @Desc: 获取一个临时的node参数 - * @Param: $div: 当前选中的节点 - */ - DTree.prototype.getTempNodeParam = function($div) { - var _this = this; - var temp_node = {}; - temp_node.nodeId = $div.attr("data-id"); - temp_node.parentId = _this.getNodeDom($div).parentLi().attr("data-pid"); - temp_node.context = (typeof _this.formatter.title === 'function') ? _this.getNodeDom($div).cite().attr("data-title") : _this.getNodeDom($div).cite().text(); - temp_node.leaf = _this.getNodeDom($div).cite().attr("data-leaf") == "leaf" ? true : false; - temp_node.level = _this.getNodeDom($div).parentLi().attr("data-index"); - temp_node.spread = _this.getNodeDom($div).fnode().attr("data-spread") == "open" ? true : false; - - var basicData = $div.attr("data-basic"); - if(basicData) { - basicData = JSON.parse(event.unescape(basicData)); - } - temp_node.basicData = basicData; - var recordData = $div.attr("data-record"); - if(recordData) { - recordData = JSON.parse(event.unescape(recordData)); - } - temp_node.recordData = recordData; - - if (_this.getNodeDom($div).checkbox()) { - var dataTypes = "", checkeds = "", initcheckeds = ""; - _this.getNodeDom($div).checkbox().each(function(){ - dataTypes += $(this).attr("data-type") + ","; - checkeds += $(this).attr("data-checked") + ","; - initcheckeds += $(this).attr("data-initchecked") + ","; - }); - dataTypes = dataTypes.substring(0, dataTypes.length-1); - checkeds = checkeds.substring(0, checkeds.length-1); - initcheckeds = initcheckeds.substring(0, initcheckeds.length-1); - - temp_node.dataType = dataTypes; - temp_node.checked = checkeds; - temp_node.initchecked = initcheckeds; - } - return temp_node; - }; - - /** - * @Desc: 重置内置参数 - */ - DTree.prototype.initNodeParam = function(){ - var _this = this; - _this.node.nodeId = ""; - _this.node.parentId = ""; - _this.node.context = ""; - _this.node.leaf = ""; - _this.node.level = ""; - _this.node.spread = ""; - _this.node.dataType = ""; - _this.node.checked = ""; - _this.node.initchecked = ""; - _this.node.basicData = ""; - _this.node.recordData = ""; - - if(_this.select) { - _this.selectResetVal(); - } - }; - - /** - * @Desc: 获取传递出去的参数,根据defaultRequest、request和node拼出发出请求的参数 - * @Param: nodes:需要传递出去的参数 - */ - DTree.prototype.getRequestParam = function(nodes){ - var _this = this; - var request = _this.request, - defaultRequestNames = _this.defaultRequest, - node = nodes || _this.node, - requestParam = {}; - - // 先拼用户自定义的,在拼树生成的,这样的话用户可以自定义当树未生成时的节点的初始值 - for ( var key in request) { - requestParam[key] = request[key]; - } - for ( var key in defaultRequestNames) { - var paramName = defaultRequestNames[key]; - var paramValue = node[key]; - if(typeof paramValue === "boolean"){ - requestParam[paramName] = paramValue; - }else { - if(paramValue){ - requestParam[paramName] = paramValue; - } - } - - } - return requestParam; - }; - - /** - * @Desc: 获取filterParam过滤后的requestParam - * @Param: requestParam:请求参数 - */ - DTree.prototype.getFilterRequestParam = function(requestParam){ - var _this = this; - var filterRequest = _this.filterRequest; - return event.cloneObj(requestParam, filterRequest); - }; - - /** - * @Desc: 获取当前选中的请求参数 - */ - DTree.prototype.getNowParam = function(){ - var _this = this; - - return _this.getRequestParam(_this.getNodeParam()); - }; - - /** - * @Desc: 根据id获取指定div节点选中参数 - * @Param: id:节点的ID值 - */ - DTree.prototype.getParam = function(id){ - var _this = this; - - // 获取当前div,如果id就是一个dom,则就是这个,如果不是则进行选择。如果选不中则为null - var $div = (typeof id === 'object') ? id : (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']").length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']"); - if($div != null){ return _this.callbackData().node(_this.getTempNodeParam($div)); } else { return {}; } - }; - - /** - * @Desc: 根据id获取节点上级节点参数 - * @Param: id:节点的ID值 - */ - DTree.prototype.getParentParam = function(id){ - var _this = this; - // 获取当前div,如果id就是一个dom,则就是这个,如果不是则进行选择。如果选不中则为null - var $div = (typeof id === 'object') ? id : (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']").length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']"); - if($div != null){ return _this.callbackData().parentNode($div); } else { return {}; } - }; - - /** - * @Desc: 根据id获取节点的全部上级节点参数值 - * @Param: id:节点的ID值 - */ - DTree.prototype.getAllParentParam = function(id){ - var _this = this; - // 获取当前div,如果id就是一个dom,则就是这个,如果不是则进行选择。如果选不中则为null - var $div = (typeof id === 'object') ? id : (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']").length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']"); - var arr = []; - if($div != null){ - var level = _this.getTempNodeParam($div).level; - for(var i=1; i 0){ - $childDivs.each(function(){ - var $cDiv = $(this); - childNode.push(_this.getRequestParam(_this.getTempNodeParam($cDiv))); - }); - } - return childNode; - }, - parentNode: function($div){ // 获取上级节点值 - var pId = _this.getNodeDom($div).parentLi().attr("data-pid"); - var $pdiv = _this.obj.find("div[data-id='"+pId+"']"); - if($pdiv.length > 0) {return _this.getRequestParam(_this.getTempNodeParam($pdiv));} else {return {};} - - } - } - }; - - /******************** 事件回调区域 ********************/ - /** - * @Desc: 绑定浏览器事件 - */ - DTree.prototype.bindBrowserEvent = function(){ - var _this = this; - var rootId = _this.obj[0].id; - - // 绑定文件夹展开/收缩的图标的点击事件,点击时给当前节点的div添加选中class - _this.obj.on("click", "i[data-spread]", function(event) { - event.stopPropagation(); - var $i = $(this), - $div = $i.parent("div"), - node = _this.getNodeParam($div); - - _this.toolbarHide(); - _this.navThis($div); - _this.clickSpread($div); // 展开或隐藏节点 - - // 树状态改变后,用户自定义想做的事情 - layui.event.call(this, MOD_NAME, "changeTree("+$(_this.obj)[0].id+")", { - dom: _this.callbackData().dom($i), - param: _this.callbackData().node(node), - show: _this.callbackData().dom($i).attr("data-spread") == "open" ? true : false - }); - }); - - // 绑定所有子节点div的单击事件,点击时触发加载iframe或用户自定义想做的事情 - _this.obj.on("click", "div[dtree-click='"+eventName.itemNodeClick+"'][dtree-disabled='false']", function(event) { - event.stopPropagation(); - var $div = $(this), - $cite = $div.find("cite"), - node = _this.getNodeParam($div); - _this.toolbarHide(); - _this.navThis($div); - - if(_this.select) { - _this.selectVal(node.nodeId); - $("div[dtree-id='" + rootId + "'][dtree-select='"+_this.selectDiv+"']").click(); - } - - if (_this.useIframe) { - var iframeParam = _this.getFilterRequestParam(_this.getIframeRequestParam(node)); - var flag = _this.loadIframe($div, iframeParam); // 加载iframe - if (flag) { - // iframe加载完毕后,用户自定义想做的事情 - _this.iframeFun.iframeDone(iframeParam); - - layui.event.call(this, MOD_NAME, "iframeDone("+$(_this.obj)[0].id+")", { - "iframeParam": iframeParam, - dom: _this.callbackData().dom($div) - }); - } - } else { - // 单击事件执行完毕后,用户自定义想做的事情 - layui.event.call(this, MOD_NAME, "node("+$(_this.obj)[0].id+")", { - param: _this.callbackData().node(node), - childParams: _this.callbackData().childNode($div), - parentParam: _this.callbackData().parentNode($div), - dom: _this.callbackData().dom($div) - }); - } - }); - - // 绑定所有子节点div的双击事件,暴露on给用户自定义 - _this.obj.on("dblclick", "div[dtree-click='"+eventName.itemNodeClick+"'][dtree-disabled='false']", function(event) { - event.stopPropagation(); - var $div = $(this), - $cite = $div.find("cite"), - node = _this.getNodeParam($div); - _this.toolbarHide(); - _this.navThis($div); - - if(_this.select) { - _this.selectVal(node.nodeId); - $("div[dtree-id='" + rootId + "'][dtree-select='"+_this.selectDiv+"']").click(); - } - - // 双击事件执行完毕后,用户自定义想做的事情 - layui.event.call(this, MOD_NAME, "nodedblclick("+$(_this.obj)[0].id+")", { - param: _this.callbackData().node(node), - childParams: _this.callbackData().childNode($div), - parentParam: _this.callbackData().parentNode($div), - dom: _this.callbackData().dom($div) - }); - }); - - if(_this.checkbar) { - // 绑定cheboxbar的节点复选框 - _this.obj.on("click", "i[dtree-click='"+eventName.checkNodeClick+"'][dtree-disabled='false']", function(event) { - _this.toolbarHide(); - var $i = $(this), - $div = $i.closest("div[dtree-click='"+eventName.itemNodeClick+"']"), - node = _this.getNodeParam($div); - // 复选框选中前的回调 - var flag = _this.checkbarFun.chooseBefore($i, _this.getRequestParam(node)); - _this.temp = [$i]; - if(flag){_this.changeCheck();} - - event.stopPropagation(); - }); - } - - if(_this.menubar) { - // 绑定menubar的点击事件 - _this.obj.prevAll('div#dtree_menubar_'+_this.obj[0].id).on("click", "button[d-menu]", function(event) { - event.stopPropagation(); - _this.toolbarHide(); - _this.menubarListener($(this).attr("d-menu"), "group"); - }); - - // 绑定menubar的点击事件 - _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).on("click", "a[d-menu]", function(event) { - event.stopPropagation(); - _this.toolbarHide(); - _this.menubarListener($(this).attr("d-menu"), "toolbar"); - }); - - // 绑定menubar的点击按钮事件 - _this.obj.closest('body').find("*[dtree-id='"+_this.obj[0].id+"'][dtree-menu]").on("click", function(event) { - event.stopPropagation(); - _this.toolbarHide(); - _this.menubarListener($(this).attr("dtree-menu"), "freedom"); - }); - } - - if(_this.toolbar) { - if(_this.toolbarWay == "contextmenu") { - //绑定所有子节点div的右键点击事件,用于显示toolbar - _this.obj.on("contextmenu", "div[dtree-click='"+eventName.itemNodeClick+"'][d-contextmenu='true'][dtree-disabled='false']", function(e){ - var $div = $(this), - node = _this.getNodeParam($div); - - _this.toolbarHide(); - // toolbar加载前执行的方法,执行完毕之后创建按钮 - _this.setToolbarDom().setToolbarPlace(_this.toolbarFun.loadToolbarBefore(event.cloneObj(_this.toolbarMenu), _this.getRequestParam(node), $div)); - - var e = e || window.event, - mx = e.pageX - $div.offset().left +45 , - my = $div.offset().top - _this.obj.closest(_this.scroll).offset().top +15; - - _this.navThis($div); - var $toolBarDiv = _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id); - $toolBarDiv.find(".layui-nav-child").addClass('layui-anim-fadein layui-show'); - $toolBarDiv.css({'left':mx+'px','top':my+'px'}); - - e.stopPropagation(); - return false; - }); - - // 绑定装载树的上层出现滚动条的容器,让toolbar隐藏 - _this.obj.closest(_this.scroll).scroll(function() { - _this.toolbarHide(); - }); - - // 绑定toolbar的点击事件 - _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).on("click", "a[dtree-tool]", function(event) { - event.stopPropagation(); - var $div = _this.getNodeDom().nowOrRootDiv(), - node = _this.getNodeParam($div); - _this.toolbarHide(); - var tool = $(this).attr("dtree-tool"); - _this.toolbarListener(tool, $div); - }); - } else if(_this.toolbarWay == "fixed") { - // 绑定toolbar的点击事件 - _this.obj.on("click", "a[dtree-tool]", function(event) { - event.stopPropagation(); - var $a = $(this), - $cite = $a.parent("em."+TOOLBAR_TOOL_EM).prev("cite"), //当前选中节点的text - $div = $cite.parent("div"), - node = _this.getNodeParam($div); - var tool = $a.attr("dtree-tool"); - - _this.toolbarHide(); - _this.navThis($div); - _this.toolbarListener(tool, $div); - }); - } else if(_this.toolbarWay == "follow") { - //绑定所有子节点div的mouseover mouseout事件,用于显示或隐藏toolbar - _this.obj.on("mouseover mouseout", "div[dtree-click='"+eventName.itemNodeClick+"'][dtree-disabled='false']", function(event){ - var $div = $(this), - $toolBarEm = $div.children("em."+TOOLBAR_TOOL_EM); - if(event.type == "mouseover"){ - $toolBarEm.removeClass(NAV_HIDE); - event.stopPropagation(); - } else if(event.type == "mouseout"){ - $toolBarEm.addClass(NAV_HIDE); - event.stopPropagation(); - } - }); - - // 绑定toolbar的点击事件 - _this.obj.on("click", "a[dtree-tool]", function(event) { - event.stopPropagation(); - var $a = $(this), - $cite = $a.parent("em."+TOOLBAR_TOOL_EM).prev("cite"), //当前选中节点的text - $div = $cite.parent("div"), - node = _this.getNodeParam($div); - var tool = $a.attr("dtree-tool"); - - _this.toolbarHide(); - _this.navThis($div); - _this.toolbarListener(tool, $div); - }); - } - } - - if(_this.select) { - // 绑定select的点击事件 - $("div[dtree-id='" + rootId + "'][dtree-select='"+_this.selectDiv+"']").on("click", function(event){ - event.stopPropagation(); - var dl = $(this).find('dl'); - //debugger; - $(this).toggleClass("layui-form-selected"); - - var $card = $("div[dtree-id='" + rootId + "'][dtree-card='"+_this.selectCardDiv+"']"); - - $card.toggleClass("dtree-select-show layui-anim layui-anim-upbit"); - var top = $(this).offset().top + $(this).outerHeight() - $WIN.scrollTop() - 5, - cardHeight = $card.height(), - winHeight = $WIN.height(); -// console.log("top = $(this).offset().top: " + $(this).offset().top + " + $(this).outerHeight(): " + $(this).outerHeight() + " - $WIN.scrollTop(): " + $WIN.scrollTop() + " - 5 =" + top); -// console.log("winHeight = " + winHeight); - if($card.hasClass('dtree-select-up')) { - $card.removeClass('dtree-select-up'); - } - - //上下定位识别 - if(top + cardHeight > $WIN.height() && top >= cardHeight){ - console.log(" top + cardHeight : "+ top + " + " + cardHeight + " > $WIN.height() :" + $WIN.height() + " && top >= cardHeight :" + top + " > " + cardHeight); - if($card.hasClass('dtree-select-up')) { - $card.removeClass('dtree-select-up'); - } else { - $card.addClass('dtree-select-up'); - } - } else { - $card.removeClass('dtree-select-up'); - } - - // 下拉树面板开闭状态改变后,用户自定义想做的事情 - layui.event.call(this, MOD_NAME, "changeSelect("+$(_this.obj)[0].id+")", { - show: $(this).hasClass("layui-form-selected"), - param: _this.selectVal() - }); - }); - - } - }; - - // 绑定body的单击,让本页面所有的toolbar隐藏 - $BODY.on("click", function(event){ - $("div."+LI_DIV_TOOLBAR).find(".layui-show").removeClass('layui-anim-fadein layui-show'); - // $("div[dtree-id][dtree-select]").removeClass("layui-form-selected"); - // $("div[dtree-id][dtree-card]").removeClass("dtree-select-show layui-anim layui-anim-upbit"); - - }); - - // 解绑浏览器事件 - DTree.prototype.unbindBrowserEvent = function(){ - var _this = this; - - // 本身事件解绑 - _this.obj.unbind(); - // 菜单栏解绑 - if(_this.menubar){ - _this.obj.prevAll('div#dtree_menubar_'+_this.obj[0].id).unbind(); - if(_this.obj.closest('body').find("*[dtree-id='"+_this.obj[0].id+"'][dtree-menu]").length > 0){ - _this.obj.closest('body').find("*[dtree-id='"+_this.obj[0].id+"'][dtree-menu]").unbind(); - } - } - - // 工具栏解绑 - if(_this.toolbar){ - if(_this.toolbarWay == "contextmenu") { - _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).unbind(); - if(_this.obj.closest(_this.scroll).length > 0){ - _this.obj.closest(_this.scroll).unbind(); - } - } - } - - // 下拉树解绑 - if(_this.select) { - // 解绑select的点击事件 - $("div[dtree-id='" + _this.obj[0].id + "'][dtree-select='"+_this.selectDiv+"']").removeClass("layui-form-selected"); - $("div[dtree-id='" + _this.obj[0].id + "'][dtree-card='"+_this.selectCardDiv+"']").removeClass("dtree-select-show layui-anim layui-anim-upbit"); - $("div[dtree-id='" + _this.obj[0].id + "'][dtree-select='"+_this.selectDiv+"']").unbind(); - } - }; - - - /** 外部访问 **/ - var dtree = { - set: function(options){ //设置全局属性 - if(typeof options !== 'undefined') { - $.extend(OPTIONS, options); - } - }, - render: function(options){ // 初始化树 - var dTree = null; - var id = event.getElemId(options); - if(id == "") { - layer.msg("页面中未找到绑定id", {icon:5}); - } else { - dTree = DTrees[id]; - if(typeof dTree === 'object'){ - dTree.unbindBrowserEvent(); - } - // 创建树 - dTree = new DTree(options); - // 添加到树数组中去 - DTrees[id] = dTree; - dTree.initTreePlus(); - dTree.openTreePlus(); - dTree.loadTreeInit(); - dTree.bindBrowserEvent(); - } - - return dTree; - }, - renderSelect: function(options){ // 初始化下拉树 - var dTree = null; - var id = event.getElemId(options); - if(id == "") { - layer.msg("页面中未找到绑定id", {icon:5}); - } else { - dTree = DTrees[id]; - if(typeof dTree === 'object'){ - dTree.unbindBrowserEvent(); - } - // 创建下拉树 - dTree = new DTree(options); - dTree.selectSetting(); - // 添加到树数组中去 - DTrees[id] = dTree; - dTree.initTreePlus(); - dTree.openTreePlus(); - dTree.loadTreeInit(); - dTree.bindBrowserEvent(); - } - - return dTree; - }, - reload: function(dTree, options){ // 重新加载树 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - dTree.reloadSetting(options); - dTree.initTreePlus(); - dTree.openTreePlus(); - dTree.initNodeParam(); - dTree.loadTreeInit(); - dTree.unbindBrowserEvent(); - dTree.bindBrowserEvent(); - }, - on: function(events, callback) { // 绑定事件 - if(events.indexOf("'") > 0){ - events = events.replace(/'/g,""); - } - if(events.indexOf('"') > 0) { - events = events.replace(/"/g,""); - } - return layui.onevent.call(this, MOD_NAME, events, callback); - }, - click: function(dTree, id) { // 模拟单击事件 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - $("div[dtree-click='"+eventName.itemNodeClick+"'][dtree-id='"+dTree.obj[0].id+"'][data-id='"+id+"']").click(); - }, - getNowParam: function(dTree){ // 获取当前选中值 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.getNowParam(); // 获取当前选中值 - }, - getParam: function(dTree, id){ // 获取指定节点值 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.getParam(id); // 获取指定节点值 - }, - getParentParam: function(dTree, id){ // 获取参数的上级节点 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.getParentParam(id); - }, - getAllParentParam: function(dTree, id){ // 获取参数的全部上级节点 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.getAllParentParam(id); - }, - getChildParam: function(dTree, id){ // 获取参数的全部下级节点 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.getChildParam(id); - }, - getCheckbarNodesParam: function(dTree){ // 获取复选框选中值 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return {}; - } - return dTree.getCheckbarNodesParam(); // 获取复选框选中值 - }, - getCheckbarJsonArrParam: function(dTree){ // 获取复选框选中值 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return {}; - } - return dTree.getCheckbarJsonArrParam(); // 获取复选框选中值 - }, - dataInit: function(dTree, chooseId){ // 初始化选中树,针对数据反选 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - if(chooseId){ - return dTree.dataInit(chooseId); - } - }, - chooseDataInit: function(dTree, chooseIds){ // 初始化复选框选中,针对数据反选 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - if(chooseIds){ - return dTree.chooseDataInit(chooseIds); - } - }, - changeCheckbarNodes: function(dTree){ //判断复选框是否发生变更 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.changeCheckbarNodes(); - }, - initNoAllCheck: function(dTree) { //复选框半选状态初始化设置 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.initNoAllCheck(); - }, - initAllCheck: function(dTree){ // 复选框选中状态初始化设置 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.initAllCheck(); - }, - selectVal: function(dTree, param){ // select模式设置输入框选中值 - if(typeof dTree === "string"){ - dTree = DTrees[dTree]; - } - if(typeof dTree === "undefined"){ - layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2}); - return ; - } - return dTree.selectVal(param); // select模式设置输入框选中值 - }, - escape: function(html){ // 字符串格式化 - return event.escape(html); - }, - unescape: function(str){ // 字符串反格式化 - return event.unescape(str); - }, - serialize: function(first, param) { // 序列化JSON对象 - return AjaxHelper.serialize(first, param); - }, - version: function(){ //获取版本号 - return VERSION; - } - }; - - exports('dtree', dtree); -}); \ No newline at end of file diff --git a/component/pear/module/echarts.js b/component/pear/module/extends/echarts.js similarity index 100% rename from component/pear/module/echarts.js rename to component/pear/module/extends/echarts.js diff --git a/component/pear/module/echartsTheme.js b/component/pear/module/extends/echartsTheme.js similarity index 100% rename from component/pear/module/echartsTheme.js rename to component/pear/module/extends/echartsTheme.js diff --git a/component/pear/module/nprogress.js b/component/pear/module/extends/nprogress.js similarity index 100% rename from component/pear/module/nprogress.js rename to component/pear/module/extends/nprogress.js diff --git a/component/pear/module/extends/toast.js b/component/pear/module/extends/toast.js new file mode 100644 index 0000000..16b7087 --- /dev/null +++ b/component/pear/module/extends/toast.js @@ -0,0 +1,1225 @@ +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + define([], factory(root)); + } else if (typeof exports === 'object') { + module.exports = factory(root); + } else if (window.layui && layui.define) { + layui.define(function (exports) { + exports('toast', factory(root)) + }) + } else { + root.iziToast = factory(root); + } +})(typeof global !== 'undefined' ? global : window || this.window || this.global, function (root) { + + 'use strict'; + + var $iziToast = {}, + PLUGIN_NAME = 'iziToast', + BODY = document.querySelector('body'), + ISMOBILE = (/Mobi/.test(navigator.userAgent)) ? true : false, + ISCHROME = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor), + ISFIREFOX = typeof InstallTrigger !== 'undefined', + ACCEPTSTOUCH = 'ontouchstart' in document.documentElement, + POSITIONS = ['bottomRight', 'bottomLeft', 'bottomCenter', 'topRight', 'topLeft', 'topCenter', 'center'], + THEMES = { + info: { + color: 'blue', + icon: 'ico-info' + }, + success: { + color: 'green', + icon: 'ico-success' + }, + warning: { + color: 'orange', + icon: 'ico-warning' + }, + error: { + color: 'red', + icon: 'ico-error' + }, + question: { + color: 'yellow', + icon: 'ico-question' + } + }, + MOBILEWIDTH = 568, + CONFIG = {}; + + $iziToast.children = {}; + + // Default settings + var defaults = { + id: null, + class: '', + title: '', + titleColor: '', + titleSize: '', + titleLineHeight: '', + message: '', + messageColor: '', + messageSize: '', + messageLineHeight: '', + backgroundColor: '', + theme: 'light', // dark + color: '', // blue, red, green, yellow + icon: '', + iconText: '', + iconColor: '', + iconUrl: null, + image: '', + imageWidth: 50, + maxWidth: null, + zindex: null, + layout: 2, + balloon: false, + close: true, + closeOnEscape: false, + closeOnClick: false, + displayMode: 0, + position: 'topCenter', // bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter, center + target: '', + targetFirst: true, + timeout: 3000, // 默认3秒 + rtl: false, + animateInside: false, // 动画效果 + drag: true, + pauseOnHover: true, + resetOnHover: false, + progressBar: false, + progressBarColor: '', + progressBarEasing: 'linear', + overlay: false, + overlayClose: false, + overlayColor: 'rgba(0, 0, 0, 0.6)', + transitionIn: 'fadeInDown', // bounceInLeft, bounceInRight, bounceInUp, bounceInDown, fadeIn, fadeInDown, fadeInUp, fadeInLeft, fadeInRight, flipInX + transitionOut: 'fadeOut', // fadeOut, fadeOutUp, fadeOutDown, fadeOutLeft, fadeOutRight, flipOutX + transitionInMobile: 'bounceInDown', + transitionOutMobile: 'fadeOutUp', + buttons: {}, + inputs: {}, + onOpening: function () { }, + onOpened: function () { }, + onClosing: function () { }, + onClosed: function () { } + }; + + if (!('remove' in Element.prototype)) { + Element.prototype.remove = function () { + if (this.parentNode) { + this.parentNode.removeChild(this); + } + }; + } + + if (typeof window.CustomEvent !== 'function') { + var CustomEventPolyfill = function (event, params) { + params = params || { bubbles: false, cancelable: false, detail: undefined }; + var evt = document.createEvent('CustomEvent'); + evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); + return evt; + }; + + CustomEventPolyfill.prototype = window.Event.prototype; + + window.CustomEvent = CustomEventPolyfill; + } + + var forEach = function (collection, callback, scope) { + if (Object.prototype.toString.call(collection) === '[object Object]') { + for (var prop in collection) { + if (Object.prototype.hasOwnProperty.call(collection, prop)) { + callback.call(scope, collection[prop], prop, collection); + } + } + } else { + if (collection) { + for (var i = 0, len = collection.length; i < len; i++) { + callback.call(scope, collection[i], i, collection); + } + } + } + }; + + var extend = function (defaults, options) { + var extended = {}; + forEach(defaults, function (value, prop) { + extended[prop] = defaults[prop]; + }); + forEach(options, function (value, prop) { + extended[prop] = options[prop]; + }); + return extended; + }; + + var createFragElem = function (htmlStr) { + var frag = document.createDocumentFragment(), + temp = document.createElement('div'); + temp.innerHTML = htmlStr; + while (temp.firstChild) { + frag.appendChild(temp.firstChild); + } + return frag; + }; + + var generateId = function (params) { + var newId = btoa(encodeURIComponent(params)); + return newId.replace(/=/g, ""); + }; + + var isColor = function (color) { + if (color.substring(0, 1) == '#' || color.substring(0, 3) == 'rgb' || color.substring(0, 3) == 'hsl') { + return true; + } else { + return false; + } + }; + + var isBase64 = function (str) { + try { + return btoa(atob(str)) == str; + } catch (err) { + return false; + } + }; + + var drag = function () { + + return { + move: function (toast, instance, settings, xpos) { + + var opacity, + opacityRange = 0.3, + distance = 180; + + if (xpos !== 0) { + + toast.classList.add(PLUGIN_NAME + '-dragged'); + + toast.style.transform = 'translateX(' + xpos + 'px)'; + + if (xpos > 0) { + opacity = (distance - xpos) / distance; + if (opacity < opacityRange) { + instance.hide(extend(settings, { transitionOut: 'fadeOutRight', transitionOutMobile: 'fadeOutRight' }), toast, 'drag'); + } + } else { + opacity = (distance + xpos) / distance; + if (opacity < opacityRange) { + instance.hide(extend(settings, { transitionOut: 'fadeOutLeft', transitionOutMobile: 'fadeOutLeft' }), toast, 'drag'); + } + } + toast.style.opacity = opacity; + + if (opacity < opacityRange) { + + if (ISCHROME || ISFIREFOX) + toast.style.left = xpos + 'px'; + + toast.parentNode.style.opacity = opacityRange; + + this.stopMoving(toast, null); + } + } + + + }, + startMoving: function (toast, instance, settings, e) { + + e = e || window.event; + var posX = ((ACCEPTSTOUCH) ? e.touches[0].clientX : e.clientX), + toastLeft = toast.style.transform.replace('px)', ''); + toastLeft = toastLeft.replace('translateX(', ''); + var offsetX = posX - toastLeft; + + if (settings.transitionIn) { + toast.classList.remove(settings.transitionIn); + } + if (settings.transitionInMobile) { + toast.classList.remove(settings.transitionInMobile); + } + toast.style.transition = ''; + + if (ACCEPTSTOUCH) { + document.ontouchmove = function (e) { + e.preventDefault(); + e = e || window.event; + var posX = e.touches[0].clientX, + finalX = posX - offsetX; + drag.move(toast, instance, settings, finalX); + }; + } else { + document.onmousemove = function (e) { + e.preventDefault(); + e = e || window.event; + var posX = e.clientX, + finalX = posX - offsetX; + drag.move(toast, instance, settings, finalX); + }; + } + + }, + stopMoving: function (toast, e) { + + if (ACCEPTSTOUCH) { + document.ontouchmove = function () { }; + } else { + document.onmousemove = function () { }; + } + + toast.style.opacity = ''; + toast.style.transform = ''; + + if (toast.classList.contains(PLUGIN_NAME + '-dragged')) { + + toast.classList.remove(PLUGIN_NAME + '-dragged'); + + toast.style.transition = 'transform 0.4s ease, opacity 0.4s ease'; + setTimeout(function () { + toast.style.transition = ''; + }, 400); + } + + } + }; + + }(); + + $iziToast.setSetting = function (ref, option, value) { + + $iziToast.children[ref][option] = value; + + }; + + $iziToast.getSetting = function (ref, option) { + + return $iziToast.children[ref][option]; + + }; + + $iziToast.destroy = function () { + + forEach(document.querySelectorAll('.' + PLUGIN_NAME + '-overlay'), function (element, index) { + element.remove(); + }); + + forEach(document.querySelectorAll('.' + PLUGIN_NAME + '-wrapper'), function (element, index) { + element.remove(); + }); + + forEach(document.querySelectorAll('.' + PLUGIN_NAME), function (element, index) { + element.remove(); + }); + + this.children = {}; + + // Remove event listeners + document.removeEventListener(PLUGIN_NAME + '-opened', {}, false); + document.removeEventListener(PLUGIN_NAME + '-opening', {}, false); + document.removeEventListener(PLUGIN_NAME + '-closing', {}, false); + document.removeEventListener(PLUGIN_NAME + '-closed', {}, false); + document.removeEventListener('keyup', {}, false); + + // Reset variables + CONFIG = {}; + }; + + /** + * Initialize Plugin + * @public + * @param {Object} options User settings + */ + $iziToast.settings = function (options) { + + // Destroy any existing initializations + $iziToast.destroy(); + + CONFIG = options; + defaults = extend(defaults, options || {}); + }; + + + /** + * Building themes functions. + * @public + * @param {Object} options User settings + */ + forEach(THEMES, function (theme, name) { + + $iziToast[name] = function (options) { + + var settings = extend(CONFIG, options || {}); + settings = extend(theme, settings || {}); + + this.show(settings); + }; + + }); + + + /** + * Do the calculation to move the progress bar + * @private + */ + $iziToast.progress = function (options, $toast, callback) { + + + var that = this, + ref = $toast.getAttribute('data-iziToast-ref'), + settings = extend(this.children[ref], options || {}), + $elem = $toast.querySelector('.' + PLUGIN_NAME + '-progressbar div'); + + return { + start: function () { + + if (typeof settings.time.REMAINING == 'undefined') { + + $toast.classList.remove(PLUGIN_NAME + '-reseted'); + + if ($elem !== null) { + $elem.style.transition = 'width ' + settings.timeout + 'ms ' + settings.progressBarEasing; + $elem.style.width = '0%'; + } + + settings.time.START = new Date().getTime(); + settings.time.END = settings.time.START + settings.timeout; + settings.time.TIMER = setTimeout(function () { + + clearTimeout(settings.time.TIMER); + + if (!$toast.classList.contains(PLUGIN_NAME + '-closing')) { + + that.hide(settings, $toast, 'timeout'); + + if (typeof callback === 'function') { + callback.apply(that); + } + } + + }, settings.timeout); + that.setSetting(ref, 'time', settings.time); + } + }, + pause: function () { + + if (typeof settings.time.START !== 'undefined' && !$toast.classList.contains(PLUGIN_NAME + '-paused') && !$toast.classList.contains(PLUGIN_NAME + '-reseted')) { + + $toast.classList.add(PLUGIN_NAME + '-paused'); + + settings.time.REMAINING = settings.time.END - new Date().getTime(); + + clearTimeout(settings.time.TIMER); + + that.setSetting(ref, 'time', settings.time); + + if ($elem !== null) { + var computedStyle = window.getComputedStyle($elem), + propertyWidth = computedStyle.getPropertyValue('width'); + + $elem.style.transition = 'none'; + $elem.style.width = propertyWidth; + } + + if (typeof callback === 'function') { + setTimeout(function () { + callback.apply(that); + }, 10); + } + } + }, + resume: function () { + + if (typeof settings.time.REMAINING !== 'undefined') { + + $toast.classList.remove(PLUGIN_NAME + '-paused'); + + if ($elem !== null) { + $elem.style.transition = 'width ' + settings.time.REMAINING + 'ms ' + settings.progressBarEasing; + $elem.style.width = '0%'; + } + + settings.time.END = new Date().getTime() + settings.time.REMAINING; + settings.time.TIMER = setTimeout(function () { + + clearTimeout(settings.time.TIMER); + + if (!$toast.classList.contains(PLUGIN_NAME + '-closing')) { + + that.hide(settings, $toast, 'timeout'); + + if (typeof callback === 'function') { + callback.apply(that); + } + } + + + }, settings.time.REMAINING); + + that.setSetting(ref, 'time', settings.time); + } else { + this.start(); + } + }, + reset: function () { + + clearTimeout(settings.time.TIMER); + + delete settings.time.REMAINING; + + that.setSetting(ref, 'time', settings.time); + + $toast.classList.add(PLUGIN_NAME + '-reseted'); + + $toast.classList.remove(PLUGIN_NAME + '-paused'); + + if ($elem !== null) { + $elem.style.transition = 'none'; + $elem.style.width = '100%'; + } + + if (typeof callback === 'function') { + setTimeout(function () { + callback.apply(that); + }, 10); + } + } + }; + + }; + + + /** + * Close the specific Toast + * @public + * @param {Object} options User settings + */ + $iziToast.hide = function (options, $toast, closedBy) { + + if (typeof $toast != 'object') { + $toast = document.querySelector($toast); + } + + var that = this, + settings = extend(this.children[$toast.getAttribute('data-iziToast-ref')], options || {}); + settings.closedBy = closedBy || null; + + delete settings.time.REMAINING; + + $toast.classList.add(PLUGIN_NAME + '-closing'); + + // Overlay + (function () { + + var $overlay = document.querySelector('.' + PLUGIN_NAME + '-overlay'); + if ($overlay !== null) { + var refs = $overlay.getAttribute('data-iziToast-ref'); + refs = refs.split(','); + var index = refs.indexOf(String(settings.ref)); + + if (index !== -1) { + refs.splice(index, 1); + } + $overlay.setAttribute('data-iziToast-ref', refs.join()); + + if (refs.length === 0) { + $overlay.classList.remove('fadeIn'); + $overlay.classList.add('fadeOut'); + setTimeout(function () { + $overlay.remove(); + }, 700); + } + } + + })(); + + if (settings.transitionIn) { + $toast.classList.remove(settings.transitionIn); + } + + if (settings.transitionInMobile) { + $toast.classList.remove(settings.transitionInMobile); + } + + if (ISMOBILE || window.innerWidth <= MOBILEWIDTH) { + if (settings.transitionOutMobile) + $toast.classList.add(settings.transitionOutMobile); + } else { + if (settings.transitionOut) + $toast.classList.add(settings.transitionOut); + } + var H = $toast.parentNode.offsetHeight; + $toast.parentNode.style.height = H + 'px'; + $toast.style.pointerEvents = 'none'; + + if (!ISMOBILE || window.innerWidth > MOBILEWIDTH) { + $toast.parentNode.style.transitionDelay = '0.2s'; + } + + try { + var event = new CustomEvent(PLUGIN_NAME + '-closing', { detail: settings, bubbles: true, cancelable: true }); + document.dispatchEvent(event); + } catch (ex) { + console.warn(ex); + } + + setTimeout(function () { + + $toast.parentNode.style.height = '0px'; + $toast.parentNode.style.overflow = ''; + + setTimeout(function () { + + delete that.children[settings.ref]; + + $toast.parentNode.remove(); + + try { + var event = new CustomEvent(PLUGIN_NAME + '-closed', { detail: settings, bubbles: true, cancelable: true }); + document.dispatchEvent(event); + } catch (ex) { + console.warn(ex); + } + + if (typeof settings.onClosed !== 'undefined') { + settings.onClosed.apply(null, [settings, $toast, closedBy]); + } + + }, 1000); + }, 200); + + + if (typeof settings.onClosing !== 'undefined') { + settings.onClosing.apply(null, [settings, $toast, closedBy]); + } + }; + + /** + * Create and show the Toast + * @public + * @param {Object} options User settings + */ + $iziToast.show = function (options) { + + var that = this; + + // Merge user options with defaults + var settings = extend(CONFIG, options || {}); + settings = extend(defaults, settings); + settings.time = {}; + + if (settings.id === null) { + settings.id = generateId(settings.title + settings.message + settings.color); + } + + if (settings.displayMode === 1 || settings.displayMode == 'once') { + try { + if (document.querySelectorAll('.' + PLUGIN_NAME + '#' + settings.id).length > 0) { + return false; + } + } catch (exc) { + console.warn('[' + PLUGIN_NAME + '] Could not find an element with this selector: ' + '#' + settings.id + '. Try to set an valid id.'); + } + } + + if (settings.displayMode === 2 || settings.displayMode == 'replace') { + try { + forEach(document.querySelectorAll('.' + PLUGIN_NAME + '#' + settings.id), function (element, index) { + that.hide(settings, element, 'replaced'); + }); + } catch (exc) { + console.warn('[' + PLUGIN_NAME + '] Could not find an element with this selector: ' + '#' + settings.id + '. Try to set an valid id.'); + } + } + + settings.ref = new Date().getTime() + Math.floor((Math.random() * 10000000) + 1); + + $iziToast.children[settings.ref] = settings; + + var $DOM = { + body: document.querySelector('body'), + overlay: document.createElement('div'), + toast: document.createElement('div'), + toastBody: document.createElement('div'), + toastTexts: document.createElement('div'), + toastCapsule: document.createElement('div'), + cover: document.createElement('div'), + buttons: document.createElement('div'), + inputs: document.createElement('div'), + icon: !settings.iconUrl ? document.createElement('i') : document.createElement('img'), + wrapper: null + }; + + $DOM.toast.setAttribute('data-iziToast-ref', settings.ref); + $DOM.toast.appendChild($DOM.toastBody); + $DOM.toastCapsule.appendChild($DOM.toast); + + // CSS Settings + (function () { + + $DOM.toast.classList.add(PLUGIN_NAME); + $DOM.toast.classList.add(PLUGIN_NAME + '-opening'); + $DOM.toastCapsule.classList.add(PLUGIN_NAME + '-capsule'); + $DOM.toastBody.classList.add(PLUGIN_NAME + '-body'); + $DOM.toastTexts.classList.add(PLUGIN_NAME + '-texts'); + + if (ISMOBILE || window.innerWidth <= MOBILEWIDTH) { + if (settings.transitionInMobile) + $DOM.toast.classList.add(settings.transitionInMobile); + } else { + if (settings.transitionIn) + $DOM.toast.classList.add(settings.transitionIn); + } + + if (settings.class) { + var classes = settings.class.split(' '); + forEach(classes, function (value, index) { + $DOM.toast.classList.add(value); + }); + } + + if (settings.id) { $DOM.toast.id = settings.id; } + + if (settings.rtl) { + $DOM.toast.classList.add(PLUGIN_NAME + '-rtl'); + $DOM.toast.setAttribute('dir', 'rtl'); + } + + if (settings.layout > 1) { $DOM.toast.classList.add(PLUGIN_NAME + '-layout' + settings.layout); } + + if (settings.balloon) { $DOM.toast.classList.add(PLUGIN_NAME + '-balloon'); } + + if (settings.maxWidth) { + if (!isNaN(settings.maxWidth)) { + $DOM.toast.style.maxWidth = settings.maxWidth + 'px'; + } else { + $DOM.toast.style.maxWidth = settings.maxWidth; + } + } + + if (settings.theme !== '' || settings.theme !== 'light') { + + $DOM.toast.classList.add(PLUGIN_NAME + '-theme-' + settings.theme); + } + + if (settings.color) { //#, rgb, rgba, hsl + + if (isColor(settings.color)) { + $DOM.toast.style.background = settings.color; + } else { + $DOM.toast.classList.add(PLUGIN_NAME + '-color-' + settings.color); + } + } + + if (settings.backgroundColor) { + $DOM.toast.style.background = settings.backgroundColor; + if (settings.balloon) { + $DOM.toast.style.borderColor = settings.backgroundColor; + } + } + })(); + + // Cover image + (function () { + if (settings.image) { + $DOM.cover.classList.add(PLUGIN_NAME + '-cover'); + $DOM.cover.style.width = settings.imageWidth + 'px'; + + if (isBase64(settings.image.replace(/ /g, ''))) { + $DOM.cover.style.backgroundImage = 'url(data:image/png;base64,' + settings.image.replace(/ /g, '') + ')'; + } else { + $DOM.cover.style.backgroundImage = 'url(' + settings.image + ')'; + } + + if (settings.rtl) { + $DOM.toastBody.style.marginRight = (settings.imageWidth + 10) + 'px'; + } else { + $DOM.toastBody.style.marginLeft = (settings.imageWidth + 10) + 'px'; + } + $DOM.toast.appendChild($DOM.cover); + } + })(); + + // Button close + (function () { + if (settings.close) { + + $DOM.buttonClose = document.createElement('button'); + $DOM.buttonClose.type = 'button'; + $DOM.buttonClose.classList.add(PLUGIN_NAME + '-close'); + $DOM.buttonClose.addEventListener('click', function (e) { + var button = e.target; + that.hide(settings, $DOM.toast, 'button'); + }); + $DOM.toast.appendChild($DOM.buttonClose); + } else { + if (settings.rtl) { + $DOM.toast.style.paddingLeft = '18px'; + } else { + $DOM.toast.style.paddingRight = '18px'; + } + } + })(); + + // Progress Bar & Timeout + (function () { + + if (settings.progressBar) { + $DOM.progressBar = document.createElement('div'); + $DOM.progressBarDiv = document.createElement('div'); + $DOM.progressBar.classList.add(PLUGIN_NAME + '-progressbar'); + $DOM.progressBarDiv.style.background = settings.progressBarColor; + $DOM.progressBar.appendChild($DOM.progressBarDiv); + $DOM.toast.appendChild($DOM.progressBar); + } + + if (settings.timeout) { + + if (settings.pauseOnHover && !settings.resetOnHover) { + + $DOM.toast.addEventListener('mouseenter', function (e) { + that.progress(settings, $DOM.toast).pause(); + }); + $DOM.toast.addEventListener('mouseleave', function (e) { + that.progress(settings, $DOM.toast).resume(); + }); + } + + if (settings.resetOnHover) { + + $DOM.toast.addEventListener('mouseenter', function (e) { + that.progress(settings, $DOM.toast).reset(); + }); + $DOM.toast.addEventListener('mouseleave', function (e) { + that.progress(settings, $DOM.toast).start(); + }); + } + } + })(); + + // Icon + (function () { + + if (settings.iconUrl) { + + $DOM.icon.setAttribute('class', PLUGIN_NAME + '-icon'); + $DOM.icon.setAttribute('src', settings.iconUrl); + + } else if (settings.icon) { + $DOM.icon.setAttribute('class', PLUGIN_NAME + '-icon ' + settings.icon); + + if (settings.iconText) { + $DOM.icon.appendChild(document.createTextNode(settings.iconText)); + } + + if (settings.iconColor) { + $DOM.icon.style.color = settings.iconColor; + } + } + + if (settings.icon || settings.iconUrl) { + + if (settings.rtl) { + $DOM.toastBody.style.paddingRight = '33px'; + } else { + $DOM.toastBody.style.paddingLeft = '33px'; + } + + $DOM.toastBody.appendChild($DOM.icon); + } + + })(); + + // Title & Message + (function () { + if (settings.title.length > 0) { + + $DOM.strong = document.createElement('strong'); + $DOM.strong.classList.add(PLUGIN_NAME + '-title'); + $DOM.strong.appendChild(createFragElem(settings.title)); + $DOM.toastTexts.appendChild($DOM.strong); + + if (settings.titleColor) { + $DOM.strong.style.color = settings.titleColor; + } + if (settings.titleSize) { + if (!isNaN(settings.titleSize)) { + $DOM.strong.style.fontSize = settings.titleSize + 'px'; + } else { + $DOM.strong.style.fontSize = settings.titleSize; + } + } + if (settings.titleLineHeight) { + if (!isNaN(settings.titleSize)) { + $DOM.strong.style.lineHeight = settings.titleLineHeight + 'px'; + } else { + $DOM.strong.style.lineHeight = settings.titleLineHeight; + } + } + } + + if (settings.message.length > 0) { + + $DOM.p = document.createElement('p'); + $DOM.p.classList.add(PLUGIN_NAME + '-message'); + $DOM.p.appendChild(createFragElem(settings.message)); + $DOM.toastTexts.appendChild($DOM.p); + + if (settings.messageColor) { + $DOM.p.style.color = settings.messageColor; + } + if (settings.messageSize) { + if (!isNaN(settings.titleSize)) { + $DOM.p.style.fontSize = settings.messageSize + 'px'; + } else { + $DOM.p.style.fontSize = settings.messageSize; + } + } + if (settings.messageLineHeight) { + + if (!isNaN(settings.titleSize)) { + $DOM.p.style.lineHeight = settings.messageLineHeight + 'px'; + } else { + $DOM.p.style.lineHeight = settings.messageLineHeight; + } + } + } + + if (settings.title.length > 0 && settings.message.length > 0) { + if (settings.rtl) { + $DOM.strong.style.marginLeft = '10px'; + } else if (settings.layout !== 2 && !settings.rtl) { + $DOM.strong.style.marginRight = '10px'; + } + } + })(); + + $DOM.toastBody.appendChild($DOM.toastTexts); + + // Inputs + var $inputs; + (function () { + if (settings.inputs.length > 0) { + + $DOM.inputs.classList.add(PLUGIN_NAME + '-inputs'); + + forEach(settings.inputs, function (value, index) { + $DOM.inputs.appendChild(createFragElem(value[0])); + + $inputs = $DOM.inputs.childNodes; + + $inputs[index].classList.add(PLUGIN_NAME + '-inputs-child'); + + if (value[3]) { + setTimeout(function () { + $inputs[index].focus(); + }, 300); + } + + $inputs[index].addEventListener(value[1], function (e) { + var ts = value[2]; + return ts(that, $DOM.toast, this, e); + }); + }); + $DOM.toastBody.appendChild($DOM.inputs); + } + })(); + + // Buttons + (function () { + if (settings.buttons.length > 0) { + + $DOM.buttons.classList.add(PLUGIN_NAME + '-buttons'); + + forEach(settings.buttons, function (value, index) { + $DOM.buttons.appendChild(createFragElem(value[0])); + + var $btns = $DOM.buttons.childNodes; + + $btns[index].classList.add(PLUGIN_NAME + '-buttons-child'); + + if (value[2]) { + setTimeout(function () { + $btns[index].focus(); + }, 300); + } + + $btns[index].addEventListener('click', function (e) { + e.preventDefault(); + var ts = value[1]; + return ts(that, $DOM.toast, this, e, $inputs); + }); + }); + } + $DOM.toastBody.appendChild($DOM.buttons); + })(); + + if (settings.message.length > 0 && (settings.inputs.length > 0 || settings.buttons.length > 0)) { + $DOM.p.style.marginBottom = '0'; + } + + if (settings.inputs.length > 0 || settings.buttons.length > 0) { + if (settings.rtl) { + $DOM.toastTexts.style.marginLeft = '10px'; + } else { + $DOM.toastTexts.style.marginRight = '10px'; + } + if (settings.inputs.length > 0 && settings.buttons.length > 0) { + if (settings.rtl) { + $DOM.inputs.style.marginLeft = '8px'; + } else { + $DOM.inputs.style.marginRight = '8px'; + } + } + } + + // Wrap + (function () { + $DOM.toastCapsule.style.visibility = 'hidden'; + setTimeout(function () { + var H = $DOM.toast.offsetHeight; + var style = $DOM.toast.currentStyle || window.getComputedStyle($DOM.toast); + var marginTop = style.marginTop; + marginTop = marginTop.split('px'); + marginTop = parseInt(marginTop[0]); + var marginBottom = style.marginBottom; + marginBottom = marginBottom.split('px'); + marginBottom = parseInt(marginBottom[0]); + + $DOM.toastCapsule.style.visibility = ''; + $DOM.toastCapsule.style.height = (H + marginBottom + marginTop) + 'px'; + + setTimeout(function () { + $DOM.toastCapsule.style.height = 'auto'; + if (settings.target) { + $DOM.toastCapsule.style.overflow = 'visible'; + } + }, 500); + + if (settings.timeout) { + that.progress(settings, $DOM.toast).start(); + } + }, 100); + })(); + + // Target + (function () { + var position = settings.position; + + if (settings.target) { + + $DOM.wrapper = document.querySelector(settings.target); + $DOM.wrapper.classList.add(PLUGIN_NAME + '-target'); + + if (settings.targetFirst) { + $DOM.wrapper.insertBefore($DOM.toastCapsule, $DOM.wrapper.firstChild); + } else { + $DOM.wrapper.appendChild($DOM.toastCapsule); + } + + } else { + + if (POSITIONS.indexOf(settings.position) == -1) { + console.warn('[' + PLUGIN_NAME + '] Incorrect position.\nIt can be › ' + POSITIONS); + return; + } + + if (ISMOBILE || window.innerWidth <= MOBILEWIDTH) { + if (settings.position == 'bottomLeft' || settings.position == 'bottomRight' || settings.position == 'bottomCenter') { + position = PLUGIN_NAME + '-wrapper-bottomCenter'; + } + else if (settings.position == 'topLeft' || settings.position == 'topRight' || settings.position == 'topCenter') { + position = PLUGIN_NAME + '-wrapper-topCenter'; + } + else { + position = PLUGIN_NAME + '-wrapper-center'; + } + } else { + position = PLUGIN_NAME + '-wrapper-' + position; + } + $DOM.wrapper = document.querySelector('.' + PLUGIN_NAME + '-wrapper.' + position); + + if (!$DOM.wrapper) { + $DOM.wrapper = document.createElement('div'); + $DOM.wrapper.classList.add(PLUGIN_NAME + '-wrapper'); + $DOM.wrapper.classList.add(position); + document.body.appendChild($DOM.wrapper); + } + if (settings.position == 'topLeft' || settings.position == 'topCenter' || settings.position == 'topRight') { + $DOM.wrapper.insertBefore($DOM.toastCapsule, $DOM.wrapper.firstChild); + } else { + $DOM.wrapper.appendChild($DOM.toastCapsule); + } + } + + if (!isNaN(settings.zindex)) { + $DOM.wrapper.style.zIndex = settings.zindex; + } else { + console.warn('[' + PLUGIN_NAME + '] Invalid zIndex.'); + } + })(); + + // Overlay + (function () { + + if (settings.overlay) { + + if (document.querySelector('.' + PLUGIN_NAME + '-overlay.fadeIn') !== null) { + + $DOM.overlay = document.querySelector('.' + PLUGIN_NAME + '-overlay'); + $DOM.overlay.setAttribute('data-iziToast-ref', $DOM.overlay.getAttribute('data-iziToast-ref') + ',' + settings.ref); + + if (!isNaN(settings.zindex) && settings.zindex !== null) { + $DOM.overlay.style.zIndex = settings.zindex - 1; + } + + } else { + + $DOM.overlay.classList.add(PLUGIN_NAME + '-overlay'); + $DOM.overlay.classList.add('fadeIn'); + $DOM.overlay.style.background = settings.overlayColor; + $DOM.overlay.setAttribute('data-iziToast-ref', settings.ref); + if (!isNaN(settings.zindex) && settings.zindex !== null) { + $DOM.overlay.style.zIndex = settings.zindex - 1; + } + document.querySelector('body').appendChild($DOM.overlay); + } + + if (settings.overlayClose) { + + $DOM.overlay.removeEventListener('click', {}); + $DOM.overlay.addEventListener('click', function (e) { + that.hide(settings, $DOM.toast, 'overlay'); + }); + } else { + $DOM.overlay.removeEventListener('click', {}); + } + } + })(); + + // Inside animations + (function () { + if (settings.animateInside) { + $DOM.toast.classList.add(PLUGIN_NAME + '-animateInside'); + + var animationTimes = [200, 100, 300]; + if (settings.transitionIn == 'bounceInLeft' || settings.transitionIn == 'bounceInRight') { + animationTimes = [400, 200, 400]; + } + + if (settings.title.length > 0) { + setTimeout(function () { + $DOM.strong.classList.add('slideIn'); + }, animationTimes[0]); + } + + if (settings.message.length > 0) { + setTimeout(function () { + $DOM.p.classList.add('slideIn'); + }, animationTimes[1]); + } + + if (settings.icon || settings.iconUrl) { + setTimeout(function () { + $DOM.icon.classList.add('revealIn'); + }, animationTimes[2]); + } + + var counter = 150; + if (settings.buttons.length > 0 && $DOM.buttons) { + + setTimeout(function () { + + forEach($DOM.buttons.childNodes, function (element, index) { + + setTimeout(function () { + element.classList.add('revealIn'); + }, counter); + counter = counter + 150; + }); + + }, settings.inputs.length > 0 ? 150 : 0); + } + + if (settings.inputs.length > 0 && $DOM.inputs) { + counter = 150; + forEach($DOM.inputs.childNodes, function (element, index) { + + setTimeout(function () { + element.classList.add('revealIn'); + }, counter); + counter = counter + 150; + }); + } + } + })(); + + settings.onOpening.apply(null, [settings, $DOM.toast]); + + try { + var event = new CustomEvent(PLUGIN_NAME + '-opening', { detail: settings, bubbles: true, cancelable: true }); + document.dispatchEvent(event); + } catch (ex) { + console.warn(ex); + } + + setTimeout(function () { + + $DOM.toast.classList.remove(PLUGIN_NAME + '-opening'); + $DOM.toast.classList.add(PLUGIN_NAME + '-opened'); + + try { + var event = new CustomEvent(PLUGIN_NAME + '-opened', { detail: settings, bubbles: true, cancelable: true }); + document.dispatchEvent(event); + } catch (ex) { + console.warn(ex); + } + + settings.onOpened.apply(null, [settings, $DOM.toast]); + }, 1000); + + if (settings.drag) { + + if (ACCEPTSTOUCH) { + + $DOM.toast.addEventListener('touchstart', function (e) { + drag.startMoving(this, that, settings, e); + }, false); + + $DOM.toast.addEventListener('touchend', function (e) { + drag.stopMoving(this, e); + }, false); + } else { + + $DOM.toast.addEventListener('mousedown', function (e) { + e.preventDefault(); + drag.startMoving(this, that, settings, e); + }, false); + + $DOM.toast.addEventListener('mouseup', function (e) { + e.preventDefault(); + drag.stopMoving(this, e); + }, false); + } + } + + if (settings.closeOnEscape) { + + document.addEventListener('keyup', function (evt) { + evt = evt || window.event; + if (evt.keyCode == 27) { + that.hide(settings, $DOM.toast, 'esc'); + } + }); + } + + if (settings.closeOnClick) { + $DOM.toast.addEventListener('click', function (evt) { + that.hide(settings, $DOM.toast, 'toast'); + }); + } + + that.toast = $DOM.toast; + }; + return $iziToast; +}); \ No newline at end of file diff --git a/component/pear/module/yaml.js b/component/pear/module/extends/yaml.js similarity index 100% rename from component/pear/module/yaml.js rename to component/pear/module/extends/yaml.js diff --git a/component/pear/module/fullscreen.js b/component/pear/module/fullscreen.js index a0f3b4d..234c81b 100644 --- a/component/pear/module/fullscreen.js +++ b/component/pear/module/fullscreen.js @@ -1,4 +1,4 @@ -layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'menu', 'frame', 'theme', 'convert'], +layui.define(['jquery', 'element'], function(exports) { "use strict"; var $ = layui.jquery; diff --git a/component/pear/module/step.js b/component/pear/module/step.js deleted file mode 100644 index 4c96d17..0000000 --- a/component/pear/module/step.js +++ /dev/null @@ -1,80 +0,0 @@ -layui.define(['layer', 'carousel'], function (exports) { - var $ = layui.jquery; - var layer = layui.layer; - var carousel = layui.carousel; - - var renderDom = function (elem, stepItems, postion) { - var stepDiv = '
                                      '; - for (var i = 0; i < stepItems.length; i++) { - stepDiv += '
                                      '; - if (i < (stepItems.length - 1)) { - if (i < postion) { - stepDiv += '
                                      '; - } else { - stepDiv += '
                                      '; - } - } - var number = stepItems[i].number; - if (!number) { - number = i + 1; - } - if (i == postion) { - stepDiv += '
                                      ' + number + '
                                      '; - } else if (i < postion) { - stepDiv += '
                                      '; - } else { - stepDiv += '
                                      ' + number + '
                                      '; - } - var title = stepItems[i].title; - var desc = stepItems[i].desc; - var time = stepItems[i].time; - if (title || desc || time) { - stepDiv += '
                                      '; - if (title) { - stepDiv += '
                                      ' + title + '
                                      '; - } - if (desc) { - stepDiv += '
                                      ' + desc + '
                                      '; - } - if (time) { - stepDiv += '
                                      ' + time + '
                                      '; - } - stepDiv += '
                                      '; - } - stepDiv += '
                                      '; - } - stepDiv += '
                                      '; - $(elem).prepend(stepDiv); - var bfb = 100 / stepItems.length; - $('.step-item').css('width', bfb + '%'); - }; - - var pearStep = { - render: function (param) { - param.indicator = 'none'; // 不显示指示器 - param.arrow = 'always'; // 始终显示箭头 - param.autoplay = false; // 关闭自动播放 - if (!param.stepWidth) { - param.stepWidth = '400px'; - } - carousel.render(param); - var stepItems = param.stepItems; - renderDom(param.elem, stepItems, 0); - $('.lay-step').css('width', param.stepWidth); - carousel.on('change(' + param.filter + ')', function (obj) { - $(param.elem).find('.lay-step').remove(); - renderDom(param.elem, stepItems, obj.index); - $('.lay-step').css('width', param.stepWidth); - }); - $(param.elem).find('.layui-carousel-arrow').css('display', 'none'); - $(param.elem).css('background-color', 'transparent'); - }, - next: function (elem) { - $(elem).find('.layui-carousel-arrow[lay-type=add]').trigger('click'); - }, - pre: function (elem) { - $(elem).find('.layui-carousel-arrow[lay-type=sub]').trigger('click'); - } - }; - exports('step', pearStep); -}); \ No newline at end of file diff --git a/component/pear/module/tag.js b/component/pear/module/tag.js deleted file mode 100644 index b7222ce..0000000 --- a/component/pear/module/tag.js +++ /dev/null @@ -1,159 +0,0 @@ -layui.define('jquery', function(exports){ - "use strict"; - - var $ = layui.$ - ,MOD_NAME = 'tag', - TAG_CLASS = '.tag', - BUTTON_NEW_TAG ='button-new-tag', - INPUT_NEW_TAG ='input-new-tag', - TAG_ITEM ='tag-item', - CLOSE = 'tag-close', - DEFAULT_SKIN ='layui-btn layui-btn-primary layui-btn-sm' - ,tag = function(){ - this.config = { - skin: DEFAULT_SKIN, - tagText:'+ New Tag' - }; - this.configs = {} - }; - - //全局设置 - tag.prototype.set = function(options){ - var that = this; - $.extend(true, that.config, options); - tag.render(); - return that; - }; - - //表单事件监听 - tag.prototype.on = function(events, callback){ - return layui.onevent.call(this, MOD_NAME, events, callback); - }; - - //外部Tag新增 - tag.prototype.add = function(filter, options){ - var tagElem = $(TAG_CLASS + '[lay-filter='+ filter +']') - call.add(null, tagElem, options); - call.tagAuto(filter); - return this; - }; - - //外部Tag删除 - tag.prototype.delete = function(filter, layid){ - var tagElem = $(TAG_CLASS + '[lay-filter='+ filter +']') - ,tagItemElem = tagElem.find('>.' + TAG_ITEM + '[lay-id="'+ layid +'"]'); - call.delete(null, tagItemElem); - return this; - }; - - //基础事件体 - var call = { - //Tag点击 - tagClick: function(e, index, tagItemElem, options){ - options = options || {}; - var othis = tagItemElem || $(this) - ,index = index || othis.index(othis) - ,parents = othis.parents(TAG_CLASS).eq(0) - ,filter = parents.attr('lay-filter'); - layui.event.call(this, MOD_NAME, 'click('+ filter +')', { - elem: parents - ,index: index - }); - } - //Tag新增事件 - ,add: function(e, tagElem, options){ - var filter = tagElem.attr('lay-filter'), - buttonNewTag = tagElem.children('.' + BUTTON_NEW_TAG), - index = buttonNewTag.index() - ,newTag = ''; - var result = layui.event.call(this, MOD_NAME, 'add('+ filter +')', { - elem: tagElem - ,index: index - ,othis: newTag - }) - if(result === false) return; - buttonNewTag[0] ? buttonNewTag.before(newTag) : tagElem.append(newTag); - } - //Tag输入事件 - ,input: function(e, othis){ - var buttonNewTag = othis || $(this) - ,parents = buttonNewTag.parents(TAG_CLASS).eq(0) - ,filter = parents.attr('lay-filter') - var options = tag.configs[filter] = $.extend({}, tag.config, tag.configs[filter] || {}, options); - //标签输入框 - var inpatNewTag = $('
                                      '); - inpatNewTag.addClass(options.skin); - buttonNewTag.after(inpatNewTag).remove(); - inpatNewTag.children('.layui-input').on('blur', function () { - if(this.value){ - var options = { - text: this.value - } - call.add(null, parents, options); - } - inpatNewTag.remove(); - call.tagAuto(filter); - }).focus(); - } - //Tag删除 - ,delete: function(e, othis){ - var tagItem = othis || $(this).parent(), index = tagItem.index() - ,parents = tagItem.parents(TAG_CLASS).eq(0) - ,filter = parents.attr('lay-filter'); - - var result = layui.event.call(this, MOD_NAME, 'delete('+ filter +')', { - elem: parents - ,index: index - }) - if(result === false) return; - tagItem.remove() - } - //Tag 自适应 - ,tagAuto: function(filter){ - filter = filter || ''; - var options = filter ? tag.configs[filter] || tag.config : tag.config; - var elemFilter = function(){ - return filter ? ('[lay-filter="' + filter +'"]') : ''; - }(); - $(TAG_CLASS + elemFilter).each(function(){ - var othis = $(this),tagItem = othis.children('.' + TAG_ITEM), buttonNewTag = othis.children('.' + BUTTON_NEW_TAG); - tagItem.removeClass(DEFAULT_SKIN).addClass(options.skin); - //允许关闭 - if(othis.attr('lay-allowClose') && tagItem.length){ - tagItem.each(function(){ - var li = $(this); - if(!li.find('.'+CLOSE)[0]){ - var close = $(''); - close.on('click', call.delete); - li.append(close); - } - }); - } - //允许新增标签 - if(othis.attr('lay-newTag') && buttonNewTag.length === 0){ - buttonNewTag = $(''); - buttonNewTag.on('click', call.input); - othis.append(buttonNewTag); - } - buttonNewTag.html(options.tagText); - buttonNewTag.removeClass(DEFAULT_SKIN).addClass(options.skin); - }); - } - }; - - tag.prototype.init = function(filter, options){ - if(filter){ - tag.configs[filter] = $.extend({}, tag.config, tag.configs[filter] || {}, options); - } - return call.tagAuto.call(this, filter); - }; - - tag.prototype.render = tag.prototype.init; - - var tag = new tag(), dom = $(document); - tag.render(); - - dom.on('click', '.' + TAG_ITEM, call.tagClick); //tag 单击事件 - exports(MOD_NAME, tag); -}); - diff --git a/component/pear/module/toast.js b/component/pear/module/toast.js index 57c8ca5..16b7087 100644 --- a/component/pear/module/toast.js +++ b/component/pear/module/toast.js @@ -1,13 +1,13 @@ (function (root, factory) { - if(typeof define === 'function' && define.amd) { + if (typeof define === 'function' && define.amd) { define([], factory(root)); - } else if(typeof exports === 'object') { + } else if (typeof exports === 'object') { module.exports = factory(root); } else if (window.layui && layui.define) { - layui.define(function(exports){ - exports('toast',factory(root)) + layui.define(function (exports) { + exports('toast', factory(root)) }) - }else { + } else { root.iziToast = factory(root); } })(typeof global !== 'undefined' ? global : window || this.window || this.global, function (root) { @@ -21,7 +21,7 @@ ISCHROME = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor), ISFIREFOX = typeof InstallTrigger !== 'undefined', ACCEPTSTOUCH = 'ontouchstart' in document.documentElement, - POSITIONS = ['bottomRight','bottomLeft','bottomCenter','topRight','topLeft','topCenter','center'], + POSITIONS = ['bottomRight', 'bottomLeft', 'bottomCenter', 'topRight', 'topLeft', 'topCenter', 'center'], THEMES = { info: { color: 'blue', @@ -51,7 +51,7 @@ // Default settings var defaults = { - id: null, + id: null, class: '', title: '', titleColor: '', @@ -93,48 +93,48 @@ overlay: false, overlayClose: false, overlayColor: 'rgba(0, 0, 0, 0.6)', - transitionIn: 'fadeInDown', // bounceInLeft, bounceInRight, bounceInUp, bounceInDown, fadeIn, fadeInDown, fadeInUp, fadeInLeft, fadeInRight, flipInX - transitionOut: 'fadeOut', // fadeOut, fadeOutUp, fadeOutDown, fadeOutLeft, fadeOutRight, flipOutX - transitionInMobile: 'bounceInDown', - transitionOutMobile: 'fadeOutUp', + transitionIn: 'fadeInDown', // bounceInLeft, bounceInRight, bounceInUp, bounceInDown, fadeIn, fadeInDown, fadeInUp, fadeInLeft, fadeInRight, flipInX + transitionOut: 'fadeOut', // fadeOut, fadeOutUp, fadeOutDown, fadeOutLeft, fadeOutRight, flipOutX + transitionInMobile: 'bounceInDown', + transitionOutMobile: 'fadeOutUp', buttons: {}, inputs: {}, - onOpening: function () {}, - onOpened: function () {}, - onClosing: function () {}, - onClosed: function () {} + onOpening: function () { }, + onOpened: function () { }, + onClosing: function () { }, + onClosed: function () { } }; - if(!('remove' in Element.prototype)) { - Element.prototype.remove = function() { - if(this.parentNode) { - this.parentNode.removeChild(this); - } - }; + if (!('remove' in Element.prototype)) { + Element.prototype.remove = function () { + if (this.parentNode) { + this.parentNode.removeChild(this); + } + }; } - - if(typeof window.CustomEvent !== 'function') { - var CustomEventPolyfill = function (event, params) { - params = params || { bubbles: false, cancelable: false, detail: undefined }; - var evt = document.createEvent('CustomEvent'); - evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); - return evt; - }; - CustomEventPolyfill.prototype = window.Event.prototype; + if (typeof window.CustomEvent !== 'function') { + var CustomEventPolyfill = function (event, params) { + params = params || { bubbles: false, cancelable: false, detail: undefined }; + var evt = document.createEvent('CustomEvent'); + evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); + return evt; + }; - window.CustomEvent = CustomEventPolyfill; - } + CustomEventPolyfill.prototype = window.Event.prototype; + + window.CustomEvent = CustomEventPolyfill; + } var forEach = function (collection, callback, scope) { - if(Object.prototype.toString.call(collection) === '[object Object]') { + if (Object.prototype.toString.call(collection) === '[object Object]') { for (var prop in collection) { - if(Object.prototype.hasOwnProperty.call(collection, prop)) { + if (Object.prototype.hasOwnProperty.call(collection, prop)) { callback.call(scope, collection[prop], prop, collection); } } } else { - if(collection){ + if (collection) { for (var i = 0, len = collection.length; i < len; i++) { callback.call(scope, collection[i], i, collection); } @@ -153,7 +153,7 @@ return extended; }; - var createFragElem = function(htmlStr) { + var createFragElem = function (htmlStr) { var frag = document.createDocumentFragment(), temp = document.createElement('div'); temp.innerHTML = htmlStr; @@ -163,126 +163,126 @@ return frag; }; - var generateId = function(params) { + var generateId = function (params) { var newId = btoa(encodeURIComponent(params)); return newId.replace(/=/g, ""); }; - var isColor = function(color){ - if( color.substring(0,1) == '#' || color.substring(0,3) == 'rgb' || color.substring(0,3) == 'hsl' ){ + var isColor = function (color) { + if (color.substring(0, 1) == '#' || color.substring(0, 3) == 'rgb' || color.substring(0, 3) == 'hsl') { return true; } else { return false; } }; - var isBase64 = function(str) { - try { - return btoa(atob(str)) == str; - } catch (err) { - return false; - } + var isBase64 = function (str) { + try { + return btoa(atob(str)) == str; + } catch (err) { + return false; + } }; - var drag = function() { - - return { - move: function(toast, instance, settings, xpos) { + var drag = function () { + + return { + move: function (toast, instance, settings, xpos) { + + var opacity, + opacityRange = 0.3, + distance = 180; - var opacity, - opacityRange = 0.3, - distance = 180; - - if(xpos !== 0){ - - toast.classList.add(PLUGIN_NAME+'-dragged'); + if (xpos !== 0) { - toast.style.transform = 'translateX('+xpos + 'px)'; + toast.classList.add(PLUGIN_NAME + '-dragged'); - if(xpos > 0){ - opacity = (distance-xpos) / distance; - if(opacity < opacityRange){ + toast.style.transform = 'translateX(' + xpos + 'px)'; + + if (xpos > 0) { + opacity = (distance - xpos) / distance; + if (opacity < opacityRange) { instance.hide(extend(settings, { transitionOut: 'fadeOutRight', transitionOutMobile: 'fadeOutRight' }), toast, 'drag'); } - } else { - opacity = (distance+xpos) / distance; - if(opacity < opacityRange){ + } else { + opacity = (distance + xpos) / distance; + if (opacity < opacityRange) { instance.hide(extend(settings, { transitionOut: 'fadeOutLeft', transitionOutMobile: 'fadeOutLeft' }), toast, 'drag'); } - } + } toast.style.opacity = opacity; - - if(opacity < opacityRange){ - if(ISCHROME || ISFIREFOX) - toast.style.left = xpos+'px'; + if (opacity < opacityRange) { + + if (ISCHROME || ISFIREFOX) + toast.style.left = xpos + 'px'; toast.parentNode.style.opacity = opacityRange; - this.stopMoving(toast, null); + this.stopMoving(toast, null); } - } + } - - }, - startMoving: function(toast, instance, settings, e) { - e = e || window.event; - var posX = ((ACCEPTSTOUCH) ? e.touches[0].clientX : e.clientX), - toastLeft = toast.style.transform.replace('px)', ''); - toastLeft = toastLeft.replace('translateX(', ''); - var offsetX = posX - toastLeft; + }, + startMoving: function (toast, instance, settings, e) { + + e = e || window.event; + var posX = ((ACCEPTSTOUCH) ? e.touches[0].clientX : e.clientX), + toastLeft = toast.style.transform.replace('px)', ''); + toastLeft = toastLeft.replace('translateX(', ''); + var offsetX = posX - toastLeft; - if(settings.transitionIn){ + if (settings.transitionIn) { toast.classList.remove(settings.transitionIn); } - if(settings.transitionInMobile){ + if (settings.transitionInMobile) { toast.classList.remove(settings.transitionInMobile); } toast.style.transition = ''; - if(ACCEPTSTOUCH) { - document.ontouchmove = function(e) { - e.preventDefault(); - e = e || window.event; - var posX = e.touches[0].clientX, - finalX = posX - offsetX; - drag.move(toast, instance, settings, finalX); - }; - } else { - document.onmousemove = function(e) { - e.preventDefault(); - e = e || window.event; - var posX = e.clientX, - finalX = posX - offsetX; - drag.move(toast, instance, settings, finalX); - }; - } - - }, - stopMoving: function(toast, e) { - - if(ACCEPTSTOUCH) { - document.ontouchmove = function() {}; - } else { - document.onmousemove = function() {}; - } + if (ACCEPTSTOUCH) { + document.ontouchmove = function (e) { + e.preventDefault(); + e = e || window.event; + var posX = e.touches[0].clientX, + finalX = posX - offsetX; + drag.move(toast, instance, settings, finalX); + }; + } else { + document.onmousemove = function (e) { + e.preventDefault(); + e = e || window.event; + var posX = e.clientX, + finalX = posX - offsetX; + drag.move(toast, instance, settings, finalX); + }; + } + + }, + stopMoving: function (toast, e) { + + if (ACCEPTSTOUCH) { + document.ontouchmove = function () { }; + } else { + document.onmousemove = function () { }; + } toast.style.opacity = ''; toast.style.transform = ''; - if(toast.classList.contains(PLUGIN_NAME+'-dragged')){ - - toast.classList.remove(PLUGIN_NAME+'-dragged'); + if (toast.classList.contains(PLUGIN_NAME + '-dragged')) { + + toast.classList.remove(PLUGIN_NAME + '-dragged'); toast.style.transition = 'transform 0.4s ease, opacity 0.4s ease'; - setTimeout(function() { + setTimeout(function () { toast.style.transition = ''; }, 400); - } + } - } - }; + } + }; }(); @@ -300,25 +300,25 @@ $iziToast.destroy = function () { - forEach(document.querySelectorAll('.'+PLUGIN_NAME+'-overlay'), function(element, index) { + forEach(document.querySelectorAll('.' + PLUGIN_NAME + '-overlay'), function (element, index) { element.remove(); }); - forEach(document.querySelectorAll('.'+PLUGIN_NAME+'-wrapper'), function(element, index) { + forEach(document.querySelectorAll('.' + PLUGIN_NAME + '-wrapper'), function (element, index) { element.remove(); }); - forEach(document.querySelectorAll('.'+PLUGIN_NAME), function(element, index) { + forEach(document.querySelectorAll('.' + PLUGIN_NAME), function (element, index) { element.remove(); }); this.children = {}; // Remove event listeners - document.removeEventListener(PLUGIN_NAME+'-opened', {}, false); - document.removeEventListener(PLUGIN_NAME+'-opening', {}, false); - document.removeEventListener(PLUGIN_NAME+'-closing', {}, false); - document.removeEventListener(PLUGIN_NAME+'-closed', {}, false); + document.removeEventListener(PLUGIN_NAME + '-opened', {}, false); + document.removeEventListener(PLUGIN_NAME + '-opening', {}, false); + document.removeEventListener(PLUGIN_NAME + '-closing', {}, false); + document.removeEventListener(PLUGIN_NAME + '-closed', {}, false); document.removeEventListener('keyup', {}, false); // Reset variables @@ -368,44 +368,44 @@ var that = this, ref = $toast.getAttribute('data-iziToast-ref'), settings = extend(this.children[ref], options || {}), - $elem = $toast.querySelector('.'+PLUGIN_NAME+'-progressbar div'); + $elem = $toast.querySelector('.' + PLUGIN_NAME + '-progressbar div'); - return { - start: function() { + return { + start: function () { - if(typeof settings.time.REMAINING == 'undefined'){ + if (typeof settings.time.REMAINING == 'undefined') { - $toast.classList.remove(PLUGIN_NAME+'-reseted'); + $toast.classList.remove(PLUGIN_NAME + '-reseted'); - if($elem !== null){ - $elem.style.transition = 'width '+ settings.timeout +'ms '+settings.progressBarEasing; + if ($elem !== null) { + $elem.style.transition = 'width ' + settings.timeout + 'ms ' + settings.progressBarEasing; $elem.style.width = '0%'; } - settings.time.START = new Date().getTime(); - settings.time.END = settings.time.START + settings.timeout; - settings.time.TIMER = setTimeout(function() { + settings.time.START = new Date().getTime(); + settings.time.END = settings.time.START + settings.timeout; + settings.time.TIMER = setTimeout(function () { clearTimeout(settings.time.TIMER); - if(!$toast.classList.contains(PLUGIN_NAME+'-closing')){ + if (!$toast.classList.contains(PLUGIN_NAME + '-closing')) { that.hide(settings, $toast, 'timeout'); - if(typeof callback === 'function'){ + if (typeof callback === 'function') { callback.apply(that); } } - }, settings.timeout); - that.setSetting(ref, 'time', settings.time); - } - }, - pause: function() { + }, settings.timeout); + that.setSetting(ref, 'time', settings.time); + } + }, + pause: function () { - if(typeof settings.time.START !== 'undefined' && !$toast.classList.contains(PLUGIN_NAME+'-paused') && !$toast.classList.contains(PLUGIN_NAME+'-reseted')){ + if (typeof settings.time.START !== 'undefined' && !$toast.classList.contains(PLUGIN_NAME + '-paused') && !$toast.classList.contains(PLUGIN_NAME + '-reseted')) { - $toast.classList.add(PLUGIN_NAME+'-paused'); + $toast.classList.add(PLUGIN_NAME + '-paused'); settings.time.REMAINING = settings.time.END - new Date().getTime(); @@ -413,42 +413,42 @@ that.setSetting(ref, 'time', settings.time); - if($elem !== null){ + if ($elem !== null) { var computedStyle = window.getComputedStyle($elem), propertyWidth = computedStyle.getPropertyValue('width'); $elem.style.transition = 'none'; - $elem.style.width = propertyWidth; + $elem.style.width = propertyWidth; } - if(typeof callback === 'function'){ - setTimeout(function() { - callback.apply(that); + if (typeof callback === 'function') { + setTimeout(function () { + callback.apply(that); }, 10); } - } - }, - resume: function() { + } + }, + resume: function () { - if(typeof settings.time.REMAINING !== 'undefined'){ + if (typeof settings.time.REMAINING !== 'undefined') { - $toast.classList.remove(PLUGIN_NAME+'-paused'); + $toast.classList.remove(PLUGIN_NAME + '-paused'); - if($elem !== null){ - $elem.style.transition = 'width '+ settings.time.REMAINING +'ms '+settings.progressBarEasing; + if ($elem !== null) { + $elem.style.transition = 'width ' + settings.time.REMAINING + 'ms ' + settings.progressBarEasing; $elem.style.width = '0%'; } - settings.time.END = new Date().getTime() + settings.time.REMAINING; - settings.time.TIMER = setTimeout(function() { + settings.time.END = new Date().getTime() + settings.time.REMAINING; + settings.time.TIMER = setTimeout(function () { clearTimeout(settings.time.TIMER); - if(!$toast.classList.contains(PLUGIN_NAME+'-closing')){ + if (!$toast.classList.contains(PLUGIN_NAME + '-closing')) { that.hide(settings, $toast, 'timeout'); - if(typeof callback === 'function'){ + if (typeof callback === 'function') { callback.apply(that); } } @@ -460,8 +460,8 @@ } else { this.start(); } - }, - reset: function(){ + }, + reset: function () { clearTimeout(settings.time.TIMER); @@ -469,22 +469,22 @@ that.setSetting(ref, 'time', settings.time); - $toast.classList.add(PLUGIN_NAME+'-reseted'); + $toast.classList.add(PLUGIN_NAME + '-reseted'); - $toast.classList.remove(PLUGIN_NAME+'-paused'); + $toast.classList.remove(PLUGIN_NAME + '-paused'); - if($elem !== null){ + if ($elem !== null) { $elem.style.transition = 'none'; $elem.style.width = '100%'; } - if(typeof callback === 'function'){ - setTimeout(function() { - callback.apply(that); + if (typeof callback === 'function') { + setTimeout(function () { + callback.apply(that); }, 10); } - } - }; + } + }; }; @@ -496,36 +496,36 @@ */ $iziToast.hide = function (options, $toast, closedBy) { - if(typeof $toast != 'object'){ + if (typeof $toast != 'object') { $toast = document.querySelector($toast); - } + } var that = this, settings = extend(this.children[$toast.getAttribute('data-iziToast-ref')], options || {}); - settings.closedBy = closedBy || null; + settings.closedBy = closedBy || null; delete settings.time.REMAINING; - $toast.classList.add(PLUGIN_NAME+'-closing'); + $toast.classList.add(PLUGIN_NAME + '-closing'); // Overlay - (function(){ + (function () { - var $overlay = document.querySelector('.'+PLUGIN_NAME+'-overlay'); - if($overlay !== null){ - var refs = $overlay.getAttribute('data-iziToast-ref'); - refs = refs.split(','); + var $overlay = document.querySelector('.' + PLUGIN_NAME + '-overlay'); + if ($overlay !== null) { + var refs = $overlay.getAttribute('data-iziToast-ref'); + refs = refs.split(','); var index = refs.indexOf(String(settings.ref)); - if(index !== -1){ - refs.splice(index, 1); + if (index !== -1) { + refs.splice(index, 1); } $overlay.setAttribute('data-iziToast-ref', refs.join()); - if(refs.length === 0){ + if (refs.length === 0) { $overlay.classList.remove('fadeIn'); $overlay.classList.add('fadeOut'); - setTimeout(function() { + setTimeout(function () { $overlay.remove(); }, 700); } @@ -533,55 +533,55 @@ })(); - if(settings.transitionIn){ + if (settings.transitionIn) { $toast.classList.remove(settings.transitionIn); - } + } - if(settings.transitionInMobile){ + if (settings.transitionInMobile) { $toast.classList.remove(settings.transitionInMobile); } - if(ISMOBILE || window.innerWidth <= MOBILEWIDTH){ - if(settings.transitionOutMobile) + if (ISMOBILE || window.innerWidth <= MOBILEWIDTH) { + if (settings.transitionOutMobile) $toast.classList.add(settings.transitionOutMobile); } else { - if(settings.transitionOut) + if (settings.transitionOut) $toast.classList.add(settings.transitionOut); } var H = $toast.parentNode.offsetHeight; - $toast.parentNode.style.height = H+'px'; - $toast.style.pointerEvents = 'none'; - - if(!ISMOBILE || window.innerWidth > MOBILEWIDTH){ + $toast.parentNode.style.height = H + 'px'; + $toast.style.pointerEvents = 'none'; + + if (!ISMOBILE || window.innerWidth > MOBILEWIDTH) { $toast.parentNode.style.transitionDelay = '0.2s'; } try { - var event = new CustomEvent(PLUGIN_NAME+'-closing', {detail: settings, bubbles: true, cancelable: true}); + var event = new CustomEvent(PLUGIN_NAME + '-closing', { detail: settings, bubbles: true, cancelable: true }); document.dispatchEvent(event); - } catch(ex){ + } catch (ex) { console.warn(ex); } - setTimeout(function() { - + setTimeout(function () { + $toast.parentNode.style.height = '0px'; $toast.parentNode.style.overflow = ''; - setTimeout(function(){ - + setTimeout(function () { + delete that.children[settings.ref]; $toast.parentNode.remove(); try { - var event = new CustomEvent(PLUGIN_NAME+'-closed', {detail: settings, bubbles: true, cancelable: true}); + var event = new CustomEvent(PLUGIN_NAME + '-closed', { detail: settings, bubbles: true, cancelable: true }); document.dispatchEvent(event); - } catch(ex){ + } catch (ex) { console.warn(ex); } - if(typeof settings.onClosed !== 'undefined'){ + if (typeof settings.onClosed !== 'undefined') { settings.onClosed.apply(null, [settings, $toast, closedBy]); } @@ -589,7 +589,7 @@ }, 200); - if(typeof settings.onClosing !== 'undefined'){ + if (typeof settings.onClosing !== 'undefined') { settings.onClosing.apply(null, [settings, $toast, closedBy]); } }; @@ -605,30 +605,30 @@ // Merge user options with defaults var settings = extend(CONFIG, options || {}); - settings = extend(defaults, settings); - settings.time = {}; + settings = extend(defaults, settings); + settings.time = {}; - if(settings.id === null){ - settings.id = generateId(settings.title+settings.message+settings.color); + if (settings.id === null) { + settings.id = generateId(settings.title + settings.message + settings.color); } - if(settings.displayMode === 1 || settings.displayMode == 'once'){ + if (settings.displayMode === 1 || settings.displayMode == 'once') { try { - if(document.querySelectorAll('.'+PLUGIN_NAME+'#'+settings.id).length > 0){ + if (document.querySelectorAll('.' + PLUGIN_NAME + '#' + settings.id).length > 0) { return false; } } catch (exc) { - console.warn('['+PLUGIN_NAME+'] Could not find an element with this selector: '+'#'+settings.id+'. Try to set an valid id.'); + console.warn('[' + PLUGIN_NAME + '] Could not find an element with this selector: ' + '#' + settings.id + '. Try to set an valid id.'); } } - if(settings.displayMode === 2 || settings.displayMode == 'replace'){ + if (settings.displayMode === 2 || settings.displayMode == 'replace') { try { - forEach(document.querySelectorAll('.'+PLUGIN_NAME+'#'+settings.id), function(element, index) { + forEach(document.querySelectorAll('.' + PLUGIN_NAME + '#' + settings.id), function (element, index) { that.hide(settings, element, 'replaced'); }); } catch (exc) { - console.warn('['+PLUGIN_NAME+'] Could not find an element with this selector: '+'#'+settings.id+'. Try to set an valid id.'); + console.warn('[' + PLUGIN_NAME + '] Could not find an element with this selector: ' + '#' + settings.id + '. Try to set an valid id.'); } } @@ -655,95 +655,95 @@ $DOM.toastCapsule.appendChild($DOM.toast); // CSS Settings - (function(){ + (function () { $DOM.toast.classList.add(PLUGIN_NAME); - $DOM.toast.classList.add(PLUGIN_NAME+'-opening'); - $DOM.toastCapsule.classList.add(PLUGIN_NAME+'-capsule'); + $DOM.toast.classList.add(PLUGIN_NAME + '-opening'); + $DOM.toastCapsule.classList.add(PLUGIN_NAME + '-capsule'); $DOM.toastBody.classList.add(PLUGIN_NAME + '-body'); $DOM.toastTexts.classList.add(PLUGIN_NAME + '-texts'); - if(ISMOBILE || window.innerWidth <= MOBILEWIDTH){ - if(settings.transitionInMobile) + if (ISMOBILE || window.innerWidth <= MOBILEWIDTH) { + if (settings.transitionInMobile) $DOM.toast.classList.add(settings.transitionInMobile); } else { - if(settings.transitionIn) + if (settings.transitionIn) $DOM.toast.classList.add(settings.transitionIn); } - if(settings.class){ + if (settings.class) { var classes = settings.class.split(' '); forEach(classes, function (value, index) { $DOM.toast.classList.add(value); }); } - if(settings.id){ $DOM.toast.id = settings.id; } + if (settings.id) { $DOM.toast.id = settings.id; } - if(settings.rtl){ + if (settings.rtl) { $DOM.toast.classList.add(PLUGIN_NAME + '-rtl'); $DOM.toast.setAttribute('dir', 'rtl'); } - if(settings.layout > 1){ $DOM.toast.classList.add(PLUGIN_NAME+'-layout'+settings.layout); } + if (settings.layout > 1) { $DOM.toast.classList.add(PLUGIN_NAME + '-layout' + settings.layout); } - if(settings.balloon){ $DOM.toast.classList.add(PLUGIN_NAME+'-balloon'); } + if (settings.balloon) { $DOM.toast.classList.add(PLUGIN_NAME + '-balloon'); } - if(settings.maxWidth){ - if( !isNaN(settings.maxWidth) ){ - $DOM.toast.style.maxWidth = settings.maxWidth+'px'; + if (settings.maxWidth) { + if (!isNaN(settings.maxWidth)) { + $DOM.toast.style.maxWidth = settings.maxWidth + 'px'; } else { $DOM.toast.style.maxWidth = settings.maxWidth; } } - if(settings.theme !== '' || settings.theme !== 'light') { + if (settings.theme !== '' || settings.theme !== 'light') { - $DOM.toast.classList.add(PLUGIN_NAME+'-theme-'+settings.theme); + $DOM.toast.classList.add(PLUGIN_NAME + '-theme-' + settings.theme); } - if(settings.color) { //#, rgb, rgba, hsl - - if( isColor(settings.color) ){ + if (settings.color) { //#, rgb, rgba, hsl + + if (isColor(settings.color)) { $DOM.toast.style.background = settings.color; } else { - $DOM.toast.classList.add(PLUGIN_NAME+'-color-'+settings.color); + $DOM.toast.classList.add(PLUGIN_NAME + '-color-' + settings.color); } } - if(settings.backgroundColor) { + if (settings.backgroundColor) { $DOM.toast.style.background = settings.backgroundColor; - if(settings.balloon){ - $DOM.toast.style.borderColor = settings.backgroundColor; + if (settings.balloon) { + $DOM.toast.style.borderColor = settings.backgroundColor; } } })(); // Cover image - (function(){ - if(settings.image) { + (function () { + if (settings.image) { $DOM.cover.classList.add(PLUGIN_NAME + '-cover'); $DOM.cover.style.width = settings.imageWidth + 'px'; - if(isBase64(settings.image.replace(/ /g,''))){ - $DOM.cover.style.backgroundImage = 'url(data:image/png;base64,' + settings.image.replace(/ /g,'') + ')'; + if (isBase64(settings.image.replace(/ /g, ''))) { + $DOM.cover.style.backgroundImage = 'url(data:image/png;base64,' + settings.image.replace(/ /g, '') + ')'; } else { $DOM.cover.style.backgroundImage = 'url(' + settings.image + ')'; } - if(settings.rtl){ + if (settings.rtl) { $DOM.toastBody.style.marginRight = (settings.imageWidth + 10) + 'px'; } else { - $DOM.toastBody.style.marginLeft = (settings.imageWidth + 10) + 'px'; + $DOM.toastBody.style.marginLeft = (settings.imageWidth + 10) + 'px'; } $DOM.toast.appendChild($DOM.cover); } })(); // Button close - (function(){ - if(settings.close){ - + (function () { + if (settings.close) { + $DOM.buttonClose = document.createElement('button'); $DOM.buttonClose.type = 'button'; $DOM.buttonClose.classList.add(PLUGIN_NAME + '-close'); @@ -753,7 +753,7 @@ }); $DOM.toast.appendChild($DOM.buttonClose); } else { - if(settings.rtl){ + if (settings.rtl) { $DOM.toast.style.paddingLeft = '18px'; } else { $DOM.toast.style.paddingRight = '18px'; @@ -762,9 +762,9 @@ })(); // Progress Bar & Timeout - (function(){ + (function () { - if(settings.progressBar){ + if (settings.progressBar) { $DOM.progressBar = document.createElement('div'); $DOM.progressBarDiv = document.createElement('div'); $DOM.progressBar.classList.add(PLUGIN_NAME + '-progressbar'); @@ -773,10 +773,10 @@ $DOM.toast.appendChild($DOM.progressBar); } - if(settings.timeout) { + if (settings.timeout) { + + if (settings.pauseOnHover && !settings.resetOnHover) { - if(settings.pauseOnHover && !settings.resetOnHover){ - $DOM.toast.addEventListener('mouseenter', function (e) { that.progress(settings, $DOM.toast).pause(); }); @@ -785,7 +785,7 @@ }); } - if(settings.resetOnHover){ + if (settings.resetOnHover) { $DOM.toast.addEventListener('mouseenter', function (e) { that.progress(settings, $DOM.toast).reset(); @@ -798,31 +798,31 @@ })(); // Icon - (function(){ + (function () { - if(settings.iconUrl) { + if (settings.iconUrl) { $DOM.icon.setAttribute('class', PLUGIN_NAME + '-icon'); $DOM.icon.setAttribute('src', settings.iconUrl); - } else if(settings.icon) { + } else if (settings.icon) { $DOM.icon.setAttribute('class', PLUGIN_NAME + '-icon ' + settings.icon); - - if(settings.iconText){ + + if (settings.iconText) { $DOM.icon.appendChild(document.createTextNode(settings.iconText)); } - - if(settings.iconColor){ + + if (settings.iconColor) { $DOM.icon.style.color = settings.iconColor; - } + } } - if(settings.icon || settings.iconUrl) { + if (settings.icon || settings.iconUrl) { - if(settings.rtl){ + if (settings.rtl) { $DOM.toastBody.style.paddingRight = '33px'; } else { - $DOM.toastBody.style.paddingLeft = '33px'; + $DOM.toastBody.style.paddingLeft = '33px'; } $DOM.toastBody.appendChild($DOM.icon); @@ -831,65 +831,65 @@ })(); // Title & Message - (function(){ - if(settings.title.length > 0) { + (function () { + if (settings.title.length > 0) { $DOM.strong = document.createElement('strong'); $DOM.strong.classList.add(PLUGIN_NAME + '-title'); $DOM.strong.appendChild(createFragElem(settings.title)); $DOM.toastTexts.appendChild($DOM.strong); - if(settings.titleColor) { + if (settings.titleColor) { $DOM.strong.style.color = settings.titleColor; } - if(settings.titleSize) { - if( !isNaN(settings.titleSize) ){ - $DOM.strong.style.fontSize = settings.titleSize+'px'; + if (settings.titleSize) { + if (!isNaN(settings.titleSize)) { + $DOM.strong.style.fontSize = settings.titleSize + 'px'; } else { $DOM.strong.style.fontSize = settings.titleSize; } } - if(settings.titleLineHeight) { - if( !isNaN(settings.titleSize) ){ - $DOM.strong.style.lineHeight = settings.titleLineHeight+'px'; + if (settings.titleLineHeight) { + if (!isNaN(settings.titleSize)) { + $DOM.strong.style.lineHeight = settings.titleLineHeight + 'px'; } else { $DOM.strong.style.lineHeight = settings.titleLineHeight; } } } - if(settings.message.length > 0) { + if (settings.message.length > 0) { $DOM.p = document.createElement('p'); $DOM.p.classList.add(PLUGIN_NAME + '-message'); $DOM.p.appendChild(createFragElem(settings.message)); $DOM.toastTexts.appendChild($DOM.p); - if(settings.messageColor) { + if (settings.messageColor) { $DOM.p.style.color = settings.messageColor; } - if(settings.messageSize) { - if( !isNaN(settings.titleSize) ){ - $DOM.p.style.fontSize = settings.messageSize+'px'; + if (settings.messageSize) { + if (!isNaN(settings.titleSize)) { + $DOM.p.style.fontSize = settings.messageSize + 'px'; } else { $DOM.p.style.fontSize = settings.messageSize; } } - if(settings.messageLineHeight) { - - if( !isNaN(settings.titleSize) ){ - $DOM.p.style.lineHeight = settings.messageLineHeight+'px'; + if (settings.messageLineHeight) { + + if (!isNaN(settings.titleSize)) { + $DOM.p.style.lineHeight = settings.messageLineHeight + 'px'; } else { $DOM.p.style.lineHeight = settings.messageLineHeight; } } } - if(settings.title.length > 0 && settings.message.length > 0) { - if(settings.rtl){ + if (settings.title.length > 0 && settings.message.length > 0) { + if (settings.rtl) { $DOM.strong.style.marginLeft = '10px'; - } else if(settings.layout !== 2 && !settings.rtl) { - $DOM.strong.style.marginRight = '10px'; + } else if (settings.layout !== 2 && !settings.rtl) { + $DOM.strong.style.marginRight = '10px'; } } })(); @@ -898,8 +898,8 @@ // Inputs var $inputs; - (function(){ - if(settings.inputs.length > 0) { + (function () { + if (settings.inputs.length > 0) { $DOM.inputs.classList.add(PLUGIN_NAME + '-inputs'); @@ -910,8 +910,8 @@ $inputs[index].classList.add(PLUGIN_NAME + '-inputs-child'); - if(value[3]){ - setTimeout(function() { + if (value[3]) { + setTimeout(function () { $inputs[index].focus(); }, 300); } @@ -926,8 +926,8 @@ })(); // Buttons - (function(){ - if(settings.buttons.length > 0) { + (function () { + if (settings.buttons.length > 0) { $DOM.buttons.classList.add(PLUGIN_NAME + '-buttons'); @@ -938,8 +938,8 @@ $btns[index].classList.add(PLUGIN_NAME + '-buttons-child'); - if(value[2]){ - setTimeout(function() { + if (value[2]) { + setTimeout(function () { $btns[index].focus(); }, 300); } @@ -954,18 +954,18 @@ $DOM.toastBody.appendChild($DOM.buttons); })(); - if(settings.message.length > 0 && (settings.inputs.length > 0 || settings.buttons.length > 0)) { + if (settings.message.length > 0 && (settings.inputs.length > 0 || settings.buttons.length > 0)) { $DOM.p.style.marginBottom = '0'; } - if(settings.inputs.length > 0 || settings.buttons.length > 0){ - if(settings.rtl){ + if (settings.inputs.length > 0 || settings.buttons.length > 0) { + if (settings.rtl) { $DOM.toastTexts.style.marginLeft = '10px'; } else { $DOM.toastTexts.style.marginRight = '10px'; } - if(settings.inputs.length > 0 && settings.buttons.length > 0){ - if(settings.rtl){ + if (settings.inputs.length > 0 && settings.buttons.length > 0) { + if (settings.rtl) { $DOM.inputs.style.marginLeft = '8px'; } else { $DOM.inputs.style.marginRight = '8px'; @@ -974,44 +974,44 @@ } // Wrap - (function(){ + (function () { $DOM.toastCapsule.style.visibility = 'hidden'; - setTimeout(function() { + setTimeout(function () { var H = $DOM.toast.offsetHeight; var style = $DOM.toast.currentStyle || window.getComputedStyle($DOM.toast); var marginTop = style.marginTop; - marginTop = marginTop.split('px'); - marginTop = parseInt(marginTop[0]); + marginTop = marginTop.split('px'); + marginTop = parseInt(marginTop[0]); var marginBottom = style.marginBottom; - marginBottom = marginBottom.split('px'); - marginBottom = parseInt(marginBottom[0]); + marginBottom = marginBottom.split('px'); + marginBottom = parseInt(marginBottom[0]); $DOM.toastCapsule.style.visibility = ''; - $DOM.toastCapsule.style.height = (H+marginBottom+marginTop)+'px'; + $DOM.toastCapsule.style.height = (H + marginBottom + marginTop) + 'px'; - setTimeout(function() { + setTimeout(function () { $DOM.toastCapsule.style.height = 'auto'; - if(settings.target){ + if (settings.target) { $DOM.toastCapsule.style.overflow = 'visible'; } }, 500); - if(settings.timeout) { + if (settings.timeout) { that.progress(settings, $DOM.toast).start(); } }, 100); })(); // Target - (function(){ + (function () { var position = settings.position; - if(settings.target){ + if (settings.target) { $DOM.wrapper = document.querySelector(settings.target); $DOM.wrapper.classList.add(PLUGIN_NAME + '-target'); - if(settings.targetFirst) { + if (settings.targetFirst) { $DOM.wrapper.insertBefore($DOM.toastCapsule, $DOM.wrapper.firstChild); } else { $DOM.wrapper.appendChild($DOM.toastCapsule); @@ -1019,73 +1019,73 @@ } else { - if( POSITIONS.indexOf(settings.position) == -1 ){ - console.warn('['+PLUGIN_NAME+'] Incorrect position.\nIt can be › ' + POSITIONS); + if (POSITIONS.indexOf(settings.position) == -1) { + console.warn('[' + PLUGIN_NAME + '] Incorrect position.\nIt can be › ' + POSITIONS); return; } - if(ISMOBILE || window.innerWidth <= MOBILEWIDTH){ - if(settings.position == 'bottomLeft' || settings.position == 'bottomRight' || settings.position == 'bottomCenter'){ - position = PLUGIN_NAME+'-wrapper-bottomCenter'; + if (ISMOBILE || window.innerWidth <= MOBILEWIDTH) { + if (settings.position == 'bottomLeft' || settings.position == 'bottomRight' || settings.position == 'bottomCenter') { + position = PLUGIN_NAME + '-wrapper-bottomCenter'; } - else if(settings.position == 'topLeft' || settings.position == 'topRight' || settings.position == 'topCenter'){ - position = PLUGIN_NAME+'-wrapper-topCenter'; + else if (settings.position == 'topLeft' || settings.position == 'topRight' || settings.position == 'topCenter') { + position = PLUGIN_NAME + '-wrapper-topCenter'; } else { - position = PLUGIN_NAME+'-wrapper-center'; + position = PLUGIN_NAME + '-wrapper-center'; } } else { - position = PLUGIN_NAME+'-wrapper-'+position; + position = PLUGIN_NAME + '-wrapper-' + position; } - $DOM.wrapper = document.querySelector('.' + PLUGIN_NAME + '-wrapper.'+position); + $DOM.wrapper = document.querySelector('.' + PLUGIN_NAME + '-wrapper.' + position); - if(!$DOM.wrapper) { + if (!$DOM.wrapper) { $DOM.wrapper = document.createElement('div'); $DOM.wrapper.classList.add(PLUGIN_NAME + '-wrapper'); $DOM.wrapper.classList.add(position); document.body.appendChild($DOM.wrapper); } - if(settings.position == 'topLeft' || settings.position == 'topCenter' || settings.position == 'topRight'){ + if (settings.position == 'topLeft' || settings.position == 'topCenter' || settings.position == 'topRight') { $DOM.wrapper.insertBefore($DOM.toastCapsule, $DOM.wrapper.firstChild); } else { $DOM.wrapper.appendChild($DOM.toastCapsule); } } - if(!isNaN(settings.zindex)) { + if (!isNaN(settings.zindex)) { $DOM.wrapper.style.zIndex = settings.zindex; } else { - console.warn('['+PLUGIN_NAME+'] Invalid zIndex.'); + console.warn('[' + PLUGIN_NAME + '] Invalid zIndex.'); } })(); // Overlay - (function(){ + (function () { - if(settings.overlay) { + if (settings.overlay) { - if( document.querySelector('.'+PLUGIN_NAME+'-overlay.fadeIn') !== null ){ + if (document.querySelector('.' + PLUGIN_NAME + '-overlay.fadeIn') !== null) { - $DOM.overlay = document.querySelector('.'+PLUGIN_NAME+'-overlay'); + $DOM.overlay = document.querySelector('.' + PLUGIN_NAME + '-overlay'); $DOM.overlay.setAttribute('data-iziToast-ref', $DOM.overlay.getAttribute('data-iziToast-ref') + ',' + settings.ref); - if(!isNaN(settings.zindex) && settings.zindex !== null) { - $DOM.overlay.style.zIndex = settings.zindex-1; + if (!isNaN(settings.zindex) && settings.zindex !== null) { + $DOM.overlay.style.zIndex = settings.zindex - 1; } } else { - $DOM.overlay.classList.add(PLUGIN_NAME+'-overlay'); + $DOM.overlay.classList.add(PLUGIN_NAME + '-overlay'); $DOM.overlay.classList.add('fadeIn'); $DOM.overlay.style.background = settings.overlayColor; $DOM.overlay.setAttribute('data-iziToast-ref', settings.ref); - if(!isNaN(settings.zindex) && settings.zindex !== null) { - $DOM.overlay.style.zIndex = settings.zindex-1; + if (!isNaN(settings.zindex) && settings.zindex !== null) { + $DOM.overlay.style.zIndex = settings.zindex - 1; } document.querySelector('body').appendChild($DOM.overlay); } - if(settings.overlayClose) { + if (settings.overlayClose) { $DOM.overlay.removeEventListener('click', {}); $DOM.overlay.addEventListener('click', function (e) { @@ -1094,45 +1094,45 @@ } else { $DOM.overlay.removeEventListener('click', {}); } - } + } })(); // Inside animations - (function(){ - if(settings.animateInside){ - $DOM.toast.classList.add(PLUGIN_NAME+'-animateInside'); - + (function () { + if (settings.animateInside) { + $DOM.toast.classList.add(PLUGIN_NAME + '-animateInside'); + var animationTimes = [200, 100, 300]; - if(settings.transitionIn == 'bounceInLeft' || settings.transitionIn == 'bounceInRight'){ + if (settings.transitionIn == 'bounceInLeft' || settings.transitionIn == 'bounceInRight') { animationTimes = [400, 200, 400]; } - if(settings.title.length > 0) { - setTimeout(function(){ + if (settings.title.length > 0) { + setTimeout(function () { $DOM.strong.classList.add('slideIn'); }, animationTimes[0]); } - if(settings.message.length > 0) { - setTimeout(function(){ + if (settings.message.length > 0) { + setTimeout(function () { $DOM.p.classList.add('slideIn'); }, animationTimes[1]); } - if(settings.icon || settings.iconUrl) { - setTimeout(function(){ + if (settings.icon || settings.iconUrl) { + setTimeout(function () { $DOM.icon.classList.add('revealIn'); }, animationTimes[2]); } var counter = 150; - if(settings.buttons.length > 0 && $DOM.buttons) { + if (settings.buttons.length > 0 && $DOM.buttons) { - setTimeout(function(){ + setTimeout(function () { - forEach($DOM.buttons.childNodes, function(element, index) { + forEach($DOM.buttons.childNodes, function (element, index) { - setTimeout(function(){ + setTimeout(function () { element.classList.add('revealIn'); }, counter); counter = counter + 150; @@ -1141,11 +1141,11 @@ }, settings.inputs.length > 0 ? 150 : 0); } - if(settings.inputs.length > 0 && $DOM.inputs) { + if (settings.inputs.length > 0 && $DOM.inputs) { counter = 150; - forEach($DOM.inputs.childNodes, function(element, index) { + forEach($DOM.inputs.childNodes, function (element, index) { - setTimeout(function(){ + setTimeout(function () { element.classList.add('revealIn'); }, counter); counter = counter + 150; @@ -1157,69 +1157,69 @@ settings.onOpening.apply(null, [settings, $DOM.toast]); try { - var event = new CustomEvent(PLUGIN_NAME + '-opening', {detail: settings, bubbles: true, cancelable: true}); + var event = new CustomEvent(PLUGIN_NAME + '-opening', { detail: settings, bubbles: true, cancelable: true }); document.dispatchEvent(event); - } catch(ex){ + } catch (ex) { console.warn(ex); } - setTimeout(function() { + setTimeout(function () { - $DOM.toast.classList.remove(PLUGIN_NAME+'-opening'); - $DOM.toast.classList.add(PLUGIN_NAME+'-opened'); + $DOM.toast.classList.remove(PLUGIN_NAME + '-opening'); + $DOM.toast.classList.add(PLUGIN_NAME + '-opened'); try { - var event = new CustomEvent(PLUGIN_NAME + '-opened', {detail: settings, bubbles: true, cancelable: true}); + var event = new CustomEvent(PLUGIN_NAME + '-opened', { detail: settings, bubbles: true, cancelable: true }); document.dispatchEvent(event); - } catch(ex){ + } catch (ex) { console.warn(ex); } settings.onOpened.apply(null, [settings, $DOM.toast]); }, 1000); - if(settings.drag){ + if (settings.drag) { - if(ACCEPTSTOUCH) { + if (ACCEPTSTOUCH) { - $DOM.toast.addEventListener('touchstart', function(e) { - drag.startMoving(this, that, settings, e); - }, false); + $DOM.toast.addEventListener('touchstart', function (e) { + drag.startMoving(this, that, settings, e); + }, false); - $DOM.toast.addEventListener('touchend', function(e) { - drag.stopMoving(this, e); - }, false); + $DOM.toast.addEventListener('touchend', function (e) { + drag.stopMoving(this, e); + }, false); } else { - $DOM.toast.addEventListener('mousedown', function(e) { - e.preventDefault(); - drag.startMoving(this, that, settings, e); - }, false); + $DOM.toast.addEventListener('mousedown', function (e) { + e.preventDefault(); + drag.startMoving(this, that, settings, e); + }, false); - $DOM.toast.addEventListener('mouseup', function(e) { - e.preventDefault(); - drag.stopMoving(this, e); - }, false); + $DOM.toast.addEventListener('mouseup', function (e) { + e.preventDefault(); + drag.stopMoving(this, e); + }, false); } } - if(settings.closeOnEscape) { + if (settings.closeOnEscape) { document.addEventListener('keyup', function (evt) { evt = evt || window.event; - if(evt.keyCode == 27) { - that.hide(settings, $DOM.toast, 'esc'); + if (evt.keyCode == 27) { + that.hide(settings, $DOM.toast, 'esc'); } }); } - if(settings.closeOnClick) { + if (settings.closeOnClick) { $DOM.toast.addEventListener('click', function (evt) { that.hide(settings, $DOM.toast, 'toast'); }); } - that.toast = $DOM.toast; + that.toast = $DOM.toast; }; return $iziToast; }); \ No newline at end of file diff --git a/component/pear/pear.js b/component/pear/pear.js index 2b5ba63..e20998a 100644 --- a/component/pear/pear.js +++ b/component/pear/pear.js @@ -9,13 +9,18 @@ layui.config({ base: rootPath + "module/", version: "3.40.0" }).extend({ - admin: "admin", // 框架布局组件 + admin: "core/admin", + page: "core/page", + tabPage: "core/tabPage", + menu: "core/menu", + + echarts: "extends/echarts", + echartsTheme: "extends/echartsTheme", + yaml:"extends/yaml", + nprogress: "extends/nprogress", + toast: "extends/toast", + common: "common", // 公共方法封装 - menu: "menu", // 数据菜单组件 - frame: "frame", // 内容页面组件 - tab: "tab", // 多选项卡组件 - echarts: "echarts", // 数据图表组件 - echartsTheme: "echartsTheme",// 数据图表主题 encrypt: "encrypt", // 数据加密组件 select: "select", // 下拉多选组件 notice: "notice", // 消息提示组件 @@ -28,19 +33,15 @@ layui.config({ count:"count", // 数字滚动 topBar: "topBar", // 置顶组件 button: "button", // 加载按钮 - design: "design", // 表单设计 card: "card", // 数据卡片组件 loading: "loading", // 加载组件 cropper:"cropper", // 裁剪组件 convert:"convert", // 数据转换 - yaml:"yaml", // yaml 解析组件 context: "context", // 上下文组件 http: "http", // 网络请求组件 theme: "theme", // 主题转换 message: "message", // 通知组件 - toast: "toast", // 消息通知 iconPicker: "iconPicker", // 图标选择 - nprogress: "nprogress", // 进度过渡 watermark:"watermark/watermark", //水印组件 fullscreen:"fullscreen", //全屏组件 popover:"popover/popover", //汽泡组件 diff --git a/index.html b/index.html index c0f89f9..b425d4e 100644 --- a/index.html +++ b/index.html @@ -95,8 +95,7 @@ admin.setConfigurationPath("config/pear.config.yml"); admin.render(); - - // 登出逻辑 + admin.logout(function(){ popup.success("注销成功",function(){ diff --git a/login.html b/login.html index 0631748..dd946aa 100644 --- a/login.html +++ b/login.html @@ -1,71 +1,77 @@ - - - - 登录 - - - - - - -
                                      -
                                      - -
                                      Pear Admin
                                      -
                                      - 致 力 于 让 " Web " 开 发 变 得 简 单 优 雅 + + + + + 登录 + + + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      -
                                      - -
                                      -
                                      - -
                                      -
                                      - - -
                                      -
                                      - -
                                      -
                                      - +
                                      +
                                      +
                                      +
                                      + +
                                      +
                                      - - - - - - +
                                      +
                                      + + +
                                      +
                                      + +
                                      +
                                      + +
                                      + + + + + + + \ No newline at end of file diff --git a/view/components/toast.html b/view/components/toast.html new file mode 100644 index 0000000..ad94396 --- /dev/null +++ b/view/components/toast.html @@ -0,0 +1,146 @@ + + + + + + + 通知组件 + + +
                                      +
                                      +
                                      +
                                      +
                                      简单使用
                                      +
                                      + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + 不同位置 +
                                      +
                                      + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + 消息移除 +
                                      +
                                      + +
                                      +
                                      +
                                      +
                                      +
                                      + + + + \ No newline at end of file diff --git a/view/exception/403.html b/view/exception/403.html new file mode 100644 index 0000000..e69de29 diff --git a/view/exception/404.html b/view/exception/404.html new file mode 100644 index 0000000..e69de29 diff --git a/view/exception/500.html b/view/exception/500.html new file mode 100644 index 0000000..e69de29 -- Gitee From 8b1da31d66feddfa4e6d6a4f5750287bc37f0d49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Fri, 23 Jun 2023 14:57:57 +0800 Subject: [PATCH 005/141] update --- admin/css/admin.css | 127 +- admin/css/admin.dark.css | 83 + admin/css/loader.css | 105 - component/pear/css/module/code.css | 9 - component/pear/css/module/cropper.css | 272 - component/pear/css/module/form.css | 74 - component/pear/css/module/iconPicker.css | 11 - component/pear/css/module/layout.css | 2 +- component/pear/css/module/notice.css | 228 - component/pear/css/module/popover.min.css | 1 - component/pear/css/module/select.css | 822 - component/pear/css/module/step.css | 88 - component/pear/css/module/tab.css | 7 +- component/pear/module/area.js | 4070 -- component/pear/module/core/admin.js | 140 +- .../{message.js => core/messageCenter.js} | 2 +- component/pear/module/core/page.js | 2 +- component/pear/module/core/tabPage.js | 73 +- component/pear/module/cropper.js | 3087 -- component/pear/module/darkreader.js | 7579 ---- component/pear/module/encrypt.js | 1775 - component/pear/module/http.js | 181 - component/pear/module/iconPicker.js | 525 - component/pear/module/notice.js | 489 - component/pear/module/popover/popover.js | 1218 - component/pear/module/select.js | 1740 - component/pear/module/theme.js | 1 - component/pear/module/tinymce/tinymce.js | 213 - .../tinymce/tinymce/icons/default/icons.js | 172 - .../tinymce/icons/default/icons.min.js | 1 - .../module/tinymce/tinymce/langs/readme.md | 3 - .../module/tinymce/tinymce/langs/zh_CN.js | 419 - .../tinymce/tinymce/plugins/advlist/plugin.js | 278 - .../tinymce/plugins/advlist/plugin.min.js | 9 - .../tinymce/tinymce/plugins/anchor/plugin.js | 216 - .../tinymce/plugins/anchor/plugin.min.js | 9 - .../tinymce/plugins/autolink/plugin.js | 185 - .../tinymce/plugins/autolink/plugin.min.js | 9 - .../tinymce/plugins/autoresize/plugin.js | 171 - .../tinymce/plugins/autoresize/plugin.min.js | 9 - .../tinymce/plugins/autosave/plugin.js | 212 - .../tinymce/plugins/autosave/plugin.min.js | 9 - .../tinymce/tinymce/plugins/bbcode/plugin.js | 99 - .../tinymce/plugins/bbcode/plugin.min.js | 9 - .../tinymce/tinymce/plugins/charmap/plugin.js | 1706 - .../tinymce/plugins/charmap/plugin.min.js | 9 - .../tinymce/tinymce/plugins/code/plugin.js | 92 - .../tinymce/plugins/code/plugin.min.js | 9 - .../tinymce/plugins/codesample/plugin.js | 2104 - .../tinymce/plugins/codesample/plugin.min.js | 9 - .../tinymce/plugins/colorpicker/plugin.js | 22 - .../tinymce/plugins/colorpicker/plugin.min.js | 9 - .../tinymce/plugins/contextmenu/plugin.js | 22 - .../tinymce/plugins/contextmenu/plugin.min.js | 9 - .../tinymce/plugins/directionality/plugin.js | 314 - .../plugins/directionality/plugin.min.js | 9 - .../plugins/emoticons/js/emojiimages.js | 9424 ----- .../plugins/emoticons/js/emojiimages.min.js | 3 - .../tinymce/plugins/emoticons/js/emojis.js | 9423 ----- .../plugins/emoticons/js/emojis.min.js | 2 - .../tinymce/plugins/emoticons/plugin.js | 605 - .../tinymce/plugins/emoticons/plugin.min.js | 9 - .../tinymce/plugins/fullpage/plugin.js | 544 - .../tinymce/plugins/fullpage/plugin.min.js | 9 - .../tinymce/plugins/fullscreen/plugin.js | 979 - .../tinymce/plugins/fullscreen/plugin.min.js | 9 - .../tinymce/tinymce/plugins/help/plugin.js | 846 - .../tinymce/plugins/help/plugin.min.js | 9 - .../tinymce/tinymce/plugins/hr/plugin.js | 46 - .../tinymce/tinymce/plugins/hr/plugin.min.js | 9 - .../tinymce/tinymce/plugins/image/plugin.js | 1664 - .../tinymce/plugins/image/plugin.min.js | 9 - .../tinymce/plugins/imagetools/plugin.js | 1348 - .../tinymce/plugins/imagetools/plugin.min.js | 9 - .../tinymce/plugins/importcss/plugin.js | 343 - .../tinymce/plugins/importcss/plugin.min.js | 9 - .../tinymce/plugins/indent2em/plugin.js | 62 - .../tinymce/plugins/indent2em/plugin.min.js | 62 - .../tinymce/plugins/insertdatetime/plugin.js | 177 - .../plugins/insertdatetime/plugin.min.js | 9 - .../plugins/kityformula-editor/icon.svg | 3 - .../kityformula-editor/kityFormula.html | 111 - .../assets/images/scrollbar/custom/bar-bg.png | Bin 925 -> 0 bytes .../assets/images/scrollbar/custom/bar.png | Bin 1067 -> 0 bytes .../assets/images/scrollbar/custom/bg.png | Bin 945 -> 0 bytes .../assets/images/scrollbar/custom/bottom.png | Bin 1003 -> 0 bytes .../assets/images/scrollbar/custom/btn.png | Bin 926 -> 0 bytes .../assets/images/scrollbar/custom/down.png | Bin 926 -> 0 bytes .../assets/images/scrollbar/custom/top.png | Bin 996 -> 0 bytes .../assets/images/scrollbar/custom/up.png | Bin 926 -> 0 bytes .../assets/images/scrollbar/edit/bar-bg.png | Bin 938 -> 0 bytes .../assets/images/scrollbar/edit/bar-left.png | Bin 982 -> 0 bytes .../images/scrollbar/edit/bar-right.png | Bin 994 -> 0 bytes .../assets/images/scrollbar/edit/thumb-bg.png | Bin 941 -> 0 bytes .../images/scrollbar/edit/thumb-left.png | Bin 983 -> 0 bytes .../images/scrollbar/edit/thumb-right.png | Bin 988 -> 0 bytes .../images/toolbar/alphabetic/aleph.png | Bin 559 -> 0 bytes .../assets/images/toolbar/alphabetic/bbbk.png | Bin 519 -> 0 bytes .../assets/images/toolbar/alphabetic/beth.png | Bin 317 -> 0 bytes .../images/toolbar/alphabetic/circleds.png | Bin 874 -> 0 bytes .../images/toolbar/alphabetic/complement.png | Bin 371 -> 0 bytes .../images/toolbar/alphabetic/daleth.png | Bin 305 -> 0 bytes .../assets/images/toolbar/alphabetic/ell.png | Bin 467 -> 0 bytes .../assets/images/toolbar/alphabetic/eth.png | Bin 552 -> 0 bytes .../assets/images/toolbar/alphabetic/finv.png | Bin 239 -> 0 bytes .../assets/images/toolbar/alphabetic/game.png | Bin 492 -> 0 bytes .../images/toolbar/alphabetic/gimel.png | Bin 364 -> 0 bytes .../assets/images/toolbar/alphabetic/hbar.png | Bin 516 -> 0 bytes .../images/toolbar/alphabetic/hslash.png | Bin 542 -> 0 bytes .../assets/images/toolbar/alphabetic/im.png | Bin 571 -> 0 bytes .../assets/images/toolbar/alphabetic/mho.png | Bin 573 -> 0 bytes .../images/toolbar/alphabetic/partial.png | Bin 546 -> 0 bytes .../assets/images/toolbar/alphabetic/re.png | Bin 702 -> 0 bytes .../assets/images/toolbar/alphabetic/wp.png | Bin 524 -> 0 bytes .../images/toolbar/arrow/circlearrowleft.png | Bin 337 -> 0 bytes .../images/toolbar/arrow/circlearrowright.png | Bin 351 -> 0 bytes .../images/toolbar/arrow/curvearrowleft.png | Bin 347 -> 0 bytes .../images/toolbar/arrow/curvearrowright.png | Bin 338 -> 0 bytes .../assets/images/toolbar/arrow/downarrow.png | Bin 255 -> 0 bytes .../images/toolbar/arrow/downdownarrows.png | Bin 268 -> 0 bytes .../images/toolbar/arrow/downharpoonleft.png | Bin 190 -> 0 bytes .../images/toolbar/arrow/downharpoonright.png | Bin 191 -> 0 bytes .../assets/images/toolbar/arrow/gets.png | Bin 252 -> 0 bytes .../images/toolbar/arrow/leftarrowtail.png | Bin 259 -> 0 bytes .../images/toolbar/arrow/leftharpoondown.png | Bin 186 -> 0 bytes .../images/toolbar/arrow/leftharpoonup.png | Bin 187 -> 0 bytes .../images/toolbar/arrow/leftleftarrows.png | Bin 269 -> 0 bytes .../images/toolbar/arrow/leftrightarrow.png | Bin 309 -> 0 bytes .../images/toolbar/arrow/leftrightarrows.png | Bin 294 -> 0 bytes .../toolbar/arrow/leftrightharpoons.png | Bin 268 -> 0 bytes .../toolbar/arrow/leftrightsquigarrow.png | Bin 346 -> 0 bytes .../images/toolbar/arrow/longleftarrow.png | Bin 269 -> 0 bytes .../toolbar/arrow/longleftrightarrow.png | Bin 297 -> 0 bytes .../images/toolbar/arrow/longrightarrow.png | Bin 285 -> 0 bytes .../images/toolbar/arrow/looparrowleft.png | Bin 332 -> 0 bytes .../images/toolbar/arrow/looparrowright.png | Bin 339 -> 0 bytes .../assets/images/toolbar/arrow/multimap.png | Bin 254 -> 0 bytes .../assets/images/toolbar/arrow/nearrow.png | Bin 319 -> 0 bytes .../images/toolbar/arrow/nleftarrow.png | Bin 276 -> 0 bytes .../images/toolbar/arrow/nrightarrow.png | Bin 286 -> 0 bytes .../assets/images/toolbar/arrow/nwarrow.png | Bin 324 -> 0 bytes .../images/toolbar/arrow/rightarrowtail.png | Bin 250 -> 0 bytes .../images/toolbar/arrow/rightharpoondown.png | Bin 194 -> 0 bytes .../images/toolbar/arrow/rightharpoonup.png | Bin 185 -> 0 bytes .../images/toolbar/arrow/rightleftarrows.png | Bin 278 -> 0 bytes .../toolbar/arrow/rightleftharpoons.png | Bin 277 -> 0 bytes .../images/toolbar/arrow/rightrightarrows.png | Bin 266 -> 0 bytes .../images/toolbar/arrow/rightsquigarrow.png | Bin 304 -> 0 bytes .../assets/images/toolbar/arrow/searrow.png | Bin 317 -> 0 bytes .../assets/images/toolbar/arrow/swarrow.png | Bin 292 -> 0 bytes .../assets/images/toolbar/arrow/to.png | Bin 279 -> 0 bytes .../images/toolbar/arrow/twoheadleftarrow.png | Bin 266 -> 0 bytes .../toolbar/arrow/twoheadrightarrow.png | Bin 262 -> 0 bytes .../images/toolbar/arrow/u-downarrow.png | Bin 285 -> 0 bytes .../images/toolbar/arrow/u-leftarrow.png | Bin 275 -> 0 bytes .../images/toolbar/arrow/u-leftrightarrow.png | Bin 341 -> 0 bytes .../images/toolbar/arrow/u-lftarrow.png | Bin 277 -> 0 bytes .../images/toolbar/arrow/u-lleftarrow.png | Bin 305 -> 0 bytes .../images/toolbar/arrow/u-longleftarrow.png | Bin 281 -> 0 bytes .../toolbar/arrow/u-longleftrightarrow.png | Bin 330 -> 0 bytes .../images/toolbar/arrow/u-longrightarrow.png | Bin 288 -> 0 bytes .../assets/images/toolbar/arrow/u-lsh.png | Bin 252 -> 0 bytes .../images/toolbar/arrow/u-nleftarrow.png | Bin 350 -> 0 bytes .../toolbar/arrow/u-nleftrightarrow.png | Bin 400 -> 0 bytes .../images/toolbar/arrow/u-nrightarrow.png | Bin 349 -> 0 bytes .../images/toolbar/arrow/u-rightarrow.png | Bin 292 -> 0 bytes .../images/toolbar/arrow/u-rrightarrow.png | Bin 314 -> 0 bytes .../assets/images/toolbar/arrow/u-rsh.png | Bin 255 -> 0 bytes .../assets/images/toolbar/arrow/u-uparrow.png | Bin 282 -> 0 bytes .../images/toolbar/arrow/u-updownarrow.png | Bin 338 -> 0 bytes .../assets/images/toolbar/arrow/uparrow.png | Bin 251 -> 0 bytes .../images/toolbar/arrow/updownarrow.png | Bin 302 -> 0 bytes .../images/toolbar/arrow/upharpoonleft.png | Bin 188 -> 0 bytes .../images/toolbar/arrow/upharpoonright.png | Bin 200 -> 0 bytes .../images/toolbar/arrow/upuparrows.png | Bin 281 -> 0 bytes .../assets/images/toolbar/brackets/1.png | Bin 748 -> 0 bytes .../assets/images/toolbar/brackets/2.png | Bin 634 -> 0 bytes .../assets/images/toolbar/brackets/3.png | Bin 813 -> 0 bytes .../assets/images/toolbar/brackets/4.png | Bin 635 -> 0 bytes .../kityformula/assets/images/toolbar/btn.png | Bin 6784 -> 0 bytes .../assets/images/toolbar/button/brackets.png | Bin 1284 -> 0 bytes .../assets/images/toolbar/button/down.png | Bin 979 -> 0 bytes .../assets/images/toolbar/button/frac.png | Bin 801 -> 0 bytes .../assets/images/toolbar/button/fx.png | Bin 1738 -> 0 bytes .../assets/images/toolbar/button/int.png | Bin 4273 -> 0 bytes .../assets/images/toolbar/button/lim.png | Bin 4273 -> 0 bytes .../assets/images/toolbar/button/open.png | Bin 983 -> 0 bytes .../assets/images/toolbar/button/script.png | Bin 1311 -> 0 bytes .../assets/images/toolbar/button/sin.png | Bin 1084 -> 0 bytes .../assets/images/toolbar/button/sqrt.png | Bin 1381 -> 0 bytes .../assets/images/toolbar/button/sum.png | Bin 4273 -> 0 bytes .../assets/images/toolbar/button/tick.png | Bin 2960 -> 0 bytes .../assets/images/toolbar/button/up.png | Bin 969 -> 0 bytes .../assets/images/toolbar/char.png | Bin 89633 -> 0 bytes .../assets/images/toolbar/char/bb/a.png | Bin 609 -> 0 bytes .../assets/images/toolbar/char/bb/b.png | Bin 617 -> 0 bytes .../assets/images/toolbar/char/bb/c.png | Bin 582 -> 0 bytes .../assets/images/toolbar/char/bb/d.png | Bin 525 -> 0 bytes .../assets/images/toolbar/char/bb/e.png | Bin 543 -> 0 bytes .../assets/images/toolbar/char/bb/f.png | Bin 500 -> 0 bytes .../assets/images/toolbar/char/bb/g.png | Bin 706 -> 0 bytes .../assets/images/toolbar/char/bb/h.png | Bin 537 -> 0 bytes .../assets/images/toolbar/char/bb/i.png | Bin 319 -> 0 bytes .../assets/images/toolbar/char/bb/j.png | Bin 388 -> 0 bytes .../assets/images/toolbar/char/bb/k.png | Bin 719 -> 0 bytes .../assets/images/toolbar/char/bb/l.png | Bin 376 -> 0 bytes .../assets/images/toolbar/char/bb/m.png | Bin 778 -> 0 bytes .../assets/images/toolbar/char/bb/n.png | Bin 644 -> 0 bytes .../assets/images/toolbar/char/bb/o.png | Bin 680 -> 0 bytes .../assets/images/toolbar/char/bb/p.png | Bin 483 -> 0 bytes .../assets/images/toolbar/char/bb/q.png | Bin 825 -> 0 bytes .../assets/images/toolbar/char/bb/r.png | Bin 579 -> 0 bytes .../assets/images/toolbar/char/bb/s.png | Bin 665 -> 0 bytes .../assets/images/toolbar/char/bb/t.png | Bin 448 -> 0 bytes .../assets/images/toolbar/char/bb/u.png | Bin 468 -> 0 bytes .../assets/images/toolbar/char/bb/v.png | Bin 580 -> 0 bytes .../assets/images/toolbar/char/bb/w.png | Bin 861 -> 0 bytes .../assets/images/toolbar/char/bb/x.png | Bin 709 -> 0 bytes .../assets/images/toolbar/char/bb/y.png | Bin 556 -> 0 bytes .../assets/images/toolbar/char/bb/z.png | Bin 565 -> 0 bytes .../assets/images/toolbar/char/cal/a.png | Bin 499 -> 0 bytes .../assets/images/toolbar/char/cal/b.png | Bin 599 -> 0 bytes .../assets/images/toolbar/char/cal/c.png | Bin 482 -> 0 bytes .../assets/images/toolbar/char/cal/d.png | Bin 581 -> 0 bytes .../assets/images/toolbar/char/cal/e.png | Bin 471 -> 0 bytes .../assets/images/toolbar/char/cal/f.png | Bin 483 -> 0 bytes .../assets/images/toolbar/char/cal/g.png | Bin 579 -> 0 bytes .../assets/images/toolbar/char/cal/h.png | Bin 599 -> 0 bytes .../assets/images/toolbar/char/cal/i.png | Bin 467 -> 0 bytes .../assets/images/toolbar/char/cal/j.png | Bin 531 -> 0 bytes .../assets/images/toolbar/char/cal/k.png | Bin 600 -> 0 bytes .../assets/images/toolbar/char/cal/l.png | Bin 493 -> 0 bytes .../assets/images/toolbar/char/cal/m.png | Bin 722 -> 0 bytes .../assets/images/toolbar/char/cal/n.png | Bin 623 -> 0 bytes .../assets/images/toolbar/char/cal/o.png | Bin 597 -> 0 bytes .../assets/images/toolbar/char/cal/p.png | Bin 581 -> 0 bytes .../assets/images/toolbar/char/cal/q.png | Bin 663 -> 0 bytes .../assets/images/toolbar/char/cal/r.png | Bin 641 -> 0 bytes .../assets/images/toolbar/char/cal/s.png | Bin 527 -> 0 bytes .../assets/images/toolbar/char/cal/t.png | Bin 431 -> 0 bytes .../assets/images/toolbar/char/cal/u.png | Bin 603 -> 0 bytes .../assets/images/toolbar/char/cal/v.png | Bin 518 -> 0 bytes .../assets/images/toolbar/char/cal/w.png | Bin 759 -> 0 bytes .../assets/images/toolbar/char/cal/x.png | Bin 546 -> 0 bytes .../assets/images/toolbar/char/cal/y.png | Bin 559 -> 0 bytes .../assets/images/toolbar/char/cal/z.png | Bin 559 -> 0 bytes .../assets/images/toolbar/char/frak/a.png | Bin 393 -> 0 bytes .../assets/images/toolbar/char/frak/b.png | Bin 438 -> 0 bytes .../assets/images/toolbar/char/frak/c.png | Bin 330 -> 0 bytes .../assets/images/toolbar/char/frak/d.png | Bin 445 -> 0 bytes .../assets/images/toolbar/char/frak/e.png | Bin 356 -> 0 bytes .../assets/images/toolbar/char/frak/f.png | Bin 392 -> 0 bytes .../assets/images/toolbar/char/frak/g.png | Bin 480 -> 0 bytes .../assets/images/toolbar/char/frak/h.png | Bin 476 -> 0 bytes .../assets/images/toolbar/char/frak/i.png | Bin 296 -> 0 bytes .../assets/images/toolbar/char/frak/j.png | Bin 320 -> 0 bytes .../assets/images/toolbar/char/frak/k.png | Bin 448 -> 0 bytes .../assets/images/toolbar/char/frak/l.png | Bin 312 -> 0 bytes .../assets/images/toolbar/char/frak/m.png | Bin 450 -> 0 bytes .../assets/images/toolbar/char/frak/n.png | Bin 382 -> 0 bytes .../assets/images/toolbar/char/frak/o.png | Bin 382 -> 0 bytes .../assets/images/toolbar/char/frak/p.png | Bin 462 -> 0 bytes .../assets/images/toolbar/char/frak/q.png | Bin 439 -> 0 bytes .../assets/images/toolbar/char/frak/r.png | Bin 328 -> 0 bytes .../assets/images/toolbar/char/frak/s.png | Bin 405 -> 0 bytes .../assets/images/toolbar/char/frak/t.png | Bin 296 -> 0 bytes .../assets/images/toolbar/char/frak/u.png | Bin 389 -> 0 bytes .../assets/images/toolbar/char/frak/ua.png | Bin 653 -> 0 bytes .../assets/images/toolbar/char/frak/ub.png | Bin 707 -> 0 bytes .../assets/images/toolbar/char/frak/uc.png | Bin 517 -> 0 bytes .../assets/images/toolbar/char/frak/ud.png | Bin 658 -> 0 bytes .../assets/images/toolbar/char/frak/ue.png | Bin 566 -> 0 bytes .../assets/images/toolbar/char/frak/uf.png | Bin 616 -> 0 bytes .../assets/images/toolbar/char/frak/ug.png | Bin 662 -> 0 bytes .../assets/images/toolbar/char/frak/uh.png | Bin 574 -> 0 bytes .../assets/images/toolbar/char/frak/ui.png | Bin 483 -> 0 bytes .../assets/images/toolbar/char/frak/uj.png | Bin 533 -> 0 bytes .../assets/images/toolbar/char/frak/uk.png | Bin 577 -> 0 bytes .../assets/images/toolbar/char/frak/ul.png | Bin 537 -> 0 bytes .../assets/images/toolbar/char/frak/um.png | Bin 827 -> 0 bytes .../assets/images/toolbar/char/frak/un.png | Bin 686 -> 0 bytes .../assets/images/toolbar/char/frak/uo.png | Bin 606 -> 0 bytes .../assets/images/toolbar/char/frak/up.png | Bin 685 -> 0 bytes .../assets/images/toolbar/char/frak/uq.png | Bin 606 -> 0 bytes .../assets/images/toolbar/char/frak/ur.png | Bin 690 -> 0 bytes .../assets/images/toolbar/char/frak/us.png | Bin 674 -> 0 bytes .../assets/images/toolbar/char/frak/ut.png | Bin 562 -> 0 bytes .../assets/images/toolbar/char/frak/uu.png | Bin 532 -> 0 bytes .../assets/images/toolbar/char/frak/uv.png | Bin 696 -> 0 bytes .../assets/images/toolbar/char/frak/uw.png | Bin 847 -> 0 bytes .../assets/images/toolbar/char/frak/ux.png | Bin 575 -> 0 bytes .../assets/images/toolbar/char/frak/uy.png | Bin 726 -> 0 bytes .../assets/images/toolbar/char/frak/uz.png | Bin 527 -> 0 bytes .../assets/images/toolbar/char/frak/v.png | Bin 423 -> 0 bytes .../assets/images/toolbar/char/frak/w.png | Bin 496 -> 0 bytes .../assets/images/toolbar/char/frak/x.png | Bin 405 -> 0 bytes .../assets/images/toolbar/char/frak/y.png | Bin 450 -> 0 bytes .../assets/images/toolbar/char/frak/z.png | Bin 435 -> 0 bytes .../images/toolbar/char/greek/lower/alpha.png | Bin 339 -> 0 bytes .../images/toolbar/char/greek/lower/beta.png | Bin 382 -> 0 bytes .../images/toolbar/char/greek/lower/chi.png | Bin 344 -> 0 bytes .../images/toolbar/char/greek/lower/delta.png | Bin 329 -> 0 bytes .../toolbar/char/greek/lower/epsilon.png | Bin 265 -> 0 bytes .../images/toolbar/char/greek/lower/eta.png | Bin 311 -> 0 bytes .../images/toolbar/char/greek/lower/gamma.png | Bin 303 -> 0 bytes .../images/toolbar/char/greek/lower/iota.png | Bin 250 -> 0 bytes .../images/toolbar/char/greek/lower/kappa.png | Bin 304 -> 0 bytes .../toolbar/char/greek/lower/lambda.png | Bin 309 -> 0 bytes .../images/toolbar/char/greek/lower/mu.png | Bin 309 -> 0 bytes .../images/toolbar/char/greek/lower/nu.png | Bin 287 -> 0 bytes .../images/toolbar/char/greek/lower/omega.png | Bin 307 -> 0 bytes .../toolbar/char/greek/lower/omicron.png | Bin 298 -> 0 bytes .../images/toolbar/char/greek/lower/phi.png | Bin 369 -> 0 bytes .../images/toolbar/char/greek/lower/pi.png | Bin 276 -> 0 bytes .../images/toolbar/char/greek/lower/psi.png | Bin 362 -> 0 bytes .../images/toolbar/char/greek/lower/rho.png | Bin 328 -> 0 bytes .../images/toolbar/char/greek/lower/sigma.png | Bin 288 -> 0 bytes .../images/toolbar/char/greek/lower/tau.png | Bin 255 -> 0 bytes .../images/toolbar/char/greek/lower/theta.png | Bin 370 -> 0 bytes .../toolbar/char/greek/lower/upsilon.png | Bin 312 -> 0 bytes .../images/toolbar/char/greek/lower/xi.png | Bin 358 -> 0 bytes .../images/toolbar/char/greek/lower/zeta.png | Bin 322 -> 0 bytes .../toolbar/char/greek/misc/digamma.png | Bin 336 -> 0 bytes .../toolbar/char/greek/misc/varepsilon.png | Bin 375 -> 0 bytes .../toolbar/char/greek/misc/varkappa.png | Bin 446 -> 0 bytes .../images/toolbar/char/greek/misc/varphi.png | Bin 520 -> 0 bytes .../images/toolbar/char/greek/misc/varpi.png | Bin 476 -> 0 bytes .../images/toolbar/char/greek/misc/varrho.png | Bin 503 -> 0 bytes .../toolbar/char/greek/misc/varsigma.png | Bin 360 -> 0 bytes .../toolbar/char/greek/misc/vartheta.png | Bin 532 -> 0 bytes .../images/toolbar/char/greek/upper/alpha.png | Bin 349 -> 0 bytes .../images/toolbar/char/greek/upper/beta.png | Bin 326 -> 0 bytes .../images/toolbar/char/greek/upper/chi.png | Bin 364 -> 0 bytes .../images/toolbar/char/greek/upper/delta.png | Bin 332 -> 0 bytes .../toolbar/char/greek/upper/epsilon.png | Bin 319 -> 0 bytes .../images/toolbar/char/greek/upper/eta.png | Bin 265 -> 0 bytes .../images/toolbar/char/greek/upper/gamma.png | Bin 255 -> 0 bytes .../images/toolbar/char/greek/upper/iota.png | Bin 223 -> 0 bytes .../images/toolbar/char/greek/upper/kappa.png | Bin 364 -> 0 bytes .../toolbar/char/greek/upper/lambda.png | Bin 324 -> 0 bytes .../images/toolbar/char/greek/upper/mu.png | Bin 372 -> 0 bytes .../images/toolbar/char/greek/upper/nu.png | Bin 353 -> 0 bytes .../images/toolbar/char/greek/upper/omega.png | Bin 409 -> 0 bytes .../toolbar/char/greek/upper/omicron.png | Bin 370 -> 0 bytes .../images/toolbar/char/greek/upper/phi.png | Bin 364 -> 0 bytes .../images/toolbar/char/greek/upper/pi.png | Bin 250 -> 0 bytes .../images/toolbar/char/greek/upper/psi.png | Bin 344 -> 0 bytes .../images/toolbar/char/greek/upper/rho.png | Bin 293 -> 0 bytes .../images/toolbar/char/greek/upper/sigma.png | Bin 342 -> 0 bytes .../images/toolbar/char/greek/upper/tau.png | Bin 285 -> 0 bytes .../images/toolbar/char/greek/upper/theta.png | Bin 392 -> 0 bytes .../toolbar/char/greek/upper/upsilon.png | Bin 297 -> 0 bytes .../images/toolbar/char/greek/upper/xi.png | Bin 258 -> 0 bytes .../images/toolbar/char/greek/upper/zeta.png | Bin 364 -> 0 bytes .../assets/images/toolbar/char/math/aleph.png | Bin 551 -> 0 bytes .../images/toolbar/char/math/approx.png | Bin 494 -> 0 bytes .../assets/images/toolbar/char/math/ast.png | Bin 363 -> 0 bytes .../images/toolbar/char/math/baifenhao.png | Bin 690 -> 0 bytes .../images/toolbar/char/math/because.png | Bin 262 -> 0 bytes .../assets/images/toolbar/char/math/beth.png | Bin 324 -> 0 bytes .../images/toolbar/char/math/blacksquare.png | Bin 194 -> 0 bytes .../assets/images/toolbar/char/math/cap.png | Bin 318 -> 0 bytes .../assets/images/toolbar/char/math/cdot.png | Bin 187 -> 0 bytes .../assets/images/toolbar/char/math/circ.png | Bin 362 -> 0 bytes .../assets/images/toolbar/char/math/cong.png | Bin 424 -> 0 bytes .../assets/images/toolbar/char/math/cup.png | Bin 313 -> 0 bytes .../assets/images/toolbar/char/math/ddots.png | Bin 275 -> 0 bytes .../assets/images/toolbar/char/math/div.png | Bin 227 -> 0 bytes .../images/toolbar/char/math/downarrow.png | Bin 320 -> 0 bytes .../assets/images/toolbar/char/math/eq.png | Bin 176 -> 0 bytes .../assets/images/toolbar/char/math/equiv.png | Bin 221 -> 0 bytes .../images/toolbar/char/math/exists.png | Bin 272 -> 0 bytes .../images/toolbar/char/math/forall.png | Bin 444 -> 0 bytes .../assets/images/toolbar/char/math/geq.png | Bin 310 -> 0 bytes .../assets/images/toolbar/char/math/gets.png | Bin 325 -> 0 bytes .../assets/images/toolbar/char/math/gg.png | Bin 334 -> 0 bytes .../assets/images/toolbar/char/math/gt.png | Bin 278 -> 0 bytes .../assets/images/toolbar/char/math/in.png | Bin 368 -> 0 bytes .../assets/images/toolbar/char/math/infty.png | Bin 399 -> 0 bytes .../toolbar/char/math/leftrightarrow.png | Bin 448 -> 0 bytes .../assets/images/toolbar/char/math/leq.png | Bin 288 -> 0 bytes .../assets/images/toolbar/char/math/ll.png | Bin 340 -> 0 bytes .../assets/images/toolbar/char/math/lt.png | Bin 278 -> 0 bytes .../assets/images/toolbar/char/math/minus.png | Bin 190 -> 0 bytes .../assets/images/toolbar/char/math/mp.png | Bin 225 -> 0 bytes .../assets/images/toolbar/char/math/neg.png | Bin 223 -> 0 bytes .../images/toolbar/char/math/nexists.png | Bin 508 -> 0 bytes .../assets/images/toolbar/char/math/ni.png | Bin 373 -> 0 bytes .../images/toolbar/char/math/partial.png | Bin 551 -> 0 bytes .../assets/images/toolbar/char/math/plus.png | Bin 265 -> 0 bytes .../assets/images/toolbar/char/math/pm.png | Bin 234 -> 0 bytes .../images/toolbar/char/math/propto.png | Bin 489 -> 0 bytes .../assets/images/toolbar/char/math/sim.png | Bin 261 -> 0 bytes .../assets/images/toolbar/char/math/simeq.png | Bin 307 -> 0 bytes .../assets/images/toolbar/char/math/surd.png | Bin 477 -> 0 bytes .../images/toolbar/char/math/tanhao.png | Bin 216 -> 0 bytes .../images/toolbar/char/math/therefore.png | Bin 253 -> 0 bytes .../assets/images/toolbar/char/math/times.png | Bin 245 -> 0 bytes .../assets/images/toolbar/char/math/to.png | Bin 333 -> 0 bytes .../images/toolbar/char/math/uparrow.png | Bin 320 -> 0 bytes .../images/toolbar/char/math/varnothing.png | Bin 584 -> 0 bytes .../assets/images/toolbar/char/math/vdots.png | Bin 266 -> 0 bytes .../assets/images/toolbar/char/not/gneqq.png | Bin 408 -> 0 bytes .../assets/images/toolbar/char/not/gnsim.png | Bin 443 -> 0 bytes .../assets/images/toolbar/char/not/lneqq.png | Bin 411 -> 0 bytes .../assets/images/toolbar/char/not/lnsim.png | Bin 447 -> 0 bytes .../images/toolbar/char/not/nbdash-1.png | Bin 289 -> 0 bytes .../assets/images/toolbar/char/not/ncong.png | Bin 658 -> 0 bytes .../assets/images/toolbar/char/not/neq.png | Bin 415 -> 0 bytes .../assets/images/toolbar/char/not/nequiv.png | Bin 463 -> 0 bytes .../images/toolbar/char/not/nexists.png | Bin 317 -> 0 bytes .../assets/images/toolbar/char/not/ngeq.png | Bin 526 -> 0 bytes .../assets/images/toolbar/char/not/ngtr.png | Bin 432 -> 0 bytes .../assets/images/toolbar/char/not/nleq.png | Bin 515 -> 0 bytes .../assets/images/toolbar/char/not/nless.png | Bin 518 -> 0 bytes .../assets/images/toolbar/char/not/nmid.png | Bin 245 -> 0 bytes .../assets/images/toolbar/char/not/notin.png | Bin 383 -> 0 bytes .../images/toolbar/char/not/nparallel.png | Bin 253 -> 0 bytes .../assets/images/toolbar/char/not/nprec.png | Bin 353 -> 0 bytes .../assets/images/toolbar/char/not/nsim.png | Bin 468 -> 0 bytes .../images/toolbar/char/not/nsubseteq.png | Bin 401 -> 0 bytes .../assets/images/toolbar/char/not/nsucc.png | Bin 367 -> 0 bytes .../images/toolbar/char/not/nsupseteq.png | Bin 400 -> 0 bytes .../images/toolbar/char/not/ntriangleleft.png | Bin 409 -> 0 bytes .../toolbar/char/not/ntrianglelefteq.png | Bin 455 -> 0 bytes .../toolbar/char/not/ntriangleright.png | Bin 406 -> 0 bytes .../toolbar/char/not/ntrianglerighteq.png | Bin 440 -> 0 bytes .../images/toolbar/char/not/nvdash-1.png | Bin 321 -> 0 bytes .../images/toolbar/char/not/nvdash-2.png | Bin 342 -> 0 bytes .../images/toolbar/char/not/nvdash-3.png | Bin 340 -> 0 bytes .../assets/images/toolbar/char/not/nvdash.png | Bin 289 -> 0 bytes .../images/toolbar/char/not/precnsim.png | Bin 426 -> 0 bytes .../images/toolbar/char/not/subsetneq.png | Bin 339 -> 0 bytes .../images/toolbar/char/not/succnsim.png | Bin 465 -> 0 bytes .../images/toolbar/char/not/supsetneq.png | Bin 330 -> 0 bytes .../assets/images/toolbar/char/rm/a.png | Bin 303 -> 0 bytes .../assets/images/toolbar/char/rm/b.png | Bin 291 -> 0 bytes .../assets/images/toolbar/char/rm/c.png | Bin 291 -> 0 bytes .../assets/images/toolbar/char/rm/d.png | Bin 308 -> 0 bytes .../assets/images/toolbar/char/rm/e.png | Bin 311 -> 0 bytes .../assets/images/toolbar/char/rm/f.png | Bin 246 -> 0 bytes .../assets/images/toolbar/char/rm/g.png | Bin 354 -> 0 bytes .../assets/images/toolbar/char/rm/h.png | Bin 245 -> 0 bytes .../assets/images/toolbar/char/rm/i.png | Bin 208 -> 0 bytes .../assets/images/toolbar/char/rm/j.png | Bin 226 -> 0 bytes .../assets/images/toolbar/char/rm/k.png | Bin 301 -> 0 bytes .../assets/images/toolbar/char/rm/l.png | Bin 183 -> 0 bytes .../assets/images/toolbar/char/rm/m.png | Bin 288 -> 0 bytes .../assets/images/toolbar/char/rm/n.png | Bin 239 -> 0 bytes .../assets/images/toolbar/char/rm/o.png | Bin 308 -> 0 bytes .../assets/images/toolbar/char/rm/p.png | Bin 298 -> 0 bytes .../assets/images/toolbar/char/rm/q.png | Bin 314 -> 0 bytes .../assets/images/toolbar/char/rm/r.png | Bin 227 -> 0 bytes .../assets/images/toolbar/char/rm/s.png | Bin 296 -> 0 bytes .../assets/images/toolbar/char/rm/t.png | Bin 242 -> 0 bytes .../assets/images/toolbar/char/rm/u.png | Bin 259 -> 0 bytes .../assets/images/toolbar/char/rm/ua.png | Bin 343 -> 0 bytes .../assets/images/toolbar/char/rm/ub.png | Bin 363 -> 0 bytes .../assets/images/toolbar/char/rm/uc.png | Bin 378 -> 0 bytes .../assets/images/toolbar/char/rm/ud.png | Bin 310 -> 0 bytes .../assets/images/toolbar/char/rm/ue.png | Bin 308 -> 0 bytes .../assets/images/toolbar/char/rm/uf.png | Bin 260 -> 0 bytes .../assets/images/toolbar/char/rm/ug.png | Bin 394 -> 0 bytes .../assets/images/toolbar/char/rm/uh.png | Bin 266 -> 0 bytes .../assets/images/toolbar/char/rm/ui.png | Bin 212 -> 0 bytes .../assets/images/toolbar/char/rm/uj.png | Bin 242 -> 0 bytes .../assets/images/toolbar/char/rm/uk.png | Bin 345 -> 0 bytes .../assets/images/toolbar/char/rm/ul.png | Bin 228 -> 0 bytes .../assets/images/toolbar/char/rm/um.png | Bin 368 -> 0 bytes .../assets/images/toolbar/char/rm/un.png | Bin 338 -> 0 bytes .../assets/images/toolbar/char/rm/uo.png | Bin 371 -> 0 bytes .../assets/images/toolbar/char/rm/up.png | Bin 280 -> 0 bytes .../assets/images/toolbar/char/rm/uq.png | Bin 425 -> 0 bytes .../assets/images/toolbar/char/rm/ur.png | Bin 336 -> 0 bytes .../assets/images/toolbar/char/rm/us.png | Bin 363 -> 0 bytes .../assets/images/toolbar/char/rm/ut.png | Bin 259 -> 0 bytes .../assets/images/toolbar/char/rm/uu.png | Bin 297 -> 0 bytes .../assets/images/toolbar/char/rm/uv.png | Bin 361 -> 0 bytes .../assets/images/toolbar/char/rm/uw.png | Bin 442 -> 0 bytes .../assets/images/toolbar/char/rm/ux.png | Bin 374 -> 0 bytes .../assets/images/toolbar/char/rm/uy.png | Bin 341 -> 0 bytes .../assets/images/toolbar/char/rm/uz.png | Bin 366 -> 0 bytes .../assets/images/toolbar/char/rm/v.png | Bin 301 -> 0 bytes .../assets/images/toolbar/char/rm/w.png | Bin 339 -> 0 bytes .../assets/images/toolbar/char/rm/x.png | Bin 303 -> 0 bytes .../assets/images/toolbar/char/rm/y.png | Bin 329 -> 0 bytes .../assets/images/toolbar/char/rm/z.png | Bin 292 -> 0 bytes .../assets/images/toolbar/frac/1.png | Bin 965 -> 0 bytes .../assets/images/toolbar/frac/2.png | Bin 669 -> 0 bytes .../assets/images/toolbar/frac/3.png | Bin 596 -> 0 bytes .../assets/images/toolbar/frac/c1.png | Bin 1115 -> 0 bytes .../assets/images/toolbar/frac/c2.png | Bin 1077 -> 0 bytes .../assets/images/toolbar/frac/c4.png | Bin 1124 -> 0 bytes .../assets/images/toolbar/frac/c5.png | Bin 651 -> 0 bytes .../assets/images/toolbar/func/1.png | Bin 918 -> 0 bytes .../assets/images/toolbar/func/2.png | Bin 952 -> 0 bytes .../assets/images/toolbar/func/3.png | Bin 931 -> 0 bytes .../assets/images/toolbar/func/4.png | Bin 880 -> 0 bytes .../assets/images/toolbar/func/5.png | Bin 904 -> 0 bytes .../assets/images/toolbar/func/6.png | Bin 893 -> 0 bytes .../assets/images/toolbar/func/c1.png | Bin 857 -> 0 bytes .../assets/images/toolbar/func/c2.png | Bin 1003 -> 0 bytes .../assets/images/toolbar/func/c3.png | Bin 2532 -> 0 bytes .../assets/images/toolbar/int/1.png | Bin 873 -> 0 bytes .../assets/images/toolbar/int/2.png | Bin 1148 -> 0 bytes .../assets/images/toolbar/int/3.png | Bin 1151 -> 0 bytes .../assets/images/toolbar/int/4.png | Bin 1406 -> 0 bytes .../assets/images/toolbar/int/5.png | Bin 1486 -> 0 bytes .../assets/images/toolbar/int/6.png | Bin 1376 -> 0 bytes .../assets/images/toolbar/large/1.png | Bin 889 -> 0 bytes .../assets/images/toolbar/large/2.png | Bin 1221 -> 0 bytes .../assets/images/toolbar/large/3.png | Bin 988 -> 0 bytes .../assets/images/toolbar/other.png | Bin 40838 -> 0 bytes .../assets/images/toolbar/script/1.png | Bin 445 -> 0 bytes .../assets/images/toolbar/script/2.png | Bin 464 -> 0 bytes .../assets/images/toolbar/script/3.png | Bin 507 -> 0 bytes .../assets/images/toolbar/script/4.png | Bin 596 -> 0 bytes .../assets/images/toolbar/script/c1.png | Bin 829 -> 0 bytes .../assets/images/toolbar/script/c2.png | Bin 626 -> 0 bytes .../assets/images/toolbar/script/c3.png | Bin 753 -> 0 bytes .../assets/images/toolbar/sqrt/1.png | Bin 800 -> 0 bytes .../assets/images/toolbar/sqrt/2.png | Bin 916 -> 0 bytes .../assets/images/toolbar/sqrt/3.png | Bin 894 -> 0 bytes .../assets/images/toolbar/sqrt/4.png | Bin 916 -> 0 bytes .../assets/images/toolbar/sqrt/c1.png | Bin 2614 -> 0 bytes .../assets/images/toolbar/sqrt/c2.png | Bin 1794 -> 0 bytes .../assets/images/toolbar/ys/1.png | Bin 1927 -> 0 bytes .../assets/images/toolbar/ys/2.png | Bin 2553 -> 0 bytes .../assets/images/toolbar/ys/3.png | Bin 1200 -> 0 bytes .../kityformula/assets/styles/base.css | 40 - .../kityformula/assets/styles/page.css | 12 - .../kityformula/assets/styles/scrollbar.css | 78 - .../kityformula/assets/styles/ui.css | 536 - .../kityformula/assets/theme/default/fui.css | 540 - .../assets/theme/default/fui.min.css | 10 - .../assets/theme/default/images/close.png | Bin 836 -> 0 bytes .../assets/theme/default/images/down.png | Bin 1089 -> 0 bytes .../assets/theme/default/images/open.png | Bin 859 -> 0 bytes .../assets/theme/default/images/up.png | Bin 1080 -> 0 bytes .../kityformula/js/jquery-3.6.0.min.js | 2 - .../js/kity-formula-parser.all.min.js | 9 - .../kityformula/js/kity-formula-render.all.js | 5757 --- .../js/kityformula-editor.all.min.js | 12 - .../kityformula/js/kitygraph.all.js | 8572 ---- .../kityformula/loading.gif | Bin 1787 -> 0 bytes .../kityformula/resource/KF_AMS_BB.woff | Bin 5764 -> 0 bytes .../kityformula/resource/KF_AMS_CAL.woff | Bin 5576 -> 0 bytes .../kityformula/resource/KF_AMS_FRAK.woff | Bin 9956 -> 0 bytes .../kityformula/resource/KF_AMS_MAIN.woff | Bin 52540 -> 0 bytes .../kityformula/resource/KF_AMS_ROMAN.woff | Bin 6560 -> 0 bytes .../plugins/kityformula-editor/plugin.js | 72 - .../plugins/kityformula-editor/plugin.min.js | 72 - .../tinymce/plugins/legacyoutput/plugin.js | 199 - .../plugins/legacyoutput/plugin.min.js | 9 - .../tinymce/tinymce/plugins/link/plugin.js | 1290 - .../tinymce/plugins/link/plugin.min.js | 9 - .../tinymce/tinymce/plugins/lists/plugin.js | 2148 - .../tinymce/plugins/lists/plugin.min.js | 9 - .../tinymce/tinymce/plugins/media/plugin.js | 1315 - .../tinymce/plugins/media/plugin.min.js | 9 - .../tinymce/plugins/nonbreaking/plugin.js | 101 - .../tinymce/plugins/nonbreaking/plugin.min.js | 9 - .../tinymce/plugins/noneditable/plugin.js | 117 - .../tinymce/plugins/noneditable/plugin.min.js | 9 - .../tinymce/plugins/pagebreak/plugin.js | 107 - .../tinymce/plugins/pagebreak/plugin.min.js | 9 - .../tinymce/tinymce/plugins/paste/plugin.js | 1764 - .../tinymce/plugins/paste/plugin.min.js | 9 - .../tinymce/tinymce/plugins/preview/plugin.js | 127 - .../tinymce/plugins/preview/plugin.min.js | 9 - .../tinymce/tinymce/plugins/print/plugin.js | 53 - .../tinymce/plugins/print/plugin.min.js | 9 - .../tinymce/plugins/quickbars/plugin.js | 491 - .../tinymce/plugins/quickbars/plugin.min.js | 9 - .../tinymce/tinymce/plugins/save/plugin.js | 119 - .../tinymce/plugins/save/plugin.min.js | 9 - .../tinymce/plugins/searchreplace/plugin.js | 1163 - .../plugins/searchreplace/plugin.min.js | 9 - .../tinymce/plugins/spellchecker/plugin.js | 737 - .../plugins/spellchecker/plugin.min.js | 9 - .../tinymce/plugins/tabfocus/plugin.js | 129 - .../tinymce/plugins/tabfocus/plugin.min.js | 9 - .../tinymce/tinymce/plugins/table/plugin.js | 10495 ----- .../tinymce/plugins/table/plugin.min.js | 9 - .../tinymce/plugins/template/plugin.js | 577 - .../tinymce/plugins/template/plugin.min.js | 9 - .../tinymce/plugins/textcolor/plugin.js | 22 - .../tinymce/plugins/textcolor/plugin.min.js | 9 - .../tinymce/plugins/textpattern/plugin.js | 1390 - .../tinymce/plugins/textpattern/plugin.min.js | 9 - .../tinymce/tinymce/plugins/toc/plugin.js | 236 - .../tinymce/tinymce/plugins/toc/plugin.min.js | 9 - .../tinymce/plugins/visualblocks/plugin.js | 104 - .../plugins/visualblocks/plugin.min.js | 9 - .../tinymce/plugins/visualchars/plugin.js | 541 - .../tinymce/plugins/visualchars/plugin.min.js | 9 - .../tinymce/plugins/wordcount/plugin.js | 417 - .../tinymce/plugins/wordcount/plugin.min.js | 9 - .../tinymce/skins/content/dark/content.css | 72 - .../skins/content/dark/content.min.css | 8 - .../skins/content/dark/content.min.css.map | 1 - .../tinymce/skins/content/default/content.css | 67 - .../skins/content/default/content.min.css | 8 - .../skins/content/default/content.min.css.map | 1 - .../skins/content/document/content.css | 72 - .../skins/content/document/content.min.css | 8 - .../content/document/content.min.css.map | 1 - .../tinymce/skins/content/writer/content.css | 68 - .../skins/content/writer/content.min.css | 8 - .../skins/content/writer/content.min.css.map | 1 - .../tinymce/skins/ui/oxide-dark/content.css | 710 - .../skins/ui/oxide-dark/content.inline.css | 722 - .../ui/oxide-dark/content.inline.min.css | 8 - .../ui/oxide-dark/content.inline.min.css.map | 1 - .../skins/ui/oxide-dark/content.min.css | 8 - .../skins/ui/oxide-dark/content.min.css.map | 1 - .../skins/ui/oxide-dark/content.mobile.css | 29 - .../ui/oxide-dark/content.mobile.min.css | 8 - .../ui/oxide-dark/content.mobile.min.css.map | 1 - .../ui/oxide-dark/fonts/tinymce-mobile.woff | Bin 4624 -> 0 bytes .../tinymce/skins/ui/oxide-dark/skin.css | 3024 -- .../tinymce/skins/ui/oxide-dark/skin.min.css | 8 - .../skins/ui/oxide-dark/skin.min.css.map | 1 - .../skins/ui/oxide-dark/skin.mobile.css | 673 - .../skins/ui/oxide-dark/skin.mobile.min.css | 8 - .../ui/oxide-dark/skin.mobile.min.css.map | 1 - .../skins/ui/oxide-dark/skin.shadowdom.css | 36 - .../ui/oxide-dark/skin.shadowdom.min.css | 8 - .../ui/oxide-dark/skin.shadowdom.min.css.map | 1 - .../tinymce/skins/ui/oxide/content.css | 728 - .../tinymce/skins/ui/oxide/content.inline.css | 722 - .../skins/ui/oxide/content.inline.min.css | 8 - .../skins/ui/oxide/content.inline.min.css.map | 1 - .../tinymce/skins/ui/oxide/content.min.css | 8 - .../skins/ui/oxide/content.min.css.map | 1 - .../tinymce/skins/ui/oxide/content.mobile.css | 29 - .../skins/ui/oxide/content.mobile.min.css | 8 - .../skins/ui/oxide/content.mobile.min.css.map | 1 - .../skins/ui/oxide/fonts/tinymce-mobile.woff | Bin 4624 -> 0 bytes .../tinymce/tinymce/skins/ui/oxide/skin.css | 3024 -- .../tinymce/skins/ui/oxide/skin.min.css | 8 - .../tinymce/skins/ui/oxide/skin.min.css.map | 1 - .../tinymce/skins/ui/oxide/skin.mobile.css | 673 - .../skins/ui/oxide/skin.mobile.min.css | 8 - .../skins/ui/oxide/skin.mobile.min.css.map | 1 - .../tinymce/skins/ui/oxide/skin.shadowdom.css | 36 - .../skins/ui/oxide/skin.shadowdom.min.css | 8 - .../skins/ui/oxide/skin.shadowdom.min.css.map | 1 - .../tinymce/tinymce/themes/mobile/theme.js | 13592 ------- .../tinymce/themes/mobile/theme.min.js | 9 - .../tinymce/tinymce/themes/silver/theme.js | 32458 ---------------- .../tinymce/themes/silver/theme.min.js | 9 - .../pear/module/tinymce/tinymce/tinymce.js | 29786 -------------- .../module/tinymce/tinymce/tinymce.min.js | 9 - component/pear/module/toast.js | 1225 - component/pear/module/topBar.js | 13 - component/pear/module/watermark/watermark.js | 224 - component/pear/pear.js | 21 +- config/pear.config.yml | 1 + index.html | 6 +- view/components/toast.html | 146 - view/console/console1.html | 513 +- view/console/console2.html | 455 +- 663 files changed, 285 insertions(+), 183343 deletions(-) delete mode 100644 admin/css/loader.css delete mode 100644 component/pear/css/module/code.css delete mode 100644 component/pear/css/module/cropper.css delete mode 100644 component/pear/css/module/form.css delete mode 100644 component/pear/css/module/iconPicker.css delete mode 100644 component/pear/css/module/notice.css delete mode 100644 component/pear/css/module/popover.min.css delete mode 100644 component/pear/css/module/select.css delete mode 100644 component/pear/css/module/step.css delete mode 100644 component/pear/module/area.js rename component/pear/module/{message.js => core/messageCenter.js} (99%) delete mode 100644 component/pear/module/cropper.js delete mode 100644 component/pear/module/darkreader.js delete mode 100644 component/pear/module/encrypt.js delete mode 100644 component/pear/module/http.js delete mode 100644 component/pear/module/iconPicker.js delete mode 100644 component/pear/module/notice.js delete mode 100644 component/pear/module/popover/popover.js delete mode 100644 component/pear/module/select.js delete mode 100644 component/pear/module/tinymce/tinymce.js delete mode 100644 component/pear/module/tinymce/tinymce/icons/default/icons.js delete mode 100644 component/pear/module/tinymce/tinymce/icons/default/icons.min.js delete mode 100644 component/pear/module/tinymce/tinymce/langs/readme.md delete mode 100644 component/pear/module/tinymce/tinymce/langs/zh_CN.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/advlist/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/advlist/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/anchor/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/anchor/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/autolink/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/autolink/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/autoresize/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/autoresize/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/autosave/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/autosave/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/bbcode/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/bbcode/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/charmap/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/charmap/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/code/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/code/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/codesample/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/codesample/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/colorpicker/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/colorpicker/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/contextmenu/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/contextmenu/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/directionality/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/directionality/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/emoticons/js/emojiimages.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/emoticons/js/emojiimages.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/emoticons/js/emojis.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/emoticons/js/emojis.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/emoticons/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/emoticons/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/fullpage/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/fullpage/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/fullscreen/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/fullscreen/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/help/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/help/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/hr/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/hr/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/image/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/image/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/imagetools/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/imagetools/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/importcss/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/importcss/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/indent2em/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/indent2em/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/insertdatetime/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/insertdatetime/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/icon.svg delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityFormula.html delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bar-bg.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bar.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bg.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bottom.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/btn.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/down.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/top.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/up.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-bg.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-left.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-right.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-bg.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-left.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-right.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/aleph.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/bbbk.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/beth.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/circleds.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/complement.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/daleth.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/ell.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/eth.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/finv.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/game.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/gimel.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/hbar.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/hslash.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/im.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/mho.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/partial.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/re.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/wp.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/circlearrowleft.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/circlearrowright.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/curvearrowleft.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/curvearrowright.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downdownarrows.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downharpoonleft.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downharpoonright.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/gets.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftarrowtail.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftharpoondown.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftharpoonup.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftleftarrows.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightarrows.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightharpoons.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightsquigarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longleftarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longleftrightarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longrightarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/looparrowleft.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/looparrowright.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/multimap.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nearrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nleftarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nrightarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nwarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightarrowtail.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightharpoondown.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightharpoonup.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightleftarrows.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightleftharpoons.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightrightarrows.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightsquigarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/searrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/swarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/to.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/twoheadleftarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/twoheadrightarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-downarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-leftarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-leftrightarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lftarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lleftarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longleftarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longleftrightarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longrightarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lsh.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nleftarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nleftrightarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nrightarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rightarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rrightarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rsh.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-uparrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-updownarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/uparrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/updownarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upharpoonleft.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upharpoonright.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upuparrows.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/1.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/2.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/3.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/4.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/btn.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/brackets.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/down.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/frac.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/fx.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/int.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/lim.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/open.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/script.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sin.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sqrt.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sum.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/tick.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/up.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/a.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/b.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/c.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/d.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/e.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/f.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/g.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/h.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/i.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/j.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/k.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/l.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/m.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/n.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/o.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/p.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/q.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/r.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/s.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/t.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/u.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/v.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/w.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/x.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/y.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/z.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/a.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/b.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/c.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/d.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/e.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/f.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/g.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/h.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/i.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/j.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/k.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/l.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/m.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/n.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/o.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/p.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/q.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/r.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/s.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/t.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/u.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/v.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/w.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/x.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/y.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/z.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/a.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/b.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/c.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/d.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/e.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/f.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/g.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/h.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/i.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/j.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/k.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/l.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/m.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/n.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/o.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/p.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/q.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/r.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/s.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/t.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/u.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ua.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ub.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uc.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ud.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ue.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uf.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ug.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uh.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ui.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uj.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uk.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ul.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/um.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/un.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uo.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/up.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ur.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/us.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ut.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uu.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uv.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uw.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ux.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uy.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uz.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/v.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/w.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/x.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/y.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/z.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/alpha.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/beta.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/chi.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/delta.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/epsilon.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/eta.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/gamma.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/iota.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/kappa.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/lambda.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/mu.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/nu.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/omega.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/omicron.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/phi.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/pi.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/psi.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/rho.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/sigma.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/tau.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/theta.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/upsilon.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/xi.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/zeta.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/digamma.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varepsilon.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varkappa.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varphi.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varpi.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varrho.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varsigma.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/vartheta.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/alpha.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/beta.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/chi.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/delta.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/epsilon.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/eta.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/gamma.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/iota.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/kappa.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/lambda.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/mu.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/nu.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/omega.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/omicron.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/phi.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/pi.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/psi.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/rho.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/sigma.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/tau.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/theta.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/upsilon.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/xi.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/zeta.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/aleph.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/approx.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ast.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/baifenhao.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/because.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/beth.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/blacksquare.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cap.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cdot.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/circ.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cong.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cup.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ddots.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/div.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/downarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/eq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/equiv.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/exists.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/forall.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/geq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gets.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gg.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gt.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/in.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/infty.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/leftrightarrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/leq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ll.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/lt.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/minus.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/mp.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/neg.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/nexists.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ni.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/partial.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/plus.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/pm.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/propto.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/sim.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/simeq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/surd.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/tanhao.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/therefore.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/times.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/to.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/uparrow.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/varnothing.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/vdots.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/gneqq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/gnsim.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/lneqq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/lnsim.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nbdash-1.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ncong.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/neq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nequiv.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nexists.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ngeq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ngtr.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nleq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nless.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nmid.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/notin.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nparallel.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nprec.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsim.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsubseteq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsucc.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsupseteq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntriangleleft.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntrianglelefteq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntriangleright.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntrianglerighteq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-1.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-2.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-3.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/precnsim.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/subsetneq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/succnsim.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/supsetneq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/a.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/b.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/c.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/d.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/e.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/f.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/g.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/h.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/i.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/j.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/k.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/l.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/m.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/n.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/o.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/p.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/q.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/r.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/s.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/t.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/u.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ua.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ub.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uc.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ud.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ue.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uf.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ug.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uh.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ui.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uj.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uk.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ul.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/um.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/un.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uo.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/up.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uq.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ur.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/us.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ut.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uu.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uv.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uw.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ux.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uy.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uz.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/v.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/w.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/x.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/y.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/z.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/1.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/2.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/3.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c1.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c2.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c4.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c5.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/1.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/2.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/3.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/4.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/5.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/6.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c1.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c2.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c3.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/1.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/2.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/3.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/4.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/5.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/6.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/1.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/2.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/3.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/other.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/1.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/2.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/3.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/4.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c1.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c2.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c3.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/1.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/2.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/3.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/4.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/c1.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/c2.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/1.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/2.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/3.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/base.css delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/page.css delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/scrollbar.css delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/ui.css delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/fui.css delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/fui.min.css delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/close.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/down.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/open.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/up.png delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/jquery-3.6.0.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kity-formula-parser.all.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kity-formula-render.all.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kityformula-editor.all.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kitygraph.all.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/loading.gif delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_BB.woff delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_CAL.woff delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_FRAK.woff delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_MAIN.woff delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_ROMAN.woff delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/kityformula-editor/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/legacyoutput/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/legacyoutput/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/link/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/link/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/lists/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/lists/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/media/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/media/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/nonbreaking/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/nonbreaking/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/noneditable/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/noneditable/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/pagebreak/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/pagebreak/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/paste/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/paste/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/preview/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/preview/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/print/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/print/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/quickbars/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/quickbars/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/save/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/save/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/searchreplace/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/searchreplace/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/spellchecker/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/spellchecker/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/tabfocus/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/tabfocus/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/table/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/table/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/template/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/template/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/textcolor/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/textcolor/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/textpattern/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/textpattern/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/toc/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/toc/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/visualblocks/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/visualblocks/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/visualchars/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/visualchars/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/wordcount/plugin.js delete mode 100644 component/pear/module/tinymce/tinymce/plugins/wordcount/plugin.min.js delete mode 100644 component/pear/module/tinymce/tinymce/skins/content/dark/content.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/content/dark/content.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/content/dark/content.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/skins/content/default/content.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/content/default/content.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/content/default/content.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/skins/content/document/content.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/content/document/content.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/content/document/content.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/skins/content/writer/content.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/content/writer/content.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/content/writer/content.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/content.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/content.inline.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/content.inline.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/content.inline.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/content.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/content.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/content.mobile.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/content.mobile.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/content.mobile.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/skin.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/skin.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/skin.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/skin.mobile.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/skin.mobile.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/skin.mobile.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/skin.shadowdom.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/content.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/content.inline.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/content.inline.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/content.inline.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/content.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/content.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/content.mobile.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/content.mobile.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/content.mobile.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/skin.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/skin.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/skin.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/skin.mobile.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/skin.mobile.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/skin.mobile.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/skin.shadowdom.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/skin.shadowdom.min.css delete mode 100644 component/pear/module/tinymce/tinymce/skins/ui/oxide/skin.shadowdom.min.css.map delete mode 100644 component/pear/module/tinymce/tinymce/themes/mobile/theme.js delete mode 100644 component/pear/module/tinymce/tinymce/themes/mobile/theme.min.js delete mode 100644 component/pear/module/tinymce/tinymce/themes/silver/theme.js delete mode 100644 component/pear/module/tinymce/tinymce/themes/silver/theme.min.js delete mode 100644 component/pear/module/tinymce/tinymce/tinymce.js delete mode 100644 component/pear/module/tinymce/tinymce/tinymce.min.js delete mode 100644 component/pear/module/toast.js delete mode 100644 component/pear/module/topBar.js delete mode 100644 component/pear/module/watermark/watermark.js delete mode 100644 view/components/toast.html diff --git a/admin/css/admin.css b/admin/css/admin.css index 2a6c070..f3141cc 100644 --- a/admin/css/admin.css +++ b/admin/css/admin.css @@ -79,7 +79,6 @@ body, left: 230px; width: calc(100% - 230px); background-color: white; - border-bottom: 1px solid whitesmoke; } .pear-admin .layui-layout-control { @@ -92,12 +91,13 @@ body, } .pear-admin .layui-logo { - width: 230px; - height: 59px; - line-height: 59px; + height: 60px; + line-height: 60px; + border-bottom: 1px solid rgba(0, 0, 0, .12); + box-sizing: border-box; position: relative; background-color: #28333E; - border-bottom: 1px solid rgba(0, 0, 0, .12); + width: 230px; } .pear-admin .layui-logo img { @@ -145,6 +145,7 @@ body, .pear-admin .layui-body { bottom: 0px; padding-bottom: 0px; + background-color: whitesmoke; height: calc(100% - 60px); overflow-y: auto; left: 230px; @@ -560,4 +561,118 @@ body, color: white; } -/* 搜索面板结束 */ \ No newline at end of file +/* 搜索面板结束 */ + +/** 首屏加载 */ +.loader-wrapper { + position: fixed; + width: 100%; + height: 100%; + background-color: whitesmoke; + z-index: 9999999; +} + +.loader { + width: 50px; + height: 50px; + margin: 30px auto 40px; + margin-top: 20%; + position: relative; + z-index: 999999; + background-color: whitesmoke; +} + +.loader:before { + content: ""; + width: 50px; + height: 7px; + border-radius: 50%; + background: #000; + opacity: 0.1; + position: absolute; + top: 59px; + left: 0; + animation: shadow .5s linear infinite; +} + +.loader:after { + content: ""; + width: 50px; + height: 50px; + border-radius: 3px; + background-color: #5FB878; + position: absolute; + top: 0; + left: 0; + animation: loading .5s linear infinite; +} + +@-webkit-keyframes loading { + 17% { + border-bottom-right-radius: 3px; + } + + 25% { + transform: translateY(9px) rotate(22.5deg); + } + + 50% { + transform: translateY(18px) scale(1, 0.9) rotate(45deg); + border-bottom-right-radius: 40px; + } + + 75% { + transform: translateY(9px) rotate(67.5deg); + } + + 100% { + transform: translateY(0) rotate(90deg); + } +} + +@keyframes loading { + 17% { + border-bottom-right-radius: 3px; + } + + 25% { + transform: translateY(9px) rotate(22.5deg); + } + + 50% { + transform: translateY(18px) scale(1, 0.9) rotate(45deg); + border-bottom-right-radius: 40px; + } + + 75% { + transform: translateY(9px) rotate(67.5deg); + } + + 100% { + transform: translateY(0) rotate(90deg); + } +} + +@-webkit-keyframes shadow { + + 0%, + 100% { + transform: scale(1, 1); + } + + 50% { + transform: scale(1.2, 1); + } +} + +@keyframes shadow { + + 0%, + 100% { + transform: scale(1, 1); + } + + 50% { + transform: scale(1.2, 1); + } +} \ No newline at end of file diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index e69de29..266bbdd 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -0,0 +1,83 @@ +/** loader */ +.pear-admin-dark .loader-wrapper, +.pear-admin-dark .loader-wrapper .loader { + background-color: #141414; +} + +/** header */ +.pear-admin-dark .layui-header { + background-color: #141414 !important; + border-color:#414243 !important; +} + +.pear-admin-dark .layui-header * { + color: #ffffff !important; +} + +.pear-admin-dark .layui-header .pear-nav-control .layui-this a{ + background-color: #0c0c0c !important; +} + +/** side */ +.pear-admin-dark .layui-side { + box-shadow: 0 3px 4px rgba(0, 0, 0, .6);; +} + +.pear-admin-dark .layui-logo { + border-color: rgba(0, 0, 0, .30) !important; +} + +.pear-admin-dark .layui-side .layui-logo, +.pear-admin-dark .layui-side .layui-side-scroll, +.pear-admin-dark .layui-side .layui-side-scroll .layui-nav-tree{ + background-color: #141414 !important; +} + +/** body */ +.pear-admin-dark .layui-body { + background-color: #0a0a0a !important; +} + +.pear-admin-dark .layui-body .layui-tab .layui-tab-title, +.pear-admin-dark .layui-body .layui-tab .layui-tab-title li, +.pear-admin-dark .layui-body .layui-tab .layui-tab-control li { + background-color: #141414 !important; + border-color:rgba(0, 0, 0, .30) !important; + color: #ffffff; +} + +.pear-admin-dark .layui-body .layui-tab .layui-tab-title li > span:first-child { + background-color: #434343; +} + +/** layer */ +.pear-admin-dark .layui-layer { + background-color: #141414; +} + +.pear-admin-dark .layui-layer .layui-layer-setwin > span, +.pear-admin-dark .layui-layer .layui-layer-title { + color: white; +} + +/** card */ +.pear-admin-dark .layui-card { + background-color: #1d1e1f !important; +} + +.pear-admin-dark .layui-card .layui-card-header { + border-bottom-color: #414243; + color: #ffffff; +} + +/** input */ +.pear-admin-dark .layui-input { + background-color: transparent; + color: #ffffff; +} + +/** switch */ +.pear-admin-dark .layui-form-switch { + border-color: #484849; + background-color: rgba(255,255,255,.08); +} \ No newline at end of file diff --git a/admin/css/loader.css b/admin/css/loader.css deleted file mode 100644 index 64ee940..0000000 --- a/admin/css/loader.css +++ /dev/null @@ -1,105 +0,0 @@ -.loader-main{ - position: fixed; - width: 100%; - height: 100%; - background-color: whitesmoke; - z-index: 9999999; -} -.loader { - width: 50px; - height: 50px; - margin: 30px auto 40px; - margin-top: 20%; - position: relative; - z-index: 999999; - background-color: whitesmoke; -} -.loader:before { - content: ""; - width: 50px; - height: 7px; - border-radius: 50%; - background: #000; - opacity: 0.1; - position: absolute; - top: 59px; - left: 0; - animation: shadow .5s linear infinite; -} -.loader:after { - content: ""; - width: 50px; - height: 50px; - border-radius: 3px; - background-color: #5FB878; - position: absolute; - top: 0; - left: 0; - animation: loading .5s linear infinite; -} -@-webkit-keyframes loading { - 17% { - border-bottom-right-radius: 3px; - } - - 25% { - transform: translateY(9px) rotate(22.5deg); - } - - 50% { - transform: translateY(18px) scale(1, 0.9) rotate(45deg); - border-bottom-right-radius: 40px; - } - - 75% { - transform: translateY(9px) rotate(67.5deg); - } - - 100% { - transform: translateY(0) rotate(90deg); - } -} -@keyframes loading { - 17% { - border-bottom-right-radius: 3px; - } - - 25% { - transform: translateY(9px) rotate(22.5deg); - } - - 50% { - transform: translateY(18px) scale(1, 0.9) rotate(45deg); - border-bottom-right-radius: 40px; - } - - 75% { - transform: translateY(9px) rotate(67.5deg); - } - - 100% { - transform: translateY(0) rotate(90deg); - } -} -@-webkit-keyframes shadow { - - 0%, - 100% { - transform: scale(1, 1); - } - - 50% { - transform: scale(1.2, 1); - } -} -@keyframes shadow { - - 0%, - 100% { - transform: scale(1, 1); - } - - 50% { - transform: scale(1.2, 1); - } -} diff --git a/component/pear/css/module/code.css b/component/pear/css/module/code.css deleted file mode 100644 index 4bde0d3..0000000 --- a/component/pear/css/module/code.css +++ /dev/null @@ -1,9 +0,0 @@ -.layui-colla-content{ - padding: 0px; -} -.layui-code-view{ - margin: 0px!important; -} -.layui-code-h3{ - display: none!important; -} \ No newline at end of file diff --git a/component/pear/css/module/cropper.css b/component/pear/css/module/cropper.css deleted file mode 100644 index 2c64042..0000000 --- a/component/pear/css/module/cropper.css +++ /dev/null @@ -1,272 +0,0 @@ -.cropper-container { - position: relative; - overflow: hidden; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-tap-highlight-color: transparent; - -webkit-touch-callout: none -} - -.cropper-container img { - display: block; - width: 100%; - min-width: 0 !important; - max-width: none !important; - height: 100%; - min-height: 0 !important; - max-height: none !important; - image-orientation: 0deg !important -} - -.cropper-canvas, -.cropper-crop-box, -.cropper-drag-box, -.cropper-modal { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0 -} - -.cropper-drag-box { - background-color: #fff; - filter: alpha(opacity=0); - opacity: 0 -} - -.cropper-modal { - background-color: #000; - filter: alpha(opacity=50); - opacity: .5 -} - -.cropper-view-box { - display: block; - width: 100%; - height: 100%; - overflow: hidden; - outline: #69f solid 1px; - outline-color: rgba(102, 153, 255, .75) -} - -.cropper-dashed { - position: absolute; - display: block; - filter: alpha(opacity=50); - border: 0 dashed #fff; - opacity: .5 -} - -.cropper-dashed.dashed-h { - top: 33.33333333%; - left: 0; - width: 100%; - height: 33.33333333%; - border-top-width: 1px; - border-bottom-width: 1px -} - -.cropper-dashed.dashed-v { - top: 0; - left: 33.33333333%; - width: 33.33333333%; - height: 100%; - border-right-width: 1px; - border-left-width: 1px -} - -.cropper-face, -.cropper-line, -.cropper-point { - position: absolute; - display: block; - width: 100%; - height: 100%; - filter: alpha(opacity=10); - opacity: .1 -} - -.cropper-face { - top: 0; - left: 0; - cursor: move; - background-color: #fff -} - -.cropper-line { - background-color: #69f -} - -.cropper-line.line-e { - top: 0; - right: -3px; - width: 5px; - cursor: e-resize -} - -.cropper-line.line-n { - top: -3px; - left: 0; - height: 5px; - cursor: n-resize -} - -.cropper-line.line-w { - top: 0; - left: -3px; - width: 5px; - cursor: w-resize -} - -.cropper-line.line-s { - bottom: -3px; - left: 0; - height: 5px; - cursor: s-resize -} - -.cropper-point { - width: 5px; - height: 5px; - background-color: #69f; - filter: alpha(opacity=75); - opacity: .75 -} - -.cropper-point.point-e { - top: 50%; - right: -3px; - margin-top: -3px; - cursor: e-resize -} - -.cropper-point.point-n { - top: -3px; - left: 50%; - margin-left: -3px; - cursor: n-resize -} - -.cropper-point.point-w { - top: 50%; - left: -3px; - margin-top: -3px; - cursor: w-resize -} - -.cropper-point.point-s { - bottom: -3px; - left: 50%; - margin-left: -3px; - cursor: s-resize -} - -.cropper-point.point-ne { - top: -3px; - right: -3px; - cursor: ne-resize -} - -.cropper-point.point-nw { - top: -3px; - left: -3px; - cursor: nw-resize -} - -.cropper-point.point-sw { - bottom: -3px; - left: -3px; - cursor: sw-resize -} - -.cropper-point.point-se { - right: -3px; - bottom: -3px; - width: 20px; - height: 20px; - cursor: se-resize; - filter: alpha(opacity=100); - opacity: 1 -} - -.cropper-point.point-se:before { - position: absolute; - right: -50%; - bottom: -50%; - display: block; - width: 200%; - height: 200%; - content: " "; - background-color: #69f; - filter: alpha(opacity=0); - opacity: 0 -} - -@media (min-width:768px) { - .cropper-point.point-se { - width: 15px; - height: 15px - } -} - -@media (min-width:992px) { - .cropper-point.point-se { - width: 10px; - height: 10px - } -} - -@media (min-width:1200px) { - .cropper-point.point-se { - width: 5px; - height: 5px; - filter: alpha(opacity=75); - opacity: .75 - } -} - -.cropper-bg { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC) -} - -.cropper-invisible { - filter: alpha(opacity=0); - opacity: 0 -} - -.cropper-hide { - position: fixed; - top: 0; - left: 0; - z-index: -1; - width: auto !important; - min-width: 0 !important; - max-width: none !important; - height: auto !important; - min-height: 0 !important; - max-height: none !important; - filter: alpha(opacity=0); - opacity: 0 -} - -.cropper-hidden { - display: none !important -} - -.cropper-move { - cursor: move -} - -.cropper-crop { - cursor: crosshair -} - -.cropper-disabled .cropper-canvas, -.cropper-disabled .cropper-face, -.cropper-disabled .cropper-line, -.cropper-disabled .cropper-point { - cursor: not-allowed -} diff --git a/component/pear/css/module/form.css b/component/pear/css/module/form.css deleted file mode 100644 index b6a8c8d..0000000 --- a/component/pear/css/module/form.css +++ /dev/null @@ -1,74 +0,0 @@ -.layui-card-body .layui-form{ - margin-top: 15px; -} - -input::-webkit-input-placeholder, -textarea::-webkit-input-placeholder { - color: #ccc; -} - -.layui-input:hover, -.layui-textarea:hover, -.layui-input:focus, -.layui-textarea:focus { - border-color: #eee; -} - -.layui-input:focus, -.layui-textarea:focus { - border-color: #5FB878 !important; - box-shadow: 0 0 0 3px #f0f9eb !important; -} - -.layui-input[success] { - box-shadow: 0px 0px 0px 3px #f0f9eb !important; - border: #5FB878 1px solid!important; -} - -.layui-input[failure], -.layui-form-item .layui-form-danger:focus { - box-shadow: 0px 0px 0px 3px #fef0f0 !important; - border: #F56C6C 1px solid!important; -} - -.layui-input, -.layui-select, -.layui-textarea { - border-radius: 4px; - border-color: #eee; - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} - -.layui-form-select dl::-webkit-scrollbar { - width: 0px; - height: 0px; -} - -.layui-form-select dl::-webkit-scrollbar { - width: 6px; - height: 6px; -} - -.layui-form-select dl::-webkit-scrollbar-track { - background: white; - border-radius: 3px; -} - -.layui-form-select dl::-webkit-scrollbar-thumb { - background: #E6E6E6; - border-radius: 3px; -} - -.layui-form-select dl::-webkit-scrollbar-thumb:hover { - background: #E6E6E6; -} - -.layui-form-select dl::-webkit-scrollbar-corner { - background: #f6f6f6; -} - -/* layui 2.6.9 样式变化 */ -.layui-form-select dl dd.layui-this{ - background-color: #F6F6F6; - font-weight: 700; -} diff --git a/component/pear/css/module/iconPicker.css b/component/pear/css/module/iconPicker.css deleted file mode 100644 index 5d80b0b..0000000 --- a/component/pear/css/module/iconPicker.css +++ /dev/null @@ -1,11 +0,0 @@ -.layui-iconpicker { - width: 295px; -} - -.layui-iconpicker .layui-iconpicker-search .layui-input:focus{ - box-shadow: none!important; -} - -.layui-iconpicker-search .layui-icon { - top: 8px; -} \ No newline at end of file diff --git a/component/pear/css/module/layout.css b/component/pear/css/module/layout.css index 000f1e0..6286b10 100644 --- a/component/pear/css/module/layout.css +++ b/component/pear/css/module/layout.css @@ -2,7 +2,7 @@ padding: 10px; margin: 0px; box-sizing: border-box; - background-color: whitesmoke; + background-color: transparent; width: 100%; } diff --git a/component/pear/css/module/notice.css b/component/pear/css/module/notice.css deleted file mode 100644 index 65c9fea..0000000 --- a/component/pear/css/module/notice.css +++ /dev/null @@ -1,228 +0,0 @@ -.toast-title { - font-weight: bold; -} -.toast-message { - -ms-word-wrap: break-word; - word-wrap: break-word; -} -.toast-message a, -.toast-message label { - color: #FFFFFF; -} -.toast-message a:hover { - color: #CCCCCC; - text-decoration: none; -} -.toast-close-button { - position: relative; - right: -0.3em; - top: -0.3em; - float: right; - font-size: 20px; - font-weight: bold; - color: #FFFFFF; - -webkit-text-shadow: 0 1px 0 #ffffff; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.8; - -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); - filter: alpha(opacity=80); - line-height: 1; -} -.toast-close-button:hover, -.toast-close-button:focus { - color: #000000; - text-decoration: none; - cursor: pointer; - opacity: 0.4; - -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); - filter: alpha(opacity=40); -} -.rtl .toast-close-button { - left: -0.3em; - float: left; - right: 0.3em; -} -/*Additional properties for button version - iOS requires the button element instead of an anchor tag. - If you want the anchor version, it requires `href="#"`.*/ -button.toast-close-button { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -.toast-top-center { - top: 0; - right: 0; - width: 100%; -} -.toast-bottom-center { - bottom: 0; - right: 0; - width: 100%; -} -.toast-top-full-width { - top: 0; - right: 0; - width: 100%; -} -.toast-bottom-full-width { - bottom: 0; - right: 0; - width: 100%; -} -.toast-top-left { - top: 12px; - left: 12px; -} -.toast-top-right { - top: 12px; - right: 12px; -} -.toast-bottom-right { - right: 12px; - bottom: 12px; -} -.toast-bottom-left { - bottom: 12px; - left: 12px; -} -#toast-container { - position: fixed; - z-index: 999999; - pointer-events: none; - /*overrides*/ -} -#toast-container * { - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} -#toast-container > div { - position: relative; - pointer-events: auto; - overflow: hidden; - margin: 0 0 6px; - padding: 15px 15px 15px 50px; - width: 300px; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; - background-position: 15px center; - background-repeat: no-repeat; - -moz-box-shadow: 0 0 12px #999999; - -webkit-box-shadow: 0 0 12px #999999; - box-shadow: 0 0 12px #999999; - color: #FFFFFF; - opacity: 0.8; - -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); - filter: alpha(opacity=80); -} -#toast-container > div.rtl { - direction: rtl; - padding: 15px 50px 15px 15px; - background-position: right 15px center; -} -#toast-container > div:hover { - -moz-box-shadow: 0 0 12px #000000; - -webkit-box-shadow: 0 0 12px #000000; - box-shadow: 0 0 12px #000000; - opacity: 1; - -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); - filter: alpha(opacity=100); - cursor: pointer; -} -#toast-container > .toast-info { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; -} -#toast-container > .toast-error { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; -} -#toast-container > .toast-success { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; -} -#toast-container > .toast-warning { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; -} -#toast-container.toast-top-center > div, -#toast-container.toast-bottom-center > div { - width: 300px; - margin-left: auto; - margin-right: auto; -} -#toast-container.toast-top-full-width > div, -#toast-container.toast-bottom-full-width > div { - width: 96%; - margin-left: auto; - margin-right: auto; -} -.toast { - background-color: #030303; -} -.toast-success { - background-color: #51A351; -} -.toast-error { - background-color: #BD362F; -} -.toast-info { - background-color: #2F96B4; -} -.toast-warning { - background-color: #F89406; -} -.toast-progress { - position: absolute; - left: 0; - bottom: 0; - height: 4px; - background-color: #000000; - opacity: 0.4; - -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); - filter: alpha(opacity=40); -} -/*Responsive Design*/ -@media all and (max-width: 240px) { - #toast-container > div { - padding: 8px 8px 8px 50px; - width: 11em; - } - #toast-container > div.rtl { - padding: 8px 50px 8px 8px; - } - #toast-container .toast-close-button { - right: -0.2em; - top: -0.2em; - } - #toast-container .rtl .toast-close-button { - left: -0.2em; - right: 0.2em; - } -} -@media all and (min-width: 241px) and (max-width: 480px) { - #toast-container > div { - padding: 8px 8px 8px 50px; - width: 18em; - } - #toast-container > div.rtl { - padding: 8px 50px 8px 8px; - } - #toast-container .toast-close-button { - right: -0.2em; - top: -0.2em; - } - #toast-container .rtl .toast-close-button { - left: -0.2em; - right: 0.2em; - } -} -@media all and (min-width: 481px) and (max-width: 768px) { - #toast-container > div { - padding: 15px 15px 15px 50px; - width: 25em; - } - #toast-container > div.rtl { - padding: 15px 50px 15px 15px; - } -} \ No newline at end of file diff --git a/component/pear/css/module/popover.min.css b/component/pear/css/module/popover.min.css deleted file mode 100644 index 453a50f..0000000 --- a/component/pear/css/module/popover.min.css +++ /dev/null @@ -1 +0,0 @@ -.webui-popover-content{display:none}.webui-popover-rtl{direction:rtl;text-align:right}.webui-popover{position:absolute;top:0;left:0;z-index:9999;display:none;min-width:50px;min-height:32px;padding:1px;text-align:left;white-space:normal;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.webui-popover.top,.webui-popover.top-left,.webui-popover.top-right{margin-top:-10px}.webui-popover.right,.webui-popover.right-top,.webui-popover.right-bottom{margin-left:10px}.webui-popover.bottom,.webui-popover.bottom-left,.webui-popover.bottom-right{margin-top:10px}.webui-popover.left,.webui-popover.left-top,.webui-popover.left-bottom{margin-left:-10px}.webui-popover.pop{-webkit-transform:scale(0.8);-o-transform:scale(0.8);transform:scale(0.8);-webkit-transition:transform .15s cubic-bezier(0.3,0,0,1.5);-o-transition:transform .15s cubic-bezier(0.3,0,0,1.5);transition:transform .15s cubic-bezier(0.3,0,0,1.5);opacity:0;filter:alpha(opacity=0)}.webui-popover.pop-out{-webkit-transition-property:"opacity,transform";-o-transition-property:"opacity,transform";transition-property:"opacity,transform";-webkit-transition:.15s linear;-o-transition:.15s linear;transition:.15s linear;opacity:0;filter:alpha(opacity=0)}.webui-popover.fade,.webui-popover.fade-out{-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear;opacity:0;filter:alpha(opacity=0)}.webui-popover.out{opacity:0;filter:alpha(opacity=0)}.webui-popover.in{-webkit-transform:none;-o-transform:none;transform:none;opacity:1;filter:alpha(opacity=100)}.webui-popover .webui-popover-content{padding:9px 14px;overflow:auto;display:block}.webui-popover .webui-popover-content>div:first-child{width:99%}.webui-popover-inner .close{font-family:arial;margin:8px 10px 0 0;float:right;font-size:16px;font-weight:700;line-height:16px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20);text-decoration:none}.webui-popover-inner .close:hover,.webui-popover-inner .close:focus{opacity:.5;filter:alpha(opacity=50)}.webui-popover-inner .close:after{content:"\00D7";width:.8em;height:.8em;padding:4px;position:relative}.webui-popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:700;line-height:18px;background-color:#fff;border-bottom:1px solid #f2f2f2;border-radius:5px 5px 0 0}.webui-popover-content{padding:9px 14px;overflow:auto;display:none}.webui-popover-inverse{background-color:#333;color:#eee}.webui-popover-inverse .webui-popover-title{background:#333;border-bottom:1px solid #3b3b3b;color:#eee}.webui-no-padding .webui-popover-content{padding:0}.webui-no-padding .list-group-item{border-right:none;border-left:none}.webui-no-padding .list-group-item:first-child{border-top:0}.webui-no-padding .list-group-item:last-child{border-bottom:0}.webui-popover>.webui-arrow,.webui-popover>.webui-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.webui-popover>.webui-arrow{border-width:11px}.webui-popover>.webui-arrow:after{border-width:10px;content:""}.webui-popover.top>.webui-arrow,.webui-popover.top-right>.webui-arrow,.webui-popover.top-left>.webui-arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.webui-popover.top>.webui-arrow:after,.webui-popover.top-right>.webui-arrow:after,.webui-popover.top-left>.webui-arrow:after{content:" ";bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.webui-popover.right>.webui-arrow,.webui-popover.right-top>.webui-arrow,.webui-popover.right-bottom>.webui-arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.webui-popover.right>.webui-arrow:after,.webui-popover.right-top>.webui-arrow:after,.webui-popover.right-bottom>.webui-arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.webui-popover.bottom>.webui-arrow,.webui-popover.bottom-right>.webui-arrow,.webui-popover.bottom-left>.webui-arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0}.webui-popover.bottom>.webui-arrow:after,.webui-popover.bottom-right>.webui-arrow:after,.webui-popover.bottom-left>.webui-arrow:after{content:" ";top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.webui-popover.left>.webui-arrow,.webui-popover.left-top>.webui-arrow,.webui-popover.left-bottom>.webui-arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.webui-popover.left>.webui-arrow:after,.webui-popover.left-top>.webui-arrow:after,.webui-popover.left-bottom>.webui-arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.webui-popover-inverse.top>.webui-arrow,.webui-popover-inverse.top-left>.webui-arrow,.webui-popover-inverse.top-right>.webui-arrow,.webui-popover-inverse.top>.webui-arrow:after,.webui-popover-inverse.top-left>.webui-arrow:after,.webui-popover-inverse.top-right>.webui-arrow:after{border-top-color:#333}.webui-popover-inverse.right>.webui-arrow,.webui-popover-inverse.right-top>.webui-arrow,.webui-popover-inverse.right-bottom>.webui-arrow,.webui-popover-inverse.right>.webui-arrow:after,.webui-popover-inverse.right-top>.webui-arrow:after,.webui-popover-inverse.right-bottom>.webui-arrow:after{border-right-color:#333}.webui-popover-inverse.bottom>.webui-arrow,.webui-popover-inverse.bottom-left>.webui-arrow,.webui-popover-inverse.bottom-right>.webui-arrow,.webui-popover-inverse.bottom>.webui-arrow:after,.webui-popover-inverse.bottom-left>.webui-arrow:after,.webui-popover-inverse.bottom-right>.webui-arrow:after{border-bottom-color:#333}.webui-popover-inverse.left>.webui-arrow,.webui-popover-inverse.left-top>.webui-arrow,.webui-popover-inverse.left-bottom>.webui-arrow,.webui-popover-inverse.left>.webui-arrow:after,.webui-popover-inverse.left-top>.webui-arrow:after,.webui-popover-inverse.left-bottom>.webui-arrow:after{border-left-color:#333}.webui-popover i.icon-refresh:before{content:""}.webui-popover i.icon-refresh{display:block;width:30px;height:30px;font-size:20px;top:50%;left:50%;position:absolute;margin-left:-15px;margin-right:-15px;background:url(../img/loading.gif) no-repeat}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg)}}@keyframes rotate{100%{transform:rotate(360deg)}}.webui-popover-backdrop{background-color:rgba(0,0,0,.65);width:100%;height:100%;position:fixed;top:0;left:0;z-index:9998}.webui-popover .dropdown-menu{display:block;position:relative;top:0;border:none;box-shadow:none;float:none} \ No newline at end of file diff --git a/component/pear/css/module/select.css b/component/pear/css/module/select.css deleted file mode 100644 index 53285a6..0000000 --- a/component/pear/css/module/select.css +++ /dev/null @@ -1,822 +0,0 @@ -/* formSelects多选css */ -select[xm-select] { - display: none !important; -} - -.xm-select-parent * { - margin: 0; - padding: 0; - font-family: "Helvetica Neue", Helvetica, "PingFang SC", 微软雅黑, Tahoma, Arial, sans-serif; - box-sizing: initial; -} - -.xm-select-parent { - text-align: left; -} - -.xm-select-parent select { - display: none; -} - -.xm-select-parent .xm-select-title { - position: relative; - min-height: 36px; -} - -.xm-select-parent .xm-input { - cursor: pointer; - border-radius: 2px; - border-width: 1px; - border-style: solid; - border-color: #E6E6E6; - display: block; - width: 100%; - box-sizing: border-box; - background-color: #FFF; - height: 36px; - line-height: 1.3; - padding-left: 10px; - outline: 0 -} - -.xm-select-parent .xm-select-sj { - display: inline-block; - width: 0; - height: 0; - border-style: dashed; - border-color: transparent; - overflow: hidden; - position: absolute; - right: 10px; - top: 50%; - margin-top: -3px; - cursor: pointer; - border-width: 6px; - border-top-color: #C2C2C2; - border-top-style: solid; - transition: all .3s; - -webkit-transition: all .3s -} - -.xm-select-parent .xm-form-selected .xm-select-sj { - margin-top: -9px; - transform: rotate(180deg) -} - -.xm-select-parent .xm-form-select dl { - display: none; - position: absolute; - left: 0; - top: 42px; - padding: 5px 0; - z-index: 999; - min-width: 100%; - border: 1px solid #d2d2d2; - max-height: 300px; - overflow-y: auto; - background-color: #fff; - border-radius: 2px; - box-shadow: 0 2px 4px rgba(0, 0, 0, .12); - box-sizing: border-box; - animation-fill-mode: both; - -webkit-animation-name: layui-upbit; - animation-name: layui-upbit; - -webkit-animation-duration: .3s; - animation-duration: .3s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both -} - -@-webkit-keyframes layui-upbit { - from { - -webkit-transform: translate3d(0, 30px, 0); - opacity: .3 - } - - to { - -webkit-transform: translate3d(0, 0, 0); - opacity: 1 - } -} - -@keyframes layui-upbit { - from { - transform: translate3d(0, 30px, 0); - opacity: .3 - } - - to { - transform: translate3d(0, 0, 0); - opacity: 1 - } -} - -.xm-select-parent .xm-form-selected dl { - display: block -} - -.xm-select-parent .xm-form-select dl dd, -.xm-select-parent .xm-form-select dl dt { - padding: 0 10px; - line-height: 36px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis -} - -.xm-select-parent .xm-form-select dl dd { - cursor: pointer; - height: 36px; -} - -.xm-select-parent .xm-form-select dl dd:hover { - background-color: #f2f2f2 -} - -.xm-select-parent .xm-form-select dl dt { - font-size: 12px; - color: #999 -} - -.layui-select-disabled .xm-dis-disabled { - border-color: #eee !important -} - -.xm-select-parent .xm-form-select dl .xm-select-tips { - padding-left: 10px !important; - color: #999; - font-size: 14px -} - -.xm-unselect { - -moz-user-select: none; - -webkit-user-select: none; - -ms-user-select: none -} - -.xm-form-checkbox { - position: relative; - display: block; - vertical-align: middle; - cursor: pointer; - font-size: 0; - -webkit-transition: .1s linear; - transition: .1s linear; - box-sizing: border-box; - height: auto !important; - line-height: normal !important; - border: none !important; - margin-right: 0; - padding-right: 0; - background: 0 0; -} - -.xm-form-checkbox>i { - color: #FFF; - font-size: 16px; - width: 16px; - height: 16px; - position: absolute; - top: 9px; - border: 1px solid #5FB878; - border-radius: 3px; - z-index: 2; -} - -.xm-form-checkbox:hover>i { - border-color: #5FB878; -} - -.xm-form-checkbox>span { - display: block; - position: relative; - padding: 0 15px 0 30px; - height: 100%; - font-size: 14px; - border-radius: 2px 0 0 2px; - background-color: #d2d2d2; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - background: 0 0; - color: #666; - line-height: 36px; -} - -.xm-select-parent dl { - width: 100%; -} - -.xm-select-parent dl dd { - position: relative; -} - -.xm-select-parent dl dd>i:not(.icon-sousuo) { - position: absolute; - right: 10px; - top: 0; - color: #AAAAAA; -} - -.xm-select-parent dl dd.xm-select-this div i { - border: none; - color: #5FB878; - font-size: 18px; -} - -.xm-select-parent dl dd.xm-select-this div i:after { - content: '\e613'; -} - -.xm-select-parent dl dd.xm-dis-disabled div i { - border-color: #C2C2C2; -} - -.xm-select-parent dl dd.xm-dis-disabled.xm-select-this div i { - color: #C2C2C2; -} - -.xm-select-radio div.xm-form-checkbox>i { - border-radius: 20px; -} - -.xm-select-parent dl.xm-select-radio dd.xm-select-this div i:after { - content: '\e62b'; -} - -.xm-dis-disabled, -.xm-dis-disabled:hover { - cursor: not-allowed !important -} - -.xm-form-select dl dd.xm-dis-disabled { - background-color: #fff !important -} - -.xm-form-select dl dd.xm-dis-disabled span { - color: #C2C2C2 -} - -.xm-form-select dl dd.xm-dis-disabled .xm-icon-yes { - border-color: #C2C2C2 -} - -.xm-select-parent { - position: relative; - -moz-user-select: none; - -ms-user-select: none; - -webkit-user-select: none -} - -.xm-select-parent .xm-select { - line-height: normal; - height: auto; - padding: 4px 10px 1px 10px; - overflow: hidden; - min-height: 36px; - left: 0; - z-index: 99; - position: absolute; - background: 0 0; - padding-right: 20px -} - -.xm-select-parent .xm-select:hover { - border-color: #C0C4CC -} - -.xm-select-parent .xm-select .xm-select-label { - display: inline-block; - margin: 0; - vertical-align: middle -} - -.xm-select-parent .xm-select-title div.xm-select-label>span { - position: relative; - padding: 2px 5px; - background-color: #5FB878; - border-radius: 2px; - color: #FFF; - display: inline-block; - line-height: 18px; - height: 18px; - margin: 2px 5px 2px 0; - cursor: initial; - user-select: none; - font-size: 14px; - padding-right: 25px; - -webkit-user-select: none; -} - -.xm-select-parent .xm-select-title div.xm-select-label>span i { - position: absolute; - margin-left: 8px; - font-size: 12px; - cursor: pointer; - line-height: 20px; -} - -.xm-select-parent .xm-select .xm-select-input { - border: none; - height: 28px; - background-color: transparent; - padding: 0; - vertical-align: middle; - display: inline-block; - width: 50px -} - -.xm-select-parent .xm-select--suffix input { - border: none -} - -.xm-form-selected .xm-select, -.xm-form-selected .xm-select:hover { - border-color: #67c23a !important -} - -.xm-select--suffix+div { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0 -} - -.xm-select-dis .xm-select--suffix+div { - z-index: 100; - cursor: no-drop !important; - opacity: .2; - background-color: #FFF; -} - -.xm-select-disabled, -.xm-select-disabled:hover { - color: #d2d2d2 !important; - cursor: not-allowed !important; - background-color: #fff -} - -.xm-select-none { - display: none; - margin: 5px 0; - text-align: center; -} - -.xm-select-none:hover { - background-color: #FFF !important -} - -.xm-select-empty { - display: block -} - -.xm-span-hide { - display: none !important; -} - -.layui-form-pane .xm-select, -.layui-form-pane .xm-select:hover { - border: none !important; - top: 0px -} - -.layui-form-pane .xm-select-title { - border: 1px solid #e6e6e6 !important -} - -.xm-select-hide { - display: none !important; -} - -div[xm-hg] .xm-select-label { - white-space: nowrap; - overflow: hidden; - position: absolute; - right: 30px; - left: 0; - padding-left: 10px; -} - -/* 颜色相关 */ -div[xm-select-skin] .xm-select-title div.xm-select-label>span { - border: 1px solid #67c23a -} - -div[xm-select-skin] .xm-select-title div.xm-select-label>span i:hover { - opacity: .8; - filter: alpha(opacity=80); - cursor: pointer -} - -div[xm-select-skin=default] .xm-select-title div.xm-select-label>span { - background-color: #F0F2F5; - color: #909399; - border: 1px solid #F0F2F5 -} - -div[xm-select-skin=default] .xm-select-title div.xm-select-label>span i { - color: #C0C4CC -} - -div[xm-select-skin=default] .xm-select-title div.xm-select-label>span i:before { - content: '\e60b'; - font-size: 16px; - margin-left: -3px; -} - -div[xm-select-skin=default] dl dd:not(.xm-dis-disabled) i { - border-color: #5FB878 -} - -div[xm-select-skin=default] dl dd.xm-select-this:not(.xm-dis-disabled) i { - color: #5FB878 -} - -div[xm-select-skin=default].xm-form-selected .xm-select, -div[xm-select-skin=default].xm-form-selected .xm-select:hover { - border-color: #C0C4CC!important -} - -div[xm-select-skin=primary] .xm-select-title div.xm-select-label>span { - background-color: #5FB878!important; - color: #FFF; - border: 1px solid #5FB878!important -} - -div[xm-select-skin=primary] .xm-select-title div.xm-select-label>span i { - background-color: #5FB878!important; - color: #FFF -} - -div[xm-select-skin=primary] dl dd:not(.xm-dis-disabled) i { - border-color: #5FB878!important -} - -div[xm-select-skin=primary] dl dd.xm-select-this:not(.xm-dis-disabled) i { - color: #5FB878!important -} - -div[xm-select-skin=primary].xm-form-selected .xm-select, -div[xm-select-skin=primary].xm-form-selected .xm-select:hover { - border-color: #5FB878!important -} - -div[xm-select-skin=normal] .xm-select-title div.xm-select-label>span { - background-color: #2D8CF0!important; - color: #FFF; - border: 1px solid #2D8CF0!important; -} - -div[xm-select-skin=normal] .xm-select-title div.xm-select-label>span i { - background-color: #2D8CF0!important; - color: #FFF -} - -div[xm-select-skin=normal] dl dd:not(.xm-dis-disabled) i { - border-color: #2D8CF0!important; -} - -div[xm-select-skin=normal] dl dd.xm-select-this:not(.xm-dis-disabled) i { - color:#2D8CF0 !important; -} - -div[xm-select-skin=normal].xm-form-selected .xm-select, -div[xm-select-skin=normal].xm-form-selected .xm-select:hover { - border-color:#2D8CF0!important; -} - -div[xm-select-skin=warm] .xm-select-title div.xm-select-label>span { - background-color: #e6a23c!important; - color: #FFF; - border: 1px solid #e6a23c!important; -} - -div[xm-select-skin=warm] .xm-select-title div.xm-select-label>span i { - background-color: #e6a23c!important; - color: #FFF -} - -div[xm-select-skin=warm] dl dd:not(.xm-dis-disabled) i { - border-color:#e6a23c!important -} - -div[xm-select-skin=warm] dl dd.xm-select-this:not(.xm-dis-disabled) i { - color:#e6a23c!important -} - -div[xm-select-skin=warm].xm-form-selected .xm-select, -div[xm-select-skin=warm].xm-form-selected .xm-select:hover { - border-color: #e6a23c!important -} - -div[xm-select-skin=danger] .xm-select-title div.xm-select-label>span { - background-color: #f56c6c!important; - color: #FFF; - border: 1px solid #f56c6c!important; -} - -div[xm-select-skin=danger] .xm-select-title div.xm-select-label>span i { - background-color:#f56c6c!important; - color: #FFF -} - -div[xm-select-skin=danger] dl dd:not(.xm-dis-disabled) i { - border-color: #f56c6c!important -} - -div[xm-select-skin=danger] dl dd.xm-select-this:not(.xm-dis-disabled) i { - color: #f56c6c!important -} - -div[xm-select-skin=danger].xm-form-selected .xm-select, -div[xm-select-skin=danger].xm-form-selected .xm-select:hover { - border-color: #f56c6c!important -} - - -/* 多选联动 */ -.xm-select-parent .layui-form-danger+.xm-select-title .xm-select { - border-color: #f56c6c!important -} - -.xm-select-linkage li { - padding: 10px 0px; - cursor: pointer; -} - -.xm-select-linkage li span { - padding-left: 20px; - padding-right: 30px; - display: inline-block; - height: 20px; - overflow: hidden; - text-overflow: ellipsis; -} - -.xm-select-linkage li.xm-select-this span { - border-left: 5px solid #009688; - color: #009688; - padding-left: 15px; -} - -.xm-select-linkage-group { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - overflow-x: hidden; - overflow-y: auto; -} - -.xm-select-linkage-group li:hover { - border-left: 1px solid #009688; -} - -.xm-select-linkage-group li:hover span { - padding-left: 19px; -} - -.xm-select-linkage-group li.xm-select-this:hover span { - padding-left: 15px; - border-left-width: 4px; -} - -.xm-select-linkage-group:nth-child(4n+1) { - background-color: #EFEFEF; - left: 0; -} - -.xm-select-linkage-group:nth-child(4n+1) li.xm-select-active { - background-color: #F5F5F5; -} - -.xm-select-linkage-group:nth-child(4n+2) { - background-color: #F5F5F5; - left: 100px; -} - -.xm-select-linkage-group:nth-child(4n+3) li.xm-select-active { - background-color: #FAFAFA; -} - -.xm-select-linkage-group:nth-child(4n+3) { - background-color: #FAFAFA; - left: 200px; -} - -.xm-select-linkage-group:nth-child(4n+3) li.xm-select-active { - background-color: #FFFFFF; -} - -.xm-select-linkage-group:nth-child(4n+4) { - background-color: #FFFFFF; - left: 300px; -} - -.xm-select-linkage-group:nth-child(4n+4) li.xm-select-active { - background-color: #EFEFEF; -} - -.xm-select-linkage li { - list-style: none; -} - -.xm-select-linkage-hide { - display: none; -} - -.xm-select-linkage-show { - display: block; -} - -div[xm-select-skin='default'] .xm-select-linkage li.xm-select-this span { - border-left-color: #5FB878; - color: #5FB878; -} - -div[xm-select-skin='default'] .xm-select-linkage-group li:hover { - border-left-color: #5FB878; -} - -div[xm-select-skin='primary'] .xm-select-linkage li.xm-select-this span { - border-left-color: #1E9FFF; - color: #1E9FFF; -} - -div[xm-select-skin='primary'] .xm-select-linkage-group li:hover { - border-left-color: #1E9FFF; -} - -div[xm-select-skin='normal'] .xm-select-linkage li.xm-select-this span { - border-left-color: #1E9FFF; - color: #1E9FFF; -} - -div[xm-select-skin='normal'] .xm-select-linkage-group li:hover { - border-left-color: #1E9FFF; -} - -div[xm-select-skin='warm'] .xm-select-linkage li.xm-select-this span { - border-left-color: #FFB800; - color: #FFB800; -} - -div[xm-select-skin='warm'] .xm-select-linkage-group li:hover { - border-left-color: #FFB800; -} - -div[xm-select-skin='danger'] .xm-select-linkage li.xm-select-this span { - border-left-color: #FF5722; - color: #FF5722; -} - -div[xm-select-skin='danger'] .xm-select-linkage-group li:hover { - border-left-color: #FF5722; -} - - -/* 快捷操作 */ -.xm-select-tips[style]:hover { - background-color: #FFF !important; -} - -.xm-select-parent dd>.xm-cz { - position: absolute; - top: 0px; - right: 10px; -} - -.xm-select-parent dd>.xm-cz-group { - margin-right: 30px; - border-right: 2px solid #ddd; - height: 16px; - margin-top: 10px; - line-height: 16px; - overflow: hidden; -} - -.xm-select-parent dd>.xm-cz-group .xm-cz { - display: inline-block; - margin-right: 30px; -} - -.xm-select-parent dd>.xm-cz-group .xm-cz i { - margin-right: 10px; -} - -.xm-select-parent dd>.xm-cz-group[show='name'] .xm-cz i { - display: none; -} - -.xm-select-parent dd>.xm-cz-group[show='icon'] .xm-cz span { - display: none; -} - -.xm-select-parent dd .xm-cz:hover { - color: #009688; -} - -div[xm-select-skin='default'] dd .xm-cz:hover { - color: #C0C4CC; -} - -div[xm-select-skin='primary'] dd .xm-cz:hover { - color: #009688; -} - -div[xm-select-skin='normal'] dd .xm-cz:hover { - color: #1E9FFF; -} - -div[xm-select-skin='warm'] dd .xm-cz:hover { - color: #FFB800; -} - -div[xm-select-skin='danger'] dd .xm-cz:hover { - color: #FF5722; -} - -.xm-select-tips .xm-input { - border: none; - border-bottom: 1px solid #E6E6E6; - padding-left: 27px; -} - -.xm-select-tips .icon-sousuo { - position: absolute; -} - -.xm-select-tips.xm-dl-input { - display: none; -} - -div[xm-select-search-type="1"] .xm-select-tips.xm-dl-input { - display: block; -} - -div[xm-select-search-type="1"] .xm-select .xm-select-input { - display: none !important; -} - -@font-face { - font-family: "xm-iconfont"; - src: url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.eot?t=1534240067831'); - /* IE9*/ - src: url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.eot?t=1534240067831#iefix') format('embedded-opentype'), - /* IE6-IE8 */ - url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'), - url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.ttf?t=1534240067831') format('truetype'), - /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ - url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.svg?t=1534240067831#iconfont') format('svg'); - /* iOS 4.1- */ -} - -.xm-iconfont { - font-family: "xm-iconfont" !important; - font-size: 16px; - font-style: normal; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-quanxuan:before { - content: "\e62c"; -} - -.icon-caidan:before { - content: "\e610"; -} - -.icon-fanxuan:before { - content: "\e837"; -} - -.icon-pifu:before { - content: "\e668"; -} - -.icon-qingkong:before { - content: "\e63e"; -} - -.icon-sousuo:before { - content: "\e600"; -} - -.icon-danx:before { - content: "\e62b"; -} - -.icon-duox:before { - content: "\e613"; -} - -.icon-close:before { - content: "\e601"; -} - -.icon-expand:before { - content: "\e641"; -} diff --git a/component/pear/css/module/step.css b/component/pear/css/module/step.css deleted file mode 100644 index 6394662..0000000 --- a/component/pear/css/module/step.css +++ /dev/null @@ -1,88 +0,0 @@ -.lay-step { - font-size: 0; - margin: 0 auto; - max-width: 100%; - width: 60%; - padding-left: 15%; - -} - -.step-item { - display: inline-block; - line-height: 35px; - position: relative; - font-size: 15px; - vertical-align: top; -} - -.step-item-tail { - width: 100%; - padding: 0 10px; - position: absolute; - left: 0; - top: 13px; -} - -.step-item-tail i { - display: inline-block; - width: 100%; - height: 3px; - margin-top: 4px; - vertical-align: top; - background: #5FB878; - position: relative; -} - -.step-item-tail .step-item-tail-done { - background: #5FB878; - height: 3px; - margin-top: 4px; -} - -.step-item-head { - position: relative; - display: inline-block; - height: 35px; - width: 35px; - text-align: center; - vertical-align: top; - color: #5FB878; - border: 3px solid #5FB878; - border-radius: 50%; - background: #ffffff; -} - -.step-item-head.step-item-head-active { - background: #5FB878; - color: #ffffff; -} - -.step-item-main { - display: block; - position: relative; - margin-left: -50%; - margin-right: 50%; - padding-left: 26px; - text-align: center; -} - -.step-item-main-title { - font-weight: bolder; - color: #555555; -} - -.step-item-main-desc { - color: #aaaaaa; -} - -.step-item-main-time { - color: #aaaaaa; -} - -.lay-step + [carousel-item]:before { - display: none; -} - -.lay-step + [carousel-item] > * { - background-color: transparent; -} \ No newline at end of file diff --git a/component/pear/css/module/tab.css b/component/pear/css/module/tab.css index 4f9e5a9..f8d3024 100644 --- a/component/pear/css/module/tab.css +++ b/component/pear/css/module/tab.css @@ -54,6 +54,10 @@ display: none; } +.pear-tab .layui-nav-more { + display: none; +} + .pear-tab .layui-tab-title .layui-this:after { display: none; } @@ -95,10 +99,9 @@ height: 40px; line-height: 40px; width: 40px; - text-align: center; - background-color: white; border-top: whitesmoke 1px solid; border-bottom: whitesmoke 1px solid; + text-align: center; } .pear-tab .layui-tab-prev { diff --git a/component/pear/module/area.js b/component/pear/module/area.js deleted file mode 100644 index 604c91e..0000000 --- a/component/pear/module/area.js +++ /dev/null @@ -1,4070 +0,0 @@ -layui.define(['layer', 'form', 'laytpl'], function (exports) { - "use strict"; - - let $ = layui.$ - , form = layui.form - , layarea = { - _id: 0 - , config: {} - , set: function (options) { - let that = this; - that.config = $.extend({}, that.config, options); - return that; - } - , on: function (events, callback) { - return layui.onevent.call(this, 'layarea', events, callback); - } - } - , thisArea = function () { - let that = this; - return { - layarea: function (files) { - that.layarea.call(that, files); - } - , config: that.config - , reload: that.reload - , events: that.events - } - } - , Class = function (options) { - let that = this; - that.config = $.extend({}, { - elem: '', - data: { - province: '', - city: '', - county: '', - provinceCode: 0, - cityCode: 0, - countyCode: 0, - } - }, options); - that.render(); - }; - - let areaList = { - province_list: { - 110000: '北京市', - 120000: '天津市', - 130000: '河北省', - 140000: '山西省', - 150000: '内蒙古自治区', - 210000: '辽宁省', - 220000: '吉林省', - 230000: '黑龙江省', - 310000: '上海市', - 320000: '江苏省', - 330000: '浙江省', - 340000: '安徽省', - 350000: '福建省', - 360000: '江西省', - 370000: '山东省', - 410000: '河南省', - 420000: '湖北省', - 430000: '湖南省', - 440000: '广东省', - 450000: '广西壮族自治区', - 460000: '海南省', - 500000: '重庆市', - 510000: '四川省', - 520000: '贵州省', - 530000: '云南省', - 540000: '西藏自治区', - 610000: '陕西省', - 620000: '甘肃省', - 630000: '青海省', - 640000: '宁夏回族自治区', - 650000: '新疆维吾尔自治区', - 710000: '台湾省', - 810000: '香港特别行政区', - 820000: '澳门特别行政区', - 900000: '海外' - }, - city_list: { - 110100: '北京市', - 120100: '天津市', - 130100: '石家庄市', - 130200: '唐山市', - 130300: '秦皇岛市', - 130400: '邯郸市', - 130500: '邢台市', - 130600: '保定市', - 130700: '张家口市', - 130800: '承德市', - 130900: '沧州市', - 131000: '廊坊市', - 131100: '衡水市', - 139000: '省直辖县', - 140100: '太原市', - 140200: '大同市', - 140300: '阳泉市', - 140400: '长治市', - 140500: '晋城市', - 140600: '朔州市', - 140700: '晋中市', - 140800: '运城市', - 140900: '忻州市', - 141000: '临汾市', - 141100: '吕梁市', - 150100: '呼和浩特市', - 150200: '包头市', - 150300: '乌海市', - 150400: '赤峰市', - 150500: '通辽市', - 150600: '鄂尔多斯市', - 150700: '呼伦贝尔市', - 150800: '巴彦淖尔市', - 150900: '乌兰察布市', - 152200: '兴安盟', - 152500: '锡林郭勒盟', - 152900: '阿拉善盟', - 210100: '沈阳市', - 210200: '大连市', - 210300: '鞍山市', - 210400: '抚顺市', - 210500: '本溪市', - 210600: '丹东市', - 210700: '锦州市', - 210800: '营口市', - 210900: '阜新市', - 211000: '辽阳市', - 211100: '盘锦市', - 211200: '铁岭市', - 211300: '朝阳市', - 211400: '葫芦岛市', - 220100: '长春市', - 220200: '吉林市', - 220300: '四平市', - 220400: '辽源市', - 220500: '通化市', - 220600: '白山市', - 220700: '松原市', - 220800: '白城市', - 222400: '延边朝鲜族自治州', - 230100: '哈尔滨市', - 230200: '齐齐哈尔市', - 230300: '鸡西市', - 230400: '鹤岗市', - 230500: '双鸭山市', - 230600: '大庆市', - 230700: '伊春市', - 230800: '佳木斯市', - 230900: '七台河市', - 231000: '牡丹江市', - 231100: '黑河市', - 231200: '绥化市', - 232700: '大兴安岭地区', - 310100: '上海市', - 320100: '南京市', - 320200: '无锡市', - 320300: '徐州市', - 320400: '常州市', - 320500: '苏州市', - 320600: '南通市', - 320700: '连云港市', - 320800: '淮安市', - 320900: '盐城市', - 321000: '扬州市', - 321100: '镇江市', - 321200: '泰州市', - 321300: '宿迁市', - 330100: '杭州市', - 330200: '宁波市', - 330300: '温州市', - 330400: '嘉兴市', - 330500: '湖州市', - 330600: '绍兴市', - 330700: '金华市', - 330800: '衢州市', - 330900: '舟山市', - 331000: '台州市', - 331100: '丽水市', - 340100: '合肥市', - 340200: '芜湖市', - 340300: '蚌埠市', - 340400: '淮南市', - 340500: '马鞍山市', - 340600: '淮北市', - 340700: '铜陵市', - 340800: '安庆市', - 341000: '黄山市', - 341100: '滁州市', - 341200: '阜阳市', - 341300: '宿州市', - 341500: '六安市', - 341600: '亳州市', - 341700: '池州市', - 341800: '宣城市', - 350100: '福州市', - 350200: '厦门市', - 350300: '莆田市', - 350400: '三明市', - 350500: '泉州市', - 350600: '漳州市', - 350700: '南平市', - 350800: '龙岩市', - 350900: '宁德市', - 360100: '南昌市', - 360200: '景德镇市', - 360300: '萍乡市', - 360400: '九江市', - 360500: '新余市', - 360600: '鹰潭市', - 360700: '赣州市', - 360800: '吉安市', - 360900: '宜春市', - 361000: '抚州市', - 361100: '上饶市', - 370100: '济南市', - 370200: '青岛市', - 370300: '淄博市', - 370400: '枣庄市', - 370500: '东营市', - 370600: '烟台市', - 370700: '潍坊市', - 370800: '济宁市', - 370900: '泰安市', - 371000: '威海市', - 371100: '日照市', - 371200: '莱芜市', - 371300: '临沂市', - 371400: '德州市', - 371500: '聊城市', - 371600: '滨州市', - 371700: '菏泽市', - 410100: '郑州市', - 410200: '开封市', - 410300: '洛阳市', - 410400: '平顶山市', - 410500: '安阳市', - 410600: '鹤壁市', - 410700: '新乡市', - 410800: '焦作市', - 410900: '濮阳市', - 411000: '许昌市', - 411100: '漯河市', - 411200: '三门峡市', - 411300: '南阳市', - 411400: '商丘市', - 411500: '信阳市', - 411600: '周口市', - 411700: '驻马店市', - 419000: '省直辖县', - 420100: '武汉市', - 420200: '黄石市', - 420300: '十堰市', - 420500: '宜昌市', - 420600: '襄阳市', - 420700: '鄂州市', - 420800: '荆门市', - 420900: '孝感市', - 421000: '荆州市', - 421100: '黄冈市', - 421200: '咸宁市', - 421300: '随州市', - 422800: '恩施土家族苗族自治州', - 429000: '省直辖县', - 430100: '长沙市', - 430200: '株洲市', - 430300: '湘潭市', - 430400: '衡阳市', - 430500: '邵阳市', - 430600: '岳阳市', - 430700: '常德市', - 430800: '张家界市', - 430900: '益阳市', - 431000: '郴州市', - 431100: '永州市', - 431200: '怀化市', - 431300: '娄底市', - 433100: '湘西土家族苗族自治州', - 440100: '广州市', - 440200: '韶关市', - 440300: '深圳市', - 440400: '珠海市', - 440500: '汕头市', - 440600: '佛山市', - 440700: '江门市', - 440800: '湛江市', - 440900: '茂名市', - 441200: '肇庆市', - 441300: '惠州市', - 441400: '梅州市', - 441500: '汕尾市', - 441600: '河源市', - 441700: '阳江市', - 441800: '清远市', - 441900: '东莞市', - 442000: '中山市', - 445100: '潮州市', - 445200: '揭阳市', - 445300: '云浮市', - 450100: '南宁市', - 450200: '柳州市', - 450300: '桂林市', - 450400: '梧州市', - 450500: '北海市', - 450600: '防城港市', - 450700: '钦州市', - 450800: '贵港市', - 450900: '玉林市', - 451000: '百色市', - 451100: '贺州市', - 451200: '河池市', - 451300: '来宾市', - 451400: '崇左市', - 460100: '海口市', - 460200: '三亚市', - 460300: '三沙市', - 460400: '儋州市', - 469000: '省直辖县', - 500100: '重庆市', - 500200: '县', - 510100: '成都市', - 510300: '自贡市', - 510400: '攀枝花市', - 510500: '泸州市', - 510600: '德阳市', - 510700: '绵阳市', - 510800: '广元市', - 510900: '遂宁市', - 511000: '内江市', - 511100: '乐山市', - 511300: '南充市', - 511400: '眉山市', - 511500: '宜宾市', - 511600: '广安市', - 511700: '达州市', - 511800: '雅安市', - 511900: '巴中市', - 512000: '资阳市', - 513200: '阿坝藏族羌族自治州', - 513300: '甘孜藏族自治州', - 513400: '凉山彝族自治州', - 520100: '贵阳市', - 520200: '六盘水市', - 520300: '遵义市', - 520400: '安顺市', - 520500: '毕节市', - 520600: '铜仁市', - 522300: '黔西南布依族苗族自治州', - 522600: '黔东南苗族侗族自治州', - 522700: '黔南布依族苗族自治州', - 530100: '昆明市', - 530300: '曲靖市', - 530400: '玉溪市', - 530500: '保山市', - 530600: '昭通市', - 530700: '丽江市', - 530800: '普洱市', - 530900: '临沧市', - 532300: '楚雄彝族自治州', - 532500: '红河哈尼族彝族自治州', - 532600: '文山壮族苗族自治州', - 532800: '西双版纳傣族自治州', - 532900: '大理白族自治州', - 533100: '德宏傣族景颇族自治州', - 533300: '怒江傈僳族自治州', - 533400: '迪庆藏族自治州', - 540100: '拉萨市', - 540200: '日喀则市', - 540300: '昌都市', - 540400: '林芝市', - 540500: '山南市', - 540600: '那曲市', - 542500: '阿里地区', - 610100: '西安市', - 610200: '铜川市', - 610300: '宝鸡市', - 610400: '咸阳市', - 610500: '渭南市', - 610600: '延安市', - 610700: '汉中市', - 610800: '榆林市', - 610900: '安康市', - 611000: '商洛市', - 620100: '兰州市', - 620200: '嘉峪关市', - 620300: '金昌市', - 620400: '白银市', - 620500: '天水市', - 620600: '武威市', - 620700: '张掖市', - 620800: '平凉市', - 620900: '酒泉市', - 621000: '庆阳市', - 621100: '定西市', - 621200: '陇南市', - 622900: '临夏回族自治州', - 623000: '甘南藏族自治州', - 630100: '西宁市', - 630200: '海东市', - 632200: '海北藏族自治州', - 632300: '黄南藏族自治州', - 632500: '海南藏族自治州', - 632600: '果洛藏族自治州', - 632700: '玉树藏族自治州', - 632800: '海西蒙古族藏族自治州', - 640100: '银川市', - 640200: '石嘴山市', - 640300: '吴忠市', - 640400: '固原市', - 640500: '中卫市', - 650100: '乌鲁木齐市', - 650200: '克拉玛依市', - 650400: '吐鲁番市', - 650500: '哈密市', - 652300: '昌吉回族自治州', - 652700: '博尔塔拉蒙古自治州', - 652800: '巴音郭楞蒙古自治州', - 652900: '阿克苏地区', - 653000: '克孜勒苏柯尔克孜自治州', - 653100: '喀什地区', - 653200: '和田地区', - 654000: '伊犁哈萨克自治州', - 654200: '塔城地区', - 654300: '阿勒泰地区', - 659000: '自治区直辖县级行政区划', - 710100: '台北市', - 710200: '高雄市', - 710300: '台南市', - 710400: '台中市', - 710500: '金门县', - 710600: '南投县', - 710700: '基隆市', - 710800: '新竹市', - 710900: '嘉义市', - 711100: '新北市', - 711200: '宜兰县', - 711300: '新竹县', - 711400: '桃园县', - 711500: '苗栗县', - 711700: '彰化县', - 711900: '嘉义县', - 712100: '云林县', - 712400: '屏东县', - 712500: '台东县', - 712600: '花莲县', - 712700: '澎湖县', - 712800: '连江县', - 810100: '香港岛', - 810200: '九龙', - 810300: '新界', - 820100: '澳门半岛', - 820200: '离岛', - 912400: '加拿大', - 941000: '韩国', - 984000: '美国' - }, - county_list: { - 110101: '东城区', - 110102: '西城区', - 110105: '朝阳区', - 110106: '丰台区', - 110107: '石景山区', - 110108: '海淀区', - 110109: '门头沟区', - 110111: '房山区', - 110112: '通州区', - 110113: '顺义区', - 110114: '昌平区', - 110115: '大兴区', - 110116: '怀柔区', - 110117: '平谷区', - 110118: '密云区', - 110119: '延庆区', - 120101: '和平区', - 120102: '河东区', - 120103: '河西区', - 120104: '南开区', - 120105: '河北区', - 120106: '红桥区', - 120110: '东丽区', - 120111: '西青区', - 120112: '津南区', - 120113: '北辰区', - 120114: '武清区', - 120115: '宝坻区', - 120116: '滨海新区', - 120117: '宁河区', - 120118: '静海区', - 120119: '蓟州区', - 130102: '长安区', - 130104: '桥西区', - 130105: '新华区', - 130107: '井陉矿区', - 130108: '裕华区', - 130109: '藁城区', - 130110: '鹿泉区', - 130111: '栾城区', - 130121: '井陉县', - 130123: '正定县', - 130125: '行唐县', - 130126: '灵寿县', - 130127: '高邑县', - 130128: '深泽县', - 130129: '赞皇县', - 130130: '无极县', - 130131: '平山县', - 130132: '元氏县', - 130133: '赵县', - 130181: '辛集市', - 130183: '晋州市', - 130184: '新乐市', - 130202: '路南区', - 130203: '路北区', - 130204: '古冶区', - 130205: '开平区', - 130207: '丰南区', - 130208: '丰润区', - 130209: '曹妃甸区', - 130223: '滦县', - 130224: '滦南县', - 130225: '乐亭县', - 130227: '迁西县', - 130229: '玉田县', - 130281: '遵化市', - 130283: '迁安市', - 130302: '海港区', - 130303: '山海关区', - 130304: '北戴河区', - 130306: '抚宁区', - 130321: '青龙满族自治县', - 130322: '昌黎县', - 130324: '卢龙县', - 130390: '经济技术开发区', - 130402: '邯山区', - 130403: '丛台区', - 130404: '复兴区', - 130406: '峰峰矿区', - 130407: '肥乡区', - 130408: '永年区', - 130423: '临漳县', - 130424: '成安县', - 130425: '大名县', - 130426: '涉县', - 130427: '磁县', - 130430: '邱县', - 130431: '鸡泽县', - 130432: '广平县', - 130433: '馆陶县', - 130434: '魏县', - 130435: '曲周县', - 130481: '武安市', - 130502: '桥东区', - 130503: '桥西区', - 130521: '邢台县', - 130522: '临城县', - 130523: '内丘县', - 130524: '柏乡县', - 130525: '隆尧县', - 130526: '任县', - 130527: '南和县', - 130528: '宁晋县', - 130529: '巨鹿县', - 130530: '新河县', - 130531: '广宗县', - 130532: '平乡县', - 130533: '威县', - 130534: '清河县', - 130535: '临西县', - 130581: '南宫市', - 130582: '沙河市', - 130602: '竞秀区', - 130606: '莲池区', - 130607: '满城区', - 130608: '清苑区', - 130609: '徐水区', - 130623: '涞水县', - 130624: '阜平县', - 130626: '定兴县', - 130627: '唐县', - 130628: '高阳县', - 130629: '容城县', - 130630: '涞源县', - 130631: '望都县', - 130632: '安新县', - 130633: '易县', - 130634: '曲阳县', - 130635: '蠡县', - 130636: '顺平县', - 130637: '博野县', - 130638: '雄县', - 130681: '涿州市', - 130682: '定州市', - 130683: '安国市', - 130684: '高碑店市', - 130702: '桥东区', - 130703: '桥西区', - 130705: '宣化区', - 130706: '下花园区', - 130708: '万全区', - 130709: '崇礼区', - 130722: '张北县', - 130723: '康保县', - 130724: '沽源县', - 130725: '尚义县', - 130726: '蔚县', - 130727: '阳原县', - 130728: '怀安县', - 130730: '怀来县', - 130731: '涿鹿县', - 130732: '赤城县', - 130802: '双桥区', - 130803: '双滦区', - 130804: '鹰手营子矿区', - 130821: '承德县', - 130822: '兴隆县', - 130824: '滦平县', - 130825: '隆化县', - 130826: '丰宁满族自治县', - 130827: '宽城满族自治县', - 130828: '围场满族蒙古族自治县', - 130881: '平泉市', - 130902: '新华区', - 130903: '运河区', - 130921: '沧县', - 130922: '青县', - 130923: '东光县', - 130924: '海兴县', - 130925: '盐山县', - 130926: '肃宁县', - 130927: '南皮县', - 130928: '吴桥县', - 130929: '献县', - 130930: '孟村回族自治县', - 130981: '泊头市', - 130982: '任丘市', - 130983: '黄骅市', - 130984: '河间市', - 131002: '安次区', - 131003: '广阳区', - 131022: '固安县', - 131023: '永清县', - 131024: '香河县', - 131025: '大城县', - 131026: '文安县', - 131028: '大厂回族自治县', - 131081: '霸州市', - 131082: '三河市', - 131090: '开发区', - 131102: '桃城区', - 131103: '冀州区', - 131121: '枣强县', - 131122: '武邑县', - 131123: '武强县', - 131124: '饶阳县', - 131125: '安平县', - 131126: '故城县', - 131127: '景县', - 131128: '阜城县', - 131182: '深州市', - 140105: '小店区', - 140106: '迎泽区', - 140107: '杏花岭区', - 140108: '尖草坪区', - 140109: '万柏林区', - 140110: '晋源区', - 140121: '清徐县', - 140122: '阳曲县', - 140123: '娄烦县', - 140181: '古交市', - 140202: '城区', - 140203: '矿区', - 140211: '南郊区', - 140212: '新荣区', - 140221: '阳高县', - 140222: '天镇县', - 140223: '广灵县', - 140224: '灵丘县', - 140225: '浑源县', - 140226: '左云县', - 140227: '大同县', - 140302: '城区', - 140303: '矿区', - 140311: '郊区', - 140321: '平定县', - 140322: '盂县', - 140402: '城区', - 140411: '郊区', - 140421: '长治县', - 140423: '襄垣县', - 140424: '屯留县', - 140425: '平顺县', - 140426: '黎城县', - 140427: '壶关县', - 140428: '长子县', - 140429: '武乡县', - 140430: '沁县', - 140431: '沁源县', - 140481: '潞城市', - 140502: '城区', - 140521: '沁水县', - 140522: '阳城县', - 140524: '陵川县', - 140525: '泽州县', - 140581: '高平市', - 140602: '朔城区', - 140603: '平鲁区', - 140621: '山阴县', - 140622: '应县', - 140623: '右玉县', - 140624: '怀仁县', - 140702: '榆次区', - 140721: '榆社县', - 140722: '左权县', - 140723: '和顺县', - 140724: '昔阳县', - 140725: '寿阳县', - 140726: '太谷县', - 140727: '祁县', - 140728: '平遥县', - 140729: '灵石县', - 140781: '介休市', - 140802: '盐湖区', - 140821: '临猗县', - 140822: '万荣县', - 140823: '闻喜县', - 140824: '稷山县', - 140825: '新绛县', - 140826: '绛县', - 140827: '垣曲县', - 140828: '夏县', - 140829: '平陆县', - 140830: '芮城县', - 140881: '永济市', - 140882: '河津市', - 140902: '忻府区', - 140921: '定襄县', - 140922: '五台县', - 140923: '代县', - 140924: '繁峙县', - 140925: '宁武县', - 140926: '静乐县', - 140927: '神池县', - 140928: '五寨县', - 140929: '岢岚县', - 140930: '河曲县', - 140931: '保德县', - 140932: '偏关县', - 140981: '原平市', - 141002: '尧都区', - 141021: '曲沃县', - 141022: '翼城县', - 141023: '襄汾县', - 141024: '洪洞县', - 141025: '古县', - 141026: '安泽县', - 141027: '浮山县', - 141028: '吉县', - 141029: '乡宁县', - 141030: '大宁县', - 141031: '隰县', - 141032: '永和县', - 141033: '蒲县', - 141034: '汾西县', - 141081: '侯马市', - 141082: '霍州市', - 141102: '离石区', - 141121: '文水县', - 141122: '交城县', - 141123: '兴县', - 141124: '临县', - 141125: '柳林县', - 141126: '石楼县', - 141127: '岚县', - 141128: '方山县', - 141129: '中阳县', - 141130: '交口县', - 141181: '孝义市', - 141182: '汾阳市', - 150102: '新城区', - 150103: '回民区', - 150104: '玉泉区', - 150105: '赛罕区', - 150121: '土默特左旗', - 150122: '托克托县', - 150123: '和林格尔县', - 150124: '清水河县', - 150125: '武川县', - 150202: '东河区', - 150203: '昆都仑区', - 150204: '青山区', - 150205: '石拐区', - 150206: '白云鄂博矿区', - 150207: '九原区', - 150221: '土默特右旗', - 150222: '固阳县', - 150223: '达尔罕茂明安联合旗', - 150302: '海勃湾区', - 150303: '海南区', - 150304: '乌达区', - 150402: '红山区', - 150403: '元宝山区', - 150404: '松山区', - 150421: '阿鲁科尔沁旗', - 150422: '巴林左旗', - 150423: '巴林右旗', - 150424: '林西县', - 150425: '克什克腾旗', - 150426: '翁牛特旗', - 150428: '喀喇沁旗', - 150429: '宁城县', - 150430: '敖汉旗', - 150502: '科尔沁区', - 150521: '科尔沁左翼中旗', - 150522: '科尔沁左翼后旗', - 150523: '开鲁县', - 150524: '库伦旗', - 150525: '奈曼旗', - 150526: '扎鲁特旗', - 150581: '霍林郭勒市', - 150602: '东胜区', - 150603: '康巴什区', - 150621: '达拉特旗', - 150622: '准格尔旗', - 150623: '鄂托克前旗', - 150624: '鄂托克旗', - 150625: '杭锦旗', - 150626: '乌审旗', - 150627: '伊金霍洛旗', - 150702: '海拉尔区', - 150703: '扎赉诺尔区', - 150721: '阿荣旗', - 150722: '莫力达瓦达斡尔族自治旗', - 150723: '鄂伦春自治旗', - 150724: '鄂温克族自治旗', - 150725: '陈巴尔虎旗', - 150726: '新巴尔虎左旗', - 150727: '新巴尔虎右旗', - 150781: '满洲里市', - 150782: '牙克石市', - 150783: '扎兰屯市', - 150784: '额尔古纳市', - 150785: '根河市', - 150802: '临河区', - 150821: '五原县', - 150822: '磴口县', - 150823: '乌拉特前旗', - 150824: '乌拉特中旗', - 150825: '乌拉特后旗', - 150826: '杭锦后旗', - 150902: '集宁区', - 150921: '卓资县', - 150922: '化德县', - 150923: '商都县', - 150924: '兴和县', - 150925: '凉城县', - 150926: '察哈尔右翼前旗', - 150927: '察哈尔右翼中旗', - 150928: '察哈尔右翼后旗', - 150929: '四子王旗', - 150981: '丰镇市', - 152201: '乌兰浩特市', - 152202: '阿尔山市', - 152221: '科尔沁右翼前旗', - 152222: '科尔沁右翼中旗', - 152223: '扎赉特旗', - 152224: '突泉县', - 152501: '二连浩特市', - 152502: '锡林浩特市', - 152522: '阿巴嘎旗', - 152523: '苏尼特左旗', - 152524: '苏尼特右旗', - 152525: '东乌珠穆沁旗', - 152526: '西乌珠穆沁旗', - 152527: '太仆寺旗', - 152528: '镶黄旗', - 152529: '正镶白旗', - 152530: '正蓝旗', - 152531: '多伦县', - 152921: '阿拉善左旗', - 152922: '阿拉善右旗', - 152923: '额济纳旗', - 210102: '和平区', - 210103: '沈河区', - 210104: '大东区', - 210105: '皇姑区', - 210106: '铁西区', - 210111: '苏家屯区', - 210112: '浑南区', - 210113: '沈北新区', - 210114: '于洪区', - 210115: '辽中区', - 210123: '康平县', - 210124: '法库县', - 210181: '新民市', - 210190: '经济技术开发区', - 210202: '中山区', - 210203: '西岗区', - 210204: '沙河口区', - 210211: '甘井子区', - 210212: '旅顺口区', - 210213: '金州区', - 210214: '普兰店区', - 210224: '长海县', - 210281: '瓦房店市', - 210283: '庄河市', - 210302: '铁东区', - 210303: '铁西区', - 210304: '立山区', - 210311: '千山区', - 210321: '台安县', - 210323: '岫岩满族自治县', - 210381: '海城市', - 210390: '高新区', - 210402: '新抚区', - 210403: '东洲区', - 210404: '望花区', - 210411: '顺城区', - 210421: '抚顺县', - 210422: '新宾满族自治县', - 210423: '清原满族自治县', - 210502: '平山区', - 210503: '溪湖区', - 210504: '明山区', - 210505: '南芬区', - 210521: '本溪满族自治县', - 210522: '桓仁满族自治县', - 210602: '元宝区', - 210603: '振兴区', - 210604: '振安区', - 210624: '宽甸满族自治县', - 210681: '东港市', - 210682: '凤城市', - 210702: '古塔区', - 210703: '凌河区', - 210711: '太和区', - 210726: '黑山县', - 210727: '义县', - 210781: '凌海市', - 210782: '北镇市', - 210793: '经济技术开发区', - 210802: '站前区', - 210803: '西市区', - 210804: '鲅鱼圈区', - 210811: '老边区', - 210881: '盖州市', - 210882: '大石桥市', - 210902: '海州区', - 210903: '新邱区', - 210904: '太平区', - 210905: '清河门区', - 210911: '细河区', - 210921: '阜新蒙古族自治县', - 210922: '彰武县', - 211002: '白塔区', - 211003: '文圣区', - 211004: '宏伟区', - 211005: '弓长岭区', - 211011: '太子河区', - 211021: '辽阳县', - 211081: '灯塔市', - 211102: '双台子区', - 211103: '兴隆台区', - 211104: '大洼区', - 211122: '盘山县', - 211202: '银州区', - 211204: '清河区', - 211221: '铁岭县', - 211223: '西丰县', - 211224: '昌图县', - 211281: '调兵山市', - 211282: '开原市', - 211302: '双塔区', - 211303: '龙城区', - 211321: '朝阳县', - 211322: '建平县', - 211324: '喀喇沁左翼蒙古族自治县', - 211381: '北票市', - 211382: '凌源市', - 211402: '连山区', - 211403: '龙港区', - 211404: '南票区', - 211421: '绥中县', - 211422: '建昌县', - 211481: '兴城市', - 215090: '工业园区', - 220102: '南关区', - 220103: '宽城区', - 220104: '朝阳区', - 220105: '二道区', - 220106: '绿园区', - 220112: '双阳区', - 220113: '九台区', - 220122: '农安县', - 220182: '榆树市', - 220183: '德惠市', - 220192: '经济技术开发区', - 220202: '昌邑区', - 220203: '龙潭区', - 220204: '船营区', - 220211: '丰满区', - 220221: '永吉县', - 220281: '蛟河市', - 220282: '桦甸市', - 220283: '舒兰市', - 220284: '磐石市', - 220302: '铁西区', - 220303: '铁东区', - 220322: '梨树县', - 220323: '伊通满族自治县', - 220381: '公主岭市', - 220382: '双辽市', - 220402: '龙山区', - 220403: '西安区', - 220421: '东丰县', - 220422: '东辽县', - 220502: '东昌区', - 220503: '二道江区', - 220521: '通化县', - 220523: '辉南县', - 220524: '柳河县', - 220581: '梅河口市', - 220582: '集安市', - 220602: '浑江区', - 220605: '江源区', - 220621: '抚松县', - 220622: '靖宇县', - 220623: '长白朝鲜族自治县', - 220681: '临江市', - 220702: '宁江区', - 220721: '前郭尔罗斯蒙古族自治县', - 220722: '长岭县', - 220723: '乾安县', - 220781: '扶余市', - 220802: '洮北区', - 220821: '镇赉县', - 220822: '通榆县', - 220881: '洮南市', - 220882: '大安市', - 221090: '工业园区', - 222401: '延吉市', - 222402: '图们市', - 222403: '敦化市', - 222404: '珲春市', - 222405: '龙井市', - 222406: '和龙市', - 222424: '汪清县', - 222426: '安图县', - 230102: '道里区', - 230103: '南岗区', - 230104: '道外区', - 230108: '平房区', - 230109: '松北区', - 230110: '香坊区', - 230111: '呼兰区', - 230112: '阿城区', - 230113: '双城区', - 230123: '依兰县', - 230124: '方正县', - 230125: '宾县', - 230126: '巴彦县', - 230127: '木兰县', - 230128: '通河县', - 230129: '延寿县', - 230183: '尚志市', - 230184: '五常市', - 230202: '龙沙区', - 230203: '建华区', - 230204: '铁锋区', - 230205: '昂昂溪区', - 230206: '富拉尔基区', - 230207: '碾子山区', - 230208: '梅里斯达斡尔族区', - 230221: '龙江县', - 230223: '依安县', - 230224: '泰来县', - 230225: '甘南县', - 230227: '富裕县', - 230229: '克山县', - 230230: '克东县', - 230231: '拜泉县', - 230281: '讷河市', - 230302: '鸡冠区', - 230303: '恒山区', - 230304: '滴道区', - 230305: '梨树区', - 230306: '城子河区', - 230307: '麻山区', - 230321: '鸡东县', - 230381: '虎林市', - 230382: '密山市', - 230402: '向阳区', - 230403: '工农区', - 230404: '南山区', - 230405: '兴安区', - 230406: '东山区', - 230407: '兴山区', - 230421: '萝北县', - 230422: '绥滨县', - 230502: '尖山区', - 230503: '岭东区', - 230505: '四方台区', - 230506: '宝山区', - 230521: '集贤县', - 230522: '友谊县', - 230523: '宝清县', - 230524: '饶河县', - 230602: '萨尔图区', - 230603: '龙凤区', - 230604: '让胡路区', - 230605: '红岗区', - 230606: '大同区', - 230621: '肇州县', - 230622: '肇源县', - 230623: '林甸县', - 230624: '杜尔伯特蒙古族自治县', - 230702: '伊春区', - 230703: '南岔区', - 230704: '友好区', - 230705: '西林区', - 230706: '翠峦区', - 230707: '新青区', - 230708: '美溪区', - 230709: '金山屯区', - 230710: '五营区', - 230711: '乌马河区', - 230712: '汤旺河区', - 230713: '带岭区', - 230714: '乌伊岭区', - 230715: '红星区', - 230716: '上甘岭区', - 230722: '嘉荫县', - 230781: '铁力市', - 230803: '向阳区', - 230804: '前进区', - 230805: '东风区', - 230811: '郊区', - 230822: '桦南县', - 230826: '桦川县', - 230828: '汤原县', - 230881: '同江市', - 230882: '富锦市', - 230883: '抚远市', - 230902: '新兴区', - 230903: '桃山区', - 230904: '茄子河区', - 230921: '勃利县', - 231002: '东安区', - 231003: '阳明区', - 231004: '爱民区', - 231005: '西安区', - 231025: '林口县', - 231081: '绥芬河市', - 231083: '海林市', - 231084: '宁安市', - 231085: '穆棱市', - 231086: '东宁市', - 231102: '爱辉区', - 231121: '嫩江县', - 231123: '逊克县', - 231124: '孙吴县', - 231181: '北安市', - 231182: '五大连池市', - 231202: '北林区', - 231221: '望奎县', - 231222: '兰西县', - 231223: '青冈县', - 231224: '庆安县', - 231225: '明水县', - 231226: '绥棱县', - 231281: '安达市', - 231282: '肇东市', - 231283: '海伦市', - 232721: '呼玛县', - 232722: '塔河县', - 232723: '漠河县', - 232790: '松岭区', - 232791: '呼中区', - 232792: '加格达奇区', - 232793: '新林区', - 310101: '黄浦区', - 310104: '徐汇区', - 310105: '长宁区', - 310106: '静安区', - 310107: '普陀区', - 310109: '虹口区', - 310110: '杨浦区', - 310112: '闵行区', - 310113: '宝山区', - 310114: '嘉定区', - 310115: '浦东新区', - 310116: '金山区', - 310117: '松江区', - 310118: '青浦区', - 310120: '奉贤区', - 310151: '崇明区', - 320102: '玄武区', - 320104: '秦淮区', - 320105: '建邺区', - 320106: '鼓楼区', - 320111: '浦口区', - 320113: '栖霞区', - 320114: '雨花台区', - 320115: '江宁区', - 320116: '六合区', - 320117: '溧水区', - 320118: '高淳区', - 320205: '锡山区', - 320206: '惠山区', - 320211: '滨湖区', - 320213: '梁溪区', - 320214: '新吴区', - 320281: '江阴市', - 320282: '宜兴市', - 320302: '鼓楼区', - 320303: '云龙区', - 320305: '贾汪区', - 320311: '泉山区', - 320312: '铜山区', - 320321: '丰县', - 320322: '沛县', - 320324: '睢宁县', - 320381: '新沂市', - 320382: '邳州市', - 320391: '工业园区', - 320402: '天宁区', - 320404: '钟楼区', - 320411: '新北区', - 320412: '武进区', - 320413: '金坛区', - 320481: '溧阳市', - 320505: '虎丘区', - 320506: '吴中区', - 320507: '相城区', - 320508: '姑苏区', - 320509: '吴江区', - 320581: '常熟市', - 320582: '张家港市', - 320583: '昆山市', - 320585: '太仓市', - 320590: '工业园区', - 320591: '高新区', - 320602: '崇川区', - 320611: '港闸区', - 320612: '通州区', - 320621: '海安县', - 320623: '如东县', - 320681: '启东市', - 320682: '如皋市', - 320684: '海门市', - 320691: '高新区', - 320703: '连云区', - 320706: '海州区', - 320707: '赣榆区', - 320722: '东海县', - 320723: '灌云县', - 320724: '灌南县', - 320803: '淮安区', - 320804: '淮阴区', - 320812: '清江浦区', - 320813: '洪泽区', - 320826: '涟水县', - 320830: '盱眙县', - 320831: '金湖县', - 320890: '经济开发区', - 320902: '亭湖区', - 320903: '盐都区', - 320904: '大丰区', - 320921: '响水县', - 320922: '滨海县', - 320923: '阜宁县', - 320924: '射阳县', - 320925: '建湖县', - 320981: '东台市', - 321002: '广陵区', - 321003: '邗江区', - 321012: '江都区', - 321023: '宝应县', - 321081: '仪征市', - 321084: '高邮市', - 321090: '经济开发区', - 321102: '京口区', - 321111: '润州区', - 321112: '丹徒区', - 321181: '丹阳市', - 321182: '扬中市', - 321183: '句容市', - 321202: '海陵区', - 321203: '高港区', - 321204: '姜堰区', - 321281: '兴化市', - 321282: '靖江市', - 321283: '泰兴市', - 321302: '宿城区', - 321311: '宿豫区', - 321322: '沭阳县', - 321323: '泗阳县', - 321324: '泗洪县', - 330102: '上城区', - 330103: '下城区', - 330104: '江干区', - 330105: '拱墅区', - 330106: '西湖区', - 330108: '滨江区', - 330109: '萧山区', - 330110: '余杭区', - 330111: '富阳区', - 330112: '临安区', - 330122: '桐庐县', - 330127: '淳安县', - 330182: '建德市', - 330203: '海曙区', - 330205: '江北区', - 330206: '北仑区', - 330211: '镇海区', - 330212: '鄞州区', - 330213: '奉化区', - 330225: '象山县', - 330226: '宁海县', - 330281: '余姚市', - 330282: '慈溪市', - 330302: '鹿城区', - 330303: '龙湾区', - 330304: '瓯海区', - 330305: '洞头区', - 330324: '永嘉县', - 330326: '平阳县', - 330327: '苍南县', - 330328: '文成县', - 330329: '泰顺县', - 330381: '瑞安市', - 330382: '乐清市', - 330402: '南湖区', - 330411: '秀洲区', - 330421: '嘉善县', - 330424: '海盐县', - 330481: '海宁市', - 330482: '平湖市', - 330483: '桐乡市', - 330502: '吴兴区', - 330503: '南浔区', - 330521: '德清县', - 330522: '长兴县', - 330523: '安吉县', - 330602: '越城区', - 330603: '柯桥区', - 330604: '上虞区', - 330624: '新昌县', - 330681: '诸暨市', - 330683: '嵊州市', - 330702: '婺城区', - 330703: '金东区', - 330723: '武义县', - 330726: '浦江县', - 330727: '磐安县', - 330781: '兰溪市', - 330782: '义乌市', - 330783: '东阳市', - 330784: '永康市', - 330802: '柯城区', - 330803: '衢江区', - 330822: '常山县', - 330824: '开化县', - 330825: '龙游县', - 330881: '江山市', - 330902: '定海区', - 330903: '普陀区', - 330921: '岱山县', - 330922: '嵊泗县', - 331002: '椒江区', - 331003: '黄岩区', - 331004: '路桥区', - 331022: '三门县', - 331023: '天台县', - 331024: '仙居县', - 331081: '温岭市', - 331082: '临海市', - 331083: '玉环市', - 331102: '莲都区', - 331121: '青田县', - 331122: '缙云县', - 331123: '遂昌县', - 331124: '松阳县', - 331125: '云和县', - 331126: '庆元县', - 331127: '景宁畲族自治县', - 331181: '龙泉市', - 340102: '瑶海区', - 340103: '庐阳区', - 340104: '蜀山区', - 340111: '包河区', - 340121: '长丰县', - 340122: '肥东县', - 340123: '肥西县', - 340124: '庐江县', - 340181: '巢湖市', - 340190: '高新技术开发区', - 340191: '经济技术开发区', - 340202: '镜湖区', - 340203: '弋江区', - 340207: '鸠江区', - 340208: '三山区', - 340221: '芜湖县', - 340222: '繁昌县', - 340223: '南陵县', - 340225: '无为县', - 340302: '龙子湖区', - 340303: '蚌山区', - 340304: '禹会区', - 340311: '淮上区', - 340321: '怀远县', - 340322: '五河县', - 340323: '固镇县', - 340402: '大通区', - 340403: '田家庵区', - 340404: '谢家集区', - 340405: '八公山区', - 340406: '潘集区', - 340421: '凤台县', - 340422: '寿县', - 340503: '花山区', - 340504: '雨山区', - 340506: '博望区', - 340521: '当涂县', - 340522: '含山县', - 340523: '和县', - 340602: '杜集区', - 340603: '相山区', - 340604: '烈山区', - 340621: '濉溪县', - 340705: '铜官区', - 340706: '义安区', - 340711: '郊区', - 340722: '枞阳县', - 340802: '迎江区', - 340803: '大观区', - 340811: '宜秀区', - 340822: '怀宁县', - 340824: '潜山县', - 340825: '太湖县', - 340826: '宿松县', - 340827: '望江县', - 340828: '岳西县', - 340881: '桐城市', - 341002: '屯溪区', - 341003: '黄山区', - 341004: '徽州区', - 341021: '歙县', - 341022: '休宁县', - 341023: '黟县', - 341024: '祁门县', - 341102: '琅琊区', - 341103: '南谯区', - 341122: '来安县', - 341124: '全椒县', - 341125: '定远县', - 341126: '凤阳县', - 341181: '天长市', - 341182: '明光市', - 341202: '颍州区', - 341203: '颍东区', - 341204: '颍泉区', - 341221: '临泉县', - 341222: '太和县', - 341225: '阜南县', - 341226: '颍上县', - 341282: '界首市', - 341302: '埇桥区', - 341321: '砀山县', - 341322: '萧县', - 341323: '灵璧县', - 341324: '泗县', - 341390: '经济开发区', - 341502: '金安区', - 341503: '裕安区', - 341504: '叶集区', - 341522: '霍邱县', - 341523: '舒城县', - 341524: '金寨县', - 341525: '霍山县', - 341602: '谯城区', - 341621: '涡阳县', - 341622: '蒙城县', - 341623: '利辛县', - 341702: '贵池区', - 341721: '东至县', - 341722: '石台县', - 341723: '青阳县', - 341802: '宣州区', - 341821: '郎溪县', - 341822: '广德县', - 341823: '泾县', - 341824: '绩溪县', - 341825: '旌德县', - 341881: '宁国市', - 350102: '鼓楼区', - 350103: '台江区', - 350104: '仓山区', - 350105: '马尾区', - 350111: '晋安区', - 350112: '长乐区', - 350121: '闽侯县', - 350122: '连江县', - 350123: '罗源县', - 350124: '闽清县', - 350125: '永泰县', - 350128: '平潭县', - 350181: '福清市', - 350203: '思明区', - 350205: '海沧区', - 350206: '湖里区', - 350211: '集美区', - 350212: '同安区', - 350213: '翔安区', - 350302: '城厢区', - 350303: '涵江区', - 350304: '荔城区', - 350305: '秀屿区', - 350322: '仙游县', - 350402: '梅列区', - 350403: '三元区', - 350421: '明溪县', - 350423: '清流县', - 350424: '宁化县', - 350425: '大田县', - 350426: '尤溪县', - 350427: '沙县', - 350428: '将乐县', - 350429: '泰宁县', - 350430: '建宁县', - 350481: '永安市', - 350502: '鲤城区', - 350503: '丰泽区', - 350504: '洛江区', - 350505: '泉港区', - 350521: '惠安县', - 350524: '安溪县', - 350525: '永春县', - 350526: '德化县', - 350527: '金门县', - 350581: '石狮市', - 350582: '晋江市', - 350583: '南安市', - 350602: '芗城区', - 350603: '龙文区', - 350622: '云霄县', - 350623: '漳浦县', - 350624: '诏安县', - 350625: '长泰县', - 350626: '东山县', - 350627: '南靖县', - 350628: '平和县', - 350629: '华安县', - 350681: '龙海市', - 350702: '延平区', - 350703: '建阳区', - 350721: '顺昌县', - 350722: '浦城县', - 350723: '光泽县', - 350724: '松溪县', - 350725: '政和县', - 350781: '邵武市', - 350782: '武夷山市', - 350783: '建瓯市', - 350802: '新罗区', - 350803: '永定区', - 350821: '长汀县', - 350823: '上杭县', - 350824: '武平县', - 350825: '连城县', - 350881: '漳平市', - 350902: '蕉城区', - 350921: '霞浦县', - 350922: '古田县', - 350923: '屏南县', - 350924: '寿宁县', - 350925: '周宁县', - 350926: '柘荣县', - 350981: '福安市', - 350982: '福鼎市', - 360102: '东湖区', - 360103: '西湖区', - 360104: '青云谱区', - 360105: '湾里区', - 360111: '青山湖区', - 360112: '新建区', - 360121: '南昌县', - 360123: '安义县', - 360124: '进贤县', - 360190: '经济技术开发区', - 360192: '高新区', - 360202: '昌江区', - 360203: '珠山区', - 360222: '浮梁县', - 360281: '乐平市', - 360302: '安源区', - 360313: '湘东区', - 360321: '莲花县', - 360322: '上栗县', - 360323: '芦溪县', - 360402: '濂溪区', - 360403: '浔阳区', - 360404: '柴桑区', - 360423: '武宁县', - 360424: '修水县', - 360425: '永修县', - 360426: '德安县', - 360428: '都昌县', - 360429: '湖口县', - 360430: '彭泽县', - 360481: '瑞昌市', - 360482: '共青城市', - 360483: '庐山市', - 360490: '经济技术开发区', - 360502: '渝水区', - 360521: '分宜县', - 360602: '月湖区', - 360622: '余江县', - 360681: '贵溪市', - 360702: '章贡区', - 360703: '南康区', - 360704: '赣县区', - 360722: '信丰县', - 360723: '大余县', - 360724: '上犹县', - 360725: '崇义县', - 360726: '安远县', - 360727: '龙南县', - 360728: '定南县', - 360729: '全南县', - 360730: '宁都县', - 360731: '于都县', - 360732: '兴国县', - 360733: '会昌县', - 360734: '寻乌县', - 360735: '石城县', - 360781: '瑞金市', - 360802: '吉州区', - 360803: '青原区', - 360821: '吉安县', - 360822: '吉水县', - 360823: '峡江县', - 360824: '新干县', - 360825: '永丰县', - 360826: '泰和县', - 360827: '遂川县', - 360828: '万安县', - 360829: '安福县', - 360830: '永新县', - 360881: '井冈山市', - 360902: '袁州区', - 360921: '奉新县', - 360922: '万载县', - 360923: '上高县', - 360924: '宜丰县', - 360925: '靖安县', - 360926: '铜鼓县', - 360981: '丰城市', - 360982: '樟树市', - 360983: '高安市', - 361002: '临川区', - 361003: '东乡区', - 361021: '南城县', - 361022: '黎川县', - 361023: '南丰县', - 361024: '崇仁县', - 361025: '乐安县', - 361026: '宜黄县', - 361027: '金溪县', - 361028: '资溪县', - 361030: '广昌县', - 361102: '信州区', - 361103: '广丰区', - 361121: '上饶县', - 361123: '玉山县', - 361124: '铅山县', - 361125: '横峰县', - 361126: '弋阳县', - 361127: '余干县', - 361128: '鄱阳县', - 361129: '万年县', - 361130: '婺源县', - 361181: '德兴市', - 370102: '历下区', - 370103: '市中区', - 370104: '槐荫区', - 370105: '天桥区', - 370112: '历城区', - 370113: '长清区', - 370114: '章丘区', - 370124: '平阴县', - 370125: '济阳县', - 370126: '商河县', - 370190: '高新区', - 370202: '市南区', - 370203: '市北区', - 370211: '黄岛区', - 370212: '崂山区', - 370213: '李沧区', - 370214: '城阳区', - 370215: '即墨区', - 370281: '胶州市', - 370283: '平度市', - 370285: '莱西市', - 370290: '开发区', - 370302: '淄川区', - 370303: '张店区', - 370304: '博山区', - 370305: '临淄区', - 370306: '周村区', - 370321: '桓台县', - 370322: '高青县', - 370323: '沂源县', - 370402: '市中区', - 370403: '薛城区', - 370404: '峄城区', - 370405: '台儿庄区', - 370406: '山亭区', - 370481: '滕州市', - 370502: '东营区', - 370503: '河口区', - 370505: '垦利区', - 370522: '利津县', - 370523: '广饶县', - 370602: '芝罘区', - 370611: '福山区', - 370612: '牟平区', - 370613: '莱山区', - 370634: '长岛县', - 370681: '龙口市', - 370682: '莱阳市', - 370683: '莱州市', - 370684: '蓬莱市', - 370685: '招远市', - 370686: '栖霞市', - 370687: '海阳市', - 370690: '开发区', - 370702: '潍城区', - 370703: '寒亭区', - 370704: '坊子区', - 370705: '奎文区', - 370724: '临朐县', - 370725: '昌乐县', - 370781: '青州市', - 370782: '诸城市', - 370783: '寿光市', - 370784: '安丘市', - 370785: '高密市', - 370786: '昌邑市', - 370790: '开发区', - 370791: '高新区', - 370811: '任城区', - 370812: '兖州区', - 370826: '微山县', - 370827: '鱼台县', - 370828: '金乡县', - 370829: '嘉祥县', - 370830: '汶上县', - 370831: '泗水县', - 370832: '梁山县', - 370881: '曲阜市', - 370883: '邹城市', - 370890: '高新区', - 370902: '泰山区', - 370911: '岱岳区', - 370921: '宁阳县', - 370923: '东平县', - 370982: '新泰市', - 370983: '肥城市', - 371002: '环翠区', - 371003: '文登区', - 371082: '荣成市', - 371083: '乳山市', - 371091: '经济技术开发区', - 371102: '东港区', - 371103: '岚山区', - 371121: '五莲县', - 371122: '莒县', - 371202: '莱城区', - 371203: '钢城区', - 371302: '兰山区', - 371311: '罗庄区', - 371312: '河东区', - 371321: '沂南县', - 371322: '郯城县', - 371323: '沂水县', - 371324: '兰陵县', - 371325: '费县', - 371326: '平邑县', - 371327: '莒南县', - 371328: '蒙阴县', - 371329: '临沭县', - 371402: '德城区', - 371403: '陵城区', - 371422: '宁津县', - 371423: '庆云县', - 371424: '临邑县', - 371425: '齐河县', - 371426: '平原县', - 371427: '夏津县', - 371428: '武城县', - 371481: '乐陵市', - 371482: '禹城市', - 371502: '东昌府区', - 371521: '阳谷县', - 371522: '莘县', - 371523: '茌平县', - 371524: '东阿县', - 371525: '冠县', - 371526: '高唐县', - 371581: '临清市', - 371602: '滨城区', - 371603: '沾化区', - 371621: '惠民县', - 371622: '阳信县', - 371623: '无棣县', - 371625: '博兴县', - 371626: '邹平县', - 371702: '牡丹区', - 371703: '定陶区', - 371721: '曹县', - 371722: '单县', - 371723: '成武县', - 371724: '巨野县', - 371725: '郓城县', - 371726: '鄄城县', - 371728: '东明县', - 410102: '中原区', - 410103: '二七区', - 410104: '管城回族区', - 410105: '金水区', - 410106: '上街区', - 410108: '惠济区', - 410122: '中牟县', - 410181: '巩义市', - 410182: '荥阳市', - 410183: '新密市', - 410184: '新郑市', - 410185: '登封市', - 410190: '高新技术开发区', - 410191: '经济技术开发区', - 410202: '龙亭区', - 410203: '顺河回族区', - 410204: '鼓楼区', - 410205: '禹王台区', - 410212: '祥符区', - 410221: '杞县', - 410222: '通许县', - 410223: '尉氏县', - 410225: '兰考县', - 410302: '老城区', - 410303: '西工区', - 410304: '瀍河回族区', - 410305: '涧西区', - 410306: '吉利区', - 410311: '洛龙区', - 410322: '孟津县', - 410323: '新安县', - 410324: '栾川县', - 410325: '嵩县', - 410326: '汝阳县', - 410327: '宜阳县', - 410328: '洛宁县', - 410329: '伊川县', - 410381: '偃师市', - 410402: '新华区', - 410403: '卫东区', - 410404: '石龙区', - 410411: '湛河区', - 410421: '宝丰县', - 410422: '叶县', - 410423: '鲁山县', - 410425: '郏县', - 410481: '舞钢市', - 410482: '汝州市', - 410502: '文峰区', - 410503: '北关区', - 410505: '殷都区', - 410506: '龙安区', - 410522: '安阳县', - 410523: '汤阴县', - 410526: '滑县', - 410527: '内黄县', - 410581: '林州市', - 410590: '开发区', - 410602: '鹤山区', - 410603: '山城区', - 410611: '淇滨区', - 410621: '浚县', - 410622: '淇县', - 410702: '红旗区', - 410703: '卫滨区', - 410704: '凤泉区', - 410711: '牧野区', - 410721: '新乡县', - 410724: '获嘉县', - 410725: '原阳县', - 410726: '延津县', - 410727: '封丘县', - 410728: '长垣县', - 410781: '卫辉市', - 410782: '辉县市', - 410802: '解放区', - 410803: '中站区', - 410804: '马村区', - 410811: '山阳区', - 410821: '修武县', - 410822: '博爱县', - 410823: '武陟县', - 410825: '温县', - 410882: '沁阳市', - 410883: '孟州市', - 410902: '华龙区', - 410922: '清丰县', - 410923: '南乐县', - 410926: '范县', - 410927: '台前县', - 410928: '濮阳县', - 411002: '魏都区', - 411003: '建安区', - 411024: '鄢陵县', - 411025: '襄城县', - 411081: '禹州市', - 411082: '长葛市', - 411102: '源汇区', - 411103: '郾城区', - 411104: '召陵区', - 411121: '舞阳县', - 411122: '临颍县', - 411202: '湖滨区', - 411203: '陕州区', - 411221: '渑池县', - 411224: '卢氏县', - 411281: '义马市', - 411282: '灵宝市', - 411302: '宛城区', - 411303: '卧龙区', - 411321: '南召县', - 411322: '方城县', - 411323: '西峡县', - 411324: '镇平县', - 411325: '内乡县', - 411326: '淅川县', - 411327: '社旗县', - 411328: '唐河县', - 411329: '新野县', - 411330: '桐柏县', - 411381: '邓州市', - 411402: '梁园区', - 411403: '睢阳区', - 411421: '民权县', - 411422: '睢县', - 411423: '宁陵县', - 411424: '柘城县', - 411425: '虞城县', - 411426: '夏邑县', - 411481: '永城市', - 411502: '浉河区', - 411503: '平桥区', - 411521: '罗山县', - 411522: '光山县', - 411523: '新县', - 411524: '商城县', - 411525: '固始县', - 411526: '潢川县', - 411527: '淮滨县', - 411528: '息县', - 411602: '川汇区', - 411621: '扶沟县', - 411622: '西华县', - 411623: '商水县', - 411624: '沈丘县', - 411625: '郸城县', - 411626: '淮阳县', - 411627: '太康县', - 411628: '鹿邑县', - 411681: '项城市', - 411690: '经济开发区', - 411702: '驿城区', - 411721: '西平县', - 411722: '上蔡县', - 411723: '平舆县', - 411724: '正阳县', - 411725: '确山县', - 411726: '泌阳县', - 411727: '汝南县', - 411728: '遂平县', - 411729: '新蔡县', - 419001: '济源市', - 420102: '江岸区', - 420103: '江汉区', - 420104: '硚口区', - 420105: '汉阳区', - 420106: '武昌区', - 420107: '青山区', - 420111: '洪山区', - 420112: '东西湖区', - 420113: '汉南区', - 420114: '蔡甸区', - 420115: '江夏区', - 420116: '黄陂区', - 420117: '新洲区', - 420202: '黄石港区', - 420203: '西塞山区', - 420204: '下陆区', - 420205: '铁山区', - 420222: '阳新县', - 420281: '大冶市', - 420302: '茅箭区', - 420303: '张湾区', - 420304: '郧阳区', - 420322: '郧西县', - 420323: '竹山县', - 420324: '竹溪县', - 420325: '房县', - 420381: '丹江口市', - 420502: '西陵区', - 420503: '伍家岗区', - 420504: '点军区', - 420505: '猇亭区', - 420506: '夷陵区', - 420525: '远安县', - 420526: '兴山县', - 420527: '秭归县', - 420528: '长阳土家族自治县', - 420529: '五峰土家族自治县', - 420581: '宜都市', - 420582: '当阳市', - 420583: '枝江市', - 420590: '经济开发区', - 420602: '襄城区', - 420606: '樊城区', - 420607: '襄州区', - 420624: '南漳县', - 420625: '谷城县', - 420626: '保康县', - 420682: '老河口市', - 420683: '枣阳市', - 420684: '宜城市', - 420702: '梁子湖区', - 420703: '华容区', - 420704: '鄂城区', - 420802: '东宝区', - 420804: '掇刀区', - 420821: '京山县', - 420822: '沙洋县', - 420881: '钟祥市', - 420902: '孝南区', - 420921: '孝昌县', - 420922: '大悟县', - 420923: '云梦县', - 420981: '应城市', - 420982: '安陆市', - 420984: '汉川市', - 421002: '沙市区', - 421003: '荆州区', - 421022: '公安县', - 421023: '监利县', - 421024: '江陵县', - 421081: '石首市', - 421083: '洪湖市', - 421087: '松滋市', - 421102: '黄州区', - 421121: '团风县', - 421122: '红安县', - 421123: '罗田县', - 421124: '英山县', - 421125: '浠水县', - 421126: '蕲春县', - 421127: '黄梅县', - 421181: '麻城市', - 421182: '武穴市', - 421202: '咸安区', - 421221: '嘉鱼县', - 421222: '通城县', - 421223: '崇阳县', - 421224: '通山县', - 421281: '赤壁市', - 421303: '曾都区', - 421321: '随县', - 421381: '广水市', - 422801: '恩施市', - 422802: '利川市', - 422822: '建始县', - 422823: '巴东县', - 422825: '宣恩县', - 422826: '咸丰县', - 422827: '来凤县', - 422828: '鹤峰县', - 429004: '仙桃市', - 429005: '潜江市', - 429006: '天门市', - 429021: '神农架林区', - 430102: '芙蓉区', - 430103: '天心区', - 430104: '岳麓区', - 430105: '开福区', - 430111: '雨花区', - 430112: '望城区', - 430121: '长沙县', - 430181: '浏阳市', - 430182: '宁乡市', - 430202: '荷塘区', - 430203: '芦淞区', - 430204: '石峰区', - 430211: '天元区', - 430221: '株洲县', - 430223: '攸县', - 430224: '茶陵县', - 430225: '炎陵县', - 430281: '醴陵市', - 430302: '雨湖区', - 430304: '岳塘区', - 430321: '湘潭县', - 430381: '湘乡市', - 430382: '韶山市', - 430405: '珠晖区', - 430406: '雁峰区', - 430407: '石鼓区', - 430408: '蒸湘区', - 430412: '南岳区', - 430421: '衡阳县', - 430422: '衡南县', - 430423: '衡山县', - 430424: '衡东县', - 430426: '祁东县', - 430481: '耒阳市', - 430482: '常宁市', - 430502: '双清区', - 430503: '大祥区', - 430511: '北塔区', - 430521: '邵东县', - 430522: '新邵县', - 430523: '邵阳县', - 430524: '隆回县', - 430525: '洞口县', - 430527: '绥宁县', - 430528: '新宁县', - 430529: '城步苗族自治县', - 430581: '武冈市', - 430602: '岳阳楼区', - 430603: '云溪区', - 430611: '君山区', - 430621: '岳阳县', - 430623: '华容县', - 430624: '湘阴县', - 430626: '平江县', - 430681: '汨罗市', - 430682: '临湘市', - 430702: '武陵区', - 430703: '鼎城区', - 430721: '安乡县', - 430722: '汉寿县', - 430723: '澧县', - 430724: '临澧县', - 430725: '桃源县', - 430726: '石门县', - 430781: '津市市', - 430802: '永定区', - 430811: '武陵源区', - 430821: '慈利县', - 430822: '桑植县', - 430902: '资阳区', - 430903: '赫山区', - 430921: '南县', - 430922: '桃江县', - 430923: '安化县', - 430981: '沅江市', - 431002: '北湖区', - 431003: '苏仙区', - 431021: '桂阳县', - 431022: '宜章县', - 431023: '永兴县', - 431024: '嘉禾县', - 431025: '临武县', - 431026: '汝城县', - 431027: '桂东县', - 431028: '安仁县', - 431081: '资兴市', - 431102: '零陵区', - 431103: '冷水滩区', - 431121: '祁阳县', - 431122: '东安县', - 431123: '双牌县', - 431124: '道县', - 431125: '江永县', - 431126: '宁远县', - 431127: '蓝山县', - 431128: '新田县', - 431129: '江华瑶族自治县', - 431202: '鹤城区', - 431221: '中方县', - 431222: '沅陵县', - 431223: '辰溪县', - 431224: '溆浦县', - 431225: '会同县', - 431226: '麻阳苗族自治县', - 431227: '新晃侗族自治县', - 431228: '芷江侗族自治县', - 431229: '靖州苗族侗族自治县', - 431230: '通道侗族自治县', - 431281: '洪江市', - 431302: '娄星区', - 431321: '双峰县', - 431322: '新化县', - 431381: '冷水江市', - 431382: '涟源市', - 433101: '吉首市', - 433122: '泸溪县', - 433123: '凤凰县', - 433124: '花垣县', - 433125: '保靖县', - 433126: '古丈县', - 433127: '永顺县', - 433130: '龙山县', - 440103: '荔湾区', - 440104: '越秀区', - 440105: '海珠区', - 440106: '天河区', - 440111: '白云区', - 440112: '黄埔区', - 440113: '番禺区', - 440114: '花都区', - 440115: '南沙区', - 440117: '从化区', - 440118: '增城区', - 440203: '武江区', - 440204: '浈江区', - 440205: '曲江区', - 440222: '始兴县', - 440224: '仁化县', - 440229: '翁源县', - 440232: '乳源瑶族自治县', - 440233: '新丰县', - 440281: '乐昌市', - 440282: '南雄市', - 440303: '罗湖区', - 440304: '福田区', - 440305: '南山区', - 440306: '宝安区', - 440307: '龙岗区', - 440308: '盐田区', - 440309: '龙华区', - 440310: '坪山区', - 440402: '香洲区', - 440403: '斗门区', - 440404: '金湾区', - 440507: '龙湖区', - 440511: '金平区', - 440512: '濠江区', - 440513: '潮阳区', - 440514: '潮南区', - 440515: '澄海区', - 440523: '南澳县', - 440604: '禅城区', - 440605: '南海区', - 440606: '顺德区', - 440607: '三水区', - 440608: '高明区', - 440703: '蓬江区', - 440704: '江海区', - 440705: '新会区', - 440781: '台山市', - 440783: '开平市', - 440784: '鹤山市', - 440785: '恩平市', - 440802: '赤坎区', - 440803: '霞山区', - 440804: '坡头区', - 440811: '麻章区', - 440823: '遂溪县', - 440825: '徐闻县', - 440881: '廉江市', - 440882: '雷州市', - 440883: '吴川市', - 440890: '经济技术开发区', - 440902: '茂南区', - 440904: '电白区', - 440981: '高州市', - 440982: '化州市', - 440983: '信宜市', - 441202: '端州区', - 441203: '鼎湖区', - 441204: '高要区', - 441223: '广宁县', - 441224: '怀集县', - 441225: '封开县', - 441226: '德庆县', - 441284: '四会市', - 441302: '惠城区', - 441303: '惠阳区', - 441322: '博罗县', - 441323: '惠东县', - 441324: '龙门县', - 441402: '梅江区', - 441403: '梅县区', - 441422: '大埔县', - 441423: '丰顺县', - 441424: '五华县', - 441426: '平远县', - 441427: '蕉岭县', - 441481: '兴宁市', - 441502: '城区', - 441521: '海丰县', - 441523: '陆河县', - 441581: '陆丰市', - 441602: '源城区', - 441621: '紫金县', - 441622: '龙川县', - 441623: '连平县', - 441624: '和平县', - 441625: '东源县', - 441702: '江城区', - 441704: '阳东区', - 441721: '阳西县', - 441781: '阳春市', - 441802: '清城区', - 441803: '清新区', - 441821: '佛冈县', - 441823: '阳山县', - 441825: '连山壮族瑶族自治县', - 441826: '连南瑶族自治县', - 441881: '英德市', - 441882: '连州市', - 441901: '中堂镇', - 441903: '南城区', - 441904: '长安镇', - 441905: '东坑镇', - 441906: '樟木头镇', - 441907: '莞城区', - 441908: '石龙镇', - 441909: '桥头镇', - 441910: '万江区', - 441911: '麻涌镇', - 441912: '虎门镇', - 441913: '谢岗镇', - 441914: '石碣镇', - 441915: '茶山镇', - 441916: '东城区', - 441917: '洪梅镇', - 441918: '道滘镇', - 441919: '高埗镇', - 441920: '企石镇', - 441921: '凤岗镇', - 441922: '大岭山镇', - 441923: '松山湖', - 441924: '清溪镇', - 441925: '望牛墩镇', - 441926: '厚街镇', - 441927: '常平镇', - 441928: '寮步镇', - 441929: '石排镇', - 441930: '横沥镇', - 441931: '塘厦镇', - 441932: '黄江镇', - 441933: '大朗镇', - 441990: '沙田镇', - 442001: '南头镇', - 442002: '神湾镇', - 442003: '东凤镇', - 442004: '五桂山镇', - 442005: '黄圃镇', - 442006: '小榄镇', - 442007: '石岐区街道', - 442008: '横栏镇', - 442009: '三角镇', - 442010: '三乡镇', - 442011: '港口镇', - 442012: '沙溪镇', - 442013: '板芙镇', - 442014: '沙朗镇', - 442015: '东升镇', - 442016: '阜沙镇', - 442017: '民众镇', - 442018: '东区街道', - 442019: '火炬开发区', - 442020: '西区街道', - 442021: '南区街道', - 442022: '古镇', - 442023: '坦洲镇', - 442024: '大涌镇', - 442025: '南朗镇', - 445102: '湘桥区', - 445103: '潮安区', - 445122: '饶平县', - 445202: '榕城区', - 445203: '揭东区', - 445222: '揭西县', - 445224: '惠来县', - 445281: '普宁市', - 445302: '云城区', - 445303: '云安区', - 445321: '新兴县', - 445322: '郁南县', - 445381: '罗定市', - 450102: '兴宁区', - 450103: '青秀区', - 450105: '江南区', - 450107: '西乡塘区', - 450108: '良庆区', - 450109: '邕宁区', - 450110: '武鸣区', - 450123: '隆安县', - 450124: '马山县', - 450125: '上林县', - 450126: '宾阳县', - 450127: '横县', - 450202: '城中区', - 450203: '鱼峰区', - 450204: '柳南区', - 450205: '柳北区', - 450206: '柳江区', - 450222: '柳城县', - 450223: '鹿寨县', - 450224: '融安县', - 450225: '融水苗族自治县', - 450226: '三江侗族自治县', - 450302: '秀峰区', - 450303: '叠彩区', - 450304: '象山区', - 450305: '七星区', - 450311: '雁山区', - 450312: '临桂区', - 450321: '阳朔县', - 450323: '灵川县', - 450324: '全州县', - 450325: '兴安县', - 450326: '永福县', - 450327: '灌阳县', - 450328: '龙胜各族自治县', - 450329: '资源县', - 450330: '平乐县', - 450331: '荔浦县', - 450332: '恭城瑶族自治县', - 450403: '万秀区', - 450405: '长洲区', - 450406: '龙圩区', - 450421: '苍梧县', - 450422: '藤县', - 450423: '蒙山县', - 450481: '岑溪市', - 450502: '海城区', - 450503: '银海区', - 450512: '铁山港区', - 450521: '合浦县', - 450602: '港口区', - 450603: '防城区', - 450621: '上思县', - 450681: '东兴市', - 450702: '钦南区', - 450703: '钦北区', - 450721: '灵山县', - 450722: '浦北县', - 450802: '港北区', - 450803: '港南区', - 450804: '覃塘区', - 450821: '平南县', - 450881: '桂平市', - 450902: '玉州区', - 450903: '福绵区', - 450921: '容县', - 450922: '陆川县', - 450923: '博白县', - 450924: '兴业县', - 450981: '北流市', - 451002: '右江区', - 451021: '田阳县', - 451022: '田东县', - 451023: '平果县', - 451024: '德保县', - 451026: '那坡县', - 451027: '凌云县', - 451028: '乐业县', - 451029: '田林县', - 451030: '西林县', - 451031: '隆林各族自治县', - 451081: '靖西市', - 451102: '八步区', - 451103: '平桂区', - 451121: '昭平县', - 451122: '钟山县', - 451123: '富川瑶族自治县', - 451202: '金城江区', - 451203: '宜州区', - 451221: '南丹县', - 451222: '天峨县', - 451223: '凤山县', - 451224: '东兰县', - 451225: '罗城仫佬族自治县', - 451226: '环江毛南族自治县', - 451227: '巴马瑶族自治县', - 451228: '都安瑶族自治县', - 451229: '大化瑶族自治县', - 451302: '兴宾区', - 451321: '忻城县', - 451322: '象州县', - 451323: '武宣县', - 451324: '金秀瑶族自治县', - 451381: '合山市', - 451402: '江州区', - 451421: '扶绥县', - 451422: '宁明县', - 451423: '龙州县', - 451424: '大新县', - 451425: '天等县', - 451481: '凭祥市', - 460105: '秀英区', - 460106: '龙华区', - 460107: '琼山区', - 460108: '美兰区', - 460202: '海棠区', - 460203: '吉阳区', - 460204: '天涯区', - 460205: '崖州区', - 460321: '西沙群岛', - 460322: '南沙群岛', - 460323: '中沙群岛的岛礁及其海域', - 460401: '那大镇', - 460402: '和庆镇', - 460403: '南丰镇', - 460404: '大成镇', - 460405: '雅星镇', - 460406: '兰洋镇', - 460407: '光村镇', - 460408: '木棠镇', - 460409: '海头镇', - 460410: '峨蔓镇', - 460411: '王五镇', - 460412: '白马井镇', - 460413: '中和镇', - 460414: '排浦镇', - 460415: '东成镇', - 460416: '新州镇', - 469001: '五指山市', - 469002: '琼海市', - 469005: '文昌市', - 469006: '万宁市', - 469007: '东方市', - 469021: '定安县', - 469022: '屯昌县', - 469023: '澄迈县', - 469024: '临高县', - 469025: '白沙黎族自治县', - 469026: '昌江黎族自治县', - 469027: '乐东黎族自治县', - 469028: '陵水黎族自治县', - 469029: '保亭黎族苗族自治县', - 469030: '琼中黎族苗族自治县', - 500101: '万州区', - 500102: '涪陵区', - 500103: '渝中区', - 500104: '大渡口区', - 500105: '江北区', - 500106: '沙坪坝区', - 500107: '九龙坡区', - 500108: '南岸区', - 500109: '北碚区', - 500110: '綦江区', - 500111: '大足区', - 500112: '渝北区', - 500113: '巴南区', - 500114: '黔江区', - 500115: '长寿区', - 500116: '江津区', - 500117: '合川区', - 500118: '永川区', - 500119: '南川区', - 500120: '璧山区', - 500151: '铜梁区', - 500152: '潼南区', - 500153: '荣昌区', - 500154: '开州区', - 500155: '梁平区', - 500156: '武隆区', - 500229: '城口县', - 500230: '丰都县', - 500231: '垫江县', - 500233: '忠县', - 500235: '云阳县', - 500236: '奉节县', - 500237: '巫山县', - 500238: '巫溪县', - 500240: '石柱土家族自治县', - 500241: '秀山土家族苗族自治县', - 500242: '酉阳土家族苗族自治县', - 500243: '彭水苗族土家族自治县', - 510104: '锦江区', - 510105: '青羊区', - 510106: '金牛区', - 510107: '武侯区', - 510108: '成华区', - 510112: '龙泉驿区', - 510113: '青白江区', - 510114: '新都区', - 510115: '温江区', - 510116: '双流区', - 510117: '郫都区', - 510121: '金堂县', - 510129: '大邑县', - 510131: '蒲江县', - 510132: '新津县', - 510181: '都江堰市', - 510182: '彭州市', - 510183: '邛崃市', - 510184: '崇州市', - 510185: '简阳市', - 510191: '高新区', - 510302: '自流井区', - 510303: '贡井区', - 510304: '大安区', - 510311: '沿滩区', - 510321: '荣县', - 510322: '富顺县', - 510402: '东区', - 510403: '西区', - 510411: '仁和区', - 510421: '米易县', - 510422: '盐边县', - 510502: '江阳区', - 510503: '纳溪区', - 510504: '龙马潭区', - 510521: '泸县', - 510522: '合江县', - 510524: '叙永县', - 510525: '古蔺县', - 510603: '旌阳区', - 510604: '罗江区', - 510623: '中江县', - 510681: '广汉市', - 510682: '什邡市', - 510683: '绵竹市', - 510703: '涪城区', - 510704: '游仙区', - 510705: '安州区', - 510722: '三台县', - 510723: '盐亭县', - 510725: '梓潼县', - 510726: '北川羌族自治县', - 510727: '平武县', - 510781: '江油市', - 510791: '高新区', - 510802: '利州区', - 510811: '昭化区', - 510812: '朝天区', - 510821: '旺苍县', - 510822: '青川县', - 510823: '剑阁县', - 510824: '苍溪县', - 510903: '船山区', - 510904: '安居区', - 510921: '蓬溪县', - 510922: '射洪县', - 510923: '大英县', - 511002: '市中区', - 511011: '东兴区', - 511024: '威远县', - 511025: '资中县', - 511083: '隆昌市', - 511102: '市中区', - 511111: '沙湾区', - 511112: '五通桥区', - 511113: '金口河区', - 511123: '犍为县', - 511124: '井研县', - 511126: '夹江县', - 511129: '沐川县', - 511132: '峨边彝族自治县', - 511133: '马边彝族自治县', - 511181: '峨眉山市', - 511302: '顺庆区', - 511303: '高坪区', - 511304: '嘉陵区', - 511321: '南部县', - 511322: '营山县', - 511323: '蓬安县', - 511324: '仪陇县', - 511325: '西充县', - 511381: '阆中市', - 511402: '东坡区', - 511403: '彭山区', - 511421: '仁寿县', - 511423: '洪雅县', - 511424: '丹棱县', - 511425: '青神县', - 511502: '翠屏区', - 511503: '南溪区', - 511521: '宜宾县', - 511523: '江安县', - 511524: '长宁县', - 511525: '高县', - 511526: '珙县', - 511527: '筠连县', - 511528: '兴文县', - 511529: '屏山县', - 511602: '广安区', - 511603: '前锋区', - 511621: '岳池县', - 511622: '武胜县', - 511623: '邻水县', - 511681: '华蓥市', - 511702: '通川区', - 511703: '达川区', - 511722: '宣汉县', - 511723: '开江县', - 511724: '大竹县', - 511725: '渠县', - 511781: '万源市', - 511802: '雨城区', - 511803: '名山区', - 511822: '荥经县', - 511823: '汉源县', - 511824: '石棉县', - 511825: '天全县', - 511826: '芦山县', - 511827: '宝兴县', - 511902: '巴州区', - 511903: '恩阳区', - 511921: '通江县', - 511922: '南江县', - 511923: '平昌县', - 512002: '雁江区', - 512021: '安岳县', - 512022: '乐至县', - 513201: '马尔康市', - 513221: '汶川县', - 513222: '理县', - 513223: '茂县', - 513224: '松潘县', - 513225: '九寨沟县', - 513226: '金川县', - 513227: '小金县', - 513228: '黑水县', - 513230: '壤塘县', - 513231: '阿坝县', - 513232: '若尔盖县', - 513233: '红原县', - 513301: '康定市', - 513322: '泸定县', - 513323: '丹巴县', - 513324: '九龙县', - 513325: '雅江县', - 513326: '道孚县', - 513327: '炉霍县', - 513328: '甘孜县', - 513329: '新龙县', - 513330: '德格县', - 513331: '白玉县', - 513332: '石渠县', - 513333: '色达县', - 513334: '理塘县', - 513335: '巴塘县', - 513336: '乡城县', - 513337: '稻城县', - 513338: '得荣县', - 513401: '西昌市', - 513422: '木里藏族自治县', - 513423: '盐源县', - 513424: '德昌县', - 513425: '会理县', - 513426: '会东县', - 513427: '宁南县', - 513428: '普格县', - 513429: '布拖县', - 513430: '金阳县', - 513431: '昭觉县', - 513432: '喜德县', - 513433: '冕宁县', - 513434: '越西县', - 513435: '甘洛县', - 513436: '美姑县', - 513437: '雷波县', - 520102: '南明区', - 520103: '云岩区', - 520111: '花溪区', - 520112: '乌当区', - 520113: '白云区', - 520115: '观山湖区', - 520121: '开阳县', - 520122: '息烽县', - 520123: '修文县', - 520181: '清镇市', - 520201: '钟山区', - 520203: '六枝特区', - 520221: '水城县', - 520281: '盘州市', - 520302: '红花岗区', - 520303: '汇川区', - 520304: '播州区', - 520322: '桐梓县', - 520323: '绥阳县', - 520324: '正安县', - 520325: '道真仡佬族苗族自治县', - 520326: '务川仡佬族苗族自治县', - 520327: '凤冈县', - 520328: '湄潭县', - 520329: '余庆县', - 520330: '习水县', - 520381: '赤水市', - 520382: '仁怀市', - 520402: '西秀区', - 520403: '平坝区', - 520422: '普定县', - 520423: '镇宁布依族苗族自治县', - 520424: '关岭布依族苗族自治县', - 520425: '紫云苗族布依族自治县', - 520502: '七星关区', - 520521: '大方县', - 520522: '黔西县', - 520523: '金沙县', - 520524: '织金县', - 520525: '纳雍县', - 520526: '威宁彝族回族苗族自治县', - 520527: '赫章县', - 520602: '碧江区', - 520603: '万山区', - 520621: '江口县', - 520622: '玉屏侗族自治县', - 520623: '石阡县', - 520624: '思南县', - 520625: '印江土家族苗族自治县', - 520626: '德江县', - 520627: '沿河土家族自治县', - 520628: '松桃苗族自治县', - 522301: '兴义市', - 522322: '兴仁县', - 522323: '普安县', - 522324: '晴隆县', - 522325: '贞丰县', - 522326: '望谟县', - 522327: '册亨县', - 522328: '安龙县', - 522601: '凯里市', - 522622: '黄平县', - 522623: '施秉县', - 522624: '三穗县', - 522625: '镇远县', - 522626: '岑巩县', - 522627: '天柱县', - 522628: '锦屏县', - 522629: '剑河县', - 522630: '台江县', - 522631: '黎平县', - 522632: '榕江县', - 522633: '从江县', - 522634: '雷山县', - 522635: '麻江县', - 522636: '丹寨县', - 522701: '都匀市', - 522702: '福泉市', - 522722: '荔波县', - 522723: '贵定县', - 522725: '瓮安县', - 522726: '独山县', - 522727: '平塘县', - 522728: '罗甸县', - 522729: '长顺县', - 522730: '龙里县', - 522731: '惠水县', - 522732: '三都水族自治县', - 530102: '五华区', - 530103: '盘龙区', - 530111: '官渡区', - 530112: '西山区', - 530113: '东川区', - 530114: '呈贡区', - 530115: '晋宁区', - 530124: '富民县', - 530125: '宜良县', - 530126: '石林彝族自治县', - 530127: '嵩明县', - 530128: '禄劝彝族苗族自治县', - 530129: '寻甸回族彝族自治县', - 530181: '安宁市', - 530302: '麒麟区', - 530303: '沾益区', - 530321: '马龙县', - 530322: '陆良县', - 530323: '师宗县', - 530324: '罗平县', - 530325: '富源县', - 530326: '会泽县', - 530381: '宣威市', - 530402: '红塔区', - 530403: '江川区', - 530422: '澄江县', - 530423: '通海县', - 530424: '华宁县', - 530425: '易门县', - 530426: '峨山彝族自治县', - 530427: '新平彝族傣族自治县', - 530428: '元江哈尼族彝族傣族自治县', - 530502: '隆阳区', - 530521: '施甸县', - 530523: '龙陵县', - 530524: '昌宁县', - 530581: '腾冲市', - 530602: '昭阳区', - 530621: '鲁甸县', - 530622: '巧家县', - 530623: '盐津县', - 530624: '大关县', - 530625: '永善县', - 530626: '绥江县', - 530627: '镇雄县', - 530628: '彝良县', - 530629: '威信县', - 530630: '水富县', - 530702: '古城区', - 530721: '玉龙纳西族自治县', - 530722: '永胜县', - 530723: '华坪县', - 530724: '宁蒗彝族自治县', - 530802: '思茅区', - 530821: '宁洱哈尼族彝族自治县', - 530822: '墨江哈尼族自治县', - 530823: '景东彝族自治县', - 530824: '景谷傣族彝族自治县', - 530825: '镇沅彝族哈尼族拉祜族自治县', - 530826: '江城哈尼族彝族自治县', - 530827: '孟连傣族拉祜族佤族自治县', - 530828: '澜沧拉祜族自治县', - 530829: '西盟佤族自治县', - 530902: '临翔区', - 530921: '凤庆县', - 530922: '云县', - 530923: '永德县', - 530924: '镇康县', - 530925: '双江拉祜族佤族布朗族傣族自治县', - 530926: '耿马傣族佤族自治县', - 530927: '沧源佤族自治县', - 532301: '楚雄市', - 532322: '双柏县', - 532323: '牟定县', - 532324: '南华县', - 532325: '姚安县', - 532326: '大姚县', - 532327: '永仁县', - 532328: '元谋县', - 532329: '武定县', - 532331: '禄丰县', - 532501: '个旧市', - 532502: '开远市', - 532503: '蒙自市', - 532504: '弥勒市', - 532523: '屏边苗族自治县', - 532524: '建水县', - 532525: '石屏县', - 532527: '泸西县', - 532528: '元阳县', - 532529: '红河县', - 532530: '金平苗族瑶族傣族自治县', - 532531: '绿春县', - 532532: '河口瑶族自治县', - 532601: '文山市', - 532622: '砚山县', - 532623: '西畴县', - 532624: '麻栗坡县', - 532625: '马关县', - 532626: '丘北县', - 532627: '广南县', - 532628: '富宁县', - 532801: '景洪市', - 532822: '勐海县', - 532823: '勐腊县', - 532901: '大理市', - 532922: '漾濞彝族自治县', - 532923: '祥云县', - 532924: '宾川县', - 532925: '弥渡县', - 532926: '南涧彝族自治县', - 532927: '巍山彝族回族自治县', - 532928: '永平县', - 532929: '云龙县', - 532930: '洱源县', - 532931: '剑川县', - 532932: '鹤庆县', - 533102: '瑞丽市', - 533103: '芒市', - 533122: '梁河县', - 533123: '盈江县', - 533124: '陇川县', - 533301: '泸水市', - 533323: '福贡县', - 533324: '贡山独龙族怒族自治县', - 533325: '兰坪白族普米族自治县', - 533401: '香格里拉市', - 533422: '德钦县', - 533423: '维西傈僳族自治县', - 540102: '城关区', - 540103: '堆龙德庆区', - 540104: '达孜区', - 540121: '林周县', - 540122: '当雄县', - 540123: '尼木县', - 540124: '曲水县', - 540127: '墨竹工卡县', - 540202: '桑珠孜区', - 540221: '南木林县', - 540222: '江孜县', - 540223: '定日县', - 540224: '萨迦县', - 540225: '拉孜县', - 540226: '昂仁县', - 540227: '谢通门县', - 540228: '白朗县', - 540229: '仁布县', - 540230: '康马县', - 540231: '定结县', - 540232: '仲巴县', - 540233: '亚东县', - 540234: '吉隆县', - 540235: '聂拉木县', - 540236: '萨嘎县', - 540237: '岗巴县', - 540302: '卡若区', - 540321: '江达县', - 540322: '贡觉县', - 540323: '类乌齐县', - 540324: '丁青县', - 540325: '察雅县', - 540326: '八宿县', - 540327: '左贡县', - 540328: '芒康县', - 540329: '洛隆县', - 540330: '边坝县', - 540402: '巴宜区', - 540421: '工布江达县', - 540422: '米林县', - 540423: '墨脱县', - 540424: '波密县', - 540425: '察隅县', - 540426: '朗县', - 540502: '乃东区', - 540521: '扎囊县', - 540522: '贡嘎县', - 540523: '桑日县', - 540524: '琼结县', - 540525: '曲松县', - 540526: '措美县', - 540527: '洛扎县', - 540528: '加查县', - 540529: '隆子县', - 540530: '错那县', - 540531: '浪卡子县', - 540602: '色尼区', - 542421: '那曲县', - 542422: '嘉黎县', - 542423: '比如县', - 542424: '聂荣县', - 542425: '安多县', - 542426: '申扎县', - 542427: '索县', - 542428: '班戈县', - 542429: '巴青县', - 542430: '尼玛县', - 542431: '双湖县', - 542521: '普兰县', - 542522: '札达县', - 542523: '噶尔县', - 542524: '日土县', - 542525: '革吉县', - 542526: '改则县', - 542527: '措勤县', - 610102: '新城区', - 610103: '碑林区', - 610104: '莲湖区', - 610111: '灞桥区', - 610112: '未央区', - 610113: '雁塔区', - 610114: '阎良区', - 610115: '临潼区', - 610116: '长安区', - 610117: '高陵区', - 610118: '鄠邑区', - 610122: '蓝田县', - 610124: '周至县', - 610202: '王益区', - 610203: '印台区', - 610204: '耀州区', - 610222: '宜君县', - 610302: '渭滨区', - 610303: '金台区', - 610304: '陈仓区', - 610322: '凤翔县', - 610323: '岐山县', - 610324: '扶风县', - 610326: '眉县', - 610327: '陇县', - 610328: '千阳县', - 610329: '麟游县', - 610330: '凤县', - 610331: '太白县', - 610402: '秦都区', - 610403: '杨陵区', - 610404: '渭城区', - 610422: '三原县', - 610423: '泾阳县', - 610424: '乾县', - 610425: '礼泉县', - 610426: '永寿县', - 610427: '彬县', - 610428: '长武县', - 610429: '旬邑县', - 610430: '淳化县', - 610431: '武功县', - 610481: '兴平市', - 610502: '临渭区', - 610503: '华州区', - 610522: '潼关县', - 610523: '大荔县', - 610524: '合阳县', - 610525: '澄城县', - 610526: '蒲城县', - 610527: '白水县', - 610528: '富平县', - 610581: '韩城市', - 610582: '华阴市', - 610602: '宝塔区', - 610603: '安塞区', - 610621: '延长县', - 610622: '延川县', - 610623: '子长县', - 610625: '志丹县', - 610626: '吴起县', - 610627: '甘泉县', - 610628: '富县', - 610629: '洛川县', - 610630: '宜川县', - 610631: '黄龙县', - 610632: '黄陵县', - 610702: '汉台区', - 610703: '南郑区', - 610722: '城固县', - 610723: '洋县', - 610724: '西乡县', - 610725: '勉县', - 610726: '宁强县', - 610727: '略阳县', - 610728: '镇巴县', - 610729: '留坝县', - 610730: '佛坪县', - 610802: '榆阳区', - 610803: '横山区', - 610822: '府谷县', - 610824: '靖边县', - 610825: '定边县', - 610826: '绥德县', - 610827: '米脂县', - 610828: '佳县', - 610829: '吴堡县', - 610830: '清涧县', - 610831: '子洲县', - 610881: '神木市', - 610902: '汉滨区', - 610921: '汉阴县', - 610922: '石泉县', - 610923: '宁陕县', - 610924: '紫阳县', - 610925: '岚皋县', - 610926: '平利县', - 610927: '镇坪县', - 610928: '旬阳县', - 610929: '白河县', - 611002: '商州区', - 611021: '洛南县', - 611022: '丹凤县', - 611023: '商南县', - 611024: '山阳县', - 611025: '镇安县', - 611026: '柞水县', - 620102: '城关区', - 620103: '七里河区', - 620104: '西固区', - 620105: '安宁区', - 620111: '红古区', - 620121: '永登县', - 620122: '皋兰县', - 620123: '榆中县', - 620201: '市辖区', - 620290: '雄关区', - 620291: '长城区', - 620292: '镜铁区', - 620293: '新城镇', - 620294: '峪泉镇', - 620295: '文殊镇', - 620302: '金川区', - 620321: '永昌县', - 620402: '白银区', - 620403: '平川区', - 620421: '靖远县', - 620422: '会宁县', - 620423: '景泰县', - 620502: '秦州区', - 620503: '麦积区', - 620521: '清水县', - 620522: '秦安县', - 620523: '甘谷县', - 620524: '武山县', - 620525: '张家川回族自治县', - 620602: '凉州区', - 620621: '民勤县', - 620622: '古浪县', - 620623: '天祝藏族自治县', - 620702: '甘州区', - 620721: '肃南裕固族自治县', - 620722: '民乐县', - 620723: '临泽县', - 620724: '高台县', - 620725: '山丹县', - 620802: '崆峒区', - 620821: '泾川县', - 620822: '灵台县', - 620823: '崇信县', - 620824: '华亭县', - 620825: '庄浪县', - 620826: '静宁县', - 620902: '肃州区', - 620921: '金塔县', - 620922: '瓜州县', - 620923: '肃北蒙古族自治县', - 620924: '阿克塞哈萨克族自治县', - 620981: '玉门市', - 620982: '敦煌市', - 621002: '西峰区', - 621021: '庆城县', - 621022: '环县', - 621023: '华池县', - 621024: '合水县', - 621025: '正宁县', - 621026: '宁县', - 621027: '镇原县', - 621102: '安定区', - 621121: '通渭县', - 621122: '陇西县', - 621123: '渭源县', - 621124: '临洮县', - 621125: '漳县', - 621126: '岷县', - 621202: '武都区', - 621221: '成县', - 621222: '文县', - 621223: '宕昌县', - 621224: '康县', - 621225: '西和县', - 621226: '礼县', - 621227: '徽县', - 621228: '两当县', - 622901: '临夏市', - 622921: '临夏县', - 622922: '康乐县', - 622923: '永靖县', - 622924: '广河县', - 622925: '和政县', - 622926: '东乡族自治县', - 622927: '积石山保安族东乡族撒拉族自治县', - 623001: '合作市', - 623021: '临潭县', - 623022: '卓尼县', - 623023: '舟曲县', - 623024: '迭部县', - 623025: '玛曲县', - 623026: '碌曲县', - 623027: '夏河县', - 630102: '城东区', - 630103: '城中区', - 630104: '城西区', - 630105: '城北区', - 630121: '大通回族土族自治县', - 630122: '湟中县', - 630123: '湟源县', - 630202: '乐都区', - 630203: '平安区', - 630222: '民和回族土族自治县', - 630223: '互助土族自治县', - 630224: '化隆回族自治县', - 630225: '循化撒拉族自治县', - 632221: '门源回族自治县', - 632222: '祁连县', - 632223: '海晏县', - 632224: '刚察县', - 632321: '同仁县', - 632322: '尖扎县', - 632323: '泽库县', - 632324: '河南蒙古族自治县', - 632521: '共和县', - 632522: '同德县', - 632523: '贵德县', - 632524: '兴海县', - 632525: '贵南县', - 632621: '玛沁县', - 632622: '班玛县', - 632623: '甘德县', - 632624: '达日县', - 632625: '久治县', - 632626: '玛多县', - 632701: '玉树市', - 632722: '杂多县', - 632723: '称多县', - 632724: '治多县', - 632725: '囊谦县', - 632726: '曲麻莱县', - 632801: '格尔木市', - 632802: '德令哈市', - 632821: '乌兰县', - 632822: '都兰县', - 632823: '天峻县', - 640104: '兴庆区', - 640105: '西夏区', - 640106: '金凤区', - 640121: '永宁县', - 640122: '贺兰县', - 640181: '灵武市', - 640202: '大武口区', - 640205: '惠农区', - 640221: '平罗县', - 640302: '利通区', - 640303: '红寺堡区', - 640323: '盐池县', - 640324: '同心县', - 640381: '青铜峡市', - 640402: '原州区', - 640422: '西吉县', - 640423: '隆德县', - 640424: '泾源县', - 640425: '彭阳县', - 640502: '沙坡头区', - 640521: '中宁县', - 640522: '海原县', - 650102: '天山区', - 650103: '沙依巴克区', - 650104: '新市区', - 650105: '水磨沟区', - 650106: '头屯河区', - 650107: '达坂城区', - 650109: '米东区', - 650121: '乌鲁木齐县', - 650202: '独山子区', - 650203: '克拉玛依区', - 650204: '白碱滩区', - 650205: '乌尔禾区', - 650402: '高昌区', - 650421: '鄯善县', - 650422: '托克逊县', - 650502: '伊州区', - 650521: '巴里坤哈萨克自治县', - 650522: '伊吾县', - 652301: '昌吉市', - 652302: '阜康市', - 652323: '呼图壁县', - 652324: '玛纳斯县', - 652325: '奇台县', - 652327: '吉木萨尔县', - 652328: '木垒哈萨克自治县', - 652701: '博乐市', - 652702: '阿拉山口市', - 652722: '精河县', - 652723: '温泉县', - 652801: '库尔勒市', - 652822: '轮台县', - 652823: '尉犁县', - 652824: '若羌县', - 652825: '且末县', - 652826: '焉耆回族自治县', - 652827: '和静县', - 652828: '和硕县', - 652829: '博湖县', - 652901: '阿克苏市', - 652922: '温宿县', - 652923: '库车县', - 652924: '沙雅县', - 652925: '新和县', - 652926: '拜城县', - 652927: '乌什县', - 652928: '阿瓦提县', - 652929: '柯坪县', - 653001: '阿图什市', - 653022: '阿克陶县', - 653023: '阿合奇县', - 653024: '乌恰县', - 653101: '喀什市', - 653121: '疏附县', - 653122: '疏勒县', - 653123: '英吉沙县', - 653124: '泽普县', - 653125: '莎车县', - 653126: '叶城县', - 653127: '麦盖提县', - 653128: '岳普湖县', - 653129: '伽师县', - 653130: '巴楚县', - 653131: '塔什库尔干塔吉克自治县', - 653201: '和田市', - 653221: '和田县', - 653222: '墨玉县', - 653223: '皮山县', - 653224: '洛浦县', - 653225: '策勒县', - 653226: '于田县', - 653227: '民丰县', - 654002: '伊宁市', - 654003: '奎屯市', - 654004: '霍尔果斯市', - 654021: '伊宁县', - 654022: '察布查尔锡伯自治县', - 654023: '霍城县', - 654024: '巩留县', - 654025: '新源县', - 654026: '昭苏县', - 654027: '特克斯县', - 654028: '尼勒克县', - 654201: '塔城市', - 654202: '乌苏市', - 654221: '额敏县', - 654223: '沙湾县', - 654224: '托里县', - 654225: '裕民县', - 654226: '和布克赛尔蒙古自治县', - 654301: '阿勒泰市', - 654321: '布尔津县', - 654322: '富蕴县', - 654323: '福海县', - 654324: '哈巴河县', - 654325: '青河县', - 654326: '吉木乃县', - 659001: '石河子市', - 659002: '阿拉尔市', - 659003: '图木舒克市', - 659004: '五家渠市', - 659005: '北屯市', - 659006: '铁门关市', - 659007: '双河市', - 659008: '可克达拉市', - 659009: '昆玉市', - 710101: '中正区', - 710102: '大同区', - 710103: '中山区', - 710104: '松山区', - 710105: '大安区', - 710106: '万华区', - 710107: '信义区', - 710108: '士林区', - 710109: '北投区', - 710110: '内湖区', - 710111: '南港区', - 710112: '文山区', - 710199: '其它区', - 710201: '新兴区', - 710202: '前金区', - 710203: '芩雅区', - 710204: '盐埕区', - 710205: '鼓山区', - 710206: '旗津区', - 710207: '前镇区', - 710208: '三民区', - 710209: '左营区', - 710210: '楠梓区', - 710211: '小港区', - 710241: '苓雅区', - 710242: '仁武区', - 710243: '大社区', - 710244: '冈山区', - 710245: '路竹区', - 710246: '阿莲区', - 710247: '田寮区', - 710248: '燕巢区', - 710249: '桥头区', - 710250: '梓官区', - 710251: '弥陀区', - 710252: '永安区', - 710253: '湖内区', - 710254: '凤山区', - 710255: '大寮区', - 710256: '林园区', - 710257: '鸟松区', - 710258: '大树区', - 710259: '旗山区', - 710260: '美浓区', - 710261: '六龟区', - 710262: '内门区', - 710263: '杉林区', - 710264: '甲仙区', - 710265: '桃源区', - 710266: '那玛夏区', - 710267: '茂林区', - 710268: '茄萣区', - 710299: '其它区', - 710301: '中西区', - 710302: '东区', - 710303: '南区', - 710304: '北区', - 710305: '安平区', - 710306: '安南区', - 710339: '永康区', - 710340: '归仁区', - 710341: '新化区', - 710342: '左镇区', - 710343: '玉井区', - 710344: '楠西区', - 710345: '南化区', - 710346: '仁德区', - 710347: '关庙区', - 710348: '龙崎区', - 710349: '官田区', - 710350: '麻豆区', - 710351: '佳里区', - 710352: '西港区', - 710353: '七股区', - 710354: '将军区', - 710355: '学甲区', - 710356: '北门区', - 710357: '新营区', - 710358: '后壁区', - 710359: '白河区', - 710360: '东山区', - 710361: '六甲区', - 710362: '下营区', - 710363: '柳营区', - 710364: '盐水区', - 710365: '善化区', - 710366: '大内区', - 710367: '山上区', - 710368: '新市区', - 710369: '安定区', - 710399: '其它区', - 710401: '中区', - 710402: '东区', - 710403: '南区', - 710404: '西区', - 710405: '北区', - 710406: '北屯区', - 710407: '西屯区', - 710408: '南屯区', - 710431: '太平区', - 710432: '大里区', - 710433: '雾峰区', - 710434: '乌日区', - 710435: '丰原区', - 710436: '后里区', - 710437: '石冈区', - 710438: '东势区', - 710439: '和平区', - 710440: '新社区', - 710441: '潭子区', - 710442: '大雅区', - 710443: '神冈区', - 710444: '大肚区', - 710445: '沙鹿区', - 710446: '龙井区', - 710447: '梧栖区', - 710448: '清水区', - 710449: '大甲区', - 710450: '外埔区', - 710451: '大安区', - 710499: '其它区', - 710507: '金沙镇', - 710508: '金湖镇', - 710509: '金宁乡', - 710510: '金城镇', - 710511: '烈屿乡', - 710512: '乌坵乡', - 710614: '南投市', - 710615: '中寮乡', - 710616: '草屯镇', - 710617: '国姓乡', - 710618: '埔里镇', - 710619: '仁爱乡', - 710620: '名间乡', - 710621: '集集镇', - 710622: '水里乡', - 710623: '鱼池乡', - 710624: '信义乡', - 710625: '竹山镇', - 710626: '鹿谷乡', - 710701: '仁爱区', - 710702: '信义区', - 710703: '中正区', - 710704: '中山区', - 710705: '安乐区', - 710706: '暖暖区', - 710707: '七堵区', - 710799: '其它区', - 710801: '东区', - 710802: '北区', - 710803: '香山区', - 710899: '其它区', - 710901: '东区', - 710902: '西区', - 710999: '其它区', - 711130: '万里区', - 711132: '板桥区', - 711133: '汐止区', - 711134: '深坑区', - 711136: '瑞芳区', - 711137: '平溪区', - 711138: '双溪区', - 711140: '新店区', - 711141: '坪林区', - 711142: '乌来区', - 711143: '永和区', - 711144: '中和区', - 711145: '土城区', - 711146: '三峡区', - 711147: '树林区', - 711149: '三重区', - 711150: '新庄区', - 711151: '泰山区', - 711152: '林口区', - 711154: '五股区', - 711155: '八里区', - 711156: '淡水区', - 711157: '三芝区', - 711287: '宜兰市', - 711288: '头城镇', - 711289: '礁溪乡', - 711290: '壮围乡', - 711291: '员山乡', - 711292: '罗东镇', - 711293: '三星乡', - 711294: '大同乡', - 711295: '五结乡', - 711296: '冬山乡', - 711297: '苏澳镇', - 711298: '南澳乡', - 711299: '钓鱼台', - 711387: '竹北市', - 711388: '湖口乡', - 711389: '新丰乡', - 711390: '新埔镇', - 711391: '关西镇', - 711392: '芎林乡', - 711393: '宝山乡', - 711394: '竹东镇', - 711395: '五峰乡', - 711396: '横山乡', - 711397: '尖石乡', - 711398: '北埔乡', - 711399: '峨眉乡', - 711487: '中坜市', - 711488: '平镇市', - 711489: '龙潭乡', - 711490: '杨梅市', - 711491: '新屋乡', - 711492: '观音乡', - 711493: '桃园市', - 711494: '龟山乡', - 711495: '八德市', - 711496: '大溪镇', - 711497: '复兴乡', - 711498: '大园乡', - 711499: '芦竹乡', - 711582: '竹南镇', - 711583: '头份镇', - 711584: '三湾乡', - 711585: '南庄乡', - 711586: '狮潭乡', - 711587: '后龙镇', - 711588: '通霄镇', - 711589: '苑里镇', - 711590: '苗栗市', - 711591: '造桥乡', - 711592: '头屋乡', - 711593: '公馆乡', - 711594: '大湖乡', - 711595: '泰安乡', - 711596: '铜锣乡', - 711597: '三义乡', - 711598: '西湖乡', - 711599: '卓兰镇', - 711774: '彰化市', - 711775: '芬园乡', - 711776: '花坛乡', - 711777: '秀水乡', - 711778: '鹿港镇', - 711779: '福兴乡', - 711780: '线西乡', - 711781: '和美镇', - 711782: '伸港乡', - 711783: '员林镇', - 711784: '社头乡', - 711785: '永靖乡', - 711786: '埔心乡', - 711787: '溪湖镇', - 711788: '大村乡', - 711789: '埔盐乡', - 711790: '田中镇', - 711791: '北斗镇', - 711792: '田尾乡', - 711793: '埤头乡', - 711794: '溪州乡', - 711795: '竹塘乡', - 711796: '二林镇', - 711797: '大城乡', - 711798: '芳苑乡', - 711799: '二水乡', - 711982: '番路乡', - 711983: '梅山乡', - 711984: '竹崎乡', - 711985: '阿里山乡', - 711986: '中埔乡', - 711987: '大埔乡', - 711988: '水上乡', - 711989: '鹿草乡', - 711990: '太保市', - 711991: '朴子市', - 711992: '东石乡', - 711993: '六脚乡', - 711994: '新港乡', - 711995: '民雄乡', - 711996: '大林镇', - 711997: '溪口乡', - 711998: '义竹乡', - 711999: '布袋镇', - 712180: '斗南镇', - 712181: '大埤乡', - 712182: '虎尾镇', - 712183: '土库镇', - 712184: '褒忠乡', - 712185: '东势乡', - 712186: '台西乡', - 712187: '仑背乡', - 712188: '麦寮乡', - 712189: '斗六市', - 712190: '林内乡', - 712191: '古坑乡', - 712192: '莿桐乡', - 712193: '西螺镇', - 712194: '二仑乡', - 712195: '北港镇', - 712196: '水林乡', - 712197: '口湖乡', - 712198: '四湖乡', - 712199: '元长乡', - 712467: '屏东市', - 712468: '三地门乡', - 712469: '雾台乡', - 712470: '玛家乡', - 712471: '九如乡', - 712472: '里港乡', - 712473: '高树乡', - 712474: '盐埔乡', - 712475: '长治乡', - 712476: '麟洛乡', - 712477: '竹田乡', - 712478: '内埔乡', - 712479: '万丹乡', - 712480: '潮州镇', - 712481: '泰武乡', - 712482: '来义乡', - 712483: '万峦乡', - 712484: '莰顶乡', - 712485: '新埤乡', - 712486: '南州乡', - 712487: '林边乡', - 712488: '东港镇', - 712489: '琉球乡', - 712490: '佳冬乡', - 712491: '新园乡', - 712492: '枋寮乡', - 712493: '枋山乡', - 712494: '春日乡', - 712495: '狮子乡', - 712496: '车城乡', - 712497: '牡丹乡', - 712498: '恒春镇', - 712499: '满州乡', - 712584: '台东市', - 712585: '绿岛乡', - 712586: '兰屿乡', - 712587: '延平乡', - 712588: '卑南乡', - 712589: '鹿野乡', - 712590: '关山镇', - 712591: '海端乡', - 712592: '池上乡', - 712593: '东河乡', - 712594: '成功镇', - 712595: '长滨乡', - 712596: '金峰乡', - 712597: '大武乡', - 712598: '达仁乡', - 712599: '太麻里乡', - 712686: '花莲市', - 712687: '新城乡', - 712688: '太鲁阁', - 712689: '秀林乡', - 712690: '吉安乡', - 712691: '寿丰乡', - 712692: '凤林镇', - 712693: '光复乡', - 712694: '丰滨乡', - 712695: '瑞穗乡', - 712696: '万荣乡', - 712697: '玉里镇', - 712698: '卓溪乡', - 712699: '富里乡', - 712794: '马公市', - 712795: '西屿乡', - 712796: '望安乡', - 712797: '七美乡', - 712798: '白沙乡', - 712799: '湖西乡', - 712896: '南竿乡', - 712897: '北竿乡', - 712898: '东引乡', - 712899: '莒光乡', - 810101: '中西区', - 810102: '湾仔', - 810103: '东区', - 810104: '南区', - 810201: '九龙城区', - 810202: '油尖旺区', - 810203: '深水埗区', - 810204: '黄大仙区', - 810205: '观塘区', - 810301: '北区', - 810302: '大埔区', - 810303: '沙田区', - 810304: '西贡区', - 810305: '元朗区', - 810306: '屯门区', - 810307: '荃湾区', - 810308: '葵青区', - 810309: '离岛区', - 820101: '澳门半岛', - 820201: '离岛' - } - }; - - - Class.prototype.config = { - elem: '', - data: { - province: '', - city: '', - county: '', - provinceCode: 0, - cityCode: 0, - countyCode: 0, - }, - change: function(result){} - }; - - Class.prototype.index = 0; - - Class.prototype.render = function () { - let that = this, options = that.config; - options.elem = $(options.elem); - - that.events(); - }; - - Class.prototype.reload = function (op) { - let options = this.config; - options.data = $.extend(options.data, op.data || {}); - this.events(true); - }; - - Class.prototype.events = function (reload = false) { - let that = this, options = that.config; - let provinceFilter = 'province-' + layarea._id; - let cityFilter = 'city-' + layarea._id; - let countyFilter = 'county-' + layarea._id; - - let provinceEl = options.elem.find('.province-selector'); - let cityEl = options.elem.find('.city-selector'); - let countyEl = options.elem.find('.county-selector'); - - if (reload){ - options.data.provinceCode = getCode('province', options.data.province); - let code = getCode('city', options.data.city, options.data.provinceCode.slice(0, 2)); - options.data.cityCode = code; - options.data.countyCode = getCode('county', options.data.county, options.data.cityCode.slice(0, 4)); - renderProvince(); - return; - } - //filter - if(provinceEl.attr('lay-filter')){ - provinceFilter = provinceEl.attr('lay-filter'); - } - if(cityEl.attr('lay-filter')){ - cityFilter = cityEl.attr('lay-filter'); - } - if(countyEl.attr('lay-filter')){ - countyFilter = countyEl.attr('lay-filter'); - } - provinceEl.attr('lay-filter', provinceFilter); - cityEl.attr('lay-filter', cityFilter); - countyEl.attr('lay-filter', countyFilter); - - //获取默认值 - if(provinceEl.data('value')){ - options.data.province = provinceEl.data('value'); - options.data.provinceCode = getCode('province', options.data.province); - } else if (!options.data.province) { - options.data.province = ''; - } - if(cityEl.data('value')){ - options.data.city = cityEl.data('value'); - let code = getCode('city', options.data.city, options.data.provinceCode.slice(0, 2)); - options.data.cityCode = code; - } else if (!options.data.city) { - options.data.city = ''; - } - if(countyEl.data('value')){ - options.data.county = countyEl.data('value'); - options.data.countyCode = getCode('county', options.data.county, options.data.cityCode.slice(0, 4)); - } else if (!options.data.county) { - options.data.county = ''; - } - provinceEl.attr('lay-filter', provinceFilter); - cityEl.attr('lay-filter', cityFilter); - countyEl.attr('lay-filter', countyFilter); - - //监听结果 - form.on('select('+provinceFilter+')', function(data){ - options.data.province = data.value; - options.data.provinceCode = getCode('province', data.value); - renderCity(options.data.provinceCode); - - options.change(options.data); - }); - form.on('select('+cityFilter+')', function(data){ - options.data.city = data.value; - if(options.data.provinceCode){ - options.data.cityCode = getCode('city', data.value, options.data.provinceCode.slice(0, 2)); - renderCounty(options.data.cityCode); - } - - options.change(options.data); - }); - form.on('select('+countyFilter+')', function(data){ - options.data.county = data.value; - if(options.data.cityCode){ - options.data.countyCode = getCode('county', data.value, options.data.cityCode.slice(0, 4)); - } - options.change(options.data); - }); - - renderProvince(); - - //查找province - function renderProvince(){ - let tpl = ''; - let provinceList = getList("province"); - let currentCode = ''; - let currentName = ''; - provinceList.forEach(function(_item){ - // if (!currentCode){ - // currentCode = _item.code; - // currentName = _item.name; - // } - if(_item.name === options.data.province){ - currentCode = _item.code; - currentName = _item.name; - } - tpl += ''; - }); - provinceEl.html(tpl); - provinceEl.val(options.data.province); - form.render('select'); - renderCity(currentCode); - } - - function renderCity(provinceCode){ - let tpl = ''; - let cityList = getList('city', provinceCode.slice(0, 2)); - let currentCode = ''; - let currentName = ''; - cityList.forEach(function(_item){ - // if (!currentCode){ - // currentCode = _item.code; - // currentName = _item.name; - // } - if(_item.name === options.data.city){ - currentCode = _item.code; - currentName = _item.name; - } - tpl += ''; - }); - options.data.city = currentName; - cityEl.html(tpl); - cityEl.val(options.data.city); - form.render('select'); - renderCounty(currentCode); - } - - function renderCounty(cityCode){ - let tpl = ''; - let countyList = getList('county', cityCode.slice(0, 4)); - let currentCode = ''; - let currentName = ''; - countyList.forEach(function(_item){ - // if (!currentCode){ - // currentCode = _item.code; - // currentName = _item.name; - // } - if(_item.name === options.data.county){ - currentCode = _item.code; - currentName = _item.name; - } - tpl += ''; - }); - options.data.county = currentName; - countyEl.html(tpl); - countyEl.val(options.data.county); - - form.render('select'); - } - - function getList(type, code) { - let result = []; - - if (type !== 'province' && !code) { - return result; - } - - let list = areaList[type + "_list"] || {}; - result = Object.keys(list).map(function (code) { - return { - code: code, - name: list[code] - }; - }); - - if (code) { - // oversea code - if (code[0] === '9' && type === 'city') { - code = '9'; - } - - result = result.filter(function (item) { - return item.code.indexOf(code) === 0; - }); - } - - return result; - } - - function getCode(type, name, parentCode = 0){ - let code = ''; - let list = areaList[type + "_list"] || {}; - let result = {}; - Object.keys(list).map(function (_code) { - if(parentCode){ - if(_code.indexOf(parentCode) === 0){ - result[_code] = list[_code]; - } - }else{ - result[_code] = list[_code]; - } - }); - layui.each(result, function(_code, _name){ - if(_name === name){ - code = _code; - } - }); - - return code; - } - }; - - layarea.render = function (options) { - let inst = new Class(options); - layarea._id++; - return thisArea.call(inst); - }; - - exports('area', layarea); - }); \ No newline at end of file diff --git a/component/pear/module/core/admin.js b/component/pear/module/core/admin.js index 3a2cf80..ed815fc 100644 --- a/component/pear/module/core/admin.js +++ b/component/pear/module/core/admin.js @@ -1,4 +1,4 @@ -layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'theme', 'fullscreen'], +layui.define(['messageCenter', 'table', 'jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'theme', 'fullscreen'], function (exports) { "use strict"; @@ -7,10 +7,10 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tabPage' yaml = layui.yaml, page = layui.page, tabPage = layui.tabPage, + messageCenter = layui.messageCenter, menu = layui.menu, pearTheme = layui.theme, - message = layui.message, fullscreen = layui.fullscreen; var bodyFrame; @@ -95,7 +95,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tabPage' } this.messageRender = function (option) { - msgInstance = message.render({ + msgInstance = messageCenter.render({ elem: '.message', url: option.header.message, height: '250px' @@ -213,7 +213,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tabPage' this.keepLoad = function (param) { compatible() setTimeout(function () { - $(".loader-main").fadeOut(200); + $(".loader-wrapper").fadeOut(200); }, param.other.keepLoad) } @@ -291,6 +291,15 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tabPage' } } + var dark = localStorage.getItem("dark"); + if(dark === null) { + dark = option.theme.dark; + } else { + if(option.theme.allowCustom === false) { + dark = option.theme.dark; + } + } + localStorage.setItem("muilt-tab", muiltTab); localStorage.setItem("theme-banner", banner); localStorage.setItem("theme-menu", menu); @@ -298,9 +307,11 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tabPage' localStorage.setItem("auto-head", autoHead); localStorage.setItem("control", control); localStorage.setItem("footer", footer); + localStorage.setItem("dark", dark); this.menuSkin(menu); this.headerSkin(header); this.bannerSkin(banner); + this.enableDark(dark); this.footer(footer); } @@ -324,6 +335,14 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tabPage' } } + this.enableDark = function (checked) { + var $pearAdmin = $(".pear-admin"); + $pearAdmin.removeClass("pear-admin-dark"); + if(checked === true || checked === "true") { + $pearAdmin.addClass("pear-admin-dark"); + } + } + this.collapse = function (param) { if (param.menu.collapse) { if ($(window).width() >= 768) { @@ -355,105 +374,6 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tabPage' msgInstance.click(callback); } } - - this.collapseSide = function () { - collapse() - } - - this.refreshThis = function () { - refresh() - } - - this.refresh = function (id) { - $("iframe[id='" + id + "']").attr('src', $("iframe[id='" + id + "']").attr('src')); - } - - this.addTab = function (id, title, url) { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - bodyTab.addTabOnly({ - id: id, - title: title, - url: url, - icon: null, - close: true - }, 400); - } else { - return; - } - } - - this.closeTab = function (id) { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - pearTab.delTabByElem('content', id, function (currentId) { - sideMenu.selectItem(currentId); - }); - } else { - return; - } - } - - this.closeCurrentTab = function () { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - pearTab.delCurrentTabByElem('content', function (id) { - sideMenu.selectItem(id); - }); - } else { - return; - } - } - - this.closeOtherTab = function () { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - pearTab.delOtherTabByElem('content', function (id) { - sideMenu.selectItem(id); - }); - } else { - return; - } - } - - this.closeAllTab = function () { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - pearTab.delAllTabByElem('content', function (id) { - sideMenu.selectItem(id); - }); - } else { - return; - } - } - - this.changeTabTitle = function (id, title) { - pearTab.changeTabTitleById('content', id, title); - } - - this.changeIframe = function (id, title, url) { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - return; - } else { - sideMenu.selectItem(id); - bodyFrame.changePage(url, true); - } - } - - this.jump = function (id, title, url) { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - pearAdmin.addTab(id, title, url) - } else { - pearAdmin.changeIframe(id, title, url) - } - } - - this.fullScreen = function () { - if ($(".fullScreen").hasClass("layui-icon-screen-restore")) { - screenFun(2).then(function () { - $(".fullScreen").eq(0).removeClass("layui-icon-screen-restore"); - }); - } else { - screenFun(1).then(function () { - $(".fullScreen").eq(0).addClass("layui-icon-screen-restore"); - }); - } - } }; function refresh() { @@ -807,6 +727,9 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tabPage' moreItem += '
                                      开启页脚
                                      '; + moreItem += + '
                                      夜间模式
                                      '; + var moreHtml = '
                                      \n' + '
                                      更多设置
                                      \n' + '
                                      \n' + @@ -883,6 +806,11 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tabPage' pearAdmin.footer(this.checked); }) + form.on('switch(dark)', function (data) { + localStorage.setItem("dark", this.checked); + pearAdmin.enableDark(this.checked); + }) + if (localStorage.getItem('theme-banner') === 'true') { $('input[name="banner"]').attr('checked', 'checked') } else { @@ -907,6 +835,12 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tabPage' $('input[name="footer"]').removeAttr('checked') } + if (localStorage.getItem('dark') === 'true') { + $('input[name="dark"]').attr('checked', 'checked') + } else { + $('input[name="dark"]').removeAttr('checked') + } + form.render('checkbox'); } }); diff --git a/component/pear/module/message.js b/component/pear/module/core/messageCenter.js similarity index 99% rename from component/pear/module/message.js rename to component/pear/module/core/messageCenter.js index 51ba162..bdcf20f 100644 --- a/component/pear/module/message.js +++ b/component/pear/module/core/messageCenter.js @@ -1,7 +1,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { "use strict"; - var MOD_NAME = 'message', + var MOD_NAME = 'messageCenter', $ = layui.jquery, element = layui.element; diff --git a/component/pear/module/core/page.js b/component/pear/module/core/page.js index 44ba8fd..a9703e2 100644 --- a/component/pear/module/core/page.js +++ b/component/pear/module/core/page.js @@ -20,7 +20,7 @@ layui.define(['jquery', 'element'], function (exports) { } } renderContent(option); - return new frame(option); + return new page(option); } page.prototype.changePage = function (url, loading) { diff --git a/component/pear/module/core/tabPage.js b/component/pear/module/core/tabPage.js index c74327a..ec9ab62 100644 --- a/component/pear/module/core/tabPage.js +++ b/component/pear/module/core/tabPage.js @@ -154,28 +154,6 @@ layui.define(['jquery', 'element'], function (exports) { sessionStorage.removeItem(this.option.elem + "-pear-tab-data-current"); } - tabPage.prototype.addTab = function (opt) { - var title = ''; - if (opt.close) { - title += '' + opt.title + - ''; - } else { - title += '' + opt.title + - ''; - } - element.tabAdd(this.option.elem, { - title: title, - content: '', - id: opt.id - }); - tabData.push(opt); - sessionStorage.setItem(this.option.elem + "-pear-tab-data", JSON.stringify(tabData)); - sessionStorage.setItem(this.option.elem + "-pear-tab-data-current", opt.id); - element.tabChange(this.option.elem, opt.id); - } - var index = 0; // 根据过滤 fliter 标识, 重置选项卡标题 tabPage.prototype.changeTabTitleById = function (elem, id, title) { @@ -392,6 +370,9 @@ layui.define(['jquery', 'element'], function (exports) { tabContent.remove(); } + /** + * @since Pear Admin 4.0 + */ function createTab(option) { var type = ""; @@ -407,32 +388,38 @@ layui.define(['jquery', 'element'], function (exports) { } var tab = '
                                      '; + var title = '
                                        '; var content = '
                                        '; - var control = '
                                        • '; + var control = `
                                          +
                                        • +
                                        • +
                                        • + +
                                        • +
                                          `; // 处 理 选 项 卡 头 部 var index = 0; $.each(option.data, function (i, item) { - var TitleItem = ''; - if (option.index == index) { - TitleItem += '
                                        • '; - } else { - TitleItem += '
                                        • '; - } + + var titleItem = `
                                        • + + + ${item.title} + +
                                        • `; - if (item.close) { - // 当 前 选 项 卡 可 以 关 闭 - TitleItem += '' + item.title + ''; - } else { - // 当 前 选 项 卡 不 允 许 关 闭 - TitleItem += '' + item.title + ''; - } - TitleItem += '
                                        • '; - title += TitleItem; - if (option.index == index) { + title += titleItem; + if (option.index == index) { $.ajax({ url: item.url, type: 'get', @@ -448,9 +435,7 @@ layui.define(['jquery', 'element'], function (exports) { return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); } }); - } else { - $.ajax({ url: item.url, type: 'get', @@ -472,10 +457,6 @@ layui.define(['jquery', 'element'], function (exports) { title += '
                                        '; content += '
                                      • '; - control += '
                                        关 闭 当 前
                                        ' - control += '
                                        关 闭 其 他
                                        ' - control += '
                                        关 闭 全 部
                                        ' - control += '
                                      '; tab += title; tab += control; diff --git a/component/pear/module/cropper.js b/component/pear/module/cropper.js deleted file mode 100644 index 6d77497..0000000 --- a/component/pear/module/cropper.js +++ /dev/null @@ -1,3087 +0,0 @@ -/*! - * Cropper v3.0.0 - */ - -layui.define(['jquery'], function (exports) { - var $ = layui.jquery; - $ = $ && $.hasOwnProperty('default') ? $['default'] : $; - - var DEFAULTS = { - // Define the view mode of the cropper - viewMode: 0, // 0, 1, 2, 3 - - // Define the dragging mode of the cropper - dragMode: 'crop', // 'crop', 'move' or 'none' - - // Define the aspect ratio of the crop box - aspectRatio: NaN, - - // An object with the previous cropping result data - data: null, - - // A selector for adding extra containers to preview - preview: '', - - // Re-render the cropper when resize the window - responsive: true, - - // Restore the cropped area after resize the window - restore: true, - - // Check if the current image is a cross-origin image - checkCrossOrigin: true, - - // Check the current image's Exif Orientation information - checkOrientation: true, - - // Show the black modal - modal: true, - - // Show the dashed lines for guiding - guides: true, - - // Show the center indicator for guiding - center: true, - - // Show the white modal to highlight the crop box - highlight: true, - - // Show the grid background - background: true, - - // Enable to crop the image automatically when initialize - autoCrop: true, - - // Define the percentage of automatic cropping area when initializes - autoCropArea: 0.8, - - // Enable to move the image - movable: true, - - // Enable to rotate the image - rotatable: true, - - // Enable to scale the image - scalable: true, - - // Enable to zoom the image - zoomable: true, - - // Enable to zoom the image by dragging touch - zoomOnTouch: true, - - // Enable to zoom the image by wheeling mouse - zoomOnWheel: true, - - // Define zoom ratio when zoom the image by wheeling mouse - wheelZoomRatio: 0.1, - - // Enable to move the crop box - cropBoxMovable: true, - - // Enable to resize the crop box - cropBoxResizable: true, - - // Toggle drag mode between "crop" and "move" when click twice on the cropper - toggleDragModeOnDblclick: true, - - // Size limitation - minCanvasWidth: 0, - minCanvasHeight: 0, - minCropBoxWidth: 0, - minCropBoxHeight: 0, - minContainerWidth: 200, - minContainerHeight: 100, - - // Shortcuts of events - ready: null, - cropstart: null, - cropmove: null, - cropend: null, - crop: null, - zoom: null - }; - - var TEMPLATE = '
                                      ' + '
                                      ' + '
                                      ' + '
                                      ' + '
                                      ' + '
                                      ' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
                                      ' + '
                                      '; - - var REGEXP_DATA_URL_HEAD = /^data:.*,/; - var REGEXP_USERAGENT = /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i; - var navigator = typeof window !== 'undefined' ? window.navigator : null; - var IS_SAFARI_OR_UIWEBVIEW = navigator && REGEXP_USERAGENT.test(navigator.userAgent); - var fromCharCode = String.fromCharCode; - - function isNumber(n) { - return typeof n === 'number' && !isNaN(n); - } - - function isUndefined(n) { - return typeof n === 'undefined'; - } - - function toArray(obj, offset) { - var args = []; - - // This is necessary for IE8 - if (isNumber(offset)) { - args.push(offset); - } - - return args.slice.apply(obj, args); - } - - // Custom proxy to avoid jQuery's guid - function proxy(fn, context) { - for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { - args[_key - 2] = arguments[_key]; - } - - return function () { - for (var _len2 = arguments.length, args2 = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args2[_key2] = arguments[_key2]; - } - - return fn.apply(context, args.concat(toArray(args2))); - }; - } - - function objectKeys(obj) { - var keys = []; - - $.each(obj, function (key) { - keys.push(key); - }); - - return keys; - } - - function isCrossOriginURL(url) { - var parts = url.match(/^(https?:)\/\/([^:/?#]+):?(\d*)/i); - - return parts && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port); - } - - function addTimestamp(url) { - var timestamp = 'timestamp=' + new Date().getTime(); - - return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp; - } - - function getImageSize(image, callback) { - // Modern browsers (ignore Safari, #120 & #509) - if (image.naturalWidth && !IS_SAFARI_OR_UIWEBVIEW) { - callback(image.naturalWidth, image.naturalHeight); - return; - } - - // IE8: Don't use `new Image()` here (#319) - var newImage = document.createElement('img'); - - newImage.onload = function load() { - callback(this.width, this.height); - }; - - newImage.src = image.src; - } - - function getTransform(options) { - var transforms = []; - var translateX = options.translateX; - var translateY = options.translateY; - var rotate = options.rotate; - var scaleX = options.scaleX; - var scaleY = options.scaleY; - - if (isNumber(translateX) && translateX !== 0) { - transforms.push('translateX(' + translateX + 'px)'); - } - - if (isNumber(translateY) && translateY !== 0) { - transforms.push('translateY(' + translateY + 'px)'); - } - - // Rotate should come first before scale to match orientation transform - if (isNumber(rotate) && rotate !== 0) { - transforms.push('rotate(' + rotate + 'deg)'); - } - - if (isNumber(scaleX) && scaleX !== 1) { - transforms.push('scaleX(' + scaleX + ')'); - } - - if (isNumber(scaleY) && scaleY !== 1) { - transforms.push('scaleY(' + scaleY + ')'); - } - - return transforms.length ? transforms.join(' ') : 'none'; - } - - function getRotatedSizes(data, isReversed) { - var deg = Math.abs(data.degree) % 180; - var arc = (deg > 90 ? 180 - deg : deg) * Math.PI / 180; - var sinArc = Math.sin(arc); - var cosArc = Math.cos(arc); - var width = data.width; - var height = data.height; - var aspectRatio = data.aspectRatio; - var newWidth = void 0; - var newHeight = void 0; - - if (!isReversed) { - newWidth = width * cosArc + height * sinArc; - newHeight = width * sinArc + height * cosArc; - } else { - newWidth = width / (cosArc + sinArc / aspectRatio); - newHeight = newWidth / aspectRatio; - } - - return { - width: newWidth, - height: newHeight - }; - } - - function getSourceCanvas(image, data, options) { - var canvas = $('')[0]; - var context = canvas.getContext('2d'); - var dstX = 0; - var dstY = 0; - var dstWidth = data.naturalWidth; - var dstHeight = data.naturalHeight; - var rotate = data.rotate; - var scaleX = data.scaleX; - var scaleY = data.scaleY; - var scalable = isNumber(scaleX) && isNumber(scaleY) && (scaleX !== 1 || scaleY !== 1); - var rotatable = isNumber(rotate) && rotate !== 0; - var advanced = rotatable || scalable; - var canvasWidth = dstWidth * Math.abs(scaleX || 1); - var canvasHeight = dstHeight * Math.abs(scaleY || 1); - var translateX = void 0; - var translateY = void 0; - var rotated = void 0; - - if (scalable) { - translateX = canvasWidth / 2; - translateY = canvasHeight / 2; - } - - if (rotatable) { - rotated = getRotatedSizes({ - width: canvasWidth, - height: canvasHeight, - degree: rotate - }); - - canvasWidth = rotated.width; - canvasHeight = rotated.height; - translateX = canvasWidth / 2; - translateY = canvasHeight / 2; - } - - canvas.width = canvasWidth; - canvas.height = canvasHeight; - - if (options.fillColor) { - context.fillStyle = options.fillColor; - context.fillRect(0, 0, canvasWidth, canvasHeight); - } - - if (advanced) { - dstX = -dstWidth / 2; - dstY = -dstHeight / 2; - - context.save(); - context.translate(translateX, translateY); - } - - // Rotate should come first before scale as in the "getTransform" function - if (rotatable) { - context.rotate(rotate * Math.PI / 180); - } - - if (scalable) { - context.scale(scaleX, scaleY); - } - - context.imageSmoothingEnabled = !!options.imageSmoothingEnabled; - - if (options.imageSmoothingQuality) { - context.imageSmoothingQuality = options.imageSmoothingQuality; - } - - context.drawImage(image, Math.floor(dstX), Math.floor(dstY), Math.floor(dstWidth), Math.floor(dstHeight)); - - if (advanced) { - context.restore(); - } - - return canvas; - } - - function getStringFromCharCode(dataView, start, length) { - var str = ''; - var i = void 0; - - for (i = start, length += start; i < length; i += 1) { - str += fromCharCode(dataView.getUint8(i)); - } - - return str; - } - - function getOrientation(arrayBuffer) { - var dataView = new DataView(arrayBuffer); - var length = dataView.byteLength; - var orientation = void 0; - var exifIDCode = void 0; - var tiffOffset = void 0; - var firstIFDOffset = void 0; - var littleEndian = void 0; - var endianness = void 0; - var app1Start = void 0; - var ifdStart = void 0; - var offset = void 0; - var i = void 0; - - // Only handle JPEG image (start by 0xFFD8) - if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) { - offset = 2; - - while (offset < length) { - if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) { - app1Start = offset; - break; - } - - offset += 1; - } - } - - if (app1Start) { - exifIDCode = app1Start + 4; - tiffOffset = app1Start + 10; - - if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') { - endianness = dataView.getUint16(tiffOffset); - littleEndian = endianness === 0x4949; - - if (littleEndian || endianness === 0x4D4D /* bigEndian */) { - if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) { - firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian); - - if (firstIFDOffset >= 0x00000008) { - ifdStart = tiffOffset + firstIFDOffset; - } - } - } - } - } - - if (ifdStart) { - length = dataView.getUint16(ifdStart, littleEndian); - - for (i = 0; i < length; i += 1) { - offset = ifdStart + i * 12 + 2; - - if (dataView.getUint16(offset, littleEndian) === 0x0112 /* Orientation */) { - // 8 is the offset of the current tag's value - offset += 8; - - // Get the original orientation value - orientation = dataView.getUint16(offset, littleEndian); - - // Override the orientation with its default value for Safari (#120) - if (IS_SAFARI_OR_UIWEBVIEW) { - dataView.setUint16(offset, 1, littleEndian); - } - - break; - } - } - } - - return orientation; - } - - function dataURLToArrayBuffer(dataURL) { - var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, ''); - var binary = atob(base64); - var length = binary.length; - var arrayBuffer = new ArrayBuffer(length); - var dataView = new Uint8Array(arrayBuffer); - var i = void 0; - - for (i = 0; i < length; i += 1) { - dataView[i] = binary.charCodeAt(i); - } - - return arrayBuffer; - } - - // Only available for JPEG image - function arrayBufferToDataURL(arrayBuffer) { - var dataView = new Uint8Array(arrayBuffer); - var length = dataView.length; - var base64 = ''; - var i = void 0; - - for (i = 0; i < length; i += 1) { - base64 += fromCharCode(dataView[i]); - } - - return 'data:image/jpeg;base64,' + btoa(base64); - } - - var render = { - render: function render() { - var self = this; - - self.initContainer(); - self.initCanvas(); - self.initCropBox(); - - self.renderCanvas(); - - if (self.cropped) { - self.renderCropBox(); - } - }, - initContainer: function initContainer() { - var self = this; - var options = self.options; - var $this = self.$element; - var $container = self.$container; - var $cropper = self.$cropper; - var hidden = 'cropper-hidden'; - - $cropper.addClass(hidden); - $this.removeClass(hidden); - - $cropper.css(self.container = { - width: Math.max($container.width(), Number(options.minContainerWidth) || 200), - height: Math.max($container.height(), Number(options.minContainerHeight) || 100) - }); - - $this.addClass(hidden); - $cropper.removeClass(hidden); - }, - - - // Canvas (image wrapper) - initCanvas: function initCanvas() { - var self = this; - var viewMode = self.options.viewMode; - var container = self.container; - var containerWidth = container.width; - var containerHeight = container.height; - var image = self.image; - var imageNaturalWidth = image.naturalWidth; - var imageNaturalHeight = image.naturalHeight; - var is90Degree = Math.abs(image.rotate) % 180 === 90; - var naturalWidth = is90Degree ? imageNaturalHeight : imageNaturalWidth; - var naturalHeight = is90Degree ? imageNaturalWidth : imageNaturalHeight; - var aspectRatio = naturalWidth / naturalHeight; - var canvasWidth = containerWidth; - var canvasHeight = containerHeight; - - if (containerHeight * aspectRatio > containerWidth) { - if (viewMode === 3) { - canvasWidth = containerHeight * aspectRatio; - } else { - canvasHeight = containerWidth / aspectRatio; - } - } else if (viewMode === 3) { - canvasHeight = containerWidth / aspectRatio; - } else { - canvasWidth = containerHeight * aspectRatio; - } - - var canvas = { - naturalWidth: naturalWidth, - naturalHeight: naturalHeight, - aspectRatio: aspectRatio, - width: canvasWidth, - height: canvasHeight - }; - - canvas.left = (containerWidth - canvasWidth) / 2; - canvas.top = (containerHeight - canvasHeight) / 2; - canvas.oldLeft = canvas.left; - canvas.oldTop = canvas.top; - - self.canvas = canvas; - self.limited = viewMode === 1 || viewMode === 2; - self.limitCanvas(true, true); - self.initialImage = $.extend({}, image); - self.initialCanvas = $.extend({}, canvas); - }, - limitCanvas: function limitCanvas(isSizeLimited, isPositionLimited) { - var self = this; - var options = self.options; - var viewMode = options.viewMode; - var container = self.container; - var containerWidth = container.width; - var containerHeight = container.height; - var canvas = self.canvas; - var aspectRatio = canvas.aspectRatio; - var cropBox = self.cropBox; - var cropped = self.cropped && cropBox; - - if (isSizeLimited) { - var minCanvasWidth = Number(options.minCanvasWidth) || 0; - var minCanvasHeight = Number(options.minCanvasHeight) || 0; - - if (viewMode) { - if (viewMode > 1) { - minCanvasWidth = Math.max(minCanvasWidth, containerWidth); - minCanvasHeight = Math.max(minCanvasHeight, containerHeight); - - if (viewMode === 3) { - if (minCanvasHeight * aspectRatio > minCanvasWidth) { - minCanvasWidth = minCanvasHeight * aspectRatio; - } else { - minCanvasHeight = minCanvasWidth / aspectRatio; - } - } - } else if (minCanvasWidth) { - minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBox.width : 0); - } else if (minCanvasHeight) { - minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBox.height : 0); - } else if (cropped) { - minCanvasWidth = cropBox.width; - minCanvasHeight = cropBox.height; - - if (minCanvasHeight * aspectRatio > minCanvasWidth) { - minCanvasWidth = minCanvasHeight * aspectRatio; - } else { - minCanvasHeight = minCanvasWidth / aspectRatio; - } - } - } - - if (minCanvasWidth && minCanvasHeight) { - if (minCanvasHeight * aspectRatio > minCanvasWidth) { - minCanvasHeight = minCanvasWidth / aspectRatio; - } else { - minCanvasWidth = minCanvasHeight * aspectRatio; - } - } else if (minCanvasWidth) { - minCanvasHeight = minCanvasWidth / aspectRatio; - } else if (minCanvasHeight) { - minCanvasWidth = minCanvasHeight * aspectRatio; - } - - canvas.minWidth = minCanvasWidth; - canvas.minHeight = minCanvasHeight; - canvas.maxWidth = Infinity; - canvas.maxHeight = Infinity; - } - - if (isPositionLimited) { - if (viewMode) { - var newCanvasLeft = containerWidth - canvas.width; - var newCanvasTop = containerHeight - canvas.height; - - canvas.minLeft = Math.min(0, newCanvasLeft); - canvas.minTop = Math.min(0, newCanvasTop); - canvas.maxLeft = Math.max(0, newCanvasLeft); - canvas.maxTop = Math.max(0, newCanvasTop); - - if (cropped && self.limited) { - canvas.minLeft = Math.min(cropBox.left, cropBox.left + cropBox.width - canvas.width); - canvas.minTop = Math.min(cropBox.top, cropBox.top + cropBox.height - canvas.height); - canvas.maxLeft = cropBox.left; - canvas.maxTop = cropBox.top; - - if (viewMode === 2) { - if (canvas.width >= containerWidth) { - canvas.minLeft = Math.min(0, newCanvasLeft); - canvas.maxLeft = Math.max(0, newCanvasLeft); - } - - if (canvas.height >= containerHeight) { - canvas.minTop = Math.min(0, newCanvasTop); - canvas.maxTop = Math.max(0, newCanvasTop); - } - } - } - } else { - canvas.minLeft = -canvas.width; - canvas.minTop = -canvas.height; - canvas.maxLeft = containerWidth; - canvas.maxTop = containerHeight; - } - } - }, - renderCanvas: function renderCanvas(isChanged) { - var self = this; - var canvas = self.canvas; - var image = self.image; - var rotate = image.rotate; - var naturalWidth = image.naturalWidth; - var naturalHeight = image.naturalHeight; - - if (self.rotated) { - self.rotated = false; - - // Computes rotated sizes with image sizes - var rotated = getRotatedSizes({ - width: image.width, - height: image.height, - degree: rotate - }); - var aspectRatio = rotated.width / rotated.height; - var isSquareImage = image.aspectRatio === 1; - - if (isSquareImage || aspectRatio !== canvas.aspectRatio) { - canvas.left -= (rotated.width - canvas.width) / 2; - canvas.top -= (rotated.height - canvas.height) / 2; - canvas.width = rotated.width; - canvas.height = rotated.height; - canvas.aspectRatio = aspectRatio; - canvas.naturalWidth = naturalWidth; - canvas.naturalHeight = naturalHeight; - - // Computes rotated sizes with natural image sizes - if (isSquareImage && rotate % 90 || rotate % 180) { - var rotated2 = getRotatedSizes({ - width: naturalWidth, - height: naturalHeight, - degree: rotate - }); - - canvas.naturalWidth = rotated2.width; - canvas.naturalHeight = rotated2.height; - } - - self.limitCanvas(true, false); - } - } - - if (canvas.width > canvas.maxWidth || canvas.width < canvas.minWidth) { - canvas.left = canvas.oldLeft; - } - - if (canvas.height > canvas.maxHeight || canvas.height < canvas.minHeight) { - canvas.top = canvas.oldTop; - } - - canvas.width = Math.min(Math.max(canvas.width, canvas.minWidth), canvas.maxWidth); - canvas.height = Math.min(Math.max(canvas.height, canvas.minHeight), canvas.maxHeight); - - self.limitCanvas(false, true); - - canvas.left = Math.min(Math.max(canvas.left, canvas.minLeft), canvas.maxLeft); - canvas.top = Math.min(Math.max(canvas.top, canvas.minTop), canvas.maxTop); - canvas.oldLeft = canvas.left; - canvas.oldTop = canvas.top; - - self.$canvas.css({ - width: canvas.width, - height: canvas.height, - transform: getTransform({ - translateX: canvas.left, - translateY: canvas.top - }) - }); - - self.renderImage(); - - if (self.cropped && self.limited) { - self.limitCropBox(true, true); - } - - if (isChanged) { - self.output(); - } - }, - renderImage: function renderImage(isChanged) { - var self = this; - var canvas = self.canvas; - var image = self.image; - var reversed = void 0; - - if (image.rotate) { - reversed = getRotatedSizes({ - width: canvas.width, - height: canvas.height, - degree: image.rotate, - aspectRatio: image.aspectRatio - }, true); - } - - $.extend(image, reversed ? { - width: reversed.width, - height: reversed.height, - left: (canvas.width - reversed.width) / 2, - top: (canvas.height - reversed.height) / 2 - } : { - width: canvas.width, - height: canvas.height, - left: 0, - top: 0 - }); - - self.$clone.css({ - width: image.width, - height: image.height, - transform: getTransform($.extend({ - translateX: image.left, - translateY: image.top - }, image)) - }); - - if (isChanged) { - self.output(); - } - }, - initCropBox: function initCropBox() { - var self = this; - var options = self.options; - var canvas = self.canvas; - var aspectRatio = options.aspectRatio; - var autoCropArea = Number(options.autoCropArea) || 0.8; - var cropBox = { - width: canvas.width, - height: canvas.height - }; - - if (aspectRatio) { - if (canvas.height * aspectRatio > canvas.width) { - cropBox.height = cropBox.width / aspectRatio; - } else { - cropBox.width = cropBox.height * aspectRatio; - } - } - - self.cropBox = cropBox; - self.limitCropBox(true, true); - - // Initialize auto crop area - cropBox.width = Math.min(Math.max(cropBox.width, cropBox.minWidth), cropBox.maxWidth); - cropBox.height = Math.min(Math.max(cropBox.height, cropBox.minHeight), cropBox.maxHeight); - - // The width of auto crop area must large than "minWidth", and the height too. (#164) - cropBox.width = Math.max(cropBox.minWidth, cropBox.width * autoCropArea); - cropBox.height = Math.max(cropBox.minHeight, cropBox.height * autoCropArea); - cropBox.left = canvas.left + (canvas.width - cropBox.width) / 2; - cropBox.top = canvas.top + (canvas.height - cropBox.height) / 2; - cropBox.oldLeft = cropBox.left; - cropBox.oldTop = cropBox.top; - - self.initialCropBox = $.extend({}, cropBox); - }, - limitCropBox: function limitCropBox(isSizeLimited, isPositionLimited) { - var self = this; - var options = self.options; - var aspectRatio = options.aspectRatio; - var container = self.container; - var containerWidth = container.width; - var containerHeight = container.height; - var canvas = self.canvas; - var cropBox = self.cropBox; - var limited = self.limited; - - if (isSizeLimited) { - var minCropBoxWidth = Number(options.minCropBoxWidth) || 0; - var minCropBoxHeight = Number(options.minCropBoxHeight) || 0; - var maxCropBoxWidth = Math.min(containerWidth, limited ? canvas.width : containerWidth); - var maxCropBoxHeight = Math.min(containerHeight, limited ? canvas.height : containerHeight); - - // The min/maxCropBoxWidth/Height must be less than containerWidth/Height - minCropBoxWidth = Math.min(minCropBoxWidth, containerWidth); - minCropBoxHeight = Math.min(minCropBoxHeight, containerHeight); - - if (aspectRatio) { - if (minCropBoxWidth && minCropBoxHeight) { - if (minCropBoxHeight * aspectRatio > minCropBoxWidth) { - minCropBoxHeight = minCropBoxWidth / aspectRatio; - } else { - minCropBoxWidth = minCropBoxHeight * aspectRatio; - } - } else if (minCropBoxWidth) { - minCropBoxHeight = minCropBoxWidth / aspectRatio; - } else if (minCropBoxHeight) { - minCropBoxWidth = minCropBoxHeight * aspectRatio; - } - - if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) { - maxCropBoxHeight = maxCropBoxWidth / aspectRatio; - } else { - maxCropBoxWidth = maxCropBoxHeight * aspectRatio; - } - } - - // The minWidth/Height must be less than maxWidth/Height - cropBox.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth); - cropBox.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight); - cropBox.maxWidth = maxCropBoxWidth; - cropBox.maxHeight = maxCropBoxHeight; - } - - if (isPositionLimited) { - if (limited) { - cropBox.minLeft = Math.max(0, canvas.left); - cropBox.minTop = Math.max(0, canvas.top); - cropBox.maxLeft = Math.min(containerWidth, canvas.left + canvas.width) - cropBox.width; - cropBox.maxTop = Math.min(containerHeight, canvas.top + canvas.height) - cropBox.height; - } else { - cropBox.minLeft = 0; - cropBox.minTop = 0; - cropBox.maxLeft = containerWidth - cropBox.width; - cropBox.maxTop = containerHeight - cropBox.height; - } - } - }, - renderCropBox: function renderCropBox() { - var self = this; - var options = self.options; - var container = self.container; - var containerWidth = container.width; - var containerHeight = container.height; - var cropBox = self.cropBox; - - if (cropBox.width > cropBox.maxWidth || cropBox.width < cropBox.minWidth) { - cropBox.left = cropBox.oldLeft; - } - - if (cropBox.height > cropBox.maxHeight || cropBox.height < cropBox.minHeight) { - cropBox.top = cropBox.oldTop; - } - - cropBox.width = Math.min(Math.max(cropBox.width, cropBox.minWidth), cropBox.maxWidth); - cropBox.height = Math.min(Math.max(cropBox.height, cropBox.minHeight), cropBox.maxHeight); - - self.limitCropBox(false, true); - - cropBox.left = Math.min(Math.max(cropBox.left, cropBox.minLeft), cropBox.maxLeft); - cropBox.top = Math.min(Math.max(cropBox.top, cropBox.minTop), cropBox.maxTop); - cropBox.oldLeft = cropBox.left; - cropBox.oldTop = cropBox.top; - - if (options.movable && options.cropBoxMovable) { - // Turn to move the canvas when the crop box is equal to the container - self.$face.data('action', cropBox.width === containerWidth && cropBox.height === containerHeight ? 'move' : 'all'); - } - - self.$cropBox.css({ - width: cropBox.width, - height: cropBox.height, - transform: getTransform({ - translateX: cropBox.left, - translateY: cropBox.top - }) - }); - - if (self.cropped && self.limited) { - self.limitCanvas(true, true); - } - - if (!self.disabled) { - self.output(); - } - }, - output: function output() { - var self = this; - - self.preview(); - - if (self.completed) { - self.trigger('crop', self.getData()); - } - } - }; - - var DATA_PREVIEW = 'preview'; - - var preview = { - initPreview: function initPreview() { - var self = this; - var crossOrigin = self.crossOrigin; - var url = crossOrigin ? self.crossOriginUrl : self.url; - var image = document.createElement('img'); - - if (crossOrigin) { - image.crossOrigin = crossOrigin; - } - - image.src = url; - - var $clone2 = $(image); - - self.$preview = $(self.options.preview); - self.$clone2 = $clone2; - self.$viewBox.html($clone2); - self.$preview.each(function (i, element) { - var $this = $(element); - var img = document.createElement('img'); - - // Save the original size for recover - $this.data(DATA_PREVIEW, { - width: $this.width(), - height: $this.height(), - html: $this.html() - }); - - if (crossOrigin) { - img.crossOrigin = crossOrigin; - } - - img.src = url; - - /** - * Override img element styles - * Add `display:block` to avoid margin top issue - * Add `height:auto` to override `height` attribute on IE8 - * (Occur only when margin-top <= -height) - */ - img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;"'; - - $this.html(img); - }); - }, - resetPreview: function resetPreview() { - this.$preview.each(function (i, element) { - var $this = $(element); - var data = $this.data(DATA_PREVIEW); - - $this.css({ - width: data.width, - height: data.height - }).html(data.html).removeData(DATA_PREVIEW); - }); - }, - preview: function preview() { - var self = this; - var image = self.image; - var canvas = self.canvas; - var cropBox = self.cropBox; - var cropBoxWidth = cropBox.width; - var cropBoxHeight = cropBox.height; - var width = image.width; - var height = image.height; - var left = cropBox.left - canvas.left - image.left; - var top = cropBox.top - canvas.top - image.top; - - if (!self.cropped || self.disabled) { - return; - } - - self.$clone2.css({ - width: width, - height: height, - transform: getTransform($.extend({ - translateX: -left, - translateY: -top - }, image)) - }); - - self.$preview.each(function (i, element) { - var $this = $(element); - var data = $this.data(DATA_PREVIEW); - var originalWidth = data.width; - var originalHeight = data.height; - var newWidth = originalWidth; - var newHeight = originalHeight; - var ratio = 1; - - if (cropBoxWidth) { - ratio = originalWidth / cropBoxWidth; - newHeight = cropBoxHeight * ratio; - } - - if (cropBoxHeight && newHeight > originalHeight) { - ratio = originalHeight / cropBoxHeight; - newWidth = cropBoxWidth * ratio; - newHeight = originalHeight; - } - - $this.css({ - width: newWidth, - height: newHeight - }).find('img').css({ - width: width * ratio, - height: height * ratio, - transform: getTransform($.extend({ - translateX: -left * ratio, - translateY: -top * ratio - }, image)) - }); - }); - } - }; - - // Globals - var PointerEvent = typeof window !== 'undefined' ? window.PointerEvent : null; - - // Events - var EVENT_POINTER_DOWN = PointerEvent ? 'pointerdown' : 'touchstart mousedown'; - var EVENT_POINTER_MOVE = PointerEvent ? 'pointermove' : 'touchmove mousemove'; - var EVENT_POINTER_UP = PointerEvent ? ' pointerup pointercancel' : 'touchend touchcancel mouseup'; - var EVENT_WHEEL = 'wheel mousewheel DOMMouseScroll'; - var EVENT_DBLCLICK = 'dblclick'; - var EVENT_RESIZE = 'resize'; - var EVENT_CROP_START = 'cropstart'; - var EVENT_CROP_MOVE = 'cropmove'; - var EVENT_CROP_END = 'cropend'; - var EVENT_CROP = 'crop'; - var EVENT_ZOOM = 'zoom'; - - var events = { - bind: function bind() { - var self = this; - var options = self.options; - var $this = self.$element; - var $cropper = self.$cropper; - - if ($.isFunction(options.cropstart)) { - $this.on(EVENT_CROP_START, options.cropstart); - } - - if ($.isFunction(options.cropmove)) { - $this.on(EVENT_CROP_MOVE, options.cropmove); - } - - if ($.isFunction(options.cropend)) { - $this.on(EVENT_CROP_END, options.cropend); - } - - if ($.isFunction(options.crop)) { - $this.on(EVENT_CROP, options.crop); - } - - if ($.isFunction(options.zoom)) { - $this.on(EVENT_ZOOM, options.zoom); - } - - $cropper.on(EVENT_POINTER_DOWN, proxy(self.cropStart, this)); - - if (options.zoomable && options.zoomOnWheel) { - $cropper.on(EVENT_WHEEL, proxy(self.wheel, this)); - } - - if (options.toggleDragModeOnDblclick) { - $cropper.on(EVENT_DBLCLICK, proxy(self.dblclick, this)); - } - - $(document).on(EVENT_POINTER_MOVE, self.onCropMove = proxy(self.cropMove, this)).on(EVENT_POINTER_UP, self.onCropEnd = proxy(self.cropEnd, this)); - - if (options.responsive) { - $(window).on(EVENT_RESIZE, self.onResize = proxy(self.resize, this)); - } - }, - unbind: function unbind() { - var self = this; - var options = self.options; - var $this = self.$element; - var $cropper = self.$cropper; - - if ($.isFunction(options.cropstart)) { - $this.off(EVENT_CROP_START, options.cropstart); - } - - if ($.isFunction(options.cropmove)) { - $this.off(EVENT_CROP_MOVE, options.cropmove); - } - - if ($.isFunction(options.cropend)) { - $this.off(EVENT_CROP_END, options.cropend); - } - - if ($.isFunction(options.crop)) { - $this.off(EVENT_CROP, options.crop); - } - - if ($.isFunction(options.zoom)) { - $this.off(EVENT_ZOOM, options.zoom); - } - - $cropper.off(EVENT_POINTER_DOWN, self.cropStart); - - if (options.zoomable && options.zoomOnWheel) { - $cropper.off(EVENT_WHEEL, self.wheel); - } - - if (options.toggleDragModeOnDblclick) { - $cropper.off(EVENT_DBLCLICK, self.dblclick); - } - - $(document).off(EVENT_POINTER_MOVE, self.onCropMove).off(EVENT_POINTER_UP, self.onCropEnd); - - if (options.responsive) { - $(window).off(EVENT_RESIZE, self.onResize); - } - } - }; - - var REGEXP_ACTIONS = /^(e|w|s|n|se|sw|ne|nw|all|crop|move|zoom)$/; - - function getPointer(_ref, endOnly) { - var pageX = _ref.pageX, - pageY = _ref.pageY; - - var end = { - endX: pageX, - endY: pageY - }; - - if (endOnly) { - return end; - } - - return $.extend({ - startX: pageX, - startY: pageY - }, end); - } - - var handlers = { - resize: function resize() { - var self = this; - var options = self.options; - var $container = self.$container; - var container = self.container; - var minContainerWidth = Number(options.minContainerWidth) || 200; - var minContainerHeight = Number(options.minContainerHeight) || 100; - - if (self.disabled || container.width === minContainerWidth || container.height === minContainerHeight) { - return; - } - - var ratio = $container.width() / container.width; - - // Resize when width changed or height changed - if (ratio !== 1 || $container.height() !== container.height) { - var canvasData = void 0; - var cropBoxData = void 0; - - if (options.restore) { - canvasData = self.getCanvasData(); - cropBoxData = self.getCropBoxData(); - } - - self.render(); - - if (options.restore) { - self.setCanvasData($.each(canvasData, function (i, n) { - canvasData[i] = n * ratio; - })); - self.setCropBoxData($.each(cropBoxData, function (i, n) { - cropBoxData[i] = n * ratio; - })); - } - } - }, - dblclick: function dblclick() { - var self = this; - - if (self.disabled || self.options.dragMode === 'none') { - return; - } - - self.setDragMode(self.$dragBox.hasClass('cropper-crop') ? 'move' : 'crop'); - }, - wheel: function wheel(event) { - var self = this; - var e = event.originalEvent || event; - var ratio = Number(self.options.wheelZoomRatio) || 0.1; - - if (self.disabled) { - return; - } - - event.preventDefault(); - - // Limit wheel speed to prevent zoom too fast - if (self.wheeling) { - return; - } - - self.wheeling = true; - - setTimeout(function () { - self.wheeling = false; - }, 50); - - var delta = 1; - - if (e.deltaY) { - delta = e.deltaY > 0 ? 1 : -1; - } else if (e.wheelDelta) { - delta = -e.wheelDelta / 120; - } else if (e.detail) { - delta = e.detail > 0 ? 1 : -1; - } - - self.zoom(-delta * ratio, event); - }, - cropStart: function cropStart(e) { - var self = this; - - if (self.disabled) { - return; - } - - var options = self.options; - var pointers = self.pointers; - var originalEvent = e.originalEvent; - var action = void 0; - - if (originalEvent && originalEvent.changedTouches) { - // Handle touch event - $.each(originalEvent.changedTouches, function (i, touch) { - pointers[touch.identifier] = getPointer(touch); - }); - } else { - // Handle mouse event and pointer event - pointers[originalEvent && originalEvent.pointerId || 0] = getPointer(originalEvent || e); - } - - if (objectKeys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) { - action = 'zoom'; - } else { - action = $(e.target).data('action'); - } - - if (!REGEXP_ACTIONS.test(action)) { - return; - } - - if (self.trigger('cropstart', { - originalEvent: originalEvent, - action: action - }).isDefaultPrevented()) { - return; - } - - e.preventDefault(); - - self.action = action; - self.cropping = false; - - if (action === 'crop') { - self.cropping = true; - self.$dragBox.addClass('cropper-modal'); - } - }, - cropMove: function cropMove(e) { - var self = this; - var action = self.action; - - if (self.disabled || !action) { - return; - } - - var pointers = self.pointers; - var originalEvent = e.originalEvent; - - e.preventDefault(); - - if (self.trigger('cropmove', { - originalEvent: originalEvent, - action: action - }).isDefaultPrevented()) { - return; - } - - if (originalEvent && originalEvent.changedTouches) { - $.each(originalEvent.changedTouches, function (i, touch) { - $.extend(pointers[touch.identifier], getPointer(touch, true)); - }); - } else { - $.extend(pointers[originalEvent && originalEvent.pointerId || 0], getPointer(originalEvent || e, true)); - } - - self.change(e); - }, - cropEnd: function cropEnd(e) { - var self = this; - - if (self.disabled) { - return; - } - - var action = self.action; - var pointers = self.pointers; - var originalEvent = e.originalEvent; - - if (originalEvent && originalEvent.changedTouches) { - $.each(originalEvent.changedTouches, function (i, touch) { - delete pointers[touch.identifier]; - }); - } else { - delete pointers[originalEvent && originalEvent.pointerId || 0]; - } - - if (!action) { - return; - } - - e.preventDefault(); - - if (!objectKeys(pointers).length) { - self.action = ''; - } - - if (self.cropping) { - self.cropping = false; - self.$dragBox.toggleClass('cropper-modal', self.cropped && self.options.modal); - } - - self.trigger('cropend', { - originalEvent: originalEvent, - action: action - }); - } - }; - - // Actions - var ACTION_EAST = 'e'; - var ACTION_WEST = 'w'; - var ACTION_SOUTH = 's'; - var ACTION_NORTH = 'n'; - var ACTION_SOUTH_EAST = 'se'; - var ACTION_SOUTH_WEST = 'sw'; - var ACTION_NORTH_EAST = 'ne'; - var ACTION_NORTH_WEST = 'nw'; - - function getMaxZoomRatio(pointers) { - var pointers2 = $.extend({}, pointers); - var ratios = []; - - $.each(pointers, function (pointerId, pointer) { - delete pointers2[pointerId]; - - $.each(pointers2, function (pointerId2, pointer2) { - var x1 = Math.abs(pointer.startX - pointer2.startX); - var y1 = Math.abs(pointer.startY - pointer2.startY); - var x2 = Math.abs(pointer.endX - pointer2.endX); - var y2 = Math.abs(pointer.endY - pointer2.endY); - var z1 = Math.sqrt(x1 * x1 + y1 * y1); - var z2 = Math.sqrt(x2 * x2 + y2 * y2); - var ratio = (z2 - z1) / z1; - - ratios.push(ratio); - }); - }); - - ratios.sort(function (a, b) { - return Math.abs(a) < Math.abs(b); - }); - - return ratios[0]; - } - - var change = { - change: function change(e) { - var self = this; - var options = self.options; - var pointers = self.pointers; - var pointer = pointers[objectKeys(pointers)[0]]; - var container = self.container; - var canvas = self.canvas; - var cropBox = self.cropBox; - var action = self.action; - var aspectRatio = options.aspectRatio; - var width = cropBox.width; - var height = cropBox.height; - var left = cropBox.left; - var top = cropBox.top; - var right = left + width; - var bottom = top + height; - var minLeft = 0; - var minTop = 0; - var maxWidth = container.width; - var maxHeight = container.height; - var renderable = true; - var offset = void 0; - - // Locking aspect ratio in "free mode" by holding shift key (#259) - if (!aspectRatio && e.shiftKey) { - aspectRatio = width && height ? width / height : 1; - } - - if (self.limited) { - minLeft = cropBox.minLeft; - minTop = cropBox.minTop; - maxWidth = minLeft + Math.min(container.width, canvas.width, canvas.left + canvas.width); - maxHeight = minTop + Math.min(container.height, canvas.height, canvas.top + canvas.height); - } - - var range = { - x: pointer.endX - pointer.startX, - y: pointer.endY - pointer.startY - }; - - switch (action) { - // Move crop box - case 'all': - left += range.x; - top += range.y; - break; - - // Resize crop box - case ACTION_EAST: - if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) { - renderable = false; - break; - } - - if (right + range.x > maxWidth) { - range.x = maxWidth - right; - } - - width += range.x; - - if (aspectRatio) { - height = width / aspectRatio; - top -= range.x / aspectRatio / 2; - } - - if (width < 0) { - action = ACTION_WEST; - width = 0; - } - - break; - - case ACTION_NORTH: - if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) { - renderable = false; - break; - } - - if (top + range.y < minTop) { - range.y = minTop - top; - } - - height -= range.y; - top += range.y; - - if (aspectRatio) { - width = height * aspectRatio; - left += range.y * aspectRatio / 2; - } - - if (height < 0) { - action = ACTION_SOUTH; - height = 0; - } - - break; - - case ACTION_WEST: - if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) { - renderable = false; - break; - } - - if (left + range.x < minLeft) { - range.x = minLeft - left; - } - - width -= range.x; - left += range.x; - - if (aspectRatio) { - height = width / aspectRatio; - top += range.x / aspectRatio / 2; - } - - if (width < 0) { - action = ACTION_EAST; - width = 0; - } - - break; - - case ACTION_SOUTH: - if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) { - renderable = false; - break; - } - - if (bottom + range.y > maxHeight) { - range.y = maxHeight - bottom; - } - - height += range.y; - - if (aspectRatio) { - width = height * aspectRatio; - left -= range.y * aspectRatio / 2; - } - - if (height < 0) { - action = ACTION_NORTH; - height = 0; - } - - break; - - case ACTION_NORTH_EAST: - if (aspectRatio) { - if (range.y <= 0 && (top <= minTop || right >= maxWidth)) { - renderable = false; - break; - } - - height -= range.y; - top += range.y; - width = height * aspectRatio; - } else { - if (range.x >= 0) { - if (right < maxWidth) { - width += range.x; - } else if (range.y <= 0 && top <= minTop) { - renderable = false; - } - } else { - width += range.x; - } - - if (range.y <= 0) { - if (top > minTop) { - height -= range.y; - top += range.y; - } - } else { - height -= range.y; - top += range.y; - } - } - - if (width < 0 && height < 0) { - action = ACTION_SOUTH_WEST; - height = 0; - width = 0; - } else if (width < 0) { - action = ACTION_NORTH_WEST; - width = 0; - } else if (height < 0) { - action = ACTION_SOUTH_EAST; - height = 0; - } - - break; - - case ACTION_NORTH_WEST: - if (aspectRatio) { - if (range.y <= 0 && (top <= minTop || left <= minLeft)) { - renderable = false; - break; - } - - height -= range.y; - top += range.y; - width = height * aspectRatio; - left += range.y * aspectRatio; - } else { - if (range.x <= 0) { - if (left > minLeft) { - width -= range.x; - left += range.x; - } else if (range.y <= 0 && top <= minTop) { - renderable = false; - } - } else { - width -= range.x; - left += range.x; - } - - if (range.y <= 0) { - if (top > minTop) { - height -= range.y; - top += range.y; - } - } else { - height -= range.y; - top += range.y; - } - } - - if (width < 0 && height < 0) { - action = ACTION_SOUTH_EAST; - height = 0; - width = 0; - } else if (width < 0) { - action = ACTION_NORTH_EAST; - width = 0; - } else if (height < 0) { - action = ACTION_SOUTH_WEST; - height = 0; - } - - break; - - case ACTION_SOUTH_WEST: - if (aspectRatio) { - if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) { - renderable = false; - break; - } - - width -= range.x; - left += range.x; - height = width / aspectRatio; - } else { - if (range.x <= 0) { - if (left > minLeft) { - width -= range.x; - left += range.x; - } else if (range.y >= 0 && bottom >= maxHeight) { - renderable = false; - } - } else { - width -= range.x; - left += range.x; - } - - if (range.y >= 0) { - if (bottom < maxHeight) { - height += range.y; - } - } else { - height += range.y; - } - } - - if (width < 0 && height < 0) { - action = ACTION_NORTH_EAST; - height = 0; - width = 0; - } else if (width < 0) { - action = ACTION_SOUTH_EAST; - width = 0; - } else if (height < 0) { - action = ACTION_NORTH_WEST; - height = 0; - } - - break; - - case ACTION_SOUTH_EAST: - if (aspectRatio) { - if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) { - renderable = false; - break; - } - - width += range.x; - height = width / aspectRatio; - } else { - if (range.x >= 0) { - if (right < maxWidth) { - width += range.x; - } else if (range.y >= 0 && bottom >= maxHeight) { - renderable = false; - } - } else { - width += range.x; - } - - if (range.y >= 0) { - if (bottom < maxHeight) { - height += range.y; - } - } else { - height += range.y; - } - } - - if (width < 0 && height < 0) { - action = ACTION_NORTH_WEST; - height = 0; - width = 0; - } else if (width < 0) { - action = ACTION_SOUTH_WEST; - width = 0; - } else if (height < 0) { - action = ACTION_NORTH_EAST; - height = 0; - } - - break; - - // Move canvas - case 'move': - self.move(range.x, range.y); - renderable = false; - break; - - // Zoom canvas - case 'zoom': - self.zoom(getMaxZoomRatio(pointers), e.originalEvent); - renderable = false; - break; - - // Create crop box - case 'crop': - if (!range.x || !range.y) { - renderable = false; - break; - } - - offset = self.$cropper.offset(); - left = pointer.startX - offset.left; - top = pointer.startY - offset.top; - width = cropBox.minWidth; - height = cropBox.minHeight; - - if (range.x > 0) { - action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST; - } else if (range.x < 0) { - left -= width; - action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST; - } - - if (range.y < 0) { - top -= height; - } - - // Show the crop box if is hidden - if (!self.cropped) { - self.$cropBox.removeClass('cropper-hidden'); - self.cropped = true; - - if (self.limited) { - self.limitCropBox(true, true); - } - } - - break; - - default: - } - - if (renderable) { - cropBox.width = width; - cropBox.height = height; - cropBox.left = left; - cropBox.top = top; - self.action = action; - self.renderCropBox(); - } - - // Override - $.each(pointers, function (i, p) { - p.startX = p.endX; - p.startY = p.endY; - }); - } - }; - - function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length) ; i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - - function getPointersCenter(pointers) { - var pageX = 0; - var pageY = 0; - var count = 0; - - $.each(pointers, function (i, _ref) { - var startX = _ref.startX, - startY = _ref.startY; - - pageX += startX; - pageY += startY; - count += 1; - }); - - pageX /= count; - pageY /= count; - - return { - pageX: pageX, - pageY: pageY - }; - } - - var methods = { - // Show the crop box manually - crop: function crop() { - var self = this; - - if (!self.ready || self.disabled) { - return; - } - - if (!self.cropped) { - self.cropped = true; - self.limitCropBox(true, true); - - if (self.options.modal) { - self.$dragBox.addClass('cropper-modal'); - } - - self.$cropBox.removeClass('cropper-hidden'); - } - - self.setCropBoxData(self.initialCropBox); - }, - - - // Reset the image and crop box to their initial states - reset: function reset() { - var self = this; - - if (!self.ready || self.disabled) { - return; - } - - self.image = $.extend({}, self.initialImage); - self.canvas = $.extend({}, self.initialCanvas); - self.cropBox = $.extend({}, self.initialCropBox); - - self.renderCanvas(); - - if (self.cropped) { - self.renderCropBox(); - } - }, - - - // Clear the crop box - clear: function clear() { - var self = this; - - if (!self.cropped || self.disabled) { - return; - } - - $.extend(self.cropBox, { - left: 0, - top: 0, - width: 0, - height: 0 - }); - - self.cropped = false; - self.renderCropBox(); - - self.limitCanvas(true, true); - - // Render canvas after crop box rendered - self.renderCanvas(); - - self.$dragBox.removeClass('cropper-modal'); - self.$cropBox.addClass('cropper-hidden'); - }, - - - /** - * Replace the image's src and rebuild the cropper - * - * @param {String} url - * @param {Boolean} onlyColorChanged (optional) - */ - replace: function replace(url, onlyColorChanged) { - var self = this; - - if (!self.disabled && url) { - if (self.isImg) { - self.$element.attr('src', url); - } - - if (onlyColorChanged) { - self.url = url; - self.$clone.attr('src', url); - - if (self.ready) { - self.$preview.find('img').add(self.$clone2).attr('src', url); - } - } else { - if (self.isImg) { - self.replaced = true; - } - - // Clear previous data - self.options.data = null; - self.load(url); - } - } - }, - - - // Enable (unfreeze) the cropper - enable: function enable() { - var self = this; - - if (self.ready) { - self.disabled = false; - self.$cropper.removeClass('cropper-disabled'); - } - }, - - - // Disable (freeze) the cropper - disable: function disable() { - var self = this; - - if (self.ready) { - self.disabled = true; - self.$cropper.addClass('cropper-disabled'); - } - }, - - - // Destroy the cropper and remove the instance from the image - destroy: function destroy() { - var self = this; - var $this = self.$element; - - if (self.loaded) { - if (self.isImg && self.replaced) { - $this.attr('src', self.originalUrl); - } - - self.unbuild(); - $this.removeClass('cropper-hidden'); - } else if (self.isImg) { - $this.off('load', self.start); - } else if (self.$clone) { - self.$clone.remove(); - } - - $this.removeData('cropper'); - }, - - - /** - * Move the canvas with relative offsets - * - * @param {Number} offsetX - * @param {Number} offsetY (optional) - */ - move: function move(offsetX, offsetY) { - var self = this; - var canvas = self.canvas; - - self.moveTo(isUndefined(offsetX) ? offsetX : canvas.left + Number(offsetX), isUndefined(offsetY) ? offsetY : canvas.top + Number(offsetY)); - }, - - - /** - * Move the canvas to an absolute point - * - * @param {Number} x - * @param {Number} y (optional) - */ - moveTo: function moveTo(x, y) { - var self = this; - var canvas = self.canvas; - var changed = false; - - // If "y" is not present, its default value is "x" - if (isUndefined(y)) { - y = x; - } - - x = Number(x); - y = Number(y); - - if (self.ready && !self.disabled && self.options.movable) { - if (isNumber(x)) { - canvas.left = x; - changed = true; - } - - if (isNumber(y)) { - canvas.top = y; - changed = true; - } - - if (changed) { - self.renderCanvas(true); - } - } - }, - - - /** - * Zoom the canvas with a relative ratio - * - * @param {Number} ratio - * @param {jQuery Event} _event (private) - */ - zoom: function zoom(ratio, _event) { - var self = this; - var canvas = self.canvas; - - ratio = Number(ratio); - - if (ratio < 0) { - ratio = 1 / (1 - ratio); - } else { - ratio = 1 + ratio; - } - - self.zoomTo(canvas.width * ratio / canvas.naturalWidth, _event); - }, - - - /** - * Zoom the canvas to an absolute ratio - * - * @param {Number} ratio - * @param {jQuery Event} _event (private) - */ - zoomTo: function zoomTo(ratio, _event) { - var self = this; - var options = self.options; - var pointers = self.pointers; - var canvas = self.canvas; - var width = canvas.width; - var height = canvas.height; - var naturalWidth = canvas.naturalWidth; - var naturalHeight = canvas.naturalHeight; - - ratio = Number(ratio); - - if (ratio >= 0 && self.ready && !self.disabled && options.zoomable) { - var newWidth = naturalWidth * ratio; - var newHeight = naturalHeight * ratio; - var originalEvent = void 0; - - if (_event) { - originalEvent = _event.originalEvent; - } - - if (self.trigger('zoom', { - originalEvent: originalEvent, - oldRatio: width / naturalWidth, - ratio: newWidth / naturalWidth - }).isDefaultPrevented()) { - return; - } - - if (originalEvent) { - var offset = self.$cropper.offset(); - var center = pointers && objectKeys(pointers).length ? getPointersCenter(pointers) : { - pageX: _event.pageX || originalEvent.pageX || 0, - pageY: _event.pageY || originalEvent.pageY || 0 - }; - - // Zoom from the triggering point of the event - canvas.left -= (newWidth - width) * ((center.pageX - offset.left - canvas.left) / width); - canvas.top -= (newHeight - height) * ((center.pageY - offset.top - canvas.top) / height); - } else { - // Zoom from the center of the canvas - canvas.left -= (newWidth - width) / 2; - canvas.top -= (newHeight - height) / 2; - } - - canvas.width = newWidth; - canvas.height = newHeight; - self.renderCanvas(true); - } - }, - - - /** - * Rotate the canvas with a relative degree - * - * @param {Number} degree - */ - rotate: function rotate(degree) { - var self = this; - - self.rotateTo((self.image.rotate || 0) + Number(degree)); - }, - - - /** - * Rotate the canvas to an absolute degree - * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function#rotate() - * - * @param {Number} degree - */ - rotateTo: function rotateTo(degree) { - var self = this; - - degree = Number(degree); - - if (isNumber(degree) && self.ready && !self.disabled && self.options.rotatable) { - self.image.rotate = degree % 360; - self.rotated = true; - self.renderCanvas(true); - } - }, - - - /** - * Scale the image - * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function#scale() - * - * @param {Number} scaleX - * @param {Number} scaleY (optional) - */ - scale: function scale(scaleX, scaleY) { - var self = this; - var image = self.image; - var changed = false; - - // If "scaleY" is not present, its default value is "scaleX" - if (isUndefined(scaleY)) { - scaleY = scaleX; - } - - scaleX = Number(scaleX); - scaleY = Number(scaleY); - - if (self.ready && !self.disabled && self.options.scalable) { - if (isNumber(scaleX)) { - image.scaleX = scaleX; - changed = true; - } - - if (isNumber(scaleY)) { - image.scaleY = scaleY; - changed = true; - } - - if (changed) { - self.renderImage(true); - } - } - }, - - - /** - * Scale the abscissa of the image - * - * @param {Number} scaleX - */ - scaleX: function scaleX(_scaleX) { - var self = this; - var scaleY = self.image.scaleY; - - self.scale(_scaleX, isNumber(scaleY) ? scaleY : 1); - }, - - - /** - * Scale the ordinate of the image - * - * @param {Number} scaleY - */ - scaleY: function scaleY(_scaleY) { - var self = this; - var scaleX = self.image.scaleX; - - self.scale(isNumber(scaleX) ? scaleX : 1, _scaleY); - }, - - - /** - * Get the cropped area position and size data (base on the original image) - * - * @param {Boolean} isRounded (optional) - * @return {Object} data - */ - getData: function getData(isRounded) { - var self = this; - var options = self.options; - var image = self.image; - var canvas = self.canvas; - var cropBox = self.cropBox; - var ratio = void 0; - var data = void 0; - - if (self.ready && self.cropped) { - data = { - x: cropBox.left - canvas.left, - y: cropBox.top - canvas.top, - width: cropBox.width, - height: cropBox.height - }; - - ratio = image.width / image.naturalWidth; - - $.each(data, function (i, n) { - n /= ratio; - data[i] = isRounded ? Math.round(n) : n; - }); - } else { - data = { - x: 0, - y: 0, - width: 0, - height: 0 - }; - } - - if (options.rotatable) { - data.rotate = image.rotate || 0; - } - - if (options.scalable) { - data.scaleX = image.scaleX || 1; - data.scaleY = image.scaleY || 1; - } - - return data; - }, - - - /** - * Set the cropped area position and size with new data - * - * @param {Object} data - */ - setData: function setData(data) { - var self = this; - var options = self.options; - var image = self.image; - var canvas = self.canvas; - var cropBoxData = {}; - var rotated = void 0; - var isScaled = void 0; - var ratio = void 0; - - if ($.isFunction(data)) { - data = data.call(self.element); - } - - if (self.ready && !self.disabled && $.isPlainObject(data)) { - if (options.rotatable) { - if (isNumber(data.rotate) && data.rotate !== image.rotate) { - image.rotate = data.rotate; - rotated = true; - self.rotated = rotated; - } - } - - if (options.scalable) { - if (isNumber(data.scaleX) && data.scaleX !== image.scaleX) { - image.scaleX = data.scaleX; - isScaled = true; - } - - if (isNumber(data.scaleY) && data.scaleY !== image.scaleY) { - image.scaleY = data.scaleY; - isScaled = true; - } - } - - if (rotated) { - self.renderCanvas(); - } else if (isScaled) { - self.renderImage(); - } - - ratio = image.width / image.naturalWidth; - - if (isNumber(data.x)) { - cropBoxData.left = data.x * ratio + canvas.left; - } - - if (isNumber(data.y)) { - cropBoxData.top = data.y * ratio + canvas.top; - } - - if (isNumber(data.width)) { - cropBoxData.width = data.width * ratio; - } - - if (isNumber(data.height)) { - cropBoxData.height = data.height * ratio; - } - - self.setCropBoxData(cropBoxData); - } - }, - - - /** - * Get the container size data - * - * @return {Object} data - */ - getContainerData: function getContainerData() { - return this.ready ? this.container : {}; - }, - - - /** - * Get the image position and size data - * - * @return {Object} data - */ - getImageData: function getImageData() { - return this.loaded ? this.image : {}; - }, - - - /** - * Get the canvas position and size data - * - * @return {Object} data - */ - getCanvasData: function getCanvasData() { - var self = this; - var canvas = self.canvas; - var data = {}; - - if (self.ready) { - $.each(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (i, n) { - data[n] = canvas[n]; - }); - } - - return data; - }, - - - /** - * Set the canvas position and size with new data - * - * @param {Object} data - */ - setCanvasData: function setCanvasData(data) { - var self = this; - var canvas = self.canvas; - var aspectRatio = canvas.aspectRatio; - - if ($.isFunction(data)) { - data = data.call(self.$element); - } - - if (self.ready && !self.disabled && $.isPlainObject(data)) { - if (isNumber(data.left)) { - canvas.left = data.left; - } - - if (isNumber(data.top)) { - canvas.top = data.top; - } - - if (isNumber(data.width)) { - canvas.width = data.width; - canvas.height = data.width / aspectRatio; - } else if (isNumber(data.height)) { - canvas.height = data.height; - canvas.width = data.height * aspectRatio; - } - - self.renderCanvas(true); - } - }, - - - /** - * Get the crop box position and size data - * - * @return {Object} data - */ - getCropBoxData: function getCropBoxData() { - var self = this; - var cropBox = self.cropBox; - - return self.ready && self.cropped ? { - left: cropBox.left, - top: cropBox.top, - width: cropBox.width, - height: cropBox.height - } : {}; - }, - - - /** - * Set the crop box position and size with new data - * - * @param {Object} data - */ - setCropBoxData: function setCropBoxData(data) { - var self = this; - var cropBox = self.cropBox; - var aspectRatio = self.options.aspectRatio; - var widthChanged = void 0; - var heightChanged = void 0; - - if ($.isFunction(data)) { - data = data.call(self.$element); - } - - if (self.ready && self.cropped && !self.disabled && $.isPlainObject(data)) { - if (isNumber(data.left)) { - cropBox.left = data.left; - } - - if (isNumber(data.top)) { - cropBox.top = data.top; - } - - if (isNumber(data.width) && data.width !== cropBox.width) { - widthChanged = true; - cropBox.width = data.width; - } - - if (isNumber(data.height) && data.height !== cropBox.height) { - heightChanged = true; - cropBox.height = data.height; - } - - if (aspectRatio) { - if (widthChanged) { - cropBox.height = cropBox.width / aspectRatio; - } else if (heightChanged) { - cropBox.width = cropBox.height * aspectRatio; - } - } - - self.renderCropBox(); - } - }, - - - /** - * Get a canvas drawn the cropped image - * - * @param {Object} options (optional) - * @return {HTMLCanvasElement} canvas - */ - getCroppedCanvas: function getCroppedCanvas(options) { - var self = this; - - if (!self.ready || !window.HTMLCanvasElement) { - return null; - } - - if (!$.isPlainObject(options)) { - options = {}; - } - - if (!self.cropped) { - return getSourceCanvas(self.$clone[0], self.image, options); - } - - var data = self.getData(); - var originalWidth = data.width; - var originalHeight = data.height; - var aspectRatio = originalWidth / originalHeight; - var scaledWidth = void 0; - var scaledHeight = void 0; - var scaledRatio = void 0; - - if ($.isPlainObject(options)) { - scaledWidth = options.width; - scaledHeight = options.height; - - if (scaledWidth) { - scaledHeight = scaledWidth / aspectRatio; - scaledRatio = scaledWidth / originalWidth; - } else if (scaledHeight) { - scaledWidth = scaledHeight * aspectRatio; - scaledRatio = scaledHeight / originalHeight; - } - } - - // The canvas element will use `Math.Math.floor` on a float number, so Math.floor first - var canvasWidth = Math.floor(scaledWidth || originalWidth); - var canvasHeight = Math.floor(scaledHeight || originalHeight); - - var canvas = $('')[0]; - var context = canvas.getContext('2d'); - - canvas.width = canvasWidth; - canvas.height = canvasHeight; - - if (options.fillColor) { - context.fillStyle = options.fillColor; - context.fillRect(0, 0, canvasWidth, canvasHeight); - } - - // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage - var parameters = function () { - var source = getSourceCanvas(self.$clone[0], self.image, options); - var sourceWidth = source.width; - var sourceHeight = source.height; - var canvasData = self.canvas; - var params = [source]; - - // Source canvas - var srcX = data.x + canvasData.naturalWidth * (Math.abs(data.scaleX || 1) - 1) / 2; - var srcY = data.y + canvasData.naturalHeight * (Math.abs(data.scaleY || 1) - 1) / 2; - var srcWidth = void 0; - var srcHeight = void 0; - - // Destination canvas - var dstX = void 0; - var dstY = void 0; - var dstWidth = void 0; - var dstHeight = void 0; - - if (srcX <= -originalWidth || srcX > sourceWidth) { - srcX = 0; - srcWidth = 0; - dstX = 0; - dstWidth = 0; - } else if (srcX <= 0) { - dstX = -srcX; - srcX = 0; - dstWidth = Math.min(sourceWidth, originalWidth + srcX); - srcWidth = dstWidth; - } else if (srcX <= sourceWidth) { - dstX = 0; - dstWidth = Math.min(originalWidth, sourceWidth - srcX); - srcWidth = dstWidth; - } - - if (srcWidth <= 0 || srcY <= -originalHeight || srcY > sourceHeight) { - srcY = 0; - srcHeight = 0; - dstY = 0; - dstHeight = 0; - } else if (srcY <= 0) { - dstY = -srcY; - srcY = 0; - dstHeight = Math.min(sourceHeight, originalHeight + srcY); - srcHeight = dstHeight; - } else if (srcY <= sourceHeight) { - dstY = 0; - dstHeight = Math.min(originalHeight, sourceHeight - srcY); - srcHeight = dstHeight; - } - - // All the numerical parameters should be integer for `drawImage` (#476) - params.push(Math.floor(srcX), Math.floor(srcY), Math.floor(srcWidth), Math.floor(srcHeight)); - - // Scale destination sizes - if (scaledRatio) { - dstX *= scaledRatio; - dstY *= scaledRatio; - dstWidth *= scaledRatio; - dstHeight *= scaledRatio; - } - - // Avoid "IndexSizeError" in IE and Firefox - if (dstWidth > 0 && dstHeight > 0) { - params.push(Math.floor(dstX), Math.floor(dstY), Math.floor(dstWidth), Math.floor(dstHeight)); - } - - return params; - }(); - - context.imageSmoothingEnabled = !!options.imageSmoothingEnabled; - - if (options.imageSmoothingQuality) { - context.imageSmoothingQuality = options.imageSmoothingQuality; - } - - context.drawImage.apply(context, _toConsumableArray(parameters)); - - return canvas; - }, - - - /** - * Change the aspect ratio of the crop box - * - * @param {Number} aspectRatio - */ - setAspectRatio: function setAspectRatio(aspectRatio) { - var self = this; - var options = self.options; - - if (!self.disabled && !isUndefined(aspectRatio)) { - // 0 -> NaN - options.aspectRatio = Math.max(0, aspectRatio) || NaN; - - if (self.ready) { - self.initCropBox(); - - if (self.cropped) { - self.renderCropBox(); - } - } - } - }, - - - /** - * Change the drag mode - * - * @param {String} mode (optional) - */ - setDragMode: function setDragMode(mode) { - var self = this; - var options = self.options; - var croppable = void 0; - var movable = void 0; - - if (self.loaded && !self.disabled) { - croppable = mode === 'crop'; - movable = options.movable && mode === 'move'; - mode = croppable || movable ? mode : 'none'; - - self.$dragBox.data('action', mode).toggleClass('cropper-crop', croppable).toggleClass('cropper-move', movable); - - if (!options.cropBoxMovable) { - // Sync drag mode to crop box when it is not movable(#300) - self.$face.data('action', mode).toggleClass('cropper-crop', croppable).toggleClass('cropper-move', movable); - } - } - } - }; - - var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - - var CLASS_HIDDEN = 'cropper-hidden'; - var REGEXP_DATA_URL = /^data:/; - var REGEXP_DATA_URL_JPEG = /^data:image\/jpeg;base64,/; - - var Cropper = function () { - function Cropper(element, options) { - _classCallCheck(this, Cropper); - - var self = this; - - self.$element = $(element); - self.options = $.extend({}, DEFAULTS, $.isPlainObject(options) && options); - self.loaded = false; - self.ready = false; - self.completed = false; - self.rotated = false; - self.cropped = false; - self.disabled = false; - self.replaced = false; - self.limited = false; - self.wheeling = false; - self.isImg = false; - self.originalUrl = ''; - self.canvas = null; - self.cropBox = null; - self.pointers = {}; - self.init(); - } - - _createClass(Cropper, [{ - key: 'init', - value: function init() { - var self = this; - var $this = self.$element; - var url = void 0; - - if ($this.is('img')) { - self.isImg = true; - - // Should use `$.fn.attr` here. e.g.: "img/picture.jpg" - url = $this.attr('src'); - self.originalUrl = url; - - // Stop when it's a blank image - if (!url) { - return; - } - - // Should use `$.fn.prop` here. e.g.: "http://example.com/img/picture.jpg" - url = $this.prop('src'); - } else if ($this.is('canvas') && window.HTMLCanvasElement) { - url = $this[0].toDataURL(); - } - - self.load(url); - } - - // A shortcut for triggering custom events - - }, { - key: 'trigger', - value: function trigger(type, data) { - var e = $.Event(type, data); - - this.$element.trigger(e); - - return e; - } - }, { - key: 'load', - value: function load(url) { - var self = this; - var options = self.options; - var $this = self.$element; - - if (!url) { - return; - } - - self.url = url; - self.image = {}; - - if (!options.checkOrientation || !window.ArrayBuffer) { - self.clone(); - return; - } - - // XMLHttpRequest disallows to open a Data URL in some browsers like IE11 and Safari - if (REGEXP_DATA_URL.test(url)) { - if (REGEXP_DATA_URL_JPEG.test(url)) { - self.read(dataURLToArrayBuffer(url)); - } else { - self.clone(); - } - return; - } - - var xhr = new XMLHttpRequest(); - - xhr.onerror = $.proxy(function () { - self.clone(); - }, this); - - xhr.onload = function load() { - self.read(this.response); - }; - - if (options.checkCrossOrigin && isCrossOriginURL(url) && $this.prop('crossOrigin')) { - url = addTimestamp(url); - } - - xhr.open('get', url); - xhr.responseType = 'arraybuffer'; - xhr.withCredentials = $this.prop('crossOrigin') === 'use-credentials'; - xhr.send(); - } - }, { - key: 'read', - value: function read(arrayBuffer) { - var self = this; - var options = self.options; - var orientation = getOrientation(arrayBuffer); - var image = self.image; - var rotate = 0; - var scaleX = 1; - var scaleY = 1; - - if (orientation > 1) { - self.url = arrayBufferToDataURL(arrayBuffer); - - switch (orientation) { - // flip horizontal - case 2: - scaleX = -1; - break; - - // rotate left 180° - case 3: - rotate = -180; - break; - - // flip vertical - case 4: - scaleY = -1; - break; - - // flip vertical + rotate right 90° - case 5: - rotate = 90; - scaleY = -1; - break; - - // rotate right 90° - case 6: - rotate = 90; - break; - - // flip horizontal + rotate right 90° - case 7: - rotate = 90; - scaleX = -1; - break; - - // rotate left 90° - case 8: - rotate = -90; - break; - - default: - } - } - - if (options.rotatable) { - image.rotate = rotate; - } - - if (options.scalable) { - image.scaleX = scaleX; - image.scaleY = scaleY; - } - - self.clone(); - } - }, { - key: 'clone', - value: function clone() { - var self = this; - var options = self.options; - var $this = self.$element; - var url = self.url; - var crossOrigin = ''; - var crossOriginUrl = void 0; - - if (options.checkCrossOrigin && isCrossOriginURL(url)) { - crossOrigin = $this.prop('crossOrigin'); - - if (crossOrigin) { - crossOriginUrl = url; - } else { - crossOrigin = 'anonymous'; - - // Bust cache (#148) when there is not a "crossOrigin" property - crossOriginUrl = addTimestamp(url); - } - } - - self.crossOrigin = crossOrigin; - self.crossOriginUrl = crossOriginUrl; - - var image = document.createElement('img'); - - if (crossOrigin) { - image.crossOrigin = crossOrigin; - } - - image.src = crossOriginUrl || url; - - var $clone = $(image); - - self.$clone = $clone; - - if (self.isImg) { - if ($this[0].complete) { - self.start(); - } else { - $this.one('load', $.proxy(self.start, this)); - } - } else { - $clone.one('load', $.proxy(self.start, this)).one('error', $.proxy(self.stop, this)).addClass('cropper-hide').insertAfter($this); - } - } - }, { - key: 'start', - value: function start() { - var self = this; - var $clone = self.$clone; - var $image = self.$element; - - if (!self.isImg) { - $clone.off('error', self.stop); - $image = $clone; - } - - getImageSize($image[0], function (naturalWidth, naturalHeight) { - $.extend(self.image, { - naturalWidth: naturalWidth, - naturalHeight: naturalHeight, - aspectRatio: naturalWidth / naturalHeight - }); - - self.loaded = true; - self.build(); - }); - } - }, { - key: 'stop', - value: function stop() { - var self = this; - - self.$clone.remove(); - self.$clone = null; - } - }, { - key: 'build', - value: function build() { - var self = this; - var options = self.options; - var $this = self.$element; - var $clone = self.$clone; - - if (!self.loaded) { - return; - } - - // Unbuild first when replace - if (self.ready) { - self.unbuild(); - } - - var $cropper = $(TEMPLATE); - var $cropBox = $cropper.find('.cropper-crop-box'); - var $face = $cropBox.find('.cropper-face'); - - // Create cropper elements - self.$container = $this.parent(); - self.$cropper = $cropper; - self.$canvas = $cropper.find('.cropper-canvas').append($clone); - self.$dragBox = $cropper.find('.cropper-drag-box'); - self.$cropBox = $cropBox; - self.$viewBox = $cropper.find('.cropper-view-box'); - self.$face = $face; - - // Hide the original image - $this.addClass(CLASS_HIDDEN).after($cropper); - - // Show the clone image if is hidden - if (!self.isImg) { - $clone.removeClass('cropper-hide'); - } - - self.initPreview(); - self.bind(); - - options.aspectRatio = Math.max(0, options.aspectRatio) || NaN; - options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0; - - self.cropped = options.autoCrop; - - if (options.autoCrop) { - if (options.modal) { - self.$dragBox.addClass('cropper-modal'); - } - } else { - $cropBox.addClass(CLASS_HIDDEN); - } - - if (!options.guides) { - $cropBox.find('.cropper-dashed').addClass(CLASS_HIDDEN); - } - - if (!options.center) { - $cropBox.find('.cropper-center').addClass(CLASS_HIDDEN); - } - - if (options.cropBoxMovable) { - $face.addClass('cropper-move').data('action', 'all'); - } - - if (!options.highlight) { - $face.addClass('cropper-invisible'); - } - - if (options.background) { - $cropper.addClass('cropper-bg'); - } - - if (!options.cropBoxResizable) { - $cropBox.find('.cropper-line, .cropper-point').addClass(CLASS_HIDDEN); - } - - self.setDragMode(options.dragMode); - self.render(); - self.ready = true; - self.setData(options.data); - - // Trigger the ready event asynchronously to keep `data('cropper')` is defined - self.completing = setTimeout(function () { - if ($.isFunction(options.ready)) { - $this.one('ready', options.ready); - } - - self.trigger('ready'); - self.trigger('crop', self.getData()); - self.completed = true; - }, 0); - } - }, { - key: 'unbuild', - value: function unbuild() { - var self = this; - - if (!self.ready) { - return; - } - - if (!self.completed) { - clearTimeout(self.completing); - } - - self.ready = false; - self.completed = false; - self.initialImage = null; - - // Clear `initialCanvas` is necessary when replace - self.initialCanvas = null; - self.initialCropBox = null; - self.container = null; - self.canvas = null; - - // Clear `cropBox` is necessary when replace - self.cropBox = null; - self.unbind(); - - self.resetPreview(); - self.$preview = null; - - self.$viewBox = null; - self.$cropBox = null; - self.$dragBox = null; - self.$canvas = null; - self.$container = null; - - self.$cropper.remove(); - self.$cropper = null; - } - }], [{ - key: 'setDefaults', - value: function setDefaults(options) { - $.extend(DEFAULTS, $.isPlainObject(options) && options); - } - }]); - - return Cropper; - }(); - - $.extend(Cropper.prototype, render); - $.extend(Cropper.prototype, preview); - $.extend(Cropper.prototype, events); - $.extend(Cropper.prototype, handlers); - $.extend(Cropper.prototype, change); - $.extend(Cropper.prototype, methods); - - var NAMESPACE = 'cropper'; - var OtherCropper = $.fn.cropper; - - $.fn.cropper = function jQueryCropper(option) { - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - var result = void 0; - - this.each(function (i, element) { - var $this = $(element); - var data = $this.data(NAMESPACE); - - if (!data) { - if (/destroy/.test(option)) { - return; - } - - var options = $.extend({}, $this.data(), $.isPlainObject(option) && option); - $this.data(NAMESPACE, data = new Cropper(element, options)); - } - - if (typeof option === 'string') { - var fn = data[option]; - - if ($.isFunction(fn)) { - result = fn.apply(data, args); - } - } - }); - - return typeof result !== 'undefined' ? result : this; - }; - - $.fn.cropper.Constructor = Cropper; - $.fn.cropper.setDefaults = Cropper.setDefaults; - - // No conflict - $.fn.cropper.noConflict = function noConflict() { - $.fn.cropper = OtherCropper; - return this; - }; - - exports('cropper', $.fn.cropper); -}); \ No newline at end of file diff --git a/component/pear/module/darkreader.js b/component/pear/module/darkreader.js deleted file mode 100644 index c8eaa60..0000000 --- a/component/pear/module/darkreader.js +++ /dev/null @@ -1,7579 +0,0 @@ -/** - * Dark Reader v4.9.58 - * https://darkreader.org/ - */ - -(function (global, factory) { - typeof exports === "object" && typeof module !== "undefined" - ? factory(exports) - : typeof define === "function" && define.amd - ? define(["exports"], factory) - : ((global = - typeof globalThis !== "undefined" ? globalThis : global || self), - factory((global.DarkReader = {}))); -})(this, function (exports) { - "use strict"; - - /****************************************************************************** - Copyright (c) Microsoft Corporation. - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - ***************************************************************************** */ - - var __assign = function () { - __assign = - Object.assign || - function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - - function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done - ? resolve(result.value) - : adopt(result.value).then(fulfilled, rejected); - } - step( - (generator = generator.apply(thisArg, _arguments || [])).next() - ); - }); - } - - function __generator(thisArg, body) { - var _ = { - label: 0, - sent: function () { - if (t[0] & 1) throw t[1]; - return t[1]; - }, - trys: [], - ops: [] - }, - f, - y, - t, - g; - return ( - (g = {next: verb(0), throw: verb(1), return: verb(2)}), - typeof Symbol === "function" && - (g[Symbol.iterator] = function () { - return this; - }), - g - ); - function verb(n) { - return function (v) { - return step([n, v]); - }; - } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) - try { - if ( - ((f = 1), - y && - (t = - op[0] & 2 - ? y["return"] - : op[0] - ? y["throw"] || - ((t = y["return"]) && t.call(y), 0) - : y.next) && - !(t = t.call(y, op[1])).done) - ) - return t; - if (((y = 0), t)) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: - case 1: - t = op; - break; - case 4: - _.label++; - return {value: op[1], done: false}; - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - case 7: - op = _.ops.pop(); - _.trys.pop(); - continue; - default: - if ( - !((t = _.trys), - (t = t.length > 0 && t[t.length - 1])) && - (op[0] === 6 || op[0] === 2) - ) { - _ = 0; - continue; - } - if ( - op[0] === 3 && - (!t || (op[1] > t[0] && op[1] < t[3])) - ) { - _.label = op[1]; - break; - } - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - if (t && _.label < t[2]) { - _.label = t[2]; - _.ops.push(op); - break; - } - if (t[2]) _.ops.pop(); - _.trys.pop(); - continue; - } - op = body.call(thisArg, _); - } catch (e) { - op = [6, e]; - y = 0; - } finally { - f = t = 0; - } - if (op[0] & 5) throw op[1]; - return {value: op[0] ? op[1] : void 0, done: true}; - } - } - - function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, - m = s && o[s], - i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") - return { - next: function () { - if (o && i >= o.length) o = void 0; - return {value: o && o[i++], done: !o}; - } - }; - throw new TypeError( - s ? "Object is not iterable." : "Symbol.iterator is not defined." - ); - } - - function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), - r, - ar = [], - e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) - ar.push(r.value); - } catch (error) { - e = {error: error}; - } finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } finally { - if (e) throw e.error; - } - } - return ar; - } - - function __spreadArray(to, from, pack) { - if (pack || arguments.length === 2) - for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); - } - - var MessageType; - (function (MessageType) { - MessageType["UI_GET_DATA"] = "ui-get-data"; - MessageType["UI_SUBSCRIBE_TO_CHANGES"] = "ui-subscribe-to-changes"; - MessageType["UI_UNSUBSCRIBE_FROM_CHANGES"] = - "ui-unsubscribe-from-changes"; - MessageType["UI_CHANGE_SETTINGS"] = "ui-change-settings"; - MessageType["UI_SET_THEME"] = "ui-set-theme"; - MessageType["UI_SET_SHORTCUT"] = "ui-set-shortcut"; - MessageType["UI_TOGGLE_ACTIVE_TAB"] = "ui-toggle-active-tab"; - MessageType["UI_MARK_NEWS_AS_READ"] = "ui-mark-news-as-read"; - MessageType["UI_MARK_NEWS_AS_DISPLAYED"] = "ui-mark-news-as-displayed"; - MessageType["UI_LOAD_CONFIG"] = "ui-load-config"; - MessageType["UI_APPLY_DEV_DYNAMIC_THEME_FIXES"] = - "ui-apply-dev-dynamic-theme-fixes"; - MessageType["UI_RESET_DEV_DYNAMIC_THEME_FIXES"] = - "ui-reset-dev-dynamic-theme-fixes"; - MessageType["UI_APPLY_DEV_INVERSION_FIXES"] = - "ui-apply-dev-inversion-fixes"; - MessageType["UI_RESET_DEV_INVERSION_FIXES"] = - "ui-reset-dev-inversion-fixes"; - MessageType["UI_APPLY_DEV_STATIC_THEMES"] = - "ui-apply-dev-static-themes"; - MessageType["UI_RESET_DEV_STATIC_THEMES"] = - "ui-reset-dev-static-themes"; - MessageType["UI_SAVE_FILE"] = "ui-save-file"; - MessageType["UI_REQUEST_EXPORT_CSS"] = "ui-request-export-css"; - MessageType["UI_COLOR_SCHEME_CHANGE"] = "ui-color-scheme-change"; - MessageType["BG_CHANGES"] = "bg-changes"; - MessageType["BG_ADD_CSS_FILTER"] = "bg-add-css-filter"; - MessageType["BG_ADD_STATIC_THEME"] = "bg-add-static-theme"; - MessageType["BG_ADD_SVG_FILTER"] = "bg-add-svg-filter"; - MessageType["BG_ADD_DYNAMIC_THEME"] = "bg-add-dynamic-theme"; - MessageType["BG_EXPORT_CSS"] = "bg-export-css"; - MessageType["BG_UNSUPPORTED_SENDER"] = "bg-unsupported-sender"; - MessageType["BG_CLEAN_UP"] = "bg-clean-up"; - MessageType["BG_RELOAD"] = "bg-reload"; - MessageType["BG_FETCH_RESPONSE"] = "bg-fetch-response"; - MessageType["BG_UI_UPDATE"] = "bg-ui-update"; - MessageType["BG_CSS_UPDATE"] = "bg-css-update"; - MessageType["CS_COLOR_SCHEME_CHANGE"] = "cs-color-scheme-change"; - MessageType["CS_FRAME_CONNECT"] = "cs-frame-connect"; - MessageType["CS_FRAME_FORGET"] = "cs-frame-forget"; - MessageType["CS_FRAME_FREEZE"] = "cs-frame-freeze"; - MessageType["CS_FRAME_RESUME"] = "cs-frame-resume"; - MessageType["CS_EXPORT_CSS_RESPONSE"] = "cs-export-css-response"; - MessageType["CS_FETCH"] = "cs-fetch"; - MessageType["CS_DARK_THEME_DETECTED"] = "cs-dark-theme-detected"; - MessageType["CS_DARK_THEME_NOT_DETECTED"] = - "cs-dark-theme-not-detected"; - MessageType["CS_LOG"] = "cs-log"; - })(MessageType || (MessageType = {})); - - var isNavigatorDefined = typeof navigator !== "undefined"; - var userAgent = isNavigatorDefined - ? navigator.userAgentData && - Array.isArray(navigator.userAgentData.brands) - ? navigator.userAgentData.brands - .map(function (brand) { - return "" - .concat(brand.brand.toLowerCase(), " ") - .concat(brand.version); - }) - .join(" ") - : navigator.userAgent.toLowerCase() - : "some useragent"; - var platform = isNavigatorDefined - ? navigator.userAgentData && - typeof navigator.userAgentData.platform === "string" - ? navigator.userAgentData.platform.toLowerCase() - : navigator.platform.toLowerCase() - : "some platform"; - var isChromium = - userAgent.includes("chrome") || userAgent.includes("chromium"); - var isThunderbird = userAgent.includes("thunderbird"); - var isFirefox = - userAgent.includes("firefox") || - userAgent.includes("librewolf") || - isThunderbird; - userAgent.includes("vivaldi"); - userAgent.includes("yabrowser"); - userAgent.includes("opr") || userAgent.includes("opera"); - userAgent.includes("edg"); - var isSafari = userAgent.includes("safari") && !isChromium; - var isWindows = platform.startsWith("win"); - var isMacOS = platform.startsWith("mac"); - isNavigatorDefined && navigator.userAgentData - ? navigator.userAgentData.mobile - : userAgent.includes("mobile"); - var isShadowDomSupported = typeof ShadowRoot === "function"; - var isMatchMediaChangeEventListenerSupported = - typeof MediaQueryList === "function" && - typeof MediaQueryList.prototype.addEventListener === "function"; - (function () { - var m = userAgent.match(/chrom(?:e|ium)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - (function () { - var m = userAgent.match(/(?:firefox|librewolf)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - var isDefinedSelectorSupported = (function () { - try { - document.querySelector(":defined"); - return true; - } catch (err) { - return false; - } - })(); - var isCSSColorSchemePropSupported = (function () { - if (typeof document === "undefined") { - return false; - } - var el = document.createElement("div"); - el.setAttribute("style", "color-scheme: dark"); - return el.style && el.style.colorScheme === "dark"; - })(); - - function getOKResponse(url, mimeType, origin) { - return __awaiter(this, void 0, void 0, function () { - var response; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - return [ - 4, - fetch(url, { - cache: "force-cache", - credentials: "omit", - referrer: origin - }) - ]; - case 1: - response = _a.sent(); - if ( - isFirefox && - mimeType === "text/css" && - url.startsWith("moz-extension://") && - url.endsWith(".css") - ) { - return [2, response]; - } - if ( - mimeType && - !response.headers - .get("Content-Type") - .startsWith(mimeType) - ) { - throw new Error( - "Mime type mismatch when loading ".concat(url) - ); - } - if (!response.ok) { - throw new Error( - "Unable to load " - .concat(url, " ") - .concat(response.status, " ") - .concat(response.statusText) - ); - } - return [2, response]; - } - }); - }); - } - function loadAsDataURL(url, mimeType) { - return __awaiter(this, void 0, void 0, function () { - var response; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - return [4, getOKResponse(url, mimeType)]; - case 1: - response = _a.sent(); - return [4, readResponseAsDataURL(response)]; - case 2: - return [2, _a.sent()]; - } - }); - }); - } - function readResponseAsDataURL(response) { - return __awaiter(this, void 0, void 0, function () { - var blob, dataURL; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - return [4, response.blob()]; - case 1: - blob = _a.sent(); - return [ - 4, - new Promise(function (resolve) { - var reader = new FileReader(); - reader.onloadend = function () { - return resolve(reader.result); - }; - reader.readAsDataURL(blob); - }) - ]; - case 2: - dataURL = _a.sent(); - return [2, dataURL]; - } - }); - }); - } - - var throwCORSError = function (url) { - return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - return [ - 2, - Promise.reject( - new Error( - [ - "Embedded Dark Reader cannot access a cross-origin resource", - url, - "Overview your URLs and CORS policies or use", - "`DarkReader.setFetchMethod(fetch: (url) => Promise))`.", - "See if using `DarkReader.setFetchMethod(window.fetch)`", - "before `DarkReader.enable()` works." - ].join(" ") - ) - ) - ]; - }); - }); - }; - var fetcher = throwCORSError; - function setFetchMethod$1(fetch) { - if (fetch) { - fetcher = fetch; - } else { - fetcher = throwCORSError; - } - } - function callFetchMethod(url) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - return [4, fetcher(url)]; - case 1: - return [2, _a.sent()]; - } - }); - }); - } - - if (!window.chrome) { - window.chrome = {}; - } - if (!chrome.runtime) { - chrome.runtime = {}; - } - var messageListeners = new Set(); - function sendMessage() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return __awaiter(this, void 0, void 0, function () { - var id_1, _a, url, responseType, response, text_1, error_1; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - if (!(args[0] && args[0].type === MessageType.CS_FETCH)) - return [3, 8]; - id_1 = args[0].id; - _b.label = 1; - case 1: - _b.trys.push([1, 7, , 8]); - (_a = args[0].data), - (url = _a.url), - (responseType = _a.responseType); - return [4, callFetchMethod(url)]; - case 2: - response = _b.sent(); - if (!(responseType === "data-url")) return [3, 4]; - return [4, readResponseAsDataURL(response)]; - case 3: - text_1 = _b.sent(); - return [3, 6]; - case 4: - return [4, response.text()]; - case 5: - text_1 = _b.sent(); - _b.label = 6; - case 6: - messageListeners.forEach(function (cb) { - return cb({ - type: MessageType.BG_FETCH_RESPONSE, - data: text_1, - error: null, - id: id_1 - }); - }); - return [3, 8]; - case 7: - error_1 = _b.sent(); - console.error(error_1); - messageListeners.forEach(function (cb) { - return cb({ - type: MessageType.BG_FETCH_RESPONSE, - data: null, - error: error_1, - id: id_1 - }); - }); - return [3, 8]; - case 8: - return [2]; - } - }); - }); - } - function addMessageListener(callback) { - messageListeners.add(callback); - } - if (typeof chrome.runtime.sendMessage === "function") { - var nativeSendMessage_1 = chrome.runtime.sendMessage; - chrome.runtime.sendMessage = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - sendMessage.apply(void 0, __spreadArray([], __read(args), false)); - nativeSendMessage_1.apply(chrome.runtime, args); - }; - } else { - chrome.runtime.sendMessage = sendMessage; - } - if (!chrome.runtime.onMessage) { - chrome.runtime.onMessage = {}; - } - if (typeof chrome.runtime.onMessage.addListener === "function") { - var nativeAddListener_1 = chrome.runtime.onMessage.addListener; - chrome.runtime.onMessage.addListener = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - addMessageListener(args[0]); - nativeAddListener_1.apply(chrome.runtime.onMessage, args); - }; - } else { - chrome.runtime.onMessage.addListener = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return addMessageListener(args[0]); - }; - } - - var ThemeEngine; - (function (ThemeEngine) { - ThemeEngine["cssFilter"] = "cssFilter"; - ThemeEngine["svgFilter"] = "svgFilter"; - ThemeEngine["staticTheme"] = "staticTheme"; - ThemeEngine["dynamicTheme"] = "dynamicTheme"; - })(ThemeEngine || (ThemeEngine = {})); - - var AutomationMode; - (function (AutomationMode) { - AutomationMode["NONE"] = ""; - AutomationMode["TIME"] = "time"; - AutomationMode["SYSTEM"] = "system"; - AutomationMode["LOCATION"] = "location"; - })(AutomationMode || (AutomationMode = {})); - - var DEFAULT_COLORS = { - darkScheme: { - background: "#181a1b", - text: "#e8e6e3" - }, - lightScheme: { - background: "#dcdad7", - text: "#181a1b" - } - }; - var DEFAULT_THEME = { - mode: 1, - brightness: 100, - contrast: 100, - grayscale: 0, - sepia: 0, - useFont: false, - fontFamily: isMacOS - ? "Helvetica Neue" - : isWindows - ? "Segoe UI" - : "Open Sans", - textStroke: 0, - engine: ThemeEngine.dynamicTheme, - stylesheet: "", - darkSchemeBackgroundColor: DEFAULT_COLORS.darkScheme.background, - darkSchemeTextColor: DEFAULT_COLORS.darkScheme.text, - lightSchemeBackgroundColor: DEFAULT_COLORS.lightScheme.background, - lightSchemeTextColor: DEFAULT_COLORS.lightScheme.text, - scrollbarColor: isMacOS ? "" : "auto", - selectionColor: "auto", - styleSystemControls: !isCSSColorSchemePropSupported, - lightColorScheme: "Default", - darkColorScheme: "Default", - immediateModify: false - }; - ({ - enabled: true, - fetchNews: true, - theme: DEFAULT_THEME, - presets: [], - customThemes: [], - siteList: [], - siteListEnabled: [], - applyToListedOnly: false, - changeBrowserTheme: false, - syncSettings: true, - syncSitesFixes: false, - automation: { - enabled: false, - mode: AutomationMode.NONE, - behavior: "OnOff" - }, - time: { - activation: "18:00", - deactivation: "9:00" - }, - location: { - latitude: null, - longitude: null - }, - previewNewDesign: false, - enableForPDF: true, - enableForProtectedPages: false, - enableContextMenus: false, - detectDarkTheme: false - }); - - function isArrayLike(items) { - return items.length != null; - } - function forEach(items, iterator) { - var e_1, _a; - if (isArrayLike(items)) { - for (var i = 0, len = items.length; i < len; i++) { - iterator(items[i]); - } - } else { - try { - for ( - var items_1 = __values(items), items_1_1 = items_1.next(); - !items_1_1.done; - items_1_1 = items_1.next() - ) { - var item = items_1_1.value; - iterator(item); - } - } catch (e_1_1) { - e_1 = {error: e_1_1}; - } finally { - try { - if (items_1_1 && !items_1_1.done && (_a = items_1.return)) - _a.call(items_1); - } finally { - if (e_1) throw e_1.error; - } - } - } - } - function push(array, addition) { - forEach(addition, function (a) { - return array.push(a); - }); - } - function toArray(items) { - var results = []; - for (var i = 0, len = items.length; i < len; i++) { - results.push(items[i]); - } - return results; - } - - function logInfo() {} - function logWarn() {} - - function throttle(callback) { - var pending = false; - var frameId = null; - var lastArgs; - var throttled = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - lastArgs = args; - if (frameId) { - pending = true; - } else { - callback.apply( - void 0, - __spreadArray([], __read(lastArgs), false) - ); - frameId = requestAnimationFrame(function () { - frameId = null; - if (pending) { - callback.apply( - void 0, - __spreadArray([], __read(lastArgs), false) - ); - pending = false; - } - }); - } - }; - var cancel = function () { - cancelAnimationFrame(frameId); - pending = false; - frameId = null; - }; - return Object.assign(throttled, {cancel: cancel}); - } - function createAsyncTasksQueue() { - var tasks = []; - var frameId = null; - function runTasks() { - var task; - while ((task = tasks.shift())) { - task(); - } - frameId = null; - } - function add(task) { - tasks.push(task); - if (!frameId) { - frameId = requestAnimationFrame(runTasks); - } - } - function cancel() { - tasks.splice(0); - cancelAnimationFrame(frameId); - frameId = null; - } - return {add: add, cancel: cancel}; - } - - function getDuration(time) { - var duration = 0; - if (time.seconds) { - duration += time.seconds * 1000; - } - if (time.minutes) { - duration += time.minutes * 60 * 1000; - } - if (time.hours) { - duration += time.hours * 60 * 60 * 1000; - } - if (time.days) { - duration += time.days * 24 * 60 * 60 * 1000; - } - return duration; - } - - function removeNode(node) { - node && node.parentNode && node.parentNode.removeChild(node); - } - function watchForNodePosition(node, mode, onRestore) { - if (onRestore === void 0) { - onRestore = Function.prototype; - } - var MAX_ATTEMPTS_COUNT = 10; - var RETRY_TIMEOUT = getDuration({seconds: 2}); - var ATTEMPTS_INTERVAL = getDuration({seconds: 10}); - var prevSibling = node.previousSibling; - var parent = node.parentNode; - if (!parent) { - throw new Error( - "Unable to watch for node position: parent element not found" - ); - } - if (mode === "prev-sibling" && !prevSibling) { - throw new Error( - "Unable to watch for node position: there is no previous sibling" - ); - } - var attempts = 0; - var start = null; - var timeoutId = null; - var restore = throttle(function () { - if (timeoutId) { - return; - } - attempts++; - var now = Date.now(); - if (start == null) { - start = now; - } else if (attempts >= MAX_ATTEMPTS_COUNT) { - if (now - start < ATTEMPTS_INTERVAL) { - timeoutId = setTimeout(function () { - start = null; - attempts = 0; - timeoutId = null; - restore(); - }, RETRY_TIMEOUT); - return; - } - start = now; - attempts = 1; - } - if (mode === "parent") { - if (prevSibling && prevSibling.parentNode !== parent) { - stop(); - return; - } - } - if (mode === "prev-sibling") { - if (prevSibling.parentNode == null) { - stop(); - return; - } - if (prevSibling.parentNode !== parent) { - updateParent(prevSibling.parentNode); - } - } - parent.insertBefore( - node, - prevSibling ? prevSibling.nextSibling : parent.firstChild - ); - observer.takeRecords(); - onRestore && onRestore(); - }); - var observer = new MutationObserver(function () { - if ( - (mode === "parent" && node.parentNode !== parent) || - (mode === "prev-sibling" && - node.previousSibling !== prevSibling) - ) { - restore(); - } - }); - var run = function () { - observer.observe(parent, {childList: true}); - }; - var stop = function () { - clearTimeout(timeoutId); - observer.disconnect(); - restore.cancel(); - }; - var skip = function () { - observer.takeRecords(); - }; - var updateParent = function (parentNode) { - parent = parentNode; - stop(); - run(); - }; - run(); - return {run: run, stop: stop, skip: skip}; - } - function iterateShadowHosts(root, iterator) { - if (root == null) { - return; - } - var walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, { - acceptNode: function (node) { - return node.shadowRoot == null - ? NodeFilter.FILTER_SKIP - : NodeFilter.FILTER_ACCEPT; - } - }); - for ( - var node = root.shadowRoot ? walker.currentNode : walker.nextNode(); - node != null; - node = walker.nextNode() - ) { - if (node.classList.contains("surfingkeys_hints_host")) { - continue; - } - iterator(node); - iterateShadowHosts(node.shadowRoot, iterator); - } - } - var isDOMReady = function () { - return ( - document.readyState === "complete" || - document.readyState === "interactive" - ); - }; - function setIsDOMReady(newFunc) { - isDOMReady = newFunc; - } - var readyStateListeners = new Set(); - function addDOMReadyListener(listener) { - isDOMReady() ? listener() : readyStateListeners.add(listener); - } - function removeDOMReadyListener(listener) { - readyStateListeners.delete(listener); - } - function isReadyStateComplete() { - return document.readyState === "complete"; - } - var readyStateCompleteListeners = new Set(); - function addReadyStateCompleteListener(listener) { - isReadyStateComplete() - ? listener() - : readyStateCompleteListeners.add(listener); - } - function cleanReadyStateCompleteListeners() { - readyStateCompleteListeners.clear(); - } - if (!isDOMReady()) { - var onReadyStateChange_1 = function () { - if (isDOMReady()) { - readyStateListeners.forEach(function (listener) { - return listener(); - }); - readyStateListeners.clear(); - if (isReadyStateComplete()) { - document.removeEventListener( - "readystatechange", - onReadyStateChange_1 - ); - readyStateCompleteListeners.forEach(function (listener) { - return listener(); - }); - readyStateCompleteListeners.clear(); - } - } - }; - document.addEventListener("readystatechange", onReadyStateChange_1); - } - var HUGE_MUTATIONS_COUNT = 1000; - function isHugeMutation(mutations) { - if (mutations.length > HUGE_MUTATIONS_COUNT) { - return true; - } - var addedNodesCount = 0; - for (var i = 0; i < mutations.length; i++) { - addedNodesCount += mutations[i].addedNodes.length; - if (addedNodesCount > HUGE_MUTATIONS_COUNT) { - return true; - } - } - return false; - } - function getElementsTreeOperations(mutations) { - var additions = new Set(); - var deletions = new Set(); - var moves = new Set(); - mutations.forEach(function (m) { - forEach(m.addedNodes, function (n) { - if (n instanceof Element && n.isConnected) { - additions.add(n); - } - }); - forEach(m.removedNodes, function (n) { - if (n instanceof Element) { - if (n.isConnected) { - moves.add(n); - additions.delete(n); - } else { - deletions.add(n); - } - } - }); - }); - var duplicateAdditions = []; - var duplicateDeletions = []; - additions.forEach(function (node) { - if (additions.has(node.parentElement)) { - duplicateAdditions.push(node); - } - }); - deletions.forEach(function (node) { - if (deletions.has(node.parentElement)) { - duplicateDeletions.push(node); - } - }); - duplicateAdditions.forEach(function (node) { - return additions.delete(node); - }); - duplicateDeletions.forEach(function (node) { - return deletions.delete(node); - }); - return {additions: additions, moves: moves, deletions: deletions}; - } - var optimizedTreeObservers = new Map(); - var optimizedTreeCallbacks = new WeakMap(); - function createOptimizedTreeObserver(root, callbacks) { - var observer; - var observerCallbacks; - var domReadyListener; - if (optimizedTreeObservers.has(root)) { - observer = optimizedTreeObservers.get(root); - observerCallbacks = optimizedTreeCallbacks.get(observer); - } else { - var hadHugeMutationsBefore_1 = false; - var subscribedForReadyState_1 = false; - observer = new MutationObserver(function (mutations) { - if (isHugeMutation(mutations)) { - if (!hadHugeMutationsBefore_1 || isDOMReady()) { - observerCallbacks.forEach(function (_a) { - var onHugeMutations = _a.onHugeMutations; - return onHugeMutations(root); - }); - } else if (!subscribedForReadyState_1) { - domReadyListener = function () { - return observerCallbacks.forEach(function (_a) { - var onHugeMutations = _a.onHugeMutations; - return onHugeMutations(root); - }); - }; - addDOMReadyListener(domReadyListener); - subscribedForReadyState_1 = true; - } - hadHugeMutationsBefore_1 = true; - } else { - var elementsOperations_1 = - getElementsTreeOperations(mutations); - observerCallbacks.forEach(function (_a) { - var onMinorMutations = _a.onMinorMutations; - return onMinorMutations(elementsOperations_1); - }); - } - }); - observer.observe(root, {childList: true, subtree: true}); - optimizedTreeObservers.set(root, observer); - observerCallbacks = new Set(); - optimizedTreeCallbacks.set(observer, observerCallbacks); - } - observerCallbacks.add(callbacks); - return { - disconnect: function () { - observerCallbacks.delete(callbacks); - if (domReadyListener) { - removeDOMReadyListener(domReadyListener); - } - if (observerCallbacks.size === 0) { - observer.disconnect(); - optimizedTreeCallbacks.delete(observer); - optimizedTreeObservers.delete(root); - } - } - }; - } - - var anchor; - var parsedURLCache = new Map(); - function fixBaseURL($url) { - if (!anchor) { - anchor = document.createElement("a"); - } - anchor.href = $url; - return anchor.href; - } - function parseURL($url, $base) { - if ($base === void 0) { - $base = null; - } - var key = "".concat($url).concat($base ? ";".concat($base) : ""); - if (parsedURLCache.has(key)) { - return parsedURLCache.get(key); - } - if ($base) { - var parsedURL_1 = new URL($url, fixBaseURL($base)); - parsedURLCache.set(key, parsedURL_1); - return parsedURL_1; - } - var parsedURL = new URL(fixBaseURL($url)); - parsedURLCache.set($url, parsedURL); - return parsedURL; - } - function getAbsoluteURL($base, $relative) { - if ($relative.match(/^data\\?\:/)) { - return $relative; - } - if (/^\/\//.test($relative)) { - return "".concat(location.protocol).concat($relative); - } - var b = parseURL($base); - var a = parseURL($relative, b.href); - return a.href; - } - function isRelativeHrefOnAbsolutePath(href) { - if (href.startsWith("data:")) { - return true; - } - var url = parseURL(href); - if (url.protocol !== location.protocol) { - return false; - } - if (url.hostname !== location.hostname) { - return false; - } - if (url.port !== location.port) { - return false; - } - return url.pathname === location.pathname; - } - - function iterateCSSRules(rules, iterate, onMediaRuleError) { - forEach(rules, function (rule) { - if (rule.selectorText) { - iterate(rule); - } else if (rule.href) { - try { - iterateCSSRules( - rule.styleSheet.cssRules, - iterate, - onMediaRuleError - ); - } catch (err) { - logInfo("Found a non-loaded link."); - onMediaRuleError && onMediaRuleError(); - } - } else if (rule.media) { - var media = Array.from(rule.media); - var isScreenOrAllOrQuery = media.some(function (m) { - return ( - m.startsWith("screen") || - m.startsWith("all") || - m.startsWith("(") - ); - }); - var isPrintOrSpeech = media.some(function (m) { - return m.startsWith("print") || m.startsWith("speech"); - }); - if (isScreenOrAllOrQuery || !isPrintOrSpeech) { - iterateCSSRules(rule.cssRules, iterate, onMediaRuleError); - } - } else if (rule.conditionText) { - if (CSS.supports(rule.conditionText)) { - iterateCSSRules(rule.cssRules, iterate, onMediaRuleError); - } - } else { - logWarn("CSSRule type not supported", rule); - } - }); - } - var shorthandVarDependantProperties = [ - "background", - "border", - "border-color", - "border-bottom", - "border-left", - "border-right", - "border-top", - "outline", - "outline-color" - ]; - var shorthandVarDepPropRegexps = isSafari - ? shorthandVarDependantProperties.map(function (prop) { - var regexp = new RegExp("".concat(prop, ":\\s*(.*?)\\s*;")); - return [prop, regexp]; - }) - : null; - function iterateCSSDeclarations(style, iterate) { - forEach(style, function (property) { - var value = style.getPropertyValue(property).trim(); - if (!value) { - return; - } - iterate(property, value); - }); - var cssText = style.cssText; - if (cssText.includes("var(")) { - if (isSafari) { - shorthandVarDepPropRegexps.forEach(function (_a) { - var _b = __read(_a, 2), - prop = _b[0], - regexp = _b[1]; - var match = cssText.match(regexp); - if (match && match[1]) { - var val = match[1].trim(); - iterate(prop, val); - } - }); - } else { - shorthandVarDependantProperties.forEach(function (prop) { - var val = style.getPropertyValue(prop); - if (val && val.includes("var(")) { - iterate(prop, val); - } - }); - } - } - } - var cssURLRegex = /url\((('.*?')|(".*?")|([^\)]*?))\)/g; - var cssImportRegex = - /@import\s*(url\()?(('.+?')|(".+?")|([^\)]*?))\)? ?(screen)?;?/gi; - function getCSSURLValue(cssURL) { - return cssURL - .trim() - .replace(/[\n\r\\]+/g, "") - .replace(/^url\((.*)\)$/, "$1") - .trim() - .replace(/^"(.*)"$/, "$1") - .replace(/^'(.*)'$/, "$1") - .replace(/(?:\\(.))/g, "$1"); - } - function getCSSBaseBath(url) { - var cssURL = parseURL(url); - return "" - .concat(cssURL.origin) - .concat( - cssURL.pathname - .replace(/\?.*$/, "") - .replace(/(\/)([^\/]+)$/i, "$1") - ); - } - function replaceCSSRelativeURLsWithAbsolute($css, cssBasePath) { - return $css.replace(cssURLRegex, function (match) { - var pathValue = getCSSURLValue(match); - try { - return "url('".concat( - getAbsoluteURL(cssBasePath, pathValue), - "')" - ); - } catch (err) { - return match; - } - }); - } - var cssCommentsRegex = /\/\*[\s\S]*?\*\//g; - function removeCSSComments($css) { - return $css.replace(cssCommentsRegex, ""); - } - var fontFaceRegex = /@font-face\s*{[^}]*}/g; - function replaceCSSFontFace($css) { - return $css.replace(fontFaceRegex, ""); - } - - function evalMath(expression) { - var rpnStack = []; - var workingStack = []; - var lastToken; - for (var i = 0, len = expression.length; i < len; i++) { - var token = expression[i]; - if (!token || token === " ") { - continue; - } - if (operators.has(token)) { - var op = operators.get(token); - while (workingStack.length) { - var currentOp = operators.get(workingStack[0]); - if (!currentOp) { - break; - } - if (op.lessOrEqualThan(currentOp)) { - rpnStack.push(workingStack.shift()); - } else { - break; - } - } - workingStack.unshift(token); - } else if (!lastToken || operators.has(lastToken)) { - rpnStack.push(token); - } else { - rpnStack[rpnStack.length - 1] += token; - } - lastToken = token; - } - rpnStack.push.apply( - rpnStack, - __spreadArray([], __read(workingStack), false) - ); - var stack = []; - for (var i = 0, len = rpnStack.length; i < len; i++) { - var op = operators.get(rpnStack[i]); - if (op) { - var args = stack.splice(0, 2); - stack.push(op.exec(args[1], args[0])); - } else { - stack.unshift(parseFloat(rpnStack[i])); - } - } - return stack[0]; - } - var Operator = (function () { - function Operator(precedence, method) { - this.precendce = precedence; - this.execMethod = method; - } - Operator.prototype.exec = function (left, right) { - return this.execMethod(left, right); - }; - Operator.prototype.lessOrEqualThan = function (op) { - return this.precendce <= op.precendce; - }; - return Operator; - })(); - var operators = new Map([ - [ - "+", - new Operator(1, function (left, right) { - return left + right; - }) - ], - [ - "-", - new Operator(1, function (left, right) { - return left - right; - }) - ], - [ - "*", - new Operator(2, function (left, right) { - return left * right; - }) - ], - [ - "/", - new Operator(2, function (left, right) { - return left / right; - }) - ] - ]); - - function getMatches(regex, input, group) { - if (group === void 0) { - group = 0; - } - var matches = []; - var m; - while ((m = regex.exec(input))) { - matches.push(m[group]); - } - return matches; - } - function formatCSS(text) { - function trimLeft(text) { - return text.replace(/^\s+/, ""); - } - function getIndent(depth) { - if (depth === 0) { - return ""; - } - return " ".repeat(4 * depth); - } - if (text.length < 50000) { - var emptyRuleRegexp = /[^{}]+{\s*}/; - while (emptyRuleRegexp.test(text)) { - text = text.replace(emptyRuleRegexp, ""); - } - } - var css = text - .replace(/\s{2,}/g, " ") - .replace(/\{/g, "{\n") - .replace(/\}/g, "\n}\n") - .replace(/\;(?![^\(|\"]*(\)|\"))/g, ";\n") - .replace(/\,(?![^\(|\"]*(\)|\"))/g, ",\n") - .replace(/\n\s*\n/g, "\n") - .split("\n"); - var depth = 0; - var formatted = []; - for (var x = 0, len = css.length; x < len; x++) { - var line = "".concat(css[x], "\n"); - if (line.includes("{")) { - formatted.push(getIndent(depth++) + trimLeft(line)); - } else if (line.includes("}")) { - formatted.push(getIndent(--depth) + trimLeft(line)); - } else { - formatted.push(getIndent(depth) + trimLeft(line)); - } - } - return formatted.join("").trim(); - } - function getParenthesesRange(input, searchStartIndex) { - if (searchStartIndex === void 0) { - searchStartIndex = 0; - } - var length = input.length; - var depth = 0; - var firstOpenIndex = -1; - for (var i = searchStartIndex; i < length; i++) { - if (depth === 0) { - var openIndex = input.indexOf("(", i); - if (openIndex < 0) { - break; - } - firstOpenIndex = openIndex; - depth++; - i = openIndex; - } else { - var closingIndex = input.indexOf(")", i); - if (closingIndex < 0) { - break; - } - var openIndex = input.indexOf("(", i); - if (openIndex < 0 || closingIndex < openIndex) { - depth--; - if (depth === 0) { - return {start: firstOpenIndex, end: closingIndex + 1}; - } - i = closingIndex; - } else { - depth++; - i = openIndex; - } - } - } - return null; - } - - var hslaParseCache = new Map(); - var rgbaParseCache = new Map(); - function parseColorWithCache($color) { - $color = $color.trim(); - if (rgbaParseCache.has($color)) { - return rgbaParseCache.get($color); - } - if ($color.includes("calc(")) { - $color = lowerCalcExpression($color); - } - var color = parse($color); - color && rgbaParseCache.set($color, color); - return color; - } - function parseToHSLWithCache(color) { - if (hslaParseCache.has(color)) { - return hslaParseCache.get(color); - } - var rgb = parseColorWithCache(color); - if (!rgb) { - return null; - } - var hsl = rgbToHSL(rgb); - hslaParseCache.set(color, hsl); - return hsl; - } - function clearColorCache() { - hslaParseCache.clear(); - rgbaParseCache.clear(); - } - function hslToRGB(_a) { - var h = _a.h, - s = _a.s, - l = _a.l, - _b = _a.a, - a = _b === void 0 ? 1 : _b; - if (s === 0) { - var _c = __read( - [l, l, l].map(function (x) { - return Math.round(x * 255); - }), - 3 - ), - r_1 = _c[0], - b_1 = _c[1], - g_1 = _c[2]; - return {r: r_1, g: g_1, b: b_1, a: a}; - } - var c = (1 - Math.abs(2 * l - 1)) * s; - var x = c * (1 - Math.abs(((h / 60) % 2) - 1)); - var m = l - c / 2; - var _d = __read( - (h < 60 - ? [c, x, 0] - : h < 120 - ? [x, c, 0] - : h < 180 - ? [0, c, x] - : h < 240 - ? [0, x, c] - : h < 300 - ? [x, 0, c] - : [c, 0, x] - ).map(function (n) { - return Math.round((n + m) * 255); - }), - 3 - ), - r = _d[0], - g = _d[1], - b = _d[2]; - return {r: r, g: g, b: b, a: a}; - } - function rgbToHSL(_a) { - var r255 = _a.r, - g255 = _a.g, - b255 = _a.b, - _b = _a.a, - a = _b === void 0 ? 1 : _b; - var r = r255 / 255; - var g = g255 / 255; - var b = b255 / 255; - var max = Math.max(r, g, b); - var min = Math.min(r, g, b); - var c = max - min; - var l = (max + min) / 2; - if (c === 0) { - return {h: 0, s: 0, l: l, a: a}; - } - var h = - (max === r - ? ((g - b) / c) % 6 - : max === g - ? (b - r) / c + 2 - : (r - g) / c + 4) * 60; - if (h < 0) { - h += 360; - } - var s = c / (1 - Math.abs(2 * l - 1)); - return {h: h, s: s, l: l, a: a}; - } - function toFixed(n, digits) { - if (digits === void 0) { - digits = 0; - } - var fixed = n.toFixed(digits); - if (digits === 0) { - return fixed; - } - var dot = fixed.indexOf("."); - if (dot >= 0) { - var zerosMatch = fixed.match(/0+$/); - if (zerosMatch) { - if (zerosMatch.index === dot + 1) { - return fixed.substring(0, dot); - } - return fixed.substring(0, zerosMatch.index); - } - } - return fixed; - } - function rgbToString(rgb) { - var r = rgb.r, - g = rgb.g, - b = rgb.b, - a = rgb.a; - if (a != null && a < 1) { - return "rgba(" - .concat(toFixed(r), ", ") - .concat(toFixed(g), ", ") - .concat(toFixed(b), ", ") - .concat(toFixed(a, 2), ")"); - } - return "rgb(" - .concat(toFixed(r), ", ") - .concat(toFixed(g), ", ") - .concat(toFixed(b), ")"); - } - function rgbToHexString(_a) { - var r = _a.r, - g = _a.g, - b = _a.b, - a = _a.a; - return "#".concat( - (a != null && a < 1 ? [r, g, b, Math.round(a * 255)] : [r, g, b]) - .map(function (x) { - return "".concat(x < 16 ? "0" : "").concat(x.toString(16)); - }) - .join("") - ); - } - function hslToString(hsl) { - var h = hsl.h, - s = hsl.s, - l = hsl.l, - a = hsl.a; - if (a != null && a < 1) { - return "hsla(" - .concat(toFixed(h), ", ") - .concat(toFixed(s * 100), "%, ") - .concat(toFixed(l * 100), "%, ") - .concat(toFixed(a, 2), ")"); - } - return "hsl(" - .concat(toFixed(h), ", ") - .concat(toFixed(s * 100), "%, ") - .concat(toFixed(l * 100), "%)"); - } - var rgbMatch = /^rgba?\([^\(\)]+\)$/; - var hslMatch = /^hsla?\([^\(\)]+\)$/; - var hexMatch = /^#[0-9a-f]+$/i; - function parse($color) { - var c = $color.trim().toLowerCase(); - if (c.match(rgbMatch)) { - return parseRGB(c); - } - if (c.match(hslMatch)) { - return parseHSL(c); - } - if (c.match(hexMatch)) { - return parseHex(c); - } - if (knownColors.has(c)) { - return getColorByName(c); - } - if (systemColors.has(c)) { - return getSystemColor(c); - } - if ($color === "transparent") { - return {r: 0, g: 0, b: 0, a: 0}; - } - return null; - } - function getNumbers($color) { - var numbers = []; - var prevPos = 0; - var isMining = false; - var startIndex = $color.indexOf("("); - $color = $color.substring(startIndex + 1, $color.length - 1); - for (var i = 0; i < $color.length; i++) { - var c = $color[i]; - if ((c >= "0" && c <= "9") || c === "." || c === "+" || c === "-") { - isMining = true; - } else if (isMining && (c === " " || c === ",")) { - numbers.push($color.substring(prevPos, i)); - isMining = false; - prevPos = i + 1; - } else if (!isMining) { - prevPos = i + 1; - } - } - if (isMining) { - numbers.push($color.substring(prevPos, $color.length)); - } - return numbers; - } - function getNumbersFromString(str, range, units) { - var raw = getNumbers(str); - var unitsList = Object.entries(units); - var numbers = raw - .map(function (r) { - return r.trim(); - }) - .map(function (r, i) { - var n; - var unit = unitsList.find(function (_a) { - var _b = __read(_a, 1), - u = _b[0]; - return r.endsWith(u); - }); - if (unit) { - n = - (parseFloat(r.substring(0, r.length - unit[0].length)) / - unit[1]) * - range[i]; - } else { - n = parseFloat(r); - } - if (range[i] > 1) { - return Math.round(n); - } - return n; - }); - return numbers; - } - var rgbRange = [255, 255, 255, 1]; - var rgbUnits = {"%": 100}; - function parseRGB($rgb) { - var _a = __read(getNumbersFromString($rgb, rgbRange, rgbUnits), 4), - r = _a[0], - g = _a[1], - b = _a[2], - _b = _a[3], - a = _b === void 0 ? 1 : _b; - return {r: r, g: g, b: b, a: a}; - } - var hslRange = [360, 1, 1, 1]; - var hslUnits = {"%": 100, "deg": 360, "rad": 2 * Math.PI, "turn": 1}; - function parseHSL($hsl) { - var _a = __read(getNumbersFromString($hsl, hslRange, hslUnits), 4), - h = _a[0], - s = _a[1], - l = _a[2], - _b = _a[3], - a = _b === void 0 ? 1 : _b; - return hslToRGB({h: h, s: s, l: l, a: a}); - } - function parseHex($hex) { - var h = $hex.substring(1); - switch (h.length) { - case 3: - case 4: { - var _a = __read( - [0, 1, 2].map(function (i) { - return parseInt("".concat(h[i]).concat(h[i]), 16); - }), - 3 - ), - r = _a[0], - g = _a[1], - b = _a[2]; - var a = - h.length === 3 - ? 1 - : parseInt("".concat(h[3]).concat(h[3]), 16) / 255; - return {r: r, g: g, b: b, a: a}; - } - case 6: - case 8: { - var _b = __read( - [0, 2, 4].map(function (i) { - return parseInt(h.substring(i, i + 2), 16); - }), - 3 - ), - r = _b[0], - g = _b[1], - b = _b[2]; - var a = - h.length === 6 ? 1 : parseInt(h.substring(6, 8), 16) / 255; - return {r: r, g: g, b: b, a: a}; - } - } - return null; - } - function getColorByName($color) { - var n = knownColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - function getSystemColor($color) { - var n = systemColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - function lowerCalcExpression(color) { - var searchIndex = 0; - var replaceBetweenIndices = function (start, end, replacement) { - color = - color.substring(0, start) + replacement + color.substring(end); - }; - while ((searchIndex = color.indexOf("calc(")) !== -1) { - var range = getParenthesesRange(color, searchIndex); - if (!range) { - break; - } - var slice = color.slice(range.start + 1, range.end - 1); - var includesPercentage = slice.includes("%"); - slice = slice.split("%").join(""); - var output = Math.round(evalMath(slice)); - replaceBetweenIndices( - range.start - 4, - range.end, - output + (includesPercentage ? "%" : "") - ); - } - return color; - } - var knownColors = new Map( - Object.entries({ - aliceblue: 0xf0f8ff, - antiquewhite: 0xfaebd7, - aqua: 0x00ffff, - aquamarine: 0x7fffd4, - azure: 0xf0ffff, - beige: 0xf5f5dc, - bisque: 0xffe4c4, - black: 0x000000, - blanchedalmond: 0xffebcd, - blue: 0x0000ff, - blueviolet: 0x8a2be2, - brown: 0xa52a2a, - burlywood: 0xdeb887, - cadetblue: 0x5f9ea0, - chartreuse: 0x7fff00, - chocolate: 0xd2691e, - coral: 0xff7f50, - cornflowerblue: 0x6495ed, - cornsilk: 0xfff8dc, - crimson: 0xdc143c, - cyan: 0x00ffff, - darkblue: 0x00008b, - darkcyan: 0x008b8b, - darkgoldenrod: 0xb8860b, - darkgray: 0xa9a9a9, - darkgrey: 0xa9a9a9, - darkgreen: 0x006400, - darkkhaki: 0xbdb76b, - darkmagenta: 0x8b008b, - darkolivegreen: 0x556b2f, - darkorange: 0xff8c00, - darkorchid: 0x9932cc, - darkred: 0x8b0000, - darksalmon: 0xe9967a, - darkseagreen: 0x8fbc8f, - darkslateblue: 0x483d8b, - darkslategray: 0x2f4f4f, - darkslategrey: 0x2f4f4f, - darkturquoise: 0x00ced1, - darkviolet: 0x9400d3, - deeppink: 0xff1493, - deepskyblue: 0x00bfff, - dimgray: 0x696969, - dimgrey: 0x696969, - dodgerblue: 0x1e90ff, - firebrick: 0xb22222, - floralwhite: 0xfffaf0, - forestgreen: 0x228b22, - fuchsia: 0xff00ff, - gainsboro: 0xdcdcdc, - ghostwhite: 0xf8f8ff, - gold: 0xffd700, - goldenrod: 0xdaa520, - gray: 0x808080, - grey: 0x808080, - green: 0x008000, - greenyellow: 0xadff2f, - honeydew: 0xf0fff0, - hotpink: 0xff69b4, - indianred: 0xcd5c5c, - indigo: 0x4b0082, - ivory: 0xfffff0, - khaki: 0xf0e68c, - lavender: 0xe6e6fa, - lavenderblush: 0xfff0f5, - lawngreen: 0x7cfc00, - lemonchiffon: 0xfffacd, - lightblue: 0xadd8e6, - lightcoral: 0xf08080, - lightcyan: 0xe0ffff, - lightgoldenrodyellow: 0xfafad2, - lightgray: 0xd3d3d3, - lightgrey: 0xd3d3d3, - lightgreen: 0x90ee90, - lightpink: 0xffb6c1, - lightsalmon: 0xffa07a, - lightseagreen: 0x20b2aa, - lightskyblue: 0x87cefa, - lightslategray: 0x778899, - lightslategrey: 0x778899, - lightsteelblue: 0xb0c4de, - lightyellow: 0xffffe0, - lime: 0x00ff00, - limegreen: 0x32cd32, - linen: 0xfaf0e6, - magenta: 0xff00ff, - maroon: 0x800000, - mediumaquamarine: 0x66cdaa, - mediumblue: 0x0000cd, - mediumorchid: 0xba55d3, - mediumpurple: 0x9370db, - mediumseagreen: 0x3cb371, - mediumslateblue: 0x7b68ee, - mediumspringgreen: 0x00fa9a, - mediumturquoise: 0x48d1cc, - mediumvioletred: 0xc71585, - midnightblue: 0x191970, - mintcream: 0xf5fffa, - mistyrose: 0xffe4e1, - moccasin: 0xffe4b5, - navajowhite: 0xffdead, - navy: 0x000080, - oldlace: 0xfdf5e6, - olive: 0x808000, - olivedrab: 0x6b8e23, - orange: 0xffa500, - orangered: 0xff4500, - orchid: 0xda70d6, - palegoldenrod: 0xeee8aa, - palegreen: 0x98fb98, - paleturquoise: 0xafeeee, - palevioletred: 0xdb7093, - papayawhip: 0xffefd5, - peachpuff: 0xffdab9, - peru: 0xcd853f, - pink: 0xffc0cb, - plum: 0xdda0dd, - powderblue: 0xb0e0e6, - purple: 0x800080, - rebeccapurple: 0x663399, - red: 0xff0000, - rosybrown: 0xbc8f8f, - royalblue: 0x4169e1, - saddlebrown: 0x8b4513, - salmon: 0xfa8072, - sandybrown: 0xf4a460, - seagreen: 0x2e8b57, - seashell: 0xfff5ee, - sienna: 0xa0522d, - silver: 0xc0c0c0, - skyblue: 0x87ceeb, - slateblue: 0x6a5acd, - slategray: 0x708090, - slategrey: 0x708090, - snow: 0xfffafa, - springgreen: 0x00ff7f, - steelblue: 0x4682b4, - tan: 0xd2b48c, - teal: 0x008080, - thistle: 0xd8bfd8, - tomato: 0xff6347, - turquoise: 0x40e0d0, - violet: 0xee82ee, - wheat: 0xf5deb3, - white: 0xffffff, - whitesmoke: 0xf5f5f5, - yellow: 0xffff00, - yellowgreen: 0x9acd32 - }) - ); - var systemColors = new Map( - Object.entries({ - "ActiveBorder": 0x3b99fc, - "ActiveCaption": 0x000000, - "AppWorkspace": 0xaaaaaa, - "Background": 0x6363ce, - "ButtonFace": 0xffffff, - "ButtonHighlight": 0xe9e9e9, - "ButtonShadow": 0x9fa09f, - "ButtonText": 0x000000, - "CaptionText": 0x000000, - "GrayText": 0x7f7f7f, - "Highlight": 0xb2d7ff, - "HighlightText": 0x000000, - "InactiveBorder": 0xffffff, - "InactiveCaption": 0xffffff, - "InactiveCaptionText": 0x000000, - "InfoBackground": 0xfbfcc5, - "InfoText": 0x000000, - "Menu": 0xf6f6f6, - "MenuText": 0xffffff, - "Scrollbar": 0xaaaaaa, - "ThreeDDarkShadow": 0x000000, - "ThreeDFace": 0xc0c0c0, - "ThreeDHighlight": 0xffffff, - "ThreeDLightShadow": 0xffffff, - "ThreeDShadow": 0x000000, - "Window": 0xececec, - "WindowFrame": 0xaaaaaa, - "WindowText": 0x000000, - "-webkit-focus-ring-color": 0xe59700 - }).map(function (_a) { - var _b = __read(_a, 2), - key = _b[0], - value = _b[1]; - return [key.toLowerCase(), value]; - }) - ); - function getSRGBLightness(r, g, b) { - return (0.2126 * r + 0.7152 * g + 0.0722 * b) / 255; - } - - function scale(x, inLow, inHigh, outLow, outHigh) { - return ((x - inLow) * (outHigh - outLow)) / (inHigh - inLow) + outLow; - } - function clamp(x, min, max) { - return Math.min(max, Math.max(min, x)); - } - function multiplyMatrices(m1, m2) { - var result = []; - for (var i = 0, len = m1.length; i < len; i++) { - result[i] = []; - for (var j = 0, len2 = m2[0].length; j < len2; j++) { - var sum = 0; - for (var k = 0, len3 = m1[0].length; k < len3; k++) { - sum += m1[i][k] * m2[k][j]; - } - result[i][j] = sum; - } - } - return result; - } - - function createFilterMatrix(config) { - var m = Matrix.identity(); - if (config.sepia !== 0) { - m = multiplyMatrices(m, Matrix.sepia(config.sepia / 100)); - } - if (config.grayscale !== 0) { - m = multiplyMatrices(m, Matrix.grayscale(config.grayscale / 100)); - } - if (config.contrast !== 100) { - m = multiplyMatrices(m, Matrix.contrast(config.contrast / 100)); - } - if (config.brightness !== 100) { - m = multiplyMatrices(m, Matrix.brightness(config.brightness / 100)); - } - if (config.mode === 1) { - m = multiplyMatrices(m, Matrix.invertNHue()); - } - return m; - } - function applyColorMatrix(_a, matrix) { - var _b = __read(_a, 3), - r = _b[0], - g = _b[1], - b = _b[2]; - var rgb = [[r / 255], [g / 255], [b / 255], [1], [1]]; - var result = multiplyMatrices(matrix, rgb); - return [0, 1, 2].map(function (i) { - return clamp(Math.round(result[i][0] * 255), 0, 255); - }); - } - var Matrix = { - identity: function () { - return [ - [1, 0, 0, 0, 0], - [0, 1, 0, 0, 0], - [0, 0, 1, 0, 0], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - invertNHue: function () { - return [ - [0.333, -0.667, -0.667, 0, 1], - [-0.667, 0.333, -0.667, 0, 1], - [-0.667, -0.667, 0.333, 0, 1], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - brightness: function (v) { - return [ - [v, 0, 0, 0, 0], - [0, v, 0, 0, 0], - [0, 0, v, 0, 0], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - contrast: function (v) { - var t = (1 - v) / 2; - return [ - [v, 0, 0, 0, t], - [0, v, 0, 0, t], - [0, 0, v, 0, t], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - sepia: function (v) { - return [ - [ - 0.393 + 0.607 * (1 - v), - 0.769 - 0.769 * (1 - v), - 0.189 - 0.189 * (1 - v), - 0, - 0 - ], - [ - 0.349 - 0.349 * (1 - v), - 0.686 + 0.314 * (1 - v), - 0.168 - 0.168 * (1 - v), - 0, - 0 - ], - [ - 0.272 - 0.272 * (1 - v), - 0.534 - 0.534 * (1 - v), - 0.131 + 0.869 * (1 - v), - 0, - 0 - ], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - grayscale: function (v) { - return [ - [ - 0.2126 + 0.7874 * (1 - v), - 0.7152 - 0.7152 * (1 - v), - 0.0722 - 0.0722 * (1 - v), - 0, - 0 - ], - [ - 0.2126 - 0.2126 * (1 - v), - 0.7152 + 0.2848 * (1 - v), - 0.0722 - 0.0722 * (1 - v), - 0, - 0 - ], - [ - 0.2126 - 0.2126 * (1 - v), - 0.7152 - 0.7152 * (1 - v), - 0.0722 + 0.9278 * (1 - v), - 0, - 0 - ], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - } - }; - - function getBgPole(theme) { - var isDarkScheme = theme.mode === 1; - var prop = isDarkScheme - ? "darkSchemeBackgroundColor" - : "lightSchemeBackgroundColor"; - return theme[prop]; - } - function getFgPole(theme) { - var isDarkScheme = theme.mode === 1; - var prop = isDarkScheme - ? "darkSchemeTextColor" - : "lightSchemeTextColor"; - return theme[prop]; - } - var colorModificationCache = new Map(); - function clearColorModificationCache() { - colorModificationCache.clear(); - } - var rgbCacheKeys = ["r", "g", "b", "a"]; - var themeCacheKeys$1 = [ - "mode", - "brightness", - "contrast", - "grayscale", - "sepia", - "darkSchemeBackgroundColor", - "darkSchemeTextColor", - "lightSchemeBackgroundColor", - "lightSchemeTextColor" - ]; - function getCacheId(rgb, theme) { - var resultId = ""; - rgbCacheKeys.forEach(function (key) { - resultId += "".concat(rgb[key], ";"); - }); - themeCacheKeys$1.forEach(function (key) { - resultId += "".concat(theme[key], ";"); - }); - return resultId; - } - function modifyColorWithCache( - rgb, - theme, - modifyHSL, - poleColor, - anotherPoleColor - ) { - var fnCache; - if (colorModificationCache.has(modifyHSL)) { - fnCache = colorModificationCache.get(modifyHSL); - } else { - fnCache = new Map(); - colorModificationCache.set(modifyHSL, fnCache); - } - var id = getCacheId(rgb, theme); - if (fnCache.has(id)) { - return fnCache.get(id); - } - var hsl = rgbToHSL(rgb); - var pole = poleColor == null ? null : parseToHSLWithCache(poleColor); - var anotherPole = - anotherPoleColor == null - ? null - : parseToHSLWithCache(anotherPoleColor); - var modified = modifyHSL(hsl, pole, anotherPole); - var _a = hslToRGB(modified), - r = _a.r, - g = _a.g, - b = _a.b, - a = _a.a; - var matrix = createFilterMatrix(theme); - var _b = __read(applyColorMatrix([r, g, b], matrix), 3), - rf = _b[0], - gf = _b[1], - bf = _b[2]; - var color = - a === 1 - ? rgbToHexString({r: rf, g: gf, b: bf}) - : rgbToString({r: rf, g: gf, b: bf, a: a}); - fnCache.set(id, color); - return color; - } - function noopHSL(hsl) { - return hsl; - } - function modifyColor(rgb, theme) { - return modifyColorWithCache(rgb, theme, noopHSL); - } - function modifyLightSchemeColor(rgb, theme) { - var poleBg = getBgPole(theme); - var poleFg = getFgPole(theme); - return modifyColorWithCache( - rgb, - theme, - modifyLightModeHSL, - poleFg, - poleBg - ); - } - function modifyLightModeHSL(_a, poleFg, poleBg) { - var h = _a.h, - s = _a.s, - l = _a.l, - a = _a.a; - var isDark = l < 0.5; - var isNeutral; - if (isDark) { - isNeutral = l < 0.2 || s < 0.12; - } else { - var isBlue = h > 200 && h < 280; - isNeutral = s < 0.24 || (l > 0.8 && isBlue); - } - var hx = h; - var sx = l; - if (isNeutral) { - if (isDark) { - hx = poleFg.h; - sx = poleFg.s; - } else { - hx = poleBg.h; - sx = poleBg.s; - } - } - var lx = scale(l, 0, 1, poleFg.l, poleBg.l); - return {h: hx, s: sx, l: lx, a: a}; - } - var MAX_BG_LIGHTNESS = 0.4; - function modifyBgHSL(_a, pole) { - var h = _a.h, - s = _a.s, - l = _a.l, - a = _a.a; - var isDark = l < 0.5; - var isBlue = h > 200 && h < 280; - var isNeutral = s < 0.12 || (l > 0.8 && isBlue); - if (isDark) { - var lx_1 = scale(l, 0, 0.5, 0, MAX_BG_LIGHTNESS); - if (isNeutral) { - var hx_1 = pole.h; - var sx = pole.s; - return {h: hx_1, s: sx, l: lx_1, a: a}; - } - return {h: h, s: s, l: lx_1, a: a}; - } - var lx = scale(l, 0.5, 1, MAX_BG_LIGHTNESS, pole.l); - if (isNeutral) { - var hx_2 = pole.h; - var sx = pole.s; - return {h: hx_2, s: sx, l: lx, a: a}; - } - var hx = h; - var isYellow = h > 60 && h < 180; - if (isYellow) { - var isCloserToGreen = h > 120; - if (isCloserToGreen) { - hx = scale(h, 120, 180, 135, 180); - } else { - hx = scale(h, 60, 120, 60, 105); - } - } - if (hx > 40 && hx < 80) { - lx *= 0.75; - } - return {h: hx, s: s, l: lx, a: a}; - } - function modifyBackgroundColor(rgb, theme) { - if (theme.mode === 0) { - return modifyLightSchemeColor(rgb, theme); - } - var pole = getBgPole(theme); - return modifyColorWithCache( - rgb, - __assign(__assign({}, theme), {mode: 0}), - modifyBgHSL, - pole - ); - } - var MIN_FG_LIGHTNESS = 0.55; - function modifyBlueFgHue(hue) { - return scale(hue, 205, 245, 205, 220); - } - function modifyFgHSL(_a, pole) { - var h = _a.h, - s = _a.s, - l = _a.l, - a = _a.a; - var isLight = l > 0.5; - var isNeutral = l < 0.2 || s < 0.24; - var isBlue = !isNeutral && h > 205 && h < 245; - if (isLight) { - var lx_2 = scale(l, 0.5, 1, MIN_FG_LIGHTNESS, pole.l); - if (isNeutral) { - var hx_3 = pole.h; - var sx = pole.s; - return {h: hx_3, s: sx, l: lx_2, a: a}; - } - var hx_4 = h; - if (isBlue) { - hx_4 = modifyBlueFgHue(h); - } - return {h: hx_4, s: s, l: lx_2, a: a}; - } - if (isNeutral) { - var hx_5 = pole.h; - var sx = pole.s; - var lx_3 = scale(l, 0, 0.5, pole.l, MIN_FG_LIGHTNESS); - return {h: hx_5, s: sx, l: lx_3, a: a}; - } - var hx = h; - var lx; - if (isBlue) { - hx = modifyBlueFgHue(h); - lx = scale(l, 0, 0.5, pole.l, Math.min(1, MIN_FG_LIGHTNESS + 0.05)); - } else { - lx = scale(l, 0, 0.5, pole.l, MIN_FG_LIGHTNESS); - } - return {h: hx, s: s, l: lx, a: a}; - } - function modifyForegroundColor(rgb, theme) { - if (theme.mode === 0) { - return modifyLightSchemeColor(rgb, theme); - } - var pole = getFgPole(theme); - return modifyColorWithCache( - rgb, - __assign(__assign({}, theme), {mode: 0}), - modifyFgHSL, - pole - ); - } - function modifyBorderHSL(_a, poleFg, poleBg) { - var h = _a.h, - s = _a.s, - l = _a.l, - a = _a.a; - var isDark = l < 0.5; - var isNeutral = l < 0.2 || s < 0.24; - var hx = h; - var sx = s; - if (isNeutral) { - if (isDark) { - hx = poleFg.h; - sx = poleFg.s; - } else { - hx = poleBg.h; - sx = poleBg.s; - } - } - var lx = scale(l, 0, 1, 0.5, 0.2); - return {h: hx, s: sx, l: lx, a: a}; - } - function modifyBorderColor(rgb, theme) { - if (theme.mode === 0) { - return modifyLightSchemeColor(rgb, theme); - } - var poleFg = getFgPole(theme); - var poleBg = getBgPole(theme); - return modifyColorWithCache( - rgb, - __assign(__assign({}, theme), {mode: 0}), - modifyBorderHSL, - poleFg, - poleBg - ); - } - function modifyShadowColor(rgb, filter) { - return modifyBackgroundColor(rgb, filter); - } - function modifyGradientColor(rgb, filter) { - return modifyBackgroundColor(rgb, filter); - } - - function createTextStyle(config) { - var lines = []; - lines.push( - '*:not(pre, pre *, code, .far, .fa, .glyphicon, [class*="vjs-"], .fab, .fa-github, .fas, .material-icons, .icofont, .typcn, mu, [class*="mu-"], .glyphicon, .icon) {' - ); - if (config.useFont && config.fontFamily) { - lines.push( - " font-family: ".concat(config.fontFamily, " !important;") - ); - } - if (config.textStroke > 0) { - lines.push( - " -webkit-text-stroke: ".concat( - config.textStroke, - "px !important;" - ) - ); - lines.push( - " text-stroke: ".concat(config.textStroke, "px !important;") - ); - } - lines.push("}"); - return lines.join("\n"); - } - - var FilterMode; - (function (FilterMode) { - FilterMode[(FilterMode["light"] = 0)] = "light"; - FilterMode[(FilterMode["dark"] = 1)] = "dark"; - })(FilterMode || (FilterMode = {})); - function getCSSFilterValue(config) { - var filters = []; - if (config.mode === FilterMode.dark) { - filters.push("invert(100%) hue-rotate(180deg)"); - } - if (config.brightness !== 100) { - filters.push("brightness(".concat(config.brightness, "%)")); - } - if (config.contrast !== 100) { - filters.push("contrast(".concat(config.contrast, "%)")); - } - if (config.grayscale !== 0) { - filters.push("grayscale(".concat(config.grayscale, "%)")); - } - if (config.sepia !== 0) { - filters.push("sepia(".concat(config.sepia, "%)")); - } - if (filters.length === 0) { - return null; - } - return filters.join(" "); - } - - function toSVGMatrix(matrix) { - return matrix - .slice(0, 4) - .map(function (m) { - return m - .map(function (m) { - return m.toFixed(3); - }) - .join(" "); - }) - .join(" "); - } - function getSVGFilterMatrixValue(config) { - return toSVGMatrix(createFilterMatrix(config)); - } - - var counter = 0; - var resolvers$1 = new Map(); - var rejectors = new Map(); - function bgFetch(request) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - return [ - 2, - new Promise(function (resolve, reject) { - var id = ++counter; - resolvers$1.set(id, resolve); - rejectors.set(id, reject); - chrome.runtime.sendMessage({ - type: MessageType.CS_FETCH, - data: request, - id: id - }); - }) - ]; - }); - }); - } - chrome.runtime.onMessage.addListener(function (_a) { - var type = _a.type, - data = _a.data, - error = _a.error, - id = _a.id; - if (type === MessageType.BG_FETCH_RESPONSE) { - var resolve = resolvers$1.get(id); - var reject = rejectors.get(id); - resolvers$1.delete(id); - rejectors.delete(id); - if (error) { - reject && reject(error); - } else { - resolve && resolve(data); - } - } - }); - - var AsyncQueue = (function () { - function AsyncQueue() { - this.queue = []; - this.timerId = null; - this.frameDuration = 1000 / 60; - } - AsyncQueue.prototype.addToQueue = function (entry) { - this.queue.push(entry); - this.startQueue(); - }; - AsyncQueue.prototype.stopQueue = function () { - if (this.timerId !== null) { - cancelAnimationFrame(this.timerId); - this.timerId = null; - } - this.queue = []; - }; - AsyncQueue.prototype.startQueue = function () { - var _this = this; - if (this.timerId) { - return; - } - this.timerId = requestAnimationFrame(function () { - _this.timerId = null; - var start = Date.now(); - var cb; - while ((cb = _this.queue.shift())) { - cb(); - if (Date.now() - start >= _this.frameDuration) { - _this.startQueue(); - break; - } - } - }); - }; - return AsyncQueue; - })(); - - var imageManager = new AsyncQueue(); - function getImageDetails(url) { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_a) { - return [ - 2, - new Promise(function (resolve, reject) { - return __awaiter(_this, void 0, void 0, function () { - var dataURL, error_1, image_1, error_2; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (!url.startsWith("data:")) - return [3, 1]; - dataURL = url; - return [3, 4]; - case 1: - _a.trys.push([1, 3, , 4]); - return [4, getImageDataURL(url)]; - case 2: - dataURL = _a.sent(); - return [3, 4]; - case 3: - error_1 = _a.sent(); - reject(error_1); - return [2]; - case 4: - _a.trys.push([4, 6, , 7]); - return [4, urlToImage(dataURL)]; - case 5: - image_1 = _a.sent(); - imageManager.addToQueue(function () { - resolve( - __assign( - { - src: url, - dataURL: dataURL, - width: image_1.naturalWidth, - height: image_1.naturalHeight - }, - analyzeImage(image_1) - ) - ); - }); - return [3, 7]; - case 6: - error_2 = _a.sent(); - reject(error_2); - return [3, 7]; - case 7: - return [2]; - } - }); - }); - }) - ]; - }); - }); - } - function getImageDataURL(url) { - return __awaiter(this, void 0, void 0, function () { - var parsedURL; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - parsedURL = new URL(url); - if (!(parsedURL.origin === location.origin)) - return [3, 2]; - return [4, loadAsDataURL(url)]; - case 1: - return [2, _a.sent()]; - case 2: - return [ - 4, - bgFetch({url: url, responseType: "data-url"}) - ]; - case 3: - return [2, _a.sent()]; - } - }); - }); - } - function urlToImage(url) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - return [ - 2, - new Promise(function (resolve, reject) { - var image = new Image(); - image.onload = function () { - return resolve(image); - }; - image.onerror = function () { - return reject("Unable to load image ".concat(url)); - }; - image.src = url; - }) - ]; - }); - }); - } - var MAX_ANALIZE_PIXELS_COUNT = 32 * 32; - var canvas; - var context; - function createCanvas() { - var maxWidth = MAX_ANALIZE_PIXELS_COUNT; - var maxHeight = MAX_ANALIZE_PIXELS_COUNT; - canvas = document.createElement("canvas"); - canvas.width = maxWidth; - canvas.height = maxHeight; - context = canvas.getContext("2d"); - context.imageSmoothingEnabled = false; - } - function removeCanvas() { - canvas = null; - context = null; - } - var MAX_IMAGE_SIZE = 5 * 1024 * 1024; - function analyzeImage(image) { - if (!canvas) { - createCanvas(); - } - var naturalWidth = image.naturalWidth, - naturalHeight = image.naturalHeight; - if (naturalHeight === 0 || naturalWidth === 0) { - logWarn("logWarn(Image is empty ".concat(image.currentSrc, ")")); - return null; - } - var size = naturalWidth * naturalHeight * 4; - if (size > MAX_IMAGE_SIZE) { - return { - isDark: false, - isLight: false, - isTransparent: false, - isLarge: false, - isTooLarge: true - }; - } - var naturalPixelsCount = naturalWidth * naturalHeight; - var k = Math.min( - 1, - Math.sqrt(MAX_ANALIZE_PIXELS_COUNT / naturalPixelsCount) - ); - var width = Math.ceil(naturalWidth * k); - var height = Math.ceil(naturalHeight * k); - context.clearRect(0, 0, width, height); - context.drawImage( - image, - 0, - 0, - naturalWidth, - naturalHeight, - 0, - 0, - width, - height - ); - var imageData = context.getImageData(0, 0, width, height); - var d = imageData.data; - var TRANSPARENT_ALPHA_THRESHOLD = 0.05; - var DARK_LIGHTNESS_THRESHOLD = 0.4; - var LIGHT_LIGHTNESS_THRESHOLD = 0.7; - var transparentPixelsCount = 0; - var darkPixelsCount = 0; - var lightPixelsCount = 0; - var i, x, y; - var r, g, b, a; - var l; - for (y = 0; y < height; y++) { - for (x = 0; x < width; x++) { - i = 4 * (y * width + x); - r = d[i + 0]; - g = d[i + 1]; - b = d[i + 2]; - a = d[i + 3]; - if (a / 255 < TRANSPARENT_ALPHA_THRESHOLD) { - transparentPixelsCount++; - } else { - l = getSRGBLightness(r, g, b); - if (l < DARK_LIGHTNESS_THRESHOLD) { - darkPixelsCount++; - } - if (l > LIGHT_LIGHTNESS_THRESHOLD) { - lightPixelsCount++; - } - } - } - } - var totalPixelsCount = width * height; - var opaquePixelsCount = totalPixelsCount - transparentPixelsCount; - var DARK_IMAGE_THRESHOLD = 0.7; - var LIGHT_IMAGE_THRESHOLD = 0.7; - var TRANSPARENT_IMAGE_THRESHOLD = 0.1; - var LARGE_IMAGE_PIXELS_COUNT = 800 * 600; - return { - isDark: darkPixelsCount / opaquePixelsCount >= DARK_IMAGE_THRESHOLD, - isLight: - lightPixelsCount / opaquePixelsCount >= LIGHT_IMAGE_THRESHOLD, - isTransparent: - transparentPixelsCount / totalPixelsCount >= - TRANSPARENT_IMAGE_THRESHOLD, - isLarge: naturalPixelsCount >= LARGE_IMAGE_PIXELS_COUNT, - isTooLarge: false - }; - } - function getFilteredImageDataURL(_a, theme) { - var dataURL = _a.dataURL, - width = _a.width, - height = _a.height; - var matrix = getSVGFilterMatrixValue(theme); - var svg = [ - ''), - "", - '', - ''), - "", - "", - ''), - "" - ].join(""); - return "data:image/svg+xml;base64,".concat(btoa(svg)); - } - function cleanImageProcessingCache() { - imageManager && imageManager.stopQueue(); - removeCanvas(); - } - - var gradientLength = "gradient".length; - var conicGradient = "conic-"; - var conicGradientLength = conicGradient.length; - var radialGradient = "radial-"; - var linearGradient = "linear-"; - function parseGradient(value) { - var result = []; - var index = 0; - var startIndex = conicGradient.length; - var _loop_1 = function () { - var typeGradient; - [linearGradient, radialGradient, conicGradient].find(function ( - possibleType - ) { - if (index - possibleType.length >= 0) { - var possibleGradient = value.substring( - index - possibleType.length, - index - ); - if (possibleGradient === possibleType) { - if ( - value.slice( - index - possibleType.length - 10, - index - possibleType.length - 1 - ) === "repeating" - ) { - typeGradient = "repeating-".concat( - possibleType, - "gradient" - ); - return true; - } - if ( - value.slice( - index - possibleType.length - 8, - index - possibleType.length - 1 - ) === "-webkit" - ) { - typeGradient = "-webkit-".concat( - possibleType, - "gradient" - ); - return true; - } - typeGradient = "".concat(possibleType, "gradient"); - return true; - } - } - }); - if (!typeGradient) { - return "break"; - } - var _a = getParenthesesRange(value, index + gradientLength), - start = _a.start, - end = _a.end; - var match = value.substring(start + 1, end - 1); - startIndex = end + 1 + conicGradientLength; - result.push({ - typeGradient: typeGradient, - match: match, - offset: typeGradient.length + 2, - index: index - typeGradient.length + gradientLength, - hasComma: true - }); - }; - while ((index = value.indexOf("gradient", startIndex)) !== -1) { - var state_1 = _loop_1(); - if (state_1 === "break") break; - } - if (result.length) { - result[result.length - 1].hasComma = false; - } - return result; - } - - function getPriority(ruleStyle, property) { - return Boolean(ruleStyle && ruleStyle.getPropertyPriority(property)); - } - function getModifiableCSSDeclaration( - property, - value, - rule, - variablesStore, - ignoreImageSelectors, - isCancelled - ) { - if (property.startsWith("--")) { - var modifier = getVariableModifier( - variablesStore, - property, - value, - rule, - ignoreImageSelectors, - isCancelled - ); - if (modifier) { - return { - property: property, - value: modifier, - important: getPriority(rule.style, property), - sourceValue: value - }; - } - } else if (value.includes("var(")) { - var modifier = getVariableDependantModifier( - variablesStore, - property, - value - ); - if (modifier) { - return { - property: property, - value: modifier, - important: getPriority(rule.style, property), - sourceValue: value - }; - } - } else if (property === "color-scheme") { - return null; - } else if ( - (property.includes("color") && - property !== "-webkit-print-color-adjust") || - property === "fill" || - property === "stroke" || - property === "stop-color" - ) { - var modifier = getColorModifier(property, value, rule); - if (modifier) { - return { - property: property, - value: modifier, - important: getPriority(rule.style, property), - sourceValue: value - }; - } - } else if ( - property === "background-image" || - property === "list-style-image" - ) { - var modifier = getBgImageModifier( - value, - rule, - ignoreImageSelectors, - isCancelled - ); - if (modifier) { - return { - property: property, - value: modifier, - important: getPriority(rule.style, property), - sourceValue: value - }; - } - } else if (property.includes("shadow")) { - var modifier = getShadowModifier(value); - if (modifier) { - return { - property: property, - value: modifier, - important: getPriority(rule.style, property), - sourceValue: value - }; - } - } - return null; - } - function joinSelectors() { - var selectors = []; - for (var _i = 0; _i < arguments.length; _i++) { - selectors[_i] = arguments[_i]; - } - return selectors.filter(Boolean).join(", "); - } - function getModifiedUserAgentStyle(theme, isIFrame, styleSystemControls) { - var lines = []; - if (!isIFrame) { - lines.push("html {"); - lines.push( - " background-color: ".concat( - modifyBackgroundColor({r: 255, g: 255, b: 255}, theme), - " !important;" - ) - ); - lines.push("}"); - } - if (isCSSColorSchemePropSupported) { - lines.push("html {"); - lines.push( - " color-scheme: ".concat( - theme.mode === 1 ? "dark" : "dark light", - " !important;" - ) - ); - lines.push("}"); - } - var bgSelectors = joinSelectors( - isIFrame ? "" : "html, body", - styleSystemControls ? "input, textarea, select, button, dialog" : "" - ); - if (bgSelectors) { - lines.push("".concat(bgSelectors, " {")); - lines.push( - " background-color: ".concat( - modifyBackgroundColor({r: 255, g: 255, b: 255}, theme), - ";" - ) - ); - lines.push("}"); - } - lines.push( - "".concat( - joinSelectors( - "html, body", - styleSystemControls ? "input, textarea, select, button" : "" - ), - " {" - ) - ); - lines.push( - " border-color: ".concat( - modifyBorderColor({r: 76, g: 76, b: 76}, theme), - ";" - ) - ); - lines.push( - " color: ".concat( - modifyForegroundColor({r: 0, g: 0, b: 0}, theme), - ";" - ) - ); - lines.push("}"); - lines.push("a {"); - lines.push( - " color: ".concat( - modifyForegroundColor({r: 0, g: 64, b: 255}, theme), - ";" - ) - ); - lines.push("}"); - lines.push("table {"); - lines.push( - " border-color: ".concat( - modifyBorderColor({r: 128, g: 128, b: 128}, theme), - ";" - ) - ); - lines.push("}"); - lines.push("::placeholder {"); - lines.push( - " color: ".concat( - modifyForegroundColor({r: 169, g: 169, b: 169}, theme), - ";" - ) - ); - lines.push("}"); - lines.push("input:-webkit-autofill,"); - lines.push("textarea:-webkit-autofill,"); - lines.push("select:-webkit-autofill {"); - lines.push( - " background-color: ".concat( - modifyBackgroundColor({r: 250, g: 255, b: 189}, theme), - " !important;" - ) - ); - lines.push( - " color: ".concat( - modifyForegroundColor({r: 0, g: 0, b: 0}, theme), - " !important;" - ) - ); - lines.push("}"); - if (theme.scrollbarColor) { - lines.push(getModifiedScrollbarStyle(theme)); - } - if (theme.selectionColor) { - lines.push(getModifiedSelectionStyle(theme)); - } - return lines.join("\n"); - } - function getSelectionColor(theme) { - var backgroundColorSelection; - var foregroundColorSelection; - if (theme.selectionColor === "auto") { - backgroundColorSelection = modifyBackgroundColor( - {r: 0, g: 96, b: 212}, - __assign(__assign({}, theme), {grayscale: 0}) - ); - foregroundColorSelection = modifyForegroundColor( - {r: 255, g: 255, b: 255}, - __assign(__assign({}, theme), {grayscale: 0}) - ); - } else { - var rgb = parseColorWithCache(theme.selectionColor); - var hsl = rgbToHSL(rgb); - backgroundColorSelection = theme.selectionColor; - if (hsl.l < 0.5) { - foregroundColorSelection = "#FFF"; - } else { - foregroundColorSelection = "#000"; - } - } - return { - backgroundColorSelection: backgroundColorSelection, - foregroundColorSelection: foregroundColorSelection - }; - } - function getModifiedSelectionStyle(theme) { - var lines = []; - var modifiedSelectionColor = getSelectionColor(theme); - var backgroundColorSelection = - modifiedSelectionColor.backgroundColorSelection; - var foregroundColorSelection = - modifiedSelectionColor.foregroundColorSelection; - ["::selection", "::-moz-selection"].forEach(function (selection) { - lines.push("".concat(selection, " {")); - lines.push( - " background-color: ".concat( - backgroundColorSelection, - " !important;" - ) - ); - lines.push( - " color: ".concat(foregroundColorSelection, " !important;") - ); - lines.push("}"); - }); - return lines.join("\n"); - } - function getModifiedScrollbarStyle(theme) { - var lines = []; - var colorTrack; - var colorIcons; - var colorThumb; - var colorThumbHover; - var colorThumbActive; - var colorCorner; - if (theme.scrollbarColor === "auto") { - colorTrack = modifyBackgroundColor({r: 241, g: 241, b: 241}, theme); - colorIcons = modifyForegroundColor({r: 96, g: 96, b: 96}, theme); - colorThumb = modifyBackgroundColor({r: 176, g: 176, b: 176}, theme); - colorThumbHover = modifyBackgroundColor( - {r: 144, g: 144, b: 144}, - theme - ); - colorThumbActive = modifyBackgroundColor( - {r: 96, g: 96, b: 96}, - theme - ); - colorCorner = modifyBackgroundColor( - {r: 255, g: 255, b: 255}, - theme - ); - } else { - var rgb = parseColorWithCache(theme.scrollbarColor); - var hsl_1 = rgbToHSL(rgb); - var isLight = hsl_1.l > 0.5; - var lighten = function (lighter) { - return __assign(__assign({}, hsl_1), { - l: clamp(hsl_1.l + lighter, 0, 1) - }); - }; - var darken = function (darker) { - return __assign(__assign({}, hsl_1), { - l: clamp(hsl_1.l - darker, 0, 1) - }); - }; - colorTrack = hslToString(darken(0.4)); - colorIcons = hslToString(isLight ? darken(0.4) : lighten(0.4)); - colorThumb = hslToString(hsl_1); - colorThumbHover = hslToString(lighten(0.1)); - colorThumbActive = hslToString(lighten(0.2)); - } - lines.push("::-webkit-scrollbar {"); - lines.push(" background-color: ".concat(colorTrack, ";")); - lines.push(" color: ".concat(colorIcons, ";")); - lines.push("}"); - lines.push("::-webkit-scrollbar-thumb {"); - lines.push(" background-color: ".concat(colorThumb, ";")); - lines.push("}"); - lines.push("::-webkit-scrollbar-thumb:hover {"); - lines.push(" background-color: ".concat(colorThumbHover, ";")); - lines.push("}"); - lines.push("::-webkit-scrollbar-thumb:active {"); - lines.push(" background-color: ".concat(colorThumbActive, ";")); - lines.push("}"); - lines.push("::-webkit-scrollbar-corner {"); - lines.push(" background-color: ".concat(colorCorner, ";")); - lines.push("}"); - if (isFirefox) { - lines.push("* {"); - lines.push( - " scrollbar-color: " - .concat(colorThumb, " ") - .concat(colorTrack, ";") - ); - lines.push("}"); - } - return lines.join("\n"); - } - function getModifiedFallbackStyle(filter, _a) { - var strict = _a.strict; - var lines = []; - var isMicrosoft = ["microsoft.com", "docs.microsoft.com"].includes( - location.hostname - ); - lines.push( - "html, body, ".concat( - strict - ? "body :not(iframe)".concat( - isMicrosoft - ? ':not(div[style^="position:absolute;top:0;left:-"]' - : "" - ) - : "body > :not(iframe)", - " {" - ) - ); - lines.push( - " background-color: ".concat( - modifyBackgroundColor({r: 255, g: 255, b: 255}, filter), - " !important;" - ) - ); - lines.push( - " border-color: ".concat( - modifyBorderColor({r: 64, g: 64, b: 64}, filter), - " !important;" - ) - ); - lines.push( - " color: ".concat( - modifyForegroundColor({r: 0, g: 0, b: 0}, filter), - " !important;" - ) - ); - lines.push("}"); - return lines.join("\n"); - } - var unparsableColors = new Set([ - "inherit", - "transparent", - "initial", - "currentcolor", - "none", - "unset" - ]); - function getColorModifier(prop, value, rule) { - if (unparsableColors.has(value.toLowerCase())) { - return value; - } - var rgb = parseColorWithCache(value); - if (!rgb) { - return null; - } - if (prop.includes("background")) { - if ( - (rule.style.webkitMaskImage && - rule.style.webkitMaskImage !== "none") || - (rule.style.webkitMask && - !rule.style.webkitMask.startsWith("none")) || - (rule.style.mask && rule.style.mask !== "none") || - (rule.style.getPropertyValue("mask-image") && - rule.style.getPropertyValue("mask-image") !== "none") - ) { - return function (filter) { - return modifyForegroundColor(rgb, filter); - }; - } - return function (filter) { - return modifyBackgroundColor(rgb, filter); - }; - } - if (prop.includes("border") || prop.includes("outline")) { - return function (filter) { - return modifyBorderColor(rgb, filter); - }; - } - return function (filter) { - return modifyForegroundColor(rgb, filter); - }; - } - var imageDetailsCache = new Map(); - var awaitingForImageLoading = new Map(); - function shouldIgnoreImage(selectorText, selectors) { - if (!selectorText || selectors.length === 0) { - return false; - } - if ( - selectors.some(function (s) { - return s === "*"; - }) - ) { - return true; - } - var ruleSelectors = selectorText.split(/,\s*/g); - var _loop_1 = function (i) { - var ignoredSelector = selectors[i]; - if ( - ruleSelectors.some(function (s) { - return s === ignoredSelector; - }) - ) { - return {value: true}; - } - }; - for (var i = 0; i < selectors.length; i++) { - var state_1 = _loop_1(i); - if (typeof state_1 === "object") return state_1.value; - } - return false; - } - function getBgImageModifier( - value, - rule, - ignoreImageSelectors, - isCancelled - ) { - var _this = this; - try { - var gradients = parseGradient(value); - var urls = getMatches(cssURLRegex, value); - if (urls.length === 0 && gradients.length === 0) { - return value; - } - var getIndices = function (matches) { - var index = 0; - return matches.map(function (match) { - var valueIndex = value.indexOf(match, index); - index = valueIndex + match.length; - return {match: match, index: valueIndex}; - }); - }; - var matches_1 = gradients - .map(function (i) { - return __assign({type: "gradient"}, i); - }) - .concat( - getIndices(urls).map(function (i) { - return __assign({type: "url", offset: 0}, i); - }) - ) - .sort(function (a, b) { - return a.index > b.index ? 1 : -1; - }); - var getGradientModifier_1 = function (gradient) { - var typeGradient = gradient.typeGradient, - match = gradient.match, - hasComma = gradient.hasComma; - var partsRegex = - /([^\(\),]+(\([^\(\)]*(\([^\(\)]*\)*[^\(\)]*)?\))?([^\(\), ]|( (?!calc)))*),?/g; - var colorStopRegex = - /^(from|color-stop|to)\(([^\(\)]*?,\s*)?(.*?)\)$/; - var parts = getMatches(partsRegex, match, 1).map(function ( - part - ) { - part = part.trim(); - var rgb = parseColorWithCache(part); - if (rgb) { - return function (filter) { - return modifyGradientColor(rgb, filter); - }; - } - var space = part.lastIndexOf(" "); - rgb = parseColorWithCache(part.substring(0, space)); - if (rgb) { - return function (filter) { - return "" - .concat(modifyGradientColor(rgb, filter), " ") - .concat(part.substring(space + 1)); - }; - } - var colorStopMatch = part.match(colorStopRegex); - if (colorStopMatch) { - rgb = parseColorWithCache(colorStopMatch[3]); - if (rgb) { - return function (filter) { - return "" - .concat(colorStopMatch[1], "(") - .concat( - colorStopMatch[2] - ? "".concat(colorStopMatch[2], ", ") - : "" - ) - .concat( - modifyGradientColor(rgb, filter), - ")" - ); - }; - } - } - return function () { - return part; - }; - }); - return function (filter) { - return "" - .concat(typeGradient, "(") - .concat( - parts - .map(function (modify) { - return modify(filter); - }) - .join(", "), - ")" - ) - .concat(hasComma ? ", " : ""); - }; - }; - var getURLModifier_1 = function (urlValue) { - var _a; - if ( - shouldIgnoreImage(rule.selectorText, ignoreImageSelectors) - ) { - return null; - } - var url = getCSSURLValue(urlValue); - var isURLEmpty = url.length === 0; - var parentStyleSheet = rule.parentStyleSheet; - var baseURL = - parentStyleSheet && parentStyleSheet.href - ? getCSSBaseBath(parentStyleSheet.href) - : ((_a = parentStyleSheet.ownerNode) === null || - _a === void 0 - ? void 0 - : _a.baseURI) || location.origin; - url = getAbsoluteURL(baseURL, url); - var absoluteValue = 'url("'.concat(url, '")'); - return function (filter) { - return __awaiter(_this, void 0, void 0, function () { - var imageDetails, awaiters_1, err_1, bgImageValue; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (isURLEmpty) { - return [2, "url('')"]; - } - if (!imageDetailsCache.has(url)) - return [3, 1]; - imageDetails = imageDetailsCache.get(url); - return [3, 7]; - case 1: - _a.trys.push([1, 6, , 7]); - if (!awaitingForImageLoading.has(url)) - return [3, 3]; - awaiters_1 = - awaitingForImageLoading.get(url); - return [ - 4, - new Promise(function (resolve) { - return awaiters_1.push(resolve); - }) - ]; - case 2: - imageDetails = _a.sent(); - if (!imageDetails) { - return [2, null]; - } - return [3, 5]; - case 3: - awaitingForImageLoading.set(url, []); - return [4, getImageDetails(url)]; - case 4: - imageDetails = _a.sent(); - imageDetailsCache.set(url, imageDetails); - awaitingForImageLoading - .get(url) - .forEach(function (resolve) { - return resolve(imageDetails); - }); - awaitingForImageLoading.delete(url); - _a.label = 5; - case 5: - if (isCancelled()) { - return [2, null]; - } - return [3, 7]; - case 6: - err_1 = _a.sent(); - logWarn(err_1); - if (awaitingForImageLoading.has(url)) { - awaitingForImageLoading - .get(url) - .forEach(function (resolve) { - return resolve(null); - }); - awaitingForImageLoading.delete(url); - } - return [2, absoluteValue]; - case 7: - bgImageValue = - getBgImageValue_1( - imageDetails, - filter - ) || absoluteValue; - return [2, bgImageValue]; - } - }); - }); - }; - }; - var getBgImageValue_1 = function (imageDetails, filter) { - var isDark = imageDetails.isDark, - isLight = imageDetails.isLight, - isTransparent = imageDetails.isTransparent, - isLarge = imageDetails.isLarge, - isTooLarge = imageDetails.isTooLarge, - width = imageDetails.width; - var result; - if (isTooLarge) { - result = 'url("'.concat(imageDetails.src, '")'); - } else if ( - isDark && - isTransparent && - filter.mode === 1 && - !isLarge && - width > 2 - ) { - logInfo("Inverting dark image ".concat(imageDetails.src)); - var inverted = getFilteredImageDataURL( - imageDetails, - __assign(__assign({}, filter), { - sepia: clamp(filter.sepia + 10, 0, 100) - }) - ); - result = 'url("'.concat(inverted, '")'); - } else if (isLight && !isTransparent && filter.mode === 1) { - if (isLarge) { - result = "none"; - } else { - logInfo( - "Dimming light image ".concat(imageDetails.src) - ); - var dimmed = getFilteredImageDataURL( - imageDetails, - filter - ); - result = 'url("'.concat(dimmed, '")'); - } - } else if (filter.mode === 0 && isLight && !isLarge) { - logInfo( - "Applying filter to image ".concat(imageDetails.src) - ); - var filtered = getFilteredImageDataURL( - imageDetails, - __assign(__assign({}, filter), { - brightness: clamp(filter.brightness - 10, 5, 200), - sepia: clamp(filter.sepia + 10, 0, 100) - }) - ); - result = 'url("'.concat(filtered, '")'); - } else { - result = null; - } - return result; - }; - var modifiers_1 = []; - var matchIndex_1 = 0; - var prevHasComma_1 = false; - matches_1.forEach(function (_a, i) { - var type = _a.type, - match = _a.match, - index = _a.index, - typeGradient = _a.typeGradient, - hasComma = _a.hasComma, - offset = _a.offset; - var matchStart = index; - var prefixStart = matchIndex_1; - var matchEnd = matchStart + match.length + offset; - matchIndex_1 = matchEnd; - if (prefixStart !== matchStart) { - if (prevHasComma_1) { - modifiers_1.push(function () { - var betweenValue = value.substring( - prefixStart, - matchStart - ); - if (betweenValue[0] === ",") { - betweenValue = betweenValue.substring(1); - } - return betweenValue; - }); - } else { - modifiers_1.push(function () { - return value.substring(prefixStart, matchStart); - }); - } - } - prevHasComma_1 = hasComma || false; - if (type === "url") { - modifiers_1.push(getURLModifier_1(match)); - } else if (type === "gradient") { - modifiers_1.push( - getGradientModifier_1({ - match: match, - index: index, - typeGradient: typeGradient, - hasComma: hasComma, - offset: offset - }) - ); - } - if (i === matches_1.length - 1) { - modifiers_1.push(function () { - return value.substring(matchEnd); - }); - } - }); - return function (filter) { - var results = modifiers_1 - .filter(Boolean) - .map(function (modify) { - return modify(filter); - }); - if ( - results.some(function (r) { - return r instanceof Promise; - }) - ) { - return Promise.all(results).then(function (asyncResults) { - return asyncResults.filter(Boolean).join(""); - }); - } - var combinedResult = results.join(""); - if (combinedResult.endsWith(", initial")) { - return combinedResult.slice(0, -9); - } - return combinedResult; - }; - } catch (err) { - return null; - } - } - function getShadowModifierWithInfo(value) { - try { - var index_1 = 0; - var colorMatches_1 = getMatches( - /(^|\s)(?!calc)([a-z]+\(.+?\)|#[0-9a-f]+|[a-z]+)(.*?(inset|outset)?($|,))/gi, - value, - 2 - ); - var notParsed_1 = 0; - var modifiers_2 = colorMatches_1.map(function (match, i) { - var prefixIndex = index_1; - var matchIndex = value.indexOf(match, index_1); - var matchEnd = matchIndex + match.length; - index_1 = matchEnd; - var rgb = parseColorWithCache(match); - if (!rgb) { - notParsed_1++; - return function () { - return value.substring(prefixIndex, matchEnd); - }; - } - return function (filter) { - return "" - .concat(value.substring(prefixIndex, matchIndex)) - .concat(modifyShadowColor(rgb, filter)) - .concat( - i === colorMatches_1.length - 1 - ? value.substring(matchEnd) - : "" - ); - }; - }); - return function (filter) { - var modified = modifiers_2 - .map(function (modify) { - return modify(filter); - }) - .join(""); - return { - matchesLength: colorMatches_1.length, - unparseableMatchesLength: notParsed_1, - result: modified - }; - }; - } catch (err) { - return null; - } - } - function getShadowModifier(value) { - var shadowModifier = getShadowModifierWithInfo(value); - if (!shadowModifier) { - return null; - } - return function (theme) { - return shadowModifier(theme).result; - }; - } - function getVariableModifier( - variablesStore, - prop, - value, - rule, - ignoredImgSelectors, - isCancelled - ) { - return variablesStore.getModifierForVariable({ - varName: prop, - sourceValue: value, - rule: rule, - ignoredImgSelectors: ignoredImgSelectors, - isCancelled: isCancelled - }); - } - function getVariableDependantModifier(variablesStore, prop, value) { - return variablesStore.getModifierForVarDependant(prop, value); - } - function cleanModificationCache() { - clearColorModificationCache(); - imageDetailsCache.clear(); - cleanImageProcessingCache(); - awaitingForImageLoading.clear(); - } - - var VAR_TYPE_BGCOLOR = 1 << 0; - var VAR_TYPE_TEXTCOLOR = 1 << 1; - var VAR_TYPE_BORDERCOLOR = 1 << 2; - var VAR_TYPE_BGIMG = 1 << 3; - var VariablesStore = (function () { - function VariablesStore() { - this.varTypes = new Map(); - this.rulesQueue = []; - this.definedVars = new Set(); - this.varRefs = new Map(); - this.unknownColorVars = new Set(); - this.unknownBgVars = new Set(); - this.undefinedVars = new Set(); - this.initialVarTypes = new Map(); - this.changedTypeVars = new Set(); - this.typeChangeSubscriptions = new Map(); - this.unstableVarValues = new Map(); - } - VariablesStore.prototype.clear = function () { - this.varTypes.clear(); - this.rulesQueue.splice(0); - this.definedVars.clear(); - this.varRefs.clear(); - this.unknownColorVars.clear(); - this.unknownBgVars.clear(); - this.undefinedVars.clear(); - this.initialVarTypes.clear(); - this.changedTypeVars.clear(); - this.typeChangeSubscriptions.clear(); - this.unstableVarValues.clear(); - }; - VariablesStore.prototype.isVarType = function (varName, typeNum) { - return ( - this.varTypes.has(varName) && - (this.varTypes.get(varName) & typeNum) > 0 - ); - }; - VariablesStore.prototype.addRulesForMatching = function (rules) { - this.rulesQueue.push(rules); - }; - VariablesStore.prototype.matchVariablesAndDependants = function () { - var _this = this; - this.changedTypeVars.clear(); - this.initialVarTypes = new Map(this.varTypes); - this.collectRootVariables(); - this.collectVariablesAndVarDep(this.rulesQueue); - this.rulesQueue.splice(0); - this.collectRootVarDependants(); - this.varRefs.forEach(function (refs, v) { - refs.forEach(function (r) { - if (_this.varTypes.has(v)) { - _this.resolveVariableType(r, _this.varTypes.get(v)); - } - }); - }); - this.unknownColorVars.forEach(function (v) { - if (_this.unknownBgVars.has(v)) { - _this.unknownColorVars.delete(v); - _this.unknownBgVars.delete(v); - _this.resolveVariableType(v, VAR_TYPE_BGCOLOR); - } else if ( - _this.isVarType( - v, - VAR_TYPE_BGCOLOR | - VAR_TYPE_TEXTCOLOR | - VAR_TYPE_BORDERCOLOR - ) - ) { - _this.unknownColorVars.delete(v); - } else { - _this.undefinedVars.add(v); - } - }); - this.unknownBgVars.forEach(function (v) { - var hasColor = - _this.findVarRef(v, function (ref) { - return ( - _this.unknownColorVars.has(ref) || - _this.isVarType( - ref, - VAR_TYPE_TEXTCOLOR | VAR_TYPE_BORDERCOLOR - ) - ); - }) != null; - if (hasColor) { - _this.itarateVarRefs(v, function (ref) { - _this.resolveVariableType(ref, VAR_TYPE_BGCOLOR); - }); - } else if ( - _this.isVarType(v, VAR_TYPE_BGCOLOR | VAR_TYPE_BGIMG) - ) { - _this.unknownBgVars.delete(v); - } else { - _this.undefinedVars.add(v); - } - }); - this.changedTypeVars.forEach(function (varName) { - if (_this.typeChangeSubscriptions.has(varName)) { - _this.typeChangeSubscriptions - .get(varName) - .forEach(function (callback) { - callback(); - }); - } - }); - this.changedTypeVars.clear(); - }; - VariablesStore.prototype.getModifierForVariable = function (options) { - var _this = this; - return function (theme) { - var varName = options.varName, - sourceValue = options.sourceValue, - rule = options.rule, - ignoredImgSelectors = options.ignoredImgSelectors, - isCancelled = options.isCancelled; - var getDeclarations = function () { - var declarations = []; - var addModifiedValue = function ( - typeNum, - varNameWrapper, - colorModifier - ) { - if (!_this.isVarType(varName, typeNum)) { - return; - } - var property = varNameWrapper(varName); - var modifiedValue; - if (isVarDependant(sourceValue)) { - if (isConstructedColorVar(sourceValue)) { - var value = insertVarValues( - sourceValue, - _this.unstableVarValues - ); - if (!value) { - value = - typeNum === VAR_TYPE_BGCOLOR - ? "#ffffff" - : "#000000"; - } - modifiedValue = colorModifier(value, theme); - } else { - modifiedValue = replaceCSSVariablesNames( - sourceValue, - function (v) { - return varNameWrapper(v); - }, - function (fallback) { - return colorModifier(fallback, theme); - } - ); - } - } else { - modifiedValue = colorModifier(sourceValue, theme); - } - declarations.push({ - property: property, - value: modifiedValue - }); - }; - addModifiedValue( - VAR_TYPE_BGCOLOR, - wrapBgColorVariableName, - tryModifyBgColor - ); - addModifiedValue( - VAR_TYPE_TEXTCOLOR, - wrapTextColorVariableName, - tryModifyTextColor - ); - addModifiedValue( - VAR_TYPE_BORDERCOLOR, - wrapBorderColorVariableName, - tryModifyBorderColor - ); - if (_this.isVarType(varName, VAR_TYPE_BGIMG)) { - var property = wrapBgImgVariableName(varName); - var modifiedValue = sourceValue; - if (isVarDependant(sourceValue)) { - modifiedValue = replaceCSSVariablesNames( - sourceValue, - function (v) { - return wrapBgColorVariableName(v); - }, - function (fallback) { - return tryModifyBgColor(fallback, theme); - } - ); - } - var bgModifier = getBgImageModifier( - modifiedValue, - rule, - ignoredImgSelectors, - isCancelled - ); - modifiedValue = - typeof bgModifier === "function" - ? bgModifier(theme) - : bgModifier; - declarations.push({ - property: property, - value: modifiedValue - }); - } - return declarations; - }; - var callbacks = new Set(); - var addListener = function (onTypeChange) { - var callback = function () { - var decs = getDeclarations(); - onTypeChange(decs); - }; - callbacks.add(callback); - _this.subscribeForVarTypeChange(varName, callback); - }; - var removeListeners = function () { - callbacks.forEach(function (callback) { - _this.unsubscribeFromVariableTypeChanges( - varName, - callback - ); - }); - }; - return { - declarations: getDeclarations(), - onTypeChange: { - addListener: addListener, - removeListeners: removeListeners - } - }; - }; - }; - VariablesStore.prototype.getModifierForVarDependant = function ( - property, - sourceValue - ) { - var _this = this; - if (sourceValue.match(/^\s*(rgb|hsl)a?\(/)) { - var isBg_1 = property.startsWith("background"); - var isText_1 = isTextColorProperty(property); - return function (theme) { - var value = insertVarValues( - sourceValue, - _this.unstableVarValues - ); - if (!value) { - value = isBg_1 ? "#ffffff" : "#000000"; - } - var modifier = isBg_1 - ? tryModifyBgColor - : isText_1 - ? tryModifyTextColor - : tryModifyBorderColor; - return modifier(value, theme); - }; - } - if (property === "background-color") { - return function (theme) { - return replaceCSSVariablesNames( - sourceValue, - function (v) { - return wrapBgColorVariableName(v); - }, - function (fallback) { - return tryModifyBgColor(fallback, theme); - } - ); - }; - } - if (isTextColorProperty(property)) { - return function (theme) { - return replaceCSSVariablesNames( - sourceValue, - function (v) { - return wrapTextColorVariableName(v); - }, - function (fallback) { - return tryModifyTextColor(fallback, theme); - } - ); - }; - } - if ( - property === "background" || - property === "background-image" || - property === "box-shadow" - ) { - return function (theme) { - var unknownVars = new Set(); - var modify = function () { - var variableReplaced = replaceCSSVariablesNames( - sourceValue, - function (v) { - if (_this.isVarType(v, VAR_TYPE_BGCOLOR)) { - return wrapBgColorVariableName(v); - } - if (_this.isVarType(v, VAR_TYPE_BGIMG)) { - return wrapBgImgVariableName(v); - } - unknownVars.add(v); - return v; - }, - function (fallback) { - return tryModifyBgColor(fallback, theme); - } - ); - if (property === "box-shadow") { - var shadowModifier = - getShadowModifierWithInfo(variableReplaced); - var modifiedShadow = shadowModifier(theme); - if ( - modifiedShadow.unparseableMatchesLength !== - modifiedShadow.matchesLength - ) { - return modifiedShadow.result; - } - } - return variableReplaced; - }; - var modified = modify(); - if (unknownVars.size > 0) { - return new Promise(function (resolve) { - var firstUnknownVar = unknownVars - .values() - .next().value; - var callback = function () { - _this.unsubscribeFromVariableTypeChanges( - firstUnknownVar, - callback - ); - var newValue = modify(); - resolve(newValue); - }; - _this.subscribeForVarTypeChange( - firstUnknownVar, - callback - ); - }); - } - return modified; - }; - } - if ( - property.startsWith("border") || - property.startsWith("outline") - ) { - return function (theme) { - return replaceCSSVariablesNames( - sourceValue, - function (v) { - return wrapBorderColorVariableName(v); - }, - function (fallback) { - return tryModifyBorderColor(fallback, theme); - } - ); - }; - } - return null; - }; - VariablesStore.prototype.subscribeForVarTypeChange = function ( - varName, - callback - ) { - if (!this.typeChangeSubscriptions.has(varName)) { - this.typeChangeSubscriptions.set(varName, new Set()); - } - var rootStore = this.typeChangeSubscriptions.get(varName); - if (!rootStore.has(callback)) { - rootStore.add(callback); - } - }; - VariablesStore.prototype.unsubscribeFromVariableTypeChanges = function ( - varName, - callback - ) { - if (this.typeChangeSubscriptions.has(varName)) { - this.typeChangeSubscriptions.get(varName).delete(callback); - } - }; - VariablesStore.prototype.collectVariablesAndVarDep = function ( - ruleList - ) { - var _this = this; - ruleList.forEach(function (rules) { - iterateCSSRules(rules, function (rule) { - rule.style && - iterateCSSDeclarations( - rule.style, - function (property, value) { - if (isVariable(property)) { - _this.inspectVariable(property, value); - } - if (isVarDependant(value)) { - _this.inspectVarDependant(property, value); - } - } - ); - }); - }); - }; - VariablesStore.prototype.collectRootVariables = function () { - var _this = this; - iterateCSSDeclarations( - document.documentElement.style, - function (property, value) { - if (isVariable(property)) { - _this.inspectVariable(property, value); - } - } - ); - }; - VariablesStore.prototype.inspectVariable = function (varName, value) { - this.unstableVarValues.set(varName, value); - if (isVarDependant(value) && isConstructedColorVar(value)) { - this.unknownColorVars.add(varName); - this.definedVars.add(varName); - } - if (this.definedVars.has(varName)) { - return; - } - this.definedVars.add(varName); - var color = parseColorWithCache(value); - if (color) { - this.unknownColorVars.add(varName); - } else if ( - value.includes("url(") || - value.includes("linear-gradient(") || - value.includes("radial-gradient(") - ) { - this.resolveVariableType(varName, VAR_TYPE_BGIMG); - } - }; - VariablesStore.prototype.resolveVariableType = function ( - varName, - typeNum - ) { - var initialType = this.initialVarTypes.get(varName) || 0; - var currentType = this.varTypes.get(varName) || 0; - var newType = currentType | typeNum; - this.varTypes.set(varName, newType); - if (newType !== initialType || this.undefinedVars.has(varName)) { - this.changedTypeVars.add(varName); - this.undefinedVars.delete(varName); - } - this.unknownColorVars.delete(varName); - this.unknownBgVars.delete(varName); - }; - VariablesStore.prototype.collectRootVarDependants = function () { - var _this = this; - iterateCSSDeclarations( - document.documentElement.style, - function (property, value) { - if (isVarDependant(value)) { - _this.inspectVarDependant(property, value); - } - } - ); - }; - VariablesStore.prototype.inspectVarDependant = function ( - property, - value - ) { - var _this = this; - if (isVariable(property)) { - this.iterateVarDeps(value, function (ref) { - if (!_this.varRefs.has(property)) { - _this.varRefs.set(property, new Set()); - } - _this.varRefs.get(property).add(ref); - }); - } else if ( - property === "background-color" || - property === "box-shadow" - ) { - this.iterateVarDeps(value, function (v) { - return _this.resolveVariableType(v, VAR_TYPE_BGCOLOR); - }); - } else if (isTextColorProperty(property)) { - this.iterateVarDeps(value, function (v) { - return _this.resolveVariableType(v, VAR_TYPE_TEXTCOLOR); - }); - } else if ( - property.startsWith("border") || - property.startsWith("outline") - ) { - this.iterateVarDeps(value, function (v) { - return _this.resolveVariableType(v, VAR_TYPE_BORDERCOLOR); - }); - } else if ( - property === "background" || - property === "background-image" - ) { - this.iterateVarDeps(value, function (v) { - if (_this.isVarType(v, VAR_TYPE_BGCOLOR | VAR_TYPE_BGIMG)) { - return; - } - var isBgColor = - _this.findVarRef(v, function (ref) { - return ( - _this.unknownColorVars.has(ref) || - _this.isVarType( - ref, - VAR_TYPE_TEXTCOLOR | VAR_TYPE_BORDERCOLOR - ) - ); - }) != null; - _this.itarateVarRefs(v, function (ref) { - if (isBgColor) { - _this.resolveVariableType(ref, VAR_TYPE_BGCOLOR); - } else { - _this.unknownBgVars.add(ref); - } - }); - }); - } - }; - VariablesStore.prototype.iterateVarDeps = function (value, iterator) { - var varDeps = new Set(); - iterateVarDependencies(value, function (v) { - return varDeps.add(v); - }); - varDeps.forEach(function (v) { - return iterator(v); - }); - }; - VariablesStore.prototype.findVarRef = function ( - varName, - iterator, - stack - ) { - var e_1, _a; - if (stack === void 0) { - stack = new Set(); - } - if (stack.has(varName)) { - return null; - } - stack.add(varName); - var result = iterator(varName); - if (result) { - return varName; - } - var refs = this.varRefs.get(varName); - if (!refs || refs.size === 0) { - return null; - } - try { - for ( - var refs_1 = __values(refs), refs_1_1 = refs_1.next(); - !refs_1_1.done; - refs_1_1 = refs_1.next() - ) { - var ref = refs_1_1.value; - var found = this.findVarRef(ref, iterator, stack); - if (found) { - return found; - } - } - } catch (e_1_1) { - e_1 = {error: e_1_1}; - } finally { - try { - if (refs_1_1 && !refs_1_1.done && (_a = refs_1.return)) - _a.call(refs_1); - } finally { - if (e_1) throw e_1.error; - } - } - return null; - }; - VariablesStore.prototype.itarateVarRefs = function (varName, iterator) { - this.findVarRef(varName, function (ref) { - iterator(ref); - return false; - }); - }; - VariablesStore.prototype.setOnRootVariableChange = function (callback) { - this.onRootVariableDefined = callback; - }; - VariablesStore.prototype.putRootVars = function (styleElement, theme) { - var e_2, _a; - var _this = this; - var sheet = styleElement.sheet; - if (sheet.cssRules.length > 0) { - sheet.deleteRule(0); - } - var declarations = new Map(); - iterateCSSDeclarations( - document.documentElement.style, - function (property, value) { - if (isVariable(property)) { - if (_this.isVarType(property, VAR_TYPE_BGCOLOR)) { - declarations.set( - wrapBgColorVariableName(property), - tryModifyBgColor(value, theme) - ); - } - if (_this.isVarType(property, VAR_TYPE_TEXTCOLOR)) { - declarations.set( - wrapTextColorVariableName(property), - tryModifyTextColor(value, theme) - ); - } - if (_this.isVarType(property, VAR_TYPE_BORDERCOLOR)) { - declarations.set( - wrapBorderColorVariableName(property), - tryModifyBorderColor(value, theme) - ); - } - _this.subscribeForVarTypeChange( - property, - _this.onRootVariableDefined - ); - } - } - ); - var cssLines = []; - cssLines.push(":root {"); - try { - for ( - var declarations_1 = __values(declarations), - declarations_1_1 = declarations_1.next(); - !declarations_1_1.done; - declarations_1_1 = declarations_1.next() - ) { - var _b = __read(declarations_1_1.value, 2), - property = _b[0], - value = _b[1]; - cssLines.push( - " ".concat(property, ": ").concat(value, ";") - ); - } - } catch (e_2_1) { - e_2 = {error: e_2_1}; - } finally { - try { - if ( - declarations_1_1 && - !declarations_1_1.done && - (_a = declarations_1.return) - ) - _a.call(declarations_1); - } finally { - if (e_2) throw e_2.error; - } - } - cssLines.push("}"); - var cssText = cssLines.join("\n"); - sheet.insertRule(cssText); - }; - return VariablesStore; - })(); - var variablesStore = new VariablesStore(); - function getVariableRange(input, searchStart) { - if (searchStart === void 0) { - searchStart = 0; - } - var start = input.indexOf("var(", searchStart); - if (start >= 0) { - var range = getParenthesesRange(input, start + 3); - if (range) { - return {start: start, end: range.end}; - } - return null; - } - } - function getVariablesMatches(input) { - var ranges = []; - var i = 0; - var range; - while ((range = getVariableRange(input, i))) { - var start = range.start, - end = range.end; - ranges.push({ - start: start, - end: end, - value: input.substring(start, end) - }); - i = range.end + 1; - } - return ranges; - } - function replaceVariablesMatches(input, replacer) { - var matches = getVariablesMatches(input); - var matchesCount = matches.length; - if (matchesCount === 0) { - return input; - } - var inputLength = input.length; - var replacements = matches.map(function (m) { - return replacer(m.value); - }); - var parts = []; - parts.push(input.substring(0, matches[0].start)); - for (var i = 0; i < matchesCount; i++) { - parts.push(replacements[i]); - var start = matches[i].end; - var end = i < matchesCount - 1 ? matches[i + 1].start : inputLength; - parts.push(input.substring(start, end)); - } - return parts.join(""); - } - function getVariableNameAndFallback(match) { - var commaIndex = match.indexOf(","); - var name; - var fallback; - if (commaIndex >= 0) { - name = match.substring(4, commaIndex).trim(); - fallback = match.substring(commaIndex + 1, match.length - 1).trim(); - } else { - name = match.substring(4, match.length - 1).trim(); - fallback = ""; - } - return {name: name, fallback: fallback}; - } - function replaceCSSVariablesNames(value, nameReplacer, fallbackReplacer) { - var matchReplacer = function (match) { - var _a = getVariableNameAndFallback(match), - name = _a.name, - fallback = _a.fallback; - var newName = nameReplacer(name); - if (!fallback) { - return "var(".concat(newName, ")"); - } - var newFallback; - if (isVarDependant(fallback)) { - newFallback = replaceCSSVariablesNames( - fallback, - nameReplacer, - fallbackReplacer - ); - } else if (fallbackReplacer) { - newFallback = fallbackReplacer(fallback); - } else { - newFallback = fallback; - } - return "var(".concat(newName, ", ").concat(newFallback, ")"); - }; - return replaceVariablesMatches(value, matchReplacer); - } - function iterateVarDependencies(value, iterator) { - replaceCSSVariablesNames(value, function (varName) { - iterator(varName); - return varName; - }); - } - function wrapBgColorVariableName(name) { - return "--darkreader-bg".concat(name); - } - function wrapTextColorVariableName(name) { - return "--darkreader-text".concat(name); - } - function wrapBorderColorVariableName(name) { - return "--darkreader-border".concat(name); - } - function wrapBgImgVariableName(name) { - return "--darkreader-bgimg".concat(name); - } - function isVariable(property) { - return property.startsWith("--"); - } - function isVarDependant(value) { - return value.includes("var("); - } - function isConstructedColorVar(value) { - return value.match(/^\s*(rgb|hsl)a?\(/); - } - function isTextColorProperty(property) { - return ( - property === "color" || - property === "caret-color" || - property === "-webkit-text-fill-color" - ); - } - var rawValueRegex = /^\d{1,3}, ?\d{1,3}, ?\d{1,3}$/; - function parseRawValue(color) { - if (rawValueRegex.test(color)) { - var splitted = color.split(","); - var resultInRGB_1 = "rgb("; - splitted.forEach(function (number) { - resultInRGB_1 += "".concat(number.trim(), ", "); - }); - resultInRGB_1 = resultInRGB_1.substring( - 0, - resultInRGB_1.length - 2 - ); - resultInRGB_1 += ")"; - return {isRaw: true, color: resultInRGB_1}; - } - return {isRaw: false, color: color}; - } - function handleRawValue(color, theme, modifyFunction) { - var _a = parseRawValue(color), - isRaw = _a.isRaw, - newColor = _a.color; - var rgb = parseColorWithCache(newColor); - if (rgb) { - var outputColor = modifyFunction(rgb, theme); - if (isRaw) { - var outputInRGB = parseColorWithCache(outputColor); - return outputInRGB - ? "" - .concat(outputInRGB.r, ", ") - .concat(outputInRGB.g, ", ") - .concat(outputInRGB.b) - : outputColor; - } - return outputColor; - } - return newColor; - } - function tryModifyBgColor(color, theme) { - return handleRawValue(color, theme, modifyBackgroundColor); - } - function tryModifyTextColor(color, theme) { - return handleRawValue(color, theme, modifyForegroundColor); - } - function tryModifyBorderColor(color, theme) { - return handleRawValue(color, theme, modifyBorderColor); - } - function insertVarValues(source, varValues, stack) { - if (stack === void 0) { - stack = new Set(); - } - var containsUnresolvedVar = false; - var matchReplacer = function (match) { - var _a = getVariableNameAndFallback(match), - name = _a.name, - fallback = _a.fallback; - if (stack.has(name)) { - containsUnresolvedVar = true; - return null; - } - stack.add(name); - var varValue = varValues.get(name) || fallback; - var inserted = null; - if (varValue) { - if (isVarDependant(varValue)) { - inserted = insertVarValues(varValue, varValues, stack); - } else { - inserted = varValue; - } - } - if (!inserted) { - containsUnresolvedVar = true; - return null; - } - return inserted; - }; - var replaced = replaceVariablesMatches(source, matchReplacer); - if (containsUnresolvedVar) { - return null; - } - return replaced; - } - - var overrides = { - "background-color": { - customProp: "--darkreader-inline-bgcolor", - cssProp: "background-color", - dataAttr: "data-darkreader-inline-bgcolor" - }, - "background-image": { - customProp: "--darkreader-inline-bgimage", - cssProp: "background-image", - dataAttr: "data-darkreader-inline-bgimage" - }, - "border-color": { - customProp: "--darkreader-inline-border", - cssProp: "border-color", - dataAttr: "data-darkreader-inline-border" - }, - "border-bottom-color": { - customProp: "--darkreader-inline-border-bottom", - cssProp: "border-bottom-color", - dataAttr: "data-darkreader-inline-border-bottom" - }, - "border-left-color": { - customProp: "--darkreader-inline-border-left", - cssProp: "border-left-color", - dataAttr: "data-darkreader-inline-border-left" - }, - "border-right-color": { - customProp: "--darkreader-inline-border-right", - cssProp: "border-right-color", - dataAttr: "data-darkreader-inline-border-right" - }, - "border-top-color": { - customProp: "--darkreader-inline-border-top", - cssProp: "border-top-color", - dataAttr: "data-darkreader-inline-border-top" - }, - "box-shadow": { - customProp: "--darkreader-inline-boxshadow", - cssProp: "box-shadow", - dataAttr: "data-darkreader-inline-boxshadow" - }, - "color": { - customProp: "--darkreader-inline-color", - cssProp: "color", - dataAttr: "data-darkreader-inline-color" - }, - "fill": { - customProp: "--darkreader-inline-fill", - cssProp: "fill", - dataAttr: "data-darkreader-inline-fill" - }, - "stroke": { - customProp: "--darkreader-inline-stroke", - cssProp: "stroke", - dataAttr: "data-darkreader-inline-stroke" - }, - "outline-color": { - customProp: "--darkreader-inline-outline", - cssProp: "outline-color", - dataAttr: "data-darkreader-inline-outline" - }, - "stop-color": { - customProp: "--darkreader-inline-stopcolor", - cssProp: "stop-color", - dataAttr: "data-darkreader-inline-stopcolor" - } - }; - var overridesList = Object.values(overrides); - var normalizedPropList = {}; - overridesList.forEach(function (_a) { - var cssProp = _a.cssProp, - customProp = _a.customProp; - return (normalizedPropList[customProp] = cssProp); - }); - var INLINE_STYLE_ATTRS = [ - "style", - "fill", - "stop-color", - "stroke", - "bgcolor", - "color" - ]; - var INLINE_STYLE_SELECTOR = INLINE_STYLE_ATTRS.map(function (attr) { - return "[".concat(attr, "]"); - }).join(", "); - function getInlineOverrideStyle() { - return overridesList - .map(function (_a) { - var dataAttr = _a.dataAttr, - customProp = _a.customProp, - cssProp = _a.cssProp; - return [ - "[".concat(dataAttr, "] {"), - " " - .concat(cssProp, ": var(") - .concat(customProp, ") !important;"), - "}" - ].join("\n"); - }) - .join("\n"); - } - function getInlineStyleElements(root) { - var results = []; - if (root instanceof Element && root.matches(INLINE_STYLE_SELECTOR)) { - results.push(root); - } - if ( - root instanceof Element || - (isShadowDomSupported && root instanceof ShadowRoot) || - root instanceof Document - ) { - push(results, root.querySelectorAll(INLINE_STYLE_SELECTOR)); - } - return results; - } - var treeObservers = new Map(); - var attrObservers = new Map(); - function watchForInlineStyles(elementStyleDidChange, shadowRootDiscovered) { - deepWatchForInlineStyles( - document, - elementStyleDidChange, - shadowRootDiscovered - ); - iterateShadowHosts(document.documentElement, function (host) { - deepWatchForInlineStyles( - host.shadowRoot, - elementStyleDidChange, - shadowRootDiscovered - ); - }); - } - function deepWatchForInlineStyles( - root, - elementStyleDidChange, - shadowRootDiscovered - ) { - if (treeObservers.has(root)) { - treeObservers.get(root).disconnect(); - attrObservers.get(root).disconnect(); - } - var discoveredNodes = new WeakSet(); - function discoverNodes(node) { - getInlineStyleElements(node).forEach(function (el) { - if (discoveredNodes.has(el)) { - return; - } - discoveredNodes.add(el); - elementStyleDidChange(el); - }); - iterateShadowHosts(node, function (n) { - if (discoveredNodes.has(node)) { - return; - } - discoveredNodes.add(node); - shadowRootDiscovered(n.shadowRoot); - deepWatchForInlineStyles( - n.shadowRoot, - elementStyleDidChange, - shadowRootDiscovered - ); - }); - } - var treeObserver = createOptimizedTreeObserver(root, { - onMinorMutations: function (_a) { - var additions = _a.additions; - additions.forEach(function (added) { - return discoverNodes(added); - }); - }, - onHugeMutations: function () { - discoverNodes(root); - } - }); - treeObservers.set(root, treeObserver); - var attemptCount = 0; - var start = null; - var ATTEMPTS_INTERVAL = getDuration({seconds: 10}); - var RETRY_TIMEOUT = getDuration({seconds: 2}); - var MAX_ATTEMPTS_COUNT = 50; - var cache = []; - var timeoutId = null; - var handleAttributeMutations = throttle(function (mutations) { - mutations.forEach(function (m) { - if (INLINE_STYLE_ATTRS.includes(m.attributeName)) { - elementStyleDidChange(m.target); - } - }); - }); - var attrObserver = new MutationObserver(function (mutations) { - if (timeoutId) { - cache.push.apply( - cache, - __spreadArray([], __read(mutations), false) - ); - return; - } - attemptCount++; - var now = Date.now(); - if (start == null) { - start = now; - } else if (attemptCount >= MAX_ATTEMPTS_COUNT) { - if (now - start < ATTEMPTS_INTERVAL) { - timeoutId = setTimeout(function () { - start = null; - attemptCount = 0; - timeoutId = null; - var attributeCache = cache; - cache = []; - handleAttributeMutations(attributeCache); - }, RETRY_TIMEOUT); - cache.push.apply( - cache, - __spreadArray([], __read(mutations), false) - ); - return; - } - start = now; - attemptCount = 1; - } - handleAttributeMutations(mutations); - }); - attrObserver.observe(root, { - attributes: true, - attributeFilter: INLINE_STYLE_ATTRS.concat( - overridesList.map(function (_a) { - var dataAttr = _a.dataAttr; - return dataAttr; - }) - ), - subtree: true - }); - attrObservers.set(root, attrObserver); - } - function stopWatchingForInlineStyles() { - treeObservers.forEach(function (o) { - return o.disconnect(); - }); - attrObservers.forEach(function (o) { - return o.disconnect(); - }); - treeObservers.clear(); - attrObservers.clear(); - } - var inlineStyleCache = new WeakMap(); - var filterProps = ["brightness", "contrast", "grayscale", "sepia", "mode"]; - function getInlineStyleCacheKey(el, theme) { - return INLINE_STYLE_ATTRS.map(function (attr) { - return "".concat(attr, '="').concat(el.getAttribute(attr), '"'); - }) - .concat( - filterProps.map(function (prop) { - return "".concat(prop, '="').concat(theme[prop], '"'); - }) - ) - .join(" "); - } - function shouldIgnoreInlineStyle(element, selectors) { - for (var i = 0, len = selectors.length; i < len; i++) { - var ingnoredSelector = selectors[i]; - if (element.matches(ingnoredSelector)) { - return true; - } - } - return false; - } - function overrideInlineStyle( - element, - theme, - ignoreInlineSelectors, - ignoreImageSelectors - ) { - var cacheKey = getInlineStyleCacheKey(element, theme); - if (cacheKey === inlineStyleCache.get(element)) { - return; - } - var unsetProps = new Set(Object.keys(overrides)); - function setCustomProp(targetCSSProp, modifierCSSProp, cssVal) { - var isPropertyVariable = targetCSSProp.startsWith("--"); - var _a = isPropertyVariable ? {} : overrides[targetCSSProp], - customProp = _a.customProp, - dataAttr = _a.dataAttr; - var mod = getModifiableCSSDeclaration( - modifierCSSProp, - cssVal, - {style: element.style}, - variablesStore, - ignoreImageSelectors, - null - ); - if (!mod) { - return; - } - var value = mod.value; - if (typeof value === "function") { - value = value(theme); - } - if (isPropertyVariable && typeof value === "object") { - var typedValue = value; - typedValue.declarations.forEach(function (_a) { - var property = _a.property, - value = _a.value; - !(value instanceof Promise) && - element.style.setProperty(property, value); - }); - } else { - element.style.setProperty(customProp, value); - if (!element.hasAttribute(dataAttr)) { - element.setAttribute(dataAttr, ""); - } - unsetProps.delete(targetCSSProp); - } - } - if (ignoreInlineSelectors.length > 0) { - if (shouldIgnoreInlineStyle(element, ignoreInlineSelectors)) { - unsetProps.forEach(function (cssProp) { - element.removeAttribute(overrides[cssProp].dataAttr); - }); - return; - } - } - if (element.hasAttribute("bgcolor")) { - var value = element.getAttribute("bgcolor"); - if ( - value.match(/^[0-9a-f]{3}$/i) || - value.match(/^[0-9a-f]{6}$/i) - ) { - value = "#".concat(value); - } - setCustomProp("background-color", "background-color", value); - } - if (element.hasAttribute("color") && element.rel !== "mask-icon") { - var value = element.getAttribute("color"); - if ( - value.match(/^[0-9a-f]{3}$/i) || - value.match(/^[0-9a-f]{6}$/i) - ) { - value = "#".concat(value); - } - setCustomProp("color", "color", value); - } - if (element instanceof SVGElement) { - if (element.hasAttribute("fill")) { - var SMALL_SVG_LIMIT_1 = 32; - var value_1 = element.getAttribute("fill"); - if (value_1 !== "none") { - if (!(element instanceof SVGTextElement)) { - var handleSVGElement = function () { - var _a = element.getBoundingClientRect(), - width = _a.width, - height = _a.height; - var isBg = - width > SMALL_SVG_LIMIT_1 || - height > SMALL_SVG_LIMIT_1; - setCustomProp( - "fill", - isBg ? "background-color" : "color", - value_1 - ); - }; - if (isReadyStateComplete()) { - handleSVGElement(); - } else { - addReadyStateCompleteListener(handleSVGElement); - } - } else { - setCustomProp("fill", "color", value_1); - } - } - } - if (element.hasAttribute("stop-color")) { - setCustomProp( - "stop-color", - "background-color", - element.getAttribute("stop-color") - ); - } - } - if (element.hasAttribute("stroke")) { - var value = element.getAttribute("stroke"); - setCustomProp( - "stroke", - element instanceof SVGLineElement || - element instanceof SVGTextElement - ? "border-color" - : "color", - value - ); - } - element.style && - iterateCSSDeclarations(element.style, function (property, value) { - if (property === "background-image" && value.includes("url")) { - return; - } - if ( - overrides.hasOwnProperty(property) || - (property.startsWith("--") && !normalizedPropList[property]) - ) { - setCustomProp(property, property, value); - } else { - var overridenProp = normalizedPropList[property]; - if ( - overridenProp && - !element.style.getPropertyValue(overridenProp) && - !element.hasAttribute(overridenProp) - ) { - if ( - overridenProp === "background-color" && - element.hasAttribute("bgcolor") - ) { - return; - } - element.style.setProperty(property, ""); - } - } - }); - if ( - element.style && - element instanceof SVGTextElement && - element.style.fill - ) { - setCustomProp( - "fill", - "color", - element.style.getPropertyValue("fill") - ); - } - forEach(unsetProps, function (cssProp) { - element.removeAttribute(overrides[cssProp].dataAttr); - }); - inlineStyleCache.set(element, getInlineStyleCacheKey(element, theme)); - } - - var metaThemeColorName = "theme-color"; - var metaThemeColorSelector = 'meta[name="'.concat(metaThemeColorName, '"]'); - var srcMetaThemeColor = null; - var observer = null; - function changeMetaThemeColor(meta, theme) { - srcMetaThemeColor = srcMetaThemeColor || meta.content; - var color = parseColorWithCache(srcMetaThemeColor); - if (!color) { - return; - } - meta.content = modifyBackgroundColor(color, theme); - } - function changeMetaThemeColorWhenAvailable(theme) { - var meta = document.querySelector(metaThemeColorSelector); - if (meta) { - changeMetaThemeColor(meta, theme); - } else { - if (observer) { - observer.disconnect(); - } - observer = new MutationObserver(function (mutations) { - loop: for (var i = 0; i < mutations.length; i++) { - var addedNodes = mutations[i].addedNodes; - for (var j = 0; j < addedNodes.length; j++) { - var node = addedNodes[j]; - if ( - node instanceof HTMLMetaElement && - node.name === metaThemeColorName - ) { - observer.disconnect(); - observer = null; - changeMetaThemeColor(node, theme); - break loop; - } - } - } - }); - observer.observe(document.head, {childList: true}); - } - } - function restoreMetaThemeColor() { - if (observer) { - observer.disconnect(); - observer = null; - } - var meta = document.querySelector(metaThemeColorSelector); - if (meta && srcMetaThemeColor) { - meta.content = srcMetaThemeColor; - } - } - - var themeCacheKeys = [ - "mode", - "brightness", - "contrast", - "grayscale", - "sepia", - "darkSchemeBackgroundColor", - "darkSchemeTextColor", - "lightSchemeBackgroundColor", - "lightSchemeTextColor" - ]; - function getThemeKey(theme) { - var resultKey = ""; - themeCacheKeys.forEach(function (key) { - resultKey += "".concat(key, ":").concat(theme[key], ";"); - }); - return resultKey; - } - var asyncQueue = createAsyncTasksQueue(); - function createStyleSheetModifier() { - var renderId = 0; - var rulesTextCache = new Set(); - var rulesModCache = new Map(); - var varTypeChangeCleaners = new Set(); - var prevFilterKey = null; - var hasNonLoadedLink = false; - var wasRebuilt = false; - function shouldRebuildStyle() { - return hasNonLoadedLink && !wasRebuilt; - } - function modifySheet(options) { - var rules = options.sourceCSSRules; - var theme = options.theme, - ignoreImageAnalysis = options.ignoreImageAnalysis, - force = options.force, - prepareSheet = options.prepareSheet, - isAsyncCancelled = options.isAsyncCancelled; - var rulesChanged = rulesModCache.size === 0; - var notFoundCacheKeys = new Set(rulesModCache.keys()); - var themeKey = getThemeKey(theme); - var themeChanged = themeKey !== prevFilterKey; - if (hasNonLoadedLink) { - wasRebuilt = true; - } - var modRules = []; - iterateCSSRules( - rules, - function (rule) { - var cssText = rule.cssText; - var textDiffersFromPrev = false; - notFoundCacheKeys.delete(cssText); - if (rule.parentRule instanceof CSSMediaRule) { - cssText += ";".concat(rule.parentRule.media.mediaText); - } - if (!rulesTextCache.has(cssText)) { - rulesTextCache.add(cssText); - textDiffersFromPrev = true; - } - if (textDiffersFromPrev) { - rulesChanged = true; - } else { - modRules.push(rulesModCache.get(cssText)); - return; - } - var modDecs = []; - rule.style && - iterateCSSDeclarations( - rule.style, - function (property, value) { - var mod = getModifiableCSSDeclaration( - property, - value, - rule, - variablesStore, - ignoreImageAnalysis, - isAsyncCancelled - ); - if (mod) { - modDecs.push(mod); - } - } - ); - var modRule = null; - if (modDecs.length > 0) { - var parentRule = rule.parentRule; - modRule = { - selector: rule.selectorText, - declarations: modDecs, - parentRule: parentRule - }; - modRules.push(modRule); - } - rulesModCache.set(cssText, modRule); - }, - function () { - hasNonLoadedLink = true; - } - ); - notFoundCacheKeys.forEach(function (key) { - rulesTextCache.delete(key); - rulesModCache.delete(key); - }); - prevFilterKey = themeKey; - if (!force && !rulesChanged && !themeChanged) { - return; - } - renderId++; - function setRule(target, index, rule) { - var selector = rule.selector, - declarations = rule.declarations; - var getDeclarationText = function (dec) { - var property = dec.property, - value = dec.value, - important = dec.important, - sourceValue = dec.sourceValue; - return "" - .concat(property, ": ") - .concat(value == null ? sourceValue : value) - .concat(important ? " !important" : "", ";"); - }; - var cssRulesText = ""; - declarations.forEach(function (declarations) { - cssRulesText += "".concat( - getDeclarationText(declarations), - " " - ); - }); - var ruleText = "" - .concat(selector, " { ") - .concat(cssRulesText, " }"); - target.insertRule(ruleText, index); - } - var asyncDeclarations = new Map(); - var varDeclarations = new Map(); - var asyncDeclarationCounter = 0; - var varDeclarationCounter = 0; - var rootReadyGroup = {rule: null, rules: [], isGroup: true}; - var groupRefs = new WeakMap(); - function getGroup(rule) { - if (rule == null) { - return rootReadyGroup; - } - if (groupRefs.has(rule)) { - return groupRefs.get(rule); - } - var group = {rule: rule, rules: [], isGroup: true}; - groupRefs.set(rule, group); - var parentGroup = getGroup(rule.parentRule); - parentGroup.rules.push(group); - return group; - } - varTypeChangeCleaners.forEach(function (clear) { - return clear(); - }); - varTypeChangeCleaners.clear(); - modRules - .filter(function (r) { - return r; - }) - .forEach(function (_a) { - var selector = _a.selector, - declarations = _a.declarations, - parentRule = _a.parentRule; - var group = getGroup(parentRule); - var readyStyleRule = { - selector: selector, - declarations: [], - isGroup: false - }; - var readyDeclarations = readyStyleRule.declarations; - group.rules.push(readyStyleRule); - function handleAsyncDeclaration( - property, - modified, - important, - sourceValue - ) { - var asyncKey = ++asyncDeclarationCounter; - var asyncDeclaration = { - property: property, - value: null, - important: important, - asyncKey: asyncKey, - sourceValue: sourceValue - }; - readyDeclarations.push(asyncDeclaration); - var currentRenderId = renderId; - modified.then(function (asyncValue) { - if ( - !asyncValue || - isAsyncCancelled() || - currentRenderId !== renderId - ) { - return; - } - asyncDeclaration.value = asyncValue; - asyncQueue.add(function () { - if ( - isAsyncCancelled() || - currentRenderId !== renderId - ) { - return; - } - rebuildAsyncRule(asyncKey); - }); - }); - } - function handleVarDeclarations( - property, - modified, - important, - sourceValue - ) { - var _a = modified, - varDecs = _a.declarations, - onTypeChange = _a.onTypeChange; - var varKey = ++varDeclarationCounter; - var currentRenderId = renderId; - var initialIndex = readyDeclarations.length; - var oldDecs = []; - if (varDecs.length === 0) { - var tempDec = { - property: property, - value: sourceValue, - important: important, - sourceValue: sourceValue, - varKey: varKey - }; - readyDeclarations.push(tempDec); - oldDecs = [tempDec]; - } - varDecs.forEach(function (mod) { - if (mod.value instanceof Promise) { - handleAsyncDeclaration( - mod.property, - mod.value, - important, - sourceValue - ); - } else { - var readyDec = { - property: mod.property, - value: mod.value, - important: important, - sourceValue: sourceValue, - varKey: varKey - }; - readyDeclarations.push(readyDec); - oldDecs.push(readyDec); - } - }); - onTypeChange.addListener(function (newDecs) { - if ( - isAsyncCancelled() || - currentRenderId !== renderId - ) { - return; - } - var readyVarDecs = newDecs.map(function (mod) { - return { - property: mod.property, - value: mod.value, - important: important, - sourceValue: sourceValue, - varKey: varKey - }; - }); - var index = readyDeclarations.indexOf( - oldDecs[0], - initialIndex - ); - readyDeclarations.splice.apply( - readyDeclarations, - __spreadArray( - [index, oldDecs.length], - __read(readyVarDecs), - false - ) - ); - oldDecs = readyVarDecs; - rebuildVarRule(varKey); - }); - varTypeChangeCleaners.add(function () { - return onTypeChange.removeListeners(); - }); - } - declarations.forEach(function (_a) { - var property = _a.property, - value = _a.value, - important = _a.important, - sourceValue = _a.sourceValue; - if (typeof value === "function") { - var modified = value(theme); - if (modified instanceof Promise) { - handleAsyncDeclaration( - property, - modified, - important, - sourceValue - ); - } else if (property.startsWith("--")) { - handleVarDeclarations( - property, - modified, - important, - sourceValue - ); - } else { - readyDeclarations.push({ - property: property, - value: modified, - important: important, - sourceValue: sourceValue - }); - } - } else { - readyDeclarations.push({ - property: property, - value: value, - important: important, - sourceValue: sourceValue - }); - } - }); - }); - var sheet = prepareSheet(); - function buildStyleSheet() { - function createTarget(group, parent) { - var rule = group.rule; - if (rule instanceof CSSMediaRule) { - var media = rule.media; - var index = parent.cssRules.length; - parent.insertRule( - "@media ".concat(media.mediaText, " {}"), - index - ); - return parent.cssRules[index]; - } - return parent; - } - function iterateReadyRules(group, target, styleIterator) { - group.rules.forEach(function (r) { - if (r.isGroup) { - var t = createTarget(r, target); - iterateReadyRules(r, t, styleIterator); - } else { - styleIterator(r, target); - } - }); - } - iterateReadyRules( - rootReadyGroup, - sheet, - function (rule, target) { - var index = target.cssRules.length; - rule.declarations.forEach(function (_a) { - var asyncKey = _a.asyncKey, - varKey = _a.varKey; - if (asyncKey != null) { - asyncDeclarations.set(asyncKey, { - rule: rule, - target: target, - index: index - }); - } - if (varKey != null) { - varDeclarations.set(varKey, { - rule: rule, - target: target, - index: index - }); - } - }); - setRule(target, index, rule); - } - ); - } - function rebuildAsyncRule(key) { - var _a = asyncDeclarations.get(key), - rule = _a.rule, - target = _a.target, - index = _a.index; - target.deleteRule(index); - setRule(target, index, rule); - asyncDeclarations.delete(key); - } - function rebuildVarRule(key) { - var _a = varDeclarations.get(key), - rule = _a.rule, - target = _a.target, - index = _a.index; - target.deleteRule(index); - setRule(target, index, rule); - } - buildStyleSheet(); - } - return { - modifySheet: modifySheet, - shouldRebuildStyle: shouldRebuildStyle - }; - } - - var STYLE_SELECTOR = 'style, link[rel*="stylesheet" i]:not([disabled])'; - function isFontsGoogleApiStyle(element) { - if (!element.href) { - return false; - } - try { - var elementURL = new URL(element.href); - return elementURL.hostname === "fonts.googleapis.com"; - } catch (err) { - logInfo("Couldn't construct ".concat(element.href, " as URL")); - return false; - } - } - function shouldManageStyle(element) { - return ( - (element instanceof HTMLStyleElement || - element instanceof SVGStyleElement || - (element instanceof HTMLLinkElement && - element.rel && - element.rel.toLowerCase().includes("stylesheet") && - element.href && - !element.disabled && - (isFirefox - ? !element.href.startsWith("moz-extension://") - : true) && - !isFontsGoogleApiStyle(element))) && - !element.classList.contains("darkreader") && - element.media.toLowerCase() !== "print" && - !element.classList.contains("stylus") - ); - } - function getManageableStyles(node, results, deep) { - if (results === void 0) { - results = []; - } - if (deep === void 0) { - deep = true; - } - if (shouldManageStyle(node)) { - results.push(node); - } else if ( - node instanceof Element || - (isShadowDomSupported && node instanceof ShadowRoot) || - node === document - ) { - forEach(node.querySelectorAll(STYLE_SELECTOR), function (style) { - return getManageableStyles(style, results, false); - }); - if (deep) { - iterateShadowHosts(node, function (host) { - return getManageableStyles(host.shadowRoot, results, false); - }); - } - } - return results; - } - var syncStyleSet = new WeakSet(); - var corsStyleSet = new WeakSet(); - var canOptimizeUsingProxy$1 = false; - document.addEventListener( - "__darkreader__inlineScriptsAllowed", - function () { - canOptimizeUsingProxy$1 = true; - } - ); - var loadingLinkCounter = 0; - var rejectorsForLoadingLinks = new Map(); - function cleanLoadingLinks() { - rejectorsForLoadingLinks.clear(); - } - function manageStyle(element, _a) { - var update = _a.update, - loadingStart = _a.loadingStart, - loadingEnd = _a.loadingEnd; - var prevStyles = []; - var next = element; - while ( - (next = next.nextElementSibling) && - next.matches(".darkreader") - ) { - prevStyles.push(next); - } - var corsCopy = - prevStyles.find(function (el) { - return el.matches(".darkreader--cors") && !corsStyleSet.has(el); - }) || null; - var syncStyle = - prevStyles.find(function (el) { - return el.matches(".darkreader--sync") && !syncStyleSet.has(el); - }) || null; - var corsCopyPositionWatcher = null; - var syncStylePositionWatcher = null; - var cancelAsyncOperations = false; - var isOverrideEmpty = true; - var sheetModifier = createStyleSheetModifier(); - var observer = new MutationObserver(function () { - update(); - }); - var observerOptions = { - attributes: true, - childList: true, - subtree: true, - characterData: true - }; - function containsCSSImport() { - return ( - element instanceof HTMLStyleElement && - element.textContent.trim().match(cssImportRegex) - ); - } - function hasImports(cssRules, checkCrossOrigin) { - var result = false; - if (cssRules) { - var rule = void 0; - cssRulesLoop: for ( - var i = 0, len = cssRules.length; - i < len; - i++ - ) { - rule = cssRules[i]; - if (rule.href) { - if (checkCrossOrigin) { - if ( - rule.href.startsWith("http") && - !rule.href.startsWith(location.origin) - ) { - result = true; - break cssRulesLoop; - } - } else { - result = true; - break cssRulesLoop; - } - } - } - } - return result; - } - function getRulesSync() { - if (corsCopy) { - return corsCopy.sheet.cssRules; - } - if (containsCSSImport()) { - return null; - } - var cssRules = safeGetSheetRules(); - if ( - element instanceof HTMLLinkElement && - !isRelativeHrefOnAbsolutePath(element.href) && - hasImports(cssRules, false) - ) { - return null; - } - if (hasImports(cssRules, true)) { - return null; - } - return cssRules; - } - function insertStyle() { - if (corsCopy) { - if (element.nextSibling !== corsCopy) { - element.parentNode.insertBefore( - corsCopy, - element.nextSibling - ); - } - if (corsCopy.nextSibling !== syncStyle) { - element.parentNode.insertBefore( - syncStyle, - corsCopy.nextSibling - ); - } - } else if (element.nextSibling !== syncStyle) { - element.parentNode.insertBefore(syncStyle, element.nextSibling); - } - } - function createSyncStyle() { - syncStyle = - element instanceof SVGStyleElement - ? document.createElementNS( - "http://www.w3.org/2000/svg", - "style" - ) - : document.createElement("style"); - syncStyle.classList.add("darkreader"); - syncStyle.classList.add("darkreader--sync"); - syncStyle.media = "screen"; - if (element.title) { - syncStyle.title = element.title; - } - syncStyleSet.add(syncStyle); - } - var isLoadingRules = false; - var wasLoadingError = false; - var loadingLinkId = ++loadingLinkCounter; - function getRulesAsync() { - return __awaiter(this, void 0, void 0, function () { - var cssText, - cssBasePath, - _a, - cssRules, - accessError, - fullCSSText; - var _b; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - if (!(element instanceof HTMLLinkElement)) - return [3, 7]; - (_a = __read(getRulesOrError(), 2)), - (cssRules = _a[0]), - (accessError = _a[1]); - if ( - !( - (!cssRules && !accessError && !isSafari) || - (isSafari && !element.sheet) || - isStillLoadingError(accessError) - ) - ) - return [3, 5]; - _c.label = 1; - case 1: - _c.trys.push([1, 3, , 4]); - return [4, linkLoading(element, loadingLinkId)]; - case 2: - _c.sent(); - return [3, 4]; - case 3: - _c.sent(); - wasLoadingError = true; - return [3, 4]; - case 4: - if (cancelAsyncOperations) { - return [2, null]; - } - (_b = __read(getRulesOrError(), 2)), - (cssRules = _b[0]), - (accessError = _b[1]); - _c.label = 5; - case 5: - if (cssRules) { - if (!hasImports(cssRules, false)) { - return [2, cssRules]; - } - } - return [4, loadText(element.href)]; - case 6: - cssText = _c.sent(); - cssBasePath = getCSSBaseBath(element.href); - if (cancelAsyncOperations) { - return [2, null]; - } - return [3, 8]; - case 7: - if (containsCSSImport()) { - cssText = element.textContent.trim(); - cssBasePath = getCSSBaseBath(location.href); - } else { - return [2, null]; - } - _c.label = 8; - case 8: - if (!cssText) return [3, 13]; - _c.label = 9; - case 9: - _c.trys.push([9, 11, , 12]); - return [4, replaceCSSImports(cssText, cssBasePath)]; - case 10: - fullCSSText = _c.sent(); - corsCopy = createCORSCopy(element, fullCSSText); - return [3, 12]; - case 11: - _c.sent(); - return [3, 12]; - case 12: - if (corsCopy) { - corsCopyPositionWatcher = watchForNodePosition( - corsCopy, - "prev-sibling" - ); - return [2, corsCopy.sheet.cssRules]; - } - _c.label = 13; - case 13: - return [2, null]; - } - }); - }); - } - function details(options) { - var rules = getRulesSync(); - if (!rules) { - if (options.secondRound) { - return null; - } - if (isLoadingRules || wasLoadingError) { - return null; - } - isLoadingRules = true; - loadingStart(); - getRulesAsync() - .then(function (results) { - isLoadingRules = false; - loadingEnd(); - if (results) { - update(); - } - }) - .catch(function (err) { - isLoadingRules = false; - loadingEnd(); - }); - return null; - } - return {rules: rules}; - } - var forceRenderStyle = false; - function render(theme, ignoreImageAnalysis) { - var rules = getRulesSync(); - if (!rules) { - return; - } - cancelAsyncOperations = false; - function removeCSSRulesFromSheet(sheet) { - for (var i = sheet.cssRules.length - 1; i >= 0; i--) { - sheet.deleteRule(i); - } - } - function prepareOverridesSheet() { - if (!syncStyle) { - createSyncStyle(); - } - syncStylePositionWatcher && syncStylePositionWatcher.stop(); - insertStyle(); - if (syncStyle.sheet == null) { - syncStyle.textContent = ""; - } - var sheet = syncStyle.sheet; - removeCSSRulesFromSheet(sheet); - if (syncStylePositionWatcher) { - syncStylePositionWatcher.run(); - } else { - syncStylePositionWatcher = watchForNodePosition( - syncStyle, - "prev-sibling", - function () { - forceRenderStyle = true; - buildOverrides(); - } - ); - } - return syncStyle.sheet; - } - function buildOverrides() { - var force = forceRenderStyle; - forceRenderStyle = false; - sheetModifier.modifySheet({ - prepareSheet: prepareOverridesSheet, - sourceCSSRules: rules, - theme: theme, - ignoreImageAnalysis: ignoreImageAnalysis, - force: force, - isAsyncCancelled: function () { - return cancelAsyncOperations; - } - }); - isOverrideEmpty = syncStyle.sheet.cssRules.length === 0; - if (sheetModifier.shouldRebuildStyle()) { - addReadyStateCompleteListener(function () { - return update(); - }); - } - } - buildOverrides(); - } - function getRulesOrError() { - try { - if (element.sheet == null) { - return [null, null]; - } - return [element.sheet.cssRules, null]; - } catch (err) { - return [null, err]; - } - } - function isStillLoadingError(error) { - return error && error.message && error.message.includes("loading"); - } - function safeGetSheetRules() { - var _a = __read(getRulesOrError(), 2), - cssRules = _a[0], - err = _a[1]; - if (err) { - return null; - } - return cssRules; - } - function watchForSheetChanges() { - watchForSheetChangesUsingProxy(); - if (!(canOptimizeUsingProxy$1 && element.sheet)) { - watchForSheetChangesUsingRAF(); - } - } - var rulesChangeKey = null; - var rulesCheckFrameId = null; - function getRulesChangeKey() { - var rules = safeGetSheetRules(); - return rules ? rules.length : null; - } - function didRulesKeyChange() { - return getRulesChangeKey() !== rulesChangeKey; - } - function watchForSheetChangesUsingRAF() { - rulesChangeKey = getRulesChangeKey(); - stopWatchingForSheetChangesUsingRAF(); - var checkForUpdate = function () { - if (didRulesKeyChange()) { - rulesChangeKey = getRulesChangeKey(); - update(); - } - if (canOptimizeUsingProxy$1 && element.sheet) { - stopWatchingForSheetChangesUsingRAF(); - return; - } - rulesCheckFrameId = requestAnimationFrame(checkForUpdate); - }; - checkForUpdate(); - } - function stopWatchingForSheetChangesUsingRAF() { - cancelAnimationFrame(rulesCheckFrameId); - } - var areSheetChangesPending = false; - function onSheetChange() { - canOptimizeUsingProxy$1 = true; - stopWatchingForSheetChangesUsingRAF(); - if (areSheetChangesPending) { - return; - } - function handleSheetChanges() { - areSheetChangesPending = false; - if (cancelAsyncOperations) { - return; - } - update(); - } - areSheetChangesPending = true; - if (typeof queueMicrotask === "function") { - queueMicrotask(handleSheetChanges); - } else { - requestAnimationFrame(handleSheetChanges); - } - } - function watchForSheetChangesUsingProxy() { - element.addEventListener( - "__darkreader__updateSheet", - onSheetChange - ); - } - function stopWatchingForSheetChangesUsingProxy() { - element.removeEventListener( - "__darkreader__updateSheet", - onSheetChange - ); - } - function stopWatchingForSheetChanges() { - stopWatchingForSheetChangesUsingProxy(); - stopWatchingForSheetChangesUsingRAF(); - } - function pause() { - observer.disconnect(); - cancelAsyncOperations = true; - corsCopyPositionWatcher && corsCopyPositionWatcher.stop(); - syncStylePositionWatcher && syncStylePositionWatcher.stop(); - stopWatchingForSheetChanges(); - } - function destroy() { - pause(); - removeNode(corsCopy); - removeNode(syncStyle); - loadingEnd(); - if (rejectorsForLoadingLinks.has(loadingLinkId)) { - var reject = rejectorsForLoadingLinks.get(loadingLinkId); - rejectorsForLoadingLinks.delete(loadingLinkId); - reject && reject(); - } - } - function watch() { - observer.observe(element, observerOptions); - if (element instanceof HTMLStyleElement) { - watchForSheetChanges(); - } - } - var maxMoveCount = 10; - var moveCount = 0; - function restore() { - if (!syncStyle) { - return; - } - moveCount++; - if (moveCount > maxMoveCount) { - return; - } - insertStyle(); - corsCopyPositionWatcher && corsCopyPositionWatcher.skip(); - syncStylePositionWatcher && syncStylePositionWatcher.skip(); - if (!isOverrideEmpty) { - forceRenderStyle = true; - update(); - } - } - return { - details: details, - render: render, - pause: pause, - destroy: destroy, - watch: watch, - restore: restore - }; - } - function linkLoading(link, loadingId) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - return [ - 2, - new Promise(function (resolve, reject) { - var cleanUp = function () { - link.removeEventListener("load", onLoad); - link.removeEventListener("error", onError); - rejectorsForLoadingLinks.delete(loadingId); - }; - var onLoad = function () { - cleanUp(); - resolve(); - }; - var onError = function () { - cleanUp(); - reject( - "Linkelement " - .concat(loadingId, " couldn't be loaded. ") - .concat(link.href) - ); - }; - rejectorsForLoadingLinks.set(loadingId, function () { - cleanUp(); - reject(); - }); - link.addEventListener("load", onLoad); - link.addEventListener("error", onError); - if (!link.href) { - onError(); - } - }) - ]; - }); - }); - } - function getCSSImportURL(importDeclaration) { - return getCSSURLValue( - importDeclaration - .substring(7) - .trim() - .replace(/;$/, "") - .replace(/screen$/, "") - ); - } - function loadText(url) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (!url.startsWith("data:")) return [3, 3]; - return [4, fetch(url)]; - case 1: - return [4, _a.sent().text()]; - case 2: - return [2, _a.sent()]; - case 3: - return [ - 4, - bgFetch({ - url: url, - responseType: "text", - mimeType: "text/css", - origin: window.location.origin - }) - ]; - case 4: - return [2, _a.sent()]; - } - }); - }); - } - function replaceCSSImports(cssText, basePath, cache) { - if (cache === void 0) { - cache = new Map(); - } - return __awaiter(this, void 0, void 0, function () { - var importMatches, - importMatches_1, - importMatches_1_1, - match, - importURL, - absoluteURL, - importedCSS, - e_1_1; - var e_1, _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - cssText = removeCSSComments(cssText); - cssText = replaceCSSFontFace(cssText); - cssText = replaceCSSRelativeURLsWithAbsolute( - cssText, - basePath - ); - importMatches = getMatches(cssImportRegex, cssText); - _b.label = 1; - case 1: - _b.trys.push([1, 10, 11, 12]); - (importMatches_1 = __values(importMatches)), - (importMatches_1_1 = importMatches_1.next()); - _b.label = 2; - case 2: - if (!!importMatches_1_1.done) return [3, 9]; - match = importMatches_1_1.value; - importURL = getCSSImportURL(match); - absoluteURL = getAbsoluteURL(basePath, importURL); - importedCSS = void 0; - if (!cache.has(absoluteURL)) return [3, 3]; - importedCSS = cache.get(absoluteURL); - return [3, 7]; - case 3: - _b.trys.push([3, 6, , 7]); - return [4, loadText(absoluteURL)]; - case 4: - importedCSS = _b.sent(); - cache.set(absoluteURL, importedCSS); - return [ - 4, - replaceCSSImports( - importedCSS, - getCSSBaseBath(absoluteURL), - cache - ) - ]; - case 5: - importedCSS = _b.sent(); - return [3, 7]; - case 6: - _b.sent(); - importedCSS = ""; - return [3, 7]; - case 7: - cssText = cssText.split(match).join(importedCSS); - _b.label = 8; - case 8: - importMatches_1_1 = importMatches_1.next(); - return [3, 2]; - case 9: - return [3, 12]; - case 10: - e_1_1 = _b.sent(); - e_1 = {error: e_1_1}; - return [3, 12]; - case 11: - try { - if ( - importMatches_1_1 && - !importMatches_1_1.done && - (_a = importMatches_1.return) - ) - _a.call(importMatches_1); - } finally { - if (e_1) throw e_1.error; - } - return [7]; - case 12: - cssText = cssText.trim(); - return [2, cssText]; - } - }); - }); - } - function createCORSCopy(srcElement, cssText) { - if (!cssText) { - return null; - } - var cors = document.createElement("style"); - cors.classList.add("darkreader"); - cors.classList.add("darkreader--cors"); - cors.media = "screen"; - cors.textContent = cssText; - srcElement.parentNode.insertBefore(cors, srcElement.nextSibling); - cors.sheet.disabled = true; - corsStyleSet.add(cors); - return cors; - } - - var observers = []; - var observedRoots; - var undefinedGroups = new Map(); - var elementsDefinitionCallback; - function collectUndefinedElements(root) { - if (!isDefinedSelectorSupported) { - return; - } - forEach(root.querySelectorAll(":not(:defined)"), function (el) { - var tag = el.tagName.toLowerCase(); - if (!tag.includes("-")) { - var extendedTag = el.getAttribute("is"); - if (extendedTag) { - tag = extendedTag; - } else { - return; - } - } - if (!undefinedGroups.has(tag)) { - undefinedGroups.set(tag, new Set()); - customElementsWhenDefined(tag).then(function () { - if (elementsDefinitionCallback) { - var elements = undefinedGroups.get(tag); - undefinedGroups.delete(tag); - elementsDefinitionCallback(Array.from(elements)); - } - }); - } - undefinedGroups.get(tag).add(el); - }); - } - var canOptimizeUsingProxy = false; - document.addEventListener( - "__darkreader__inlineScriptsAllowed", - function () { - canOptimizeUsingProxy = true; - } - ); - var resolvers = new Map(); - function handleIsDefined(e) { - canOptimizeUsingProxy = true; - if (resolvers.has(e.detail.tag)) { - var resolve = resolvers.get(e.detail.tag); - resolve(); - } - } - function customElementsWhenDefined(tag) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - return [ - 2, - new Promise(function (resolve) { - if ( - window.customElements && - typeof customElements.whenDefined === "function" - ) { - customElements.whenDefined(tag).then(function () { - return resolve(); - }); - } else if (canOptimizeUsingProxy) { - resolvers.set(tag, resolve); - document.dispatchEvent( - new CustomEvent( - "__darkreader__addUndefinedResolver", - {detail: {tag: tag}} - ) - ); - } else { - var checkIfDefined_1 = function () { - var elements = undefinedGroups.get(tag); - if (elements && elements.size > 0) { - if ( - elements - .values() - .next() - .value.matches(":defined") - ) { - resolve(); - } else { - requestAnimationFrame(checkIfDefined_1); - } - } - }; - requestAnimationFrame(checkIfDefined_1); - } - }) - ]; - }); - }); - } - function watchWhenCustomElementsDefined(callback) { - elementsDefinitionCallback = callback; - } - function unsubscribeFromDefineCustomElements() { - elementsDefinitionCallback = null; - undefinedGroups.clear(); - document.removeEventListener( - "__darkreader__isDefined", - handleIsDefined - ); - } - function watchForStyleChanges(currentStyles, update, shadowRootDiscovered) { - stopWatchingForStyleChanges(); - var prevStyles = new Set(currentStyles); - var prevStyleSiblings = new WeakMap(); - var nextStyleSiblings = new WeakMap(); - function saveStylePosition(style) { - prevStyleSiblings.set(style, style.previousElementSibling); - nextStyleSiblings.set(style, style.nextElementSibling); - } - function forgetStylePosition(style) { - prevStyleSiblings.delete(style); - nextStyleSiblings.delete(style); - } - function didStylePositionChange(style) { - return ( - style.previousElementSibling !== prevStyleSiblings.get(style) || - style.nextElementSibling !== nextStyleSiblings.get(style) - ); - } - currentStyles.forEach(saveStylePosition); - function handleStyleOperations(operations) { - var createdStyles = operations.createdStyles, - removedStyles = operations.removedStyles, - movedStyles = operations.movedStyles; - createdStyles.forEach(function (s) { - return saveStylePosition(s); - }); - movedStyles.forEach(function (s) { - return saveStylePosition(s); - }); - removedStyles.forEach(function (s) { - return forgetStylePosition(s); - }); - createdStyles.forEach(function (s) { - return prevStyles.add(s); - }); - removedStyles.forEach(function (s) { - return prevStyles.delete(s); - }); - if ( - createdStyles.size + removedStyles.size + movedStyles.size > - 0 - ) { - update({ - created: Array.from(createdStyles), - removed: Array.from(removedStyles), - moved: Array.from(movedStyles), - updated: [] - }); - } - } - function handleMinorTreeMutations(_a) { - var additions = _a.additions, - moves = _a.moves, - deletions = _a.deletions; - var createdStyles = new Set(); - var removedStyles = new Set(); - var movedStyles = new Set(); - additions.forEach(function (node) { - return getManageableStyles(node).forEach(function (style) { - return createdStyles.add(style); - }); - }); - deletions.forEach(function (node) { - return getManageableStyles(node).forEach(function (style) { - return removedStyles.add(style); - }); - }); - moves.forEach(function (node) { - return getManageableStyles(node).forEach(function (style) { - return movedStyles.add(style); - }); - }); - handleStyleOperations({ - createdStyles: createdStyles, - removedStyles: removedStyles, - movedStyles: movedStyles - }); - additions.forEach(function (n) { - iterateShadowHosts(n, subscribeForShadowRootChanges); - collectUndefinedElements(n); - }); - } - function handleHugeTreeMutations(root) { - var styles = new Set(getManageableStyles(root)); - var createdStyles = new Set(); - var removedStyles = new Set(); - var movedStyles = new Set(); - styles.forEach(function (s) { - if (!prevStyles.has(s)) { - createdStyles.add(s); - } - }); - prevStyles.forEach(function (s) { - if (!styles.has(s)) { - removedStyles.add(s); - } - }); - styles.forEach(function (s) { - if ( - !createdStyles.has(s) && - !removedStyles.has(s) && - didStylePositionChange(s) - ) { - movedStyles.add(s); - } - }); - handleStyleOperations({ - createdStyles: createdStyles, - removedStyles: removedStyles, - movedStyles: movedStyles - }); - iterateShadowHosts(root, subscribeForShadowRootChanges); - collectUndefinedElements(root); - } - function handleAttributeMutations(mutations) { - var updatedStyles = new Set(); - var removedStyles = new Set(); - mutations.forEach(function (m) { - var target = m.target; - if (target.isConnected) { - if (shouldManageStyle(target)) { - updatedStyles.add(target); - } else if ( - target instanceof HTMLLinkElement && - target.disabled - ) { - removedStyles.add(target); - } - } - }); - if (updatedStyles.size + removedStyles.size > 0) { - update({ - updated: Array.from(updatedStyles), - created: [], - removed: Array.from(removedStyles), - moved: [] - }); - } - } - function observe(root) { - var treeObserver = createOptimizedTreeObserver(root, { - onMinorMutations: handleMinorTreeMutations, - onHugeMutations: handleHugeTreeMutations - }); - var attrObserver = new MutationObserver(handleAttributeMutations); - attrObserver.observe(root, { - attributes: true, - attributeFilter: ["rel", "disabled", "media", "href"], - subtree: true - }); - observers.push(treeObserver, attrObserver); - observedRoots.add(root); - } - function subscribeForShadowRootChanges(node) { - var shadowRoot = node.shadowRoot; - if (shadowRoot == null || observedRoots.has(shadowRoot)) { - return; - } - observe(shadowRoot); - shadowRootDiscovered(shadowRoot); - } - observe(document); - iterateShadowHosts( - document.documentElement, - subscribeForShadowRootChanges - ); - watchWhenCustomElementsDefined(function (hosts) { - var newStyles = []; - hosts.forEach(function (host) { - return push(newStyles, getManageableStyles(host.shadowRoot)); - }); - update({created: newStyles, updated: [], removed: [], moved: []}); - hosts.forEach(function (host) { - var shadowRoot = host.shadowRoot; - if (shadowRoot == null) { - return; - } - subscribeForShadowRootChanges(host); - iterateShadowHosts(shadowRoot, subscribeForShadowRootChanges); - collectUndefinedElements(shadowRoot); - }); - }); - document.addEventListener("__darkreader__isDefined", handleIsDefined); - collectUndefinedElements(document); - } - function resetObservers() { - observers.forEach(function (o) { - return o.disconnect(); - }); - observers.splice(0, observers.length); - observedRoots = new WeakSet(); - } - function stopWatchingForStyleChanges() { - resetObservers(); - unsubscribeFromDefineCustomElements(); - } - - function hexify(number) { - return (number < 16 ? "0" : "") + number.toString(16); - } - function generateUID() { - if ("randomUUID" in crypto) { - var uuid = crypto.randomUUID(); - return ( - uuid.substring(0, 8) + - uuid.substring(9, 13) + - uuid.substring(14, 18) + - uuid.substring(19, 23) + - uuid.substring(24) - ); - } - return Array.from(crypto.getRandomValues(new Uint8Array(16))) - .map(function (x) { - return hexify(x); - }) - .join(""); - } - - var adoptedStyleOverrides = new WeakMap(); - var overrideList = new WeakSet(); - function createAdoptedStyleSheetOverride(node) { - var cancelAsyncOperations = false; - function injectSheet(sheet, override) { - var newSheets = __spreadArray( - [], - __read(node.adoptedStyleSheets), - false - ); - var sheetIndex = newSheets.indexOf(sheet); - var existingIndex = newSheets.indexOf(override); - if (sheetIndex === existingIndex - 1) { - return; - } - if (existingIndex >= 0) { - newSheets.splice(existingIndex, 1); - } - newSheets.splice(sheetIndex + 1, 0, override); - node.adoptedStyleSheets = newSheets; - } - function destroy() { - cancelAsyncOperations = true; - var newSheets = __spreadArray( - [], - __read(node.adoptedStyleSheets), - false - ); - node.adoptedStyleSheets.forEach(function (adoptedStyleSheet) { - if (overrideList.has(adoptedStyleSheet)) { - var existingIndex = newSheets.indexOf(adoptedStyleSheet); - if (existingIndex >= 0) { - newSheets.splice(existingIndex, 1); - } - adoptedStyleOverrides.delete(adoptedStyleSheet); - overrideList.delete(adoptedStyleSheet); - } - }); - node.adoptedStyleSheets = newSheets; - } - function render(theme, ignoreImageAnalysis) { - node.adoptedStyleSheets.forEach(function (sheet) { - if (overrideList.has(sheet)) { - return; - } - var rules = sheet.rules; - var override = new CSSStyleSheet(); - function prepareOverridesSheet() { - for (var i = override.cssRules.length - 1; i >= 0; i--) { - override.deleteRule(i); - } - injectSheet(sheet, override); - adoptedStyleOverrides.set(sheet, override); - overrideList.add(override); - return override; - } - var sheetModifier = createStyleSheetModifier(); - sheetModifier.modifySheet({ - prepareSheet: prepareOverridesSheet, - sourceCSSRules: rules, - theme: theme, - ignoreImageAnalysis: ignoreImageAnalysis, - force: false, - isAsyncCancelled: function () { - return cancelAsyncOperations; - } - }); - }); - } - return { - render: render, - destroy: destroy - }; - } - - function injectProxy(enableStyleSheetsProxy) { - document.dispatchEvent( - new CustomEvent("__darkreader__inlineScriptsAllowed") - ); - var addRuleDescriptor = Object.getOwnPropertyDescriptor( - CSSStyleSheet.prototype, - "addRule" - ); - var insertRuleDescriptor = Object.getOwnPropertyDescriptor( - CSSStyleSheet.prototype, - "insertRule" - ); - var deleteRuleDescriptor = Object.getOwnPropertyDescriptor( - CSSStyleSheet.prototype, - "deleteRule" - ); - var removeRuleDescriptor = Object.getOwnPropertyDescriptor( - CSSStyleSheet.prototype, - "removeRule" - ); - var documentStyleSheetsDescriptor = enableStyleSheetsProxy - ? Object.getOwnPropertyDescriptor(Document.prototype, "styleSheets") - : null; - var shouldWrapHTMLElement = [ - "baidu.com", - "baike.baidu.com", - "ditu.baidu.com", - "map.baidu.com", - "maps.baidu.com", - "haokan.baidu.com", - "pan.baidu.com", - "passport.baidu.com", - "tieba.baidu.com", - "www.baidu.com" - ].includes(location.hostname); - var getElementsByTagNameDescriptor = shouldWrapHTMLElement - ? Object.getOwnPropertyDescriptor( - Element.prototype, - "getElementsByTagName" - ) - : null; - var cleanUp = function () { - Object.defineProperty( - CSSStyleSheet.prototype, - "addRule", - addRuleDescriptor - ); - Object.defineProperty( - CSSStyleSheet.prototype, - "insertRule", - insertRuleDescriptor - ); - Object.defineProperty( - CSSStyleSheet.prototype, - "deleteRule", - deleteRuleDescriptor - ); - Object.defineProperty( - CSSStyleSheet.prototype, - "removeRule", - removeRuleDescriptor - ); - document.removeEventListener("__darkreader__cleanUp", cleanUp); - document.removeEventListener( - "__darkreader__addUndefinedResolver", - addUndefinedResolver - ); - if (enableStyleSheetsProxy) { - Object.defineProperty( - Document.prototype, - "styleSheets", - documentStyleSheetsDescriptor - ); - } - if (shouldWrapHTMLElement) { - Object.defineProperty( - Element.prototype, - "getElementsByTagName", - getElementsByTagNameDescriptor - ); - } - }; - var addUndefinedResolver = function (e) { - customElements.whenDefined(e.detail.tag).then(function () { - document.dispatchEvent( - new CustomEvent("__darkreader__isDefined", { - detail: {tag: e.detail.tag} - }) - ); - }); - }; - document.addEventListener("__darkreader__cleanUp", cleanUp); - document.addEventListener( - "__darkreader__addUndefinedResolver", - addUndefinedResolver - ); - var updateSheetEvent = new Event("__darkreader__updateSheet"); - function proxyAddRule(selector, style, index) { - addRuleDescriptor.value.call(this, selector, style, index); - if ( - this.ownerNode && - !this.ownerNode.classList.contains("darkreader") - ) { - this.ownerNode.dispatchEvent(updateSheetEvent); - } - return -1; - } - function proxyInsertRule(rule, index) { - var returnValue = insertRuleDescriptor.value.call( - this, - rule, - index - ); - if ( - this.ownerNode && - !this.ownerNode.classList.contains("darkreader") - ) { - this.ownerNode.dispatchEvent(updateSheetEvent); - } - return returnValue; - } - function proxyDeleteRule(index) { - deleteRuleDescriptor.value.call(this, index); - if ( - this.ownerNode && - !this.ownerNode.classList.contains("darkreader") - ) { - this.ownerNode.dispatchEvent(updateSheetEvent); - } - } - function proxyRemoveRule(index) { - removeRuleDescriptor.value.call(this, index); - if ( - this.ownerNode && - !this.ownerNode.classList.contains("darkreader") - ) { - this.ownerNode.dispatchEvent(updateSheetEvent); - } - } - function proxyDocumentStyleSheets() { - var _this = this; - var getCurrentValue = function () { - var docSheets = documentStyleSheetsDescriptor.get.call(_this); - var filteredSheets = __spreadArray( - [], - __read(docSheets), - false - ).filter(function (styleSheet) { - return !styleSheet.ownerNode.classList.contains( - "darkreader" - ); - }); - filteredSheets.item = function (item) { - return filteredSheets[item]; - }; - return Object.setPrototypeOf( - filteredSheets, - StyleSheetList.prototype - ); - }; - var elements = getCurrentValue(); - var styleSheetListBehavior = { - get: function (_, property) { - return getCurrentValue()[property]; - } - }; - elements = new Proxy(elements, styleSheetListBehavior); - return elements; - } - function proxyGetElementsByTagName(tagName) { - var _this = this; - if (tagName !== "style") { - return getElementsByTagNameDescriptor.value.call(this, tagName); - } - var getCurrentElementValue = function () { - var elements = getElementsByTagNameDescriptor.value.call( - _this, - tagName - ); - return Object.setPrototypeOf( - __spreadArray([], __read(elements), false).filter(function ( - element - ) { - return !element.classList.contains("darkreader"); - }), - NodeList.prototype - ); - }; - var elements = getCurrentElementValue(); - var nodeListBehavior = { - get: function (_, property) { - return getCurrentElementValue()[ - Number(property) || property - ]; - } - }; - elements = new Proxy(elements, nodeListBehavior); - return elements; - } - Object.defineProperty( - CSSStyleSheet.prototype, - "addRule", - Object.assign({}, addRuleDescriptor, {value: proxyAddRule}) - ); - Object.defineProperty( - CSSStyleSheet.prototype, - "insertRule", - Object.assign({}, insertRuleDescriptor, {value: proxyInsertRule}) - ); - Object.defineProperty( - CSSStyleSheet.prototype, - "deleteRule", - Object.assign({}, deleteRuleDescriptor, {value: proxyDeleteRule}) - ); - Object.defineProperty( - CSSStyleSheet.prototype, - "removeRule", - Object.assign({}, removeRuleDescriptor, {value: proxyRemoveRule}) - ); - if (enableStyleSheetsProxy) { - Object.defineProperty( - Document.prototype, - "styleSheets", - Object.assign({}, documentStyleSheetsDescriptor, { - get: proxyDocumentStyleSheets - }) - ); - } - if (shouldWrapHTMLElement) { - Object.defineProperty( - Element.prototype, - "getElementsByTagName", - Object.assign({}, getElementsByTagNameDescriptor, { - value: proxyGetElementsByTagName - }) - ); - } - } - - var INSTANCE_ID = generateUID(); - var styleManagers = new Map(); - var adoptedStyleManagers = []; - var filter = null; - var fixes = null; - var isIFrame$1 = null; - var ignoredImageAnalysisSelectors = null; - var ignoredInlineSelectors = null; - function createOrUpdateStyle(className, root) { - if (root === void 0) { - root = document.head || document; - } - var element = root.querySelector(".".concat(className)); - if (!element) { - element = document.createElement("style"); - element.classList.add("darkreader"); - element.classList.add(className); - element.media = "screen"; - element.textContent = ""; - } - return element; - } - function createOrUpdateScript(className, root) { - if (root === void 0) { - root = document.head || document; - } - var element = root.querySelector(".".concat(className)); - if (!element) { - element = document.createElement("script"); - element.classList.add("darkreader"); - element.classList.add(className); - } - return element; - } - var nodePositionWatchers = new Map(); - function setupNodePositionWatcher(node, alias) { - nodePositionWatchers.has(alias) && - nodePositionWatchers.get(alias).stop(); - nodePositionWatchers.set(alias, watchForNodePosition(node, "parent")); - } - function stopStylePositionWatchers() { - forEach(nodePositionWatchers.values(), function (watcher) { - return watcher.stop(); - }); - nodePositionWatchers.clear(); - } - function createStaticStyleOverrides() { - var fallbackStyle = createOrUpdateStyle( - "darkreader--fallback", - document - ); - fallbackStyle.textContent = getModifiedFallbackStyle(filter, { - strict: true - }); - document.head.insertBefore(fallbackStyle, document.head.firstChild); - setupNodePositionWatcher(fallbackStyle, "fallback"); - var userAgentStyle = createOrUpdateStyle("darkreader--user-agent"); - userAgentStyle.textContent = getModifiedUserAgentStyle( - filter, - isIFrame$1, - filter.styleSystemControls - ); - document.head.insertBefore(userAgentStyle, fallbackStyle.nextSibling); - setupNodePositionWatcher(userAgentStyle, "user-agent"); - var textStyle = createOrUpdateStyle("darkreader--text"); - if (filter.useFont || filter.textStroke > 0) { - textStyle.textContent = createTextStyle(filter); - } else { - textStyle.textContent = ""; - } - document.head.insertBefore(textStyle, fallbackStyle.nextSibling); - setupNodePositionWatcher(textStyle, "text"); - var invertStyle = createOrUpdateStyle("darkreader--invert"); - if (fixes && Array.isArray(fixes.invert) && fixes.invert.length > 0) { - invertStyle.textContent = [ - "".concat(fixes.invert.join(", "), " {"), - " filter: ".concat( - getCSSFilterValue( - __assign(__assign({}, filter), { - contrast: - filter.mode === 0 - ? filter.contrast - : clamp(filter.contrast - 10, 0, 100) - }) - ), - " !important;" - ), - "}" - ].join("\n"); - } else { - invertStyle.textContent = ""; - } - document.head.insertBefore(invertStyle, textStyle.nextSibling); - setupNodePositionWatcher(invertStyle, "invert"); - var inlineStyle = createOrUpdateStyle("darkreader--inline"); - inlineStyle.textContent = getInlineOverrideStyle(); - document.head.insertBefore(inlineStyle, invertStyle.nextSibling); - setupNodePositionWatcher(inlineStyle, "inline"); - var overrideStyle = createOrUpdateStyle("darkreader--override"); - overrideStyle.textContent = - fixes && fixes.css ? replaceCSSTemplates(fixes.css) : ""; - document.head.appendChild(overrideStyle); - setupNodePositionWatcher(overrideStyle, "override"); - var variableStyle = createOrUpdateStyle("darkreader--variables"); - var selectionColors = getSelectionColor(filter); - var darkSchemeBackgroundColor = filter.darkSchemeBackgroundColor, - darkSchemeTextColor = filter.darkSchemeTextColor, - lightSchemeBackgroundColor = filter.lightSchemeBackgroundColor, - lightSchemeTextColor = filter.lightSchemeTextColor, - mode = filter.mode; - var schemeBackgroundColor = - mode === 0 ? lightSchemeBackgroundColor : darkSchemeBackgroundColor; - var schemeTextColor = - mode === 0 ? lightSchemeTextColor : darkSchemeTextColor; - schemeBackgroundColor = modifyBackgroundColor( - parseColorWithCache(schemeBackgroundColor), - filter - ); - schemeTextColor = modifyForegroundColor( - parseColorWithCache(schemeTextColor), - filter - ); - variableStyle.textContent = [ - ":root {", - " --darkreader-neutral-background: ".concat( - schemeBackgroundColor, - ";" - ), - " --darkreader-neutral-text: ".concat(schemeTextColor, ";"), - " --darkreader-selection-background: ".concat( - selectionColors.backgroundColorSelection, - ";" - ), - " --darkreader-selection-text: ".concat( - selectionColors.foregroundColorSelection, - ";" - ), - "}" - ].join("\n"); - document.head.insertBefore(variableStyle, inlineStyle.nextSibling); - setupNodePositionWatcher(variableStyle, "variables"); - var rootVarsStyle = createOrUpdateStyle("darkreader--root-vars"); - document.head.insertBefore(rootVarsStyle, variableStyle.nextSibling); - var injectProxyArg = !(fixes && fixes.disableStyleSheetsProxy); - { - var proxyScript = createOrUpdateScript("darkreader--proxy"); - proxyScript.append( - "(".concat(injectProxy, ")(").concat(injectProxyArg, ")") - ); - document.head.insertBefore(proxyScript, rootVarsStyle.nextSibling); - proxyScript.remove(); - } - } - var shadowRootsWithOverrides = new Set(); - function createShadowStaticStyleOverrides(root) { - var inlineStyle = createOrUpdateStyle("darkreader--inline", root); - inlineStyle.textContent = getInlineOverrideStyle(); - root.insertBefore(inlineStyle, root.firstChild); - var overrideStyle = createOrUpdateStyle("darkreader--override", root); - overrideStyle.textContent = - fixes && fixes.css ? replaceCSSTemplates(fixes.css) : ""; - root.insertBefore(overrideStyle, inlineStyle.nextSibling); - var invertStyle = createOrUpdateStyle("darkreader--invert", root); - if (fixes && Array.isArray(fixes.invert) && fixes.invert.length > 0) { - invertStyle.textContent = [ - "".concat(fixes.invert.join(", "), " {"), - " filter: ".concat( - getCSSFilterValue( - __assign(__assign({}, filter), { - contrast: - filter.mode === 0 - ? filter.contrast - : clamp(filter.contrast - 10, 0, 100) - }) - ), - " !important;" - ), - "}" - ].join("\n"); - } else { - invertStyle.textContent = ""; - } - root.insertBefore(invertStyle, overrideStyle.nextSibling); - shadowRootsWithOverrides.add(root); - } - function replaceCSSTemplates($cssText) { - return $cssText.replace(/\${(.+?)}/g, function (_, $color) { - var color = parseColorWithCache($color); - if (color) { - return modifyColor(color, filter); - } - return $color; - }); - } - function cleanFallbackStyle() { - var fallback = document.querySelector(".darkreader--fallback"); - if (fallback) { - fallback.textContent = ""; - } - } - function createDynamicStyleOverrides() { - cancelRendering(); - var allStyles = getManageableStyles(document); - var newManagers = allStyles - .filter(function (style) { - return !styleManagers.has(style); - }) - .map(function (style) { - return createManager(style); - }); - newManagers - .map(function (manager) { - return manager.details({secondRound: false}); - }) - .filter(function (detail) { - return detail && detail.rules.length > 0; - }) - .forEach(function (detail) { - variablesStore.addRulesForMatching(detail.rules); - }); - variablesStore.matchVariablesAndDependants(); - variablesStore.setOnRootVariableChange(function () { - variablesStore.putRootVars( - document.head.querySelector(".darkreader--root-vars"), - filter - ); - }); - variablesStore.putRootVars( - document.head.querySelector(".darkreader--root-vars"), - filter - ); - styleManagers.forEach(function (manager) { - return manager.render(filter, ignoredImageAnalysisSelectors); - }); - if (loadingStyles.size === 0) { - cleanFallbackStyle(); - } - newManagers.forEach(function (manager) { - return manager.watch(); - }); - var inlineStyleElements = toArray( - document.querySelectorAll(INLINE_STYLE_SELECTOR) - ); - iterateShadowHosts(document.documentElement, function (host) { - createShadowStaticStyleOverrides(host.shadowRoot); - var elements = host.shadowRoot.querySelectorAll( - INLINE_STYLE_SELECTOR - ); - if (elements.length > 0) { - push(inlineStyleElements, elements); - } - }); - inlineStyleElements.forEach(function (el) { - return overrideInlineStyle( - el, - filter, - ignoredInlineSelectors, - ignoredImageAnalysisSelectors - ); - }); - handleAdoptedStyleSheets(document); - } - var loadingStylesCounter = 0; - var loadingStyles = new Set(); - function createManager(element) { - var loadingStyleId = ++loadingStylesCounter; - function loadingStart() { - if (!isDOMReady() || !didDocumentShowUp) { - loadingStyles.add(loadingStyleId); - logInfo( - "Current amount of styles loading: ".concat( - loadingStyles.size - ) - ); - var fallbackStyle = document.querySelector( - ".darkreader--fallback" - ); - if (!fallbackStyle.textContent) { - fallbackStyle.textContent = getModifiedFallbackStyle( - filter, - {strict: false} - ); - } - } - } - function loadingEnd() { - loadingStyles.delete(loadingStyleId); - logInfo( - "Removed loadingStyle " - .concat(loadingStyleId, ", now awaiting: ") - .concat(loadingStyles.size) - ); - if (loadingStyles.size === 0 && isDOMReady()) { - cleanFallbackStyle(); - } - } - function update() { - var details = manager.details({secondRound: true}); - if (!details) { - return; - } - variablesStore.addRulesForMatching(details.rules); - variablesStore.matchVariablesAndDependants(); - manager.render(filter, ignoredImageAnalysisSelectors); - } - var manager = manageStyle(element, { - update: update, - loadingStart: loadingStart, - loadingEnd: loadingEnd - }); - styleManagers.set(element, manager); - return manager; - } - function removeManager(element) { - var manager = styleManagers.get(element); - if (manager) { - manager.destroy(); - styleManagers.delete(element); - } - } - var throttledRenderAllStyles = throttle(function (callback) { - styleManagers.forEach(function (manager) { - return manager.render(filter, ignoredImageAnalysisSelectors); - }); - adoptedStyleManagers.forEach(function (manager) { - return manager.render(filter, ignoredImageAnalysisSelectors); - }); - callback && callback(); - }); - var cancelRendering = function () { - throttledRenderAllStyles.cancel(); - }; - function onDOMReady() { - if (loadingStyles.size === 0) { - cleanFallbackStyle(); - return; - } - } - var documentVisibilityListener = null; - var didDocumentShowUp = !document.hidden; - function watchForDocumentVisibility(callback) { - var alreadyWatching = Boolean(documentVisibilityListener); - documentVisibilityListener = function () { - if (!document.hidden) { - stopWatchingForDocumentVisibility(); - callback(); - didDocumentShowUp = true; - } - }; - if (!alreadyWatching) { - document.addEventListener( - "visibilitychange", - documentVisibilityListener - ); - } - } - function stopWatchingForDocumentVisibility() { - document.removeEventListener( - "visibilitychange", - documentVisibilityListener - ); - documentVisibilityListener = null; - } - function createThemeAndWatchForUpdates() { - createStaticStyleOverrides(); - function runDynamicStyle() { - createDynamicStyleOverrides(); - watchForUpdates(); - } - if (document.hidden && !filter.immediateModify) { - watchForDocumentVisibility(runDynamicStyle); - } else { - runDynamicStyle(); - } - changeMetaThemeColorWhenAvailable(filter); - } - function handleAdoptedStyleSheets(node) { - try { - if (Array.isArray(node.adoptedStyleSheets)) { - if (node.adoptedStyleSheets.length > 0) { - var newManger = createAdoptedStyleSheetOverride(node); - adoptedStyleManagers.push(newManger); - newManger.render(filter, ignoredImageAnalysisSelectors); - } - } - } catch (err) {} - } - function watchForUpdates() { - var managedStyles = Array.from(styleManagers.keys()); - watchForStyleChanges( - managedStyles, - function (_a) { - var created = _a.created, - updated = _a.updated, - removed = _a.removed, - moved = _a.moved; - var stylesToRemove = removed; - var stylesToManage = created - .concat(updated) - .concat(moved) - .filter(function (style) { - return !styleManagers.has(style); - }); - var stylesToRestore = moved.filter(function (style) { - return styleManagers.has(style); - }); - stylesToRemove.forEach(function (style) { - return removeManager(style); - }); - var newManagers = stylesToManage.map(function (style) { - return createManager(style); - }); - newManagers - .map(function (manager) { - return manager.details({secondRound: false}); - }) - .filter(function (detail) { - return detail && detail.rules.length > 0; - }) - .forEach(function (detail) { - variablesStore.addRulesForMatching(detail.rules); - }); - variablesStore.matchVariablesAndDependants(); - newManagers.forEach(function (manager) { - return manager.render( - filter, - ignoredImageAnalysisSelectors - ); - }); - newManagers.forEach(function (manager) { - return manager.watch(); - }); - stylesToRestore.forEach(function (style) { - return styleManagers.get(style).restore(); - }); - }, - function (shadowRoot) { - createShadowStaticStyleOverrides(shadowRoot); - handleAdoptedStyleSheets(shadowRoot); - } - ); - watchForInlineStyles( - function (element) { - overrideInlineStyle( - element, - filter, - ignoredInlineSelectors, - ignoredImageAnalysisSelectors - ); - if (element === document.documentElement) { - var styleAttr = element.getAttribute("style") || ""; - if (styleAttr.includes("--")) { - variablesStore.matchVariablesAndDependants(); - variablesStore.putRootVars( - document.head.querySelector( - ".darkreader--root-vars" - ), - filter - ); - } - } - }, - function (root) { - createShadowStaticStyleOverrides(root); - var inlineStyleElements = root.querySelectorAll( - INLINE_STYLE_SELECTOR - ); - if (inlineStyleElements.length > 0) { - forEach(inlineStyleElements, function (el) { - return overrideInlineStyle( - el, - filter, - ignoredInlineSelectors, - ignoredImageAnalysisSelectors - ); - }); - } - } - ); - addDOMReadyListener(onDOMReady); - } - function stopWatchingForUpdates() { - styleManagers.forEach(function (manager) { - return manager.pause(); - }); - stopStylePositionWatchers(); - stopWatchingForStyleChanges(); - stopWatchingForInlineStyles(); - removeDOMReadyListener(onDOMReady); - cleanReadyStateCompleteListeners(); - } - var metaObserver; - function addMetaListener() { - metaObserver = new MutationObserver(function () { - if (document.querySelector('meta[name="darkreader-lock"]')) { - metaObserver.disconnect(); - removeDynamicTheme(); - } - }); - metaObserver.observe(document.head, {childList: true, subtree: true}); - } - function createDarkReaderInstanceMarker() { - var metaElement = document.createElement("meta"); - metaElement.name = "darkreader"; - metaElement.content = INSTANCE_ID; - document.head.appendChild(metaElement); - } - function isAnotherDarkReaderInstanceActive() { - if (document.querySelector('meta[name="darkreader-lock"]')) { - return true; - } - var meta = document.querySelector('meta[name="darkreader"]'); - if (meta) { - if (meta.content !== INSTANCE_ID) { - return true; - } - return false; - } - createDarkReaderInstanceMarker(); - addMetaListener(); - return false; - } - function createOrUpdateDynamicTheme( - filterConfig, - dynamicThemeFixes, - iframe - ) { - filter = filterConfig; - fixes = dynamicThemeFixes; - if (fixes) { - ignoredImageAnalysisSelectors = Array.isArray( - fixes.ignoreImageAnalysis - ) - ? fixes.ignoreImageAnalysis - : []; - ignoredInlineSelectors = Array.isArray(fixes.ignoreInlineStyle) - ? fixes.ignoreInlineStyle - : []; - } else { - ignoredImageAnalysisSelectors = []; - ignoredInlineSelectors = []; - } - if (filter.immediateModify) { - setIsDOMReady(function () { - return true; - }); - } - isIFrame$1 = iframe; - if (document.head) { - if (isAnotherDarkReaderInstanceActive()) { - return; - } - document.documentElement.setAttribute( - "data-darkreader-mode", - "dynamic" - ); - document.documentElement.setAttribute( - "data-darkreader-scheme", - filter.mode ? "dark" : "dimmed" - ); - createThemeAndWatchForUpdates(); - } else { - if (!isFirefox) { - var fallbackStyle = createOrUpdateStyle("darkreader--fallback"); - document.documentElement.appendChild(fallbackStyle); - fallbackStyle.textContent = getModifiedFallbackStyle(filter, { - strict: true - }); - } - var headObserver_1 = new MutationObserver(function () { - if (document.head) { - headObserver_1.disconnect(); - if (isAnotherDarkReaderInstanceActive()) { - removeDynamicTheme(); - return; - } - createThemeAndWatchForUpdates(); - } - }); - headObserver_1.observe(document, {childList: true, subtree: true}); - } - } - function removeProxy() { - document.dispatchEvent(new CustomEvent("__darkreader__cleanUp")); - removeNode(document.head.querySelector(".darkreader--proxy")); - } - function removeDynamicTheme() { - document.documentElement.removeAttribute("data-darkreader-mode"); - document.documentElement.removeAttribute("data-darkreader-scheme"); - cleanDynamicThemeCache(); - removeNode(document.querySelector(".darkreader--fallback")); - if (document.head) { - restoreMetaThemeColor(); - removeNode(document.head.querySelector(".darkreader--user-agent")); - removeNode(document.head.querySelector(".darkreader--text")); - removeNode(document.head.querySelector(".darkreader--invert")); - removeNode(document.head.querySelector(".darkreader--inline")); - removeNode(document.head.querySelector(".darkreader--override")); - removeNode(document.head.querySelector(".darkreader--variables")); - removeNode(document.head.querySelector(".darkreader--root-vars")); - removeNode(document.head.querySelector('meta[name="darkreader"]')); - removeProxy(); - } - shadowRootsWithOverrides.forEach(function (root) { - removeNode(root.querySelector(".darkreader--inline")); - removeNode(root.querySelector(".darkreader--override")); - }); - shadowRootsWithOverrides.clear(); - forEach(styleManagers.keys(), function (el) { - return removeManager(el); - }); - loadingStyles.clear(); - cleanLoadingLinks(); - forEach(document.querySelectorAll(".darkreader"), removeNode); - adoptedStyleManagers.forEach(function (manager) { - manager.destroy(); - }); - adoptedStyleManagers.splice(0); - metaObserver && metaObserver.disconnect(); - } - function cleanDynamicThemeCache() { - variablesStore.clear(); - parsedURLCache.clear(); - stopWatchingForDocumentVisibility(); - cancelRendering(); - stopWatchingForUpdates(); - cleanModificationCache(); - clearColorCache(); - } - - var blobRegex = /url\(\"(blob\:.*?)\"\)/g; - function replaceBlobs(text) { - return __awaiter(this, void 0, void 0, function () { - var promises, data; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - promises = []; - getMatches(blobRegex, text, 1).forEach(function (url) { - var promise = loadAsDataURL(url); - promises.push(promise); - }); - return [4, Promise.all(promises)]; - case 1: - data = _a.sent(); - return [ - 2, - text.replace(blobRegex, function () { - return 'url("'.concat(data.shift(), '")'); - }) - ]; - } - }); - }); - } - var banner = - '/*\n _______\n / \\\n .==. .==.\n (( ))==(( ))\n / "==" "=="\\\n /____|| || ||___\\\n ________ ____ ________ ___ ___\n | ___ \\ / \\ | ___ \\ | | / /\n | | \\ \\ / /\\ \\ | | \\ \\| |_/ /\n | | ) / /__\\ \\ | |__/ /| ___ \\\n | |__/ / ______ \\| ____ \\| | \\ \\\n_______|_______/__/ ____ \\__\\__|___\\__\\__|___\\__\\____\n| ___ \\ | ____/ / \\ | ___ \\ | ____| ___ \\\n| | \\ \\| |___ / /\\ \\ | | \\ \\| |___| | \\ \\\n| |__/ /| ____/ /__\\ \\ | | ) | ____| |__/ /\n| ____ \\| |__/ ______ \\| |__/ /| |___| ____ \\\n|__| \\__\\____/__/ \\__\\_______/ |______|__| \\__\\\n https://darkreader.org\n*/\n\n/*! Dark reader generated CSS | Licensed under MIT https://github.com/darkreader/darkreader/blob/main/LICENSE */\n'; - function collectCSS() { - return __awaiter(this, void 0, void 0, function () { - function addStaticCSS(selector, comment) { - var staticStyle = document.querySelector(selector); - if (staticStyle && staticStyle.textContent) { - css.push("/* ".concat(comment, " */")); - css.push(staticStyle.textContent); - css.push(""); - } - } - var css, modifiedCSS, formattedCSS, _a, _b; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - css = [banner]; - addStaticCSS(".darkreader--fallback", "Fallback Style"); - addStaticCSS( - ".darkreader--user-agent", - "User-Agent Style" - ); - addStaticCSS(".darkreader--text", "Text Style"); - addStaticCSS(".darkreader--invert", "Invert Style"); - addStaticCSS( - ".darkreader--variables", - "Variables Style" - ); - modifiedCSS = []; - document - .querySelectorAll(".darkreader--sync") - .forEach(function (element) { - forEach( - element.sheet.cssRules, - function (rule) { - rule && - rule.cssText && - modifiedCSS.push(rule.cssText); - } - ); - }); - if (!modifiedCSS.length) return [3, 2]; - formattedCSS = formatCSS(modifiedCSS.join("\n")); - css.push("/* Modified CSS */"); - _b = (_a = css).push; - return [4, replaceBlobs(formattedCSS)]; - case 1: - _b.apply(_a, [_c.sent()]); - css.push(""); - _c.label = 2; - case 2: - addStaticCSS(".darkreader--override", "Override Style"); - return [2, css.join("\n")]; - } - }); - }); - } - - var isDarkReaderEnabled = false; - var isIFrame = (function () { - try { - return window.self !== window.top; - } catch (err) { - console.warn(err); - return true; - } - })(); - function enable(themeOptions, fixes) { - if (themeOptions === void 0) { - themeOptions = {}; - } - if (fixes === void 0) { - fixes = null; - } - var theme = __assign(__assign({}, DEFAULT_THEME), themeOptions); - if (theme.engine !== ThemeEngine.dynamicTheme) { - throw new Error("Theme engine is not supported."); - } - createOrUpdateDynamicTheme(theme, fixes, isIFrame); - isDarkReaderEnabled = true; - } - function isEnabled() { - return isDarkReaderEnabled; - } - function disable() { - removeDynamicTheme(); - isDarkReaderEnabled = false; - } - var darkScheme = matchMedia("(prefers-color-scheme: dark)"); - var store = { - themeOptions: null, - fixes: null - }; - function handleColorScheme() { - if (darkScheme.matches) { - enable(store.themeOptions, store.fixes); - } else { - disable(); - } - } - function auto(themeOptions, fixes) { - if (themeOptions === void 0) { - themeOptions = {}; - } - if (fixes === void 0) { - fixes = null; - } - if (themeOptions) { - store = {themeOptions: themeOptions, fixes: fixes}; - handleColorScheme(); - if (isMatchMediaChangeEventListenerSupported) { - darkScheme.addEventListener("change", handleColorScheme); - } else { - darkScheme.addListener(handleColorScheme); - } - } else { - if (isMatchMediaChangeEventListenerSupported) { - darkScheme.removeEventListener("change", handleColorScheme); - } else { - darkScheme.removeListener(handleColorScheme); - } - disable(); - } - } - function exportGeneratedCSS() { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - return [4, collectCSS()]; - case 1: - return [2, _a.sent()]; - } - }); - }); - } - var setFetchMethod = setFetchMethod$1; - - exports.auto = auto; - exports.disable = disable; - exports.enable = enable; - exports.exportGeneratedCSS = exportGeneratedCSS; - exports.isEnabled = isEnabled; - exports.setFetchMethod = setFetchMethod; - - Object.defineProperty(exports, "__esModule", {value: true}); -}); - -layui.define([], function(exports) { - exports('darkreader', DarkReader); -}); \ No newline at end of file diff --git a/component/pear/module/encrypt.js b/component/pear/module/encrypt.js deleted file mode 100644 index 9594f1a..0000000 --- a/component/pear/module/encrypt.js +++ /dev/null @@ -1,1775 +0,0 @@ -/** - layui hash extend -**/ - -layui.define(function (exports) { - /** - * jshashes - https://github.com/h2non/jshashes - * Released under the "New BSD" license - * - * Algorithms specification: - * - * MD5 - http://www.ietf.org/rfc/rfc1321.txt - * RIPEMD-160 - http://homes.esat.kuleuven.be/~bosselae/ripemd160.html - * SHA1 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf - * SHA256 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf - * SHA512 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf - * HMAC - http://www.ietf.org/rfc/rfc2104.txt - */ - var pearHash; - - function utf8Encode(str) { - var x, y, output = '', - i = -1, - l; - - if (str && str.length) { - l = str.length; - while ((i += 1) < l) { - /* Decode utf-16 surrogate pairs */ - x = str.charCodeAt(i); - y = i + 1 < l ? str.charCodeAt(i + 1) : 0; - if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) { - x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF); - i += 1; - } - /* Encode output as utf-8 */ - if (x <= 0x7F) { - output += String.fromCharCode(x); - } else if (x <= 0x7FF) { - output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F), - 0x80 | (x & 0x3F)); - } else if (x <= 0xFFFF) { - output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F), - 0x80 | ((x >>> 6) & 0x3F), - 0x80 | (x & 0x3F)); - } else if (x <= 0x1FFFFF) { - output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07), - 0x80 | ((x >>> 12) & 0x3F), - 0x80 | ((x >>> 6) & 0x3F), - 0x80 | (x & 0x3F)); - } - } - } - return output; - } - - function utf8Decode(str) { - var i, ac, c1, c2, c3, arr = [], - l; - i = ac = c1 = c2 = c3 = 0; - - if (str && str.length) { - l = str.length; - str += ''; - - while (i < l) { - c1 = str.charCodeAt(i); - ac += 1; - if (c1 < 128) { - arr[ac] = String.fromCharCode(c1); - i += 1; - } else if (c1 > 191 && c1 < 224) { - c2 = str.charCodeAt(i + 1); - arr[ac] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63)); - i += 2; - } else { - c2 = str.charCodeAt(i + 1); - c3 = str.charCodeAt(i + 2); - arr[ac] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); - i += 3; - } - } - } - return arr.join(''); - } - - /** - * Add integers, wrapping at 2^32. This uses 16-bit operations internally - * to work around bugs in some JS interpreters. - */ - - function safe_add(x, y) { - var lsw = (x & 0xFFFF) + (y & 0xFFFF), - msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return (msw << 16) | (lsw & 0xFFFF); - } - - /** - * Bitwise rotate a 32-bit number to the left. - */ - - function bit_rol(num, cnt) { - return (num << cnt) | (num >>> (32 - cnt)); - } - - /** - * Convert a raw string to a hex string - */ - - function rstr2hex(input, hexcase) { - var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef', - output = '', - x, i = 0, - l = input.length; - for (; i < l; i += 1) { - x = input.charCodeAt(i); - output += hex_tab.charAt((x >>> 4) & 0x0F) + hex_tab.charAt(x & 0x0F); - } - return output; - } - - /** - * Encode a string as utf-16 - */ - - function str2rstr_utf16le(input) { - var i, l = input.length, - output = ''; - for (i = 0; i < l; i += 1) { - output += String.fromCharCode(input.charCodeAt(i) & 0xFF, (input.charCodeAt(i) >>> 8) & 0xFF); - } - return output; - } - - function str2rstr_utf16be(input) { - var i, l = input.length, - output = ''; - for (i = 0; i < l; i += 1) { - output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, input.charCodeAt(i) & 0xFF); - } - return output; - } - - /** - * Convert an array of big-endian words to a string - */ - - function binb2rstr(input) { - var i, l = input.length * 32, - output = ''; - for (i = 0; i < l; i += 8) { - output += String.fromCharCode((input[i >> 5] >>> (24 - i % 32)) & 0xFF); - } - return output; - } - - /** - * Convert an array of little-endian words to a string - */ - - function binl2rstr(input) { - var i, l = input.length * 32, - output = ''; - for (i = 0; i < l; i += 8) { - output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF); - } - return output; - } - - /** - * Convert a raw string to an array of little-endian words - * Characters >255 have their high-byte silently ignored. - */ - - function rstr2binl(input) { - var i, l = input.length * 8, - output = Array(input.length >> 2), - lo = output.length; - for (i = 0; i < lo; i += 1) { - output[i] = 0; - } - for (i = 0; i < l; i += 8) { - output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (i % 32); - } - return output; - } - - /** - * Convert a raw string to an array of big-endian words - * Characters >255 have their high-byte silently ignored. - */ - - function rstr2binb(input) { - var i, l = input.length * 8, - output = Array(input.length >> 2), - lo = output.length; - for (i = 0; i < lo; i += 1) { - output[i] = 0; - } - for (i = 0; i < l; i += 8) { - output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32); - } - return output; - } - - /** - * Convert a raw string to an arbitrary string encoding - */ - - function rstr2any(input, encoding) { - var divisor = encoding.length, - remainders = Array(), - i, q, x, ld, quotient, dividend, output, full_length; - - /* Convert to an array of 16-bit big-endian values, forming the dividend */ - dividend = Array(Math.ceil(input.length / 2)); - ld = dividend.length; - for (i = 0; i < ld; i += 1) { - dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1); - } - - /** - * Repeatedly perform a long division. The binary array forms the dividend, - * the length of the encoding is the divisor. Once computed, the quotient - * forms the dividend for the next step. We stop when the dividend is zerHashes. - * All remainders are stored for later use. - */ - while (dividend.length > 0) { - quotient = Array(); - x = 0; - for (i = 0; i < dividend.length; i += 1) { - x = (x << 16) + dividend[i]; - q = Math.floor(x / divisor); - x -= q * divisor; - if (quotient.length > 0 || q > 0) { - quotient[quotient.length] = q; - } - } - remainders[remainders.length] = x; - dividend = quotient; - } - - /* Convert the remainders to the output string */ - output = ''; - for (i = remainders.length - 1; i >= 0; i--) { - output += encoding.charAt(remainders[i]); - } - - /* Append leading zero equivalents */ - full_length = Math.ceil(input.length * 8 / (Math.log(encoding.length) / Math.log(2))); - for (i = output.length; i < full_length; i += 1) { - output = encoding[0] + output; - } - return output; - } - - /** - * Convert a raw string to a base-64 string - */ - - function rstr2b64(input, b64pad) { - var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', - output = '', - len = input.length, - i, j, triplet; - b64pad = b64pad || '='; - for (i = 0; i < len; i += 3) { - triplet = (input.charCodeAt(i) << 16) | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0); - for (j = 0; j < 4; j += 1) { - if (i * 8 + j * 6 > input.length * 8) { - output += b64pad; - } else { - output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F); - } - } - } - return output; - } - - pearHash = { - /** - * @property {String} version - * @readonly - */ - VERSION: '1.0.6', - /** - * @member Hashes - * @class Base64 - * @constructor - */ - Base64: function () { - // private properties - var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', - pad = '=', // default pad according with the RFC standard - url = false, // URL encoding support @todo - utf8 = true; // by default enable UTF-8 support encoding - - // public method for encoding - this.encode = function (input) { - var i, j, triplet, - output = '', - len = input.length; - - pad = pad || '='; - input = (utf8) ? utf8Encode(input) : input; - - for (i = 0; i < len; i += 3) { - triplet = (input.charCodeAt(i) << 16) | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0); - for (j = 0; j < 4; j += 1) { - if (i * 8 + j * 6 > len * 8) { - output += pad; - } else { - output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F); - } - } - } - return output; - }; - - // public method for decoding - this.decode = function (input) { - // var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - var i, o1, o2, o3, h1, h2, h3, h4, bits, ac, - dec = '', - arr = []; - if (!input) { - return input; - } - - i = ac = 0; - input = input.replace(new RegExp('\\' + pad, 'gi'), ''); // use '=' - //input += ''; - - do { // unpack four hexets into three octets using index points in b64 - h1 = tab.indexOf(input.charAt(i += 1)); - h2 = tab.indexOf(input.charAt(i += 1)); - h3 = tab.indexOf(input.charAt(i += 1)); - h4 = tab.indexOf(input.charAt(i += 1)); - - bits = h1 << 18 | h2 << 12 | h3 << 6 | h4; - - o1 = bits >> 16 & 0xff; - o2 = bits >> 8 & 0xff; - o3 = bits & 0xff; - ac += 1; - - if (h3 === 64) { - arr[ac] = String.fromCharCode(o1); - } else if (h4 === 64) { - arr[ac] = String.fromCharCode(o1, o2); - } else { - arr[ac] = String.fromCharCode(o1, o2, o3); - } - } while (i < input.length); - - dec = arr.join(''); - dec = (utf8) ? utf8Decode(dec) : dec; - - return dec; - }; - - // set custom pad string - this.setPad = function (str) { - pad = str || pad; - return this; - }; - // set custom tab string characters - this.setTab = function (str) { - tab = str || tab; - return this; - }; - this.setUTF8 = function (bool) { - if (typeof bool === 'boolean') { - utf8 = bool; - } - return this; - }; - }, - - /** - * CRC-32 calculation - * @member Hashes - * @method CRC32 - * @static - * @param {String} str Input String - * @return {String} - */ - CRC32: function (str) { - var crc = 0, - x = 0, - y = 0, - table, i, iTop; - str = utf8Encode(str); - - table = [ - '00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 ', - '79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 ', - '84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F ', - '63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD ', - 'A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC ', - '51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 ', - 'B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 ', - '06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 ', - 'E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 ', - '12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 ', - 'D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 ', - '33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 ', - 'CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 ', - '9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E ', - '7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D ', - '806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 ', - '60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA ', - 'AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 ', - '5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 ', - 'B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 ', - '05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 ', - 'F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA ', - '11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 ', - 'D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F ', - '30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E ', - 'C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D' - ].join(''); - - crc = crc ^ (-1); - for (i = 0, iTop = str.length; i < iTop; i += 1) { - y = (crc ^ str.charCodeAt(i)) & 0xFF; - x = '0x' + table.substr(y * 9, 8); - crc = (crc >>> 8) ^ x; - } - // always return a positive number (that's what >>> 0 does) - return (crc ^ (-1)) >>> 0; - }, - /** - * @member Hashes - * @class MD5 - * @constructor - * @param {Object} [config] - * - * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message - * Digest Algorithm, as defined in RFC 1321. - * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * See for more infHashes. - */ - MD5: function (options) { - /** - * Private config properties. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase} - */ - var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase - b64pad = (options && typeof options.pad === 'string') ? options.pad : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance - utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding - - // privileged (public) methods - this.hex = function (s) { - return rstr2hex(rstr(s, utf8), hexcase); - }; - this.b64 = function (s) { - return rstr2b64(rstr(s), b64pad); - }; - this.any = function (s, e) { - return rstr2any(rstr(s, utf8), e); - }; - this.raw = function (s) { - return rstr(s, utf8); - }; - this.hex_hmac = function (k, d) { - return rstr2hex(rstr_hmac(k, d), hexcase); - }; - this.b64_hmac = function (k, d) { - return rstr2b64(rstr_hmac(k, d), b64pad); - }; - this.any_hmac = function (k, d, e) { - return rstr2any(rstr_hmac(k, d), e); - }; - /** - * Perform a simple self-test to see if the VM is working - * @return {String} Hexadecimal hash sample - */ - this.vm_test = function () { - return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72'; - }; - /** - * Enable/disable uppercase hexadecimal returned string - * @param {Boolean} - * @return {Object} this - */ - this.setUpperCase = function (a) { - if (typeof a === 'boolean') { - hexcase = a; - } - return this; - }; - /** - * Defines a base64 pad string - * @param {String} Pad - * @return {Object} this - */ - this.setPad = function (a) { - b64pad = a || b64pad; - return this; - }; - /** - * Defines a base64 pad string - * @param {Boolean} - * @return {Object} [this] - */ - this.setUTF8 = function (a) { - if (typeof a === 'boolean') { - utf8 = a; - } - return this; - }; - - // private methods - - /** - * Calculate the MD5 of a raw string - */ - - function rstr(s) { - s = (utf8) ? utf8Encode(s) : s; - return binl2rstr(binl(rstr2binl(s), s.length * 8)); - } - - /** - * Calculate the HMAC-MD5, of a key and some data (raw strings) - */ - - function rstr_hmac(key, data) { - var bkey, ipad, opad, hash, i; - - key = (utf8) ? utf8Encode(key) : key; - data = (utf8) ? utf8Encode(data) : data; - bkey = rstr2binl(key); - if (bkey.length > 16) { - bkey = binl(bkey, key.length * 8); - } - - ipad = Array(16), opad = Array(16); - for (i = 0; i < 16; i += 1) { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8); - return binl2rstr(binl(opad.concat(hash), 512 + 128)); - } - - /** - * Calculate the MD5 of an array of little-endian words, and a bit length. - */ - - function binl(x, len) { - var i, olda, oldb, oldc, oldd, - a = 1732584193, - b = -271733879, - c = -1732584194, - d = 271733878; - - /* append padding */ - x[len >> 5] |= 0x80 << ((len) % 32); - x[(((len + 64) >>> 9) << 4) + 14] = len; - - for (i = 0; i < x.length; i += 16) { - olda = a; - oldb = b; - oldc = c; - oldd = d; - - a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936); - d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586); - c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819); - b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330); - a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897); - d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426); - c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341); - b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983); - a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416); - d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417); - c = md5_ff(c, d, a, b, x[i + 10], 17, -42063); - b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162); - a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682); - d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101); - c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290); - b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329); - - a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510); - d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632); - c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713); - b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302); - a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691); - d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083); - c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335); - b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848); - a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438); - d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690); - c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961); - b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501); - a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467); - d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784); - c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473); - b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734); - - a = md5_hh(a, b, c, d, x[i + 5], 4, -378558); - d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463); - c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562); - b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556); - a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060); - d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353); - c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632); - b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640); - a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174); - d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222); - c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979); - b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189); - a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487); - d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835); - c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520); - b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651); - - a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844); - d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415); - c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905); - b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055); - a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571); - d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606); - c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523); - b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799); - a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359); - d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744); - c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380); - b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649); - a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070); - d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379); - c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259); - b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551); - - a = safe_add(a, olda); - b = safe_add(b, oldb); - c = safe_add(c, oldc); - d = safe_add(d, oldd); - } - return Array(a, b, c, d); - } - - /** - * These functions implement the four basic operations the algorithm uses. - */ - - function md5_cmn(q, a, b, x, s, t) { - return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b); - } - - function md5_ff(a, b, c, d, x, s, t) { - return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); - } - - function md5_gg(a, b, c, d, x, s, t) { - return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); - } - - function md5_hh(a, b, c, d, x, s, t) { - return md5_cmn(b ^ c ^ d, a, b, x, s, t); - } - - function md5_ii(a, b, c, d, x, s, t) { - return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); - } - }, - /** - * @member Hashes - * @class Hashes.SHA1 - * @param {Object} [config] - * @constructor - * - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined in FIPS 180-1 - * Version 2.2 Copyright Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * See http://pajhome.org.uk/crypt/md5 for details. - */ - SHA1: function (options) { - /** - * Private config properties. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase} - */ - var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase - b64pad = (options && typeof options.pad === 'string') ? options.pad : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance - utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding - - // public methods - this.hex = function (s) { - return rstr2hex(rstr(s, utf8), hexcase); - }; - this.b64 = function (s) { - return rstr2b64(rstr(s, utf8), b64pad); - }; - this.any = function (s, e) { - return rstr2any(rstr(s, utf8), e); - }; - this.raw = function (s) { - return rstr(s, utf8); - }; - this.hex_hmac = function (k, d) { - return rstr2hex(rstr_hmac(k, d)); - }; - this.b64_hmac = function (k, d) { - return rstr2b64(rstr_hmac(k, d), b64pad); - }; - this.any_hmac = function (k, d, e) { - return rstr2any(rstr_hmac(k, d), e); - }; - /** - * Perform a simple self-test to see if the VM is working - * @return {String} Hexadecimal hash sample - * @public - */ - this.vm_test = function () { - return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72'; - }; - /** - * @description Enable/disable uppercase hexadecimal returned string - * @param {boolean} - * @return {Object} this - * @public - */ - this.setUpperCase = function (a) { - if (typeof a === 'boolean') { - hexcase = a; - } - return this; - }; - /** - * @description Defines a base64 pad string - * @param {string} Pad - * @return {Object} this - * @public - */ - this.setPad = function (a) { - b64pad = a || b64pad; - return this; - }; - /** - * @description Defines a base64 pad string - * @param {boolean} - * @return {Object} this - * @public - */ - this.setUTF8 = function (a) { - if (typeof a === 'boolean') { - utf8 = a; - } - return this; - }; - - // private methods - - /** - * Calculate the SHA-512 of a raw string - */ - - function rstr(s) { - s = (utf8) ? utf8Encode(s) : s; - return binb2rstr(binb(rstr2binb(s), s.length * 8)); - } - - /** - * Calculate the HMAC-SHA1 of a key and some data (raw strings) - */ - - function rstr_hmac(key, data) { - var bkey, ipad, opad, i, hash; - key = (utf8) ? utf8Encode(key) : key; - data = (utf8) ? utf8Encode(data) : data; - bkey = rstr2binb(key); - - if (bkey.length > 16) { - bkey = binb(bkey, key.length * 8); - } - ipad = Array(16), opad = Array(16); - for (i = 0; i < 16; i += 1) { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8); - return binb2rstr(binb(opad.concat(hash), 512 + 160)); - } - - /** - * Calculate the SHA-1 of an array of big-endian words, and a bit length - */ - - function binb(x, len) { - var i, j, t, olda, oldb, oldc, oldd, olde, - w = Array(80), - a = 1732584193, - b = -271733879, - c = -1732584194, - d = 271733878, - e = -1009589776; - - /* append padding */ - x[len >> 5] |= 0x80 << (24 - len % 32); - x[((len + 64 >> 9) << 4) + 15] = len; - - for (i = 0; i < x.length; i += 16) { - olda = a; - oldb = b; - oldc = c; - oldd = d; - olde = e; - - for (j = 0; j < 80; j += 1) { - if (j < 16) { - w[j] = x[i + j]; - } else { - w[j] = bit_rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); - } - t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)), - safe_add(safe_add(e, w[j]), sha1_kt(j))); - e = d; - d = c; - c = bit_rol(b, 30); - b = a; - a = t; - } - - a = safe_add(a, olda); - b = safe_add(b, oldb); - c = safe_add(c, oldc); - d = safe_add(d, oldd); - e = safe_add(e, olde); - } - return Array(a, b, c, d, e); - } - - /** - * Perform the appropriate triplet combination function for the current - * iteration - */ - - function sha1_ft(t, b, c, d) { - if (t < 20) { - return (b & c) | ((~b) & d); - } - if (t < 40) { - return b ^ c ^ d; - } - if (t < 60) { - return (b & c) | (b & d) | (c & d); - } - return b ^ c ^ d; - } - - /** - * Determine the appropriate additive constant for the current iteration - */ - - function sha1_kt(t) { - return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : - (t < 60) ? -1894007588 : -899497514; - } - }, - /** - * @class Hashes.SHA256 - * @param {config} - * - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined in FIPS 180-2 - * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * See http://pajhome.org.uk/crypt/md5 for details. - * Also http://anmar.eu.org/projects/jssha2/ - */ - SHA256: function (options) { - /** - * Private properties configuration variables. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - * @see this.setUpperCase() method - * @see this.setPad() method - */ - var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase */ - b64pad = (options && typeof options.pad === 'string') ? options.pad : '=', - /* base-64 pad character. Default '=' for strict RFC compliance */ - utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true, - /* enable/disable utf8 encoding */ - sha256_K; - - /* privileged (public) methods */ - this.hex = function (s) { - return rstr2hex(rstr(s, utf8)); - }; - this.b64 = function (s) { - return rstr2b64(rstr(s, utf8), b64pad); - }; - this.any = function (s, e) { - return rstr2any(rstr(s, utf8), e); - }; - this.raw = function (s) { - return rstr(s, utf8); - }; - this.hex_hmac = function (k, d) { - return rstr2hex(rstr_hmac(k, d)); - }; - this.b64_hmac = function (k, d) { - return rstr2b64(rstr_hmac(k, d), b64pad); - }; - this.any_hmac = function (k, d, e) { - return rstr2any(rstr_hmac(k, d), e); - }; - /** - * Perform a simple self-test to see if the VM is working - * @return {String} Hexadecimal hash sample - * @public - */ - this.vm_test = function () { - return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72'; - }; - /** - * Enable/disable uppercase hexadecimal returned string - * @param {boolean} - * @return {Object} this - * @public - */ - this.setUpperCase = function (a) { - if (typeof a === 'boolean') { - hexcase = a; - } - return this; - }; - /** - * @description Defines a base64 pad string - * @param {string} Pad - * @return {Object} this - * @public - */ - this.setPad = function (a) { - b64pad = a || b64pad; - return this; - }; - /** - * Defines a base64 pad string - * @param {boolean} - * @return {Object} this - * @public - */ - this.setUTF8 = function (a) { - if (typeof a === 'boolean') { - utf8 = a; - } - return this; - }; - - // private methods - - /** - * Calculate the SHA-512 of a raw string - */ - - function rstr(s, utf8) { - s = (utf8) ? utf8Encode(s) : s; - return binb2rstr(binb(rstr2binb(s), s.length * 8)); - } - - /** - * Calculate the HMAC-sha256 of a key and some data (raw strings) - */ - - function rstr_hmac(key, data) { - key = (utf8) ? utf8Encode(key) : key; - data = (utf8) ? utf8Encode(data) : data; - var hash, i = 0, - bkey = rstr2binb(key), - ipad = Array(16), - opad = Array(16); - - if (bkey.length > 16) { - bkey = binb(bkey, key.length * 8); - } - - for (; i < 16; i += 1) { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - - hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8); - return binb2rstr(binb(opad.concat(hash), 512 + 256)); - } - - /* - * Main sha256 function, with its support functions - */ - - function sha256_S(X, n) { - return (X >>> n) | (X << (32 - n)); - } - - function sha256_R(X, n) { - return (X >>> n); - } - - function sha256_Ch(x, y, z) { - return ((x & y) ^ ((~x) & z)); - } - - function sha256_Maj(x, y, z) { - return ((x & y) ^ (x & z) ^ (y & z)); - } - - function sha256_Sigma0256(x) { - return (sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22)); - } - - function sha256_Sigma1256(x) { - return (sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25)); - } - - function sha256_Gamma0256(x) { - return (sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3)); - } - - function sha256_Gamma1256(x) { - return (sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10)); - } - - function sha256_Sigma0512(x) { - return (sha256_S(x, 28) ^ sha256_S(x, 34) ^ sha256_S(x, 39)); - } - - function sha256_Sigma1512(x) { - return (sha256_S(x, 14) ^ sha256_S(x, 18) ^ sha256_S(x, 41)); - } - - function sha256_Gamma0512(x) { - return (sha256_S(x, 1) ^ sha256_S(x, 8) ^ sha256_R(x, 7)); - } - - function sha256_Gamma1512(x) { - return (sha256_S(x, 19) ^ sha256_S(x, 61) ^ sha256_R(x, 6)); - } - - sha256_K = [ - 1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993, -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987, - 1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522, - 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585, - 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, - 1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885, -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344, - 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, - 1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872, -1866530822, -1538233109, -1090935817, -965641998 - ]; - - function binb(m, l) { - var HASH = [1779033703, -1150833019, 1013904242, -1521486534, - 1359893119, -1694144372, 528734635, 1541459225 - ]; - var W = new Array(64); - var a, b, c, d, e, f, g, h; - var i, j, T1, T2; - - /* append padding */ - m[l >> 5] |= 0x80 << (24 - l % 32); - m[((l + 64 >> 9) << 4) + 15] = l; - - for (i = 0; i < m.length; i += 16) { - a = HASH[0]; - b = HASH[1]; - c = HASH[2]; - d = HASH[3]; - e = HASH[4]; - f = HASH[5]; - g = HASH[6]; - h = HASH[7]; - - for (j = 0; j < 64; j += 1) { - if (j < 16) { - W[j] = m[j + i]; - } else { - W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]), - sha256_Gamma0256(W[j - 15])), W[j - 16]); - } - - T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)), - sha256_K[j]), W[j]); - T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c)); - h = g; - g = f; - f = e; - e = safe_add(d, T1); - d = c; - c = b; - b = a; - a = safe_add(T1, T2); - } - - HASH[0] = safe_add(a, HASH[0]); - HASH[1] = safe_add(b, HASH[1]); - HASH[2] = safe_add(c, HASH[2]); - HASH[3] = safe_add(d, HASH[3]); - HASH[4] = safe_add(e, HASH[4]); - HASH[5] = safe_add(f, HASH[5]); - HASH[6] = safe_add(g, HASH[6]); - HASH[7] = safe_add(h, HASH[7]); - } - return HASH; - } - - }, - - /** - * @class Hashes.SHA512 - * @param {config} - * - * A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined in FIPS 180-2 - * Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * See http://pajhome.org.uk/crypt/md5 for details. - */ - SHA512: function (options) { - /** - * Private properties configuration variables. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - * @see this.setUpperCase() method - * @see this.setPad() method - */ - var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, - /* hexadecimal output case format. false - lowercase; true - uppercase */ - b64pad = (options && typeof options.pad === 'string') ? options.pad : '=', - /* base-64 pad character. Default '=' for strict RFC compliance */ - utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true, - /* enable/disable utf8 encoding */ - sha512_k; - - /* privileged (public) methods */ - this.hex = function (s) { - return rstr2hex(rstr(s)); - }; - this.b64 = function (s) { - return rstr2b64(rstr(s), b64pad); - }; - this.any = function (s, e) { - return rstr2any(rstr(s), e); - }; - this.raw = function (s) { - return rstr(s, utf8); - }; - this.hex_hmac = function (k, d) { - return rstr2hex(rstr_hmac(k, d)); - }; - this.b64_hmac = function (k, d) { - return rstr2b64(rstr_hmac(k, d), b64pad); - }; - this.any_hmac = function (k, d, e) { - return rstr2any(rstr_hmac(k, d), e); - }; - /** - * Perform a simple self-test to see if the VM is working - * @return {String} Hexadecimal hash sample - * @public - */ - this.vm_test = function () { - return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72'; - }; - /** - * @description Enable/disable uppercase hexadecimal returned string - * @param {boolean} - * @return {Object} this - * @public - */ - this.setUpperCase = function (a) { - if (typeof a === 'boolean') { - hexcase = a; - } - return this; - }; - /** - * @description Defines a base64 pad string - * @param {string} Pad - * @return {Object} this - * @public - */ - this.setPad = function (a) { - b64pad = a || b64pad; - return this; - }; - /** - * @description Defines a base64 pad string - * @param {boolean} - * @return {Object} this - * @public - */ - this.setUTF8 = function (a) { - if (typeof a === 'boolean') { - utf8 = a; - } - return this; - }; - - /* private methods */ - - /** - * Calculate the SHA-512 of a raw string - */ - - function rstr(s) { - s = (utf8) ? utf8Encode(s) : s; - return binb2rstr(binb(rstr2binb(s), s.length * 8)); - } - /* - * Calculate the HMAC-SHA-512 of a key and some data (raw strings) - */ - - function rstr_hmac(key, data) { - key = (utf8) ? utf8Encode(key) : key; - data = (utf8) ? utf8Encode(data) : data; - - var hash, i = 0, - bkey = rstr2binb(key), - ipad = Array(32), - opad = Array(32); - - if (bkey.length > 32) { - bkey = binb(bkey, key.length * 8); - } - - for (; i < 32; i += 1) { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - - hash = binb(ipad.concat(rstr2binb(data)), 1024 + data.length * 8); - return binb2rstr(binb(opad.concat(hash), 1024 + 512)); - } - - /** - * Calculate the SHA-512 of an array of big-endian dwords, and a bit length - */ - - function binb(x, len) { - var j, i, l, - W = new Array(80), - hash = new Array(16), - //Initial hash values - H = [ - new int64(0x6a09e667, -205731576), - new int64(-1150833019, -2067093701), - new int64(0x3c6ef372, -23791573), - new int64(-1521486534, 0x5f1d36f1), - new int64(0x510e527f, -1377402159), - new int64(-1694144372, 0x2b3e6c1f), - new int64(0x1f83d9ab, -79577749), - new int64(0x5be0cd19, 0x137e2179) - ], - T1 = new int64(0, 0), - T2 = new int64(0, 0), - a = new int64(0, 0), - b = new int64(0, 0), - c = new int64(0, 0), - d = new int64(0, 0), - e = new int64(0, 0), - f = new int64(0, 0), - g = new int64(0, 0), - h = new int64(0, 0), - //Temporary variables not specified by the document - s0 = new int64(0, 0), - s1 = new int64(0, 0), - Ch = new int64(0, 0), - Maj = new int64(0, 0), - r1 = new int64(0, 0), - r2 = new int64(0, 0), - r3 = new int64(0, 0); - - if (sha512_k === undefined) { - //SHA512 constants - sha512_k = [ - new int64(0x428a2f98, -685199838), new int64(0x71374491, 0x23ef65cd), - new int64(-1245643825, -330482897), new int64(-373957723, -2121671748), - new int64(0x3956c25b, -213338824), new int64(0x59f111f1, -1241133031), - new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736), - new int64(-670586216, -1560083902), new int64(0x12835b01, 0x45706fbe), - new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, -704662302), - new int64(0x72be5d74, -226784913), new int64(-2132889090, 0x3b1696b1), - new int64(-1680079193, 0x25c71235), new int64(-1046744716, -815192428), - new int64(-459576895, -1628353838), new int64(-272742522, 0x384f25e3), - new int64(0xfc19dc6, -1953704523), new int64(0x240ca1cc, 0x77ac9c65), - new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483), - new int64(0x5cb0a9dc, -1119749164), new int64(0x76f988da, -2096016459), - new int64(-1740746414, -295247957), new int64(-1473132947, 0x2db43210), - new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340), - new int64(-958395405, 0x3da88fc2), new int64(-710438585, -1828018395), - new int64(0x6ca6351, -536640913), new int64(0x14292967, 0xa0e6e70), - new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926), - new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, -1651133473), - new int64(0x650a7354, -1951439906), new int64(0x766a0abb, 0x3c77b2a8), - new int64(-2117940946, 0x47edaee6), new int64(-1838011259, 0x1482353b), - new int64(-1564481375, 0x4cf10364), new int64(-1474664885, -1136513023), - new int64(-1035236496, -789014639), new int64(-949202525, 0x654be30), - new int64(-778901479, -688958952), new int64(-694614492, 0x5565a910), - new int64(-200395387, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8), - new int64(0x19a4c116, -1194143544), new int64(0x1e376c08, 0x5141ab53), - new int64(0x2748774c, -544281703), new int64(0x34b0bcb5, -509917016), - new int64(0x391c0cb3, -976659869), new int64(0x4ed8aa4a, -482243893), - new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, -692930397), - new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60), - new int64(-2067236844, -1578062990), new int64(-1933114872, 0x1a6439ec), - new int64(-1866530822, 0x23631e28), new int64(-1538233109, -561857047), - new int64(-1090935817, -1295615723), new int64(-965641998, -479046869), - new int64(-903397682, -366583396), new int64(-779700025, 0x21c0c207), - new int64(-354779690, -840897762), new int64(-176337025, -294727304), - new int64(0x6f067aa, 0x72176fba), new int64(0xa637dc5, -1563912026), - new int64(0x113f9804, -1090974290), new int64(0x1b710b35, 0x131c471b), - new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493), - new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, -1676669620), - new int64(0x4cc5d4be, -885112138), new int64(0x597f299c, -60457430), - new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817) - ]; - } - - for (i = 0; i < 80; i += 1) { - W[i] = new int64(0, 0); - } - - // append padding to the source string. The format is described in the FIPS. - x[len >> 5] |= 0x80 << (24 - (len & 0x1f)); - x[((len + 128 >> 10) << 5) + 31] = len; - l = x.length; - for (i = 0; i < l; i += 32) { //32 dwords is the block size - int64copy(a, H[0]); - int64copy(b, H[1]); - int64copy(c, H[2]); - int64copy(d, H[3]); - int64copy(e, H[4]); - int64copy(f, H[5]); - int64copy(g, H[6]); - int64copy(h, H[7]); - - for (j = 0; j < 16; j += 1) { - W[j].h = x[i + 2 * j]; - W[j].l = x[i + 2 * j + 1]; - } - - for (j = 16; j < 80; j += 1) { - //sigma1 - int64rrot(r1, W[j - 2], 19); - int64revrrot(r2, W[j - 2], 29); - int64shr(r3, W[j - 2], 6); - s1.l = r1.l ^ r2.l ^ r3.l; - s1.h = r1.h ^ r2.h ^ r3.h; - //sigma0 - int64rrot(r1, W[j - 15], 1); - int64rrot(r2, W[j - 15], 8); - int64shr(r3, W[j - 15], 7); - s0.l = r1.l ^ r2.l ^ r3.l; - s0.h = r1.h ^ r2.h ^ r3.h; - - int64add4(W[j], s1, W[j - 7], s0, W[j - 16]); - } - - for (j = 0; j < 80; j += 1) { - //Ch - Ch.l = (e.l & f.l) ^ (~e.l & g.l); - Ch.h = (e.h & f.h) ^ (~e.h & g.h); - - //Sigma1 - int64rrot(r1, e, 14); - int64rrot(r2, e, 18); - int64revrrot(r3, e, 9); - s1.l = r1.l ^ r2.l ^ r3.l; - s1.h = r1.h ^ r2.h ^ r3.h; - - //Sigma0 - int64rrot(r1, a, 28); - int64revrrot(r2, a, 2); - int64revrrot(r3, a, 7); - s0.l = r1.l ^ r2.l ^ r3.l; - s0.h = r1.h ^ r2.h ^ r3.h; - - //Maj - Maj.l = (a.l & b.l) ^ (a.l & c.l) ^ (b.l & c.l); - Maj.h = (a.h & b.h) ^ (a.h & c.h) ^ (b.h & c.h); - - int64add5(T1, h, s1, Ch, sha512_k[j], W[j]); - int64add(T2, s0, Maj); - - int64copy(h, g); - int64copy(g, f); - int64copy(f, e); - int64add(e, d, T1); - int64copy(d, c); - int64copy(c, b); - int64copy(b, a); - int64add(a, T1, T2); - } - int64add(H[0], H[0], a); - int64add(H[1], H[1], b); - int64add(H[2], H[2], c); - int64add(H[3], H[3], d); - int64add(H[4], H[4], e); - int64add(H[5], H[5], f); - int64add(H[6], H[6], g); - int64add(H[7], H[7], h); - } - - //represent the hash as an array of 32-bit dwords - for (i = 0; i < 8; i += 1) { - hash[2 * i] = H[i].h; - hash[2 * i + 1] = H[i].l; - } - return hash; - } - - //A constructor for 64-bit numbers - - function int64(h, l) { - this.h = h; - this.l = l; - //this.toString = int64toString; - } - - //Copies src into dst, assuming both are 64-bit numbers - - function int64copy(dst, src) { - dst.h = src.h; - dst.l = src.l; - } - - //Right-rotates a 64-bit number by shift - //Won't handle cases of shift>=32 - //The function revrrot() is for that - - function int64rrot(dst, x, shift) { - dst.l = (x.l >>> shift) | (x.h << (32 - shift)); - dst.h = (x.h >>> shift) | (x.l << (32 - shift)); - } - - //Reverses the dwords of the source and then rotates right by shift. - //This is equivalent to rotation by 32+shift - - function int64revrrot(dst, x, shift) { - dst.l = (x.h >>> shift) | (x.l << (32 - shift)); - dst.h = (x.l >>> shift) | (x.h << (32 - shift)); - } - - //Bitwise-shifts right a 64-bit number by shift - //Won't handle shift>=32, but it's never needed in SHA512 - - function int64shr(dst, x, shift) { - dst.l = (x.l >>> shift) | (x.h << (32 - shift)); - dst.h = (x.h >>> shift); - } - - //Adds two 64-bit numbers - //Like the original implementation, does not rely on 32-bit operations - - function int64add(dst, x, y) { - var w0 = (x.l & 0xffff) + (y.l & 0xffff); - var w1 = (x.l >>> 16) + (y.l >>> 16) + (w0 >>> 16); - var w2 = (x.h & 0xffff) + (y.h & 0xffff) + (w1 >>> 16); - var w3 = (x.h >>> 16) + (y.h >>> 16) + (w2 >>> 16); - dst.l = (w0 & 0xffff) | (w1 << 16); - dst.h = (w2 & 0xffff) | (w3 << 16); - } - - //Same, except with 4 addends. Works faster than adding them one by one. - - function int64add4(dst, a, b, c, d) { - var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff); - var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (w0 >>> 16); - var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (w1 >>> 16); - var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (w2 >>> 16); - dst.l = (w0 & 0xffff) | (w1 << 16); - dst.h = (w2 & 0xffff) | (w3 << 16); - } - - //Same, except with 5 addends - - function int64add5(dst, a, b, c, d, e) { - var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff) + (e.l & 0xffff), - w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (e.l >>> 16) + (w0 >>> 16), - w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (e.h & 0xffff) + (w1 >>> 16), - w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (e.h >>> 16) + (w2 >>> 16); - dst.l = (w0 & 0xffff) | (w1 << 16); - dst.h = (w2 & 0xffff) | (w3 << 16); - } - }, - /** - * @class Hashes.RMD160 - * @constructor - * @param {Object} [config] - * - * A JavaScript implementation of the RIPEMD-160 Algorithm - * Version 2.2 Copyright Jeremy Lin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * See http://pajhome.org.uk/crypt/md5 for details. - * Also http://www.ocf.berkeley.edu/~jjlin/jsotp/ - */ - RMD160: function (options) { - /** - * Private properties configuration variables. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - * @see this.setUpperCase() method - * @see this.setPad() method - */ - var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, - /* hexadecimal output case format. false - lowercase; true - uppercase */ - b64pad = (options && typeof options.pad === 'string') ? options.pa : '=', - /* base-64 pad character. Default '=' for strict RFC compliance */ - utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true, - /* enable/disable utf8 encoding */ - rmd160_r1 = [ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, - 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, - 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, - 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 - ], - rmd160_r2 = [ - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, - 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, - 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, - 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, - 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 - ], - rmd160_s1 = [ - 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, - 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, - 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 - ], - rmd160_s2 = [ - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, - 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, - 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 - ]; - - /* privileged (public) methods */ - this.hex = function (s) { - return rstr2hex(rstr(s, utf8)); - }; - this.b64 = function (s) { - return rstr2b64(rstr(s, utf8), b64pad); - }; - this.any = function (s, e) { - return rstr2any(rstr(s, utf8), e); - }; - this.raw = function (s) { - return rstr(s, utf8); - }; - this.hex_hmac = function (k, d) { - return rstr2hex(rstr_hmac(k, d)); - }; - this.b64_hmac = function (k, d) { - return rstr2b64(rstr_hmac(k, d), b64pad); - }; - this.any_hmac = function (k, d, e) { - return rstr2any(rstr_hmac(k, d), e); - }; - /** - * Perform a simple self-test to see if the VM is working - * @return {String} Hexadecimal hash sample - * @public - */ - this.vm_test = function () { - return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72'; - }; - /** - * @description Enable/disable uppercase hexadecimal returned string - * @param {boolean} - * @return {Object} this - * @public - */ - this.setUpperCase = function (a) { - if (typeof a === 'boolean') { - hexcase = a; - } - return this; - }; - /** - * @description Defines a base64 pad string - * @param {string} Pad - * @return {Object} this - * @public - */ - this.setPad = function (a) { - if (typeof a !== 'undefined') { - b64pad = a; - } - return this; - }; - /** - * @description Defines a base64 pad string - * @param {boolean} - * @return {Object} this - * @public - */ - this.setUTF8 = function (a) { - if (typeof a === 'boolean') { - utf8 = a; - } - return this; - }; - - /* private methods */ - - /** - * Calculate the rmd160 of a raw string - */ - - function rstr(s) { - s = (utf8) ? utf8Encode(s) : s; - return binl2rstr(binl(rstr2binl(s), s.length * 8)); - } - - /** - * Calculate the HMAC-rmd160 of a key and some data (raw strings) - */ - - function rstr_hmac(key, data) { - key = (utf8) ? utf8Encode(key) : key; - data = (utf8) ? utf8Encode(data) : data; - var i, hash, - bkey = rstr2binl(key), - ipad = Array(16), - opad = Array(16); - - if (bkey.length > 16) { - bkey = binl(bkey, key.length * 8); - } - - for (i = 0; i < 16; i += 1) { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8); - return binl2rstr(binl(opad.concat(hash), 512 + 160)); - } - - /** - * Convert an array of little-endian words to a string - */ - - function binl2rstr(input) { - var i, output = '', - l = input.length * 32; - for (i = 0; i < l; i += 8) { - output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF); - } - return output; - } - - /** - * Calculate the RIPE-MD160 of an array of little-endian words, and a bit length. - */ - - function binl(x, len) { - var T, j, i, l, - h0 = 0x67452301, - h1 = 0xefcdab89, - h2 = 0x98badcfe, - h3 = 0x10325476, - h4 = 0xc3d2e1f0, - A1, B1, C1, D1, E1, - A2, B2, C2, D2, E2; - - /* append padding */ - x[len >> 5] |= 0x80 << (len % 32); - x[(((len + 64) >>> 9) << 4) + 14] = len; - l = x.length; - - for (i = 0; i < l; i += 16) { - A1 = A2 = h0; - B1 = B2 = h1; - C1 = C2 = h2; - D1 = D2 = h3; - E1 = E2 = h4; - for (j = 0; j <= 79; j += 1) { - T = safe_add(A1, rmd160_f(j, B1, C1, D1)); - T = safe_add(T, x[i + rmd160_r1[j]]); - T = safe_add(T, rmd160_K1(j)); - T = safe_add(bit_rol(T, rmd160_s1[j]), E1); - A1 = E1; - E1 = D1; - D1 = bit_rol(C1, 10); - C1 = B1; - B1 = T; - T = safe_add(A2, rmd160_f(79 - j, B2, C2, D2)); - T = safe_add(T, x[i + rmd160_r2[j]]); - T = safe_add(T, rmd160_K2(j)); - T = safe_add(bit_rol(T, rmd160_s2[j]), E2); - A2 = E2; - E2 = D2; - D2 = bit_rol(C2, 10); - C2 = B2; - B2 = T; - } - - T = safe_add(h1, safe_add(C1, D2)); - h1 = safe_add(h2, safe_add(D1, E2)); - h2 = safe_add(h3, safe_add(E1, A2)); - h3 = safe_add(h4, safe_add(A1, B2)); - h4 = safe_add(h0, safe_add(B1, C2)); - h0 = T; - } - return [h0, h1, h2, h3, h4]; - } - - // specific algorithm methods - - function rmd160_f(j, x, y, z) { - return (0 <= j && j <= 15) ? (x ^ y ^ z) : - (16 <= j && j <= 31) ? (x & y) | (~x & z) : - (32 <= j && j <= 47) ? (x | ~y) ^ z : - (48 <= j && j <= 63) ? (x & z) | (y & ~z) : - (64 <= j && j <= 79) ? x ^ (y | ~z) : - 'rmd160_f: j out of range'; - } - - function rmd160_K1(j) { - return (0 <= j && j <= 15) ? 0x00000000 : - (16 <= j && j <= 31) ? 0x5a827999 : - (32 <= j && j <= 47) ? 0x6ed9eba1 : - (48 <= j && j <= 63) ? 0x8f1bbcdc : - (64 <= j && j <= 79) ? 0xa953fd4e : - 'rmd160_K1: j out of range'; - } - - function rmd160_K2(j) { - return (0 <= j && j <= 15) ? 0x50a28be6 : - (16 <= j && j <= 31) ? 0x5c4dd124 : - (32 <= j && j <= 47) ? 0x6d703ef3 : - (48 <= j && j <= 63) ? 0x7a6d76e9 : - (64 <= j && j <= 79) ? 0x00000000 : - 'rmd160_K2: j out of range'; - } - } - }; - - // new MD5 instance - var MD5 = new pearHash.MD5 - // new SHA1 instance - var SHA1 = new pearHash.SHA1 - // new SHA256 instance - var SHA256 = new pearHash.SHA256 - // new SHA512 instace - var SHA512 = new pearHash.SHA512 - // new RIPEMD-160 instace - var RMD160 = new pearHash.RMD160 - var Base64 = new pearHash.Base64 - - pearHash.md5 = function (str) { - return MD5.hex(str); - } - pearHash.sha1 = function (str) { - return SHA1.hex(str); - } - pearHash.sha256 = function (str) { - return SHA256.hex(str); - } - pearHash.sha512 = function (str) { - return SHA512.hex(str); - } - pearHash.crc32 = pearHash.CRC32; - pearHash.rmd160 = function (str) { - return RMD160.hex(str); - } - pearHash.Base64Encode = function (str) { - return Base64.encode(str); - } - pearHash.Base64Decode = function (str) { - return Base64.decode(str); - } - exports('encrypt', pearHash); -}); \ No newline at end of file diff --git a/component/pear/module/http.js b/component/pear/module/http.js deleted file mode 100644 index e1b1993..0000000 --- a/component/pear/module/http.js +++ /dev/null @@ -1,181 +0,0 @@ -layui.define(['jquery', 'layer'], function (exports) { - "use strict"; - - var $ = layui.jquery; - var layer = layui.layer; - - var http = {}; - http.ajax = function (userOptions) { - userOptions = userOptions || {}; - - var options = $.extend(true, {}, http.ajax.defaultOpts, userOptions); - var oldBeforeSendOption = options.beforeSend; - options.beforeSend = function (xhr) { - if (oldBeforeSendOption) { - oldBeforeSendOption(xhr); - } - - xhr.setRequestHeader("Pragma", "no-cache"); - xhr.setRequestHeader("Cache-Control", "no-cache"); - xhr.setRequestHeader("Expires", "Sat, 01 Jan 2000 00:00:00 GMT"); - }; - - options.success = undefined; - options.error = undefined; - - return $.Deferred(function ($dfd) { - $.ajax(options) - .done(function (data, textStatus, jqXHR) { - $dfd.resolve(data); - userOptions.success && userOptions.success(data); - }) - .fail(function (jqXHR) { - http.ajax.handleErrorResponse(jqXHR, userOptions, $dfd); - }); - }); - } - - $.extend(http.ajax, { - defaultOpts: { - dataType: 'json', - type: 'POST', - contentType: 'application/json', - headers: { - 'X-Requested-With': 'XMLHttpRequest' - }, - customHandleError: true - }, - - defaultError: { - message: 'An error has occurred!', - details: 'Error detail not sent by server.' - }, - - defaultError401: { - message: 'You are not authenticated!', - details: 'You should be authenticated (sign in) in order to perform this operation.' - }, - - defaultError403: { - message: 'You are not authorized!', - details: 'You are not allowed to perform this operation.' - }, - - defaultError404: { - message: 'Resource not found!', - details: 'The resource requested could not found on the server.' - }, - - logError: function (error) { - console.log(error); - }, - - showError: function (error) { - if (error.details) { - return layer.alert(error.details, { - title: error.message, - icon: 2, - closeBtn: 0 - }); - } else { - return layer.alert(http.ajax.defaultError.details, { - title: error.message || http.ajax.defaultError.message, - icon: 2, - closeBtn: 0 - }); - } - }, - - showErrorAndRedirectUrl: function (error, targetUrl) { - if (error.details) { - return layer.alert(error.details, { - title: error.message, - icon: 2, - closeBtn: 0, - end: http.ajax.handleTargetUrl(targetUrl) - }); - } else { - return layer.alert(http.ajax.defaultError.details, { - title: error.message || http.ajax.defaultError.message, - icon: 2, - closeBtn: 0, - end: http.ajax.handleTargetUrl(targetUrl) - }); - } - }, - - handleTargetUrl: function (targetUrl) { - if (!targetUrl) { - location.href = http.appPath; - } else { - location.href = targetUrl; - } - }, - - handleErrorResponse: function (jqXHR, userOptions, $dfd) { - if (!userOptions.customHandleError) { - switch (jqXHR.status) { - case 401: - http.ajax.showErrorAndRedirectUrl(http.ajax.defaultError401, http.appPath); - break; - case 403: - http.ajax.showError(http.ajax.defaultError403); - break; - case 404: - http.ajax.showError(http.ajax.defaultError404); - break; - default: - http.ajax.showError(http.ajax.defaultError); - break; - } - } - - $dfd.reject.apply(this, arguments); - userOptions.error && userOptions.error.apply(this, arguments); - }, - - ajaxSendHandler: function (event, request, settings) { - var token = http.ajax.getToken(); - if (!token) { - return; - } - - if (!settings.headers || settings.headers[http.ajax.tokenHeaderName] === undefined) { - request.setRequestHeader(http.ajax.tokenHeaderName, token); - } - }, - - getToken: function () { - return http.ajax.getCookieValue(http.ajax.tokenCookieName); - }, - - tokenCookieName: 'XSRF-TOKEN', - tokenHeaderName: 'X-XSRF-TOKEN', - - getCookieValue: function (key) { - var equalities = document.cookie.split('; '); - for (var i = 0; i < equalities.length; i++) { - if (!equalities[i]) { - continue; - } - - var splitted = equalities[i].split('='); - if (splitted.length != 2) { - continue; - } - - if (decodeURIComponent(splitted[0]) === key) { - return decodeURIComponent(splitted[1] || ''); - } - } - - return null; - } - }); - - $(document).ajaxSend(function (event, request, settings) { - return http.ajax.ajaxSendHandler(event, request, settings); - }); - - exports('http', http); -}); \ No newline at end of file diff --git a/component/pear/module/iconPicker.js b/component/pear/module/iconPicker.js deleted file mode 100644 index 8d13e28..0000000 --- a/component/pear/module/iconPicker.js +++ /dev/null @@ -1,525 +0,0 @@ -layui.define(['laypage', 'form'], function(exports) { - "use strict"; - - var IconPicker = function() { - this.v = '1.1'; - }, - _MOD = 'iconPicker', - _this = this, - $ = layui.jquery, - laypage = layui.laypage, - form = layui.form, - BODY = 'body', - TIPS = '请选择图标'; - - /** - * 渲染组件 - */ - IconPicker.prototype.render = function(options) { - var opts = options, - // DOM选择器 - elem = opts.elem, - // 数据类型:fontClass/unicode - type = opts.type == null ? 'fontClass' : opts.type, - // 是否分页:true/false - page = opts.page == null ? true : opts.page, - // 每页显示数量 - limit = opts.limit == null ? 12 : opts.limit, - // 是否开启搜索:true/false - search = opts.search == null ? true : opts.search, - // 每个图标格子的宽度:'43px'或'20%' - cellWidth = opts.cellWidth, - // 点击回调 - click = opts.click, - // 渲染成功后的回调 - success = opts.success, - // 前缀 默认使用 layui-icon - ICON_prefix = opts.prefix == null ? "layui-icon" : opts.prefix, - // 异步获取外部字体图标数据 - ICON_url = opts.url , - // json数据 - data = {}, - // 唯一标识 - tmp = new Date().getTime(), - // 是否使用的class数据 - isFontClass = opts.type === 'fontClass', - // 是否使用自定义图标数据 - isCustom = opts.url !=null && opts.prefix != null, - - // 初始化时input的值 - ORIGINAL_ELEM_VALUE = $(elem).val(), - TITLE = 'layui-select-title', - TITLE_ID = 'layui-select-title-' + tmp, - ICON_BODY = 'layui-iconpicker-' + tmp, - PICKER_BODY = 'layui-iconpicker-body-' + tmp, - PAGE_ID = 'layui-iconpicker-page-' + tmp, - LIST_BOX = 'layui-iconpicker-list-box', - selected = 'layui-form-selected', - unselect = 'layui-unselect'; - - var a = { - init: function() { - if(isCustom) - { - data = common.ajaxData(ICON_url,ICON_prefix); - }else{ - data = common.getData[type](); - } - a.hideElem().createSelect().createBody().toggleSelect(); - a.preventEvent().inputListen(); - common.loadCss(); - - if (success) { - success(this.successHandle()); - } - - return a; - }, - successHandle: function() { - var d = { - options: opts, - data: data, - id: tmp, - elem: $('#' + ICON_BODY) - }; - return d; - }, - /** - * 隐藏elem - */ - hideElem: function() { - $(elem).hide(); - return a; - }, - /** - * 绘制select下拉选择框 - */ - createSelect: function() { - var oriIcon = ''; - - // 默认图标 - if (ORIGINAL_ELEM_VALUE === '') { - if (isFontClass) { - ORIGINAL_ELEM_VALUE = 'layui-icon-circle-dot'; - } else { - ORIGINAL_ELEM_VALUE = ''; - } - } - - if (isFontClass || isCustom) { - oriIcon = ''; - } else { - oriIcon += ORIGINAL_ELEM_VALUE; - } - oriIcon += ''; - - var selectHtml = - '
                                      ' + - '
                                      ' + - '
                                      ' + - '' + - oriIcon + - '' + - '' + - '
                                      ' + - '
                                      ' + - '
                                      ' + - '123' + - '
                                      '; - $(elem).after(selectHtml); - return a; - }, - /** - * 展开/折叠下拉框 - */ - toggleSelect: function() { - var item = '#' + TITLE_ID + ' .layui-iconpicker-item,#' + TITLE_ID + - ' .layui-iconpicker-item .layui-edge'; - a.event('click', item, function(e) { - var $icon = $('#' + ICON_BODY); - if ($icon.hasClass(selected)) { - $icon.removeClass(selected).addClass(unselect); - } else { - // 隐藏其他picker - $('.layui-form-select').removeClass(selected); - // 显示当前picker - $icon.addClass(selected).removeClass(unselect); - } - e.stopPropagation(); - }); - return a; - }, - /** - * 绘制主体部分 - */ - createBody: function() { - // 获取数据 - var searchHtml = ''; - - if (search) { - searchHtml = ''; - } - - // 组合dom - var bodyHtml = '
                                      ' + - searchHtml + - '
                                      ' + - '
                                      '; - $('#' + ICON_BODY).find('.layui-anim').eq(0).html(bodyHtml); - a.search().createList().check().page(); - - return a; - }, - /** - * 绘制图标列表 - * @param text 模糊查询关键字 - * @returns {string} - */ - createList: function(text) { - var d = data, - l = d.length, - pageHtml = '', - listHtml = $( - '
                                      ') //'
                                      '; - - // 计算分页数据 - var _limit = limit, // 每页显示数量 - _pages = l % _limit === 0 ? l / _limit : parseInt(l / _limit + 1), // 总计多少页 - _id = PAGE_ID; - - // 图标列表 - var icons = []; - - for (var i = 0; i < l; i++) { - var obj = d[i]; - - // 判断是否模糊查询 - if (text && obj.indexOf(text) === -1) { - continue; - } - - // 是否自定义格子宽度 - var style = ''; - if (cellWidth !== null) { - style += ' style="width:' + cellWidth + '"'; - } - - // 每个图标dom - var icon = '
                                      '; - if (isFontClass || isCustom) - { - icon += ''; - }else{ - icon += '' + obj.replace('amp;', '') + ''; - } - icon += '
                                      '; - - icons.push(icon); - } - - // 查询出图标后再分页 - l = icons.length; - _pages = l % _limit === 0 ? l / _limit : parseInt(l / _limit + 1); - for (var i = 0; i < _pages; i++) { - // 按limit分块 - var lm = $( - '
                                      '); - - for (var j = i * _limit; j < (i + 1) * _limit && j < l; j++) { - lm.append(icons[j]); - } - - listHtml.append(lm); - } - - // 无数据 - if (l === 0) { - listHtml.append('

                                      无数据

                                      '); - } - - // 判断是否分页 - if (page) { - $('#' + PICKER_BODY).addClass('layui-iconpicker-body-page'); - pageHtml = '
                                      ' + - '
                                      ' + - '1/' + - '' + _pages + '' + - ' (' + l + ')' + - '
                                      ' + - '
                                      ' + - ' ' + - ' ' + - '
                                      ' + - '
                                      '; - } - - - $('#' + ICON_BODY).find('.layui-anim').find('.' + LIST_BOX).html('').append( - listHtml).append(pageHtml); - return a; - }, - // 阻止Layui的一些默认事件 - preventEvent: function() { - var item = '#' + ICON_BODY + ' .layui-anim'; - a.event('click', item, function(e) { - e.stopPropagation(); - }); - return a; - }, - // 分页 - page: function() { - var icon = '#' + PAGE_ID + ' .layui-iconpicker-page-operate .layui-icon'; - - $(icon).unbind('click'); - a.event('click', icon, function(e) { - var elem = e.currentTarget, - total = parseInt($('#' + PAGE_ID + '-pages').html()), - isPrev = $(elem).attr('prev') !== undefined, - // 按钮上标的页码 - index = parseInt($(elem).attr('data-index')), - $cur = $('#' + PAGE_ID + '-current'), - // 点击时正在显示的页码 - current = parseInt($cur.html()); - - // 分页数据 - if (isPrev && current > 1) { - current = current - 1; - $(icon + '[prev]').attr('data-index', current); - } else if (!isPrev && current < total) { - current = current + 1; - $(icon + '[next]').attr('data-index', current); - } - $cur.html(current); - - // 图标数据 - $('#' + ICON_BODY + ' .layui-iconpicker-icon-limit').hide(); - $('#layui-iconpicker-icon-limit-' + tmp + current).show(); - e.stopPropagation(); - }); - return a; - }, - /** - * 搜索 - */ - search: function() { - var item = '#' + PICKER_BODY + ' .layui-iconpicker-search .layui-input'; - a.event('input propertychange', item, function(e) { - var elem = e.target, - t = $(elem).val(); - a.createList(t); - }); - return a; - }, - /** - * 点击选中图标 - */ - check: function() { - var item = '#' + PICKER_BODY + ' .layui-iconpicker-icon-item'; - a.event('click', item, function(e) { - var el = $(e.currentTarget).find('.' + ICON_prefix), - icon = ''; - console.log( el.attr('class')); - if (isFontClass || isCustom) { - var clsArr = el.attr('class').split(/[\s\n]/), - cls = clsArr[1], - icon = cls; - $('#' + TITLE_ID).find('.layui-iconpicker-item .' + ICON_prefix).html( - '').attr('class', clsArr.join(' ')); - } else { - var cls = el.html(), - icon = cls; - $('#' + TITLE_ID).find('.layui-iconpicker-item .layui-icon').html( - icon); - } - - $('#' + ICON_BODY).removeClass(selected).addClass(unselect); - $(elem).val(icon).attr('value', icon); - // 回调 - if (click) { - click({ - icon: icon - }); - } - - }); - return a; - }, - // 监听原始input数值改变 - inputListen: function() { - var el = $(elem); - a.event('change', elem, function() { - var value = el.val(); - }) - // el.change(function(){ - - // }); - return a; - }, - event: function(evt, el, fn) { - $(BODY).on(evt, el, fn); - } - }; - var common = { - /** - * 加载样式表 - */ - loadCss: function() { - var css = - '.layui-iconpicker {max-width: 280px;}.layui-iconpicker .layui-anim{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #d2d2d2;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12);box-sizing:border-box;}.layui-iconpicker-item{border:1px solid #e6e6e6;width:90px;height:38px;border-radius:4px;cursor:pointer;position:relative;}.layui-iconpicker-icon{border-right:1px solid #e6e6e6;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;width:60px;height:100%;float:left;text-align:center;background:#fff;transition:all .3s;}.layui-iconpicker-icon i{line-height:38px;font-size:18px;}.layui-iconpicker-item > .layui-edge{left:70px;}.layui-iconpicker-item:hover{border-color:#D2D2D2!important;}.layui-iconpicker-item:hover .layui-iconpicker-icon{border-color:#D2D2D2!important;}.layui-iconpicker.layui-form-selected .layui-anim{display:block;}.layui-iconpicker-body{padding:6px;}.layui-iconpicker .layui-iconpicker-list{background-color:#fff;border:1px solid #ccc;border-radius:4px;}.layui-iconpicker .layui-iconpicker-icon-item{display:inline-block;width:21.1%;line-height:36px;text-align:center;cursor:pointer;vertical-align:top;height:36px;margin:4px;border:1px solid #ddd;border-radius:2px;transition:300ms;}.layui-iconpicker .layui-iconpicker-icon-item i.layui-icon{font-size:17px;}.layui-iconpicker .layui-iconpicker-icon-item:hover{background-color:#eee;border-color:#ccc;-webkit-box-shadow:0 0 2px #aaa,0 0 2px #fff inset;-moz-box-shadow:0 0 2px #aaa,0 0 2px #fff inset;box-shadow:0 0 2px #aaa,0 0 2px #fff inset;text-shadow:0 0 1px #fff;}.layui-iconpicker-search{position:relative;margin:0 0 6px 0;border:1px solid #e6e6e6;border-radius:2px;transition:300ms;}.layui-iconpicker-search:hover{border-color:#D2D2D2!important;}.layui-iconpicker-search .layui-input{cursor:text;display:inline-block;width:86%;border:none;padding-right:0;margin-top:1px;}.layui-iconpicker-search .layui-icon{position:absolute;top:11px;right:4%;}.layui-iconpicker-tips{text-align:center;padding:8px 0;cursor:not-allowed;}.layui-iconpicker-page{margin-top:6px;margin-bottom:-6px;font-size:12px;padding:0 2px;}.layui-iconpicker-page-count{display:inline-block;}.layui-iconpicker-page-operate{display:inline-block;float:right;cursor:default;}.layui-iconpicker-page-operate .layui-icon{font-size:12px;cursor:pointer;}.layui-iconpicker-body-page .layui-iconpicker-icon-limit{display:none;}.layui-iconpicker-body-page .layui-iconpicker-icon-limit:first-child{display:block;}'; - var $style = $('head').find('style[iconpicker]'); - if ($style.length === 0) { - $('head').append(''); - } - }, - /** - * 获取数据 - */ - getData: { - fontClass: function() { - var arr = ["layui-icon-rate-half", "layui-icon-rate", "layui-icon-rate-solid", - "layui-icon-cellphone", "layui-icon-vercode", "layui-icon-login-wechat", - "layui-icon-login-qq", "layui-icon-login-weibo", "layui-icon-password", - "layui-icon-username", "layui-icon-refresh-3", "layui-icon-auz", - "layui-icon-spread-left", "layui-icon-shrink-right", - "layui-icon-snowflake", "layui-icon-tips", "layui-icon-note", - "layui-icon-home", "layui-icon-senior", "layui-icon-refresh", - "layui-icon-refresh-1", "layui-icon-flag", "layui-icon-theme", - "layui-icon-notice", "layui-icon-website", "layui-icon-console", - "layui-icon-face-surprised", "layui-icon-set", "layui-icon-template-1", - "layui-icon-app", "layui-icon-template", "layui-icon-praise", - "layui-icon-tread", "layui-icon-male", "layui-icon-female", - "layui-icon-camera", "layui-icon-camera-fill", "layui-icon-more", - "layui-icon-more-vertical", "layui-icon-rmb", "layui-icon-dollar", - "layui-icon-diamond", "layui-icon-fire", "layui-icon-return", - "layui-icon-location", "layui-icon-read", "layui-icon-survey", - "layui-icon-face-smile", "layui-icon-face-cry", - "layui-icon-cart-simple", "layui-icon-cart", "layui-icon-next", - "layui-icon-prev", "layui-icon-upload-drag", "layui-icon-upload", - "layui-icon-download-circle", "layui-icon-component", - "layui-icon-file-b", "layui-icon-user", "layui-icon-find-fill", - "layui-icon-loading", "layui-icon-loading-1", "layui-icon-add-1", - "layui-icon-play", "layui-icon-pause", "layui-icon-headset", - "layui-icon-video", "layui-icon-voice", "layui-icon-speaker", - "layui-icon-fonts-del", "layui-icon-fonts-code", - "layui-icon-fonts-html", "layui-icon-fonts-strong", "layui-icon-unlink", - "layui-icon-picture", "layui-icon-link", "layui-icon-face-smile-b", - "layui-icon-align-left", "layui-icon-align-right", - "layui-icon-align-center", "layui-icon-fonts-u", "layui-icon-fonts-i", - "layui-icon-tabs", "layui-icon-radio", "layui-icon-circle", - "layui-icon-edit", "layui-icon-share", "layui-icon-delete", - "layui-icon-form", "layui-icon-cellphone-fine", "layui-icon-dialogue", - "layui-icon-fonts-clear", "layui-icon-layer", "layui-icon-date", - "layui-icon-water", "layui-icon-code-circle", "layui-icon-carousel", - "layui-icon-prev-circle", "layui-icon-layouts", "layui-icon-util", - "layui-icon-templeate-1", "layui-icon-upload-circle", "layui-icon-tree", - "layui-icon-table", "layui-icon-chart", "layui-icon-chart-screen", - "layui-icon-engine", "layui-icon-triangle-d", "layui-icon-triangle-r", - "layui-icon-file", "layui-icon-set-sm", "layui-icon-add-circle", - "layui-icon-404", "layui-icon-about", "layui-icon-up", - "layui-icon-down", "layui-icon-left", "layui-icon-right", - "layui-icon-circle-dot", "layui-icon-search", "layui-icon-set-fill", - "layui-icon-group", "layui-icon-friends", "layui-icon-reply-fill", - "layui-icon-menu-fill", "layui-icon-log", "layui-icon-picture-fine", - "layui-icon-face-smile-fine", "layui-icon-list", "layui-icon-release", - "layui-icon-ok", "layui-icon-help", "layui-icon-chat", "layui-icon-top", - "layui-icon-star", "layui-icon-star-fill", "layui-icon-close-fill", - "layui-icon-close", "layui-icon-ok-circle", "layui-icon-add-circle-fine" - ]; - return arr; - }, - unicode: function() { - return ["&#xe6c9;", "&#xe67b;", "&#xe67a;", "&#xe678;", - "&#xe679;", "&#xe677;", "&#xe676;", "&#xe675;", - "&#xe673;", "&#xe66f;", "&#xe9aa;", "&#xe672;", - "&#xe66b;", "&#xe668;", "&#xe6b1;", "&#xe702;", - "&#xe66e;", "&#xe68e;", "&#xe674;", "&#xe669;", - "&#xe666;", "&#xe66c;", "&#xe66a;", "&#xe667;", - "&#xe7ae;", "&#xe665;", "&#xe664;", "&#xe716;", - "&#xe656;", "&#xe653;", "&#xe663;", "&#xe6c6;", - "&#xe6c5;", "&#xe662;", "&#xe661;", "&#xe660;", - "&#xe65d;", "&#xe65f;", "&#xe671;", "&#xe65e;", - "&#xe659;", "&#xe735;", "&#xe756;", "&#xe65c;", - "&#xe715;", "&#xe705;", "&#xe6b2;", "&#xe6af;", - "&#xe69c;", "&#xe698;", "&#xe657;", "&#xe65b;", - "&#xe65a;", "&#xe681;", "&#xe67c;", "&#xe601;", - "&#xe857;", "&#xe655;", "&#xe770;", "&#xe670;", - "&#xe63d;", "&#xe63e;", "&#xe654;", "&#xe652;", - "&#xe651;", "&#xe6fc;", "&#xe6ed;", "&#xe688;", - "&#xe645;", "&#xe64f;", "&#xe64e;", "&#xe64b;", - "&#xe62b;", "&#xe64d;", "&#xe64a;", "&#xe64c;", - "&#xe650;", "&#xe649;", "&#xe648;", "&#xe647;", - "&#xe646;", "&#xe644;", "&#xe62a;", "&#xe643;", - "&#xe63f;", "&#xe642;", "&#xe641;", "&#xe640;", - "&#xe63c;", "&#xe63b;", "&#xe63a;", "&#xe639;", - "&#xe638;", "&#xe637;", "&#xe636;", "&#xe635;", - "&#xe634;", "&#xe633;", "&#xe632;", "&#xe631;", - "&#xe630;", "&#xe62f;", "&#xe62e;", "&#xe62d;", - "&#xe62c;", "&#xe629;", "&#xe628;", "&#xe625;", - "&#xe623;", "&#xe621;", "&#xe620;", "&#xe61f;", - "&#xe61c;", "&#xe60b;", "&#xe619;", "&#xe61a;", - "&#xe603;", "&#xe602;", "&#xe617;", "&#xe615;", - "&#xe614;", "&#xe613;", "&#xe612;", "&#xe611;", - "&#xe60f;", "&#xe60e;", "&#xe60d;", "&#xe60c;", - "&#xe60a;", "&#xe609;", "&#xe605;", "&#xe607;", - "&#xe606;", "&#xe604;", "&#xe600;", "&#xe658;", - "&#x1007;", "&#x1006;", "&#x1005;", "&#xe608;" - ]; - }, - - }, - //通过异步获取自定义图标数据源 - ajaxData:function (url,prefix){ - var iconlist = []; - $.ajax({ - url: url, - type: 'get', - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - async: false, - success: function (ret) { - var exp = eval("/"+prefix+"-(.*):/ig"); - var result; - while ((result = exp.exec(ret)) != null) { - iconlist.push(prefix + '-' + result[1]); - } - }, - error: function (xhr, textstatus, thrown) { - layer.msg('自定义图标接口有误'); - } - }); - return iconlist; - } - }; - - a.init(); - return new IconPicker(); - }; - - /** - * 选中图标 - * @param filter lay-filter - * @param iconName 图标名称,自动识别fontClass/unicode - */ - IconPicker.prototype.checkIcon = function(filter, iconName) { - var el = $('*[lay-filter=' + filter + ']'), - p = el.next().find('.layui-iconpicker-item .layui-icon'), - c = iconName; - - if (c.indexOf('#xe') > 0) { - p.html(c); - } else { - p.html('').attr('class', 'layui-icon ' + c); - } - el.attr('value', c).val(c); - }; - - var iconPicker = new IconPicker(); - exports(_MOD, iconPicker); -}); diff --git a/component/pear/module/notice.js b/component/pear/module/notice.js deleted file mode 100644 index 4ea67ec..0000000 --- a/component/pear/module/notice.js +++ /dev/null @@ -1,489 +0,0 @@ - -(function(define) { - define(['jquery'], function($) { - return (function() { - var $container; - var listener; - var toastId = 0; - var toastType = { - error: 'error', - info: 'info', - success: 'success', - warning: 'warning' - }; - - var cssStyle = $( - '' - ); - $("body").append(cssStyle); - - var toastr = { - clear: clear, - remove: remove, - error: error, - getContainer: getContainer, - info: info, - options: {}, - subscribe: subscribe, - success: success, - version: '2.1.4', - warning: warning - }; - - var previousToast; - - return toastr; - - function error(message, title, optionsOverride) { - return notify({ - type: toastType.error, - iconClass: getOptions().iconClasses.error, - message: message, - optionsOverride: optionsOverride, - title: title - }); - } - - function getContainer(options, create) { - if (!options) { - options = getOptions(); - } - $container = $('#' + options.containerId); - if ($container.length) { - return $container; - } - if (create) { - $container = createContainer(options); - } - return $container; - } - - function info(message, title, optionsOverride) { - return notify({ - type: toastType.info, - iconClass: getOptions().iconClasses.info, - message: message, - optionsOverride: optionsOverride, - title: title - }); - } - - function subscribe(callback) { - listener = callback; - } - - function success(message, title, optionsOverride) { - return notify({ - type: toastType.success, - iconClass: getOptions().iconClasses.success, - message: message, - optionsOverride: optionsOverride, - title: title - }); - } - - function warning(message, title, optionsOverride) { - return notify({ - type: toastType.warning, - iconClass: getOptions().iconClasses.warning, - message: message, - optionsOverride: optionsOverride, - title: title - }); - } - - function clear($toastElement, clearOptions) { - var options = getOptions(); - if (!$container) { - getContainer(options); - } - if (!clearToast($toastElement, options, clearOptions)) { - clearContainer(options); - } - } - - function remove($toastElement) { - var options = getOptions(); - if (!$container) { - getContainer(options); - } - if ($toastElement && $(':focus', $toastElement).length === 0) { - removeToast($toastElement); - return; - } - if ($container.children().length) { - $container.remove(); - } - } - - // internal functions - - function clearContainer(options) { - var toastsToClear = $container.children(); - for (var i = toastsToClear.length - 1; i >= 0; i--) { - clearToast($(toastsToClear[i]), options); - } - } - - function clearToast($toastElement, options, clearOptions) { - var force = clearOptions && clearOptions.force ? clearOptions.force : false; - if ($toastElement && (force || $(':focus', $toastElement).length === 0)) { - $toastElement[options.hideMethod]({ - duration: options.hideDuration, - easing: options.hideEasing, - complete: function() { - removeToast($toastElement); - } - }); - return true; - } - return false; - } - - function createContainer(options) { - $container = $('
                                      ') - .attr('id', options.containerId) - .addClass(options.positionClass); - - $container.appendTo($(options.target)); - return $container; - } - - function getDefaults() { - return { - tapToDismiss: true, - toastClass: 'toast', - containerId: 'toast-container', - debug: false, - - showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery - showDuration: 300, - showEasing: 'swing', //swing and linear are built into jQuery - onShown: undefined, - hideMethod: 'fadeOut', - hideDuration: 1000, - hideEasing: 'swing', - onHidden: undefined, - closeMethod: false, - closeDuration: false, - closeEasing: false, - closeOnHover: true, - - extendedTimeOut: 1000, - iconClasses: { - error: 'toast-error', - info: 'toast-info', - success: 'toast-success', - warning: 'toast-warning' - }, - iconClass: 'toast-info', - positionClass: 'toast-top-right', - timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky - titleClass: 'toast-title', - messageClass: 'toast-message', - escapeHtml: false, - target: 'body', - closeHtml: '', - closeClass: 'toast-close-button', - newestOnTop: true, - preventDuplicates: false, - progressBar: false, - progressClass: 'toast-progress', - rtl: false - }; - } - - function publish(args) { - if (!listener) { - return; - } - listener(args); - } - - function notify(map) { - var options = getOptions(); - var iconClass = map.iconClass || options.iconClass; - - if (typeof(map.optionsOverride) !== 'undefined') { - options = $.extend(options, map.optionsOverride); - iconClass = map.optionsOverride.iconClass || iconClass; - } - - if (shouldExit(options, map)) { - return; - } - - toastId++; - - $container = getContainer(options, true); - - var intervalId = null; - var $toastElement = $('
                                      '); - var $titleElement = $('
                                      '); - var $messageElement = $('
                                      '); - var $progressElement = $('
                                      '); - var $closeElement = $(options.closeHtml); - var progressBar = { - intervalId: null, - hideEta: null, - maxHideTime: null - }; - var response = { - toastId: toastId, - state: 'visible', - startTime: new Date(), - options: options, - map: map - }; - - personalizeToast(); - - displayToast(); - - handleEvents(); - - publish(response); - - if (options.debug && console) { - console.log(response); - } - - return $toastElement; - - function escapeHtml(source) { - if (source == null) { - source = ''; - } - - return source - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(//g, '>'); - } - - function personalizeToast() { - setIcon(); - setTitle(); - setMessage(); - setCloseButton(); - setProgressBar(); - setRTL(); - setSequence(); - setAria(); - } - - function setAria() { - var ariaValue = ''; - switch (map.iconClass) { - case 'toast-success': - case 'toast-info': - ariaValue = 'polite'; - break; - default: - ariaValue = 'assertive'; - } - $toastElement.attr('aria-live', ariaValue); - } - - function handleEvents() { - if (options.closeOnHover) { - $toastElement.hover(stickAround, delayedHideToast); - } - - if (!options.onclick && options.tapToDismiss) { - $toastElement.click(hideToast); - } - - if (options.closeButton && $closeElement) { - $closeElement.click(function(event) { - if (event.stopPropagation) { - event.stopPropagation(); - } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) { - event.cancelBubble = true; - } - - if (options.onCloseClick) { - options.onCloseClick(event); - } - - hideToast(true); - }); - } - - if (options.onclick) { - $toastElement.click(function(event) { - options.onclick(event); - hideToast(); - }); - } - } - - function displayToast() { - $toastElement.hide(); - - $toastElement[options.showMethod]({ - duration: options.showDuration, - easing: options.showEasing, - complete: options.onShown - }); - - if (options.timeOut > 0) { - intervalId = setTimeout(hideToast, options.timeOut); - progressBar.maxHideTime = parseFloat(options.timeOut); - progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime; - if (options.progressBar) { - progressBar.intervalId = setInterval(updateProgress, 10); - } - } - } - - function setIcon() { - if (map.iconClass) { - $toastElement.addClass(options.toastClass).addClass(iconClass); - } - } - - function setSequence() { - if (options.newestOnTop) { - $container.prepend($toastElement); - } else { - $container.append($toastElement); - } - } - - function setTitle() { - if (map.title) { - var suffix = map.title; - if (options.escapeHtml) { - suffix = escapeHtml(map.title); - } - $titleElement.append(suffix).addClass(options.titleClass); - $toastElement.append($titleElement); - } - } - - function setMessage() { - if (map.message) { - var suffix = map.message; - if (options.escapeHtml) { - suffix = escapeHtml(map.message); - } - $messageElement.append(suffix).addClass(options.messageClass); - $toastElement.append($messageElement); - } - } - - function setCloseButton() { - if (options.closeButton) { - $closeElement.addClass(options.closeClass).attr('role', 'button'); - $toastElement.prepend($closeElement); - } - } - - function setProgressBar() { - if (options.progressBar) { - $progressElement.addClass(options.progressClass); - $toastElement.prepend($progressElement); - } - } - - function setRTL() { - if (options.rtl) { - $toastElement.addClass('rtl'); - } - } - - function shouldExit(options, map) { - if (options.preventDuplicates) { - if (map.message === previousToast) { - return true; - } else { - previousToast = map.message; - } - } - return false; - } - - function hideToast(override) { - var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod; - var duration = override && options.closeDuration !== false ? - options.closeDuration : options.hideDuration; - var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing; - if ($(':focus', $toastElement).length && !override) { - return; - } - clearTimeout(progressBar.intervalId); - return $toastElement[method]({ - duration: duration, - easing: easing, - complete: function() { - removeToast($toastElement); - clearTimeout(intervalId); - if (options.onHidden && response.state !== 'hidden') { - options.onHidden(); - } - response.state = 'hidden'; - response.endTime = new Date(); - publish(response); - } - }); - } - - function delayedHideToast() { - if (options.timeOut > 0 || options.extendedTimeOut > 0) { - intervalId = setTimeout(hideToast, options.extendedTimeOut); - progressBar.maxHideTime = parseFloat(options.extendedTimeOut); - progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime; - } - } - - function stickAround() { - clearTimeout(intervalId); - progressBar.hideEta = 0; - $toastElement.stop(true, true)[options.showMethod]({ - duration: options.showDuration, - easing: options.showEasing - }); - } - - function updateProgress() { - var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100; - $progressElement.width(percentage + '%'); - } - } - - function getOptions() { - return $.extend({}, getDefaults(), toastr.options); - } - - function removeToast($toastElement) { - if (!$container) { - $container = getContainer(); - } - if ($toastElement.is(':visible')) { - return; - } - $toastElement.remove(); - $toastElement = null; - if ($container.children().length === 0) { - $container.remove(); - previousToast = undefined; - } - } - - })(); - }); -}(typeof define === 'function' && define.amd ? define : function(deps, factory) { - if (typeof module !== 'undefined' && module.exports) { //Node - module.exports = factory(require('jquery')); - } else if (window.layui && layui.define) { - layui.define('jquery', function(exports) { //layui加载 - exports('toastr', factory(layui.jquery)); - exports('notice', factory(layui.jquery)); - }); - } else { - window.toastr = factory(window.jQuery); - } -})); diff --git a/component/pear/module/popover/popover.js b/component/pear/module/popover/popover.js deleted file mode 100644 index 2dcb57c..0000000 --- a/component/pear/module/popover/popover.js +++ /dev/null @@ -1,1218 +0,0 @@ -/* - * webui popover plugin - v1.2.17 - * A lightWeight popover plugin with jquery ,enchance the popover plugin of bootstrap with some awesome new features. It works well with bootstrap ,but bootstrap is not necessary! - * https://github.com/sandywalker/webui-popover - * - * Made by Sandy Duan - * Under MIT License - */ - -layui.define(['jquery', 'element'], function(exports) { - var $=layui.$; - // Create the defaults once - var pluginName = 'webuiPopover'; - var pluginClass = 'webui-popover'; - var pluginType = 'webui.popover'; - var defaults = { - placement: 'auto', - container: null, - width: 'auto', - height: 'auto', - trigger: 'click', //hover,click,sticky,manual - style: '', - opacity:null, - selector: false, // jQuery selector, if a selector is provided, popover objects will be delegated to the specified. - delay: { - show: null, - hide: 300 - }, - async: { - type: 'GET', - before: null, //function(that, xhr, settings){} - success: null, //function(that, xhr){} - error: null //function(that, xhr, data){} - }, - cache: true, - multi: false, - arrow: true, - title: '', - content: '', - closeable: false, - padding: true, - url: '', - type: 'html', - direction: '', // ltr,rtl - animation: null, - template: '
                                      ' + - '
                                      ' + - '
                                      ' + - '' + - '

                                      ' + - '

                                       

                                      ' + - '
                                      ' + - '
                                      ', - backdrop: false, - dismissible: true, - onShow: null, - onHide: null, - abortXHR: true, - autoHide: false, - offsetTop: 0, - offsetLeft: 0, - iframeOptions: { - frameborder: '0', - allowtransparency: 'true', - id: '', - name: '', - scrolling: '', - onload: '', - height: '', - width: '' - }, - hideEmpty: false - }; - - var rtlClass = pluginClass + '-rtl'; - var _srcElements = []; - var backdrop = $('
                                      '); - var _globalIdSeed = 0; - var _isBodyEventHandled = false; - var _offsetOut = -2000; // the value offset out of the screen - var $document = $(document); - - var toNumber = function (numeric, fallback) { - return isNaN(numeric) ? (fallback || 0) : Number(numeric); - }; - - var getPopFromElement = function ($element) { - return $element.data('plugin_' + pluginName); - }; - - var hideAllPop = function () { - var pop = null; - for (var i = 0; i < _srcElements.length; i++) { - pop = getPopFromElement(_srcElements[i]); - if (pop) { - pop.hide(true); - } - } - $document.trigger('hiddenAll.' + pluginType); - }; - - var hideOtherPops = function (currentPop) { - var pop = null; - for (var i = 0; i < _srcElements.length; i++) { - pop = getPopFromElement(_srcElements[i]); - if (pop && pop.id !== currentPop.id) { - pop.hide(true); - } - } - $document.trigger('hiddenAll.' + pluginType); - }; - - var isMobile = ('ontouchstart' in document.documentElement) && (/Mobi/.test(navigator.userAgent)); - - var pointerEventToXY = function (e) { - var out = { - x: 0, - y: 0 - }; - if (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') { - var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]; - out.x = touch.pageX; - out.y = touch.pageY; - } else if (e.type === 'mousedown' || e.type === 'mouseup' || e.type === 'click') { - out.x = e.pageX; - out.y = e.pageY; - } - return out; - }; - - // The actual plugin constructor - function WebuiPopover(element, options) { - this.$element = $(element); - if (options) { - if ($.type(options.delay) === 'string' || $.type(options.delay) === 'number') { - options.delay = { - show: options.delay, - hide: options.delay - }; // bc break fix - } - } - this.options = $.extend({}, defaults, options); - this._defaults = defaults; - this._name = pluginName; - this._targetclick = false; - this.init(); - _srcElements.push(this.$element); - return this; - - } - - WebuiPopover.prototype = { - //init webui popover - init: function () { - if (this.$element[0] instanceof document.constructor && !this.options.selector) { - throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!'); - } - - if (this.getTrigger() !== 'manual') { - //init the event handlers - if (isMobile) { - this.$element.off('touchend', this.options.selector).on('touchend', this.options.selector, $.proxy(this.toggle, this)); - } else if (this.getTrigger() === 'click') { - this.$element.off('click', this.options.selector).on('click', this.options.selector, $.proxy(this.toggle, this)); - } else if (this.getTrigger() === 'hover') { - this.$element - .off('mouseenter mouseleave click', this.options.selector) - .on('mouseenter', this.options.selector, $.proxy(this.mouseenterHandler, this)) - .on('mouseleave', this.options.selector, $.proxy(this.mouseleaveHandler, this)); - } - } - this._poped = false; - this._inited = true; - this._opened = false; - this._idSeed = _globalIdSeed; - this.id = pluginName + this._idSeed; - // normalize container - this.options.container = $(this.options.container || document.body).first(); - - if (this.options.backdrop) { - backdrop.appendTo(this.options.container).hide(); - } - _globalIdSeed++; - if (this.getTrigger() === 'sticky') { - this.show(); - } - - if (this.options.selector) { - this._options = $.extend({}, this.options, { - selector: '' - }); - } - - }, - /* api methods and actions */ - destroy: function () { - var index = -1; - - for (var i = 0; i < _srcElements.length; i++) { - if (_srcElements[i] === this.$element) { - index = i; - break; - } - } - - _srcElements.splice(index, 1); - - - this.hide(); - this.$element.data('plugin_' + pluginName, null); - if (this.getTrigger() === 'click') { - this.$element.off('click'); - } else if (this.getTrigger() === 'hover') { - this.$element.off('mouseenter mouseleave'); - } - if (this.$target) { - this.$target.remove(); - } - }, - getDelegateOptions: function () { - var options = {}; - - this._options && $.each(this._options, function (key, value) { - if (defaults[key] !== value) { - options[key] = value; - } - }); - return options; - }, - /* - param: force boolean value, if value is true then force hide the popover - param: event dom event, - */ - hide: function (force, event) { - - if (!force && this.getTrigger() === 'sticky') { - return; - } - if (!this._opened) { - return; - } - if (event) { - event.preventDefault(); - event.stopPropagation(); - } - - if (this.xhr && this.options.abortXHR === true) { - this.xhr.abort(); - this.xhr = null; - } - - - var e = $.Event('hide.' + pluginType); - this.$element.trigger(e, [this.$target]); - if (this.$target) { - this.$target.removeClass('in').addClass(this.getHideAnimation()); - var that = this; - setTimeout(function () { - that.$target.hide(); - if (!that.getCache()) { - that.$target.remove(); - //that.getTriggerElement.removeAttr('data-target'); - } - }, that.getHideDelay()); - } - if (this.options.backdrop) { - backdrop.hide(); - } - this._opened = false; - this.$element.trigger('hidden.' + pluginType, [this.$target]); - - if (this.options.onHide) { - this.options.onHide(this.$target); - } - - }, - resetAutoHide: function () { - var that = this; - var autoHide = that.getAutoHide(); - if (autoHide) { - if (that.autoHideHandler) { - clearTimeout(that.autoHideHandler); - } - that.autoHideHandler = setTimeout(function () { - that.hide(); - }, autoHide); - } - }, - delegate: function (eventTarget) { - var self = $(eventTarget).data('plugin_' + pluginName); - if (!self) { - self = new WebuiPopover(eventTarget, this.getDelegateOptions()); - $(eventTarget).data('plugin_' + pluginName, self); - } - return self; - }, - toggle: function (e) { - var self = this; - if (e) { - e.preventDefault(); - e.stopPropagation(); - if (this.options.selector) { - self = this.delegate(e.currentTarget); - } - } - self[self.getTarget().hasClass('in') ? 'hide' : 'show'](); - }, - hideAll: function () { - hideAllPop(); - }, - hideOthers: function () { - hideOtherPops(this); - }, - /*core method ,show popover */ - show: function () { - if (this._opened) { - return; - } - //removeAllTargets(); - var - $target = this.getTarget().removeClass().addClass(pluginClass).addClass(this._customTargetClass); - if (!this.options.multi) { - this.hideOthers(); - } - - // use cache by default, if not cache setted , reInit the contents - if (!this.getCache() || !this._poped || this.content === '') { - this.content = ''; - this.setTitle(this.getTitle()); - if (!this.options.closeable) { - $target.find('.close').off('click').remove(); - } - if (!this.isAsync()) { - this.setContent(this.getContent()); - } else { - this.setContentASync(this.options.content); - } - - if (this.canEmptyHide() && this.content === '') { - return; - } - $target.show(); - } - - this.displayContent(); - - if (this.options.onShow) { - this.options.onShow($target); - } - - this.bindBodyEvents(); - if (this.options.backdrop) { - backdrop.show(); - } - this._opened = true; - this.resetAutoHide(); - }, - displayContent: function () { - var - //element postion - elementPos = this.getElementPosition(), - //target postion - $target = this.getTarget().removeClass().addClass(pluginClass).addClass(this._customTargetClass), - //target content - $targetContent = this.getContentElement(), - //target Width - targetWidth = $target[0].offsetWidth, - //target Height - targetHeight = $target[0].offsetHeight, - //placement - placement = 'bottom', - e = $.Event('show.' + pluginType); - - if (this.canEmptyHide()) { - - var content = $targetContent.children().html(); - if (content !== null && content.trim().length === 0) { - return; - } - } - - //if (this.hasContent()){ - this.$element.trigger(e, [$target]); - //} - // support width as data attribute - var optWidth = this.$element.data('width') || this.options.width; - if (optWidth === '') { - optWidth = this._defaults.width; - } - - if (optWidth !== 'auto') { - $target.width(optWidth); - } - - // support height as data attribute - var optHeight = this.$element.data('height') || this.options.height; - if (optHeight === '') { - optHeight = this._defaults.height; - } - - if (optHeight !== 'auto') { - $targetContent.height(optHeight); - } - - if (this.options.style) { - this.$target.addClass(pluginClass + '-' + this.options.style); - } - - //check rtl - if (this.options.direction === 'rtl' && !$targetContent.hasClass(rtlClass)) { - $targetContent.addClass(rtlClass); - } - - //init the popover and insert into the document body - if (!this.options.arrow) { - $target.find('.webui-arrow').remove(); - } - $target.detach().css({ - top: _offsetOut, - left: _offsetOut, - display: 'block', - opacity:this.options.opacity || 1 - }); - - if (this.getAnimation()) { - $target.addClass(this.getAnimation()); - } - $target.appendTo(this.options.container); - - - placement = this.getPlacement(elementPos); - - //This line is just for compatible with knockout custom binding - this.$element.trigger('added.' + pluginType); - - this.initTargetEvents(); - - if (!this.options.padding) { - if (this.options.height !== 'auto') { - $targetContent.css('height', $targetContent.outerHeight()); - } - this.$target.addClass('webui-no-padding'); - } - - // add maxHeight and maxWidth support by limodou@gmail.com 2016/10/1 - if (this.options.maxHeight) { - $targetContent.css('maxHeight', this.options.maxHeight); - } - - if (this.options.maxWidth) { - $targetContent.css('maxWidth', this.options.maxWidth); - } - // end - - targetWidth = $target[0].offsetWidth; - targetHeight = $target[0].offsetHeight; - - var postionInfo = this.getTargetPositin(elementPos, placement, targetWidth, targetHeight); - - this.$target.css(postionInfo.position).addClass(placement).addClass('in'); - - if (this.options.type === 'iframe') { - var $iframe = $target.find('iframe'); - var iframeWidth = $target.width(); - var iframeHeight = $iframe.parent().height(); - - if (this.options.iframeOptions.width !== '' && this.options.iframeOptions.width !== 'auto') { - iframeWidth = this.options.iframeOptions.width; - } - - if (this.options.iframeOptions.height !== '' && this.options.iframeOptions.height !== 'auto') { - iframeHeight = this.options.iframeOptions.height; - } - - $iframe.width(iframeWidth).height(iframeHeight); - } - - if (!this.options.arrow) { - this.$target.css({ - 'margin': 0 - }); - } - if (this.options.arrow) { - var $arrow = this.$target.find('.webui-arrow'); - $arrow.removeAttr('style'); - - //prevent arrow change by content size - if (placement === 'left' || placement === 'right') { - $arrow.css({ - top: this.$target.height() / 2 - }); - } else if (placement === 'top' || placement === 'bottom') { - $arrow.css({ - left: this.$target.width() / 2 - }); - } - - if (postionInfo.arrowOffset) { - //hide the arrow if offset is negative - if (postionInfo.arrowOffset.left === -1 || postionInfo.arrowOffset.top === -1) { - $arrow.hide(); - } else { - $arrow.css(postionInfo.arrowOffset); - } - } - - } - this._poped = true; - this.$element.trigger('shown.' + pluginType, [this.$target]); - }, - - isTargetLoaded: function () { - return this.getTarget().find('i.glyphicon-refresh').length === 0; - }, - - /*getter setters */ - getTriggerElement: function () { - return this.$element; - }, - getTarget: function () { - if (!this.$target) { - var id = pluginName + this._idSeed; - this.$target = $(this.options.template) - .attr('id', id); - this._customTargetClass = this.$target.attr('class') !== pluginClass ? this.$target.attr('class') : null; - this.getTriggerElement().attr('data-target', id); - } - if (!this.$target.data('trigger-element')) { - this.$target.data('trigger-element', this.getTriggerElement()); - } - return this.$target; - }, - removeTarget: function () { - this.$target.remove(); - this.$target = null; - this.$contentElement = null; - }, - getTitleElement: function () { - return this.getTarget().find('.' + pluginClass + '-title'); - }, - getContentElement: function () { - if (!this.$contentElement) { - this.$contentElement = this.getTarget().find('.' + pluginClass + '-content'); - } - return this.$contentElement; - }, - getTitle: function () { - return this.$element.attr('data-title') || this.options.title || this.$element.attr('title'); - }, - getUrl: function () { - return this.$element.attr('data-url') || this.options.url; - }, - getAutoHide: function () { - return this.$element.attr('data-auto-hide') || this.options.autoHide; - }, - getOffsetTop: function () { - return toNumber(this.$element.attr('data-offset-top')) || this.options.offsetTop; - }, - getOffsetLeft: function () { - return toNumber(this.$element.attr('data-offset-left')) || this.options.offsetLeft; - }, - getCache: function () { - var dataAttr = this.$element.attr('data-cache'); - if (typeof (dataAttr) !== 'undefined') { - switch (dataAttr.toLowerCase()) { - case 'true': - case 'yes': - case '1': - return true; - case 'false': - case 'no': - case '0': - return false; - } - } - return this.options.cache; - }, - getTrigger: function () { - return this.$element.attr('data-trigger') || this.options.trigger; - }, - getDelayShow: function () { - var dataAttr = this.$element.attr('data-delay-show'); - if (typeof (dataAttr) !== 'undefined') { - return dataAttr; - } - return this.options.delay.show === 0 ? 0 : this.options.delay.show || 100; - }, - getHideDelay: function () { - var dataAttr = this.$element.attr('data-delay-hide'); - if (typeof (dataAttr) !== 'undefined') { - return dataAttr; - } - return this.options.delay.hide === 0 ? 0 : this.options.delay.hide || 100; - }, - getAnimation: function () { - var dataAttr = this.$element.attr('data-animation'); - return dataAttr || this.options.animation; - }, - getHideAnimation: function () { - var ani = this.getAnimation(); - return ani ? ani + '-out' : 'out'; - }, - setTitle: function (title) { - var $titleEl = this.getTitleElement(); - if (title) { - //check rtl - if (this.options.direction === 'rtl' && !$titleEl.hasClass(rtlClass)) { - $titleEl.addClass(rtlClass); - } - $titleEl.html(title); - } else { - $titleEl.remove(); - } - }, - hasContent: function () { - return this.getContent(); - }, - canEmptyHide: function () { - return this.options.hideEmpty && this.options.type === 'html'; - }, - getIframe: function () { - var $iframe = $('').attr('src', this.getUrl()); - var self = this; - $.each(this._defaults.iframeOptions, function (opt) { - if (typeof self.options.iframeOptions[opt] !== 'undefined') { - $iframe.attr(opt, self.options.iframeOptions[opt]); - } - }); - - return $iframe; - }, - getContent: function () { - if (this.getUrl()) { - switch (this.options.type) { - case 'iframe': - this.content = this.getIframe(); - break; - case 'html': - try { - this.content = $(this.getUrl()); - if (!this.content.is(':visible')) { - this.content.show(); - } - } catch (error) { - throw new Error('Unable to get popover content. Invalid selector specified.'); - } - break; - } - } else if (!this.content) { - var content = ''; - if ($.isFunction(this.options.content)) { - content = this.options.content.apply(this.$element[0], [this]); - } else { - content = this.options.content; - } - this.content = this.$element.attr('data-content') || content; - if (!this.content) { - var $next = this.$element.next(); - - if ($next && $next.hasClass(pluginClass + '-content')) { - this.content = $next; - } - } - } - return this.content; - }, - setContent: function (content) { - var $target = this.getTarget(); - var $ct = this.getContentElement(); - if (typeof content === 'string') { - $ct.html(content); - } else if (content instanceof $) { - $ct.html(''); - //Don't want to clone too many times. - if (!this.options.cache) { - content.clone(true, true).removeClass(pluginClass + '-content').appendTo($ct); - } else { - content.removeClass(pluginClass + '-content').appendTo($ct); - } - } - this.$target = $target; - }, - isAsync: function () { - return this.options.type === 'async'; - }, - setContentASync: function (content) { - var that = this; - if (this.xhr) { - return; - } - this.xhr = $.ajax({ - url: this.getUrl(), - type: this.options.async.type, - cache: this.getCache(), - beforeSend: function (xhr, settings) { - if (that.options.async.before) { - that.options.async.before(that, xhr, settings); - } - }, - success: function (data) { - that.bindBodyEvents(); - if (content && $.isFunction(content)) { - that.content = content.apply(that.$element[0], [data]); - } else { - that.content = data; - } - that.setContent(that.content); - var $targetContent = that.getContentElement(); - $targetContent.removeAttr('style'); - that.displayContent(); - if (that.options.async.success) { - that.options.async.success(that, data); - } - }, - complete: function () { - that.xhr = null; - }, - error: function (xhr, data) { - if (that.options.async.error) { - that.options.async.error(that, xhr, data); - } - } - }); - }, - - bindBodyEvents: function () { - if (_isBodyEventHandled) { - return; - } - if (this.options.dismissible && this.getTrigger() === 'click') { - if (isMobile) { - $document.off('touchstart.webui-popover').on('touchstart.webui-popover', $.proxy(this.bodyTouchStartHandler, this)); - } else { - $document.off('keyup.webui-popover').on('keyup.webui-popover', $.proxy(this.escapeHandler, this)); - $document.off('click.webui-popover').on('click.webui-popover', $.proxy(this.bodyClickHandler, this)); - } - } else if (this.getTrigger() === 'hover') { - $document.off('touchend.webui-popover') - .on('touchend.webui-popover', $.proxy(this.bodyClickHandler, this)); - } - }, - - /* event handlers */ - mouseenterHandler: function (e) { - var self = this; - - if (e && this.options.selector) { - self = this.delegate(e.currentTarget); - } - - if (self._timeout) { - clearTimeout(self._timeout); - } - self._enterTimeout = setTimeout(function () { - if (!self.getTarget().is(':visible')) { - self.show(); - } - }, this.getDelayShow()); - }, - mouseleaveHandler: function () { - var self = this; - clearTimeout(self._enterTimeout); - //key point, set the _timeout then use clearTimeout when mouse leave - self._timeout = setTimeout(function () { - self.hide(); - }, this.getHideDelay()); - }, - escapeHandler: function (e) { - if (e.keyCode === 27) { - this.hideAll(); - } - }, - bodyTouchStartHandler: function (e) { - var self = this; - var $eventEl = $(e.currentTarget); - $eventEl.on('touchend', function (e) { - self.bodyClickHandler(e); - $eventEl.off('touchend'); - }); - $eventEl.on('touchmove', function () { - $eventEl.off('touchend'); - }); - }, - bodyClickHandler: function (e) { - _isBodyEventHandled = true; - var canHide = true; - for (var i = 0; i < _srcElements.length; i++) { - var pop = getPopFromElement(_srcElements[i]); - if (pop && pop._opened) { - var offset = pop.getTarget().offset(); - var popX1 = offset.left; - var popY1 = offset.top; - var popX2 = offset.left + pop.getTarget().width(); - var popY2 = offset.top + pop.getTarget().height(); - var pt = pointerEventToXY(e); - var inPop = pt.x >= popX1 && pt.x <= popX2 && pt.y >= popY1 && pt.y <= popY2; - if (inPop) { - canHide = false; - break; - } - } - } - if (canHide) { - hideAllPop(); - } - }, - - /* - targetClickHandler: function() { - this._targetclick = true; - }, - */ - - //reset and init the target events; - initTargetEvents: function () { - if (this.getTrigger() === 'hover') { - this.$target - .off('mouseenter mouseleave') - .on('mouseenter', $.proxy(this.mouseenterHandler, this)) - .on('mouseleave', $.proxy(this.mouseleaveHandler, this)); - } - this.$target.find('.close').off('click').on('click', $.proxy(this.hide, this, true)); - //this.$target.off('click.webui-popover').on('click.webui-popover', $.proxy(this.targetClickHandler, this)); - }, - /* utils methods */ - //caculate placement of the popover - getPlacement: function (pos) { - var - placement, - container = this.options.container, - clientWidth = container.innerWidth(), - clientHeight = container.innerHeight(), - scrollTop = container.scrollTop(), - scrollLeft = container.scrollLeft(), - pageX = Math.max(0, pos.left - scrollLeft), - pageY = Math.max(0, pos.top - scrollTop); - //arrowSize = 20; - - //if placement equals auto,caculate the placement by element information; - if (typeof (this.options.placement) === 'function') { - placement = this.options.placement.call(this, this.getTarget()[0], this.$element[0]); - } else { - placement = this.$element.data('placement') || this.options.placement; - } - - var isH = placement === 'horizontal'; - var isV = placement === 'vertical'; - var detect = placement === 'auto' || isH || isV; - - if (detect) { - if (pageX < clientWidth / 3) { - if (pageY < clientHeight / 3) { - placement = isH ? 'right-bottom' : 'bottom-right'; - } else if (pageY < clientHeight * 2 / 3) { - if (isV) { - placement = pageY <= clientHeight / 2 ? 'bottom-right' : 'top-right'; - } else { - placement = 'right'; - } - } else { - placement = isH ? 'right-top' : 'top-right'; - } - //placement= pageY>targetHeight+arrowSize?'top-right':'bottom-right'; - } else if (pageX < clientWidth * 2 / 3) { - if (pageY < clientHeight / 3) { - if (isH) { - placement = pageX <= clientWidth / 2 ? 'right-bottom' : 'left-bottom'; - } else { - placement = 'bottom'; - } - } else if (pageY < clientHeight * 2 / 3) { - if (isH) { - placement = pageX <= clientWidth / 2 ? 'right' : 'left'; - } else { - placement = pageY <= clientHeight / 2 ? 'bottom' : 'top'; - } - } else { - if (isH) { - placement = pageX <= clientWidth / 2 ? 'right-top' : 'left-top'; - } else { - placement = 'top'; - } - } - } else { - //placement = pageY>targetHeight+arrowSize?'top-left':'bottom-left'; - if (pageY < clientHeight / 3) { - placement = isH ? 'left-bottom' : 'bottom-left'; - } else if (pageY < clientHeight * 2 / 3) { - if (isV) { - placement = pageY <= clientHeight / 2 ? 'bottom-left' : 'top-left'; - } else { - placement = 'left'; - } - } else { - placement = isH ? 'left-top' : 'top-left'; - } - } - } else if (placement === 'auto-top') { - if (pageX < clientWidth / 3) { - placement = 'top-right'; - } else if (pageX < clientWidth * 2 / 3) { - placement = 'top'; - } else { - placement = 'top-left'; - } - } else if (placement === 'auto-bottom') { - if (pageX < clientWidth / 3) { - placement = 'bottom-right'; - } else if (pageX < clientWidth * 2 / 3) { - placement = 'bottom'; - } else { - placement = 'bottom-left'; - } - } else if (placement === 'auto-left') { - if (pageY < clientHeight / 3) { - placement = 'left-top'; - } else if (pageY < clientHeight * 2 / 3) { - placement = 'left'; - } else { - placement = 'left-bottom'; - } - } else if (placement === 'auto-right') { - if (pageY < clientHeight / 3) { - placement = 'right-bottom'; - } else if (pageY < clientHeight * 2 / 3) { - placement = 'right'; - } else { - placement = 'right-top'; - } - } - return placement; - }, - getElementPosition: function () { - // If the container is the body or normal conatiner, just use $element.offset() - var elRect = this.$element[0].getBoundingClientRect(); - var container = this.options.container; - var cssPos = container.css('position'); - - if (container.is(document.body) || cssPos === 'static') { - return $.extend({}, this.$element.offset(), { - width: this.$element[0].offsetWidth || elRect.width, - height: this.$element[0].offsetHeight || elRect.height - }); - // Else fixed container need recalculate the position - } else if (cssPos === 'fixed') { - var containerRect = container[0].getBoundingClientRect(); - return { - top: elRect.top - containerRect.top + container.scrollTop(), - left: elRect.left - containerRect.left + container.scrollLeft(), - width: elRect.width, - height: elRect.height - }; - } else if (cssPos === 'relative') { - return { - top: this.$element.offset().top - container.offset().top, - left: this.$element.offset().left - container.offset().left, - width: this.$element[0].offsetWidth || elRect.width, - height: this.$element[0].offsetHeight || elRect.height - }; - } - }, - - getTargetPositin: function (elementPos, placement, targetWidth, targetHeight) { - var pos = elementPos, - container = this.options.container, - //clientWidth = container.innerWidth(), - //clientHeight = container.innerHeight(), - elementW = this.$element.outerWidth(), - elementH = this.$element.outerHeight(), - scrollTop = document.documentElement.scrollTop + container.scrollTop(), - scrollLeft = document.documentElement.scrollLeft + container.scrollLeft(), - position = {}, - arrowOffset = null, - arrowSize = this.options.arrow ? 20 : 0, - padding = 10, - fixedW = elementW < arrowSize + padding ? arrowSize : 0, - fixedH = elementH < arrowSize + padding ? arrowSize : 0, - refix = 0, - pageH = document.documentElement.clientHeight + scrollTop, - pageW = document.documentElement.clientWidth + scrollLeft; - - var validLeft = pos.left + pos.width / 2 - fixedW > 0; - var validRight = pos.left + pos.width / 2 + fixedW < pageW; - var validTop = pos.top + pos.height / 2 - fixedH > 0; - var validBottom = pos.top + pos.height / 2 + fixedH < pageH; - - - switch (placement) { - case 'bottom': - position = { - top: pos.top + pos.height, - left: pos.left + pos.width / 2 - targetWidth / 2 - }; - break; - case 'top': - position = { - top: pos.top - targetHeight, - left: pos.left + pos.width / 2 - targetWidth / 2 - }; - break; - case 'left': - position = { - top: pos.top + pos.height / 2 - targetHeight / 2, - left: pos.left - targetWidth - }; - break; - case 'right': - position = { - top: pos.top + pos.height / 2 - targetHeight / 2, - left: pos.left + pos.width - }; - break; - case 'top-right': - position = { - top: pos.top - targetHeight, - left: validLeft ? pos.left - fixedW : padding - }; - arrowOffset = { - left: validLeft ? Math.min(elementW, targetWidth) / 2 + fixedW : _offsetOut - }; - break; - case 'top-left': - refix = validRight ? fixedW : -padding; - position = { - top: pos.top - targetHeight, - left: pos.left - targetWidth + pos.width + refix - }; - arrowOffset = { - left: validRight ? targetWidth - Math.min(elementW, targetWidth) / 2 - fixedW : _offsetOut - }; - break; - case 'bottom-right': - position = { - top: pos.top + pos.height, - left: validLeft ? pos.left - fixedW : padding - }; - arrowOffset = { - left: validLeft ? Math.min(elementW, targetWidth) / 2 + fixedW : _offsetOut - }; - break; - case 'bottom-left': - refix = validRight ? fixedW : -padding; - position = { - top: pos.top + pos.height, - left: pos.left - targetWidth + pos.width + refix - }; - arrowOffset = { - left: validRight ? targetWidth - Math.min(elementW, targetWidth) / 2 - fixedW : _offsetOut - }; - break; - case 'right-top': - refix = validBottom ? fixedH : -padding; - position = { - top: pos.top - targetHeight + pos.height + refix, - left: pos.left + pos.width - }; - arrowOffset = { - top: validBottom ? targetHeight - Math.min(elementH, targetHeight) / 2 - fixedH : _offsetOut - }; - break; - case 'right-bottom': - position = { - top: validTop ? pos.top - fixedH : padding, - left: pos.left + pos.width - }; - arrowOffset = { - top: validTop ? Math.min(elementH, targetHeight) / 2 + fixedH : _offsetOut - }; - break; - case 'left-top': - refix = validBottom ? fixedH : -padding; - position = { - top: pos.top - targetHeight + pos.height + refix, - left: pos.left - targetWidth - }; - arrowOffset = { - top: validBottom ? targetHeight - Math.min(elementH, targetHeight) / 2 - fixedH : _offsetOut - }; - break; - case 'left-bottom': - position = { - top: validTop ? pos.top - fixedH : padding, - left: pos.left - targetWidth - }; - arrowOffset = { - top: validTop ? Math.min(elementH, targetHeight) / 2 + fixedH : _offsetOut - }; - break; - - } - position.top += this.getOffsetTop(); - position.left += this.getOffsetLeft(); - - return { - position: position, - arrowOffset: arrowOffset - }; - } - }; - $.fn[pluginName] = function (options, noInit) { - var results = []; - var $result = this.each(function () { - - var webuiPopover = $.data(this, 'plugin_' + pluginName); - if (!webuiPopover) { - if (!options) { - webuiPopover = new WebuiPopover(this, null); - } else if (typeof options === 'string') { - if (options !== 'destroy') { - if (!noInit) { - webuiPopover = new WebuiPopover(this, null); - results.push(webuiPopover[options]()); - } - } - } else if (typeof options === 'object') { - webuiPopover = new WebuiPopover(this, options); - } - $.data(this, 'plugin_' + pluginName, webuiPopover); - } else { - if (options === 'destroy') { - webuiPopover.destroy(); - } else if (typeof options === 'string') { - results.push(webuiPopover[options]()); - } - } - }); - return (results.length) ? results : $result; - }; - - //Global object exposes to window. - var webuiPopovers = (function () { - var _hideAll = function () { - hideAllPop(); - }; - var _create = function (selector, options) { - options = options || {}; - $(selector).webuiPopover(options); - }; - var _isCreated = function (selector) { - var created = true; - $(selector).each(function (i, item) { - created = created && $(item).data('plugin_' + pluginName) !== undefined; - }); - return created; - }; - var _show = function (selector, options) { - if (options) { - $(selector).webuiPopover(options).webuiPopover('show'); - } else { - $(selector).webuiPopover('show'); - } - }; - var _hide = function (selector) { - $(selector).webuiPopover('hide'); - }; - - var _setDefaultOptions = function (options) { - defaults = $.extend({}, defaults, options); - }; - - var _updateContent = function (selector, content) { - var pop = $(selector).data('plugin_' + pluginName); - if (pop) { - var cache = pop.getCache(); - pop.options.cache = false; - pop.options.content = content; - if (pop._opened) { - pop._opened = false; - pop.show(); - } else { - if (pop.isAsync()) { - pop.setContentASync(content); - } else { - pop.setContent(content); - } - } - pop.options.cache = cache; - } - }; - - var _updateContentAsync = function (selector, url) { - var pop = $(selector).data('plugin_' + pluginName); - if (pop) { - var cache = pop.getCache(); - var type = pop.options.type; - pop.options.cache = false; - pop.options.url = url; - - if (pop._opened) { - pop._opened = false; - pop.show(); - } else { - pop.options.type = 'async'; - pop.setContentASync(pop.content); - } - pop.options.cache = cache; - pop.options.type = type; - } - }; - - return { - show: _show, - hide: _hide, - create: _create, - isCreated: _isCreated, - hideAll: _hideAll, - updateContent: _updateContent, - updateContentAsync: _updateContentAsync, - setDefaultOptions: _setDefaultOptions - }; - })(); - window.WebuiPopovers = webuiPopovers; - exports("popover",WebuiPopovers); -}) - - - - diff --git a/component/pear/module/select.js b/component/pear/module/select.js deleted file mode 100644 index 3b095f7..0000000 --- a/component/pear/module/select.js +++ /dev/null @@ -1,1740 +0,0 @@ -/** - * name: formSelects - * 基于Layui Select多选 - * version: 4.0.0.0910 - * http://sun.faysunshine.com/layui/formSelects-v4/dist/formSelects-v4.js - */ -(function(layui, window, factory) { - if(typeof exports === 'object') { // 支持 CommonJS - module.exports = factory(); - } else if(typeof define === 'function' && define.amd) { // 支持 AMD - define(factory); - } else if(window.layui && layui.define) { //layui加载 - layui.define(['jquery'], function(exports) { - exports('select', factory()); - }); - } else { - window.formSelects = factory(); - } -})(typeof layui == 'undefined' ? null : layui, window, function() { - let v = '4.0.0.0910', - NAME = 'xm-select', - PNAME = 'xm-select-parent', - INPUT = 'xm-select-input', - TDIV = 'xm-select--suffix', - THIS = 'xm-select-this', - LABEL = 'xm-select-label', - SEARCH = 'xm-select-search', - SEARCH_TYPE = 'xm-select-search-type', - SHOW_COUNT = 'xm-select-show-count', - CREATE = 'xm-select-create', - CREATE_LONG = 'xm-select-create-long', - MAX = 'xm-select-max', - SKIN = 'xm-select-skin', - DIRECTION = "xm-select-direction", - HEIGHT = 'xm-select-height', - DISABLED = 'xm-dis-disabled', - DIS = 'xm-select-dis', - TEMP = 'xm-select-temp', - RADIO = 'xm-select-radio', - LINKAGE= 'xm-select-linkage', - DL = 'xm-select-dl', - DD_HIDE = 'xm-select-hide', - HIDE_INPUT = 'xm-hide-input', - SANJIAO = 'xm-select-sj', - ICON_CLOSE = 'xm-icon-close', - FORM_TITLE = 'xm-select-title', - FORM_SELECT = 'xm-form-select', - FORM_SELECTED = 'xm-form-selected', - FORM_NONE = 'xm-select-none', - FORM_EMPTY = 'xm-select-empty', - FORM_INPUT = 'xm-input', - FORM_DL_INPUT = 'xm-dl-input', - FORM_SELECT_TIPS = 'xm-select-tips', - CHECKBOX_YES = 'xm-iconfont', - FORM_TEAM_PID = 'XM_PID_VALUE', - CZ = 'xm-cz', - CZ_GROUP = 'xm-cz-group', - TIPS = '请选择', - data = {}, - events = { - on: {}, - endOn: {}, - filter: {}, - maxTips: {}, - opened: {}, - closed: {} - }, - ajax = { - type: 'get', - header: { - - }, - first: true, - data: {}, - searchUrl: '', - searchName: 'keyword', - searchVal: null, - keyName: 'name', - keyVal: 'value', - keySel: 'selected', - keyDis: 'disabled', - keyChildren: 'children', - dataType: '', - delay: 500, - beforeSuccess: null, - success: null, - error: null, - beforeSearch: null, - response: { - statusCode: 0, - statusName: 'code', - msgName: 'msg', - dataName: 'data' - }, - tree: { - nextClick: function(id, item, callback){ - callback([]); - }, - folderChoose: true, - lazy: true - } - }, - quickBtns = [ - {icon: 'xm-iconfont icon-quanxuan', name: '全选', click: function(id, cm){ - cm.selectAll(id, true, true); - }}, - {icon: 'xm-iconfont icon-qingkong', name: '清空', click: function(id, cm){ - cm.removeAll(id, true, true); - }}, - {icon: 'xm-iconfont icon-fanxuan', name: '反选', click: function(id, cm){ - cm.reverse(id, true, true); - }}, - {icon: 'xm-iconfont icon-pifu', name: '换肤', click: function(id, cm){ - cm.skin(id); - }} - ], - $ = window.$ || (window.layui && window.layui.jquery), - $win = $(window), - ajaxs = {}, - fsConfig = {}, - fsConfigs = {}, - FormSelects = function(options) { - this.config = { - name: null, //xm-select="xxx" - max: null, - maxTips: (id, vals, val, max) => { - let ipt = $(`[xid="${this.config.name}"]`).prev().find(`.${NAME}`); - if(ipt.parents('.layui-form-item[pane]').length) { - ipt = ipt.parents('.layui-form-item[pane]'); - } - ipt.attr('style', 'border-color: red !important'); - setTimeout(() => { - ipt.removeAttr('style'); - }, 300); - }, - init: null, //初始化的选择值, - on: null, //select值发生变化 - opened: null, - closed: null, - filter: (id, inputVal, val, isDisabled) => { - return val.name.indexOf(inputVal) == -1; - }, - clearid: -1, - direction: 'auto', - height: null, - isEmpty: false, - btns: [quickBtns[0], quickBtns[1], quickBtns[2]], - searchType: 0, - create: (id, name) => { - return Date.now(); - }, - template: (id, item) => { - return item.name; - }, - showCount: 0, - isCreate: false, - placeholder: TIPS, - clearInput: false, - }; - this.select = null; - this.values = []; - $.extend(this.config, options, { - searchUrl: options.isSearch ? options.searchUrl : null, - placeholder: options.optionsFirst ? ( - options.optionsFirst.value ? TIPS : (options.optionsFirst.innerHTML || TIPS) - ) : TIPS, - btns: options.radio ? [quickBtns[1]] : [quickBtns[0], quickBtns[1], quickBtns[2]], - }, fsConfigs[options.name] || fsConfig); - if(isNaN(this.config.showCount) || this.config.showCount <= 0) { - this.config.showCount = 19921012; - } - }; - - //一些简单的处理方法 - let Common = function(){ - this.appender(); - this.on(); - this.onreset(); - }; - - Common.prototype.appender = function(){//针对IE做的一些拓展 - //拓展Array map方法 - if(!Array.prototype.map){Array.prototype.map=function(i,h){var b,a,c,e=Object(this),f=e.length>>>0;if(h){b=h}a=new Array(f);c=0;while(c>>0;if(typeof g!=="function"){throw new TypeError(g+" is not a function")}if(arguments.length>1){d=b}c=0;while(c>>0;if(typeof b!=="function"){throw new TypeError()}var e=[];var d=arguments[1];for(var c=0;c { - let othis = $(select), - id = othis.attr(NAME), - hasLayuiRender = othis.next(`.layui-form-select`), - hasRender = othis.next(`.${PNAME}`), - options = { - name: id, - disabled: select.disabled, - max: othis.attr(MAX) - 0, - isSearch: othis.attr(SEARCH) != undefined, - searchUrl: othis.attr(SEARCH), - isCreate: othis.attr(CREATE) != undefined, - radio: othis.attr(RADIO) != undefined, - skin: othis.attr(SKIN), - direction: othis.attr(DIRECTION), - optionsFirst: select.options[0], - height: othis.attr(HEIGHT), - formname: othis.attr('name') || othis.attr('_name'), - layverify: othis.attr('lay-verify') || othis.attr('_lay-verify'), - layverType: othis.attr('lay-verType'), - searchType: othis.attr(SEARCH_TYPE) == 'dl' ? 1 : 0, - showCount: othis.attr(SHOW_COUNT) - 0, - }, - value = othis.find('option[selected]').toArray().map((option) => {//获取已选中的数据 - return { - name: option.innerHTML, - value: option.value, - } - }), - fs = new FormSelects(options); - - fs.values = value; - - if(fs.config.init) { - fs.values = fs.config.init.map(item => { - if(typeof item == 'object') { - return item; - } - return { - name: othis.find(`option[value="${item}"]`).text(), - value: item - } - }).filter(item => { - return item.name; - }); - fs.config.init = fs.values.concat([]); - }else{ - fs.config.init = value.concat([]); - } - - !fs.values && (fs.values = []); - - data[id] = fs; - - //先取消layui对select的渲染 - hasLayuiRender[0] && hasLayuiRender.remove(); - hasRender[0] && hasRender.remove(); - - //构造渲染div - let dinfo = this.renderSelect(id, fs.config.placeholder, select); - let heightStyle = !fs.config.height || fs.config.height == 'auto' ? '' : `xm-hg style="height: 34px;"`; - let inputHtml = [ - `
                                      `, - ``, - `
                                      ` - ]; - let reElem = - $(`
                                      - -
                                      -
                                      - ${inputHtml.join('')} - -
                                      -
                                      - -
                                      -
                                      -
                                      -
                                      ${dinfo}
                                      -
                                      `); - - var $parent = $(`
                                      `); - $parent.append(reElem) - othis.after($parent); - othis.attr('lay-ignore', ''); - othis.removeAttr('name') && othis.attr('_name', fs.config.formname); - othis.removeAttr('lay-verify') && othis.attr('_lay-verify', fs.config.layverify); - - //如果可搜索, 加上事件 - if(fs.config.isSearch){ - ajaxs[id] = $.extend({}, ajax, {searchUrl: fs.config.searchUrl}, ajaxs[id]); - $(document).on('input', `div.${PNAME}[FS_ID="${id}"] .${INPUT}`, (e) => { - this.search(id, e, fs.config.searchUrl); - }); - if(fs.config.searchUrl){//触发第一次请求事件 - this.triggerSearch(reElem, true); - } - }else{//隐藏第二个dl - reElem.find(`dl dd.${FORM_DL_INPUT}`).css('display', 'none'); - } - }); - } - - Common.prototype.search = function(id, e, searchUrl, call){ - let input; - if(call){ - input = call; - }else{ - input = e.target; - let keyCode = e.keyCode; - if(keyCode === 9 || keyCode === 13 || keyCode === 37 || keyCode === 38 || keyCode === 39 || keyCode === 40) { - return false; - } - } - let inputValue = $.trim(input.value); - //过滤一下tips - this.changePlaceHolder($(input)); - - let ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; - searchUrl = ajaxConfig.searchUrl || searchUrl; - let fs = data[id], - isCreate = fs.config.isCreate, - reElem = $(`dl[xid="${id}"]`).parents(`.${FORM_SELECT}`); - //如果开启了远程搜索 - if(searchUrl){ - if(ajaxConfig.searchVal){ - inputValue = ajaxConfig.searchVal; - ajaxConfig.searchVal = ''; - } - if(!ajaxConfig.beforeSearch || (ajaxConfig.beforeSearch && ajaxConfig.beforeSearch instanceof Function && ajaxConfig.beforeSearch(id, searchUrl, inputValue))){ - let delay = ajaxConfig.delay; - if(ajaxConfig.first){ - ajaxConfig.first = false; - delay = 10; - } - clearTimeout(fs.clearid); - fs.clearid = setTimeout(() => { - reElem.find(`dl > *:not(.${FORM_SELECT_TIPS})`).remove(); - reElem.find(`dd.${FORM_NONE}`).addClass(FORM_EMPTY).text('请求中'); - this.ajax(id, searchUrl, inputValue, false, null, true); - }, delay); - } - }else{ - reElem.find(`dl .${DD_HIDE}`).removeClass(DD_HIDE); - //遍历选项, 选择可以显示的值 - reElem.find(`dl dd:not(.${FORM_SELECT_TIPS})`).each((idx, item) => { - let _item = $(item); - let searchFun = events.filter[id] || data[id].config.filter; - if(searchFun && searchFun(id, inputValue, this.getItem(id, _item), _item.hasClass(DISABLED)) == true){ - _item.addClass(DD_HIDE); - } - }); - //控制分组名称 - reElem.find('dl dt').each((index, item) => { - if(!$(item).nextUntil('dt', `:not(.${DD_HIDE})`).length) { - $(item).addClass(DD_HIDE); - } - }); - //动态创建 - this.create(id, isCreate, inputValue); - let shows = reElem.find(`dl dd:not(.${FORM_SELECT_TIPS}):not(.${DD_HIDE})`); - if(!shows.length){ - reElem.find(`dd.${FORM_NONE}`).addClass(FORM_EMPTY).text('无匹配项'); - }else{ - reElem.find(`dd.${FORM_NONE}`).removeClass(FORM_EMPTY); - } - } - } - - Common.prototype.isArray = function(obj){ - return Object.prototype.toString.call(obj) == "[object Array]"; - } - - Common.prototype.triggerSearch = function(div, isCall){ - (div ? [div] : $(`.${FORM_SELECT}`).toArray()).forEach((reElem, index) => { - reElem = $(reElem); - let id = reElem.find('dl').attr('xid') - if((id && data[id] && data[id].config.isEmpty) || isCall){ - this.search(id, null, null, data[id].config.searchType == 0 ? reElem.find(`.${LABEL} .${INPUT}`) : reElem.find(`dl .${FORM_DL_INPUT} .${INPUT}`)); - } - }); - } - - Common.prototype.clearInput = function(id){ - let div = $(`.${PNAME}[fs_id="${id}"]`); - let input = data[id].config.searchType == 0 ? div.find(`.${LABEL} .${INPUT}`) : div.find(`dl .${FORM_DL_INPUT} .${INPUT}`); - input.val(''); - } - - Common.prototype.ajax = function(id, searchUrl, inputValue, isLinkage, linkageWidth, isSearch, successCallback, isReplace){ - let reElem = $(`.${PNAME} dl[xid="${id}"]`).parents(`.${FORM_SELECT}`); - if(!reElem[0] || !searchUrl){ - return ; - } - let ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; - let ajaxData = $.extend(true, {}, ajaxConfig.data); - ajaxData[ajaxConfig.searchName] = inputValue; - //是否需要对ajax添加随机时间 - //ajaxData['_'] = Date.now(); - $.ajax({ - type: ajaxConfig.type, - headers: ajaxConfig.header, - url: searchUrl, - data: ajaxConfig.dataType == 'json' ? JSON.stringify(ajaxData) : ajaxData, - success: (res) => { - if(typeof res == 'string'){ - res = JSON.parse(res); - } - ajaxConfig.beforeSuccess && ajaxConfig.beforeSuccess instanceof Function && (res = ajaxConfig.beforeSuccess(id, searchUrl, inputValue, res)); - if(this.isArray(res)){ - let newRes = {}; - newRes[ajaxConfig.response.statusName] = ajaxConfig.response.statusCode; - newRes[ajaxConfig.response.msgName] = ""; - newRes[ajaxConfig.response.dataName] = res; - res = newRes; - } - if(res[ajaxConfig.response.statusName] != ajaxConfig.response.statusCode) { - reElem.find(`dd.${FORM_NONE}`).addClass(FORM_EMPTY).text(res[ajaxConfig.response.msgName]); - }else{ - reElem.find(`dd.${FORM_NONE}`).removeClass(FORM_EMPTY); - this.renderData(id, res[ajaxConfig.response.dataName], isLinkage, linkageWidth, isSearch, isReplace); - data[id].config.isEmpty = res[ajaxConfig.response.dataName].length == 0; - } - successCallback && successCallback(id); - ajaxConfig.success && ajaxConfig.success instanceof Function && ajaxConfig.success(id, searchUrl, inputValue, res); - }, - error: (err) => { - reElem.find(`dd[lay-value]:not(.${FORM_SELECT_TIPS})`).remove(); - reElem.find(`dd.${FORM_NONE}`).addClass(FORM_EMPTY).text('服务异常'); - ajaxConfig.error && ajaxConfig.error instanceof Function && ajaxConfig.error(id, searchUrl, inputValue, err); - } - }); - } - - Common.prototype.renderData = function(id, dataArr, linkage, linkageWidth, isSearch, isReplace){ - if(linkage){//渲染多级联动 - this.renderLinkage(id, dataArr, linkageWidth); - return; - } - if(isReplace){ - this.renderReplace(id, dataArr); - return; - } - - let reElem = $(`.${PNAME} dl[xid="${id}"]`).parents(`.${FORM_SELECT}`); - let ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; - let pcInput = reElem.find(`.${TDIV} input`); - - dataArr = this.exchangeData(id, dataArr); - let values = []; - reElem.find('dl').html(this.renderSelect(id, pcInput.attr('placeholder') || pcInput.attr('back'), dataArr.map((item) => { - let itemVal = $.extend({}, item, { - innerHTML: item[ajaxConfig.keyName], - value: item[ajaxConfig.keyVal], - sel: item[ajaxConfig.keySel], - disabled: item[ajaxConfig.keyDis], - type: item.type, - name: item[ajaxConfig.keyName] - }); - if(itemVal.sel){ - values.push(itemVal); - } - return itemVal; - }))); - - let label = reElem.find(`.${LABEL}`); - let dl = reElem.find('dl[xid]'); - if(isSearch){//如果是远程搜索, 这里需要判重 - let oldVal = data[id].values; - oldVal.forEach((item, index) => { - dl.find(`dd[lay-value="${item.value}"]`).addClass(THIS); - }); - values.forEach((item, index) => { - if(this.indexOf(oldVal, item) == -1){ - this.addLabel(id, label, item); - dl.find(`dd[lay-value="${item.value}"]`).addClass(THIS); - oldVal.push(item); - } - }); - }else{ - values.forEach((item, index) => { - this.addLabel(id, label, item); - dl.find(`dd[lay-value="${item.value}"]`).addClass(THIS); - }); - data[id].values = values; - } - this.commonHandler(id, label); - } - - Common.prototype.renderLinkage = function(id, dataArr, linkageWidth){ - let result = [], - index = 0, - temp = {"0": dataArr}, - ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; - db[id] = {}; - do{ - let group = result[index ++] = [], - _temp = temp; - temp = {}; - $.each(_temp, (pid, arr) => { - $.each(arr, (idx, item) => { - let val = { - pid: pid, - name: item[ajaxConfig.keyName], - value: item[ajaxConfig.keyVal], - }; - db[id][val.value] = $.extend(item, val); - group.push(val); - let children = item[ajaxConfig.keyChildren]; - if(children && children.length){ - temp[val.value] = children; - } - }); - }); - }while(Object.getOwnPropertyNames(temp).length); - - let reElem = $(`.${PNAME} dl[xid="${id}"]`).parents(`.${FORM_SELECT}`); - let html = ['
                                      ']; - - $.each(result, (idx, arr) => { - let groupDiv = [`
                                      `]; - $.each(arr, (idx2, item) => { - let span = `
                                    • ${item.name}
                                    • `; - groupDiv.push(span); - }); - groupDiv.push(`
                                      `); - html = html.concat(groupDiv); - }); - html.push('
                                      '); - html.push('
                                      '); - reElem.find('dl').html(html.join('')); - reElem.find(`.${INPUT}`).css('display', 'none');//联动暂时不支持搜索 - } - - Common.prototype.renderReplace = function(id, dataArr){ - let dl = $(`.${PNAME} dl[xid="${id}"]`); - let ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; - - dataArr = this.exchangeData(id, dataArr); - db[id] = dataArr; - - let html = dataArr.map((item) => { - let itemVal = $.extend({}, item, { - innerHTML: item[ajaxConfig.keyName], - value: item[ajaxConfig.keyVal], - sel: item[ajaxConfig.keySel], - disabled: item[ajaxConfig.keyDis], - type: item.type, - name: item[ajaxConfig.keyName] - }); - return this.createDD(id, itemVal); - }).join(''); - - dl.find(`dd:not(.${FORM_SELECT_TIPS}),dt:not([style])`).remove(); - dl.find(`dt[style]`).after($(html)); - } - - Common.prototype.exchangeData = function(id, arr){//这里处理树形结构 - let ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; - let childrenName = ajaxConfig['keyChildren']; - let disabledName = ajaxConfig['keyDis']; - db[id] = {}; - let result = this.getChildrenList(arr, childrenName, disabledName, [], false); - return result; - } - - Common.prototype.getChildrenList = function(arr, childrenName, disabledName, pid, disabled){ - let result = [], offset = 0; - for(let a = 0; a < arr.length; a ++){ - let item = arr[a]; - if(item.type && item.type == 'optgroup'){ - result.push(item); - continue; - }else{ - offset ++; - } - let parentIds = pid.concat([]); - parentIds.push(`${offset - 1}_E`); - item[FORM_TEAM_PID] = JSON.stringify(parentIds); - item[disabledName] = item[disabledName] || disabled; - result.push(item); - let child = item[childrenName]; - if(child && common.isArray(child) && child.length){ - item['XM_TREE_FOLDER'] = true; - let pidArr = parentIds.concat([]); - let childResult = this.getChildrenList(child, childrenName, disabledName, pidArr, item[disabledName]); - result = result.concat(childResult); - } - } - return result; - } - - Common.prototype.create = function(id, isCreate, inputValue){ - if(isCreate && inputValue){ - let fs = data[id], - dl = $(`[xid="${id}"]`), - tips= dl.find(`dd.${FORM_SELECT_TIPS}.${FORM_DL_INPUT}`), - tdd = null, - temp = dl.find(`dd.${TEMP}`); - dl.find(`dd:not(.${FORM_SELECT_TIPS}):not(.${TEMP})`).each((index, item) => { - if(inputValue == $(item).find('span').attr('name')){ - tdd = item; - } - }); - if(!tdd){//如果不存在, 则创建 - let val = fs.config.create(id, inputValue); - if(temp[0]){ - temp.attr('lay-value', val); - temp.find('span').text(inputValue); - temp.find('span').attr("name", inputValue); - temp.removeClass(DD_HIDE); - }else{ - tips.after($(this.createDD(id, { - name: inputValue, - innerHTML: inputValue, - value: val - }, `${TEMP} ${CREATE_LONG}`))); - } - } - }else{ - $(`[xid=${id}] dd.${TEMP}`).remove(); - } - } - - Common.prototype.createDD = function(id, item, clz){ - let ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; - let name = $.trim(item.innerHTML); - db[id][item.value] = $(item).is('option') ? (item = function(){ - let resultItem = {}; - resultItem[ajaxConfig.keyName] = name; - resultItem[ajaxConfig.keyVal] = item.value; - resultItem[ajaxConfig.keyDis] = item.disabled; - return resultItem; - }()) : item; - let template = data[id].config.template(id, item); - let pid = item[FORM_TEAM_PID]; - pid ? (pid = JSON.parse(pid)) : (pid = [-1]); - let attr = pid[0] == -1 ? '' : `tree-id="${pid.join('-')}" tree-folder="${!!item['XM_TREE_FOLDER']}"`; - return `
                                      -
                                      - - ${template} -
                                      -
                                      `; - } - - Common.prototype.createQuickBtn = function(obj, right){ - return `
                                      ${obj.name}
                                      ` - } - - Common.prototype.renderBtns = function(id, show, right){ - let quickBtn = []; - let dl = $(`dl[xid="${id}"]`); - quickBtn.push(`
                                      `); - $.each(data[id].config.btns, (index, item) => { - quickBtn.push(this.createQuickBtn(item, right)); - }); - quickBtn.push(`
                                      `); - quickBtn.push(this.createQuickBtn({icon: 'xm-iconfont icon-caidan', name: ''})); - return quickBtn.join(''); - } - - Common.prototype.renderSelect = function(id, tips, select){ - db[id] = {}; - let arr = []; - if(data[id].config.btns.length){ - setTimeout(() => { - let dl = $(`dl[xid="${id}"]`); - dl.parents(`.${FORM_SELECT}`).attr(SEARCH_TYPE, data[id].config.searchType); - dl.find(`.${CZ_GROUP}`).css('max-width', `${dl.prev().width() - 54}px`); - }, 10) - arr.push([ - `
                                      `, - this.renderBtns(id, null, '30px'), - `
                                      `, - `
                                      `, - ``, - ``, - `
                                      ` - ].join('')); - }else{ - arr.push(`
                                      ${tips}
                                      `); - } - if(this.isArray(select)){ - $(select).each((index, item) => { - if(item){ - if(item.type && item.type === 'optgroup') { - arr.push(`
                                      ${item.name}
                                      `); - } else { - arr.push(this.createDD(id, item)); - } - } - }); - }else{ - $(select).find('*').each((index, item) => { - if(item.tagName.toLowerCase() == 'option' && index == 0 && !item.value){ - return ; - } - if(item.tagName.toLowerCase() === 'optgroup') { - arr.push(`
                                      ${item.label}
                                      `); - } else { - arr.push(this.createDD(id, item)); - } - }); - } - arr.push('
                                      '); - arr.push(`
                                      没有选项
                                      `); - return arr.join(''); - } - - Common.prototype.on = function(){//事件绑定 - this.one(); - - $(document).on('click', (e) => { - if(!$(e.target).parents(`.${FORM_TITLE}`)[0]){//清空input中的值 - $(`.${PNAME} dl .${DD_HIDE}`).removeClass(DD_HIDE); - $(`.${PNAME} dl dd.${FORM_EMPTY}`).removeClass(FORM_EMPTY); - $(`.${PNAME} dl dd.${TEMP}`).remove(); - $.each(data, (key, fs) => { - this.clearInput(key); - if(!fs.values.length){ - this.changePlaceHolder($(`div[FS_ID="${key}"] .${LABEL}`)); - } - }); - } - $(`.${PNAME} .${FORM_SELECTED}`).each((index, item) => { - this.changeShow($(item).find(`.${FORM_TITLE}`), false); - }) ; - }); - } - - Common.prototype.calcLabelLeft = function(label, w, call){ - let pos = this.getPosition(label[0]); - pos.y = pos.x + label[0].clientWidth; - let left = label[0].offsetLeft; - if(!label.find('span').length){ - left = 0; - }else if(call){//校正归位 - let span = label.find('span:last'); - span.css('display') == 'none' ? (span = span.prev()[0]) : (span = span[0]); - let spos = this.getPosition(span); - spos.y = spos.x + span.clientWidth; - - if(spos.y > pos.y){ - left = left - (spos.y - pos.y) - 5; - }else{ - left = 0; - } - }else{ - if(w < 0){ - let span = label.find(':last'); - span.css('display') == 'none' ? (span = span.prev()[0]) : (span = span[0]); - let spos = this.getPosition(span); - spos.y = spos.x + span.clientWidth; - if(spos.y > pos.y){ - left -= 10; - } - }else{ - if(left < 0){ - left += 10; - } - if(left > 0){ - left = 0; - } - } - } - label.css('left', left + 'px'); - } - - Common.prototype.one = function(target){//一次性事件绑定 - $(target ? target : document).off('click', `.${FORM_TITLE}`).on('click', `.${FORM_TITLE}`, (e) => { - let othis = $(e.target), - title = othis.is(FORM_TITLE) ? othis : othis.parents(`.${FORM_TITLE}`), - dl = title.next(), - id = dl.attr('xid'); - - //清空非本select的input val - $(`dl[xid]`).not(dl).each((index, item) => { - this.clearInput($(item).attr('xid')); - }); - $(`dl[xid]`).not(dl).find(`dd.${DD_HIDE}`).removeClass(DD_HIDE); - - //如果是disabled select - if(title.hasClass(DIS)){ - return false; - } - //如果点击的是右边的三角或者只读的input - if(othis.is(`.${SANJIAO}`) || othis.is(`.${INPUT}[readonly]`)){ - this.changeShow(title, !title.parents(`.${FORM_SELECT}`).hasClass(FORM_SELECTED)); - return false; - } - //如果点击的是input的右边, focus一下 - if(title.find(`.${INPUT}:not(readonly)`)[0]){ - let input = title.find(`.${INPUT}`), - epos = {x: e.pageX, y: e.pageY}, - pos = this.getPosition(title[0]), - width = title.width(); - while(epos.x > pos.x){ - if($(document.elementFromPoint(epos.x, epos.y)).is(input)){ - input.focus(); - this.changeShow(title, true); - return false; - } - epos.x -= 50; - } - } - - //如果点击的是可搜索的input - if(othis.is(`.${INPUT}`)){ - this.changeShow(title, true); - return false; - } - //如果点击的是x按钮 - if(othis.is(`i[fsw="${NAME}"]`)){ - let val = this.getItem(id, othis), - dd = dl.find(`dd[lay-value='${val.value}']`); - if(dd.hasClass(DISABLED)){//如果是disabled状态, 不可选, 不可删 - return false; - } - this.handlerLabel(id, dd, false, val); - return false; - } - - this.changeShow(title, !title.parents(`.${FORM_SELECT}`).hasClass(FORM_SELECTED)); - return false; - }); - $(target ? target : document).off('click', `dl.${DL}`).on('click', `dl.${DL}`, (e) => { - let othis = $(e.target); - if(othis.is(`.${LINKAGE}`) || othis.parents(`.${LINKAGE}`)[0]){//linkage的处理 - othis = othis.is('li') ? othis : othis.parents('li[xm-value]'); - let group = othis.parents('.xm-select-linkage-group'), - id = othis.parents('dl').attr('xid'); - if(!id){ - return false; - } - //激活li - group.find('.xm-select-active').removeClass('xm-select-active'); - othis.addClass('xm-select-active'); - //激活下一个group, 激活前显示对应数据 - group.nextAll('.xm-select-linkage-group').addClass('xm-select-linkage-hide'); - let nextGroup = group.next('.xm-select-linkage-group'); - nextGroup.find('li').addClass('xm-select-linkage-hide'); - nextGroup.find(`li[pid="${othis.attr('xm-value')}"]`).removeClass('xm-select-linkage-hide'); - //如果没有下一个group, 或没有对应的值 - if(!nextGroup[0] || nextGroup.find(`li:not(.xm-select-linkage-hide)`).length == 0){ - let vals = [], - index = 0, - isAdd = !othis.hasClass('xm-select-this'); - if(data[id].config.radio){ - othis.parents('.xm-select-linkage').find('.xm-select-this').removeClass('xm-select-this'); - } - do{ - vals[index ++] = { - name: othis.find('span').text(), - value: othis.attr('xm-value') - } - othis = othis.parents('.xm-select-linkage-group').prev().find(`li[xm-value="${othis.attr('pid')}"]`); - }while(othis.length); - vals.reverse(); - let val = { - name: vals.map((item) => { - return item.name; - }).join('/'), - value: vals.map((item) => { - return item.value; - }).join('/'), - } - this.handlerLabel(id, null, isAdd, val); - }else{ - nextGroup.removeClass('xm-select-linkage-hide'); - } - return false; - } - - if(othis.is('dl')){ - return false; - } - - if(othis.is('dt')){ - othis.nextUntil(`dt`).each((index, item) => { - item = $(item); - if(item.hasClass(DISABLED) || item.hasClass(THIS)){ - - }else{ - item.find('i:not(.icon-expand)').click(); - } - }); - return false; - } - let dd = othis.is('dd') ? othis : othis.parents('dd'); - let id = dd.parent('dl').attr('xid'); - - if(dd.hasClass(DISABLED)){//被禁用选项的处理 - return false; - } - - //菜单功效 - if(othis.is('i.icon-caidan')){ - let opens = [], closes = []; - othis.parents('dl').find('dd[tree-folder="true"]').each((index, item) => { - $(item).attr('xm-tree-hidn') == undefined ? opens.push(item) : closes.push(item); - }); - let arr = closes.length ? closes : opens; - arr.forEach(item => item.click()); - return false; - } - //树状结构的选择 - let treeId = dd.attr('tree-id'); - if(treeId){ - //忽略右边的图标 - if(othis.is('i:not(.icon-expand)')){ - this.handlerLabel(id, dd, !dd.hasClass(THIS)); - return false; - } - let ajaxConfig = ajaxs[id] || ajax; - let treeConfig = ajaxConfig.tree; - let childrens = dd.nextAll(`dd[tree-id^="${treeId}"]`); - if(childrens && childrens.length){ - let len = childrens[0].clientHeight; - len ? ( - this.addTreeHeight(dd, len), - len = 0 - ) : ( - len = dd.attr('xm-tree-hidn') || 36, - dd.removeAttr('xm-tree-hidn'), - dd.find('>i').remove(), - (childrens = childrens.filter((index, item) => $(item).attr('tree-id').split('-').length - 1 == treeId.split('-').length)) - ); - childrens.animate({ - height: len - }, 150) - return false; - }else{ - if(treeConfig.nextClick && treeConfig.nextClick instanceof Function){ - treeConfig.nextClick(id, this.getItem(id, dd), (res) => { - if(!res || !res.length){ - this.handlerLabel(id, dd, !dd.hasClass(THIS)); - }else{ - dd.attr('tree-folder', 'true'); - let ddChilds = []; - res.forEach((item, idx) => { - item.innerHTML = item[ajaxConfig.keyName]; - item[FORM_TEAM_PID] = JSON.stringify(treeId.split('-').concat([idx])); - ddChilds.push(this.createDD(id, item)); - db[id][item[ajaxConfig.keyVal]] = item; - }); - dd.after(ddChilds.join('')); - } - }); - return false; - } - } - } - - if(dd.hasClass(FORM_SELECT_TIPS)){//tips的处理 - let btn = othis.is(`.${CZ}`) ? othis : othis.parents(`.${CZ}`); - if(!btn[0]){ - return false; - } - let method = btn.attr('method'); - let obj = data[id].config.btns.filter(bean => bean.name == method)[0]; - obj && obj.click && obj.click instanceof Function && obj.click(id, this); - return false; - } - this.handlerLabel(id, dd, !dd.hasClass(THIS)); - return false; - }); - } - - Common.prototype.addTreeHeight = function(dd, len){ - let treeId = dd.attr('tree-id'); - let childrens = dd.nextAll(`dd[tree-id^="${treeId}"]`); - if(childrens.length){ - dd.append(''); - dd.attr('xm-tree-hidn', len); - childrens.each((index, item) => { - let that = $(item); - this.addTreeHeight(that, len); - }) - } - } - - let db = {}; - Common.prototype.getItem = function(id, value){ - if(value instanceof $){ - if(value.is(`i[fsw="${NAME}"]`)){ - let span = value.parent(); - return db[id][value] || { - name: span.find('font').text(), - value: span.attr('value') - } - } - let val = value.attr('lay-value'); - return !db[id][val] ? (db[id][val] = { - name: value.find('span[name]').attr('name'), - value: val - }) : db[id][val]; - }else if(typeof(value) == 'string' && value.indexOf('/') != -1){ - return db[id][value] || { - name: this.valToName(id, value), - value: value - } - } - return db[id][value]; - } - - Common.prototype.linkageAdd = function(id, val){ - let dl = $(`dl[xid="${id}"]`); - dl.find('.xm-select-active').removeClass('xm-select-active'); - let vs = val.value.split('/'); - let pid, li, index = 0; - let lis = []; - do{ - pid = vs[index]; - li = dl.find(`.xm-select-linkage-group${index + 1} li[xm-value="${pid}"]`); - li[0] && lis.push(li); - index ++; - }while(li.length && pid != undefined); - if(lis.length == vs.length){ - $.each(lis, (idx, item) => { - item.addClass('xm-select-this'); - }); - } - } - - Common.prototype.linkageDel = function(id, val){ - let dl = $(`dl[xid="${id}"]`); - let vs = val.value.split('/'); - let pid, li, index = vs.length - 1; - do{ - pid = vs[index]; - li = dl.find(`.xm-select-linkage-group${index + 1} li[xm-value="${pid}"]`); - if(!li.parent().next().find(`li[pid=${pid}].xm-select-this`).length){ - li.removeClass('xm-select-this'); - } - index --; - }while(li.length && pid != undefined); - } - - Common.prototype.valToName = function(id, val){ - let dl = $(`dl[xid="${id}"]`); - let vs = (val + "").split('/'); - if(!vs.length){ - return null; - } - let names = []; - $.each(vs, (idx, item) => { - let name = dl.find(`.xm-select-linkage-group${idx + 1} li[xm-value="${item}"] span`).text(); - names.push(name); - }); - return names.length == vs.length ? names.join('/') : null; - } - - Common.prototype.commonHandler = function(key, label){ - if(!label || !label[0]){ - return ; - } - this.checkHideSpan(key, label); - //计算input的提示语 - this.changePlaceHolder(label); - //计算高度 - this.retop(label.parents(`.${FORM_SELECT}`)); - this.calcLabelLeft(label, 0, true); - //表单默认值 - this.setHidnVal(key, label); - //title值 - label.parents(`.${FORM_TITLE} .${NAME}`).attr('title', data[key].values.map((val) => { - return val.name; - }).join(',')); - } - - Common.prototype.initVal = function(id){ - let target = {}; - if(id){ - target[id] = data[id]; - }else{ - target = data; - } - $.each(target, (key, val) => { - let values = val.values, - div = $(`dl[xid="${key}"]`).parent(), - label = div.find(`.${LABEL}`), - dl = div.find('dl'); - dl.find(`dd.${THIS}`).removeClass(THIS); - - let _vals = values.concat([]); - _vals.concat([]).forEach((item, index) => { - this.addLabel(key, label, item); - dl.find(`dd[lay-value="${item.value}"]`).addClass(THIS); - }); - if(val.config.radio){ - _vals.length && values.push(_vals[_vals.length - 1]); - } - this.commonHandler(key, label); - }); - } - - Common.prototype.setHidnVal = function(key, label) { - if(!label || !label[0]) { - return; - } - label.parents(`.${PNAME}`).find(`.${HIDE_INPUT}`).val(data[key].values.map((val) => { - return val.value; - }).join(',')); - } - - Common.prototype.handlerLabel = function(id, dd, isAdd, oval, notOn){ - let div = $(`[xid="${id}"]`).prev().find(`.${LABEL}`), - val = dd && this.getItem(id, dd), - vals = data[id].values, - on = data[id].config.on || events.on[id], - endOn = data[id].config.endOn || events.endOn[id]; - if(oval){ - val = oval; - } - let fs = data[id]; - if(isAdd && fs.config.max && fs.values.length >= fs.config.max){ - let maxTipsFun = events.maxTips[id] || data[id].config.maxTips; - maxTipsFun && maxTipsFun(id, vals.concat([]), val, fs.config.max); - return ; - } - if(!notOn){ - if(on && on instanceof Function && on(id, vals.concat([]), val, isAdd, dd && dd.hasClass(DISABLED)) == false) { - return ; - } - } - let dl = $(`dl[xid="${id}"]`); - isAdd ? ( - (dd && dd[0] ? ( - dd.addClass(THIS), - dd.removeClass(TEMP) - ) : ( - dl.find('.xm-select-linkage')[0] && this.linkageAdd(id, val) - )), - this.addLabel(id, div, val), - vals.push(val) - ) : ( - (dd && dd[0] ? ( - dd.removeClass(THIS) - ) : ( - dl.find('.xm-select-linkage')[0] && this.linkageDel(id, val) - )), - this.delLabel(id, div, val), - this.remove(vals, val) - ); - if(!div[0]) return ; - //单选选完后直接关闭选择域 - if(fs.config.radio){ - this.changeShow(div, false); - } - //移除表单验证的红色边框 - div.parents(`.${FORM_TITLE}`).prev().removeClass('layui-form-danger'); - - //清空搜索值 - fs.config.clearInput && this.clearInput(id); - - this.commonHandler(id, div); - - !notOn && endOn && endOn instanceof Function && endOn(id, vals.concat([]), val, isAdd, dd && dd.hasClass(DISABLED)); - } - - Common.prototype.addLabel = function(id, div, val){ - if(!val) return ; - let tips = `fsw="${NAME}"`; - let [$label, $close] = [ - $(`${val.name}`), - $(``) - ]; - $label.append($close); - //如果是radio模式 - let fs = data[id]; - if(fs.config.radio){ - fs.values.length = 0; - $(`dl[xid="${id}"]`).find(`dd.${THIS}:not([lay-value="${val.value}"])`).removeClass(THIS); - div.find('span').remove(); - } - //如果是固定高度 - div.find('input').css('width', '50px'); - div.find('input').before($label); - } - - Common.prototype.delLabel = function(id, div, val){ - if(!val) return ; - div.find(`span[value="${val.value}"]:first`).remove(); - } - - Common.prototype.checkHideSpan = function(id, div){ - let parentHeight = div.parents(`.${NAME}`)[0].offsetHeight + 5; - div.find('span.xm-span-hide').removeClass('xm-span-hide'); - div.find('span[style]').remove(); - - let count = data[id].config.showCount; - div.find('span').each((index, item) => { - if(index >= count){ - $(item).addClass('xm-span-hide'); - } - }); - - let prefix = div.find(`span:eq(${count})`); - prefix[0] && prefix.before($(` + ${div.find('span').length - count}`)) - } - - Common.prototype.retop = function(div){//计算dl显示的位置 - let dl = div.find('dl'), - top = div.offset().top + div.outerHeight() + 5 - $win.scrollTop(), - dlHeight = dl.outerHeight(); - let up = div.hasClass('layui-form-selectup') || dl.css('top').indexOf('-') != -1 || (top + dlHeight > $win.height() && top >= dlHeight); - div = div.find(`.${NAME}`); - - let fs = data[dl.attr('xid')]; - let base = dl.parents('.layui-form-pane')[0] && dl.prev()[0].clientHeight > 38 ? 14 : 10; - if((fs && fs.config.direction == 'up') || up){ - up = true; - if((fs && fs.config.direction == 'down')){ - up = false; - } - } - let reHeight = div[0].offsetTop + div.height() + base; - if(up) { - dl.css({ - top: 'auto', - bottom: reHeight + 3 + 'px', - }); - } else { - dl.css({ - top: reHeight + 'px', - bottom: 'auto' - }); - } - } - - Common.prototype.changeShow = function(children, isShow){//显示于隐藏 - $('.layui-form-selected').removeClass('layui-form-selected'); - let top = children.parents(`.${FORM_SELECT}`), - realShow = top.hasClass(FORM_SELECTED), - id = top.find('dl').attr('xid'); - $(`.${PNAME} .${FORM_SELECT}`).not(top).removeClass(FORM_SELECTED); - if(isShow){ - this.retop(top); - top.addClass(FORM_SELECTED); - top.find(`.${INPUT}`).focus(); - if(!top.find(`dl dd[lay-value]:not(.${FORM_SELECT_TIPS})`).length){ - top.find(`dl .${FORM_NONE}`).addClass(FORM_EMPTY); - } - }else{ - top.removeClass(FORM_SELECTED); - this.clearInput(id); - top.find(`dl .${FORM_EMPTY}`).removeClass(FORM_EMPTY); - top.find(`dl dd.${DD_HIDE}`).removeClass(DD_HIDE); - top.find(`dl dd.${TEMP}`).remove(); - //计算ajax数据是否为空, 然后重新请求数据 - if(id && data[id] && data[id].config.isEmpty){ - this.triggerSearch(top); - } - this.changePlaceHolder(top.find(`.${LABEL}`)); - } - if(isShow != realShow){ - let openFun = data[id].config.opened || events.opened[id]; - isShow && openFun && openFun instanceof Function && openFun(id); - let closeFun = data[id].config.closed || events.closed[id]; - !isShow && closeFun && closeFun instanceof Function && closeFun(id); - } - } - - Common.prototype.changePlaceHolder = function(div){//显示于隐藏提示语 - //调整pane模式下的高度 - let title = div.parents(`.${FORM_TITLE}`); - title[0] || (title = div.parents(`dl`).prev()); - if(!title[0]){ - return ; - } - - let id = div.parents(`.${PNAME}`).find(`dl[xid]`).attr('xid'); - if(data[id] && data[id].config.height){//既然固定高度了, 那就看着办吧 - - }else{ - let height = title.find(`.${NAME}`)[0].clientHeight; - title.css('height' , (height > 36 ? height + 4 : height) + 'px'); - //如果是layui pane模式, 处理label的高度 - let label = title.parents(`.${PNAME}`).parent().prev(); - if(label.is('.layui-form-label') && title.parents('.layui-form-pane')[0]){ - height = height > 36 ? height + 4 : height; - title.css('height' , height + 'px'); - label.css({ - height: height + 2 + 'px', - lineHeight: (height - 18) + 'px' - }) - } - } - - let input = title.find(`.${TDIV} input`), - isShow = !div.find('span:last')[0] && !title.find(`.${INPUT}`).val(); - if(isShow){ - let ph = input.attr('back'); - input.removeAttr('back'); - input.attr('placeholder', ph); - }else{ - let ph = input.attr('placeholder'); - input.removeAttr('placeholder'); - input.attr('back', ph) - } - } - - Common.prototype.indexOf = function(arr, val){ - for(let i = 0; i < arr.length; i++) { - if(arr[i].value == val || arr[i].value == (val ? val.value : val) || arr[i] == val || JSON.stringify(arr[i]) == JSON.stringify(val)) { - return i; - } - } - return -1; - } - - Common.prototype.remove = function(arr, val){ - let idx = this.indexOf(arr, val ? val.value : val); - if(idx > -1) { - arr.splice(idx, 1); - return true; - } - return false; - } - - Common.prototype.selectAll = function(id, isOn, skipDis){ - let dl = $(`[xid="${id}"]`); - if(!dl[0]){ - return ; - } - if(dl.find('.xm-select-linkage')[0]){ - return ; - } - dl.find(`dd[lay-value]:not(.${FORM_SELECT_TIPS}):not(.${THIS})${skipDis ? ':not(.'+DISABLED+')' :''}`).each((index, item) => { - item = $(item); - let val = this.getItem(id, item); - this.handlerLabel(id, dl.find(`dd[lay-value="${val.value}"]`), true, val, !isOn); - }); - } - - Common.prototype.removeAll = function(id, isOn, skipDis){ - let dl = $(`[xid="${id}"]`); - if(!dl[0]){ - return ; - } - if(dl.find('.xm-select-linkage')[0]){//针对多级联动的处理 - data[id].values.concat([]).forEach((item, idx) => { - let vs = item.value.split('/'); - let pid, li, index = 0; - do{ - pid = vs[index ++]; - li = dl.find(`.xm-select-linkage-group${index}:not(.xm-select-linkage-hide) li[xm-value="${pid}"]`); - li.click(); - }while(li.length && pid != undefined); - }); - return ; - } - data[id].values.concat([]).forEach((item, index) => { - if(skipDis && dl.find(`dd[lay-value="${item.value}"]`).hasClass(DISABLED)){ - - }else{ - this.handlerLabel(id, dl.find(`dd[lay-value="${item.value}"]`), false, item, !isOn); - } - }); - } - - Common.prototype.reverse = function(id, isOn, skipDis){ - let dl = $(`[xid="${id}"]`); - if(!dl[0]){ - return ; - } - if(dl.find('.xm-select-linkage')[0]){ - return ; - } - dl.find(`dd[lay-value]:not(.${FORM_SELECT_TIPS})${skipDis ? ':not(.'+DISABLED+')' :''}`).each((index, item) => { - item = $(item); - let val = this.getItem(id, item); - this.handlerLabel(id, dl.find(`dd[lay-value="${val.value}"]`), !item.hasClass(THIS), val, !isOn); - }); - } - - Common.prototype.skin = function(id){ - let skins = ['default' ,'primary', 'normal', 'warm', 'danger']; - let skin = skins[Math.floor(Math.random() * skins.length)]; - $(`dl[xid="${id}"]`).parents(`.${PNAME}`).find(`.${FORM_SELECT}`).attr('xm-select-skin', skin); - this.check(id) && this.commonHandler(id, $(`dl[xid="${id}"]`).parents(`.${PNAME}`).find(`.${LABEL}`)); - } - - Common.prototype.getPosition = function(e){ - let x = 0, y = 0; - while (e != null) { - x += e.offsetLeft; - y += e.offsetTop; - e = e.offsetParent; - } - return { x: x, y: y }; - }; - - Common.prototype.onreset = function(){//监听reset按钮, 然后重置多选 - $(document).on('click', '[type=reset]', (e) => { - $(e.target).parents('form').find(`.${PNAME} dl[xid]`).each((index, item) => { - let id = item.getAttribute('xid'), - dl = $(item), - dd, - temp = {}; - common.removeAll(id); - data[id].config.init.forEach((val, idx) => { - if(val && (!temp[val] || data[id].config.repeat) && (dd = dl.find(`dd[lay-value="${val.value}"]`))[0]){ - common.handlerLabel(id, dd, true); - temp[val] = 1; - } - }); - }) - }); - } - - Common.prototype.bindEvent = function(name, id, fun){ - if(id && id instanceof Function){ - fun = id; - id = null; - } - if(fun && fun instanceof Function){ - if(!id){ - $.each(data, (id, val) => { - data[id] ? (data[id].config[name] = fun) : (events[name][id] = fun) - }) - }else{ - data[id] ? (data[id].config[name] = fun, delete events[name][id]) : (events[name][id] = fun) - } - } - } - - Common.prototype.check = function(id, notAutoRender){ - if($(`dl[xid="${id}"]`).length) { - return true; - }else if($(`select[xm-select="${id}"]`).length){ - if(!notAutoRender){ - this.render(id, $(`select[xm-select="${id}"]`)); - return true; - } - }else{ - delete data[id]; - return false; - } - } - - Common.prototype.render = function(id, select){ - common.init(select); - common.one($(`dl[xid="${id}"]`).parents(`.${PNAME}`)); - common.initVal(id); - } - - Common.prototype.log = function(obj){ - console.log(obj); - } - - let Select4 = function(){ - this.v = v; - this.render(); - }; - let common = new Common(); - - Select4.prototype.value = function(id, type, isAppend){ - if(typeof id != 'string'){ - return []; - } - let fs = data[id]; - if(!common.check(id)){ - return []; - } - if(typeof type == 'string' || type == undefined){ - let arr = fs.values.concat([]) || []; - if(type == 'val') { - return arr.map((val) => { - return val.value; - }); - } - if(type == 'valStr') { - return arr.map((val) => { - return val.value; - }).join(','); - } - if(type == 'name') { - return arr.map((val) => { - return val.name; - }); - } - if(type == 'nameStr') { - return arr.map((val) => { - return val.name; - }).join(','); - } - return arr; - } - if(common.isArray(type)) { - let dl = $(`[xid="${id}"]`), - temp = {}, - dd, - isAdd = true; - if(isAppend == false){//删除传入的数组 - isAdd = false; - }else if(isAppend == true){//追加模式 - isAdd = true; - }else{//删除原有的数据 - common.removeAll(id); - } - if(isAdd){ - fs.values.forEach((val, index) => { - temp[val.value] = 1; - }); - } - type.forEach((val, index) => { - if(val && (!temp[val] || fs.config.repeat)){ - if((dd = dl.find(`dd[lay-value="${val}"]`))[0]){ - common.handlerLabel(id, dd, isAdd, null, true); - temp[val] = 1; - }else{ - let name = common.valToName(id, val); - if(name){ - common.handlerLabel(id, dd, isAdd, common.getItem(id, val), true); - temp[val] = 1; - } - } - } - }); - } - } - - Select4.prototype.on = function(id, fun, isEnd) { - common.bindEvent(isEnd ? 'endOn' : 'on', id, fun); - return this; - } - - Select4.prototype.filter = function(id, fun){ - common.bindEvent('filter', id, fun); - return this; - } - - Select4.prototype.maxTips = function(id, fun){ - common.bindEvent('maxTips', id, fun); - return this; - } - - Select4.prototype.opened = function(id, fun){ - common.bindEvent('opened', id, fun); - return this; - } - - Select4.prototype.closed = function(id, fun){ - common.bindEvent('closed', id, fun); - return this; - } - - Select4.prototype.config = function(id, config, isJson){ - if(id && typeof id == 'object'){ - isJson = config == true; - config = id; - id = null; - } - if(config && typeof config== 'object'){ - if(isJson){ - config.header || (config.header = {}); - config.header['Content-Type'] = 'application/json; charset=UTF-8'; - config.dataType = 'json'; - } - id ? ( - ajaxs[id] = $.extend(true, {}, ajaxs[id] || ajax, config), !common.check(id) && this.render(id), - data[id] && config.direction && (data[id].config.direction = config.direction), - data[id] && config.clearInput && (data[id].config.clearInput = true), - config.searchUrl && data[id] && common.triggerSearch($(`.${PNAME} dl[xid="${id}"]`).parents(`.${FORM_SELECT}`), true) - ) : ( - $.extend(true, ajax, config), - $.each(ajaxs, (key, item) => { - $.extend(true, item, config) - }) - ); - } - return this; - } - - Select4.prototype.render = function(id, options){ - if(id && typeof id == 'object'){ - options = id; - id = null; - } - let config = options ? { - init: options.init, - disabled: options.disabled, - max: options.max, - isSearch: options.isSearch, - searchUrl: options.searchUrl, - isCreate: options.isCreate, - radio: options.radio, - skin: options.skin, - direction: options.direction, - height: options.height, - formname: options.formname, - layverify: options.layverify, - layverType: options.layverType, - showCount: options.showCount, - placeholder: options.placeholder, - create: options.create, - filter: options.filter, - maxTips: options.maxTips, - on: options.on, - on: options.on, - opened: options.opened, - closed: options.closed, - template: options.template, - clearInput: options.clearInput, - } : {}; - - options && options.searchType != undefined && (config.searchType = options.searchType == 'dl' ? 1 : 0); - - if(id){ - fsConfigs[id] = {}; - $.extend(fsConfigs[id], data[id] ? data[id].config : {}, config); - }else{ - $.extend(fsConfig, config); - } - - ($(`select[${NAME}="${id}"]`)[0] ? $(`select[${NAME}="${id}"]`) : $(`select[${NAME}]`)).each((index, select) => { - let sid = select.getAttribute(NAME); - common.render(sid, select); - setTimeout(() => common.setHidnVal(sid, $(`select[xm-select="${sid}"] + div.${PNAME} .${LABEL}`)), 10); - }); - return this; - } - - Select4.prototype.disabled = function(id){ - let target = {}; - id ? (common.check(id) && (target[id] = data[id])) : (target = data); - - $.each(target, (key, val) => { - $(`dl[xid="${key}"]`).prev().addClass(DIS); - }); - return this; - } - - Select4.prototype.undisabled = function(id){ - let target = {}; - id ? (common.check(id) && (target[id] = data[id])) : (target = data); - - $.each(target, (key, val) => { - $(`dl[xid="${key}"]`).prev().removeClass(DIS); - }); - return this; - } - - Select4.prototype.data = function(id, type, config){ - if(!id || !type || !config){ - common.log(`id: ${id} param error !!!`) - return this; - } - if(!common.check(id)){ - common.log(`id: ${id} not render !!!`) - return this; - } - this.value(id, []); - this.config(id, config); - if(type == 'local'){ - common.renderData(id, config.arr, config.linkage == true, config.linkageWidth ? config.linkageWidth : '100'); - }else if(type == 'server'){ - common.ajax(id, config.url, config.keyword, config.linkage == true, config.linkageWidth ? config.linkageWidth : '100'); - } - return this; - } - - Select4.prototype.btns = function(id, btns, config){ - if(id && common.isArray(id)){ - btns = id; - id = null; - } - if(!btns || !common.isArray(btns)) { - return this; - }; - let target = {}; - id ? (common.check(id) && (target[id] = data[id])) : (target = data); - - btns = btns.map((obj) => { - if(typeof obj == 'string'){ - if(obj == 'select'){ - return quickBtns[0]; - } - if(obj == 'remove'){ - return quickBtns[1]; - } - if(obj == 'reverse'){ - return quickBtns[2]; - } - if(obj == 'skin'){ - return quickBtns[3]; - } - } - return obj; - }); - - $.each(target, (key, val) => { - val.config.btns = btns; - let dd = $(`dl[xid="${key}"]`).find(`.${FORM_SELECT_TIPS}:first`); - if(btns.length){ - let show = config && config.show && (config.show == 'name' || config.show == 'icon') ? config.show : ''; - let html = common.renderBtns(key, show, config && config.space ? config.space : '30px'); - dd.html(html); - }else{ - let pcInput = dd.parents(`.${FORM_SELECT}`).find(`.${TDIV} input`); - let html = pcInput.attr('placeholder') || pcInput.attr('back'); - dd.html(html); - dd.removeAttr('style'); - } - }); - - return this; - } - - Select4.prototype.search = function(id, val){ - if(id && common.check(id)){ - ajaxs[id] = $.extend(true, {}, ajaxs[id] || ajax, { - first: true, - searchVal: val - }); - common.triggerSearch($(`dl[xid="${id}"]`).parents(`.${FORM_SELECT}`), true); - } - return this; - } - - Select4.prototype.replace = function(id, type, config){ - if(!id || !type || !config){ - common.log(`id: ${id} param error !!!`) - return this; - } - if(!common.check(id, true)){ - common.log(`id: ${id} not render !!!`) - return this; - } - let oldVals = this.value(id, 'val'); - this.value(id, []); - this.config(id, config); - if(type == 'local'){ - common.renderData(id, config.arr, config.linkage == true, config.linkageWidth ? config.linkageWidth : '100', false, true); - this.value(id, oldVals, true); - }else if(type == 'server'){ - common.ajax(id, config.url, config.keyword, config.linkage == true, config.linkageWidth ? config.linkageWidth : '100', false, (id) => { - this.value(id, oldVals, true); - }, true); - } - } - - return new Select4(); -}); \ No newline at end of file diff --git a/component/pear/module/theme.js b/component/pear/module/theme.js index 01fd026..a684c85 100644 --- a/component/pear/module/theme.js +++ b/component/pear/module/theme.js @@ -40,7 +40,6 @@ layui.define(["jquery","layer"], function (exports) { style += '.pear-admin .pe-collapse {background-color:' + color + '!important}'; style += '.layui-fixbar li {background-color:' + color + '!important}'; style += '.pear-btn-primary {background-color:' + color + '!important}'; - style += '.layui-input:focus,.layui-textarea:focus {border-color: ' + color + '!important;box-shadow: 0 0 0 3px ' + second + ' !important;}' style += '.layui-form-checkbox[lay-skin=primary]:hover span {background-color: initial;}' style += '.layui-form-checked[lay-skin=primary] i {border-color: ' + color + '!important;background-color: ' + color + ';}' style += '.layui-form-checked,.layui-form-checked:hover {border-color: ' + color + '!important;}' diff --git a/component/pear/module/tinymce/tinymce.js b/component/pear/module/tinymce/tinymce.js deleted file mode 100644 index b6ef220..0000000 --- a/component/pear/module/tinymce/tinymce.js +++ /dev/null @@ -1,213 +0,0 @@ -layui.define(['jquery'],function (exports) { - var $ = layui.$ - - var modFile = layui.cache.modules['tinymce']; - - var modPath = modFile.substr(0, modFile.lastIndexOf('.')) - - var setter = layui.setter || {} - - var response = setter.response || {} - - var plugin_filename = 'tinymce.min.js'//插件路径,不包含base_url部分 - - var settings = { - base_url: modPath - , images_upload_url: ''//图片上传接口,可在option传入,也可在这里修改,option的值优先 - , language: 'zh_CN'//语言,可在option传入,也可在这里修改,option的值优先 - , response: {//后台返回数据格式设置 - statusName: response.statusName || 'code'//返回状态字段 - , msgName: response.msgName || 'msg'//返回消息字段 - , dataName: response.dataName || 'data'//返回的数据 - , statusCode: response.statusCode || { - ok: 0//数据正常 - } - } - , success: function (res, succFun, failFun) {//图片上传完成回调 根据自己需要修改 - if (res[this.response.statusName] == this.response.statusCode.ok) { - succFun(res[this.response.dataName]); - } else { - failFun(res[this.response.msgName]); - } - } - }; - - // ---------------- 以下代码无需修改 ---------------- - - var t = {}; - - //初始化 - t.render = function (options,callback) { - - initTinymce(); - - var option = initOptions(options,callback) - - ,edit = t.get(option.elem); - - if (edit) { - edit.destroy(); - } - - tinymce.init(option); - - return t.get(option.elem); - }; - - t.init = t.render - - // 获取ID对应的编辑器对象 - t.get = function (elem) { - - initTinymce(); - - if (elem && /^#|\./.test(elem)) { - var id = elem.substr(1); - var edit = tinymce.editors[id]; - return edit - } else { - return false; - } - } - - //重载 - t.reload = function (elem, option, callback) { - - var options = {} - - if(typeof elem == 'string'){ - option.elem = elem - options = $.extend({}, option) - } else if (typeof elem == 'object' && typeof elem.elem == 'string'){ - options = $.extend({}, elem) - callback = option - } - - var optionCache = layui.sessionData('layui-tinymce')[options.elem] - - delete optionCache.init_instance_callback - - $.extend(optionCache,options) - - return t.render(optionCache,callback) - } - - function initOptions(option,callback) { - - var admin = layui.admin || {} - - var form = option.form || {} - - var file_field = form.name || 'edit' //文件字段名 - - var form_data = form.data || {} //其他表单数据 {key:value, ...} - - option.suffix= isset(option.suffix) ? option.suffix : (plugin_filename.indexOf('.min')>-1 ? '.min' : '') - - option.base_url = isset(option.base_url) ? option.base_url : settings.base_url - - option.language = isset(option.language) ? option.language : settings.language - - option.selector = isset(option.selector) ? option.selector : option.elem - - option.quickbars_selection_toolbar = isset(option.quickbars_selection_toolbar) ? option.quickbars_selection_toolbar : 'cut copy | bold italic underline strikethrough ' - - option.plugins = isset(option.plugins) ? option.plugins : 'code kityformula-editor quickbars print preview searchreplace autolink fullscreen image link media codesample table charmap hr advlist lists wordcount imagetools indent2em'; - - option.toolbar = isset(option.toolbar) ? option.toolbar : 'code undo redo | kityformula-editor forecolor backcolor bold italic underline strikethrough | indent2em alignleft aligncenter alignright alignjustify outdent indent | link bullist numlist image table codesample | formatselect fontselect fontsizeselect'; - - option.resize = isset(option.resize) ? option.resize : false; - - option.elementpath = isset(option.elementpath) ? option.elementpath : false; - - option.branding = isset(option.branding) ? option.branding : false; - - option.contextmenu_never_use_native = isset(option.contextmenu_never_use_native) ? option.contextmenu_never_use_native : true; - - option.menubar = isset(option.menubar) ? option.menubar : 'file edit insert format table'; - - option.menu = isset(option.menu) ? option.menu : { - file: {title: '文件', items: 'newdocument | print preview fullscreen | wordcount'}, - edit: {title: '编辑', items: 'undo redo | cut copy paste pastetext selectall | searchreplace'}, - format: { - title: '格式', - items: 'bold italic underline strikethrough superscript subscript | formats | forecolor backcolor | removeformat' - }, - table: {title: '表格', items: 'inserttable tableprops deletetable | cell row column'}, - }; - - option.init_instance_callback =isset(option.init_instance_callback) ? option.init_instance_callback : function(inst) { - if(typeof callback == 'function') callback(option,inst) - }; - - option.images_upload_url = isset(option.images_upload_url) ? option.images_upload_url : settings.images_upload_url; - - option.images_upload_handler = isset(option.images_upload_handler) ? option.images_upload_handler : function(blobInfo, succFun, failFun) { - if(isEmpty(option.images_upload_url)){ - failFun("上传接口未配置"); - return console.error('images_upload_url未配置'); - } - var formData = new FormData(); - formData.append(file_field, blobInfo.blob()); - if(typeof form_data == 'object'){ - for(var key in form_data){ - formData.append(key, form_data[key]); - } - } - var ajaxOpt = { - url: option.images_upload_url, - dataType: 'json', - type: 'POST', - data: formData, - processData: false, - contentType: false, - success: function (res) { - settings.success(res, succFun, failFun) - }, - error: function (res) { - failFun("网络错误:" + res.status); - } - }; - if (typeof admin.req == 'function') { - admin.req(ajaxOpt); - } else { - $.ajax(ajaxOpt); - } - } - - layui.sessionData('layui-tinymce',{ - key:option.selector, - value:option - }) - return option - } - - function initTinymce() { - if (typeof tinymce == 'undefined') { - $.ajax({//获取插件 - url: settings.base_url + '/' + plugin_filename, - dataType: 'script', - cache: true, - async: false, - }); - } - } - - function isset(value) { - return typeof value !== 'undefined' && value !== null - } - - function isEmpty(value) { - if(typeof value === 'undefined' || value === null|| value === ''){ - return true - } else if (value instanceof Array && value.length === 0){ - return true - } else if (typeof value === 'object' && Object.keys(value).length === 0){ - return true - } - return false - } - - exports('tinymce', t); - -}); diff --git a/component/pear/module/tinymce/tinymce/icons/default/icons.js b/component/pear/module/tinymce/tinymce/icons/default/icons.js deleted file mode 100644 index d31c907..0000000 --- a/component/pear/module/tinymce/tinymce/icons/default/icons.js +++ /dev/null @@ -1,172 +0,0 @@ -tinymce.IconManager.add('default', { - icons: { - 'accessibility-check': '', - 'action-next': '', - 'action-prev': '', - 'align-center': '', - 'align-justify': '', - 'align-left': '', - 'align-none': '', - 'align-right': '', - 'arrow-left': '', - 'arrow-right': '', - 'bold': '', - 'bookmark': '', - 'border-width': '', - 'brightness': '', - 'browse': '', - 'cancel': '', - 'change-case': '', - 'character-count': '', - 'checklist-rtl': '', - 'checklist': '', - 'checkmark': '', - 'chevron-down': '', - 'chevron-left': '', - 'chevron-right': '', - 'chevron-up': '', - 'close': '', - 'code-sample': '', - 'color-levels': '', - 'color-picker': '', - 'color-swatch-remove-color': '', - 'color-swatch': '', - 'comment-add': '', - 'comment': '', - 'contrast': '', - 'copy': '', - 'crop': '', - 'cut-column': '', - 'cut-row': '', - 'cut': '', - 'document-properties': '', - 'drag': '', - 'duplicate-column': '', - 'duplicate-row': '', - 'duplicate': '', - 'edit-block': '', - 'edit-image': '', - 'embed-page': '', - 'embed': '', - 'emoji': '', - 'export': '', - 'fill': '', - 'flip-horizontally': '', - 'flip-vertically': '', - 'format-painter': '', - 'format': '', - 'fullscreen': '', - 'gallery': '', - 'gamma': '', - 'help': '', - 'highlight-bg-color': '', - 'home': '', - 'horizontal-rule': '', - 'image-options': '', - 'image': '', - 'indent': '', - 'info': '', - 'insert-character': '', - 'insert-time': '', - 'invert': '', - 'italic': '', - 'line-height': '', - 'line': '', - 'link': '', - 'list-bull-circle': '', - 'list-bull-default': '', - 'list-bull-square': '', - 'list-num-default-rtl': '', - 'list-num-default': '', - 'list-num-lower-alpha-rtl': '', - 'list-num-lower-alpha': '', - 'list-num-lower-greek-rtl': '', - 'list-num-lower-greek': '', - 'list-num-lower-roman-rtl': '', - 'list-num-lower-roman': '', - 'list-num-upper-alpha-rtl': '', - 'list-num-upper-alpha': '', - 'list-num-upper-roman-rtl': '', - 'list-num-upper-roman': '', - 'lock': '', - 'ltr': '', - 'more-drawer': '', - 'new-document': '', - 'new-tab': '', - 'non-breaking': '', - 'notice': '', - 'ordered-list-rtl': '', - 'ordered-list': '', - 'orientation': '', - 'outdent': '', - 'page-break': '', - 'paragraph': '', - 'paste-column-after': '', - 'paste-column-before': '', - 'paste-row-after': '', - 'paste-row-before': '', - 'paste-text': '', - 'paste': '', - 'permanent-pen': '', - 'plus': '', - 'preferences': '', - 'preview': '', - 'print': '', - 'quote': '', - 'redo': '', - 'reload': '', - 'remove-formatting': '', - 'remove': '', - 'resize-handle': '', - 'resize': '', - 'restore-draft': '', - 'rotate-left': '', - 'rotate-right': '', - 'rtl': '', - 'save': '', - 'search': '', - 'select-all': '', - 'selected': '', - 'settings': '', - 'sharpen': '', - 'sourcecode': '', - 'spell-check': '', - 'strike-through': '', - 'subscript': '', - 'superscript': '', - 'table-cell-properties': '', - 'table-cell-select-all': '', - 'table-cell-select-inner': '', - 'table-delete-column': '', - 'table-delete-row': '', - 'table-delete-table': '', - 'table-insert-column-after': '', - 'table-insert-column-before': '', - 'table-insert-row-above': '', - 'table-insert-row-after': '', - 'table-left-header': '', - 'table-merge-cells': '', - 'table-row-properties': '', - 'table-split-cells': '', - 'table-top-header': '', - 'table': '', - 'template': '', - 'temporary-placeholder': '', - 'text-color': '', - 'toc': '', - 'translate': '', - 'underline': '', - 'undo': '', - 'unlink': '', - 'unlock': '', - 'unordered-list': '', - 'unselected': '', - 'upload': '', - 'user': '', - 'visualblocks': '', - 'visualchars': '', - 'warning': '', - 'zoom-in': '', - 'zoom-out': '', - } -}); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/icons/default/icons.min.js b/component/pear/module/tinymce/tinymce/icons/default/icons.min.js deleted file mode 100644 index 086f297..0000000 --- a/component/pear/module/tinymce/tinymce/icons/default/icons.min.js +++ /dev/null @@ -1 +0,0 @@ -tinymce.IconManager.add("default",{icons:{"accessibility-check":'',"action-next":'',"action-prev":'',"align-center":'',"align-justify":'',"align-left":'',"align-none":'',"align-right":'',"arrow-left":'',"arrow-right":'',bold:'',bookmark:'',"border-width":'',brightness:'',browse:'',cancel:'',"change-case":'',"character-count":'',"checklist-rtl":'',checklist:'',checkmark:'',"chevron-down":'',"chevron-left":'',"chevron-right":'',"chevron-up":'',close:'',"code-sample":'',"color-levels":'',"color-picker":'',"color-swatch-remove-color":'',"color-swatch":'',"comment-add":'',comment:'',contrast:'',copy:'',crop:'',"cut-column":'',"cut-row":'',cut:'',"document-properties":'',drag:'',"duplicate-column":'',"duplicate-row":'',duplicate:'',"edit-block":'',"edit-image":'',"embed-page":'',embed:'',emoji:'',"export":'',fill:'',"flip-horizontally":'',"flip-vertically":'',"format-painter":'',format:'',fullscreen:'',gallery:'',gamma:'',help:'',"highlight-bg-color":'',home:'',"horizontal-rule":'',"image-options":'',image:'',indent:'',info:'',"insert-character":'',"insert-time":'',invert:'',italic:'',"line-height":'',line:'',link:'',"list-bull-circle":'',"list-bull-default":'',"list-bull-square":'',"list-num-default-rtl":'',"list-num-default":'',"list-num-lower-alpha-rtl":'',"list-num-lower-alpha":'',"list-num-lower-greek-rtl":'',"list-num-lower-greek":'',"list-num-lower-roman-rtl":'',"list-num-lower-roman":'',"list-num-upper-alpha-rtl":'',"list-num-upper-alpha":'',"list-num-upper-roman-rtl":'',"list-num-upper-roman":'',lock:'',ltr:'',"more-drawer":'',"new-document":'',"new-tab":'',"non-breaking":'',notice:'',"ordered-list-rtl":'',"ordered-list":'',orientation:'',outdent:'',"page-break":'',paragraph:'',"paste-column-after":'',"paste-column-before":'',"paste-row-after":'',"paste-row-before":'',"paste-text":'',paste:'',"permanent-pen":'',plus:'',preferences:'',preview:'',print:'',quote:'',redo:'',reload:'',"remove-formatting":'',remove:'',"resize-handle":'',resize:'',"restore-draft":'',"rotate-left":'',"rotate-right":'',rtl:'',save:'',search:'',"select-all":'',selected:'',settings:'',sharpen:'',sourcecode:'',"spell-check":'',"strike-through":'',subscript:'',superscript:'',"table-cell-properties":'',"table-cell-select-all":'',"table-cell-select-inner":'',"table-delete-column":'',"table-delete-row":'',"table-delete-table":'',"table-insert-column-after":'',"table-insert-column-before":'',"table-insert-row-above":'',"table-insert-row-after":'',"table-left-header":'',"table-merge-cells":'',"table-row-properties":'',"table-split-cells":'',"table-top-header":'',table:'',template:'',"temporary-placeholder":'',"text-color":'',toc:'',translate:'',underline:'',undo:'',unlink:'',unlock:'',"unordered-list":'',unselected:'',upload:'',user:'',visualblocks:'',visualchars:'',warning:'',"zoom-in":'',"zoom-out":''}}); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/langs/readme.md b/component/pear/module/tinymce/tinymce/langs/readme.md deleted file mode 100644 index a52bf03..0000000 --- a/component/pear/module/tinymce/tinymce/langs/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -This is where language files should be placed. - -Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/ diff --git a/component/pear/module/tinymce/tinymce/langs/zh_CN.js b/component/pear/module/tinymce/tinymce/langs/zh_CN.js deleted file mode 100644 index 89b106c..0000000 --- a/component/pear/module/tinymce/tinymce/langs/zh_CN.js +++ /dev/null @@ -1,419 +0,0 @@ -tinymce.addI18n('zh_CN',{ -"Redo": "\u91cd\u505a", -"Undo": "\u64a4\u9500", -"Cut": "\u526a\u5207", -"Copy": "\u590d\u5236", -"Paste": "\u7c98\u8d34", -"Select all": "\u5168\u9009", -"New document": "\u65b0\u6587\u4ef6", -"Ok": "\u786e\u5b9a", -"Cancel": "\u53d6\u6d88", -"Visual aids": "\u7f51\u683c\u7ebf", -"Bold": "\u7c97\u4f53", -"Italic": "\u659c\u4f53", -"Underline": "\u4e0b\u5212\u7ebf", -"Strikethrough": "\u5220\u9664\u7ebf", -"Superscript": "\u4e0a\u6807", -"Subscript": "\u4e0b\u6807", -"Clear formatting": "\u6e05\u9664\u683c\u5f0f", -"Align left": "\u5de6\u8fb9\u5bf9\u9f50", -"Align center": "\u4e2d\u95f4\u5bf9\u9f50", -"Align right": "\u53f3\u8fb9\u5bf9\u9f50", -"Justify": "\u4e24\u7aef\u5bf9\u9f50", -"Bullet list": "\u9879\u76ee\u7b26\u53f7", -"Numbered list": "\u7f16\u53f7\u5217\u8868", -"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb", -"Increase indent": "\u589e\u52a0\u7f29\u8fdb", -"Close": "\u5173\u95ed", -"Formats": "\u683c\u5f0f", -"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u6253\u5f00\u526a\u8d34\u677f\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u7b49\u5feb\u6377\u952e\u3002", -"Headers": "\u6807\u9898", -"Header 1": "\u6807\u98981", -"Header 2": "\u6807\u98982", -"Header 3": "\u6807\u98983", -"Header 4": "\u6807\u98984", -"Header 5": "\u6807\u98985", -"Header 6": "\u6807\u98986", -"Headings": "\u6807\u9898", -"Heading 1": "\u6807\u98981", -"Heading 2": "\u6807\u98982", -"Heading 3": "\u6807\u98983", -"Heading 4": "\u6807\u98984", -"Heading 5": "\u6807\u98985", -"Heading 6": "\u6807\u98986", -"Preformatted": "\u9884\u5148\u683c\u5f0f\u5316\u7684", -"Div": "Div", -"Pre": "Pre", -"Code": "\u4ee3\u7801", -"Paragraph": "\u6bb5\u843d", -"Blockquote": "\u5f15\u6587\u533a\u5757", -"Inline": "\u6587\u672c", -"Blocks": "\u57fa\u5757", -"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002", -"Fonts": "\u5b57\u4f53", -"Font Sizes": "\u5b57\u53f7", -"Class": "\u7c7b\u578b", -"Browse for an image": "\u6d4f\u89c8\u56fe\u50cf", -"OR": "\u6216", -"Drop an image here": "\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64", -"Upload": "\u4e0a\u4f20", -"Block": "\u5757", -"Align": "\u5bf9\u9f50", -"Default": "\u9ed8\u8ba4", -"Circle": "\u7a7a\u5fc3\u5706", -"Disc": "\u5b9e\u5fc3\u5706", -"Square": "\u65b9\u5757", -"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd", -"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd", -"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd", -"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd", -"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd", -"Anchor...": "\u951a\u70b9...", -"Name": "\u540d\u79f0", -"Id": "\u6807\u8bc6\u7b26", -"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002", -"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f", -"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f", -"Special character...": "\u7279\u6b8a\u5b57\u7b26...", -"Source code": "\u6e90\u4ee3\u7801", -"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b", -"Language": "\u8bed\u8a00", -"Code sample...": "\u793a\u4f8b\u4ee3\u7801...", -"Color Picker": "\u9009\u8272\u5668", -"R": "R", -"G": "G", -"B": "B", -"Left to right": "\u4ece\u5de6\u5230\u53f3", -"Right to left": "\u4ece\u53f3\u5230\u5de6", -"Emoticons...": "\u8868\u60c5\u7b26\u53f7...", -"Metadata and Document Properties": "\u5143\u6570\u636e\u548c\u6587\u6863\u5c5e\u6027", -"Title": "\u6807\u9898", -"Keywords": "\u5173\u952e\u8bcd", -"Description": "\u63cf\u8ff0", -"Robots": "\u673a\u5668\u4eba", -"Author": "\u4f5c\u8005", -"Encoding": "\u7f16\u7801", -"Fullscreen": "\u5168\u5c4f", -"Action": "\u64cd\u4f5c", -"Shortcut": "\u5feb\u6377\u952e", -"Help": "\u5e2e\u52a9", -"Address": "\u5730\u5740", -"Focus to menubar": "\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f", -"Focus to toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f", -"Focus to element path": "\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84", -"Focus to contextual toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355", -"Insert link (if link plugin activated)": "\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", -"Save (if save plugin activated)": "\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", -"Find (if searchreplace plugin activated)": "\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", -"Plugins installed ({0}):": "\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):", -"Premium plugins:": "\u4f18\u79c0\u63d2\u4ef6\uff1a", -"Learn more...": "\u4e86\u89e3\u66f4\u591a...", -"You are using {0}": "\u4f60\u6b63\u5728\u4f7f\u7528 {0}", -"Plugins": "\u63d2\u4ef6", -"Handy Shortcuts": "\u5feb\u6377\u952e", -"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf", -"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247", -"Image description": "\u56fe\u7247\u63cf\u8ff0", -"Source": "\u5730\u5740", -"Dimensions": "\u5927\u5c0f", -"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4", -"General": "\u666e\u901a", -"Advanced": "\u9ad8\u7ea7", -"Style": "\u6837\u5f0f", -"Vertical space": "\u5782\u76f4\u8fb9\u8ddd", -"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd", -"Border": "\u8fb9\u6846", -"Insert image": "\u63d2\u5165\u56fe\u7247", -"Image...": "\u56fe\u7247...", -"Image list": "\u56fe\u7247\u5217\u8868", -"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c", -"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c", -"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c", -"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c", -"Edit image": "\u7f16\u8f91\u56fe\u7247", -"Image options": "\u56fe\u7247\u9009\u9879", -"Zoom in": "\u653e\u5927", -"Zoom out": "\u7f29\u5c0f", -"Crop": "\u88c1\u526a", -"Resize": "\u8c03\u6574\u5927\u5c0f", -"Orientation": "\u65b9\u5411", -"Brightness": "\u4eae\u5ea6", -"Sharpen": "\u9510\u5316", -"Contrast": "\u5bf9\u6bd4\u5ea6", -"Color levels": "\u989c\u8272\u5c42\u6b21", -"Gamma": "\u4f3d\u9a6c\u503c", -"Invert": "\u53cd\u8f6c", -"Apply": "\u5e94\u7528", -"Back": "\u540e\u9000", -"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4", -"Date\/time": "\u65e5\u671f\/\u65f6\u95f4", -"Insert\/Edit Link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5", -"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5", -"Text to display": "\u663e\u793a\u6587\u5b57", -"Url": "\u5730\u5740", -"Open link in...": "\u94fe\u63a5\u6253\u5f00\u4f4d\u7f6e...", -"Current window": "\u5f53\u524d\u7a97\u53e3", -"None": "\u65e0", -"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00", -"Remove link": "\u5220\u9664\u94fe\u63a5", -"Anchors": "\u951a\u70b9", -"Link...": "\u94fe\u63a5...", -"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5", -"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f", -"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f", -"Link list": "\u94fe\u63a5\u5217\u8868", -"Insert video": "\u63d2\u5165\u89c6\u9891", -"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891", -"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53", -"Alternative source": "\u955c\u50cf", -"Alternative source URL": "\u66ff\u4ee3\u6765\u6e90\u7f51\u5740", -"Media poster (Image URL)": "\u5c01\u9762(\u56fe\u7247\u5730\u5740)", -"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:", -"Embed": "\u5185\u5d4c", -"Media...": "\u591a\u5a92\u4f53...", -"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c", -"Page break": "\u5206\u9875\u7b26", -"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c", -"Preview": "\u9884\u89c8", -"Print...": "\u6253\u5370...", -"Save": "\u4fdd\u5b58", -"Find": "\u67e5\u627e", -"Replace with": "\u66ff\u6362\u4e3a", -"Replace": "\u66ff\u6362", -"Replace all": "\u5168\u90e8\u66ff\u6362", -"Previous": "\u4e0a\u4e00\u4e2a", -"Next": "\u4e0b\u4e00\u4e2a", -"Find and replace...": "\u67e5\u627e\u5e76\u66ff\u6362...", -"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.", -"Match case": "\u533a\u5206\u5927\u5c0f\u5199", -"Find whole words only": "\u5168\u5b57\u5339\u914d", -"Spell check": "\u62fc\u5199\u68c0\u67e5", -"Ignore": "\u5ffd\u7565", -"Ignore all": "\u5168\u90e8\u5ffd\u7565", -"Finish": "\u5b8c\u6210", -"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178", -"Insert table": "\u63d2\u5165\u8868\u683c", -"Table properties": "\u8868\u683c\u5c5e\u6027", -"Delete table": "\u5220\u9664\u8868\u683c", -"Cell": "\u5355\u5143\u683c", -"Row": "\u884c", -"Column": "\u5217", -"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027", -"Merge cells": "\u5408\u5e76\u5355\u5143\u683c", -"Split cell": "\u62c6\u5206\u5355\u5143\u683c", -"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165", -"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165", -"Delete row": "\u5220\u9664\u884c", -"Row properties": "\u884c\u5c5e\u6027", -"Cut row": "\u526a\u5207\u884c", -"Copy row": "\u590d\u5236\u884c", -"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9", -"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9", -"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165", -"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165", -"Delete column": "\u5220\u9664\u5217", -"Cols": "\u5217", -"Rows": "\u884c", -"Width": "\u5bbd", -"Height": "\u9ad8", -"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd", -"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd", -"Show caption": "\u663e\u793a\u6807\u9898", -"Left": "\u5de6\u5bf9\u9f50", -"Center": "\u5c45\u4e2d", -"Right": "\u53f3\u5bf9\u9f50", -"Cell type": "\u5355\u5143\u683c\u7c7b\u578b", -"Scope": "\u8303\u56f4", -"Alignment": "\u5bf9\u9f50\u65b9\u5f0f", -"H Align": "\u6c34\u5e73\u5bf9\u9f50", -"V Align": "\u5782\u76f4\u5bf9\u9f50", -"Top": "\u9876\u90e8\u5bf9\u9f50", -"Middle": "\u5782\u76f4\u5c45\u4e2d", -"Bottom": "\u5e95\u90e8\u5bf9\u9f50", -"Header cell": "\u8868\u5934\u5355\u5143\u683c", -"Row group": "\u884c\u7ec4", -"Column group": "\u5217\u7ec4", -"Row type": "\u884c\u7c7b\u578b", -"Header": "\u8868\u5934", -"Body": "\u8868\u4f53", -"Footer": "\u8868\u5c3e", -"Border color": "\u8fb9\u6846\u989c\u8272", -"Insert template...": "\u63d2\u5165\u6a21\u677f...", -"Templates": "\u6a21\u677f", -"Template": "\u6a21\u677f", -"Text color": "\u6587\u5b57\u989c\u8272", -"Background color": "\u80cc\u666f\u8272", -"Custom...": "\u81ea\u5b9a\u4e49...", -"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272", -"No color": "\u65e0", -"Remove color": "\u79fb\u9664\u989c\u8272", -"Table of Contents": "\u5185\u5bb9\u5217\u8868", -"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846", -"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26", -"Word count": "\u5b57\u6570", -"Count": "\u8ba1\u6570", -"Document": "\u6587\u6863", -"Selection": "\u9009\u62e9", -"Words": "\u5355\u8bcd", -"Words: {0}": "\u5b57\u6570\uff1a{0}", -"{0} words": "{0} \u5b57", -"File": "\u6587\u4ef6", -"Edit": "\u7f16\u8f91", -"Insert": "\u63d2\u5165", -"View": "\u89c6\u56fe", -"Format": "\u683c\u5f0f", -"Table": "\u8868\u683c", -"Tools": "\u5de5\u5177", -"Powered by {0}": "\u7531{0}\u9a71\u52a8", -"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9", -"Image title": "\u56fe\u7247\u6807\u9898", -"Border width": "\u8fb9\u6846\u5bbd\u5ea6", -"Border style": "\u8fb9\u6846\u6837\u5f0f", -"Error": "\u9519\u8bef", -"Warn": "\u8b66\u544a", -"Valid": "\u6709\u6548", -"To open the popup, press Shift+Enter": "\u6309Shitf+Enter\u952e\u6253\u5f00\u5bf9\u8bdd\u6846", -"Rich Text Area. Press ALT-0 for help.": "\u7f16\u8f91\u533a\u3002\u6309Alt+0\u952e\u6253\u5f00\u5e2e\u52a9\u3002", -"System Font": "\u7cfb\u7edf\u5b57\u4f53", -"Failed to upload image: {0}": "\u56fe\u7247\u4e0a\u4f20\u5931\u8d25: {0}", -"Failed to load plugin: {0} from url {1}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25: {0} \u6765\u81ea\u94fe\u63a5 {1}", -"Failed to load plugin url: {0}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25 \u94fe\u63a5: {0}", -"Failed to initialize plugin: {0}": "\u63d2\u4ef6\u521d\u59cb\u5316\u5931\u8d25: {0}", -"example": "\u793a\u4f8b", -"Search": "\u641c\u7d22", -"All": "\u5168\u90e8", -"Currency": "\u8d27\u5e01", -"Text": "\u6587\u5b57", -"Quotations": "\u5f15\u7528", -"Mathematical": "\u6570\u5b66", -"Extended Latin": "\u62c9\u4e01\u8bed\u6269\u5145", -"Symbols": "\u7b26\u53f7", -"Arrows": "\u7bad\u5934", -"User Defined": "\u81ea\u5b9a\u4e49", -"dollar sign": "\u7f8e\u5143\u7b26\u53f7", -"currency sign": "\u8d27\u5e01\u7b26\u53f7", -"euro-currency sign": "\u6b27\u5143\u7b26\u53f7", -"colon sign": "\u5192\u53f7", -"cruzeiro sign": "\u514b\u9c81\u8d5b\u7f57\u5e01\u7b26\u53f7", -"french franc sign": "\u6cd5\u90ce\u7b26\u53f7", -"lira sign": "\u91cc\u62c9\u7b26\u53f7", -"mill sign": "\u5bc6\u5c14\u7b26\u53f7", -"naira sign": "\u5948\u62c9\u7b26\u53f7", -"peseta sign": "\u6bd4\u585e\u5854\u7b26\u53f7", -"rupee sign": "\u5362\u6bd4\u7b26\u53f7", -"won sign": "\u97e9\u5143\u7b26\u53f7", -"new sheqel sign": "\u65b0\u8c22\u514b\u5c14\u7b26\u53f7", -"dong sign": "\u8d8a\u5357\u76fe\u7b26\u53f7", -"kip sign": "\u8001\u631d\u57fa\u666e\u7b26\u53f7", -"tugrik sign": "\u56fe\u683c\u91cc\u514b\u7b26\u53f7", -"drachma sign": "\u5fb7\u62c9\u514b\u9a6c\u7b26\u53f7", -"german penny symbol": "\u5fb7\u56fd\u4fbf\u58eb\u7b26\u53f7", -"peso sign": "\u6bd4\u7d22\u7b26\u53f7", -"guarani sign": "\u74dc\u62c9\u5c3c\u7b26\u53f7", -"austral sign": "\u6fb3\u5143\u7b26\u53f7", -"hryvnia sign": "\u683c\u91cc\u592b\u5c3c\u4e9a\u7b26\u53f7", -"cedi sign": "\u585e\u5730\u7b26\u53f7", -"livre tournois sign": "\u91cc\u5f17\u5f17\u5c14\u7b26\u53f7", -"spesmilo sign": "spesmilo\u7b26\u53f7", -"tenge sign": "\u575a\u6208\u7b26\u53f7", -"indian rupee sign": "\u5370\u5ea6\u5362\u6bd4", -"turkish lira sign": "\u571f\u8033\u5176\u91cc\u62c9", -"nordic mark sign": "\u5317\u6b27\u9a6c\u514b", -"manat sign": "\u9a6c\u7eb3\u7279\u7b26\u53f7", -"ruble sign": "\u5362\u5e03\u7b26\u53f7", -"yen character": "\u65e5\u5143\u5b57\u6837", -"yuan character": "\u4eba\u6c11\u5e01\u5143\u5b57\u6837", -"yuan character, in hong kong and taiwan": "\u5143\u5b57\u6837\uff08\u6e2f\u53f0\u5730\u533a\uff09", -"yen\/yuan character variant one": "\u5143\u5b57\u6837\uff08\u5927\u5199\uff09", -"Loading emoticons...": "\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7...", -"Could not load emoticons": "\u4e0d\u80fd\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7", -"People": "\u4eba\u7c7b", -"Animals and Nature": "\u52a8\u7269\u548c\u81ea\u7136", -"Food and Drink": "\u98df\u7269\u548c\u996e\u54c1", -"Activity": "\u6d3b\u52a8", -"Travel and Places": "\u65c5\u6e38\u548c\u5730\u70b9", -"Objects": "\u7269\u4ef6", -"Flags": "\u65d7\u5e1c", -"Characters": "\u5b57\u7b26", -"Characters (no spaces)": "\u5b57\u7b26(\u65e0\u7a7a\u683c)", -"{0} characters": "{0} \u4e2a\u5b57\u7b26", -"Error: Form submit field collision.": "\u9519\u8bef: \u8868\u5355\u63d0\u4ea4\u5b57\u6bb5\u51b2\u7a81\u3002", -"Error: No form element found.": "\u9519\u8bef: \u6ca1\u6709\u8868\u5355\u63a7\u4ef6\u3002", -"Update": "\u66f4\u65b0", -"Color swatch": "\u989c\u8272\u6837\u672c", -"Turquoise": "\u9752\u7eff\u8272", -"Green": "\u7eff\u8272", -"Blue": "\u84dd\u8272", -"Purple": "\u7d2b\u8272", -"Navy Blue": "\u6d77\u519b\u84dd", -"Dark Turquoise": "\u6df1\u84dd\u7eff\u8272", -"Dark Green": "\u6df1\u7eff\u8272", -"Medium Blue": "\u4e2d\u84dd\u8272", -"Medium Purple": "\u4e2d\u7d2b\u8272", -"Midnight Blue": "\u6df1\u84dd\u8272", -"Yellow": "\u9ec4\u8272", -"Orange": "\u6a59\u8272", -"Red": "\u7ea2\u8272", -"Light Gray": "\u6d45\u7070\u8272", -"Gray": "\u7070\u8272", -"Dark Yellow": "\u6697\u9ec4\u8272", -"Dark Orange": "\u6df1\u6a59\u8272", -"Dark Red": "\u6df1\u7ea2\u8272", -"Medium Gray": "\u4e2d\u7070\u8272", -"Dark Gray": "\u6df1\u7070\u8272", -"Light Green": "\u6d45\u7eff\u8272", -"Light Yellow": "\u6d45\u9ec4\u8272", -"Light Red": "\u6d45\u7ea2\u8272", -"Light Purple": "\u6d45\u7d2b\u8272", -"Light Blue": "\u6d45\u84dd\u8272", -"Dark Purple": "\u6df1\u7d2b\u8272", -"Dark Blue": "\u6df1\u84dd\u8272", -"Black": "\u9ed1\u8272", -"White": "\u767d\u8272", -"Switch to or from fullscreen mode": "\u5207\u6362\u5168\u5c4f\u6a21\u5f0f", -"Open help dialog": "\u6253\u5f00\u5e2e\u52a9\u5bf9\u8bdd\u6846", -"history": "\u5386\u53f2", -"styles": "\u6837\u5f0f", -"formatting": "\u683c\u5f0f\u5316", -"alignment": "\u5bf9\u9f50", -"indentation": "\u7f29\u8fdb", -"permanent pen": "\u8bb0\u53f7\u7b14", -"comments": "\u5907\u6ce8", -"Format Painter": "\u683c\u5f0f\u5237", -"Insert\/edit iframe": "\u63d2\u5165\/\u7f16\u8f91\u6846\u67b6", -"Capitalization": "\u5927\u5199", -"lowercase": "\u5c0f\u5199", -"UPPERCASE": "\u5927\u5199", -"Title Case": "\u9996\u5b57\u6bcd\u5927\u5199", -"Permanent Pen Properties": "\u6c38\u4e45\u7b14\u5c5e\u6027", -"Permanent pen properties...": "\u6c38\u4e45\u7b14\u5c5e\u6027...", -"Font": "\u5b57\u4f53", -"Size": "\u5b57\u53f7", -"More...": "\u66f4\u591a...", -"Spellcheck Language": "\u62fc\u5199\u68c0\u67e5\u8bed\u8a00", -"Select...": "\u9009\u62e9...", -"Preferences": "\u9996\u9009\u9879", -"Yes": "\u662f", -"No": "\u5426", -"Keyboard Navigation": "\u952e\u76d8\u6307\u5f15", -"Version": "\u7248\u672c", -"Anchor": "\u951a\u70b9", -"Special character": "\u7279\u6b8a\u7b26\u53f7", -"Code sample": "\u4ee3\u7801\u793a\u4f8b", -"Color": "\u989c\u8272", -"Emoticons": "\u8868\u60c5", -"Document properties": "\u6587\u6863\u5c5e\u6027", -"Image": "\u56fe\u7247", -"Insert link": "\u63d2\u5165\u94fe\u63a5", -"Target": "\u6253\u5f00\u65b9\u5f0f", -"Link": "\u94fe\u63a5", -"Poster": "\u5c01\u9762", -"Media": "\u5a92\u4f53", -"Print": "\u6253\u5370", -"Prev": "\u4e0a\u4e00\u4e2a", -"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362", -"Whole words": "\u5168\u5b57\u5339\u914d", -"Spellcheck": "\u62fc\u5199\u68c0\u67e5", -"Caption": "\u6807\u9898", -"Insert template": "\u63d2\u5165\u6a21\u677f" -}); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/advlist/plugin.js b/component/pear/module/tinymce/tinymce/plugins/advlist/plugin.js deleted file mode 100644 index 0dd07b0..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/advlist/plugin.js +++ /dev/null @@ -1,278 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -(function () { - 'use strict'; - - var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); - - var applyListFormat = function (editor, listName, styleValue) { - var cmd = listName === 'UL' ? 'InsertUnorderedList' : 'InsertOrderedList'; - editor.execCommand(cmd, false, styleValue === false ? null : { 'list-style-type': styleValue }); - }; - - var register = function (editor) { - editor.addCommand('ApplyUnorderedListStyle', function (ui, value) { - applyListFormat(editor, 'UL', value['list-style-type']); - }); - editor.addCommand('ApplyOrderedListStyle', function (ui, value) { - applyListFormat(editor, 'OL', value['list-style-type']); - }); - }; - - var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); - - var getNumberStyles = function (editor) { - var styles = editor.getParam('advlist_number_styles', 'default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman'); - return styles ? styles.split(/[ ,]/) : []; - }; - var getBulletStyles = function (editor) { - var styles = editor.getParam('advlist_bullet_styles', 'default,circle,square'); - return styles ? styles.split(/[ ,]/) : []; - }; - - var noop = function () { - }; - var constant = function (value) { - return function () { - return value; - }; - }; - var never = constant(false); - var always = constant(true); - - var none = function () { - return NONE; - }; - var NONE = function () { - var eq = function (o) { - return o.isNone(); - }; - var call = function (thunk) { - return thunk(); - }; - var id = function (n) { - return n; - }; - var me = { - fold: function (n, _s) { - return n(); - }, - is: never, - isSome: never, - isNone: always, - getOr: id, - getOrThunk: call, - getOrDie: function (msg) { - throw new Error(msg || 'error: getOrDie called on none.'); - }, - getOrNull: constant(null), - getOrUndefined: constant(undefined), - or: id, - orThunk: call, - map: none, - each: noop, - bind: none, - exists: never, - forall: always, - filter: none, - equals: eq, - equals_: eq, - toArray: function () { - return []; - }, - toString: constant('none()') - }; - return me; - }(); - var some = function (a) { - var constant_a = constant(a); - var self = function () { - return me; - }; - var bind = function (f) { - return f(a); - }; - var me = { - fold: function (n, s) { - return s(a); - }, - is: function (v) { - return a === v; - }, - isSome: always, - isNone: never, - getOr: constant_a, - getOrThunk: constant_a, - getOrDie: constant_a, - getOrNull: constant_a, - getOrUndefined: constant_a, - or: self, - orThunk: self, - map: function (f) { - return some(f(a)); - }, - each: function (f) { - f(a); - }, - bind: bind, - exists: bind, - forall: bind, - filter: function (f) { - return f(a) ? me : NONE; - }, - toArray: function () { - return [a]; - }, - toString: function () { - return 'some(' + a + ')'; - }, - equals: function (o) { - return o.is(a); - }, - equals_: function (o, elementEq) { - return o.fold(never, function (b) { - return elementEq(a, b); - }); - } - }; - return me; - }; - var from = function (value) { - return value === null || value === undefined ? NONE : some(value); - }; - var Optional = { - some: some, - none: none, - from: from - }; - - var isChildOfBody = function (editor, elm) { - return editor.$.contains(editor.getBody(), elm); - }; - var isTableCellNode = function (node) { - return node && /^(TH|TD)$/.test(node.nodeName); - }; - var isListNode = function (editor) { - return function (node) { - return node && /^(OL|UL|DL)$/.test(node.nodeName) && isChildOfBody(editor, node); - }; - }; - var getSelectedStyleType = function (editor) { - var listElm = editor.dom.getParent(editor.selection.getNode(), 'ol,ul'); - var style = editor.dom.getStyle(listElm, 'listStyleType'); - return Optional.from(style); - }; - - var findIndex = function (list, predicate) { - for (var index = 0; index < list.length; index++) { - var element = list[index]; - if (predicate(element)) { - return index; - } - } - return -1; - }; - var styleValueToText = function (styleValue) { - return styleValue.replace(/\-/g, ' ').replace(/\b\w/g, function (chr) { - return chr.toUpperCase(); - }); - }; - var isWithinList = function (editor, e, nodeName) { - var tableCellIndex = findIndex(e.parents, isTableCellNode); - var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents; - var lists = global$1.grep(parents, isListNode(editor)); - return lists.length > 0 && lists[0].nodeName === nodeName; - }; - var addSplitButton = function (editor, id, tooltip, cmd, nodeName, styles) { - editor.ui.registry.addSplitButton(id, { - tooltip: tooltip, - icon: nodeName === 'OL' ? 'ordered-list' : 'unordered-list', - presets: 'listpreview', - columns: 3, - fetch: function (callback) { - var items = global$1.map(styles, function (styleValue) { - var iconStyle = nodeName === 'OL' ? 'num' : 'bull'; - var iconName = styleValue === 'disc' || styleValue === 'decimal' ? 'default' : styleValue; - var itemValue = styleValue === 'default' ? '' : styleValue; - var displayText = styleValueToText(styleValue); - return { - type: 'choiceitem', - value: itemValue, - icon: 'list-' + iconStyle + '-' + iconName, - text: displayText - }; - }); - callback(items); - }, - onAction: function () { - return editor.execCommand(cmd); - }, - onItemAction: function (_splitButtonApi, value) { - applyListFormat(editor, nodeName, value); - }, - select: function (value) { - var listStyleType = getSelectedStyleType(editor); - return listStyleType.map(function (listStyle) { - return value === listStyle; - }).getOr(false); - }, - onSetup: function (api) { - var nodeChangeHandler = function (e) { - api.setActive(isWithinList(editor, e, nodeName)); - }; - editor.on('NodeChange', nodeChangeHandler); - return function () { - return editor.off('NodeChange', nodeChangeHandler); - }; - } - }); - }; - var addButton = function (editor, id, tooltip, cmd, nodeName, _styles) { - editor.ui.registry.addToggleButton(id, { - active: false, - tooltip: tooltip, - icon: nodeName === 'OL' ? 'ordered-list' : 'unordered-list', - onSetup: function (api) { - var nodeChangeHandler = function (e) { - api.setActive(isWithinList(editor, e, nodeName)); - }; - editor.on('NodeChange', nodeChangeHandler); - return function () { - return editor.off('NodeChange', nodeChangeHandler); - }; - }, - onAction: function () { - return editor.execCommand(cmd); - } - }); - }; - var addControl = function (editor, id, tooltip, cmd, nodeName, styles) { - if (styles.length > 1) { - addSplitButton(editor, id, tooltip, cmd, nodeName, styles); - } else { - addButton(editor, id, tooltip, cmd, nodeName); - } - }; - var register$1 = function (editor) { - addControl(editor, 'numlist', 'Numbered list', 'InsertOrderedList', 'OL', getNumberStyles(editor)); - addControl(editor, 'bullist', 'Bullet list', 'InsertUnorderedList', 'UL', getBulletStyles(editor)); - }; - - function Plugin () { - global.add('advlist', function (editor) { - if (editor.hasPlugin('lists')) { - register$1(editor); - register(editor); - } - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/advlist/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/advlist/plugin.min.js deleted file mode 100644 index dfa80d9..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/advlist/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var n,e,t,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(n,e,t){var r="UL"===e?"InsertUnorderedList":"InsertOrderedList";n.execCommand(r,!1,!1===t?null:{"list-style-type":t})},l=tinymce.util.Tools.resolve("tinymce.util.Tools"),i=function(n){return function(){return n}},c=i(!1),s=i(!0),o=function(){return a},a=(n=function(n){return n.isNone()},{fold:function(n,e){return n()},is:c,isSome:c,isNone:s,getOr:t=function(n){return n},getOrThunk:e=function(n){return n()},getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:t,orThunk:e,map:o,each:function(){},bind:o,exists:c,forall:s,filter:o,equals:n,equals_:n,toArray:function(){return[]},toString:i("none()")}),f=function(t){var n=i(t),e=function(){return o},r=function(n){return n(t)},o={fold:function(n,e){return e(t)},is:function(n){return t===n},isSome:s,isNone:c,getOr:n,getOrThunk:n,getOrDie:n,getOrNull:n,getOrUndefined:n,or:e,orThunk:e,map:function(n){return f(n(t))},each:function(n){n(t)},bind:r,exists:r,forall:r,filter:function(n){return n(t)?o:a},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(n){return n.is(t)},equals_:function(n,e){return n.fold(c,function(n){return e(t,n)})}};return o},d=function(n){return null===n||n===undefined?a:f(n)},g=function(n){return n&&/^(TH|TD)$/.test(n.nodeName)},m=function(r){return function(n){return n&&/^(OL|UL|DL)$/.test(n.nodeName)&&(t=n,(e=r).$.contains(e.getBody(),t));var e,t}},p=function(n,e,t){var r=function(n,e){for(var t=0;t len) { - index = len; - } - } - return index; - }; - var setStart = function (rng, container, offset) { - if (container.nodeType !== 1 || container.hasChildNodes()) { - rng.setStart(container, scopeIndex(container, offset)); - } else { - rng.setStartBefore(container); - } - }; - var setEnd = function (rng, container, offset) { - if (container.nodeType !== 1 || container.hasChildNodes()) { - rng.setEnd(container, scopeIndex(container, offset)); - } else { - rng.setEndAfter(container); - } - }; - var parseCurrentLine = function (editor, endOffset, delimiter) { - var end, endContainer, bookmark, text, prev, len, rngText; - var autoLinkPattern = getAutoLinkPattern(editor); - var defaultLinkTarget = getDefaultLinkTarget(editor); - if (editor.selection.getNode().tagName === 'A') { - return; - } - var rng = editor.selection.getRng().cloneRange(); - if (rng.startOffset < 5) { - prev = rng.endContainer.previousSibling; - if (!prev) { - if (!rng.endContainer.firstChild || !rng.endContainer.firstChild.nextSibling) { - return; - } - prev = rng.endContainer.firstChild.nextSibling; - } - len = prev.length; - setStart(rng, prev, len); - setEnd(rng, prev, len); - if (rng.endOffset < 5) { - return; - } - end = rng.endOffset; - endContainer = prev; - } else { - endContainer = rng.endContainer; - if (endContainer.nodeType !== 3 && endContainer.firstChild) { - while (endContainer.nodeType !== 3 && endContainer.firstChild) { - endContainer = endContainer.firstChild; - } - if (endContainer.nodeType === 3) { - setStart(rng, endContainer, 0); - setEnd(rng, endContainer, endContainer.nodeValue.length); - } - } - if (rng.endOffset === 1) { - end = 2; - } else { - end = rng.endOffset - 1 - endOffset; - } - } - var start = end; - do { - setStart(rng, endContainer, end >= 2 ? end - 2 : 0); - setEnd(rng, endContainer, end >= 1 ? end - 1 : 0); - end -= 1; - rngText = rng.toString(); - } while (rngText !== ' ' && rngText !== '' && rngText.charCodeAt(0) !== 160 && end - 2 >= 0 && rngText !== delimiter); - if (rangeEqualsDelimiterOrSpace(rng.toString(), delimiter)) { - setStart(rng, endContainer, end); - setEnd(rng, endContainer, start); - end += 1; - } else if (rng.startOffset === 0) { - setStart(rng, endContainer, 0); - setEnd(rng, endContainer, start); - } else { - setStart(rng, endContainer, end); - setEnd(rng, endContainer, start); - } - text = rng.toString(); - if (text.charAt(text.length - 1) === '.') { - setEnd(rng, endContainer, start - 1); - } - text = rng.toString().trim(); - var matches = text.match(autoLinkPattern); - var protocol = getDefaultLinkProtocol(editor); - if (matches) { - if (matches[1] === 'www.') { - matches[1] = protocol + '://www.'; - } else if (/@$/.test(matches[1]) && !/^mailto:/.test(matches[1])) { - matches[1] = 'mailto:' + matches[1]; - } - bookmark = editor.selection.getBookmark(); - editor.selection.setRng(rng); - editor.execCommand('createlink', false, matches[1] + matches[2]); - if (defaultLinkTarget !== false) { - editor.dom.setAttrib(editor.selection.getNode(), 'target', defaultLinkTarget); - } - editor.selection.moveToBookmark(bookmark); - editor.nodeChanged(); - } - }; - var setup = function (editor) { - var autoUrlDetectState; - editor.on('keydown', function (e) { - if (e.keyCode === 13) { - return handleEnter(editor); - } - }); - if (global$1.browser.isIE()) { - editor.on('focus', function () { - if (!autoUrlDetectState) { - autoUrlDetectState = true; - try { - editor.execCommand('AutoUrlDetect', false, true); - } catch (ex) { - } - } - }); - return; - } - editor.on('keypress', function (e) { - if (e.keyCode === 41) { - return handleEclipse(editor); - } - }); - editor.on('keyup', function (e) { - if (e.keyCode === 32) { - return handleSpacebar(editor); - } - }); - }; - - function Plugin () { - global.add('autolink', function (editor) { - setup(editor); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/autolink/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/autolink/plugin.min.js deleted file mode 100644 index 2440054..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/autolink/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.Env"),i=function(e,t){var n;return t<0&&(t=0),3!==e.nodeType||(n=e.data.length) getAutoResizeMinHeight(editor)) { - resizeHeight = contentHeight + chromeHeight; - } - var maxHeight = getAutoResizeMaxHeight(editor); - if (maxHeight && resizeHeight > maxHeight) { - resizeHeight = maxHeight; - toggleScrolling(editor, true); - } else { - toggleScrolling(editor, false); - } - if (resizeHeight !== oldSize.get()) { - var deltaSize = resizeHeight - oldSize.get(); - dom.setStyle(editor.getContainer(), 'height', resizeHeight + 'px'); - oldSize.set(resizeHeight); - fireResizeEditor(editor); - if (global$1.browser.isSafari() && global$1.mac) { - var win = editor.getWin(); - win.scrollTo(win.pageXOffset, win.pageYOffset); - } - if (editor.hasFocus()) { - editor.selection.scrollIntoView(editor.selection.getNode()); - } - if (global$1.webkit && deltaSize < 0) { - resize(editor, oldSize); - } - } - }; - var setup = function (editor, oldSize) { - editor.on('init', function () { - var overflowPadding = getAutoResizeOverflowPadding(editor); - var dom = editor.dom; - dom.setStyles(editor.getDoc().documentElement, { height: 'auto' }); - dom.setStyles(editor.getBody(), { - 'paddingLeft': overflowPadding, - 'paddingRight': overflowPadding, - 'min-height': 0 - }); - }); - editor.on('NodeChange SetContent keyup FullscreenStateChanged ResizeContent', function () { - resize(editor, oldSize); - }); - if (shouldAutoResizeOnInit(editor)) { - editor.on('init', function () { - wait(editor, oldSize, 20, 100, function () { - wait(editor, oldSize, 5, 1000); - }); - }); - } - }; - - var register = function (editor, oldSize) { - editor.addCommand('mceAutoResize', function () { - resize(editor, oldSize); - }); - }; - - function Plugin () { - global.add('autoresize', function (editor) { - if (!editor.settings.hasOwnProperty('resize')) { - editor.settings.resize = false; - } - if (!editor.inline) { - var oldSize = Cell(0); - register(editor, oldSize); - setup(editor, oldSize); - } - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/autoresize/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/autoresize/plugin.min.js deleted file mode 100644 index 01cb7d5..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/autoresize/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),h=tinymce.util.Tools.resolve("tinymce.Env"),r=tinymce.util.Tools.resolve("tinymce.util.Delay"),y=function(e){return e.getParam("min_height",e.getElement().offsetHeight,"number")},a=function(e,t,n,i,o){r.setEditorTimeout(e,function(){b(e,t),n--?a(e,t,n,i,o):o&&o()},i)},p=function(e,t){var n=e.getBody();n&&(n.style.overflowY=t?"":"hidden",t||(n.scrollTop=0))},v=function(e,t,n,i){var o=parseInt(e.getStyle(t,n,i),10);return isNaN(o)?0:o},b=function(e,t){var n,i,o,r,s,a,g,u,l,c,m,f=e.dom,d=e.getDoc();d&&((n=e).plugins.fullscreen&&n.plugins.fullscreen.isFullscreen()?p(e,!0):(i=d.documentElement,o=e.getParam("autoresize_bottom_margin",50,"number"),r=y(e),s=v(f,i,"margin-top",!0),a=v(f,i,"margin-bottom",!0),(g=i.offsetHeight+s+a+o)<0&&(g=0),g+(u=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight)>y(e)&&(r=g+u),(l=e.getParam("max_height",0,"number"))&&l getAutoSaveRetention(editor)) { - removeDraft(editor, false); - return false; - } - return true; - }; - var removeDraft = function (editor, fire) { - var prefix = getAutoSavePrefix(editor); - global$2.removeItem(prefix + 'draft'); - global$2.removeItem(prefix + 'time'); - if (fire !== false) { - fireRemoveDraft(editor); - } - }; - var storeDraft = function (editor) { - var prefix = getAutoSavePrefix(editor); - if (!isEmpty(editor) && editor.isDirty()) { - global$2.setItem(prefix + 'draft', editor.getContent({ - format: 'raw', - no_events: true - })); - global$2.setItem(prefix + 'time', new Date().getTime().toString()); - fireStoreDraft(editor); - } - }; - var restoreDraft = function (editor) { - var prefix = getAutoSavePrefix(editor); - if (hasDraft(editor)) { - editor.setContent(global$2.getItem(prefix + 'draft'), { format: 'raw' }); - fireRestoreDraft(editor); - } - }; - var startStoreDraft = function (editor) { - var interval = getAutoSaveInterval(editor); - global$1.setEditorInterval(editor, function () { - storeDraft(editor); - }, interval); - }; - var restoreLastDraft = function (editor) { - editor.undoManager.transact(function () { - restoreDraft(editor); - removeDraft(editor); - }); - editor.focus(); - }; - - var get = function (editor) { - return { - hasDraft: function () { - return hasDraft(editor); - }, - storeDraft: function () { - return storeDraft(editor); - }, - restoreDraft: function () { - return restoreDraft(editor); - }, - removeDraft: function (fire) { - return removeDraft(editor, fire); - }, - isEmpty: function (html) { - return isEmpty(editor, html); - } - }; - }; - - var global$4 = tinymce.util.Tools.resolve('tinymce.EditorManager'); - - var setup = function (editor) { - editor.editorManager.on('BeforeUnload', function (e) { - var msg; - global$3.each(global$4.get(), function (editor) { - if (editor.plugins.autosave) { - editor.plugins.autosave.storeDraft(); - } - if (!msg && editor.isDirty() && shouldAskBeforeUnload(editor)) { - msg = editor.translate('You have unsaved changes are you sure you want to navigate away?'); - } - }); - if (msg) { - e.preventDefault(); - e.returnValue = msg; - } - }); - }; - - var makeSetupHandler = function (editor) { - return function (api) { - api.setDisabled(!hasDraft(editor)); - var editorEventCallback = function () { - return api.setDisabled(!hasDraft(editor)); - }; - editor.on('StoreDraft RestoreDraft RemoveDraft', editorEventCallback); - return function () { - return editor.off('StoreDraft RestoreDraft RemoveDraft', editorEventCallback); - }; - }; - }; - var register = function (editor) { - startStoreDraft(editor); - editor.ui.registry.addButton('restoredraft', { - tooltip: 'Restore last draft', - icon: 'restore-draft', - onAction: function () { - restoreLastDraft(editor); - }, - onSetup: makeSetupHandler(editor) - }); - editor.ui.registry.addMenuItem('restoredraft', { - text: 'Restore last draft', - icon: 'restore-draft', - onAction: function () { - restoreLastDraft(editor); - }, - onSetup: makeSetupHandler(editor) - }); - }; - - function Plugin () { - global.add('autosave', function (editor) { - setup(editor); - register(editor); - editor.on('init', function () { - if (shouldRestoreWhenEmpty(editor) && editor.dom.isEmpty(editor.getBody())) { - restoreDraft(editor); - } - }); - return get(editor); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/autosave/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/autosave/plugin.min.js deleted file mode 100644 index cd25294..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/autosave/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var e,t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=(e=undefined,function(t){return e===t}),r=tinymce.util.Tools.resolve("tinymce.util.Delay"),n=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),o=tinymce.util.Tools.resolve("tinymce.util.Tools"),i=function(t,e){var r=t||e,n=/^(\d+)([ms]?)$/.exec(""+r);return(n[2]?{s:1e3,m:6e4}[n[2]]:1)*parseInt(r,10)},u=function(t){var e=document.location;return t.getParam("autosave_prefix","tinymce-autosave-{path}{query}{hash}-{id}-").replace(/{path}/g,e.pathname).replace(/{query}/g,e.search).replace(/{hash}/g,e.hash).replace(/{id}/g,t.id)},s=function(t,e){if(a(e))return t.dom.isEmpty(t.getBody());var r=o.trim(e);if(""===r)return!0;var n=(new DOMParser).parseFromString(r,"text/html");return t.dom.isEmpty(n)},f=function(t){var e=parseInt(n.getItem(u(t)+"time"),10)||0;return!((new Date).getTime()-e>i(t.getParam("autosave_retention"),"20m"))||(c(t,!1),!1)},c=function(t,e){var r=u(t);n.removeItem(r+"draft"),n.removeItem(r+"time"),!1!==e&&t.fire("RemoveDraft")},m=function(t){var e=u(t);!s(t)&&t.isDirty()&&(n.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),n.setItem(e+"time",(new Date).getTime().toString()),t.fire("StoreDraft"))},l=function(t){var e=u(t);f(t)&&(t.setContent(n.getItem(e+"draft"),{format:"raw"}),t.fire("RestoreDraft"))},v=function(t){var e=i(t.getParam("autosave_interval"),"30s");r.setEditorInterval(t,function(){m(t)},e)},d=function(t){t.undoManager.transact(function(){l(t),c(t)}),t.focus()},g=tinymce.util.Tools.resolve("tinymce.EditorManager"),y=function(r){return function(t){t.setDisabled(!f(r));var e=function(){return t.setDisabled(!f(r))};return r.on("StoreDraft RestoreDraft RemoveDraft",e),function(){return r.off("StoreDraft RestoreDraft RemoveDraft",e)}}};t.add("autosave",function(t){var e,r;return t.editorManager.on("BeforeUnload",function(t){var e;o.each(g.get(),function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&t.getParam("autosave_ask_before_unload",!0)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e&&(t.preventDefault(),t.returnValue=e)}),v(e=t),e.ui.registry.addButton("restoredraft",{tooltip:"Restore last draft",icon:"restore-draft",onAction:function(){d(e)},onSetup:y(e)}),e.ui.registry.addMenuItem("restoredraft",{text:"Restore last draft",icon:"restore-draft",onAction:function(){d(e)},onSetup:y(e)}),t.on("init",function(){t.getParam("autosave_restore_when_empty",!1)&&t.dom.isEmpty(t.getBody())&&l(t)}),r=t,{hasDraft:function(){return f(r)},storeDraft:function(){return m(r)},restoreDraft:function(){return l(r)},removeDraft:function(t){return c(r,t)},isEmpty:function(t){return s(r,t)}}})}(); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/bbcode/plugin.js b/component/pear/module/tinymce/tinymce/plugins/bbcode/plugin.js deleted file mode 100644 index 5b7ac22..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/bbcode/plugin.js +++ /dev/null @@ -1,99 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -(function () { - 'use strict'; - - var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); - - var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); - - var html2bbcode = function (s) { - s = global$1.trim(s); - var rep = function (re, str) { - s = s.replace(re, str); - }; - rep(/(.*?)<\/a>/gi, '[url=$1]$2[/url]'); - rep(/(.*?)<\/font>/gi, '[code][color=$1]$2[/color][/code]'); - rep(/(.*?)<\/font>/gi, '[quote][color=$1]$2[/color][/quote]'); - rep(/(.*?)<\/font>/gi, '[code][color=$1]$2[/color][/code]'); - rep(/(.*?)<\/font>/gi, '[quote][color=$1]$2[/color][/quote]'); - rep(/(.*?)<\/span>/gi, '[color=$1]$2[/color]'); - rep(/(.*?)<\/font>/gi, '[color=$1]$2[/color]'); - rep(/(.*?)<\/span>/gi, '[size=$1]$2[/size]'); - rep(/(.*?)<\/font>/gi, '$1'); - rep(//gi, '[img]$1[/img]'); - rep(/(.*?)<\/span>/gi, '[code]$1[/code]'); - rep(/(.*?)<\/span>/gi, '[quote]$1[/quote]'); - rep(/(.*?)<\/strong>/gi, '[code][b]$1[/b][/code]'); - rep(/(.*?)<\/strong>/gi, '[quote][b]$1[/b][/quote]'); - rep(/(.*?)<\/em>/gi, '[code][i]$1[/i][/code]'); - rep(/(.*?)<\/em>/gi, '[quote][i]$1[/i][/quote]'); - rep(/(.*?)<\/u>/gi, '[code][u]$1[/u][/code]'); - rep(/(.*?)<\/u>/gi, '[quote][u]$1[/u][/quote]'); - rep(/<\/(strong|b)>/gi, '[/b]'); - rep(/<(strong|b)>/gi, '[b]'); - rep(/<\/(em|i)>/gi, '[/i]'); - rep(/<(em|i)>/gi, '[i]'); - rep(/<\/u>/gi, '[/u]'); - rep(/(.*?)<\/span>/gi, '[u]$1[/u]'); - rep(//gi, '[u]'); - rep(/]*>/gi, '[quote]'); - rep(/<\/blockquote>/gi, '[/quote]'); - rep(/
                                      /gi, '\n'); - rep(//gi, '\n'); - rep(/
                                      /gi, '\n'); - rep(/

                                      /gi, ''); - rep(/<\/p>/gi, '\n'); - rep(/ |\u00a0/gi, ' '); - rep(/"/gi, '"'); - rep(/</gi, '<'); - rep(/>/gi, '>'); - rep(/&/gi, '&'); - return s; - }; - var bbcode2html = function (s) { - s = global$1.trim(s); - var rep = function (re, str) { - s = s.replace(re, str); - }; - rep(/\n/gi, '
                                      '); - rep(/\[b\]/gi, ''); - rep(/\[\/b\]/gi, ''); - rep(/\[i\]/gi, ''); - rep(/\[\/i\]/gi, ''); - rep(/\[u\]/gi, ''); - rep(/\[\/u\]/gi, ''); - rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi, '$2'); - rep(/\[url\](.*?)\[\/url\]/gi, '$1'); - rep(/\[img\](.*?)\[\/img\]/gi, ''); - rep(/\[color=(.*?)\](.*?)\[\/color\]/gi, '$2'); - rep(/\[code\](.*?)\[\/code\]/gi, '$1 '); - rep(/\[quote.*?\](.*?)\[\/quote\]/gi, '$1 '); - return s; - }; - - function Plugin () { - global.add('bbcode', function (editor) { - editor.on('BeforeSetContent', function (e) { - e.content = bbcode2html(e.content); - }); - editor.on('PostProcess', function (e) { - if (e.set) { - e.content = bbcode2html(e.content); - } - if (e.get) { - e.content = html2bbcode(e.content); - } - }); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/bbcode/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/bbcode/plugin.min.js deleted file mode 100644 index a0471d4..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/bbcode/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),e=tinymce.util.Tools.resolve("tinymce.util.Tools"),t=function(t){t=e.trim(t);var o=function(o,e){t=t.replace(o,e)};return o(/\n/gi,"
                                      "),o(/\[b\]/gi,""),o(/\[\/b\]/gi,""),o(/\[i\]/gi,""),o(/\[\/i\]/gi,""),o(/\[u\]/gi,""),o(/\[\/u\]/gi,""),o(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'$2'),o(/\[url\](.*?)\[\/url\]/gi,'$1'),o(/\[img\](.*?)\[\/img\]/gi,''),o(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2'),o(/\[code\](.*?)\[\/code\]/gi,'$1 '),o(/\[quote.*?\](.*?)\[\/quote\]/gi,'$1 '),t};o.add("bbcode",function(o){o.on("BeforeSetContent",function(o){o.content=t(o.content)}),o.on("PostProcess",function(o){o.set&&(o.content=t(o.content)),o.get&&(o.content=function(t){t=e.trim(t);var o=function(o,e){t=t.replace(o,e)};return o(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"),o(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"),o(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"),o(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"),o(/(.*?)<\/font>/gi,"$1"),o(//gi,"[img]$1[/img]"),o(/(.*?)<\/span>/gi,"[code]$1[/code]"),o(/(.*?)<\/span>/gi,"[quote]$1[/quote]"),o(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),o(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),o(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),o(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),o(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),o(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),o(/<\/(strong|b)>/gi,"[/b]"),o(/<(strong|b)>/gi,"[b]"),o(/<\/(em|i)>/gi,"[/i]"),o(/<(em|i)>/gi,"[i]"),o(/<\/u>/gi,"[/u]"),o(/(.*?)<\/span>/gi,"[u]$1[/u]"),o(//gi,"[u]"),o(/]*>/gi,"[quote]"),o(/<\/blockquote>/gi,"[/quote]"),o(/
                                      /gi,"\n"),o(//gi,"\n"),o(/
                                      /gi,"\n"),o(/

                                      /gi,""),o(/<\/p>/gi,"\n"),o(/ |\u00a0/gi," "),o(/"/gi,'"'),o(/</gi,"<"),o(/>/gi,">"),o(/&/gi,"&"),t}(o.content))})})}(); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/charmap/plugin.js b/component/pear/module/tinymce/tinymce/plugins/charmap/plugin.js deleted file mode 100644 index cceb2ec..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/charmap/plugin.js +++ /dev/null @@ -1,1706 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -(function () { - 'use strict'; - - var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); - - var fireInsertCustomChar = function (editor, chr) { - return editor.fire('insertCustomChar', { chr: chr }); - }; - - var insertChar = function (editor, chr) { - var evtChr = fireInsertCustomChar(editor, chr).chr; - editor.execCommand('mceInsertContent', false, evtChr); - }; - - var noop = function () { - }; - var constant = function (value) { - return function () { - return value; - }; - }; - var never = constant(false); - var always = constant(true); - - var none = function () { - return NONE; - }; - var NONE = function () { - var eq = function (o) { - return o.isNone(); - }; - var call = function (thunk) { - return thunk(); - }; - var id = function (n) { - return n; - }; - var me = { - fold: function (n, _s) { - return n(); - }, - is: never, - isSome: never, - isNone: always, - getOr: id, - getOrThunk: call, - getOrDie: function (msg) { - throw new Error(msg || 'error: getOrDie called on none.'); - }, - getOrNull: constant(null), - getOrUndefined: constant(undefined), - or: id, - orThunk: call, - map: none, - each: noop, - bind: none, - exists: never, - forall: always, - filter: none, - equals: eq, - equals_: eq, - toArray: function () { - return []; - }, - toString: constant('none()') - }; - return me; - }(); - var some = function (a) { - var constant_a = constant(a); - var self = function () { - return me; - }; - var bind = function (f) { - return f(a); - }; - var me = { - fold: function (n, s) { - return s(a); - }, - is: function (v) { - return a === v; - }, - isSome: always, - isNone: never, - getOr: constant_a, - getOrThunk: constant_a, - getOrDie: constant_a, - getOrNull: constant_a, - getOrUndefined: constant_a, - or: self, - orThunk: self, - map: function (f) { - return some(f(a)); - }, - each: function (f) { - f(a); - }, - bind: bind, - exists: bind, - forall: bind, - filter: function (f) { - return f(a) ? me : NONE; - }, - toArray: function () { - return [a]; - }, - toString: function () { - return 'some(' + a + ')'; - }, - equals: function (o) { - return o.is(a); - }, - equals_: function (o, elementEq) { - return o.fold(never, function (b) { - return elementEq(a, b); - }); - } - }; - return me; - }; - var from = function (value) { - return value === null || value === undefined ? NONE : some(value); - }; - var Optional = { - some: some, - none: none, - from: from - }; - - var typeOf = function (x) { - var t = typeof x; - if (x === null) { - return 'null'; - } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { - return 'array'; - } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { - return 'string'; - } else { - return t; - } - }; - var isType = function (type) { - return function (value) { - return typeOf(value) === type; - }; - }; - var isArray = isType('array'); - - var nativePush = Array.prototype.push; - var map = function (xs, f) { - var len = xs.length; - var r = new Array(len); - for (var i = 0; i < len; i++) { - var x = xs[i]; - r[i] = f(x, i); - } - return r; - }; - var each = function (xs, f) { - for (var i = 0, len = xs.length; i < len; i++) { - var x = xs[i]; - f(x, i); - } - }; - var findUntil = function (xs, pred, until) { - for (var i = 0, len = xs.length; i < len; i++) { - var x = xs[i]; - if (pred(x, i)) { - return Optional.some(x); - } else if (until(x, i)) { - break; - } - } - return Optional.none(); - }; - var find = function (xs, pred) { - return findUntil(xs, pred, never); - }; - var flatten = function (xs) { - var r = []; - for (var i = 0, len = xs.length; i < len; ++i) { - if (!isArray(xs[i])) { - throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); - } - nativePush.apply(r, xs[i]); - } - return r; - }; - var bind = function (xs, f) { - return flatten(map(xs, f)); - }; - - var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); - - var getCharMap = function (editor) { - return editor.getParam('charmap'); - }; - var getCharMapAppend = function (editor) { - return editor.getParam('charmap_append'); - }; - - var isArray$1 = global$1.isArray; - var UserDefined = 'User Defined'; - var getDefaultCharMap = function () { - return [ - { - name: 'Currency', - characters: [ - [ - 36, - 'dollar sign' - ], - [ - 162, - 'cent sign' - ], - [ - 8364, - 'euro sign' - ], - [ - 163, - 'pound sign' - ], - [ - 165, - 'yen sign' - ], - [ - 164, - 'currency sign' - ], - [ - 8352, - 'euro-currency sign' - ], - [ - 8353, - 'colon sign' - ], - [ - 8354, - 'cruzeiro sign' - ], - [ - 8355, - 'french franc sign' - ], - [ - 8356, - 'lira sign' - ], - [ - 8357, - 'mill sign' - ], - [ - 8358, - 'naira sign' - ], - [ - 8359, - 'peseta sign' - ], - [ - 8360, - 'rupee sign' - ], - [ - 8361, - 'won sign' - ], - [ - 8362, - 'new sheqel sign' - ], - [ - 8363, - 'dong sign' - ], - [ - 8365, - 'kip sign' - ], - [ - 8366, - 'tugrik sign' - ], - [ - 8367, - 'drachma sign' - ], - [ - 8368, - 'german penny symbol' - ], - [ - 8369, - 'peso sign' - ], - [ - 8370, - 'guarani sign' - ], - [ - 8371, - 'austral sign' - ], - [ - 8372, - 'hryvnia sign' - ], - [ - 8373, - 'cedi sign' - ], - [ - 8374, - 'livre tournois sign' - ], - [ - 8375, - 'spesmilo sign' - ], - [ - 8376, - 'tenge sign' - ], - [ - 8377, - 'indian rupee sign' - ], - [ - 8378, - 'turkish lira sign' - ], - [ - 8379, - 'nordic mark sign' - ], - [ - 8380, - 'manat sign' - ], - [ - 8381, - 'ruble sign' - ], - [ - 20870, - 'yen character' - ], - [ - 20803, - 'yuan character' - ], - [ - 22291, - 'yuan character, in hong kong and taiwan' - ], - [ - 22278, - 'yen/yuan character variant one' - ] - ] - }, - { - name: 'Text', - characters: [ - [ - 169, - 'copyright sign' - ], - [ - 174, - 'registered sign' - ], - [ - 8482, - 'trade mark sign' - ], - [ - 8240, - 'per mille sign' - ], - [ - 181, - 'micro sign' - ], - [ - 183, - 'middle dot' - ], - [ - 8226, - 'bullet' - ], - [ - 8230, - 'three dot leader' - ], - [ - 8242, - 'minutes / feet' - ], - [ - 8243, - 'seconds / inches' - ], - [ - 167, - 'section sign' - ], - [ - 182, - 'paragraph sign' - ], - [ - 223, - 'sharp s / ess-zed' - ] - ] - }, - { - name: 'Quotations', - characters: [ - [ - 8249, - 'single left-pointing angle quotation mark' - ], - [ - 8250, - 'single right-pointing angle quotation mark' - ], - [ - 171, - 'left pointing guillemet' - ], - [ - 187, - 'right pointing guillemet' - ], - [ - 8216, - 'left single quotation mark' - ], - [ - 8217, - 'right single quotation mark' - ], - [ - 8220, - 'left double quotation mark' - ], - [ - 8221, - 'right double quotation mark' - ], - [ - 8218, - 'single low-9 quotation mark' - ], - [ - 8222, - 'double low-9 quotation mark' - ], - [ - 60, - 'less-than sign' - ], - [ - 62, - 'greater-than sign' - ], - [ - 8804, - 'less-than or equal to' - ], - [ - 8805, - 'greater-than or equal to' - ], - [ - 8211, - 'en dash' - ], - [ - 8212, - 'em dash' - ], - [ - 175, - 'macron' - ], - [ - 8254, - 'overline' - ], - [ - 164, - 'currency sign' - ], - [ - 166, - 'broken bar' - ], - [ - 168, - 'diaeresis' - ], - [ - 161, - 'inverted exclamation mark' - ], - [ - 191, - 'turned question mark' - ], - [ - 710, - 'circumflex accent' - ], - [ - 732, - 'small tilde' - ], - [ - 176, - 'degree sign' - ], - [ - 8722, - 'minus sign' - ], - [ - 177, - 'plus-minus sign' - ], - [ - 247, - 'division sign' - ], - [ - 8260, - 'fraction slash' - ], - [ - 215, - 'multiplication sign' - ], - [ - 185, - 'superscript one' - ], - [ - 178, - 'superscript two' - ], - [ - 179, - 'superscript three' - ], - [ - 188, - 'fraction one quarter' - ], - [ - 189, - 'fraction one half' - ], - [ - 190, - 'fraction three quarters' - ] - ] - }, - { - name: 'Mathematical', - characters: [ - [ - 402, - 'function / florin' - ], - [ - 8747, - 'integral' - ], - [ - 8721, - 'n-ary sumation' - ], - [ - 8734, - 'infinity' - ], - [ - 8730, - 'square root' - ], - [ - 8764, - 'similar to' - ], - [ - 8773, - 'approximately equal to' - ], - [ - 8776, - 'almost equal to' - ], - [ - 8800, - 'not equal to' - ], - [ - 8801, - 'identical to' - ], - [ - 8712, - 'element of' - ], - [ - 8713, - 'not an element of' - ], - [ - 8715, - 'contains as member' - ], - [ - 8719, - 'n-ary product' - ], - [ - 8743, - 'logical and' - ], - [ - 8744, - 'logical or' - ], - [ - 172, - 'not sign' - ], - [ - 8745, - 'intersection' - ], - [ - 8746, - 'union' - ], - [ - 8706, - 'partial differential' - ], - [ - 8704, - 'for all' - ], - [ - 8707, - 'there exists' - ], - [ - 8709, - 'diameter' - ], - [ - 8711, - 'backward difference' - ], - [ - 8727, - 'asterisk operator' - ], - [ - 8733, - 'proportional to' - ], - [ - 8736, - 'angle' - ] - ] - }, - { - name: 'Extended Latin', - characters: [ - [ - 192, - 'A - grave' - ], - [ - 193, - 'A - acute' - ], - [ - 194, - 'A - circumflex' - ], - [ - 195, - 'A - tilde' - ], - [ - 196, - 'A - diaeresis' - ], - [ - 197, - 'A - ring above' - ], - [ - 256, - 'A - macron' - ], - [ - 198, - 'ligature AE' - ], - [ - 199, - 'C - cedilla' - ], - [ - 200, - 'E - grave' - ], - [ - 201, - 'E - acute' - ], - [ - 202, - 'E - circumflex' - ], - [ - 203, - 'E - diaeresis' - ], - [ - 274, - 'E - macron' - ], - [ - 204, - 'I - grave' - ], - [ - 205, - 'I - acute' - ], - [ - 206, - 'I - circumflex' - ], - [ - 207, - 'I - diaeresis' - ], - [ - 298, - 'I - macron' - ], - [ - 208, - 'ETH' - ], - [ - 209, - 'N - tilde' - ], - [ - 210, - 'O - grave' - ], - [ - 211, - 'O - acute' - ], - [ - 212, - 'O - circumflex' - ], - [ - 213, - 'O - tilde' - ], - [ - 214, - 'O - diaeresis' - ], - [ - 216, - 'O - slash' - ], - [ - 332, - 'O - macron' - ], - [ - 338, - 'ligature OE' - ], - [ - 352, - 'S - caron' - ], - [ - 217, - 'U - grave' - ], - [ - 218, - 'U - acute' - ], - [ - 219, - 'U - circumflex' - ], - [ - 220, - 'U - diaeresis' - ], - [ - 362, - 'U - macron' - ], - [ - 221, - 'Y - acute' - ], - [ - 376, - 'Y - diaeresis' - ], - [ - 562, - 'Y - macron' - ], - [ - 222, - 'THORN' - ], - [ - 224, - 'a - grave' - ], - [ - 225, - 'a - acute' - ], - [ - 226, - 'a - circumflex' - ], - [ - 227, - 'a - tilde' - ], - [ - 228, - 'a - diaeresis' - ], - [ - 229, - 'a - ring above' - ], - [ - 257, - 'a - macron' - ], - [ - 230, - 'ligature ae' - ], - [ - 231, - 'c - cedilla' - ], - [ - 232, - 'e - grave' - ], - [ - 233, - 'e - acute' - ], - [ - 234, - 'e - circumflex' - ], - [ - 235, - 'e - diaeresis' - ], - [ - 275, - 'e - macron' - ], - [ - 236, - 'i - grave' - ], - [ - 237, - 'i - acute' - ], - [ - 238, - 'i - circumflex' - ], - [ - 239, - 'i - diaeresis' - ], - [ - 299, - 'i - macron' - ], - [ - 240, - 'eth' - ], - [ - 241, - 'n - tilde' - ], - [ - 242, - 'o - grave' - ], - [ - 243, - 'o - acute' - ], - [ - 244, - 'o - circumflex' - ], - [ - 245, - 'o - tilde' - ], - [ - 246, - 'o - diaeresis' - ], - [ - 248, - 'o slash' - ], - [ - 333, - 'o macron' - ], - [ - 339, - 'ligature oe' - ], - [ - 353, - 's - caron' - ], - [ - 249, - 'u - grave' - ], - [ - 250, - 'u - acute' - ], - [ - 251, - 'u - circumflex' - ], - [ - 252, - 'u - diaeresis' - ], - [ - 363, - 'u - macron' - ], - [ - 253, - 'y - acute' - ], - [ - 254, - 'thorn' - ], - [ - 255, - 'y - diaeresis' - ], - [ - 563, - 'y - macron' - ], - [ - 913, - 'Alpha' - ], - [ - 914, - 'Beta' - ], - [ - 915, - 'Gamma' - ], - [ - 916, - 'Delta' - ], - [ - 917, - 'Epsilon' - ], - [ - 918, - 'Zeta' - ], - [ - 919, - 'Eta' - ], - [ - 920, - 'Theta' - ], - [ - 921, - 'Iota' - ], - [ - 922, - 'Kappa' - ], - [ - 923, - 'Lambda' - ], - [ - 924, - 'Mu' - ], - [ - 925, - 'Nu' - ], - [ - 926, - 'Xi' - ], - [ - 927, - 'Omicron' - ], - [ - 928, - 'Pi' - ], - [ - 929, - 'Rho' - ], - [ - 931, - 'Sigma' - ], - [ - 932, - 'Tau' - ], - [ - 933, - 'Upsilon' - ], - [ - 934, - 'Phi' - ], - [ - 935, - 'Chi' - ], - [ - 936, - 'Psi' - ], - [ - 937, - 'Omega' - ], - [ - 945, - 'alpha' - ], - [ - 946, - 'beta' - ], - [ - 947, - 'gamma' - ], - [ - 948, - 'delta' - ], - [ - 949, - 'epsilon' - ], - [ - 950, - 'zeta' - ], - [ - 951, - 'eta' - ], - [ - 952, - 'theta' - ], - [ - 953, - 'iota' - ], - [ - 954, - 'kappa' - ], - [ - 955, - 'lambda' - ], - [ - 956, - 'mu' - ], - [ - 957, - 'nu' - ], - [ - 958, - 'xi' - ], - [ - 959, - 'omicron' - ], - [ - 960, - 'pi' - ], - [ - 961, - 'rho' - ], - [ - 962, - 'final sigma' - ], - [ - 963, - 'sigma' - ], - [ - 964, - 'tau' - ], - [ - 965, - 'upsilon' - ], - [ - 966, - 'phi' - ], - [ - 967, - 'chi' - ], - [ - 968, - 'psi' - ], - [ - 969, - 'omega' - ] - ] - }, - { - name: 'Symbols', - characters: [ - [ - 8501, - 'alef symbol' - ], - [ - 982, - 'pi symbol' - ], - [ - 8476, - 'real part symbol' - ], - [ - 978, - 'upsilon - hook symbol' - ], - [ - 8472, - 'Weierstrass p' - ], - [ - 8465, - 'imaginary part' - ] - ] - }, - { - name: 'Arrows', - characters: [ - [ - 8592, - 'leftwards arrow' - ], - [ - 8593, - 'upwards arrow' - ], - [ - 8594, - 'rightwards arrow' - ], - [ - 8595, - 'downwards arrow' - ], - [ - 8596, - 'left right arrow' - ], - [ - 8629, - 'carriage return' - ], - [ - 8656, - 'leftwards double arrow' - ], - [ - 8657, - 'upwards double arrow' - ], - [ - 8658, - 'rightwards double arrow' - ], - [ - 8659, - 'downwards double arrow' - ], - [ - 8660, - 'left right double arrow' - ], - [ - 8756, - 'therefore' - ], - [ - 8834, - 'subset of' - ], - [ - 8835, - 'superset of' - ], - [ - 8836, - 'not a subset of' - ], - [ - 8838, - 'subset of or equal to' - ], - [ - 8839, - 'superset of or equal to' - ], - [ - 8853, - 'circled plus' - ], - [ - 8855, - 'circled times' - ], - [ - 8869, - 'perpendicular' - ], - [ - 8901, - 'dot operator' - ], - [ - 8968, - 'left ceiling' - ], - [ - 8969, - 'right ceiling' - ], - [ - 8970, - 'left floor' - ], - [ - 8971, - 'right floor' - ], - [ - 9001, - 'left-pointing angle bracket' - ], - [ - 9002, - 'right-pointing angle bracket' - ], - [ - 9674, - 'lozenge' - ], - [ - 9824, - 'black spade suit' - ], - [ - 9827, - 'black club suit' - ], - [ - 9829, - 'black heart suit' - ], - [ - 9830, - 'black diamond suit' - ], - [ - 8194, - 'en space' - ], - [ - 8195, - 'em space' - ], - [ - 8201, - 'thin space' - ], - [ - 8204, - 'zero width non-joiner' - ], - [ - 8205, - 'zero width joiner' - ], - [ - 8206, - 'left-to-right mark' - ], - [ - 8207, - 'right-to-left mark' - ] - ] - } - ]; - }; - var charmapFilter = function (charmap) { - return global$1.grep(charmap, function (item) { - return isArray$1(item) && item.length === 2; - }); - }; - var getCharsFromSetting = function (settingValue) { - if (isArray$1(settingValue)) { - return [].concat(charmapFilter(settingValue)); - } - if (typeof settingValue === 'function') { - return settingValue(); - } - return []; - }; - var extendCharMap = function (editor, charmap) { - var userCharMap = getCharMap(editor); - if (userCharMap) { - charmap = [{ - name: UserDefined, - characters: getCharsFromSetting(userCharMap) - }]; - } - var userCharMapAppend = getCharMapAppend(editor); - if (userCharMapAppend) { - var userDefinedGroup = global$1.grep(charmap, function (cg) { - return cg.name === UserDefined; - }); - if (userDefinedGroup.length) { - userDefinedGroup[0].characters = [].concat(userDefinedGroup[0].characters).concat(getCharsFromSetting(userCharMapAppend)); - return charmap; - } - return [].concat(charmap).concat({ - name: UserDefined, - characters: getCharsFromSetting(userCharMapAppend) - }); - } - return charmap; - }; - var getCharMap$1 = function (editor) { - var groups = extendCharMap(editor, getDefaultCharMap()); - return groups.length > 1 ? [{ - name: 'All', - characters: bind(groups, function (g) { - return g.characters; - }) - }].concat(groups) : groups; - }; - - var get = function (editor) { - var getCharMap = function () { - return getCharMap$1(editor); - }; - var insertChar$1 = function (chr) { - insertChar(editor, chr); - }; - return { - getCharMap: getCharMap, - insertChar: insertChar$1 - }; - }; - - var Cell = function (initial) { - var value = initial; - var get = function () { - return value; - }; - var set = function (v) { - value = v; - }; - return { - get: get, - set: set - }; - }; - - var last = function (fn, rate) { - var timer = null; - var cancel = function () { - if (timer !== null) { - clearTimeout(timer); - timer = null; - } - }; - var throttle = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - if (timer !== null) { - clearTimeout(timer); - } - timer = setTimeout(function () { - fn.apply(null, args); - timer = null; - }, rate); - }; - return { - cancel: cancel, - throttle: throttle - }; - }; - - var nativeFromCodePoint = String.fromCodePoint; - var contains = function (str, substr) { - return str.indexOf(substr) !== -1; - }; - var fromCodePoint = function () { - var codePoints = []; - for (var _i = 0; _i < arguments.length; _i++) { - codePoints[_i] = arguments[_i]; - } - if (nativeFromCodePoint) { - return nativeFromCodePoint.apply(void 0, codePoints); - } else { - var codeUnits = []; - var codeLen = 0; - var result = ''; - for (var index = 0, len = codePoints.length; index !== len; ++index) { - var codePoint = +codePoints[index]; - if (!(codePoint < 1114111 && codePoint >>> 0 === codePoint)) { - throw RangeError('Invalid code point: ' + codePoint); - } - if (codePoint <= 65535) { - codeLen = codeUnits.push(codePoint); - } else { - codePoint -= 65536; - codeLen = codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320); - } - if (codeLen >= 16383) { - result += String.fromCharCode.apply(null, codeUnits); - codeUnits.length = 0; - } - } - return result + String.fromCharCode.apply(null, codeUnits); - } - }; - - var charMatches = function (charCode, name, lowerCasePattern) { - if (contains(fromCodePoint(charCode).toLowerCase(), lowerCasePattern)) { - return true; - } else { - return contains(name.toLowerCase(), lowerCasePattern) || contains(name.toLowerCase().replace(/\s+/g, ''), lowerCasePattern); - } - }; - var scan = function (group, pattern) { - var matches = []; - var lowerCasePattern = pattern.toLowerCase(); - each(group.characters, function (g) { - if (charMatches(g[0], g[1], lowerCasePattern)) { - matches.push(g); - } - }); - return map(matches, function (m) { - return { - text: m[1], - value: fromCodePoint(m[0]), - icon: fromCodePoint(m[0]) - }; - }); - }; - - var patternName = 'pattern'; - var open = function (editor, charMap) { - var makeGroupItems = function () { - return [ - { - label: 'Search', - type: 'input', - name: patternName - }, - { - type: 'collection', - name: 'results' - } - ]; - }; - var makeTabs = function () { - return map(charMap, function (charGroup) { - return { - title: charGroup.name, - name: charGroup.name, - items: makeGroupItems() - }; - }); - }; - var makePanel = function () { - return { - type: 'panel', - items: makeGroupItems() - }; - }; - var makeTabPanel = function () { - return { - type: 'tabpanel', - tabs: makeTabs() - }; - }; - var currentTab = charMap.length === 1 ? Cell(UserDefined) : Cell('All'); - var scanAndSet = function (dialogApi, pattern) { - find(charMap, function (group) { - return group.name === currentTab.get(); - }).each(function (f) { - var items = scan(f, pattern); - dialogApi.setData({ results: items }); - }); - }; - var SEARCH_DELAY = 40; - var updateFilter = last(function (dialogApi) { - var pattern = dialogApi.getData().pattern; - scanAndSet(dialogApi, pattern); - }, SEARCH_DELAY); - var body = charMap.length === 1 ? makePanel() : makeTabPanel(); - var initialData = { - pattern: '', - results: scan(charMap[0], '') - }; - var bridgeSpec = { - title: 'Special Character', - size: 'normal', - body: body, - buttons: [{ - type: 'cancel', - name: 'close', - text: 'Close', - primary: true - }], - initialData: initialData, - onAction: function (api, details) { - if (details.name === 'results') { - insertChar(editor, details.value); - api.close(); - } - }, - onTabChange: function (dialogApi, details) { - currentTab.set(details.newTabName); - updateFilter.throttle(dialogApi); - }, - onChange: function (dialogApi, changeData) { - if (changeData.name === patternName) { - updateFilter.throttle(dialogApi); - } - } - }; - var dialogApi = editor.windowManager.open(bridgeSpec); - dialogApi.focus(patternName); - }; - - var register = function (editor, charMap) { - editor.addCommand('mceShowCharmap', function () { - open(editor, charMap); - }); - }; - - var global$2 = tinymce.util.Tools.resolve('tinymce.util.Promise'); - - var init = function (editor, all) { - editor.ui.registry.addAutocompleter('charmap', { - ch: ':', - columns: 'auto', - minChars: 2, - fetch: function (pattern, _maxResults) { - return new global$2(function (resolve, _reject) { - resolve(scan(all, pattern)); - }); - }, - onAction: function (autocompleteApi, rng, value) { - editor.selection.setRng(rng); - editor.insertContent(value); - autocompleteApi.hide(); - } - }); - }; - - var register$1 = function (editor) { - editor.ui.registry.addButton('charmap', { - icon: 'insert-character', - tooltip: 'Special character', - onAction: function () { - return editor.execCommand('mceShowCharmap'); - } - }); - editor.ui.registry.addMenuItem('charmap', { - icon: 'insert-character', - text: 'Special character...', - onAction: function () { - return editor.execCommand('mceShowCharmap'); - } - }); - }; - - function Plugin () { - global.add('charmap', function (editor) { - var charMap = getCharMap$1(editor); - register(editor, charMap); - register$1(editor); - init(editor, charMap[0]); - return get(editor); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/charmap/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/charmap/plugin.min.js deleted file mode 100644 index 3df46f2..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/charmap/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var e,n,r,t,a=tinymce.util.Tools.resolve("tinymce.PluginManager"),s=function(e,n){var r,t=(r=n,e.fire("insertCustomChar",{chr:r}).chr);e.execCommand("mceInsertContent",!1,t)},i=function(e){return function(){return e}},o=i(!1),c=i(!0),u=function(){return l},l=(e=function(e){return e.isNone()},{fold:function(e,n){return e()},is:o,isSome:o,isNone:c,getOr:r=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:r,orThunk:n,map:u,each:function(){},bind:u,exists:o,forall:c,filter:u,equals:e,equals_:e,toArray:function(){return[]},toString:i("none()")}),g=function(r){var e=i(r),n=function(){return a},t=function(e){return e(r)},a={fold:function(e,n){return n(r)},is:function(e){return r===e},isSome:c,isNone:o,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:n,orThunk:n,map:function(e){return g(e(r))},each:function(e){e(r)},bind:t,exists:t,forall:t,filter:function(e){return e(r)?a:l},toArray:function(){return[r]},toString:function(){return"some("+r+")"},equals:function(e){return e.is(r)},equals_:function(e,n){return e.fold(o,function(e){return n(r,e)})}};return a},m={some:g,none:u,from:function(e){return null===e||e===undefined?l:g(e)}},f=(t="array",function(e){return r=typeof(n=e),(null===n?"null":"object"==r&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==r&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":r)===t;var n,r}),h=Array.prototype.push,p=function(e,n){for(var r=e.length,t=new Array(r),a=0;a>>0===o))throw RangeError("Invalid code point: "+o);16383<=(o<=65535?r.push(o):(o-=65536,r.push(55296+(o>>10),o%1024+56320)))&&(t+=String.fromCharCode.apply(null,r),r.length=0)}return t+String.fromCharCode.apply(null,r)},S=function(e,n){var a=[],i=n.toLowerCase();return function(e,n){for(var r=0,t=e.length;r= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none(); - }; - var head = function (xs) { - return get(xs, 0); - }; - - var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); - - function isCodeSample(elm) { - return elm && elm.nodeName === 'PRE' && elm.className.indexOf('language-') !== -1; - } - function trimArg(predicateFn) { - return function (arg1, arg2) { - return predicateFn(arg2); - }; - } - - var Global = typeof window !== 'undefined' ? window : Function('return this;')(); - - var exports$1 = {}, module = { exports: exports$1 }, global$2 = {}; - (function (define, exports, module, require) { - var oldprism = window.Prism; - window.Prism = { manual: true }; - (function (f) { - if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = f(); - } else if (typeof define === 'function' && define.amd) { - define([], f); - } else { - var g; - if (typeof window !== 'undefined') { - g = window; - } else if (typeof global$2 !== 'undefined') { - g = global$2; - } else if (typeof self !== 'undefined') { - g = self; - } else { - g = this; - } - g.EphoxContactWrapper = f(); - } - }(function () { - return function () { - function r(e, n, t) { - function o(i, f) { - if (!n[i]) { - if (!e[i]) { - var c = 'function' == typeof require && require; - if (!f && c) - return c(i, !0); - if (u) - return u(i, !0); - var a = new Error('Cannot find module \'' + i + '\''); - throw a.code = 'MODULE_NOT_FOUND', a; - } - var p = n[i] = { exports: {} }; - e[i][0].call(p.exports, function (r) { - var n = e[i][1][r]; - return o(n || r); - }, p, p.exports, r, e, n, t); - } - return n[i].exports; - } - for (var u = 'function' == typeof require && require, i = 0; i < t.length; i++) - o(t[i]); - return o; - } - return r; - }()({ - 1: [ - function (require, module, exports) { - Prism.languages.c = Prism.languages.extend('clike', { - 'comment': { - pattern: /\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/, - greedy: true - }, - 'class-name': { - pattern: /(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+/, - lookbehind: true - }, - 'keyword': /\b(?:__attribute__|_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/, - 'function': /[a-z_]\w*(?=\s*\()/i, - 'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/, - 'number': /(?:\b0x(?:[\da-f]+\.?[\da-f]*|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i - }); - Prism.languages.insertBefore('c', 'string', { - 'macro': { - pattern: /(^\s*)#\s*[a-z]+(?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im, - lookbehind: true, - greedy: true, - alias: 'property', - inside: { - 'string': [ - { - pattern: /^(#\s*include\s*)<[^>]+>/, - lookbehind: true - }, - Prism.languages.c['string'] - ], - 'comment': Prism.languages.c['comment'], - 'directive': { - pattern: /^(#\s*)[a-z]+/, - lookbehind: true, - alias: 'keyword' - }, - 'directive-hash': /^#/, - 'punctuation': /##|\\(?=[\r\n])/, - 'expression': { - pattern: /\S[\s\S]*/, - inside: Prism.languages.c - } - } - }, - 'constant': /\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/ - }); - delete Prism.languages.c['boolean']; - }, - {} - ], - 2: [ - function (require, module, exports) { - Prism.languages.clike = { - 'comment': [ - { - pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, - lookbehind: true - }, - { - pattern: /(^|[^\\:])\/\/.*/, - lookbehind: true, - greedy: true - } - ], - 'string': { - pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - 'class-name': { - pattern: /(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i, - lookbehind: true, - inside: { 'punctuation': /[.\\]/ } - }, - 'keyword': /\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/, - 'boolean': /\b(?:true|false)\b/, - 'function': /\w+(?=\()/, - 'number': /\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i, - 'operator': /[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/, - 'punctuation': /[{}[\];(),.:]/ - }; - }, - {} - ], - 3: [ - function (require, module, exports) { - (function (global) { - (function () { - var _self = typeof window !== 'undefined' ? window : typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope ? self : {}; - var Prism = function (_self) { - var lang = /\blang(?:uage)?-([\w-]+)\b/i; - var uniqueId = 0; - var _ = { - manual: _self.Prism && _self.Prism.manual, - disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler, - util: { - encode: function encode(tokens) { - if (tokens instanceof Token) { - return new Token(tokens.type, encode(tokens.content), tokens.alias); - } else if (Array.isArray(tokens)) { - return tokens.map(encode); - } else { - return tokens.replace(/&/g, '&').replace(/' + env.content + ''; - }; - function matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) { - for (var token in grammar) { - if (!grammar.hasOwnProperty(token) || !grammar[token]) { - continue; - } - var patterns = grammar[token]; - patterns = Array.isArray(patterns) ? patterns : [patterns]; - for (var j = 0; j < patterns.length; ++j) { - if (rematch && rematch.cause == token + ',' + j) { - return; - } - var patternObj = patterns[j], inside = patternObj.inside, lookbehind = !!patternObj.lookbehind, greedy = !!patternObj.greedy, lookbehindLength = 0, alias = patternObj.alias; - if (greedy && !patternObj.pattern.global) { - var flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0]; - patternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g'); - } - var pattern = patternObj.pattern || patternObj; - for (var currentNode = startNode.next, pos = startPos; currentNode !== tokenList.tail; pos += currentNode.value.length, currentNode = currentNode.next) { - if (rematch && pos >= rematch.reach) { - break; - } - var str = currentNode.value; - if (tokenList.length > text.length) { - return; - } - if (str instanceof Token) { - continue; - } - var removeCount = 1; - if (greedy && currentNode != tokenList.tail.prev) { - pattern.lastIndex = pos; - var match = pattern.exec(text); - if (!match) { - break; - } - var from = match.index + (lookbehind && match[1] ? match[1].length : 0); - var to = match.index + match[0].length; - var p = pos; - p += currentNode.value.length; - while (from >= p) { - currentNode = currentNode.next; - p += currentNode.value.length; - } - p -= currentNode.value.length; - pos = p; - if (currentNode.value instanceof Token) { - continue; - } - for (var k = currentNode; k !== tokenList.tail && (p < to || typeof k.value === 'string'); k = k.next) { - removeCount++; - p += k.value.length; - } - removeCount--; - str = text.slice(pos, p); - match.index -= pos; - } else { - pattern.lastIndex = 0; - var match = pattern.exec(str); - } - if (!match) { - continue; - } - if (lookbehind) { - lookbehindLength = match[1] ? match[1].length : 0; - } - var from = match.index + lookbehindLength, matchStr = match[0].slice(lookbehindLength), to = from + matchStr.length, before = str.slice(0, from), after = str.slice(to); - var reach = pos + str.length; - if (rematch && reach > rematch.reach) { - rematch.reach = reach; - } - var removeFrom = currentNode.prev; - if (before) { - removeFrom = addAfter(tokenList, removeFrom, before); - pos += before.length; - } - removeRange(tokenList, removeFrom, removeCount); - var wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr); - currentNode = addAfter(tokenList, removeFrom, wrapped); - if (after) { - addAfter(tokenList, currentNode, after); - } - if (removeCount > 1) { - matchGrammar(text, tokenList, grammar, currentNode.prev, pos, { - cause: token + ',' + j, - reach: reach - }); - } - } - } - } - } - function LinkedList() { - var head = { - value: null, - prev: null, - next: null - }; - var tail = { - value: null, - prev: head, - next: null - }; - head.next = tail; - this.head = head; - this.tail = tail; - this.length = 0; - } - function addAfter(list, node, value) { - var next = node.next; - var newNode = { - value: value, - prev: node, - next: next - }; - node.next = newNode; - next.prev = newNode; - list.length++; - return newNode; - } - function removeRange(list, node, count) { - var next = node.next; - for (var i = 0; i < count && next !== list.tail; i++) { - next = next.next; - } - node.next = next; - next.prev = node; - list.length -= i; - } - function toArray(list) { - var array = []; - var node = list.head.next; - while (node !== list.tail) { - array.push(node.value); - node = node.next; - } - return array; - } - if (!_self.document) { - if (!_self.addEventListener) { - return _; - } - if (!_.disableWorkerMessageHandler) { - _self.addEventListener('message', function (evt) { - var message = JSON.parse(evt.data), lang = message.language, code = message.code, immediateClose = message.immediateClose; - _self.postMessage(_.highlight(code, _.languages[lang], lang)); - if (immediateClose) { - _self.close(); - } - }, false); - } - return _; - } - var script = _.util.currentScript(); - if (script) { - _.filename = script.src; - if (script.hasAttribute('data-manual')) { - _.manual = true; - } - } - function highlightAutomaticallyCallback() { - if (!_.manual) { - _.highlightAll(); - } - } - if (!_.manual) { - var readyState = document.readyState; - if (readyState === 'loading' || readyState === 'interactive' && script && script.defer) { - document.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback); - } else { - if (window.requestAnimationFrame) { - window.requestAnimationFrame(highlightAutomaticallyCallback); - } else { - window.setTimeout(highlightAutomaticallyCallback, 16); - } - } - } - return _; - }(_self); - if (typeof module !== 'undefined' && module.exports) { - module.exports = Prism; - } - if (typeof global !== 'undefined') { - global.Prism = Prism; - } - }.call(this)); - }.call(this, typeof global$2 !== 'undefined' ? global$2 : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {})); - }, - {} - ], - 4: [ - function (require, module, exports) { - (function (Prism) { - var keyword = /\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/; - Prism.languages.cpp = Prism.languages.extend('c', { - 'class-name': [ - { - pattern: RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g, function () { - return keyword.source; - })), - lookbehind: true - }, - /\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/, - /\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i, - /\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/ - ], - 'keyword': keyword, - 'number': { - pattern: /(?:\b0b[01']+|\b0x(?:[\da-f']+\.?[\da-f']*|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+\.?[\d']*|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]*/i, - greedy: true - }, - 'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/, - 'boolean': /\b(?:true|false)\b/ - }); - Prism.languages.insertBefore('cpp', 'string', { - 'raw-string': { - pattern: /R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/, - alias: 'string', - greedy: true - } - }); - Prism.languages.insertBefore('cpp', 'class-name', { - 'base-clause': { - pattern: /(\b(?:class|struct)\s+\w+\s*:\s*)(?:[^;{}"'])+?(?=\s*[;{])/, - lookbehind: true, - greedy: true, - inside: Prism.languages.extend('cpp', {}) - } - }); - Prism.languages.insertBefore('inside', 'operator', { 'class-name': /\b[a-z_]\w*\b(?!\s*::)/i }, Prism.languages.cpp['base-clause']); - }(Prism)); - }, - {} - ], - 5: [ - function (require, module, exports) { - (function (Prism) { - function replace(pattern, replacements) { - return pattern.replace(/<<(\d+)>>/g, function (m, index) { - return '(?:' + replacements[+index] + ')'; - }); - } - function re(pattern, replacements, flags) { - return RegExp(replace(pattern, replacements), flags || ''); - } - function nested(pattern, depthLog2) { - for (var i = 0; i < depthLog2; i++) { - pattern = pattern.replace(/<>/g, function () { - return '(?:' + pattern + ')'; - }); - } - return pattern.replace(/<>/g, '[^\\s\\S]'); - } - var keywordKinds = { - type: 'bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void', - typeDeclaration: 'class enum interface struct', - contextual: 'add alias and ascending async await by descending from get global group into join let nameof not notnull on or orderby partial remove select set unmanaged value when where where', - other: 'abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield' - }; - function keywordsToPattern(words) { - return '\\b(?:' + words.trim().replace(/ /g, '|') + ')\\b'; - } - var typeDeclarationKeywords = keywordsToPattern(keywordKinds.typeDeclaration); - var keywords = RegExp(keywordsToPattern(keywordKinds.type + ' ' + keywordKinds.typeDeclaration + ' ' + keywordKinds.contextual + ' ' + keywordKinds.other)); - var nonTypeKeywords = keywordsToPattern(keywordKinds.typeDeclaration + ' ' + keywordKinds.contextual + ' ' + keywordKinds.other); - var nonContextualKeywords = keywordsToPattern(keywordKinds.type + ' ' + keywordKinds.typeDeclaration + ' ' + keywordKinds.other); - var generic = nested(/<(?:[^<>;=+\-*/%&|^]|<>)*>/.source, 2); - var nestedRound = nested(/\((?:[^()]|<>)*\)/.source, 2); - var name = /@?\b[A-Za-z_]\w*\b/.source; - var genericName = replace(/<<0>>(?:\s*<<1>>)?/.source, [ - name, - generic - ]); - var identifier = replace(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source, [ - nonTypeKeywords, - genericName - ]); - var array = /\[\s*(?:,\s*)*\]/.source; - var typeExpressionWithoutTuple = replace(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source, [ - identifier, - array - ]); - var tupleElement = replace(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source, [ - generic, - nestedRound, - array - ]); - var tuple = replace(/\(<<0>>+(?:,<<0>>+)+\)/.source, [tupleElement]); - var typeExpression = replace(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source, [ - tuple, - identifier, - array - ]); - var typeInside = { - 'keyword': keywords, - 'punctuation': /[<>()?,.:[\]]/ - }; - var character = /'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source; - var regularString = /"(?:\\.|[^\\"\r\n])*"/.source; - var verbatimString = /@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source; - Prism.languages.csharp = Prism.languages.extend('clike', { - 'string': [ - { - pattern: re(/(^|[^$\\])<<0>>/.source, [verbatimString]), - lookbehind: true, - greedy: true - }, - { - pattern: re(/(^|[^@$\\])<<0>>/.source, [regularString]), - lookbehind: true, - greedy: true - }, - { - pattern: RegExp(character), - greedy: true, - alias: 'character' - } - ], - 'class-name': [ - { - pattern: re(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source, [identifier]), - lookbehind: true, - inside: typeInside - }, - { - pattern: re(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source, [ - name, - typeExpression - ]), - lookbehind: true, - inside: typeInside - }, - { - pattern: re(/(\busing\s+)<<0>>(?=\s*=)/.source, [name]), - lookbehind: true - }, - { - pattern: re(/(\b<<0>>\s+)<<1>>/.source, [ - typeDeclarationKeywords, - genericName - ]), - lookbehind: true, - inside: typeInside - }, - { - pattern: re(/(\bcatch\s*\(\s*)<<0>>/.source, [identifier]), - lookbehind: true, - inside: typeInside - }, - { - pattern: re(/(\bwhere\s+)<<0>>/.source, [name]), - lookbehind: true - }, - { - pattern: re(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source, [typeExpressionWithoutTuple]), - lookbehind: true, - inside: typeInside - }, - { - pattern: re(/\b<<0>>(?=\s+(?!<<1>>)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source, [ - typeExpression, - nonContextualKeywords, - name - ]), - inside: typeInside - } - ], - 'keyword': keywords, - 'number': /(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:ul|lu|[dflmu])?\b/i, - 'operator': />>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/, - 'punctuation': /\?\.?|::|[{}[\];(),.:]/ - }); - Prism.languages.insertBefore('csharp', 'number', { - 'range': { - pattern: /\.\./, - alias: 'operator' - } - }); - Prism.languages.insertBefore('csharp', 'punctuation', { - 'named-parameter': { - pattern: re(/([(,]\s*)<<0>>(?=\s*:)/.source, [name]), - lookbehind: true, - alias: 'punctuation' - } - }); - Prism.languages.insertBefore('csharp', 'class-name', { - 'namespace': { - pattern: re(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source, [name]), - lookbehind: true, - inside: { 'punctuation': /\./ } - }, - 'type-expression': { - pattern: re(/(\b(?:default|typeof|sizeof)\s*\(\s*)(?:[^()\s]|\s(?!\s*\))|<<0>>)*(?=\s*\))/.source, [nestedRound]), - lookbehind: true, - alias: 'class-name', - inside: typeInside - }, - 'return-type': { - pattern: re(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source, [ - typeExpression, - identifier - ]), - inside: typeInside, - alias: 'class-name' - }, - 'constructor-invocation': { - pattern: re(/(\bnew\s+)<<0>>(?=\s*[[({])/.source, [typeExpression]), - lookbehind: true, - inside: typeInside, - alias: 'class-name' - }, - 'generic-method': { - pattern: re(/<<0>>\s*<<1>>(?=\s*\()/.source, [ - name, - generic - ]), - inside: { - 'function': re(/^<<0>>/.source, [name]), - 'generic': { - pattern: RegExp(generic), - alias: 'class-name', - inside: typeInside - } - } - }, - 'type-list': { - pattern: re(/\b((?:<<0>>\s+<<1>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>)(?:\s*,\s*(?:<<3>>|<<4>>))*(?=\s*(?:where|[{;]|=>|$))/.source, [ - typeDeclarationKeywords, - genericName, - name, - typeExpression, - keywords.source - ]), - lookbehind: true, - inside: { - 'keyword': keywords, - 'class-name': { - pattern: RegExp(typeExpression), - greedy: true, - inside: typeInside - }, - 'punctuation': /,/ - } - }, - 'preprocessor': { - pattern: /(^\s*)#.*/m, - lookbehind: true, - alias: 'property', - inside: { - 'directive': { - pattern: /(\s*#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/, - lookbehind: true, - alias: 'keyword' - } - } - } - }); - var regularStringOrCharacter = regularString + '|' + character; - var regularStringCharacterOrComment = replace(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source, [regularStringOrCharacter]); - var roundExpression = nested(replace(/[^"'/()]|<<0>>|\(<>*\)/.source, [regularStringCharacterOrComment]), 2); - var attrTarget = /\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source; - var attr = replace(/<<0>>(?:\s*\(<<1>>*\))?/.source, [ - identifier, - roundExpression - ]); - Prism.languages.insertBefore('csharp', 'class-name', { - 'attribute': { - pattern: re(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source, [ - attrTarget, - attr - ]), - lookbehind: true, - greedy: true, - inside: { - 'target': { - pattern: re(/^<<0>>(?=\s*:)/.source, [attrTarget]), - alias: 'keyword' - }, - 'attribute-arguments': { - pattern: re(/\(<<0>>*\)/.source, [roundExpression]), - inside: Prism.languages.csharp - }, - 'class-name': { - pattern: RegExp(identifier), - inside: { 'punctuation': /\./ } - }, - 'punctuation': /[:,]/ - } - } - }); - var formatString = /:[^}\r\n]+/.source; - var mInterpolationRound = nested(replace(/[^"'/()]|<<0>>|\(<>*\)/.source, [regularStringCharacterOrComment]), 2); - var mInterpolation = replace(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source, [ - mInterpolationRound, - formatString - ]); - var sInterpolationRound = nested(replace(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<>*\)/.source, [regularStringOrCharacter]), 2); - var sInterpolation = replace(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source, [ - sInterpolationRound, - formatString - ]); - function createInterpolationInside(interpolation, interpolationRound) { - return { - 'interpolation': { - pattern: re(/((?:^|[^{])(?:\{\{)*)<<0>>/.source, [interpolation]), - lookbehind: true, - inside: { - 'format-string': { - pattern: re(/(^\{(?:(?![}:])<<0>>)*)<<1>>(?=\}$)/.source, [ - interpolationRound, - formatString - ]), - lookbehind: true, - inside: { 'punctuation': /^:/ } - }, - 'punctuation': /^\{|\}$/, - 'expression': { - pattern: /[\s\S]+/, - alias: 'language-csharp', - inside: Prism.languages.csharp - } - } - }, - 'string': /[\s\S]+/ - }; - } - Prism.languages.insertBefore('csharp', 'string', { - 'interpolation-string': [ - { - pattern: re(/(^|[^\\])(?:\$@|@\$)"(?:""|\\[\s\S]|\{\{|<<0>>|[^\\{"])*"/.source, [mInterpolation]), - lookbehind: true, - greedy: true, - inside: createInterpolationInside(mInterpolation, mInterpolationRound) - }, - { - pattern: re(/(^|[^@\\])\$"(?:\\.|\{\{|<<0>>|[^\\"{])*"/.source, [sInterpolation]), - lookbehind: true, - greedy: true, - inside: createInterpolationInside(sInterpolation, sInterpolationRound) - } - ] - }); - }(Prism)); - Prism.languages.dotnet = Prism.languages.cs = Prism.languages.csharp; - }, - {} - ], - 6: [ - function (require, module, exports) { - (function (Prism) { - var string = /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/; - Prism.languages.css = { - 'comment': /\/\*[\s\S]*?\*\//, - 'atrule': { - pattern: /@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/, - inside: { - 'rule': /^@[\w-]+/, - 'selector-function-argument': { - pattern: /(\bselector\s*\((?!\s*\))\s*)(?:[^()]|\((?:[^()]|\([^()]*\))*\))+?(?=\s*\))/, - lookbehind: true, - alias: 'selector' - }, - 'keyword': { - pattern: /(^|[^\w-])(?:and|not|only|or)(?![\w-])/, - lookbehind: true - } - } - }, - 'url': { - pattern: RegExp('\\burl\\((?:' + string.source + '|' + /(?:[^\\\r\n()"']|\\[\s\S])*/.source + ')\\)', 'i'), - greedy: true, - inside: { - 'function': /^url/i, - 'punctuation': /^\(|\)$/, - 'string': { - pattern: RegExp('^' + string.source + '$'), - alias: 'url' - } - } - }, - 'selector': RegExp('[^{}\\s](?:[^{};"\']|' + string.source + ')*?(?=\\s*\\{)'), - 'string': { - pattern: string, - greedy: true - }, - 'property': /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i, - 'important': /!important\b/i, - 'function': /[-a-z0-9]+(?=\()/i, - 'punctuation': /[(){};:,]/ - }; - Prism.languages.css['atrule'].inside.rest = Prism.languages.css; - var markup = Prism.languages.markup; - if (markup) { - markup.tag.addInlined('style', 'css'); - Prism.languages.insertBefore('inside', 'attr-value', { - 'style-attr': { - pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i, - inside: { - 'attr-name': { - pattern: /^\s*style/i, - inside: markup.tag.inside - }, - 'punctuation': /^\s*=\s*['"]|['"]\s*$/, - 'attr-value': { - pattern: /.+/i, - inside: Prism.languages.css - } - }, - alias: 'language-css' - } - }, markup.tag); - } - }(Prism)); - }, - {} - ], - 7: [ - function (require, module, exports) { - (function (Prism) { - var keywords = /\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|null|open|opens|package|private|protected|provides|public|record|requires|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/; - var className = /\b[A-Z](?:\w*[a-z]\w*)?\b/; - Prism.languages.java = Prism.languages.extend('clike', { - 'class-name': [ - className, - /\b[A-Z]\w*(?=\s+\w+\s*[;,=())])/ - ], - 'keyword': keywords, - 'function': [ - Prism.languages.clike.function, - { - pattern: /(\:\:)[a-z_]\w*/, - lookbehind: true - } - ], - 'number': /\b0b[01][01_]*L?\b|\b0x[\da-f_]*\.?[\da-f_p+-]+\b|(?:\b\d[\d_]*\.?[\d_]*|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i, - 'operator': { - pattern: /(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m, - lookbehind: true - } - }); - Prism.languages.insertBefore('java', 'string', { - 'triple-quoted-string': { - pattern: /"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/, - greedy: true, - alias: 'string' - } - }); - Prism.languages.insertBefore('java', 'class-name', { - 'annotation': { - alias: 'punctuation', - pattern: /(^|[^.])@\w+/, - lookbehind: true - }, - 'namespace': { - pattern: RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(//g, function () { - return keywords.source; - })), - lookbehind: true, - inside: { 'punctuation': /\./ } - }, - 'generics': { - pattern: /<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/, - inside: { - 'class-name': className, - 'keyword': keywords, - 'punctuation': /[<>(),.:]/, - 'operator': /[?&|]/ - } - } - }); - }(Prism)); - }, - {} - ], - 8: [ - function (require, module, exports) { - Prism.languages.javascript = Prism.languages.extend('clike', { - 'class-name': [ - Prism.languages.clike['class-name'], - { - pattern: /(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/, - lookbehind: true - } - ], - 'keyword': [ - { - pattern: /((?:^|})\s*)(?:catch|finally)\b/, - lookbehind: true - }, - { - pattern: /(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|(?:get|set)(?=\s*[\[$\w\xA0-\uFFFF])|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/, - lookbehind: true - } - ], - 'number': /\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/, - 'function': /#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/, - 'operator': /--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/ - }); - Prism.languages.javascript['class-name'][0].pattern = /(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/; - Prism.languages.insertBefore('javascript', 'keyword', { - 'regex': { - pattern: /((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/, - lookbehind: true, - greedy: true, - inside: { - 'regex-source': { - pattern: /^(\/)[\s\S]+(?=\/[a-z]*$)/, - lookbehind: true, - alias: 'language-regex', - inside: Prism.languages.regex - }, - 'regex-flags': /[a-z]+$/, - 'regex-delimiter': /^\/|\/$/ - } - }, - 'function-variable': { - pattern: /#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/, - alias: 'function' - }, - 'parameter': [ - { - pattern: /(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/, - lookbehind: true, - inside: Prism.languages.javascript - }, - { - pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i, - inside: Prism.languages.javascript - }, - { - pattern: /(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/, - lookbehind: true, - inside: Prism.languages.javascript - }, - { - pattern: /((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/, - lookbehind: true, - inside: Prism.languages.javascript - } - ], - 'constant': /\b[A-Z](?:[A-Z_]|\dx?)*\b/ - }); - Prism.languages.insertBefore('javascript', 'string', { - 'template-string': { - pattern: /`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/, - greedy: true, - inside: { - 'template-punctuation': { - pattern: /^`|`$/, - alias: 'string' - }, - 'interpolation': { - pattern: /((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/, - lookbehind: true, - inside: { - 'interpolation-punctuation': { - pattern: /^\${|}$/, - alias: 'punctuation' - }, - rest: Prism.languages.javascript - } - }, - 'string': /[\s\S]+/ - } - } - }); - if (Prism.languages.markup) { - Prism.languages.markup.tag.addInlined('script', 'javascript'); - } - Prism.languages.js = Prism.languages.javascript; - }, - {} - ], - 9: [ - function (require, module, exports) { - (function (Prism) { - function getPlaceholder(language, index) { - return '___' + language.toUpperCase() + index + '___'; - } - Object.defineProperties(Prism.languages['markup-templating'] = {}, { - buildPlaceholders: { - value: function (env, language, placeholderPattern, replaceFilter) { - if (env.language !== language) { - return; - } - var tokenStack = env.tokenStack = []; - env.code = env.code.replace(placeholderPattern, function (match) { - if (typeof replaceFilter === 'function' && !replaceFilter(match)) { - return match; - } - var i = tokenStack.length; - var placeholder; - while (env.code.indexOf(placeholder = getPlaceholder(language, i)) !== -1) - ++i; - tokenStack[i] = match; - return placeholder; - }); - env.grammar = Prism.languages.markup; - } - }, - tokenizePlaceholders: { - value: function (env, language) { - if (env.language !== language || !env.tokenStack) { - return; - } - env.grammar = Prism.languages[language]; - var j = 0; - var keys = Object.keys(env.tokenStack); - function walkTokens(tokens) { - for (var i = 0; i < tokens.length; i++) { - if (j >= keys.length) { - break; - } - var token = tokens[i]; - if (typeof token === 'string' || token.content && typeof token.content === 'string') { - var k = keys[j]; - var t = env.tokenStack[k]; - var s = typeof token === 'string' ? token : token.content; - var placeholder = getPlaceholder(language, k); - var index = s.indexOf(placeholder); - if (index > -1) { - ++j; - var before = s.substring(0, index); - var middle = new Prism.Token(language, Prism.tokenize(t, env.grammar), 'language-' + language, t); - var after = s.substring(index + placeholder.length); - var replacement = []; - if (before) { - replacement.push.apply(replacement, walkTokens([before])); - } - replacement.push(middle); - if (after) { - replacement.push.apply(replacement, walkTokens([after])); - } - if (typeof token === 'string') { - tokens.splice.apply(tokens, [ - i, - 1 - ].concat(replacement)); - } else { - token.content = replacement; - } - } - } else if (token.content) { - walkTokens(token.content); - } - } - return tokens; - } - walkTokens(env.tokens); - } - } - }); - }(Prism)); - }, - {} - ], - 10: [ - function (require, module, exports) { - Prism.languages.markup = { - 'comment': //, - 'prolog': /<\?[\s\S]+?\?>/, - 'doctype': { - pattern: /"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i, - greedy: true, - inside: { - 'internal-subset': { - pattern: /(\[)[\s\S]+(?=\]>$)/, - lookbehind: true, - greedy: true, - inside: null - }, - 'string': { - pattern: /"[^"]*"|'[^']*'/, - greedy: true - }, - 'punctuation': /^$|[[\]]/, - 'doctype-tag': /^DOCTYPE/, - 'name': /[^\s<>'"]+/ - } - }, - 'cdata': //i, - 'tag': { - pattern: /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/, - greedy: true, - inside: { - 'tag': { - pattern: /^<\/?[^\s>\/]+/, - inside: { - 'punctuation': /^<\/?/, - 'namespace': /^[^\s>\/:]+:/ - } - }, - 'attr-value': { - pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/, - inside: { - 'punctuation': [ - { - pattern: /^=/, - alias: 'attr-equals' - }, - /"|'/ - ] - } - }, - 'punctuation': /\/?>/, - 'attr-name': { - pattern: /[^\s>\/]+/, - inside: { 'namespace': /^[^\s>\/:]+:/ } - } - } - }, - 'entity': [ - { - pattern: /&[\da-z]{1,8};/i, - alias: 'named-entity' - }, - /&#x?[\da-f]{1,8};/i - ] - }; - Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] = Prism.languages.markup['entity']; - Prism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup; - Prism.hooks.add('wrap', function (env) { - if (env.type === 'entity') { - env.attributes['title'] = env.content.replace(/&/, '&'); - } - }); - Object.defineProperty(Prism.languages.markup.tag, 'addInlined', { - value: function addInlined(tagName, lang) { - var includedCdataInside = {}; - includedCdataInside['language-' + lang] = { - pattern: /(^$)/i, - lookbehind: true, - inside: Prism.languages[lang] - }; - includedCdataInside['cdata'] = /^$/i; - var inside = { - 'included-cdata': { - pattern: //i, - inside: includedCdataInside - } - }; - inside['language-' + lang] = { - pattern: /[\s\S]+/, - inside: Prism.languages[lang] - }; - var def = {}; - def[tagName] = { - pattern: RegExp(/(<__[\s\S]*?>)(?:))*\]\]>|(?!)/.source.replace(/__/g, function () { - return tagName; - }), 'i'), - lookbehind: true, - greedy: true, - inside: inside - }; - Prism.languages.insertBefore('markup', 'cdata', def); - } - }); - Prism.languages.html = Prism.languages.markup; - Prism.languages.mathml = Prism.languages.markup; - Prism.languages.svg = Prism.languages.markup; - Prism.languages.xml = Prism.languages.extend('markup', {}); - Prism.languages.ssml = Prism.languages.xml; - Prism.languages.atom = Prism.languages.xml; - Prism.languages.rss = Prism.languages.xml; - }, - {} - ], - 11: [ - function (require, module, exports) { - (function (Prism) { - Prism.languages.php = Prism.languages.extend('clike', { - 'keyword': /\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|finally|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|new|or|parent|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i, - 'boolean': { - pattern: /\b(?:false|true)\b/i, - alias: 'constant' - }, - 'constant': [ - /\b[A-Z_][A-Z0-9_]*\b/, - /\b(?:null)\b/i - ], - 'comment': { - pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/, - lookbehind: true - } - }); - Prism.languages.insertBefore('php', 'string', { - 'shell-comment': { - pattern: /(^|[^\\])#.*/, - lookbehind: true, - alias: 'comment' - } - }); - Prism.languages.insertBefore('php', 'comment', { - 'delimiter': { - pattern: /\?>$|^<\?(?:php(?=\s)|=)?/i, - alias: 'important' - } - }); - Prism.languages.insertBefore('php', 'keyword', { - 'variable': /\$+(?:\w+\b|(?={))/i, - 'package': { - pattern: /(\\|namespace\s+|use\s+)[\w\\]+/, - lookbehind: true, - inside: { punctuation: /\\/ } - } - }); - Prism.languages.insertBefore('php', 'operator', { - 'property': { - pattern: /(->)[\w]+/, - lookbehind: true - } - }); - var string_interpolation = { - pattern: /{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)*)/, - lookbehind: true, - inside: Prism.languages.php - }; - Prism.languages.insertBefore('php', 'string', { - 'nowdoc-string': { - pattern: /<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/, - greedy: true, - alias: 'string', - inside: { - 'delimiter': { - pattern: /^<<<'[^']+'|[a-z_]\w*;$/i, - alias: 'symbol', - inside: { 'punctuation': /^<<<'?|[';]$/ } - } - } - }, - 'heredoc-string': { - pattern: /<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i, - greedy: true, - alias: 'string', - inside: { - 'delimiter': { - pattern: /^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i, - alias: 'symbol', - inside: { 'punctuation': /^<<<"?|[";]$/ } - }, - 'interpolation': string_interpolation - } - }, - 'single-quoted-string': { - pattern: /'(?:\\[\s\S]|[^\\'])*'/, - greedy: true, - alias: 'string' - }, - 'double-quoted-string': { - pattern: /"(?:\\[\s\S]|[^\\"])*"/, - greedy: true, - alias: 'string', - inside: { 'interpolation': string_interpolation } - } - }); - delete Prism.languages.php['string']; - Prism.hooks.add('before-tokenize', function (env) { - if (!/<\?/.test(env.code)) { - return; - } - var phpPattern = /<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#)(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|\/\*[\s\S]*?(?:\*\/|$))*?(?:\?>|$)/ig; - Prism.languages['markup-templating'].buildPlaceholders(env, 'php', phpPattern); - }); - Prism.hooks.add('after-tokenize', function (env) { - Prism.languages['markup-templating'].tokenizePlaceholders(env, 'php'); - }); - }(Prism)); - }, - {} - ], - 12: [ - function (require, module, exports) { - Prism.languages.python = { - 'comment': { - pattern: /(^|[^\\])#.*/, - lookbehind: true - }, - 'string-interpolation': { - pattern: /(?:f|rf|fr)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i, - greedy: true, - inside: { - 'interpolation': { - pattern: /((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/, - lookbehind: true, - inside: { - 'format-spec': { - pattern: /(:)[^:(){}]+(?=}$)/, - lookbehind: true - }, - 'conversion-option': { - pattern: /![sra](?=[:}]$)/, - alias: 'punctuation' - }, - rest: null - } - }, - 'string': /[\s\S]+/ - } - }, - 'triple-quoted-string': { - pattern: /(?:[rub]|rb|br)?("""|''')[\s\S]*?\1/i, - greedy: true, - alias: 'string' - }, - 'string': { - pattern: /(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i, - greedy: true - }, - 'function': { - pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g, - lookbehind: true - }, - 'class-name': { - pattern: /(\bclass\s+)\w+/i, - lookbehind: true - }, - 'decorator': { - pattern: /(^\s*)@\w+(?:\.\w+)*/im, - lookbehind: true, - alias: [ - 'annotation', - 'punctuation' - ], - inside: { 'punctuation': /\./ } - }, - 'keyword': /\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/, - 'builtin': /\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/, - 'boolean': /\b(?:True|False|None)\b/, - 'number': /(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i, - 'operator': /[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/, - 'punctuation': /[{}[\];(),.:]/ - }; - Prism.languages.python['string-interpolation'].inside['interpolation'].inside.rest = Prism.languages.python; - Prism.languages.py = Prism.languages.python; - }, - {} - ], - 13: [ - function (require, module, exports) { - (function (Prism) { - Prism.languages.ruby = Prism.languages.extend('clike', { - 'comment': [ - /#.*/, - { - pattern: /^=begin\s[\s\S]*?^=end/m, - greedy: true - } - ], - 'class-name': { - pattern: /(\b(?:class)\s+|\bcatch\s+\()[\w.\\]+/i, - lookbehind: true, - inside: { 'punctuation': /[.\\]/ } - }, - 'keyword': /\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/ - }); - var interpolation = { - pattern: /#\{[^}]+\}/, - inside: { - 'delimiter': { - pattern: /^#\{|\}$/, - alias: 'tag' - }, - rest: Prism.languages.ruby - } - }; - delete Prism.languages.ruby.function; - Prism.languages.insertBefore('ruby', 'keyword', { - 'regex': [ - { - pattern: RegExp(/%r/.source + '(?:' + [ - /([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[gim]{0,3}/.source, - /\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/.source, - /\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/.source, - /\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/.source, - /<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/.source - ].join('|') + ')'), - greedy: true, - inside: { 'interpolation': interpolation } - }, - { - pattern: /(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[gim]{0,3}(?=\s*(?:$|[\r\n,.;})]))/, - lookbehind: true, - greedy: true - } - ], - 'variable': /[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/, - 'symbol': { - pattern: /(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/, - lookbehind: true - }, - 'method-definition': { - pattern: /(\bdef\s+)[\w.]+/, - lookbehind: true, - inside: { - 'function': /\w+$/, - rest: Prism.languages.ruby - } - } - }); - Prism.languages.insertBefore('ruby', 'number', { - 'builtin': /\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/, - 'constant': /\b[A-Z]\w*(?:[?!]|\b)/ - }); - Prism.languages.ruby.string = [ - { - pattern: RegExp(/%[qQiIwWxs]?/.source + '(?:' + [ - /([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source, - /\((?:[^()\\]|\\[\s\S])*\)/.source, - /\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/.source, - /\[(?:[^\[\]\\]|\\[\s\S])*\]/.source, - /<(?:[^<>\\]|\\[\s\S])*>/.source - ].join('|') + ')'), - greedy: true, - inside: { 'interpolation': interpolation } - }, - { - pattern: /("|')(?:#\{[^}]+\}|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true, - inside: { 'interpolation': interpolation } - } - ]; - Prism.languages.rb = Prism.languages.ruby; - }(Prism)); - }, - {} - ], - 14: [ - function (require, module, exports) { - var Prism = require('prismjs/components/prism-core'); - require('prismjs/components/prism-clike'); - require('prismjs/components/prism-markup-templating'); - require('prismjs/components/prism-c'); - require('prismjs/components/prism-cpp'); - require('prismjs/components/prism-csharp'); - require('prismjs/components/prism-css'); - require('prismjs/components/prism-java'); - require('prismjs/components/prism-javascript'); - require('prismjs/components/prism-markup'); - require('prismjs/components/prism-php'); - require('prismjs/components/prism-python'); - require('prismjs/components/prism-ruby'); - module.exports = { boltExport: Prism }; - }, - { - 'prismjs/components/prism-c': 1, - 'prismjs/components/prism-clike': 2, - 'prismjs/components/prism-core': 3, - 'prismjs/components/prism-cpp': 4, - 'prismjs/components/prism-csharp': 5, - 'prismjs/components/prism-css': 6, - 'prismjs/components/prism-java': 7, - 'prismjs/components/prism-javascript': 8, - 'prismjs/components/prism-markup': 10, - 'prismjs/components/prism-markup-templating': 9, - 'prismjs/components/prism-php': 11, - 'prismjs/components/prism-python': 12, - 'prismjs/components/prism-ruby': 13 - } - ] - }, {}, [14])(14); - })); - var prism = window.Prism; - window.Prism = oldprism; - return prism; - }(undefined, exports$1, module, undefined)); - var Prism$1 = module.exports.boltExport; - - var getLanguages = function (editor) { - return editor.getParam('codesample_languages'); - }; - var useGlobalPrismJS = function (editor) { - return editor.getParam('codesample_global_prismjs', false, 'boolean'); - }; - - var get$1 = function (editor) { - return Global.Prism && useGlobalPrismJS(editor) ? Global.Prism : Prism$1; - }; - - var getSelectedCodeSample = function (editor) { - var node = editor.selection ? editor.selection.getNode() : null; - if (isCodeSample(node)) { - return Optional.some(node); - } - return Optional.none(); - }; - var insertCodeSample = function (editor, language, code) { - editor.undoManager.transact(function () { - var node = getSelectedCodeSample(editor); - code = global$1.DOM.encode(code); - return node.fold(function () { - editor.insertContent('

                                      ' + code + '
                                      '); - editor.selection.select(editor.$('#__new').removeAttr('id')[0]); - }, function (n) { - editor.dom.setAttrib(n, 'class', 'language-' + language); - n.innerHTML = code; - get$1(editor).highlightElement(n); - editor.selection.select(n); - }); - }); - }; - var getCurrentCode = function (editor) { - var node = getSelectedCodeSample(editor); - return node.fold(function () { - return ''; - }, function (n) { - return n.textContent; - }); - }; - - var getLanguages$1 = function (editor) { - var defaultLanguages = [ - { - text: 'HTML/XML', - value: 'markup' - }, - { - text: 'JavaScript', - value: 'javascript' - }, - { - text: 'CSS', - value: 'css' - }, - { - text: 'PHP', - value: 'php' - }, - { - text: 'Ruby', - value: 'ruby' - }, - { - text: 'Python', - value: 'python' - }, - { - text: 'Java', - value: 'java' - }, - { - text: 'C', - value: 'c' - }, - { - text: 'C#', - value: 'csharp' - }, - { - text: 'C++', - value: 'cpp' - } - ]; - var customLanguages = getLanguages(editor); - return customLanguages ? customLanguages : defaultLanguages; - }; - var getCurrentLanguage = function (editor, fallback) { - var node = getSelectedCodeSample(editor); - return node.fold(function () { - return fallback; - }, function (n) { - var matches = n.className.match(/language-(\w+)/); - return matches ? matches[1] : fallback; - }); - }; - - var open = function (editor) { - var languages = getLanguages$1(editor); - var defaultLanguage = head(languages).fold(function () { - return ''; - }, function (l) { - return l.value; - }); - var currentLanguage = getCurrentLanguage(editor, defaultLanguage); - var currentCode = getCurrentCode(editor); - editor.windowManager.open({ - title: 'Insert/Edit Code Sample', - size: 'large', - body: { - type: 'panel', - items: [ - { - type: 'selectbox', - name: 'language', - label: 'Language', - items: languages - }, - { - type: 'textarea', - name: 'code', - label: 'Code view' - } - ] - }, - buttons: [ - { - type: 'cancel', - name: 'cancel', - text: 'Cancel' - }, - { - type: 'submit', - name: 'save', - text: 'Save', - primary: true - } - ], - initialData: { - language: currentLanguage, - code: currentCode - }, - onSubmit: function (api) { - var data = api.getData(); - insertCodeSample(editor, data.language, data.code); - api.close(); - } - }); - }; - - var register = function (editor) { - editor.addCommand('codesample', function () { - var node = editor.selection.getNode(); - if (editor.selection.isCollapsed() || isCodeSample(node)) { - open(editor); - } else { - editor.formatter.toggle('code'); - } - }); - }; - - var setup = function (editor) { - var $ = editor.$; - editor.on('PreProcess', function (e) { - $('pre[contenteditable=false]', e.node).filter(trimArg(isCodeSample)).each(function (idx, elm) { - var $elm = $(elm), code = elm.textContent; - $elm.attr('class', $.trim($elm.attr('class'))); - $elm.removeAttr('contentEditable'); - $elm.empty().append($('').each(function () { - this.textContent = code; - })); - }); - }); - editor.on('SetContent', function () { - var unprocessedCodeSamples = $('pre').filter(trimArg(isCodeSample)).filter(function (idx, elm) { - return elm.contentEditable !== 'false'; - }); - if (unprocessedCodeSamples.length) { - editor.undoManager.transact(function () { - unprocessedCodeSamples.each(function (idx, elm) { - $(elm).find('br').each(function (idx, elm) { - elm.parentNode.replaceChild(editor.getDoc().createTextNode('\n'), elm); - }); - elm.contentEditable = 'false'; - elm.innerHTML = editor.dom.encode(elm.textContent); - get$1(editor).highlightElement(elm); - elm.className = $.trim(elm.className); - }); - }); - } - }); - }; - - var isCodeSampleSelection = function (editor) { - var node = editor.selection.getStart(); - return editor.dom.is(node, 'pre[class*="language-"]'); - }; - var register$1 = function (editor) { - editor.ui.registry.addToggleButton('codesample', { - icon: 'code-sample', - tooltip: 'Insert/edit code sample', - onAction: function () { - return open(editor); - }, - onSetup: function (api) { - var nodeChangeHandler = function () { - api.setActive(isCodeSampleSelection(editor)); - }; - editor.on('NodeChange', nodeChangeHandler); - return function () { - return editor.off('NodeChange', nodeChangeHandler); - }; - } - }); - editor.ui.registry.addMenuItem('codesample', { - text: 'Code sample...', - icon: 'code-sample', - onAction: function () { - return open(editor); - } - }); - }; - - function Plugin () { - global.add('codesample', function (editor) { - setup(editor); - register$1(editor); - register(editor); - editor.on('dblclick', function (ev) { - if (isCodeSample(ev.target)) { - open(editor); - } - }); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/codesample/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/codesample/plugin.min.js deleted file mode 100644 index 53f78f8..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/codesample/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var e,n,t,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),s=function(e){return function(){return e}},i=s(!1),o=s(!0),a=function(){return l},l=(e=function(e){return e.isNone()},{fold:function(e,n){return e()},is:i,isSome:i,isNone:o,getOr:t=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:s(null),getOrUndefined:s(undefined),or:t,orThunk:n,map:a,each:function(){},bind:a,exists:i,forall:o,filter:a,equals:e,equals_:e,toArray:function(){return[]},toString:s("none()")}),u=function(t){var e=s(t),n=function(){return a},r=function(e){return e(t)},a={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:o,isNone:i,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:n,orThunk:n,map:function(e){return u(e(t))},each:function(e){e(t)},bind:r,exists:r,forall:r,filter:function(e){return e(t)?a:l},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(i,function(e){return n(t,e)})}};return a},c={some:u,none:a,from:function(e){return null===e||e===undefined?l:u(e)}},p=function(e){return n=e,(t=0)<=t&&t>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/,number:/(?:\b0x(?:[\da-f]+\.?[\da-f]*|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+(?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],comment:Prism.languages.c.comment,directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:Prism.languages.c}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete Prism.languages.c["boolean"]},{}],2:[function(e,n,t){Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(?:true|false)\b/,"function":/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}},{}],3:[function(e,t,n){(function(n){(function(){var e=function(u){var c=/\blang(?:uage)?-([\w-]+)\b/i,n=0,O={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function a(e){return e instanceof N?new N(e.type,a(e.content),e.alias):Array.isArray(e)?e.map(a):e.replace(/&/g,"&").replace(/=s.reach);y+=b.value.length,b=b.next){var v=b.value;if(n.length>e.length)return;if(!(v instanceof N)){var w,k,x,_,P,F,A=1;if(g&&b!=n.tail.prev){h.lastIndex=y;var S=h.exec(e);if(!S)break;var $=S.index+(d&&S[1]?S[1].length:0),j=S.index+S[0].length,E=y;for(E+=b.value.length;E<=$;)b=b.next,E+=b.value.length;if(E-=b.value.length,y=E,b.value instanceof N)continue;for(var z=b;z!==n.tail&&(Es.reach&&(s.reach=_),P=b.prev,k&&(P=B(n,P,k),y+=k.length),T(n,P,A),F=new N(i,p?O.tokenize(w,p):w,f,w),b=B(n,P,F),x&&B(n,b,x),1"+r.content+""},!u.document)return u.addEventListener&&(O.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(O.highlight(r,O.languages[t],t)),a&&u.close()},!1)),O;var e,t=O.util.currentScript();function r(){O.manual||O.highlightAll()}return t&&(O.filename=t.src,t.hasAttribute("data-manual")&&(O.manual=!0)),O.manual||("loading"===(e=document.readyState)||"interactive"===e&&t&&t.defer?document.addEventListener("DOMContentLoaded",r):window.requestAnimationFrame?window.requestAnimationFrame(r):window.setTimeout(r,16)),O}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});void 0!==t&&t.exports&&(t.exports=e),void 0!==n&&(n.Prism=e)}).call(this)}).call(this,void 0!==y?y:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,n,t){var r,a;r=Prism,a=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,r.languages.cpp=r.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,function(){return a.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:a,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+\.?[\da-f']*|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+\.?[\d']*|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]*/i,greedy:!0},operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,"boolean":/\b(?:true|false)\b/}),r.languages.insertBefore("cpp","string",{"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),r.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)(?:[^;{}"'])+?(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:r.languages.extend("cpp",{})}}),r.languages.insertBefore("inside","operator",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},r.languages.cpp["base-clause"])},{}],5:[function(e,n,t){!function(t){function r(e,t){return e.replace(/<<(\d+)>>/g,function(e,n){return"(?:"+t[+n]+")"})}function a(e,n,t){return RegExp(r(e,n),t||"")}function e(e,n){for(var t=0;t>/g,function(){return"(?:"+e+")"});return e.replace(/<>/g,"[^\\s\\S]")}var n="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",s="class enum interface struct",i="add alias and ascending async await by descending from get global group into join let nameof not notnull on or orderby partial remove select set unmanaged value when where where",o="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var u=l(s),c=RegExp(l(n+" "+s+" "+i+" "+o)),p=l(s+" "+i+" "+o),d=l(n+" "+s+" "+o),g=e(/<(?:[^<>;=+\-*/%&|^]|<>)*>/.source,2),m=e(/\((?:[^()]|<>)*\)/.source,2),f=/@?\b[A-Za-z_]\w*\b/.source,h=r(/<<0>>(?:\s*<<1>>)?/.source,[f,g]),b=r(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source,[p,h]),y=/\[\s*(?:,\s*)*\]/.source,v=r(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source,[b,y]),w=r(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,[g,m,y]),k=r(/\(<<0>>+(?:,<<0>>+)+\)/.source,[w]),x=r(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source,[k,b,y]),_={keyword:c,punctuation:/[<>()?,.:[\]]/},P=/'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source,F=/"(?:\\.|[^\\"\r\n])*"/.source,A=/@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source;t.languages.csharp=t.languages.extend("clike",{string:[{pattern:a(/(^|[^$\\])<<0>>/.source,[A]),lookbehind:!0,greedy:!0},{pattern:a(/(^|[^@$\\])<<0>>/.source,[F]),lookbehind:!0,greedy:!0},{pattern:RegExp(P),greedy:!0,alias:"character"}],"class-name":[{pattern:a(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source,[b]),lookbehind:!0,inside:_},{pattern:a(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source,[f,x]),lookbehind:!0,inside:_},{pattern:a(/(\busing\s+)<<0>>(?=\s*=)/.source,[f]),lookbehind:!0},{pattern:a(/(\b<<0>>\s+)<<1>>/.source,[u,h]),lookbehind:!0,inside:_},{pattern:a(/(\bcatch\s*\(\s*)<<0>>/.source,[b]),lookbehind:!0,inside:_},{pattern:a(/(\bwhere\s+)<<0>>/.source,[f]),lookbehind:!0},{pattern:a(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source,[v]),lookbehind:!0,inside:_},{pattern:a(/\b<<0>>(?=\s+(?!<<1>>)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source,[x,d,f]),inside:_}],keyword:c,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:ul|lu|[dflmu])?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),t.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),t.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:a(/([(,]\s*)<<0>>(?=\s*:)/.source,[f]),lookbehind:!0,alias:"punctuation"}}),t.languages.insertBefore("csharp","class-name",{namespace:{pattern:a(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source,[f]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:a(/(\b(?:default|typeof|sizeof)\s*\(\s*)(?:[^()\s]|\s(?!\s*\))|<<0>>)*(?=\s*\))/.source,[m]),lookbehind:!0,alias:"class-name",inside:_},"return-type":{pattern:a(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source,[x,b]),inside:_,alias:"class-name"},"constructor-invocation":{pattern:a(/(\bnew\s+)<<0>>(?=\s*[[({])/.source,[x]),lookbehind:!0,inside:_,alias:"class-name"},"generic-method":{pattern:a(/<<0>>\s*<<1>>(?=\s*\()/.source,[f,g]),inside:{"function":a(/^<<0>>/.source,[f]),generic:{pattern:RegExp(g),alias:"class-name",inside:_}}},"type-list":{pattern:a(/\b((?:<<0>>\s+<<1>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>)(?:\s*,\s*(?:<<3>>|<<4>>))*(?=\s*(?:where|[{;]|=>|$))/.source,[u,h,f,x,c.source]),lookbehind:!0,inside:{keyword:c,"class-name":{pattern:RegExp(x),greedy:!0,inside:_},punctuation:/,/}},preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var S=F+"|"+P,$=r(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source,[S]),j=e(r(/[^"'/()]|<<0>>|\(<>*\)/.source,[$]),2),E=/\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source,z=r(/<<0>>(?:\s*\(<<1>>*\))?/.source,[b,j]);t.languages.insertBefore("csharp","class-name",{attribute:{pattern:a(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source,[E,z]),lookbehind:!0,greedy:!0,inside:{target:{pattern:a(/^<<0>>(?=\s*:)/.source,[E]),alias:"keyword"},"attribute-arguments":{pattern:a(/\(<<0>>*\)/.source,[j]),inside:t.languages.csharp},"class-name":{pattern:RegExp(b),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var C=/:[^}\r\n]+/.source,O=e(r(/[^"'/()]|<<0>>|\(<>*\)/.source,[$]),2),N=r(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[O,C]),B=e(r(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<>*\)/.source,[S]),2),T=r(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[B,C]);function D(e,n){return{interpolation:{pattern:a(/((?:^|[^{])(?:\{\{)*)<<0>>/.source,[e]),lookbehind:!0,inside:{"format-string":{pattern:a(/(^\{(?:(?![}:])<<0>>)*)<<1>>(?=\}$)/.source,[n,C]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:t.languages.csharp}}},string:/[\s\S]+/}}t.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:a(/(^|[^\\])(?:\$@|@\$)"(?:""|\\[\s\S]|\{\{|<<0>>|[^\\{"])*"/.source,[N]),lookbehind:!0,greedy:!0,inside:D(N,O)},{pattern:a(/(^|[^@\\])\$"(?:\\.|\{\{|<<0>>|[^\\"{])*"/.source,[T]),lookbehind:!0,greedy:!0,inside:D(T,B)}]})}(Prism),Prism.languages.dotnet=Prism.languages.cs=Prism.languages.csharp},{}],6:[function(e,n,t){!function(e){var n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\((?!\s*\))\s*)(?:[^()]|\((?:[^()]|\([^()]*\))*\))+?(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{"function":/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:RegExp("[^{}\\s](?:[^{};\"']|"+n.source+")*?(?=\\s*\\{)"),string:{pattern:n,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var t=e.languages.markup;t&&(t.tag.addInlined("style","css"),e.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:t.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:e.languages.css}},alias:"language-css"}},t.tag))}(Prism)},{}],7:[function(e,n,t){var r,a,s;r=Prism,a=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|null|open|opens|package|private|protected|provides|public|record|requires|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,s=/\b[A-Z](?:\w*[a-z]\w*)?\b/,r.languages.java=r.languages.extend("clike",{"class-name":[s,/\b[A-Z]\w*(?=\s+\w+\s*[;,=())])/],keyword:a,"function":[r.languages.clike["function"],{pattern:/(\:\:)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x[\da-f_]*\.?[\da-f_p+-]+\b|(?:\b\d[\d_]*\.?[\d_]*|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),r.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"}}),r.languages.insertBefore("java","class-name",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0},namespace:{pattern:RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(//g,function(){return a.source})),lookbehind:!0,inside:{punctuation:/\./}},generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":s,keyword:a,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})},{}],8:[function(e,n,t){Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|(?:get|set)(?=\s*[\[$\w\xA0-\uFFFF])|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,"function":/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-flags":/[a-z]+$/,"regex-delimiter":/^\/|\/$/}},"function-variable":{pattern:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.js=Prism.languages.javascript},{}],9:[function(e,n,t){function b(e,n){return"___"+e.toUpperCase()+n+"___"}var y;y=Prism,Object.defineProperties(y.languages["markup-templating"]={},{buildPlaceholders:{value:function(r,a,e,s){var i;r.language===a&&(i=r.tokenStack=[],r.code=r.code.replace(e,function(e){if("function"==typeof s&&!s(e))return e;for(var n,t=i.length;-1!==r.code.indexOf(n=b(a,t));)++t;return i[t]=e,n}),r.grammar=y.languages.markup)}},tokenizePlaceholders:{value:function(d,g){var m,f;d.language===g&&d.tokenStack&&(d.grammar=y.languages[g],m=0,f=Object.keys(d.tokenStack),function h(e){for(var n=0;n=f.length);n++){var t,r,a,s,i,o,l,u,c,p=e[n];"string"==typeof p||p.content&&"string"==typeof p.content?(t=f[m],r=d.tokenStack[t],a="string"==typeof p?p:p.content,s=b(g,t),-1<(i=a.indexOf(s))&&(++m,o=a.substring(0,i),l=new y.Token(g,y.tokenize(r,d.grammar),"language-"+g,r),u=a.substring(i+s.length),c=[],o&&c.push.apply(c,h([o])),c.push(l),u&&c.push.apply(c,h([u])),"string"==typeof p?e.splice.apply(e,[n,1].concat(c)):p.content=c)):p.content&&h(p.content)}return e}(d.tokens))}}})},{}],10:[function(e,n,t){Prism.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/,name:/[^\s<>'"]+/}},cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(e,n){var t={};t["language-"+n]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[n]},t.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:t}};r["language-"+n]={pattern:/[\s\S]+/,inside:Prism.languages[n]};var a={};a[e]={pattern:RegExp(/(<__[\s\S]*?>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:r},Prism.languages.insertBefore("markup","cdata",a)}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml},{}],11:[function(e,n,t){!function(n){n.languages.php=n.languages.extend("clike",{keyword:/\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|finally|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|new|or|parent|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i,"boolean":{pattern:/\b(?:false|true)\b/i,alias:"constant"},constant:[/\b[A-Z_][A-Z0-9_]*\b/,/\b(?:null)\b/i],comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0}}),n.languages.insertBefore("php","string",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),n.languages.insertBefore("php","comment",{delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"}}),n.languages.insertBefore("php","keyword",{variable:/\$+(?:\w+\b|(?={))/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),n.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}});var e={pattern:/{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)*)/,lookbehind:!0,inside:n.languages.php};n.languages.insertBefore("php","string",{"nowdoc-string":{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},"heredoc-string":{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:e}},"single-quoted-string":{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0,alias:"string"},"double-quoted-string":{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,alias:"string",inside:{interpolation:e}}}),delete n.languages.php.string,n.hooks.add("before-tokenize",function(e){/<\?/.test(e.code)&&n.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#)(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|\/\*[\s\S]*?(?:\*\/|$))*?(?:\?>|$)/gi)}),n.hooks.add("after-tokenize",function(e){n.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism)},{}],12:[function(e,n,t){Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"string-interpolation":{pattern:/(?:f|rf|fr)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|rb|br)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^\s*)@\w+(?:\.\w+)*/im,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,"boolean":/\b(?:True|False|None)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python},{}],13:[function(e,n,t){!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#.*/,{pattern:/^=begin\s[\s\S]*?^=end/m,greedy:!0}],"class-name":{pattern:/(\b(?:class)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/});var n={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.languages.ruby}};delete e.languages.ruby["function"],e.languages.insertBefore("ruby","keyword",{regex:[{pattern:RegExp(/%r/.source+"(?:"+[/([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[gim]{0,3}/.source,/\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/.source,/\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/.source,/\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/.source,/<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/.source].join("|")+")"),greedy:!0,inside:{interpolation:n}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[gim]{0,3}(?=\s*(?:$|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:{pattern:/(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,lookbehind:!0},"method-definition":{pattern:/(\bdef\s+)[\w.]+/,lookbehind:!0,inside:{"function":/\w+$/,rest:e.languages.ruby}}}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:RegExp(/%[qQiIwWxs]?/.source+"(?:"+[/([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,/\((?:[^()\\]|\\[\s\S])*\)/.source,/\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/.source,/\[(?:[^\[\]\\]|\\[\s\S])*\]/.source,/<(?:[^<>\\]|\\[\s\S])*>/.source].join("|")+")"),greedy:!0,inside:{interpolation:n}},{pattern:/("|')(?:#\{[^}]+\}|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:n}}],e.languages.rb=e.languages.ruby}(Prism)},{}],14:[function(e,n,t){var r=e("prismjs/components/prism-core");e("prismjs/components/prism-clike"),e("prismjs/components/prism-markup-templating"),e("prismjs/components/prism-c"),e("prismjs/components/prism-cpp"),e("prismjs/components/prism-csharp"),e("prismjs/components/prism-css"),e("prismjs/components/prism-java"),e("prismjs/components/prism-javascript"),e("prismjs/components/prism-markup"),e("prismjs/components/prism-php"),e("prismjs/components/prism-python"),e("prismjs/components/prism-ruby"),n.exports={boltExport:r}},{"prismjs/components/prism-c":1,"prismjs/components/prism-clike":2,"prismjs/components/prism-core":3,"prismjs/components/prism-cpp":4,"prismjs/components/prism-csharp":5,"prismjs/components/prism-css":6,"prismjs/components/prism-java":7,"prismjs/components/prism-javascript":8,"prismjs/components/prism-markup":10,"prismjs/components/prism-markup-templating":9,"prismjs/components/prism-php":11,"prismjs/components/prism-python":12,"prismjs/components/prism-ruby":13}]},{},[14])(14)});var a=window.Prism;window.Prism=e}(undefined,h,b,undefined);var v=b.exports.boltExport,w=function(e){return f.Prism&&e.getParam("codesample_global_prismjs",!1,"boolean")?f.Prism:v},k=function(e){var n=e.selection?e.selection.getNode():null;return g(n)?c.some(n):c.none()},x=function(s){var t,e=s.getParam("codesample_languages")||[{text:"HTML/XML",value:"markup"},{text:"JavaScript",value:"javascript"},{text:"CSS",value:"css"},{text:"PHP",value:"php"},{text:"Ruby",value:"ruby"},{text:"Python",value:"python"},{text:"Java",value:"java"},{text:"C",value:"c"},{text:"C#",value:"csharp"},{text:"C++",value:"cpp"}],n=p(e).fold(function(){return""},function(e){return e.value}),r=(t=n,k(s).fold(function(){return t},function(e){var n=e.className.match(/language-(\w+)/);return n?n[1]:t})),a=k(s).fold(function(){return""},function(e){return e.textContent});s.windowManager.open({title:"Insert/Edit Code Sample",size:"large",body:{type:"panel",items:[{type:"selectbox",name:"language",label:"Language",items:e},{type:"textarea",name:"code",label:"Code view"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{language:r,code:a},onSubmit:function(e){var n,t,r,a=e.getData();n=s,t=a.language,r=a.code,n.undoManager.transact(function(){var e=k(n);return r=d.DOM.encode(r),e.fold(function(){n.insertContent('
                                      '+r+"
                                      "),n.selection.select(n.$("#__new").removeAttr("id")[0])},function(e){n.dom.setAttrib(e,"class","language-"+t),e.innerHTML=r,w(n).highlightElement(e),n.selection.select(e)})}),e.close()}})},_=function(r){r.ui.registry.addToggleButton("codesample",{icon:"code-sample",tooltip:"Insert/edit code sample",onAction:function(){return x(r)},onSetup:function(t){var e=function(){var e,n;t.setActive((n=(e=r).selection.getStart(),e.dom.is(n,'pre[class*="language-"]')))};return r.on("NodeChange",e),function(){return r.off("NodeChange",e)}}}),r.ui.registry.addMenuItem("codesample",{text:"Code sample...",icon:"code-sample",onAction:function(){return x(r)}})};r.add("codesample",function(n){var t,a,r;a=(t=n).$,t.on("PreProcess",function(e){a("pre[contenteditable=false]",e.node).filter(m(g)).each(function(e,n){var t=a(n),r=n.textContent;t.attr("class",a.trim(t.attr("class"))),t.removeAttr("contentEditable"),t.empty().append(a("").each(function(){this.textContent=r}))})}),t.on("SetContent",function(){var e=a("pre").filter(m(g)).filter(function(e,n){return"false"!==n.contentEditable});e.length&&t.undoManager.transact(function(){e.each(function(e,n){a(n).find("br").each(function(e,n){n.parentNode.replaceChild(t.getDoc().createTextNode("\n"),n)}),n.contentEditable="false",n.innerHTML=t.dom.encode(n.textContent),w(t).highlightElement(n),n.className=a.trim(n.className)})})}),_(n),(r=n).addCommand("codesample",function(){var e=r.selection.getNode();r.selection.isCollapsed()||g(e)?x(r):r.formatter.toggle("code")}),n.on("dblclick",function(e){g(e.target)&&x(n)})})}(); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/colorpicker/plugin.js b/component/pear/module/tinymce/tinymce/plugins/colorpicker/plugin.js deleted file mode 100644 index c8cbff2..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/colorpicker/plugin.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -(function () { - 'use strict'; - - var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); - - function Plugin () { - global.add('colorpicker', function () { - console.warn('Color picker plugin is now built in to the core editor, please remove it from your editor configuration'); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/colorpicker/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/colorpicker/plugin.min.js deleted file mode 100644 index 67519fb..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/colorpicker/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("colorpicker",function(){console.warn("Color picker plugin is now built in to the core editor, please remove it from your editor configuration")})}(); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/contextmenu/plugin.js b/component/pear/module/tinymce/tinymce/plugins/contextmenu/plugin.js deleted file mode 100644 index 084e287..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/contextmenu/plugin.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -(function () { - 'use strict'; - - var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); - - function Plugin () { - global.add('contextmenu', function () { - console.warn('Context menu plugin is now built in to the core editor, please remove it from your editor configuration'); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/contextmenu/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/contextmenu/plugin.min.js deleted file mode 100644 index 3fe1c73..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/contextmenu/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("contextmenu",function(){console.warn("Context menu plugin is now built in to the core editor, please remove it from your editor configuration")})}(); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/directionality/plugin.js b/component/pear/module/tinymce/tinymce/plugins/directionality/plugin.js deleted file mode 100644 index fc9e6eb..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/directionality/plugin.js +++ /dev/null @@ -1,314 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -(function () { - 'use strict'; - - var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); - - var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); - - var setDir = function (editor, dir) { - var dom = editor.dom; - var curDir; - var blocks = editor.selection.getSelectedBlocks(); - if (blocks.length) { - curDir = dom.getAttrib(blocks[0], 'dir'); - global$1.each(blocks, function (block) { - if (!dom.getParent(block.parentNode, '*[dir="' + dir + '"]', dom.getRoot())) { - dom.setAttrib(block, 'dir', curDir !== dir ? dir : null); - } - }); - editor.nodeChanged(); - } - }; - - var register = function (editor) { - editor.addCommand('mceDirectionLTR', function () { - setDir(editor, 'ltr'); - }); - editor.addCommand('mceDirectionRTL', function () { - setDir(editor, 'rtl'); - }); - }; - - var noop = function () { - }; - var compose1 = function (fbc, fab) { - return function (a) { - return fbc(fab(a)); - }; - }; - var constant = function (value) { - return function () { - return value; - }; - }; - var never = constant(false); - var always = constant(true); - - var none = function () { - return NONE; - }; - var NONE = function () { - var eq = function (o) { - return o.isNone(); - }; - var call = function (thunk) { - return thunk(); - }; - var id = function (n) { - return n; - }; - var me = { - fold: function (n, _s) { - return n(); - }, - is: never, - isSome: never, - isNone: always, - getOr: id, - getOrThunk: call, - getOrDie: function (msg) { - throw new Error(msg || 'error: getOrDie called on none.'); - }, - getOrNull: constant(null), - getOrUndefined: constant(undefined), - or: id, - orThunk: call, - map: none, - each: noop, - bind: none, - exists: never, - forall: always, - filter: none, - equals: eq, - equals_: eq, - toArray: function () { - return []; - }, - toString: constant('none()') - }; - return me; - }(); - var some = function (a) { - var constant_a = constant(a); - var self = function () { - return me; - }; - var bind = function (f) { - return f(a); - }; - var me = { - fold: function (n, s) { - return s(a); - }, - is: function (v) { - return a === v; - }, - isSome: always, - isNone: never, - getOr: constant_a, - getOrThunk: constant_a, - getOrDie: constant_a, - getOrNull: constant_a, - getOrUndefined: constant_a, - or: self, - orThunk: self, - map: function (f) { - return some(f(a)); - }, - each: function (f) { - f(a); - }, - bind: bind, - exists: bind, - forall: bind, - filter: function (f) { - return f(a) ? me : NONE; - }, - toArray: function () { - return [a]; - }, - toString: function () { - return 'some(' + a + ')'; - }, - equals: function (o) { - return o.is(a); - }, - equals_: function (o, elementEq) { - return o.fold(never, function (b) { - return elementEq(a, b); - }); - } - }; - return me; - }; - var from = function (value) { - return value === null || value === undefined ? NONE : some(value); - }; - var Optional = { - some: some, - none: none, - from: from - }; - - var isSimpleType = function (type) { - return function (value) { - return typeof value === type; - }; - }; - var isFunction = isSimpleType('function'); - - var isSupported = function (dom) { - return dom.style !== undefined && isFunction(dom.style.getPropertyValue); - }; - - var fromHtml = function (html, scope) { - var doc = scope || document; - var div = doc.createElement('div'); - div.innerHTML = html; - if (!div.hasChildNodes() || div.childNodes.length > 1) { - console.error('HTML does not have a single root node', html); - throw new Error('HTML must have a single root node'); - } - return fromDom(div.childNodes[0]); - }; - var fromTag = function (tag, scope) { - var doc = scope || document; - var node = doc.createElement(tag); - return fromDom(node); - }; - var fromText = function (text, scope) { - var doc = scope || document; - var node = doc.createTextNode(text); - return fromDom(node); - }; - var fromDom = function (node) { - if (node === null || node === undefined) { - throw new Error('Node cannot be null or undefined'); - } - return { dom: node }; - }; - var fromPoint = function (docElm, x, y) { - return Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom); - }; - var SugarElement = { - fromHtml: fromHtml, - fromTag: fromTag, - fromText: fromText, - fromDom: fromDom, - fromPoint: fromPoint - }; - - var Global = typeof window !== 'undefined' ? window : Function('return this;')(); - - var DOCUMENT = 9; - var DOCUMENT_FRAGMENT = 11; - var TEXT = 3; - - var type = function (element) { - return element.dom.nodeType; - }; - var isType = function (t) { - return function (element) { - return type(element) === t; - }; - }; - var isText = isType(TEXT); - var isDocument = isType(DOCUMENT); - var isDocumentFragment = isType(DOCUMENT_FRAGMENT); - - var owner = function (element) { - return SugarElement.fromDom(element.dom.ownerDocument); - }; - var documentOrOwner = function (dos) { - return isDocument(dos) ? dos : owner(dos); - }; - - var isShadowRoot = function (dos) { - return isDocumentFragment(dos); - }; - var supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode); - var getRootNode = supported ? function (e) { - return SugarElement.fromDom(e.dom.getRootNode()); - } : documentOrOwner; - var getShadowRoot = function (e) { - var r = getRootNode(e); - return isShadowRoot(r) ? Optional.some(r) : Optional.none(); - }; - var getShadowHost = function (e) { - return SugarElement.fromDom(e.dom.host); - }; - - var inBody = function (element) { - var dom = isText(element) ? element.dom.parentNode : element.dom; - if (dom === undefined || dom === null || dom.ownerDocument === null) { - return false; - } - var doc = dom.ownerDocument; - return getShadowRoot(SugarElement.fromDom(dom)).fold(function () { - return doc.body.contains(dom); - }, compose1(inBody, getShadowHost)); - }; - - var get = function (element, property) { - var dom = element.dom; - var styles = window.getComputedStyle(dom); - var r = styles.getPropertyValue(property); - return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r; - }; - var getUnsafeProperty = function (dom, property) { - return isSupported(dom) ? dom.style.getPropertyValue(property) : ''; - }; - - var getDirection = function (element) { - return get(element, 'direction') === 'rtl' ? 'rtl' : 'ltr'; - }; - - var getNodeChangeHandler = function (editor, dir) { - return function (api) { - var nodeChangeHandler = function (e) { - var element = SugarElement.fromDom(e.element); - api.setActive(getDirection(element) === dir); - }; - editor.on('NodeChange', nodeChangeHandler); - return function () { - return editor.off('NodeChange', nodeChangeHandler); - }; - }; - }; - var register$1 = function (editor) { - editor.ui.registry.addToggleButton('ltr', { - tooltip: 'Left to right', - icon: 'ltr', - onAction: function () { - return editor.execCommand('mceDirectionLTR'); - }, - onSetup: getNodeChangeHandler(editor, 'ltr') - }); - editor.ui.registry.addToggleButton('rtl', { - tooltip: 'Right to left', - icon: 'rtl', - onAction: function () { - return editor.execCommand('mceDirectionRTL'); - }, - onSetup: getNodeChangeHandler(editor, 'rtl') - }); - }; - - function Plugin () { - global.add('directionality', function (editor) { - register(editor); - register$1(editor); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/directionality/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/directionality/plugin.min.js deleted file mode 100644 index e20ec96..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/directionality/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var n,t,e,o,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.util.Tools"),i=function(n,t){var e,o=n.dom,r=n.selection.getSelectedBlocks();r.length&&(e=o.getAttrib(r[0],"dir"),u.each(r,function(n){o.getParent(n.parentNode,'*[dir="'+t+'"]',o.getRoot())||o.setAttrib(n,"dir",e!==t?t:null)}),n.nodeChanged())},c=function(n){return function(){return n}},f=c(!1),d=c(!0),l=function(){return m},m=(n=function(n){return n.isNone()},{fold:function(n,t){return n()},is:f,isSome:f,isNone:d,getOr:e=function(n){return n},getOrThunk:t=function(n){return n()},getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:c(null),getOrUndefined:c(undefined),or:e,orThunk:t,map:l,each:function(){},bind:l,exists:f,forall:d,filter:l,equals:n,equals_:n,toArray:function(){return[]},toString:c("none()")}),a=function(e){var n=c(e),t=function(){return r},o=function(n){return n(e)},r={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:d,isNone:f,getOr:n,getOrThunk:n,getOrDie:n,getOrNull:n,getOrUndefined:n,or:t,orThunk:t,map:function(n){return a(n(e))},each:function(n){n(e)},bind:o,exists:o,forall:o,filter:function(n){return n(e)?r:m},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(f,function(n){return t(e,n)})}};return r},s={some:a,none:l,from:function(n){return null===n||n===undefined?m:a(n)}},g=(o="function",function(n){return typeof n===o}),h=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:n}},y={fromHtml:function(n,t){var e=(t||document).createElement("div");if(e.innerHTML=n,!e.hasChildNodes()||1', - fitzpatrick_scale: false, - category: "symbols" - }, - 1234: { - keywords: [ "numbers", "blue-square" ], - "char": '\ud83d\udd22', - fitzpatrick_scale: false, - category: "symbols" - }, - grinning: { - keywords: [ "face", "smile", "happy", "joy", ":D", "grin" ], - "char": '\ud83d\ude00', - fitzpatrick_scale: false, - category: "people" - }, - grimacing: { - keywords: [ "face", "grimace", "teeth" ], - "char": '\ud83d\ude2c', - fitzpatrick_scale: false, - category: "people" - }, - grin: { - keywords: [ "face", "happy", "smile", "joy", "kawaii" ], - "char": '\ud83d\ude01', - fitzpatrick_scale: false, - category: "people" - }, - joy: { - keywords: [ "face", "cry", "tears", "weep", "happy", "happytears", "haha" ], - "char": '\ud83d\ude02', - fitzpatrick_scale: false, - category: "people" - }, - rofl: { - keywords: [ "face", "rolling", "floor", "laughing", "lol", "haha" ], - "char": '\ud83e\udd23', - fitzpatrick_scale: false, - category: "people" - }, - partying: { - keywords: [ "face", "celebration", "woohoo" ], - "char": '\ud83e\udd73', - fitzpatrick_scale: false, - category: "people" - }, - smiley: { - keywords: [ "face", "happy", "joy", "haha", ":D", ":)", "smile", "funny" ], - "char": '\ud83d\ude03', - fitzpatrick_scale: false, - category: "people" - }, - smile: { - keywords: [ "face", "happy", "joy", "funny", "haha", "laugh", "like", ":D", ":)" ], - "char": '\ud83d\ude04', - fitzpatrick_scale: false, - category: "people" - }, - sweat_smile: { - keywords: [ "face", "hot", "happy", "laugh", "sweat", "smile", "relief" ], - "char": '\ud83d\ude05', - fitzpatrick_scale: false, - category: "people" - }, - laughing: { - keywords: [ "happy", "joy", "lol", "satisfied", "haha", "face", "glad", "XD", "laugh" ], - "char": '\ud83d\ude06', - fitzpatrick_scale: false, - category: "people" - }, - innocent: { - keywords: [ "face", "angel", "heaven", "halo" ], - "char": '\ud83d\ude07', - fitzpatrick_scale: false, - category: "people" - }, - wink: { - keywords: [ "face", "happy", "mischievous", "secret", ";)", "smile", "eye" ], - "char": '\ud83d\ude09', - fitzpatrick_scale: false, - category: "people" - }, - blush: { - keywords: [ "face", "smile", "happy", "flushed", "crush", "embarrassed", "shy", "joy" ], - "char": '\ud83d\ude0a', - fitzpatrick_scale: false, - category: "people" - }, - slightly_smiling_face: { - keywords: [ "face", "smile" ], - "char": '\ud83d\ude42', - fitzpatrick_scale: false, - category: "people" - }, - upside_down_face: { - keywords: [ "face", "flipped", "silly", "smile" ], - "char": '\ud83d\ude43', - fitzpatrick_scale: false, - category: "people" - }, - relaxed: { - keywords: [ "face", "blush", "massage", "happiness" ], - "char": '\u263a\ufe0f', - fitzpatrick_scale: false, - category: "people" - }, - yum: { - keywords: [ "happy", "joy", "tongue", "smile", "face", "silly", "yummy", "nom", "delicious", "savouring" ], - "char": '\ud83d\ude0b', - fitzpatrick_scale: false, - category: "people" - }, - relieved: { - keywords: [ "face", "relaxed", "phew", "massage", "happiness" ], - "char": '\ud83d\ude0c', - fitzpatrick_scale: false, - category: "people" - }, - heart_eyes: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "heart" ], - "char": '\ud83d\ude0d', - fitzpatrick_scale: false, - category: "people" - }, - smiling_face_with_three_hearts: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "hearts", "adore" ], - "char": '\ud83e\udd70', - fitzpatrick_scale: false, - category: "people" - }, - kissing_heart: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ], - "char": '\ud83d\ude18', - fitzpatrick_scale: false, - category: "people" - }, - kissing: { - keywords: [ "love", "like", "face", "3", "valentines", "infatuation", "kiss" ], - "char": '\ud83d\ude17', - fitzpatrick_scale: false, - category: "people" - }, - kissing_smiling_eyes: { - keywords: [ "face", "affection", "valentines", "infatuation", "kiss" ], - "char": '\ud83d\ude19', - fitzpatrick_scale: false, - category: "people" - }, - kissing_closed_eyes: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ], - "char": '\ud83d\ude1a', - fitzpatrick_scale: false, - category: "people" - }, - stuck_out_tongue_winking_eye: { - keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "wink", "tongue" ], - "char": '\ud83d\ude1c', - fitzpatrick_scale: false, - category: "people" - }, - zany: { - keywords: [ "face", "goofy", "crazy" ], - "char": '\ud83e\udd2a', - fitzpatrick_scale: false, - category: "people" - }, - raised_eyebrow: { - keywords: [ "face", "distrust", "scepticism", "disapproval", "disbelief", "surprise" ], - "char": '\ud83e\udd28', - fitzpatrick_scale: false, - category: "people" - }, - monocle: { - keywords: [ "face", "stuffy", "wealthy" ], - "char": '\ud83e\uddd0', - fitzpatrick_scale: false, - category: "people" - }, - stuck_out_tongue_closed_eyes: { - keywords: [ "face", "prank", "playful", "mischievous", "smile", "tongue" ], - "char": '\ud83d\ude1d', - fitzpatrick_scale: false, - category: "people" - }, - stuck_out_tongue: { - keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "tongue" ], - "char": '\ud83d\ude1b', - fitzpatrick_scale: false, - category: "people" - }, - money_mouth_face: { - keywords: [ "face", "rich", "dollar", "money" ], - "char": '\ud83e\udd11', - fitzpatrick_scale: false, - category: "people" - }, - nerd_face: { - keywords: [ "face", "nerdy", "geek", "dork" ], - "char": '\ud83e\udd13', - fitzpatrick_scale: false, - category: "people" - }, - sunglasses: { - keywords: [ "face", "cool", "smile", "summer", "beach", "sunglass" ], - "char": '\ud83d\ude0e', - fitzpatrick_scale: false, - category: "people" - }, - star_struck: { - keywords: [ "face", "smile", "starry", "eyes", "grinning" ], - "char": '\ud83e\udd29', - fitzpatrick_scale: false, - category: "people" - }, - clown_face: { - keywords: [ "face" ], - "char": '\ud83e\udd21', - fitzpatrick_scale: false, - category: "people" - }, - cowboy_hat_face: { - keywords: [ "face", "cowgirl", "hat" ], - "char": '\ud83e\udd20', - fitzpatrick_scale: false, - category: "people" - }, - hugs: { - keywords: [ "face", "smile", "hug" ], - "char": '\ud83e\udd17', - fitzpatrick_scale: false, - category: "people" - }, - smirk: { - keywords: [ "face", "smile", "mean", "prank", "smug", "sarcasm" ], - "char": '\ud83d\ude0f', - fitzpatrick_scale: false, - category: "people" - }, - no_mouth: { - keywords: [ "face", "hellokitty" ], - "char": '\ud83d\ude36', - fitzpatrick_scale: false, - category: "people" - }, - neutral_face: { - keywords: [ "indifference", "meh", ":|", "neutral" ], - "char": '\ud83d\ude10', - fitzpatrick_scale: false, - category: "people" - }, - expressionless: { - keywords: [ "face", "indifferent", "-_-", "meh", "deadpan" ], - "char": '\ud83d\ude11', - fitzpatrick_scale: false, - category: "people" - }, - unamused: { - keywords: [ "indifference", "bored", "straight face", "serious", "sarcasm", "unimpressed", "skeptical", "dubious", "side_eye" ], - "char": '\ud83d\ude12', - fitzpatrick_scale: false, - category: "people" - }, - roll_eyes: { - keywords: [ "face", "eyeroll", "frustrated" ], - "char": '\ud83d\ude44', - fitzpatrick_scale: false, - category: "people" - }, - thinking: { - keywords: [ "face", "hmmm", "think", "consider" ], - "char": '\ud83e\udd14', - fitzpatrick_scale: false, - category: "people" - }, - lying_face: { - keywords: [ "face", "lie", "pinocchio" ], - "char": '\ud83e\udd25', - fitzpatrick_scale: false, - category: "people" - }, - hand_over_mouth: { - keywords: [ "face", "whoops", "shock", "surprise" ], - "char": '\ud83e\udd2d', - fitzpatrick_scale: false, - category: "people" - }, - shushing: { - keywords: [ "face", "quiet", "shhh" ], - "char": '\ud83e\udd2b', - fitzpatrick_scale: false, - category: "people" - }, - symbols_over_mouth: { - keywords: [ "face", "swearing", "cursing", "cussing", "profanity", "expletive" ], - "char": '\ud83e\udd2c', - fitzpatrick_scale: false, - category: "people" - }, - exploding_head: { - keywords: [ "face", "shocked", "mind", "blown" ], - "char": '\ud83e\udd2f', - fitzpatrick_scale: false, - category: "people" - }, - flushed: { - keywords: [ "face", "blush", "shy", "flattered" ], - "char": '\ud83d\ude33', - fitzpatrick_scale: false, - category: "people" - }, - disappointed: { - keywords: [ "face", "sad", "upset", "depressed", ":(" ], - "char": '\ud83d\ude1e', - fitzpatrick_scale: false, - category: "people" - }, - worried: { - keywords: [ "face", "concern", "nervous", ":(" ], - "char": '\ud83d\ude1f', - fitzpatrick_scale: false, - category: "people" - }, - angry: { - keywords: [ "mad", "face", "annoyed", "frustrated" ], - "char": '\ud83d\ude20', - fitzpatrick_scale: false, - category: "people" - }, - rage: { - keywords: [ "angry", "mad", "hate", "despise" ], - "char": '\ud83d\ude21', - fitzpatrick_scale: false, - category: "people" - }, - pensive: { - keywords: [ "face", "sad", "depressed", "upset" ], - "char": '\ud83d\ude14', - fitzpatrick_scale: false, - category: "people" - }, - confused: { - keywords: [ "face", "indifference", "huh", "weird", "hmmm", ":/" ], - "char": '\ud83d\ude15', - fitzpatrick_scale: false, - category: "people" - }, - slightly_frowning_face: { - keywords: [ "face", "frowning", "disappointed", "sad", "upset" ], - "char": '\ud83d\ude41', - fitzpatrick_scale: false, - category: "people" - }, - frowning_face: { - keywords: [ "face", "sad", "upset", "frown" ], - "char": '\u2639', - fitzpatrick_scale: false, - category: "people" - }, - persevere: { - keywords: [ "face", "sick", "no", "upset", "oops" ], - "char": '\ud83d\ude23', - fitzpatrick_scale: false, - category: "people" - }, - confounded: { - keywords: [ "face", "confused", "sick", "unwell", "oops", ":S" ], - "char": '\ud83d\ude16', - fitzpatrick_scale: false, - category: "people" - }, - tired_face: { - keywords: [ "sick", "whine", "upset", "frustrated" ], - "char": '\ud83d\ude2b', - fitzpatrick_scale: false, - category: "people" - }, - weary: { - keywords: [ "face", "tired", "sleepy", "sad", "frustrated", "upset" ], - "char": '\ud83d\ude29', - fitzpatrick_scale: false, - category: "people" - }, - pleading: { - keywords: [ "face", "begging", "mercy" ], - "char": '\ud83e\udd7a', - fitzpatrick_scale: false, - category: "people" - }, - triumph: { - keywords: [ "face", "gas", "phew", "proud", "pride" ], - "char": '\ud83d\ude24', - fitzpatrick_scale: false, - category: "people" - }, - open_mouth: { - keywords: [ "face", "surprise", "impressed", "wow", "whoa", ":O" ], - "char": '\ud83d\ude2e', - fitzpatrick_scale: false, - category: "people" - }, - scream: { - keywords: [ "face", "munch", "scared", "omg" ], - "char": '\ud83d\ude31', - fitzpatrick_scale: false, - category: "people" - }, - fearful: { - keywords: [ "face", "scared", "terrified", "nervous", "oops", "huh" ], - "char": '\ud83d\ude28', - fitzpatrick_scale: false, - category: "people" - }, - cold_sweat: { - keywords: [ "face", "nervous", "sweat" ], - "char": '\ud83d\ude30', - fitzpatrick_scale: false, - category: "people" - }, - hushed: { - keywords: [ "face", "woo", "shh" ], - "char": '\ud83d\ude2f', - fitzpatrick_scale: false, - category: "people" - }, - frowning: { - keywords: [ "face", "aw", "what" ], - "char": '\ud83d\ude26', - fitzpatrick_scale: false, - category: "people" - }, - anguished: { - keywords: [ "face", "stunned", "nervous" ], - "char": '\ud83d\ude27', - fitzpatrick_scale: false, - category: "people" - }, - cry: { - keywords: [ "face", "tears", "sad", "depressed", "upset", ":'(" ], - "char": '\ud83d\ude22', - fitzpatrick_scale: false, - category: "people" - }, - disappointed_relieved: { - keywords: [ "face", "phew", "sweat", "nervous" ], - "char": '\ud83d\ude25', - fitzpatrick_scale: false, - category: "people" - }, - drooling_face: { - keywords: [ "face" ], - "char": '\ud83e\udd24', - fitzpatrick_scale: false, - category: "people" - }, - sleepy: { - keywords: [ "face", "tired", "rest", "nap" ], - "char": '\ud83d\ude2a', - fitzpatrick_scale: false, - category: "people" - }, - sweat: { - keywords: [ "face", "hot", "sad", "tired", "exercise" ], - "char": '\ud83d\ude13', - fitzpatrick_scale: false, - category: "people" - }, - hot: { - keywords: [ "face", "feverish", "heat", "red", "sweating" ], - "char": '\ud83e\udd75', - fitzpatrick_scale: false, - category: "people" - }, - cold: { - keywords: [ "face", "blue", "freezing", "frozen", "frostbite", "icicles" ], - "char": '\ud83e\udd76', - fitzpatrick_scale: false, - category: "people" - }, - sob: { - keywords: [ "face", "cry", "tears", "sad", "upset", "depressed" ], - "char": '\ud83d\ude2d', - fitzpatrick_scale: false, - category: "people" - }, - dizzy_face: { - keywords: [ "spent", "unconscious", "xox", "dizzy" ], - "char": '\ud83d\ude35', - fitzpatrick_scale: false, - category: "people" - }, - astonished: { - keywords: [ "face", "xox", "surprised", "poisoned" ], - "char": '\ud83d\ude32', - fitzpatrick_scale: false, - category: "people" - }, - zipper_mouth_face: { - keywords: [ "face", "sealed", "zipper", "secret" ], - "char": '\ud83e\udd10', - fitzpatrick_scale: false, - category: "people" - }, - nauseated_face: { - keywords: [ "face", "vomit", "gross", "green", "sick", "throw up", "ill" ], - "char": '\ud83e\udd22', - fitzpatrick_scale: false, - category: "people" - }, - sneezing_face: { - keywords: [ "face", "gesundheit", "sneeze", "sick", "allergy" ], - "char": '\ud83e\udd27', - fitzpatrick_scale: false, - category: "people" - }, - vomiting: { - keywords: [ "face", "sick" ], - "char": '\ud83e\udd2e', - fitzpatrick_scale: false, - category: "people" - }, - mask: { - keywords: [ "face", "sick", "ill", "disease" ], - "char": '\ud83d\ude37', - fitzpatrick_scale: false, - category: "people" - }, - face_with_thermometer: { - keywords: [ "sick", "temperature", "thermometer", "cold", "fever" ], - "char": '\ud83e\udd12', - fitzpatrick_scale: false, - category: "people" - }, - face_with_head_bandage: { - keywords: [ "injured", "clumsy", "bandage", "hurt" ], - "char": '\ud83e\udd15', - fitzpatrick_scale: false, - category: "people" - }, - woozy: { - keywords: [ "face", "dizzy", "intoxicated", "tipsy", "wavy" ], - "char": '\ud83e\udd74', - fitzpatrick_scale: false, - category: "people" - }, - sleeping: { - keywords: [ "face", "tired", "sleepy", "night", "zzz" ], - "char": '\ud83d\ude34', - fitzpatrick_scale: false, - category: "people" - }, - zzz: { - keywords: [ "sleepy", "tired", "dream" ], - "char": '\ud83d\udca4', - fitzpatrick_scale: false, - category: "people" - }, - poop: { - keywords: [ "hankey", "shitface", "fail", "turd", "shit" ], - "char": '\ud83d\udca9', - fitzpatrick_scale: false, - category: "people" - }, - smiling_imp: { - keywords: [ "devil", "horns" ], - "char": '\ud83d\ude08', - fitzpatrick_scale: false, - category: "people" - }, - imp: { - keywords: [ "devil", "angry", "horns" ], - "char": '\ud83d\udc7f', - fitzpatrick_scale: false, - category: "people" - }, - japanese_ogre: { - keywords: [ "monster", "red", "mask", "halloween", "scary", "creepy", "devil", "demon", "japanese", "ogre" ], - "char": '\ud83d\udc79', - fitzpatrick_scale: false, - category: "people" - }, - japanese_goblin: { - keywords: [ "red", "evil", "mask", "monster", "scary", "creepy", "japanese", "goblin" ], - "char": '\ud83d\udc7a', - fitzpatrick_scale: false, - category: "people" - }, - skull: { - keywords: [ "dead", "skeleton", "creepy", "death" ], - "char": '\ud83d\udc80', - fitzpatrick_scale: false, - category: "people" - }, - ghost: { - keywords: [ "halloween", "spooky", "scary" ], - "char": '\ud83d\udc7b', - fitzpatrick_scale: false, - category: "people" - }, - alien: { - keywords: [ "UFO", "paul", "weird", "outer_space" ], - "char": '\ud83d\udc7d', - fitzpatrick_scale: false, - category: "people" - }, - robot: { - keywords: [ "computer", "machine", "bot" ], - "char": '\ud83e\udd16', - fitzpatrick_scale: false, - category: "people" - }, - smiley_cat: { - keywords: [ "animal", "cats", "happy", "smile" ], - "char": '\ud83d\ude3a', - fitzpatrick_scale: false, - category: "people" - }, - smile_cat: { - keywords: [ "animal", "cats", "smile" ], - "char": '\ud83d\ude38', - fitzpatrick_scale: false, - category: "people" - }, - joy_cat: { - keywords: [ "animal", "cats", "haha", "happy", "tears" ], - "char": '\ud83d\ude39', - fitzpatrick_scale: false, - category: "people" - }, - heart_eyes_cat: { - keywords: [ "animal", "love", "like", "affection", "cats", "valentines", "heart" ], - "char": '\ud83d\ude3b', - fitzpatrick_scale: false, - category: "people" - }, - smirk_cat: { - keywords: [ "animal", "cats", "smirk" ], - "char": '\ud83d\ude3c', - fitzpatrick_scale: false, - category: "people" - }, - kissing_cat: { - keywords: [ "animal", "cats", "kiss" ], - "char": '\ud83d\ude3d', - fitzpatrick_scale: false, - category: "people" - }, - scream_cat: { - keywords: [ "animal", "cats", "munch", "scared", "scream" ], - "char": '\ud83d\ude40', - fitzpatrick_scale: false, - category: "people" - }, - crying_cat_face: { - keywords: [ "animal", "tears", "weep", "sad", "cats", "upset", "cry" ], - "char": '\ud83d\ude3f', - fitzpatrick_scale: false, - category: "people" - }, - pouting_cat: { - keywords: [ "animal", "cats" ], - "char": '\ud83d\ude3e', - fitzpatrick_scale: false, - category: "people" - }, - palms_up: { - keywords: [ "hands", "gesture", "cupped", "prayer" ], - "char": '\ud83e\udd32', - fitzpatrick_scale: true, - category: "people" - }, - raised_hands: { - keywords: [ "gesture", "hooray", "yea", "celebration", "hands" ], - "char": '\ud83d\ude4c', - fitzpatrick_scale: true, - category: "people" - }, - clap: { - keywords: [ "hands", "praise", "applause", "congrats", "yay" ], - "char": '\ud83d\udc4f', - fitzpatrick_scale: true, - category: "people" - }, - wave: { - keywords: [ "hands", "gesture", "goodbye", "solong", "farewell", "hello", "hi", "palm" ], - "char": '\ud83d\udc4b', - fitzpatrick_scale: true, - category: "people" - }, - call_me_hand: { - keywords: [ "hands", "gesture" ], - "char": '\ud83e\udd19', - fitzpatrick_scale: true, - category: "people" - }, - "+1": { - keywords: [ "thumbsup", "yes", "awesome", "good", "agree", "accept", "cool", "hand", "like" ], - "char": '\ud83d\udc4d', - fitzpatrick_scale: true, - category: "people" - }, - "-1": { - keywords: [ "thumbsdown", "no", "dislike", "hand" ], - "char": '\ud83d\udc4e', - fitzpatrick_scale: true, - category: "people" - }, - facepunch: { - keywords: [ "angry", "violence", "fist", "hit", "attack", "hand" ], - "char": '\ud83d\udc4a', - fitzpatrick_scale: true, - category: "people" - }, - fist: { - keywords: [ "fingers", "hand", "grasp" ], - "char": '\u270a', - fitzpatrick_scale: true, - category: "people" - }, - fist_left: { - keywords: [ "hand", "fistbump" ], - "char": '\ud83e\udd1b', - fitzpatrick_scale: true, - category: "people" - }, - fist_right: { - keywords: [ "hand", "fistbump" ], - "char": '\ud83e\udd1c', - fitzpatrick_scale: true, - category: "people" - }, - v: { - keywords: [ "fingers", "ohyeah", "hand", "peace", "victory", "two" ], - "char": '\u270c', - fitzpatrick_scale: true, - category: "people" - }, - ok_hand: { - keywords: [ "fingers", "limbs", "perfect", "ok", "okay" ], - "char": '\ud83d\udc4c', - fitzpatrick_scale: true, - category: "people" - }, - raised_hand: { - keywords: [ "fingers", "stop", "highfive", "palm", "ban" ], - "char": '\u270b', - fitzpatrick_scale: true, - category: "people" - }, - raised_back_of_hand: { - keywords: [ "fingers", "raised", "backhand" ], - "char": '\ud83e\udd1a', - fitzpatrick_scale: true, - category: "people" - }, - open_hands: { - keywords: [ "fingers", "butterfly", "hands", "open" ], - "char": '\ud83d\udc50', - fitzpatrick_scale: true, - category: "people" - }, - muscle: { - keywords: [ "arm", "flex", "hand", "summer", "strong", "biceps" ], - "char": '\ud83d\udcaa', - fitzpatrick_scale: true, - category: "people" - }, - pray: { - keywords: [ "please", "hope", "wish", "namaste", "highfive" ], - "char": '\ud83d\ude4f', - fitzpatrick_scale: true, - category: "people" - }, - foot: { - keywords: [ "kick", "stomp" ], - "char": '\ud83e\uddb6', - fitzpatrick_scale: true, - category: "people" - }, - leg: { - keywords: [ "kick", "limb" ], - "char": '\ud83e\uddb5', - fitzpatrick_scale: true, - category: "people" - }, - handshake: { - keywords: [ "agreement", "shake" ], - "char": '\ud83e\udd1d', - fitzpatrick_scale: false, - category: "people" - }, - point_up: { - keywords: [ "hand", "fingers", "direction", "up" ], - "char": '\u261d', - fitzpatrick_scale: true, - category: "people" - }, - point_up_2: { - keywords: [ "fingers", "hand", "direction", "up" ], - "char": '\ud83d\udc46', - fitzpatrick_scale: true, - category: "people" - }, - point_down: { - keywords: [ "fingers", "hand", "direction", "down" ], - "char": '\ud83d\udc47', - fitzpatrick_scale: true, - category: "people" - }, - point_left: { - keywords: [ "direction", "fingers", "hand", "left" ], - "char": '\ud83d\udc48', - fitzpatrick_scale: true, - category: "people" - }, - point_right: { - keywords: [ "fingers", "hand", "direction", "right" ], - "char": '\ud83d\udc49', - fitzpatrick_scale: true, - category: "people" - }, - fu: { - keywords: [ "hand", "fingers", "rude", "middle", "flipping" ], - "char": '\ud83d\udd95', - fitzpatrick_scale: true, - category: "people" - }, - raised_hand_with_fingers_splayed: { - keywords: [ "hand", "fingers", "palm" ], - "char": '\ud83d\udd90', - fitzpatrick_scale: true, - category: "people" - }, - love_you: { - keywords: [ "hand", "fingers", "gesture" ], - "char": '\ud83e\udd1f', - fitzpatrick_scale: true, - category: "people" - }, - metal: { - keywords: [ "hand", "fingers", "evil_eye", "sign_of_horns", "rock_on" ], - "char": '\ud83e\udd18', - fitzpatrick_scale: true, - category: "people" - }, - crossed_fingers: { - keywords: [ "good", "lucky" ], - "char": '\ud83e\udd1e', - fitzpatrick_scale: true, - category: "people" - }, - vulcan_salute: { - keywords: [ "hand", "fingers", "spock", "star trek" ], - "char": '\ud83d\udd96', - fitzpatrick_scale: true, - category: "people" - }, - writing_hand: { - keywords: [ "lower_left_ballpoint_pen", "stationery", "write", "compose" ], - "char": '\u270d', - fitzpatrick_scale: true, - category: "people" - }, - selfie: { - keywords: [ "camera", "phone" ], - "char": '\ud83e\udd33', - fitzpatrick_scale: true, - category: "people" - }, - nail_care: { - keywords: [ "beauty", "manicure", "finger", "fashion", "nail" ], - "char": '\ud83d\udc85', - fitzpatrick_scale: true, - category: "people" - }, - lips: { - keywords: [ "mouth", "kiss" ], - "char": '\ud83d\udc44', - fitzpatrick_scale: false, - category: "people" - }, - tooth: { - keywords: [ "teeth", "dentist" ], - "char": '\ud83e\uddb7', - fitzpatrick_scale: false, - category: "people" - }, - tongue: { - keywords: [ "mouth", "playful" ], - "char": '\ud83d\udc45', - fitzpatrick_scale: false, - category: "people" - }, - ear: { - keywords: [ "face", "hear", "sound", "listen" ], - "char": '\ud83d\udc42', - fitzpatrick_scale: true, - category: "people" - }, - nose: { - keywords: [ "smell", "sniff" ], - "char": '\ud83d\udc43', - fitzpatrick_scale: true, - category: "people" - }, - eye: { - keywords: [ "face", "look", "see", "watch", "stare" ], - "char": '\ud83d\udc41', - fitzpatrick_scale: false, - category: "people" - }, - eyes: { - keywords: [ "look", "watch", "stalk", "peek", "see" ], - "char": '\ud83d\udc40', - fitzpatrick_scale: false, - category: "people" - }, - brain: { - keywords: [ "smart", "intelligent" ], - "char": '\ud83e\udde0', - fitzpatrick_scale: false, - category: "people" - }, - bust_in_silhouette: { - keywords: [ "user", "person", "human" ], - "char": '\ud83d\udc64', - fitzpatrick_scale: false, - category: "people" - }, - busts_in_silhouette: { - keywords: [ "user", "person", "human", "group", "team" ], - "char": '\ud83d\udc65', - fitzpatrick_scale: false, - category: "people" - }, - speaking_head: { - keywords: [ "user", "person", "human", "sing", "say", "talk" ], - "char": '\ud83d\udde3', - fitzpatrick_scale: false, - category: "people" - }, - baby: { - keywords: [ "child", "boy", "girl", "toddler" ], - "char": '\ud83d\udc76', - fitzpatrick_scale: true, - category: "people" - }, - child: { - keywords: [ "gender-neutral", "young" ], - "char": '\ud83e\uddd2', - fitzpatrick_scale: true, - category: "people" - }, - boy: { - keywords: [ "man", "male", "guy", "teenager" ], - "char": '\ud83d\udc66', - fitzpatrick_scale: true, - category: "people" - }, - girl: { - keywords: [ "female", "woman", "teenager" ], - "char": '\ud83d\udc67', - fitzpatrick_scale: true, - category: "people" - }, - adult: { - keywords: [ "gender-neutral", "person" ], - "char": '\ud83e\uddd1', - fitzpatrick_scale: true, - category: "people" - }, - man: { - keywords: [ "mustache", "father", "dad", "guy", "classy", "sir", "moustache" ], - "char": '\ud83d\udc68', - fitzpatrick_scale: true, - category: "people" - }, - woman: { - keywords: [ "female", "girls", "lady" ], - "char": '\ud83d\udc69', - fitzpatrick_scale: true, - category: "people" - }, - blonde_woman: { - keywords: [ "woman", "female", "girl", "blonde", "person" ], - "char": '\ud83d\udc71\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - blonde_man: { - keywords: [ "man", "male", "boy", "blonde", "guy", "person" ], - "char": '\ud83d\udc71', - fitzpatrick_scale: true, - category: "people" - }, - bearded_person: { - keywords: [ "person", "bewhiskered" ], - "char": '\ud83e\uddd4', - fitzpatrick_scale: true, - category: "people" - }, - older_adult: { - keywords: [ "human", "elder", "senior", "gender-neutral" ], - "char": '\ud83e\uddd3', - fitzpatrick_scale: true, - category: "people" - }, - older_man: { - keywords: [ "human", "male", "men", "old", "elder", "senior" ], - "char": '\ud83d\udc74', - fitzpatrick_scale: true, - category: "people" - }, - older_woman: { - keywords: [ "human", "female", "women", "lady", "old", "elder", "senior" ], - "char": '\ud83d\udc75', - fitzpatrick_scale: true, - category: "people" - }, - man_with_gua_pi_mao: { - keywords: [ "male", "boy", "chinese" ], - "char": '\ud83d\udc72', - fitzpatrick_scale: true, - category: "people" - }, - woman_with_headscarf: { - keywords: [ "female", "hijab", "mantilla", "tichel" ], - "char": '\ud83e\uddd5', - fitzpatrick_scale: true, - category: "people" - }, - woman_with_turban: { - keywords: [ "female", "indian", "hinduism", "arabs", "woman" ], - "char": '\ud83d\udc73\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - man_with_turban: { - keywords: [ "male", "indian", "hinduism", "arabs" ], - "char": '\ud83d\udc73', - fitzpatrick_scale: true, - category: "people" - }, - policewoman: { - keywords: [ "woman", "police", "law", "legal", "enforcement", "arrest", "911", "female" ], - "char": '\ud83d\udc6e\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - policeman: { - keywords: [ "man", "police", "law", "legal", "enforcement", "arrest", "911" ], - "char": '\ud83d\udc6e', - fitzpatrick_scale: true, - category: "people" - }, - construction_worker_woman: { - keywords: [ "female", "human", "wip", "build", "construction", "worker", "labor", "woman" ], - "char": '\ud83d\udc77\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - construction_worker_man: { - keywords: [ "male", "human", "wip", "guy", "build", "construction", "worker", "labor" ], - "char": '\ud83d\udc77', - fitzpatrick_scale: true, - category: "people" - }, - guardswoman: { - keywords: [ "uk", "gb", "british", "female", "royal", "woman" ], - "char": '\ud83d\udc82\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - guardsman: { - keywords: [ "uk", "gb", "british", "male", "guy", "royal" ], - "char": '\ud83d\udc82', - fitzpatrick_scale: true, - category: "people" - }, - female_detective: { - keywords: [ "human", "spy", "detective", "female", "woman" ], - "char": '\ud83d\udd75\ufe0f\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - male_detective: { - keywords: [ "human", "spy", "detective" ], - "char": '\ud83d\udd75', - fitzpatrick_scale: true, - category: "people" - }, - woman_health_worker: { - keywords: [ "doctor", "nurse", "therapist", "healthcare", "woman", "human" ], - "char": '\ud83d\udc69\u200d\u2695\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - man_health_worker: { - keywords: [ "doctor", "nurse", "therapist", "healthcare", "man", "human" ], - "char": '\ud83d\udc68\u200d\u2695\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - woman_farmer: { - keywords: [ "rancher", "gardener", "woman", "human" ], - "char": '\ud83d\udc69\u200d\ud83c\udf3e', - fitzpatrick_scale: true, - category: "people" - }, - man_farmer: { - keywords: [ "rancher", "gardener", "man", "human" ], - "char": '\ud83d\udc68\u200d\ud83c\udf3e', - fitzpatrick_scale: true, - category: "people" - }, - woman_cook: { - keywords: [ "chef", "woman", "human" ], - "char": '\ud83d\udc69\u200d\ud83c\udf73', - fitzpatrick_scale: true, - category: "people" - }, - man_cook: { - keywords: [ "chef", "man", "human" ], - "char": '\ud83d\udc68\u200d\ud83c\udf73', - fitzpatrick_scale: true, - category: "people" - }, - woman_student: { - keywords: [ "graduate", "woman", "human" ], - "char": '\ud83d\udc69\u200d\ud83c\udf93', - fitzpatrick_scale: true, - category: "people" - }, - man_student: { - keywords: [ "graduate", "man", "human" ], - "char": '\ud83d\udc68\u200d\ud83c\udf93', - fitzpatrick_scale: true, - category: "people" - }, - woman_singer: { - keywords: [ "rockstar", "entertainer", "woman", "human" ], - "char": '\ud83d\udc69\u200d\ud83c\udfa4', - fitzpatrick_scale: true, - category: "people" - }, - man_singer: { - keywords: [ "rockstar", "entertainer", "man", "human" ], - "char": '\ud83d\udc68\u200d\ud83c\udfa4', - fitzpatrick_scale: true, - category: "people" - }, - woman_teacher: { - keywords: [ "instructor", "professor", "woman", "human" ], - "char": '\ud83d\udc69\u200d\ud83c\udfeb', - fitzpatrick_scale: true, - category: "people" - }, - man_teacher: { - keywords: [ "instructor", "professor", "man", "human" ], - "char": '\ud83d\udc68\u200d\ud83c\udfeb', - fitzpatrick_scale: true, - category: "people" - }, - woman_factory_worker: { - keywords: [ "assembly", "industrial", "woman", "human" ], - "char": '\ud83d\udc69\u200d\ud83c\udfed', - fitzpatrick_scale: true, - category: "people" - }, - man_factory_worker: { - keywords: [ "assembly", "industrial", "man", "human" ], - "char": '\ud83d\udc68\u200d\ud83c\udfed', - fitzpatrick_scale: true, - category: "people" - }, - woman_technologist: { - keywords: [ "coder", "developer", "engineer", "programmer", "software", "woman", "human", "laptop", "computer" ], - "char": '\ud83d\udc69\u200d\ud83d\udcbb', - fitzpatrick_scale: true, - category: "people" - }, - man_technologist: { - keywords: [ "coder", "developer", "engineer", "programmer", "software", "man", "human", "laptop", "computer" ], - "char": '\ud83d\udc68\u200d\ud83d\udcbb', - fitzpatrick_scale: true, - category: "people" - }, - woman_office_worker: { - keywords: [ "business", "manager", "woman", "human" ], - "char": '\ud83d\udc69\u200d\ud83d\udcbc', - fitzpatrick_scale: true, - category: "people" - }, - man_office_worker: { - keywords: [ "business", "manager", "man", "human" ], - "char": '\ud83d\udc68\u200d\ud83d\udcbc', - fitzpatrick_scale: true, - category: "people" - }, - woman_mechanic: { - keywords: [ "plumber", "woman", "human", "wrench" ], - "char": '\ud83d\udc69\u200d\ud83d\udd27', - fitzpatrick_scale: true, - category: "people" - }, - man_mechanic: { - keywords: [ "plumber", "man", "human", "wrench" ], - "char": '\ud83d\udc68\u200d\ud83d\udd27', - fitzpatrick_scale: true, - category: "people" - }, - woman_scientist: { - keywords: [ "biologist", "chemist", "engineer", "physicist", "woman", "human" ], - "char": '\ud83d\udc69\u200d\ud83d\udd2c', - fitzpatrick_scale: true, - category: "people" - }, - man_scientist: { - keywords: [ "biologist", "chemist", "engineer", "physicist", "man", "human" ], - "char": '\ud83d\udc68\u200d\ud83d\udd2c', - fitzpatrick_scale: true, - category: "people" - }, - woman_artist: { - keywords: [ "painter", "woman", "human" ], - "char": '\ud83d\udc69\u200d\ud83c\udfa8', - fitzpatrick_scale: true, - category: "people" - }, - man_artist: { - keywords: [ "painter", "man", "human" ], - "char": '\ud83d\udc68\u200d\ud83c\udfa8', - fitzpatrick_scale: true, - category: "people" - }, - woman_firefighter: { - keywords: [ "fireman", "woman", "human" ], - "char": '\ud83d\udc69\u200d\ud83d\ude92', - fitzpatrick_scale: true, - category: "people" - }, - man_firefighter: { - keywords: [ "fireman", "man", "human" ], - "char": '\ud83d\udc68\u200d\ud83d\ude92', - fitzpatrick_scale: true, - category: "people" - }, - woman_pilot: { - keywords: [ "aviator", "plane", "woman", "human" ], - "char": '\ud83d\udc69\u200d\u2708\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - man_pilot: { - keywords: [ "aviator", "plane", "man", "human" ], - "char": '\ud83d\udc68\u200d\u2708\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - woman_astronaut: { - keywords: [ "space", "rocket", "woman", "human" ], - "char": '\ud83d\udc69\u200d\ud83d\ude80', - fitzpatrick_scale: true, - category: "people" - }, - man_astronaut: { - keywords: [ "space", "rocket", "man", "human" ], - "char": '\ud83d\udc68\u200d\ud83d\ude80', - fitzpatrick_scale: true, - category: "people" - }, - woman_judge: { - keywords: [ "justice", "court", "woman", "human" ], - "char": '\ud83d\udc69\u200d\u2696\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - man_judge: { - keywords: [ "justice", "court", "man", "human" ], - "char": '\ud83d\udc68\u200d\u2696\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - woman_superhero: { - keywords: [ "woman", "female", "good", "heroine", "superpowers" ], - "char": '\ud83e\uddb8\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - man_superhero: { - keywords: [ "man", "male", "good", "hero", "superpowers" ], - "char": '\ud83e\uddb8\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - woman_supervillain: { - keywords: [ "woman", "female", "evil", "bad", "criminal", "heroine", "superpowers" ], - "char": '\ud83e\uddb9\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - man_supervillain: { - keywords: [ "man", "male", "evil", "bad", "criminal", "hero", "superpowers" ], - "char": '\ud83e\uddb9\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - mrs_claus: { - keywords: [ "woman", "female", "xmas", "mother christmas" ], - "char": '\ud83e\udd36', - fitzpatrick_scale: true, - category: "people" - }, - santa: { - keywords: [ "festival", "man", "male", "xmas", "father christmas" ], - "char": '\ud83c\udf85', - fitzpatrick_scale: true, - category: "people" - }, - sorceress: { - keywords: [ "woman", "female", "mage", "witch" ], - "char": '\ud83e\uddd9\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - wizard: { - keywords: [ "man", "male", "mage", "sorcerer" ], - "char": '\ud83e\uddd9\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - woman_elf: { - keywords: [ "woman", "female" ], - "char": '\ud83e\udddd\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - man_elf: { - keywords: [ "man", "male" ], - "char": '\ud83e\udddd\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - woman_vampire: { - keywords: [ "woman", "female" ], - "char": '\ud83e\udddb\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - man_vampire: { - keywords: [ "man", "male", "dracula" ], - "char": '\ud83e\udddb\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - woman_zombie: { - keywords: [ "woman", "female", "undead", "walking dead" ], - "char": '\ud83e\udddf\u200d\u2640\ufe0f', - fitzpatrick_scale: false, - category: "people" - }, - man_zombie: { - keywords: [ "man", "male", "dracula", "undead", "walking dead" ], - "char": '\ud83e\udddf\u200d\u2642\ufe0f', - fitzpatrick_scale: false, - category: "people" - }, - woman_genie: { - keywords: [ "woman", "female" ], - "char": '\ud83e\uddde\u200d\u2640\ufe0f', - fitzpatrick_scale: false, - category: "people" - }, - man_genie: { - keywords: [ "man", "male" ], - "char": '\ud83e\uddde\u200d\u2642\ufe0f', - fitzpatrick_scale: false, - category: "people" - }, - mermaid: { - keywords: [ "woman", "female", "merwoman", "ariel" ], - "char": '\ud83e\udddc\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - merman: { - keywords: [ "man", "male", "triton" ], - "char": '\ud83e\udddc\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - woman_fairy: { - keywords: [ "woman", "female" ], - "char": '\ud83e\uddda\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - man_fairy: { - keywords: [ "man", "male" ], - "char": '\ud83e\uddda\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - angel: { - keywords: [ "heaven", "wings", "halo" ], - "char": '\ud83d\udc7c', - fitzpatrick_scale: true, - category: "people" - }, - pregnant_woman: { - keywords: [ "baby" ], - "char": '\ud83e\udd30', - fitzpatrick_scale: true, - category: "people" - }, - breastfeeding: { - keywords: [ "nursing", "baby" ], - "char": '\ud83e\udd31', - fitzpatrick_scale: true, - category: "people" - }, - princess: { - keywords: [ "girl", "woman", "female", "blond", "crown", "royal", "queen" ], - "char": '\ud83d\udc78', - fitzpatrick_scale: true, - category: "people" - }, - prince: { - keywords: [ "boy", "man", "male", "crown", "royal", "king" ], - "char": '\ud83e\udd34', - fitzpatrick_scale: true, - category: "people" - }, - bride_with_veil: { - keywords: [ "couple", "marriage", "wedding", "woman", "bride" ], - "char": '\ud83d\udc70', - fitzpatrick_scale: true, - category: "people" - }, - man_in_tuxedo: { - keywords: [ "couple", "marriage", "wedding", "groom" ], - "char": '\ud83e\udd35', - fitzpatrick_scale: true, - category: "people" - }, - running_woman: { - keywords: [ "woman", "walking", "exercise", "race", "running", "female" ], - "char": '\ud83c\udfc3\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - running_man: { - keywords: [ "man", "walking", "exercise", "race", "running" ], - "char": '\ud83c\udfc3', - fitzpatrick_scale: true, - category: "people" - }, - walking_woman: { - keywords: [ "human", "feet", "steps", "woman", "female" ], - "char": '\ud83d\udeb6\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - walking_man: { - keywords: [ "human", "feet", "steps" ], - "char": '\ud83d\udeb6', - fitzpatrick_scale: true, - category: "people" - }, - dancer: { - keywords: [ "female", "girl", "woman", "fun" ], - "char": '\ud83d\udc83', - fitzpatrick_scale: true, - category: "people" - }, - man_dancing: { - keywords: [ "male", "boy", "fun", "dancer" ], - "char": '\ud83d\udd7a', - fitzpatrick_scale: true, - category: "people" - }, - dancing_women: { - keywords: [ "female", "bunny", "women", "girls" ], - "char": '\ud83d\udc6f', - fitzpatrick_scale: false, - category: "people" - }, - dancing_men: { - keywords: [ "male", "bunny", "men", "boys" ], - "char": '\ud83d\udc6f\u200d\u2642\ufe0f', - fitzpatrick_scale: false, - category: "people" - }, - couple: { - keywords: [ "pair", "people", "human", "love", "date", "dating", "like", "affection", "valentines", "marriage" ], - "char": '\ud83d\udc6b', - fitzpatrick_scale: false, - category: "people" - }, - two_men_holding_hands: { - keywords: [ "pair", "couple", "love", "like", "bromance", "friendship", "people", "human" ], - "char": '\ud83d\udc6c', - fitzpatrick_scale: false, - category: "people" - }, - two_women_holding_hands: { - keywords: [ "pair", "friendship", "couple", "love", "like", "female", "people", "human" ], - "char": '\ud83d\udc6d', - fitzpatrick_scale: false, - category: "people" - }, - bowing_woman: { - keywords: [ "woman", "female", "girl" ], - "char": '\ud83d\ude47\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - bowing_man: { - keywords: [ "man", "male", "boy" ], - "char": '\ud83d\ude47', - fitzpatrick_scale: true, - category: "people" - }, - man_facepalming: { - keywords: [ "man", "male", "boy", "disbelief" ], - "char": '\ud83e\udd26\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - woman_facepalming: { - keywords: [ "woman", "female", "girl", "disbelief" ], - "char": '\ud83e\udd26\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - woman_shrugging: { - keywords: [ "woman", "female", "girl", "confused", "indifferent", "doubt" ], - "char": '\ud83e\udd37', - fitzpatrick_scale: true, - category: "people" - }, - man_shrugging: { - keywords: [ "man", "male", "boy", "confused", "indifferent", "doubt" ], - "char": '\ud83e\udd37\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - tipping_hand_woman: { - keywords: [ "female", "girl", "woman", "human", "information" ], - "char": '\ud83d\udc81', - fitzpatrick_scale: true, - category: "people" - }, - tipping_hand_man: { - keywords: [ "male", "boy", "man", "human", "information" ], - "char": '\ud83d\udc81\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - no_good_woman: { - keywords: [ "female", "girl", "woman", "nope" ], - "char": '\ud83d\ude45', - fitzpatrick_scale: true, - category: "people" - }, - no_good_man: { - keywords: [ "male", "boy", "man", "nope" ], - "char": '\ud83d\ude45\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - ok_woman: { - keywords: [ "women", "girl", "female", "pink", "human", "woman" ], - "char": '\ud83d\ude46', - fitzpatrick_scale: true, - category: "people" - }, - ok_man: { - keywords: [ "men", "boy", "male", "blue", "human", "man" ], - "char": '\ud83d\ude46\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - raising_hand_woman: { - keywords: [ "female", "girl", "woman" ], - "char": '\ud83d\ude4b', - fitzpatrick_scale: true, - category: "people" - }, - raising_hand_man: { - keywords: [ "male", "boy", "man" ], - "char": '\ud83d\ude4b\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - pouting_woman: { - keywords: [ "female", "girl", "woman" ], - "char": '\ud83d\ude4e', - fitzpatrick_scale: true, - category: "people" - }, - pouting_man: { - keywords: [ "male", "boy", "man" ], - "char": '\ud83d\ude4e\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - frowning_woman: { - keywords: [ "female", "girl", "woman", "sad", "depressed", "discouraged", "unhappy" ], - "char": '\ud83d\ude4d', - fitzpatrick_scale: true, - category: "people" - }, - frowning_man: { - keywords: [ "male", "boy", "man", "sad", "depressed", "discouraged", "unhappy" ], - "char": '\ud83d\ude4d\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - haircut_woman: { - keywords: [ "female", "girl", "woman" ], - "char": '\ud83d\udc87', - fitzpatrick_scale: true, - category: "people" - }, - haircut_man: { - keywords: [ "male", "boy", "man" ], - "char": '\ud83d\udc87\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - massage_woman: { - keywords: [ "female", "girl", "woman", "head" ], - "char": '\ud83d\udc86', - fitzpatrick_scale: true, - category: "people" - }, - massage_man: { - keywords: [ "male", "boy", "man", "head" ], - "char": '\ud83d\udc86\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - woman_in_steamy_room: { - keywords: [ "female", "woman", "spa", "steamroom", "sauna" ], - "char": '\ud83e\uddd6\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - man_in_steamy_room: { - keywords: [ "male", "man", "spa", "steamroom", "sauna" ], - "char": '\ud83e\uddd6\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "people" - }, - couple_with_heart_woman_man: { - keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ], - "char": '\ud83d\udc91', - fitzpatrick_scale: false, - category: "people" - }, - couple_with_heart_woman_woman: { - keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ], - "char": '\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69', - fitzpatrick_scale: false, - category: "people" - }, - couple_with_heart_man_man: { - keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ], - "char": '\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68', - fitzpatrick_scale: false, - category: "people" - }, - couplekiss_man_woman: { - keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ], - "char": '\ud83d\udc8f', - fitzpatrick_scale: false, - category: "people" - }, - couplekiss_woman_woman: { - keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ], - "char": '\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69', - fitzpatrick_scale: false, - category: "people" - }, - couplekiss_man_man: { - keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ], - "char": '\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68', - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_boy: { - keywords: [ "home", "parents", "child", "mom", "dad", "father", "mother", "people", "human" ], - "char": '\ud83d\udc6a', - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_girl: { - keywords: [ "home", "parents", "people", "human", "child" ], - "char": '\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67', - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_girl_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": '\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66', - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_boy_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": '\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66', - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_girl_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": '\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": '\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": '\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_girl_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": '\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_boy_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": '\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_girl_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": '\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67', - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": '\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66', - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": '\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67', - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_girl_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": '\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66', - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_boy_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": '\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66', - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_girl_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": '\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_boy: { - keywords: [ "home", "parent", "people", "human", "child" ], - "char": '\ud83d\udc69\u200d\ud83d\udc66', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_girl: { - keywords: [ "home", "parent", "people", "human", "child" ], - "char": '\ud83d\udc69\u200d\ud83d\udc67', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_girl_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - "char": '\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_boy_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - "char": '\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66', - fitzpatrick_scale: false, - category: "people" - }, - family_woman_girl_girl: { - keywords: [ "home", "parent", "people", "human", "children" ], - "char": '\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67', - fitzpatrick_scale: false, - category: "people" - }, - family_man_boy: { - keywords: [ "home", "parent", "people", "human", "child" ], - "char": '\ud83d\udc68\u200d\ud83d\udc66', - fitzpatrick_scale: false, - category: "people" - }, - family_man_girl: { - keywords: [ "home", "parent", "people", "human", "child" ], - "char": '\ud83d\udc68\u200d\ud83d\udc67', - fitzpatrick_scale: false, - category: "people" - }, - family_man_girl_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - "char": '\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66', - fitzpatrick_scale: false, - category: "people" - }, - family_man_boy_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - "char": '\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66', - fitzpatrick_scale: false, - category: "people" - }, - family_man_girl_girl: { - keywords: [ "home", "parent", "people", "human", "children" ], - "char": '\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67', - fitzpatrick_scale: false, - category: "people" - }, - yarn: { - keywords: [ "ball", "crochet", "knit" ], - "char": '\ud83e\uddf6', - fitzpatrick_scale: false, - category: "people" - }, - thread: { - keywords: [ "needle", "sewing", "spool", "string" ], - "char": '\ud83e\uddf5', - fitzpatrick_scale: false, - category: "people" - }, - coat: { - keywords: [ "jacket" ], - "char": '\ud83e\udde5', - fitzpatrick_scale: false, - category: "people" - }, - labcoat: { - keywords: [ "doctor", "experiment", "scientist", "chemist" ], - "char": '\ud83e\udd7c', - fitzpatrick_scale: false, - category: "people" - }, - womans_clothes: { - keywords: [ "fashion", "shopping_bags", "female" ], - "char": '\ud83d\udc5a', - fitzpatrick_scale: false, - category: "people" - }, - tshirt: { - keywords: [ "fashion", "cloth", "casual", "shirt", "tee" ], - "char": '\ud83d\udc55', - fitzpatrick_scale: false, - category: "people" - }, - jeans: { - keywords: [ "fashion", "shopping" ], - "char": '\ud83d\udc56', - fitzpatrick_scale: false, - category: "people" - }, - necktie: { - keywords: [ "shirt", "suitup", "formal", "fashion", "cloth", "business" ], - "char": '\ud83d\udc54', - fitzpatrick_scale: false, - category: "people" - }, - dress: { - keywords: [ "clothes", "fashion", "shopping" ], - "char": '\ud83d\udc57', - fitzpatrick_scale: false, - category: "people" - }, - bikini: { - keywords: [ "swimming", "female", "woman", "girl", "fashion", "beach", "summer" ], - "char": '\ud83d\udc59', - fitzpatrick_scale: false, - category: "people" - }, - kimono: { - keywords: [ "dress", "fashion", "women", "female", "japanese" ], - "char": '\ud83d\udc58', - fitzpatrick_scale: false, - category: "people" - }, - lipstick: { - keywords: [ "female", "girl", "fashion", "woman" ], - "char": '\ud83d\udc84', - fitzpatrick_scale: false, - category: "people" - }, - kiss: { - keywords: [ "face", "lips", "love", "like", "affection", "valentines" ], - "char": '\ud83d\udc8b', - fitzpatrick_scale: false, - category: "people" - }, - footprints: { - keywords: [ "feet", "tracking", "walking", "beach" ], - "char": '\ud83d\udc63', - fitzpatrick_scale: false, - category: "people" - }, - flat_shoe: { - keywords: [ "ballet", "slip-on", "slipper" ], - "char": '\ud83e\udd7f', - fitzpatrick_scale: false, - category: "people" - }, - high_heel: { - keywords: [ "fashion", "shoes", "female", "pumps", "stiletto" ], - "char": '\ud83d\udc60', - fitzpatrick_scale: false, - category: "people" - }, - sandal: { - keywords: [ "shoes", "fashion", "flip flops" ], - "char": '\ud83d\udc61', - fitzpatrick_scale: false, - category: "people" - }, - boot: { - keywords: [ "shoes", "fashion" ], - "char": '\ud83d\udc62', - fitzpatrick_scale: false, - category: "people" - }, - mans_shoe: { - keywords: [ "fashion", "male" ], - "char": '\ud83d\udc5e', - fitzpatrick_scale: false, - category: "people" - }, - athletic_shoe: { - keywords: [ "shoes", "sports", "sneakers" ], - "char": '\ud83d\udc5f', - fitzpatrick_scale: false, - category: "people" - }, - hiking_boot: { - keywords: [ "backpacking", "camping", "hiking" ], - "char": '\ud83e\udd7e', - fitzpatrick_scale: false, - category: "people" - }, - socks: { - keywords: [ "stockings", "clothes" ], - "char": '\ud83e\udde6', - fitzpatrick_scale: false, - category: "people" - }, - gloves: { - keywords: [ "hands", "winter", "clothes" ], - "char": '\ud83e\udde4', - fitzpatrick_scale: false, - category: "people" - }, - scarf: { - keywords: [ "neck", "winter", "clothes" ], - "char": '\ud83e\udde3', - fitzpatrick_scale: false, - category: "people" - }, - womans_hat: { - keywords: [ "fashion", "accessories", "female", "lady", "spring" ], - "char": '\ud83d\udc52', - fitzpatrick_scale: false, - category: "people" - }, - tophat: { - keywords: [ "magic", "gentleman", "classy", "circus" ], - "char": '\ud83c\udfa9', - fitzpatrick_scale: false, - category: "people" - }, - billed_hat: { - keywords: [ "cap", "baseball" ], - "char": '\ud83e\udde2', - fitzpatrick_scale: false, - category: "people" - }, - rescue_worker_helmet: { - keywords: [ "construction", "build" ], - "char": '\u26d1', - fitzpatrick_scale: false, - category: "people" - }, - mortar_board: { - keywords: [ "school", "college", "degree", "university", "graduation", "cap", "hat", "legal", "learn", "education" ], - "char": '\ud83c\udf93', - fitzpatrick_scale: false, - category: "people" - }, - crown: { - keywords: [ "king", "kod", "leader", "royalty", "lord" ], - "char": '\ud83d\udc51', - fitzpatrick_scale: false, - category: "people" - }, - school_satchel: { - keywords: [ "student", "education", "bag", "backpack" ], - "char": '\ud83c\udf92', - fitzpatrick_scale: false, - category: "people" - }, - luggage: { - keywords: [ "packing", "travel" ], - "char": '\ud83e\uddf3', - fitzpatrick_scale: false, - category: "people" - }, - pouch: { - keywords: [ "bag", "accessories", "shopping" ], - "char": '\ud83d\udc5d', - fitzpatrick_scale: false, - category: "people" - }, - purse: { - keywords: [ "fashion", "accessories", "money", "sales", "shopping" ], - "char": '\ud83d\udc5b', - fitzpatrick_scale: false, - category: "people" - }, - handbag: { - keywords: [ "fashion", "accessory", "accessories", "shopping" ], - "char": '\ud83d\udc5c', - fitzpatrick_scale: false, - category: "people" - }, - briefcase: { - keywords: [ "business", "documents", "work", "law", "legal", "job", "career" ], - "char": '\ud83d\udcbc', - fitzpatrick_scale: false, - category: "people" - }, - eyeglasses: { - keywords: [ "fashion", "accessories", "eyesight", "nerdy", "dork", "geek" ], - "char": '\ud83d\udc53', - fitzpatrick_scale: false, - category: "people" - }, - dark_sunglasses: { - keywords: [ "face", "cool", "accessories" ], - "char": '\ud83d\udd76', - fitzpatrick_scale: false, - category: "people" - }, - goggles: { - keywords: [ "eyes", "protection", "safety" ], - "char": '\ud83e\udd7d', - fitzpatrick_scale: false, - category: "people" - }, - ring: { - keywords: [ "wedding", "propose", "marriage", "valentines", "diamond", "fashion", "jewelry", "gem", "engagement" ], - "char": '\ud83d\udc8d', - fitzpatrick_scale: false, - category: "people" - }, - closed_umbrella: { - keywords: [ "weather", "rain", "drizzle" ], - "char": '\ud83c\udf02', - fitzpatrick_scale: false, - category: "people" - }, - dog: { - keywords: [ "animal", "friend", "nature", "woof", "puppy", "pet", "faithful" ], - "char": '\ud83d\udc36', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cat: { - keywords: [ "animal", "meow", "nature", "pet", "kitten" ], - "char": '\ud83d\udc31', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mouse: { - keywords: [ "animal", "nature", "cheese_wedge", "rodent" ], - "char": '\ud83d\udc2d', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hamster: { - keywords: [ "animal", "nature" ], - "char": '\ud83d\udc39', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rabbit: { - keywords: [ "animal", "nature", "pet", "spring", "magic", "bunny" ], - "char": '\ud83d\udc30', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fox_face: { - keywords: [ "animal", "nature", "face" ], - "char": '\ud83e\udd8a', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bear: { - keywords: [ "animal", "nature", "wild" ], - "char": '\ud83d\udc3b', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - panda_face: { - keywords: [ "animal", "nature", "panda" ], - "char": '\ud83d\udc3c', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - koala: { - keywords: [ "animal", "nature" ], - "char": '\ud83d\udc28', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tiger: { - keywords: [ "animal", "cat", "danger", "wild", "nature", "roar" ], - "char": '\ud83d\udc2f', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - lion: { - keywords: [ "animal", "nature" ], - "char": '\ud83e\udd81', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cow: { - keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ], - "char": '\ud83d\udc2e', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - pig: { - keywords: [ "animal", "oink", "nature" ], - "char": '\ud83d\udc37', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - pig_nose: { - keywords: [ "animal", "oink" ], - "char": '\ud83d\udc3d', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - frog: { - keywords: [ "animal", "nature", "croak", "toad" ], - "char": '\ud83d\udc38', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - squid: { - keywords: [ "animal", "nature", "ocean", "sea" ], - "char": '\ud83e\udd91', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - octopus: { - keywords: [ "animal", "creature", "ocean", "sea", "nature", "beach" ], - "char": '\ud83d\udc19', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shrimp: { - keywords: [ "animal", "ocean", "nature", "seafood" ], - "char": '\ud83e\udd90', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - monkey_face: { - keywords: [ "animal", "nature", "circus" ], - "char": '\ud83d\udc35', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - gorilla: { - keywords: [ "animal", "nature", "circus" ], - "char": '\ud83e\udd8d', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - see_no_evil: { - keywords: [ "monkey", "animal", "nature", "haha" ], - "char": '\ud83d\ude48', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hear_no_evil: { - keywords: [ "animal", "monkey", "nature" ], - "char": '\ud83d\ude49', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - speak_no_evil: { - keywords: [ "monkey", "animal", "nature", "omg" ], - "char": '\ud83d\ude4a', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - monkey: { - keywords: [ "animal", "nature", "banana", "circus" ], - "char": '\ud83d\udc12', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - chicken: { - keywords: [ "animal", "cluck", "nature", "bird" ], - "char": '\ud83d\udc14', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - penguin: { - keywords: [ "animal", "nature" ], - "char": '\ud83d\udc27', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bird: { - keywords: [ "animal", "nature", "fly", "tweet", "spring" ], - "char": '\ud83d\udc26', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - baby_chick: { - keywords: [ "animal", "chicken", "bird" ], - "char": '\ud83d\udc24', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hatching_chick: { - keywords: [ "animal", "chicken", "egg", "born", "baby", "bird" ], - "char": '\ud83d\udc23', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hatched_chick: { - keywords: [ "animal", "chicken", "baby", "bird" ], - "char": '\ud83d\udc25', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - duck: { - keywords: [ "animal", "nature", "bird", "mallard" ], - "char": '\ud83e\udd86', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - eagle: { - keywords: [ "animal", "nature", "bird" ], - "char": '\ud83e\udd85', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - owl: { - keywords: [ "animal", "nature", "bird", "hoot" ], - "char": '\ud83e\udd89', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bat: { - keywords: [ "animal", "nature", "blind", "vampire" ], - "char": '\ud83e\udd87', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - wolf: { - keywords: [ "animal", "nature", "wild" ], - "char": '\ud83d\udc3a', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - boar: { - keywords: [ "animal", "nature" ], - "char": '\ud83d\udc17', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - horse: { - keywords: [ "animal", "brown", "nature" ], - "char": '\ud83d\udc34', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - unicorn: { - keywords: [ "animal", "nature", "mystical" ], - "char": '\ud83e\udd84', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - honeybee: { - keywords: [ "animal", "insect", "nature", "bug", "spring", "honey" ], - "char": '\ud83d\udc1d', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bug: { - keywords: [ "animal", "insect", "nature", "worm" ], - "char": '\ud83d\udc1b', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - butterfly: { - keywords: [ "animal", "insect", "nature", "caterpillar" ], - "char": '\ud83e\udd8b', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snail: { - keywords: [ "slow", "animal", "shell" ], - "char": '\ud83d\udc0c', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - beetle: { - keywords: [ "animal", "insect", "nature", "ladybug" ], - "char": '\ud83d\udc1e', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ant: { - keywords: [ "animal", "insect", "nature", "bug" ], - "char": '\ud83d\udc1c', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - grasshopper: { - keywords: [ "animal", "cricket", "chirp" ], - "char": '\ud83e\udd97', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - spider: { - keywords: [ "animal", "arachnid" ], - "char": '\ud83d\udd77', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - scorpion: { - keywords: [ "animal", "arachnid" ], - "char": '\ud83e\udd82', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - crab: { - keywords: [ "animal", "crustacean" ], - "char": '\ud83e\udd80', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snake: { - keywords: [ "animal", "evil", "nature", "hiss", "python" ], - "char": '\ud83d\udc0d', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - lizard: { - keywords: [ "animal", "nature", "reptile" ], - "char": '\ud83e\udd8e', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - "t-rex": { - keywords: [ "animal", "nature", "dinosaur", "tyrannosaurus", "extinct" ], - "char": '\ud83e\udd96', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sauropod: { - keywords: [ "animal", "nature", "dinosaur", "brachiosaurus", "brontosaurus", "diplodocus", "extinct" ], - "char": '\ud83e\udd95', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - turtle: { - keywords: [ "animal", "slow", "nature", "tortoise" ], - "char": '\ud83d\udc22', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tropical_fish: { - keywords: [ "animal", "swim", "ocean", "beach", "nemo" ], - "char": '\ud83d\udc20', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fish: { - keywords: [ "animal", "food", "nature" ], - "char": '\ud83d\udc1f', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - blowfish: { - keywords: [ "animal", "nature", "food", "sea", "ocean" ], - "char": '\ud83d\udc21', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dolphin: { - keywords: [ "animal", "nature", "fish", "sea", "ocean", "flipper", "fins", "beach" ], - "char": '\ud83d\udc2c', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shark: { - keywords: [ "animal", "nature", "fish", "sea", "ocean", "jaws", "fins", "beach" ], - "char": '\ud83e\udd88', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - whale: { - keywords: [ "animal", "nature", "sea", "ocean" ], - "char": '\ud83d\udc33', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - whale2: { - keywords: [ "animal", "nature", "sea", "ocean" ], - "char": '\ud83d\udc0b', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - crocodile: { - keywords: [ "animal", "nature", "reptile", "lizard", "alligator" ], - "char": '\ud83d\udc0a', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - leopard: { - keywords: [ "animal", "nature" ], - "char": '\ud83d\udc06', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - zebra: { - keywords: [ "animal", "nature", "stripes", "safari" ], - "char": '\ud83e\udd93', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tiger2: { - keywords: [ "animal", "nature", "roar" ], - "char": '\ud83d\udc05', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - water_buffalo: { - keywords: [ "animal", "nature", "ox", "cow" ], - "char": '\ud83d\udc03', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ox: { - keywords: [ "animal", "cow", "beef" ], - "char": '\ud83d\udc02', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cow2: { - keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ], - "char": '\ud83d\udc04', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - deer: { - keywords: [ "animal", "nature", "horns", "venison" ], - "char": '\ud83e\udd8c', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dromedary_camel: { - keywords: [ "animal", "hot", "desert", "hump" ], - "char": '\ud83d\udc2a', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - camel: { - keywords: [ "animal", "nature", "hot", "desert", "hump" ], - "char": '\ud83d\udc2b', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - giraffe: { - keywords: [ "animal", "nature", "spots", "safari" ], - "char": '\ud83e\udd92', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - elephant: { - keywords: [ "animal", "nature", "nose", "th", "circus" ], - "char": '\ud83d\udc18', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rhinoceros: { - keywords: [ "animal", "nature", "horn" ], - "char": '\ud83e\udd8f', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - goat: { - keywords: [ "animal", "nature" ], - "char": '\ud83d\udc10', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ram: { - keywords: [ "animal", "sheep", "nature" ], - "char": '\ud83d\udc0f', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sheep: { - keywords: [ "animal", "nature", "wool", "shipit" ], - "char": '\ud83d\udc11', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - racehorse: { - keywords: [ "animal", "gamble", "luck" ], - "char": '\ud83d\udc0e', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - pig2: { - keywords: [ "animal", "nature" ], - "char": '\ud83d\udc16', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rat: { - keywords: [ "animal", "mouse", "rodent" ], - "char": '\ud83d\udc00', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mouse2: { - keywords: [ "animal", "nature", "rodent" ], - "char": '\ud83d\udc01', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rooster: { - keywords: [ "animal", "nature", "chicken" ], - "char": '\ud83d\udc13', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - turkey: { - keywords: [ "animal", "bird" ], - "char": '\ud83e\udd83', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dove: { - keywords: [ "animal", "bird" ], - "char": '\ud83d\udd4a', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dog2: { - keywords: [ "animal", "nature", "friend", "doge", "pet", "faithful" ], - "char": '\ud83d\udc15', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - poodle: { - keywords: [ "dog", "animal", "101", "nature", "pet" ], - "char": '\ud83d\udc29', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cat2: { - keywords: [ "animal", "meow", "pet", "cats" ], - "char": '\ud83d\udc08', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rabbit2: { - keywords: [ "animal", "nature", "pet", "magic", "spring" ], - "char": '\ud83d\udc07', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - chipmunk: { - keywords: [ "animal", "nature", "rodent", "squirrel" ], - "char": '\ud83d\udc3f', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hedgehog: { - keywords: [ "animal", "nature", "spiny" ], - "char": '\ud83e\udd94', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - raccoon: { - keywords: [ "animal", "nature" ], - "char": '\ud83e\udd9d', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - llama: { - keywords: [ "animal", "nature", "alpaca" ], - "char": '\ud83e\udd99', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hippopotamus: { - keywords: [ "animal", "nature" ], - "char": '\ud83e\udd9b', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - kangaroo: { - keywords: [ "animal", "nature", "australia", "joey", "hop", "marsupial" ], - "char": '\ud83e\udd98', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - badger: { - keywords: [ "animal", "nature", "honey" ], - "char": '\ud83e\udda1', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - swan: { - keywords: [ "animal", "nature", "bird" ], - "char": '\ud83e\udda2', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - peacock: { - keywords: [ "animal", "nature", "peahen", "bird" ], - "char": '\ud83e\udd9a', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - parrot: { - keywords: [ "animal", "nature", "bird", "pirate", "talk" ], - "char": '\ud83e\udd9c', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - lobster: { - keywords: [ "animal", "nature", "bisque", "claws", "seafood" ], - "char": '\ud83e\udd9e', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mosquito: { - keywords: [ "animal", "nature", "insect", "malaria" ], - "char": '\ud83e\udd9f', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - paw_prints: { - keywords: [ "animal", "tracking", "footprints", "dog", "cat", "pet", "feet" ], - "char": '\ud83d\udc3e', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dragon: { - keywords: [ "animal", "myth", "nature", "chinese", "green" ], - "char": '\ud83d\udc09', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dragon_face: { - keywords: [ "animal", "myth", "nature", "chinese", "green" ], - "char": '\ud83d\udc32', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cactus: { - keywords: [ "vegetable", "plant", "nature" ], - "char": '\ud83c\udf35', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - christmas_tree: { - keywords: [ "festival", "vacation", "december", "xmas", "celebration" ], - "char": '\ud83c\udf84', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - evergreen_tree: { - keywords: [ "plant", "nature" ], - "char": '\ud83c\udf32', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - deciduous_tree: { - keywords: [ "plant", "nature" ], - "char": '\ud83c\udf33', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - palm_tree: { - keywords: [ "plant", "vegetable", "nature", "summer", "beach", "mojito", "tropical" ], - "char": '\ud83c\udf34', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - seedling: { - keywords: [ "plant", "nature", "grass", "lawn", "spring" ], - "char": '\ud83c\udf31', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - herb: { - keywords: [ "vegetable", "plant", "medicine", "weed", "grass", "lawn" ], - "char": '\ud83c\udf3f', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shamrock: { - keywords: [ "vegetable", "plant", "nature", "irish", "clover" ], - "char": '\u2618', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - four_leaf_clover: { - keywords: [ "vegetable", "plant", "nature", "lucky", "irish" ], - "char": '\ud83c\udf40', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bamboo: { - keywords: [ "plant", "nature", "vegetable", "panda", "pine_decoration" ], - "char": '\ud83c\udf8d', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tanabata_tree: { - keywords: [ "plant", "nature", "branch", "summer" ], - "char": '\ud83c\udf8b', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - leaves: { - keywords: [ "nature", "plant", "tree", "vegetable", "grass", "lawn", "spring" ], - "char": '\ud83c\udf43', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fallen_leaf: { - keywords: [ "nature", "plant", "vegetable", "leaves" ], - "char": '\ud83c\udf42', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - maple_leaf: { - keywords: [ "nature", "plant", "vegetable", "ca", "fall" ], - "char": '\ud83c\udf41', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ear_of_rice: { - keywords: [ "nature", "plant" ], - "char": '\ud83c\udf3e', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hibiscus: { - keywords: [ "plant", "vegetable", "flowers", "beach" ], - "char": '\ud83c\udf3a', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sunflower: { - keywords: [ "nature", "plant", "fall" ], - "char": '\ud83c\udf3b', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rose: { - keywords: [ "flowers", "valentines", "love", "spring" ], - "char": '\ud83c\udf39', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - wilted_flower: { - keywords: [ "plant", "nature", "flower" ], - "char": '\ud83e\udd40', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tulip: { - keywords: [ "flowers", "plant", "nature", "summer", "spring" ], - "char": '\ud83c\udf37', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - blossom: { - keywords: [ "nature", "flowers", "yellow" ], - "char": '\ud83c\udf3c', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cherry_blossom: { - keywords: [ "nature", "plant", "spring", "flower" ], - "char": '\ud83c\udf38', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bouquet: { - keywords: [ "flowers", "nature", "spring" ], - "char": '\ud83d\udc90', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mushroom: { - keywords: [ "plant", "vegetable" ], - "char": '\ud83c\udf44', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - chestnut: { - keywords: [ "food", "squirrel" ], - "char": '\ud83c\udf30', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - jack_o_lantern: { - keywords: [ "halloween", "light", "pumpkin", "creepy", "fall" ], - "char": '\ud83c\udf83', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shell: { - keywords: [ "nature", "sea", "beach" ], - "char": '\ud83d\udc1a', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - spider_web: { - keywords: [ "animal", "insect", "arachnid", "silk" ], - "char": '\ud83d\udd78', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - earth_americas: { - keywords: [ "globe", "world", "USA", "international" ], - "char": '\ud83c\udf0e', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - earth_africa: { - keywords: [ "globe", "world", "international" ], - "char": '\ud83c\udf0d', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - earth_asia: { - keywords: [ "globe", "world", "east", "international" ], - "char": '\ud83c\udf0f', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - full_moon: { - keywords: [ "nature", "yellow", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": '\ud83c\udf15', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waning_gibbous_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep", "waxing_gibbous_moon" ], - "char": '\ud83c\udf16', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - last_quarter_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": '\ud83c\udf17', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waning_crescent_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": '\ud83c\udf18', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - new_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": '\ud83c\udf11', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waxing_crescent_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": '\ud83c\udf12', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - first_quarter_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": '\ud83c\udf13', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waxing_gibbous_moon: { - keywords: [ "nature", "night", "sky", "gray", "twilight", "planet", "space", "evening", "sleep" ], - "char": '\ud83c\udf14', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - new_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": '\ud83c\udf1a', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - full_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": '\ud83c\udf1d', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - first_quarter_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": '\ud83c\udf1b', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - last_quarter_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": '\ud83c\udf1c', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_with_face: { - keywords: [ "nature", "morning", "sky" ], - "char": '\ud83c\udf1e', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - crescent_moon: { - keywords: [ "night", "sleep", "sky", "evening", "magic" ], - "char": '\ud83c\udf19', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - star: { - keywords: [ "night", "yellow" ], - "char": '\u2b50', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - star2: { - keywords: [ "night", "sparkle", "awesome", "good", "magic" ], - "char": '\ud83c\udf1f', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dizzy: { - keywords: [ "star", "sparkle", "shoot", "magic" ], - "char": '\ud83d\udcab', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sparkles: { - keywords: [ "stars", "shine", "shiny", "cool", "awesome", "good", "magic" ], - "char": '\u2728', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - comet: { - keywords: [ "space" ], - "char": '\u2604', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sunny: { - keywords: [ "weather", "nature", "brightness", "summer", "beach", "spring" ], - "char": '\u2600\ufe0f', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_behind_small_cloud: { - keywords: [ "weather" ], - "char": '\ud83c\udf24', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - partly_sunny: { - keywords: [ "weather", "nature", "cloudy", "morning", "fall", "spring" ], - "char": '\u26c5', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_behind_large_cloud: { - keywords: [ "weather" ], - "char": '\ud83c\udf25', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_behind_rain_cloud: { - keywords: [ "weather" ], - "char": '\ud83c\udf26', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud: { - keywords: [ "weather", "sky" ], - "char": '\u2601\ufe0f', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_rain: { - keywords: [ "weather" ], - "char": '\ud83c\udf27', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_lightning_and_rain: { - keywords: [ "weather", "lightning" ], - "char": '\u26c8', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_lightning: { - keywords: [ "weather", "thunder" ], - "char": '\ud83c\udf29', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - zap: { - keywords: [ "thunder", "weather", "lightning bolt", "fast" ], - "char": '\u26a1', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fire: { - keywords: [ "hot", "cook", "flame" ], - "char": '\ud83d\udd25', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - boom: { - keywords: [ "bomb", "explode", "explosion", "collision", "blown" ], - "char": '\ud83d\udca5', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snowflake: { - keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas" ], - "char": '\u2744\ufe0f', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_snow: { - keywords: [ "weather" ], - "char": '\ud83c\udf28', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snowman: { - keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen", "without_snow" ], - "char": '\u26c4', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snowman_with_snow: { - keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen" ], - "char": '\u2603', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - wind_face: { - keywords: [ "gust", "air" ], - "char": '\ud83c\udf2c', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dash: { - keywords: [ "wind", "air", "fast", "shoo", "fart", "smoke", "puff" ], - "char": '\ud83d\udca8', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tornado: { - keywords: [ "weather", "cyclone", "twister" ], - "char": '\ud83c\udf2a', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fog: { - keywords: [ "weather" ], - "char": '\ud83c\udf2b', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - open_umbrella: { - keywords: [ "weather", "spring" ], - "char": '\u2602', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - umbrella: { - keywords: [ "rainy", "weather", "spring" ], - "char": '\u2614', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - droplet: { - keywords: [ "water", "drip", "faucet", "spring" ], - "char": '\ud83d\udca7', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sweat_drops: { - keywords: [ "water", "drip", "oops" ], - "char": '\ud83d\udca6', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ocean: { - keywords: [ "sea", "water", "wave", "nature", "tsunami", "disaster" ], - "char": '\ud83c\udf0a', - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - green_apple: { - keywords: [ "fruit", "nature" ], - "char": '\ud83c\udf4f', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - apple: { - keywords: [ "fruit", "mac", "school" ], - "char": '\ud83c\udf4e', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pear: { - keywords: [ "fruit", "nature", "food" ], - "char": '\ud83c\udf50', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tangerine: { - keywords: [ "food", "fruit", "nature", "orange" ], - "char": '\ud83c\udf4a', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - lemon: { - keywords: [ "fruit", "nature" ], - "char": '\ud83c\udf4b', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - banana: { - keywords: [ "fruit", "food", "monkey" ], - "char": '\ud83c\udf4c', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - watermelon: { - keywords: [ "fruit", "food", "picnic", "summer" ], - "char": '\ud83c\udf49', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - grapes: { - keywords: [ "fruit", "food", "wine" ], - "char": '\ud83c\udf47', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - strawberry: { - keywords: [ "fruit", "food", "nature" ], - "char": '\ud83c\udf53', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - melon: { - keywords: [ "fruit", "nature", "food" ], - "char": '\ud83c\udf48', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cherries: { - keywords: [ "food", "fruit" ], - "char": '\ud83c\udf52', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - peach: { - keywords: [ "fruit", "nature", "food" ], - "char": '\ud83c\udf51', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pineapple: { - keywords: [ "fruit", "nature", "food" ], - "char": '\ud83c\udf4d', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - coconut: { - keywords: [ "fruit", "nature", "food", "palm" ], - "char": '\ud83e\udd65', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - kiwi_fruit: { - keywords: [ "fruit", "food" ], - "char": '\ud83e\udd5d', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - mango: { - keywords: [ "fruit", "food", "tropical" ], - "char": '\ud83e\udd6d', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - avocado: { - keywords: [ "fruit", "food" ], - "char": '\ud83e\udd51', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - broccoli: { - keywords: [ "fruit", "food", "vegetable" ], - "char": '\ud83e\udd66', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tomato: { - keywords: [ "fruit", "vegetable", "nature", "food" ], - "char": '\ud83c\udf45', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - eggplant: { - keywords: [ "vegetable", "nature", "food", "aubergine" ], - "char": '\ud83c\udf46', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cucumber: { - keywords: [ "fruit", "food", "pickle" ], - "char": '\ud83e\udd52', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - carrot: { - keywords: [ "vegetable", "food", "orange" ], - "char": '\ud83e\udd55', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - hot_pepper: { - keywords: [ "food", "spicy", "chilli", "chili" ], - "char": '\ud83c\udf36', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - potato: { - keywords: [ "food", "tuber", "vegatable", "starch" ], - "char": '\ud83e\udd54', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - corn: { - keywords: [ "food", "vegetable", "plant" ], - "char": '\ud83c\udf3d', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - leafy_greens: { - keywords: [ "food", "vegetable", "plant", "bok choy", "cabbage", "kale", "lettuce" ], - "char": '\ud83e\udd6c', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sweet_potato: { - keywords: [ "food", "nature" ], - "char": '\ud83c\udf60', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - peanuts: { - keywords: [ "food", "nut" ], - "char": '\ud83e\udd5c', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - honey_pot: { - keywords: [ "bees", "sweet", "kitchen" ], - "char": '\ud83c\udf6f', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - croissant: { - keywords: [ "food", "bread", "french" ], - "char": '\ud83e\udd50', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bread: { - keywords: [ "food", "wheat", "breakfast", "toast" ], - "char": '\ud83c\udf5e', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - baguette_bread: { - keywords: [ "food", "bread", "french" ], - "char": '\ud83e\udd56', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bagel: { - keywords: [ "food", "bread", "bakery", "schmear" ], - "char": '\ud83e\udd6f', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pretzel: { - keywords: [ "food", "bread", "twisted" ], - "char": '\ud83e\udd68', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cheese: { - keywords: [ "food", "chadder" ], - "char": '\ud83e\uddc0', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - egg: { - keywords: [ "food", "chicken", "breakfast" ], - "char": '\ud83e\udd5a', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bacon: { - keywords: [ "food", "breakfast", "pork", "pig", "meat" ], - "char": '\ud83e\udd53', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - steak: { - keywords: [ "food", "cow", "meat", "cut", "chop", "lambchop", "porkchop" ], - "char": '\ud83e\udd69', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pancakes: { - keywords: [ "food", "breakfast", "flapjacks", "hotcakes" ], - "char": '\ud83e\udd5e', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - poultry_leg: { - keywords: [ "food", "meat", "drumstick", "bird", "chicken", "turkey" ], - "char": '\ud83c\udf57', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - meat_on_bone: { - keywords: [ "good", "food", "drumstick" ], - "char": '\ud83c\udf56', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bone: { - keywords: [ "skeleton" ], - "char": '\ud83e\uddb4', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fried_shrimp: { - keywords: [ "food", "animal", "appetizer", "summer" ], - "char": '\ud83c\udf64', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fried_egg: { - keywords: [ "food", "breakfast", "kitchen", "egg" ], - "char": '\ud83c\udf73', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - hamburger: { - keywords: [ "meat", "fast food", "beef", "cheeseburger", "mcdonalds", "burger king" ], - "char": '\ud83c\udf54', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fries: { - keywords: [ "chips", "snack", "fast food" ], - "char": '\ud83c\udf5f', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - stuffed_flatbread: { - keywords: [ "food", "flatbread", "stuffed", "gyro" ], - "char": '\ud83e\udd59', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - hotdog: { - keywords: [ "food", "frankfurter" ], - "char": '\ud83c\udf2d', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pizza: { - keywords: [ "food", "party" ], - "char": '\ud83c\udf55', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sandwich: { - keywords: [ "food", "lunch", "bread" ], - "char": '\ud83e\udd6a', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - canned_food: { - keywords: [ "food", "soup" ], - "char": '\ud83e\udd6b', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - spaghetti: { - keywords: [ "food", "italian", "noodle" ], - "char": '\ud83c\udf5d', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - taco: { - keywords: [ "food", "mexican" ], - "char": '\ud83c\udf2e', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - burrito: { - keywords: [ "food", "mexican" ], - "char": '\ud83c\udf2f', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - green_salad: { - keywords: [ "food", "healthy", "lettuce" ], - "char": '\ud83e\udd57', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - shallow_pan_of_food: { - keywords: [ "food", "cooking", "casserole", "paella" ], - "char": '\ud83e\udd58', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - ramen: { - keywords: [ "food", "japanese", "noodle", "chopsticks" ], - "char": '\ud83c\udf5c', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - stew: { - keywords: [ "food", "meat", "soup" ], - "char": '\ud83c\udf72', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fish_cake: { - keywords: [ "food", "japan", "sea", "beach", "narutomaki", "pink", "swirl", "kamaboko", "surimi", "ramen" ], - "char": '\ud83c\udf65', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fortune_cookie: { - keywords: [ "food", "prophecy" ], - "char": '\ud83e\udd60', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sushi: { - keywords: [ "food", "fish", "japanese", "rice" ], - "char": '\ud83c\udf63', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bento: { - keywords: [ "food", "japanese", "box" ], - "char": '\ud83c\udf71', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - curry: { - keywords: [ "food", "spicy", "hot", "indian" ], - "char": '\ud83c\udf5b', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - rice_ball: { - keywords: [ "food", "japanese" ], - "char": '\ud83c\udf59', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - rice: { - keywords: [ "food", "china", "asian" ], - "char": '\ud83c\udf5a', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - rice_cracker: { - keywords: [ "food", "japanese" ], - "char": '\ud83c\udf58', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - oden: { - keywords: [ "food", "japanese" ], - "char": '\ud83c\udf62', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - dango: { - keywords: [ "food", "dessert", "sweet", "japanese", "barbecue", "meat" ], - "char": '\ud83c\udf61', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - shaved_ice: { - keywords: [ "hot", "dessert", "summer" ], - "char": '\ud83c\udf67', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - ice_cream: { - keywords: [ "food", "hot", "dessert" ], - "char": '\ud83c\udf68', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - icecream: { - keywords: [ "food", "hot", "dessert", "summer" ], - "char": '\ud83c\udf66', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pie: { - keywords: [ "food", "dessert", "pastry" ], - "char": '\ud83e\udd67', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cake: { - keywords: [ "food", "dessert" ], - "char": '\ud83c\udf70', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cupcake: { - keywords: [ "food", "dessert", "bakery", "sweet" ], - "char": '\ud83e\uddc1', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - moon_cake: { - keywords: [ "food", "autumn" ], - "char": '\ud83e\udd6e', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - birthday: { - keywords: [ "food", "dessert", "cake" ], - "char": '\ud83c\udf82', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - custard: { - keywords: [ "dessert", "food" ], - "char": '\ud83c\udf6e', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - candy: { - keywords: [ "snack", "dessert", "sweet", "lolly" ], - "char": '\ud83c\udf6c', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - lollipop: { - keywords: [ "food", "snack", "candy", "sweet" ], - "char": '\ud83c\udf6d', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - chocolate_bar: { - keywords: [ "food", "snack", "dessert", "sweet" ], - "char": '\ud83c\udf6b', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - popcorn: { - keywords: [ "food", "movie theater", "films", "snack" ], - "char": '\ud83c\udf7f', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - dumpling: { - keywords: [ "food", "empanada", "pierogi", "potsticker" ], - "char": '\ud83e\udd5f', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - doughnut: { - keywords: [ "food", "dessert", "snack", "sweet", "donut" ], - "char": '\ud83c\udf69', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cookie: { - keywords: [ "food", "snack", "oreo", "chocolate", "sweet", "dessert" ], - "char": '\ud83c\udf6a', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - milk_glass: { - keywords: [ "beverage", "drink", "cow" ], - "char": '\ud83e\udd5b', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - beer: { - keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ], - "char": '\ud83c\udf7a', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - beers: { - keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ], - "char": '\ud83c\udf7b', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - clinking_glasses: { - keywords: [ "beverage", "drink", "party", "alcohol", "celebrate", "cheers", "wine", "champagne", "toast" ], - "char": '\ud83e\udd42', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - wine_glass: { - keywords: [ "drink", "beverage", "drunk", "alcohol", "booze" ], - "char": '\ud83c\udf77', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tumbler_glass: { - keywords: [ "drink", "beverage", "drunk", "alcohol", "liquor", "booze", "bourbon", "scotch", "whisky", "glass", "shot" ], - "char": '\ud83e\udd43', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cocktail: { - keywords: [ "drink", "drunk", "alcohol", "beverage", "booze", "mojito" ], - "char": '\ud83c\udf78', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tropical_drink: { - keywords: [ "beverage", "cocktail", "summer", "beach", "alcohol", "booze", "mojito" ], - "char": '\ud83c\udf79', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - champagne: { - keywords: [ "drink", "wine", "bottle", "celebration" ], - "char": '\ud83c\udf7e', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sake: { - keywords: [ "wine", "drink", "drunk", "beverage", "japanese", "alcohol", "booze" ], - "char": '\ud83c\udf76', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tea: { - keywords: [ "drink", "bowl", "breakfast", "green", "british" ], - "char": '\ud83c\udf75', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cup_with_straw: { - keywords: [ "drink", "soda" ], - "char": '\ud83e\udd64', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - coffee: { - keywords: [ "beverage", "caffeine", "latte", "espresso" ], - "char": '\u2615', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - baby_bottle: { - keywords: [ "food", "container", "milk" ], - "char": '\ud83c\udf7c', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - salt: { - keywords: [ "condiment", "shaker" ], - "char": '\ud83e\uddc2', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - spoon: { - keywords: [ "cutlery", "kitchen", "tableware" ], - "char": '\ud83e\udd44', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fork_and_knife: { - keywords: [ "cutlery", "kitchen" ], - "char": '\ud83c\udf74', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - plate_with_cutlery: { - keywords: [ "food", "eat", "meal", "lunch", "dinner", "restaurant" ], - "char": '\ud83c\udf7d', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bowl_with_spoon: { - keywords: [ "food", "breakfast", "cereal", "oatmeal", "porridge" ], - "char": '\ud83e\udd63', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - takeout_box: { - keywords: [ "food", "leftovers" ], - "char": '\ud83e\udd61', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - chopsticks: { - keywords: [ "food" ], - "char": '\ud83e\udd62', - fitzpatrick_scale: false, - category: "food_and_drink" - }, - soccer: { - keywords: [ "sports", "football" ], - "char": '\u26bd', - fitzpatrick_scale: false, - category: "activity" - }, - basketball: { - keywords: [ "sports", "balls", "NBA" ], - "char": '\ud83c\udfc0', - fitzpatrick_scale: false, - category: "activity" - }, - football: { - keywords: [ "sports", "balls", "NFL" ], - "char": '\ud83c\udfc8', - fitzpatrick_scale: false, - category: "activity" - }, - baseball: { - keywords: [ "sports", "balls" ], - "char": '\u26be', - fitzpatrick_scale: false, - category: "activity" - }, - softball: { - keywords: [ "sports", "balls" ], - "char": '\ud83e\udd4e', - fitzpatrick_scale: false, - category: "activity" - }, - tennis: { - keywords: [ "sports", "balls", "green" ], - "char": '\ud83c\udfbe', - fitzpatrick_scale: false, - category: "activity" - }, - volleyball: { - keywords: [ "sports", "balls" ], - "char": '\ud83c\udfd0', - fitzpatrick_scale: false, - category: "activity" - }, - rugby_football: { - keywords: [ "sports", "team" ], - "char": '\ud83c\udfc9', - fitzpatrick_scale: false, - category: "activity" - }, - flying_disc: { - keywords: [ "sports", "frisbee", "ultimate" ], - "char": '\ud83e\udd4f', - fitzpatrick_scale: false, - category: "activity" - }, - "8ball": { - keywords: [ "pool", "hobby", "game", "luck", "magic" ], - "char": '\ud83c\udfb1', - fitzpatrick_scale: false, - category: "activity" - }, - golf: { - keywords: [ "sports", "business", "flag", "hole", "summer" ], - "char": '\u26f3', - fitzpatrick_scale: false, - category: "activity" - }, - golfing_woman: { - keywords: [ "sports", "business", "woman", "female" ], - "char": '\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f', - fitzpatrick_scale: false, - category: "activity" - }, - golfing_man: { - keywords: [ "sports", "business" ], - "char": '\ud83c\udfcc', - fitzpatrick_scale: true, - category: "activity" - }, - ping_pong: { - keywords: [ "sports", "pingpong" ], - "char": '\ud83c\udfd3', - fitzpatrick_scale: false, - category: "activity" - }, - badminton: { - keywords: [ "sports" ], - "char": '\ud83c\udff8', - fitzpatrick_scale: false, - category: "activity" - }, - goal_net: { - keywords: [ "sports" ], - "char": '\ud83e\udd45', - fitzpatrick_scale: false, - category: "activity" - }, - ice_hockey: { - keywords: [ "sports" ], - "char": '\ud83c\udfd2', - fitzpatrick_scale: false, - category: "activity" - }, - field_hockey: { - keywords: [ "sports" ], - "char": '\ud83c\udfd1', - fitzpatrick_scale: false, - category: "activity" - }, - lacrosse: { - keywords: [ "sports", "ball", "stick" ], - "char": '\ud83e\udd4d', - fitzpatrick_scale: false, - category: "activity" - }, - cricket: { - keywords: [ "sports" ], - "char": '\ud83c\udfcf', - fitzpatrick_scale: false, - category: "activity" - }, - ski: { - keywords: [ "sports", "winter", "cold", "snow" ], - "char": '\ud83c\udfbf', - fitzpatrick_scale: false, - category: "activity" - }, - skier: { - keywords: [ "sports", "winter", "snow" ], - "char": '\u26f7', - fitzpatrick_scale: false, - category: "activity" - }, - snowboarder: { - keywords: [ "sports", "winter" ], - "char": '\ud83c\udfc2', - fitzpatrick_scale: true, - category: "activity" - }, - person_fencing: { - keywords: [ "sports", "fencing", "sword" ], - "char": '\ud83e\udd3a', - fitzpatrick_scale: false, - category: "activity" - }, - women_wrestling: { - keywords: [ "sports", "wrestlers" ], - "char": '\ud83e\udd3c\u200d\u2640\ufe0f', - fitzpatrick_scale: false, - category: "activity" - }, - men_wrestling: { - keywords: [ "sports", "wrestlers" ], - "char": '\ud83e\udd3c\u200d\u2642\ufe0f', - fitzpatrick_scale: false, - category: "activity" - }, - woman_cartwheeling: { - keywords: [ "gymnastics" ], - "char": '\ud83e\udd38\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - man_cartwheeling: { - keywords: [ "gymnastics" ], - "char": '\ud83e\udd38\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - woman_playing_handball: { - keywords: [ "sports" ], - "char": '\ud83e\udd3e\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - man_playing_handball: { - keywords: [ "sports" ], - "char": '\ud83e\udd3e\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - ice_skate: { - keywords: [ "sports" ], - "char": '\u26f8', - fitzpatrick_scale: false, - category: "activity" - }, - curling_stone: { - keywords: [ "sports" ], - "char": '\ud83e\udd4c', - fitzpatrick_scale: false, - category: "activity" - }, - skateboard: { - keywords: [ "board" ], - "char": '\ud83d\udef9', - fitzpatrick_scale: false, - category: "activity" - }, - sled: { - keywords: [ "sleigh", "luge", "toboggan" ], - "char": '\ud83d\udef7', - fitzpatrick_scale: false, - category: "activity" - }, - bow_and_arrow: { - keywords: [ "sports" ], - "char": '\ud83c\udff9', - fitzpatrick_scale: false, - category: "activity" - }, - fishing_pole_and_fish: { - keywords: [ "food", "hobby", "summer" ], - "char": '\ud83c\udfa3', - fitzpatrick_scale: false, - category: "activity" - }, - boxing_glove: { - keywords: [ "sports", "fighting" ], - "char": '\ud83e\udd4a', - fitzpatrick_scale: false, - category: "activity" - }, - martial_arts_uniform: { - keywords: [ "judo", "karate", "taekwondo" ], - "char": '\ud83e\udd4b', - fitzpatrick_scale: false, - category: "activity" - }, - rowing_woman: { - keywords: [ "sports", "hobby", "water", "ship", "woman", "female" ], - "char": '\ud83d\udea3\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - rowing_man: { - keywords: [ "sports", "hobby", "water", "ship" ], - "char": '\ud83d\udea3', - fitzpatrick_scale: true, - category: "activity" - }, - climbing_woman: { - keywords: [ "sports", "hobby", "woman", "female", "rock" ], - "char": '\ud83e\uddd7\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - climbing_man: { - keywords: [ "sports", "hobby", "man", "male", "rock" ], - "char": '\ud83e\uddd7\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - swimming_woman: { - keywords: [ "sports", "exercise", "human", "athlete", "water", "summer", "woman", "female" ], - "char": '\ud83c\udfca\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - swimming_man: { - keywords: [ "sports", "exercise", "human", "athlete", "water", "summer" ], - "char": '\ud83c\udfca', - fitzpatrick_scale: true, - category: "activity" - }, - woman_playing_water_polo: { - keywords: [ "sports", "pool" ], - "char": '\ud83e\udd3d\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - man_playing_water_polo: { - keywords: [ "sports", "pool" ], - "char": '\ud83e\udd3d\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - woman_in_lotus_position: { - keywords: [ "woman", "female", "meditation", "yoga", "serenity", "zen", "mindfulness" ], - "char": '\ud83e\uddd8\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - man_in_lotus_position: { - keywords: [ "man", "male", "meditation", "yoga", "serenity", "zen", "mindfulness" ], - "char": '\ud83e\uddd8\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - surfing_woman: { - keywords: [ "sports", "ocean", "sea", "summer", "beach", "woman", "female" ], - "char": '\ud83c\udfc4\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - surfing_man: { - keywords: [ "sports", "ocean", "sea", "summer", "beach" ], - "char": '\ud83c\udfc4', - fitzpatrick_scale: true, - category: "activity" - }, - bath: { - keywords: [ "clean", "shower", "bathroom" ], - "char": '\ud83d\udec0', - fitzpatrick_scale: true, - category: "activity" - }, - basketball_woman: { - keywords: [ "sports", "human", "woman", "female" ], - "char": '\u26f9\ufe0f\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - basketball_man: { - keywords: [ "sports", "human" ], - "char": '\u26f9', - fitzpatrick_scale: true, - category: "activity" - }, - weight_lifting_woman: { - keywords: [ "sports", "training", "exercise", "woman", "female" ], - "char": '\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - weight_lifting_man: { - keywords: [ "sports", "training", "exercise" ], - "char": '\ud83c\udfcb', - fitzpatrick_scale: true, - category: "activity" - }, - biking_woman: { - keywords: [ "sports", "bike", "exercise", "hipster", "woman", "female" ], - "char": '\ud83d\udeb4\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - biking_man: { - keywords: [ "sports", "bike", "exercise", "hipster" ], - "char": '\ud83d\udeb4', - fitzpatrick_scale: true, - category: "activity" - }, - mountain_biking_woman: { - keywords: [ "transportation", "sports", "human", "race", "bike", "woman", "female" ], - "char": '\ud83d\udeb5\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - mountain_biking_man: { - keywords: [ "transportation", "sports", "human", "race", "bike" ], - "char": '\ud83d\udeb5', - fitzpatrick_scale: true, - category: "activity" - }, - horse_racing: { - keywords: [ "animal", "betting", "competition", "gambling", "luck" ], - "char": '\ud83c\udfc7', - fitzpatrick_scale: true, - category: "activity" - }, - business_suit_levitating: { - keywords: [ "suit", "business", "levitate", "hover", "jump" ], - "char": '\ud83d\udd74', - fitzpatrick_scale: true, - category: "activity" - }, - trophy: { - keywords: [ "win", "award", "contest", "place", "ftw", "ceremony" ], - "char": '\ud83c\udfc6', - fitzpatrick_scale: false, - category: "activity" - }, - running_shirt_with_sash: { - keywords: [ "play", "pageant" ], - "char": '\ud83c\udfbd', - fitzpatrick_scale: false, - category: "activity" - }, - medal_sports: { - keywords: [ "award", "winning" ], - "char": '\ud83c\udfc5', - fitzpatrick_scale: false, - category: "activity" - }, - medal_military: { - keywords: [ "award", "winning", "army" ], - "char": '\ud83c\udf96', - fitzpatrick_scale: false, - category: "activity" - }, - "1st_place_medal": { - keywords: [ "award", "winning", "first" ], - "char": '\ud83e\udd47', - fitzpatrick_scale: false, - category: "activity" - }, - "2nd_place_medal": { - keywords: [ "award", "second" ], - "char": '\ud83e\udd48', - fitzpatrick_scale: false, - category: "activity" - }, - "3rd_place_medal": { - keywords: [ "award", "third" ], - "char": '\ud83e\udd49', - fitzpatrick_scale: false, - category: "activity" - }, - reminder_ribbon: { - keywords: [ "sports", "cause", "support", "awareness" ], - "char": '\ud83c\udf97', - fitzpatrick_scale: false, - category: "activity" - }, - rosette: { - keywords: [ "flower", "decoration", "military" ], - "char": '\ud83c\udff5', - fitzpatrick_scale: false, - category: "activity" - }, - ticket: { - keywords: [ "event", "concert", "pass" ], - "char": '\ud83c\udfab', - fitzpatrick_scale: false, - category: "activity" - }, - tickets: { - keywords: [ "sports", "concert", "entrance" ], - "char": '\ud83c\udf9f', - fitzpatrick_scale: false, - category: "activity" - }, - performing_arts: { - keywords: [ "acting", "theater", "drama" ], - "char": '\ud83c\udfad', - fitzpatrick_scale: false, - category: "activity" - }, - art: { - keywords: [ "design", "paint", "draw", "colors" ], - "char": '\ud83c\udfa8', - fitzpatrick_scale: false, - category: "activity" - }, - circus_tent: { - keywords: [ "festival", "carnival", "party" ], - "char": '\ud83c\udfaa', - fitzpatrick_scale: false, - category: "activity" - }, - woman_juggling: { - keywords: [ "juggle", "balance", "skill", "multitask" ], - "char": '\ud83e\udd39\u200d\u2640\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - man_juggling: { - keywords: [ "juggle", "balance", "skill", "multitask" ], - "char": '\ud83e\udd39\u200d\u2642\ufe0f', - fitzpatrick_scale: true, - category: "activity" - }, - microphone: { - keywords: [ "sound", "music", "PA", "sing", "talkshow" ], - "char": '\ud83c\udfa4', - fitzpatrick_scale: false, - category: "activity" - }, - headphones: { - keywords: [ "music", "score", "gadgets" ], - "char": '\ud83c\udfa7', - fitzpatrick_scale: false, - category: "activity" - }, - musical_score: { - keywords: [ "treble", "clef", "compose" ], - "char": '\ud83c\udfbc', - fitzpatrick_scale: false, - category: "activity" - }, - musical_keyboard: { - keywords: [ "piano", "instrument", "compose" ], - "char": '\ud83c\udfb9', - fitzpatrick_scale: false, - category: "activity" - }, - drum: { - keywords: [ "music", "instrument", "drumsticks", "snare" ], - "char": '\ud83e\udd41', - fitzpatrick_scale: false, - category: "activity" - }, - saxophone: { - keywords: [ "music", "instrument", "jazz", "blues" ], - "char": '\ud83c\udfb7', - fitzpatrick_scale: false, - category: "activity" - }, - trumpet: { - keywords: [ "music", "brass" ], - "char": '\ud83c\udfba', - fitzpatrick_scale: false, - category: "activity" - }, - guitar: { - keywords: [ "music", "instrument" ], - "char": '\ud83c\udfb8', - fitzpatrick_scale: false, - category: "activity" - }, - violin: { - keywords: [ "music", "instrument", "orchestra", "symphony" ], - "char": '\ud83c\udfbb', - fitzpatrick_scale: false, - category: "activity" - }, - clapper: { - keywords: [ "movie", "film", "record" ], - "char": '\ud83c\udfac', - fitzpatrick_scale: false, - category: "activity" - }, - video_game: { - keywords: [ "play", "console", "PS4", "controller" ], - "char": '\ud83c\udfae', - fitzpatrick_scale: false, - category: "activity" - }, - space_invader: { - keywords: [ "game", "arcade", "play" ], - "char": '\ud83d\udc7e', - fitzpatrick_scale: false, - category: "activity" - }, - dart: { - keywords: [ "game", "play", "bar", "target", "bullseye" ], - "char": '\ud83c\udfaf', - fitzpatrick_scale: false, - category: "activity" - }, - game_die: { - keywords: [ "dice", "random", "tabletop", "play", "luck" ], - "char": '\ud83c\udfb2', - fitzpatrick_scale: false, - category: "activity" - }, - chess_pawn: { - keywords: [ "expendable" ], - "char": "\u265f", - fitzpatrick_scale: false, - category: "activity" - }, - slot_machine: { - keywords: [ "bet", "gamble", "vegas", "fruit machine", "luck", "casino" ], - "char": '\ud83c\udfb0', - fitzpatrick_scale: false, - category: "activity" - }, - jigsaw: { - keywords: [ "interlocking", "puzzle", "piece" ], - "char": '\ud83e\udde9', - fitzpatrick_scale: false, - category: "activity" - }, - bowling: { - keywords: [ "sports", "fun", "play" ], - "char": '\ud83c\udfb3', - fitzpatrick_scale: false, - category: "activity" - }, - red_car: { - keywords: [ "red", "transportation", "vehicle" ], - "char": '\ud83d\ude97', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - taxi: { - keywords: [ "uber", "vehicle", "cars", "transportation" ], - "char": '\ud83d\ude95', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - blue_car: { - keywords: [ "transportation", "vehicle" ], - "char": '\ud83d\ude99', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bus: { - keywords: [ "car", "vehicle", "transportation" ], - "char": '\ud83d\ude8c', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - trolleybus: { - keywords: [ "bart", "transportation", "vehicle" ], - "char": '\ud83d\ude8e', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - racing_car: { - keywords: [ "sports", "race", "fast", "formula", "f1" ], - "char": '\ud83c\udfce', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - police_car: { - keywords: [ "vehicle", "cars", "transportation", "law", "legal", "enforcement" ], - "char": '\ud83d\ude93', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ambulance: { - keywords: [ "health", "911", "hospital" ], - "char": '\ud83d\ude91', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fire_engine: { - keywords: [ "transportation", "cars", "vehicle" ], - "char": '\ud83d\ude92', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - minibus: { - keywords: [ "vehicle", "car", "transportation" ], - "char": '\ud83d\ude90', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - truck: { - keywords: [ "cars", "transportation" ], - "char": '\ud83d\ude9a', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - articulated_lorry: { - keywords: [ "vehicle", "cars", "transportation", "express" ], - "char": '\ud83d\ude9b', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tractor: { - keywords: [ "vehicle", "car", "farming", "agriculture" ], - "char": '\ud83d\ude9c', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - kick_scooter: { - keywords: [ "vehicle", "kick", "razor" ], - "char": '\ud83d\udef4', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motorcycle: { - keywords: [ "race", "sports", "fast" ], - "char": '\ud83c\udfcd', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bike: { - keywords: [ "sports", "bicycle", "exercise", "hipster" ], - "char": '\ud83d\udeb2', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motor_scooter: { - keywords: [ "vehicle", "vespa", "sasha" ], - "char": '\ud83d\udef5', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rotating_light: { - keywords: [ "police", "ambulance", "911", "emergency", "alert", "error", "pinged", "law", "legal" ], - "char": '\ud83d\udea8', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_police_car: { - keywords: [ "vehicle", "law", "legal", "enforcement", "911" ], - "char": '\ud83d\ude94', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_bus: { - keywords: [ "vehicle", "transportation" ], - "char": '\ud83d\ude8d', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_automobile: { - keywords: [ "car", "vehicle", "transportation" ], - "char": '\ud83d\ude98', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_taxi: { - keywords: [ "vehicle", "cars", "uber" ], - "char": '\ud83d\ude96', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - aerial_tramway: { - keywords: [ "transportation", "vehicle", "ski" ], - "char": '\ud83d\udea1', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain_cableway: { - keywords: [ "transportation", "vehicle", "ski" ], - "char": '\ud83d\udea0', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - suspension_railway: { - keywords: [ "vehicle", "transportation" ], - "char": '\ud83d\ude9f', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - railway_car: { - keywords: [ "transportation", "vehicle" ], - "char": '\ud83d\ude83', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - train: { - keywords: [ "transportation", "vehicle", "carriage", "public", "travel" ], - "char": '\ud83d\ude8b', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - monorail: { - keywords: [ "transportation", "vehicle" ], - "char": '\ud83d\ude9d', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bullettrain_side: { - keywords: [ "transportation", "vehicle" ], - "char": '\ud83d\ude84', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bullettrain_front: { - keywords: [ "transportation", "vehicle", "speed", "fast", "public", "travel" ], - "char": '\ud83d\ude85', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - light_rail: { - keywords: [ "transportation", "vehicle" ], - "char": '\ud83d\ude88', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain_railway: { - keywords: [ "transportation", "vehicle" ], - "char": '\ud83d\ude9e', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - steam_locomotive: { - keywords: [ "transportation", "vehicle", "train" ], - "char": '\ud83d\ude82', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - train2: { - keywords: [ "transportation", "vehicle" ], - "char": '\ud83d\ude86', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - metro: { - keywords: [ "transportation", "blue-square", "mrt", "underground", "tube" ], - "char": '\ud83d\ude87', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tram: { - keywords: [ "transportation", "vehicle" ], - "char": '\ud83d\ude8a', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - station: { - keywords: [ "transportation", "vehicle", "public" ], - "char": '\ud83d\ude89', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - flying_saucer: { - keywords: [ "transportation", "vehicle", "ufo" ], - "char": '\ud83d\udef8', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - helicopter: { - keywords: [ "transportation", "vehicle", "fly" ], - "char": '\ud83d\ude81', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - small_airplane: { - keywords: [ "flight", "transportation", "fly", "vehicle" ], - "char": '\ud83d\udee9', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - airplane: { - keywords: [ "vehicle", "transportation", "flight", "fly" ], - "char": '\u2708\ufe0f', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - flight_departure: { - keywords: [ "airport", "flight", "landing" ], - "char": '\ud83d\udeeb', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - flight_arrival: { - keywords: [ "airport", "flight", "boarding" ], - "char": '\ud83d\udeec', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sailboat: { - keywords: [ "ship", "summer", "transportation", "water", "sailing" ], - "char": '\u26f5', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motor_boat: { - keywords: [ "ship" ], - "char": '\ud83d\udee5', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - speedboat: { - keywords: [ "ship", "transportation", "vehicle", "summer" ], - "char": '\ud83d\udea4', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ferry: { - keywords: [ "boat", "ship", "yacht" ], - "char": '\u26f4', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - passenger_ship: { - keywords: [ "yacht", "cruise", "ferry" ], - "char": '\ud83d\udef3', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rocket: { - keywords: [ "launch", "ship", "staffmode", "NASA", "outer space", "outer_space", "fly" ], - "char": '\ud83d\ude80', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - artificial_satellite: { - keywords: [ "communication", "gps", "orbit", "spaceflight", "NASA", "ISS" ], - "char": '\ud83d\udef0', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - seat: { - keywords: [ "sit", "airplane", "transport", "bus", "flight", "fly" ], - "char": '\ud83d\udcba', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - canoe: { - keywords: [ "boat", "paddle", "water", "ship" ], - "char": '\ud83d\udef6', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - anchor: { - keywords: [ "ship", "ferry", "sea", "boat" ], - "char": '\u2693', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - construction: { - keywords: [ "wip", "progress", "caution", "warning" ], - "char": '\ud83d\udea7', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fuelpump: { - keywords: [ "gas station", "petroleum" ], - "char": '\u26fd', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - busstop: { - keywords: [ "transportation", "wait" ], - "char": '\ud83d\ude8f', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - vertical_traffic_light: { - keywords: [ "transportation", "driving" ], - "char": '\ud83d\udea6', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - traffic_light: { - keywords: [ "transportation", "signal" ], - "char": '\ud83d\udea5', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - checkered_flag: { - keywords: [ "contest", "finishline", "race", "gokart" ], - "char": '\ud83c\udfc1', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ship: { - keywords: [ "transportation", "titanic", "deploy" ], - "char": '\ud83d\udea2', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ferris_wheel: { - keywords: [ "photo", "carnival", "londoneye" ], - "char": '\ud83c\udfa1', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - roller_coaster: { - keywords: [ "carnival", "playground", "photo", "fun" ], - "char": '\ud83c\udfa2', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - carousel_horse: { - keywords: [ "photo", "carnival" ], - "char": '\ud83c\udfa0', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - building_construction: { - keywords: [ "wip", "working", "progress" ], - "char": '\ud83c\udfd7', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - foggy: { - keywords: [ "photo", "mountain" ], - "char": '\ud83c\udf01', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tokyo_tower: { - keywords: [ "photo", "japanese" ], - "char": '\ud83d\uddfc', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - factory: { - keywords: [ "building", "industry", "pollution", "smoke" ], - "char": '\ud83c\udfed', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fountain: { - keywords: [ "photo", "summer", "water", "fresh" ], - "char": '\u26f2', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rice_scene: { - keywords: [ "photo", "japan", "asia", "tsukimi" ], - "char": '\ud83c\udf91', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain: { - keywords: [ "photo", "nature", "environment" ], - "char": '\u26f0', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain_snow: { - keywords: [ "photo", "nature", "environment", "winter", "cold" ], - "char": '\ud83c\udfd4', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mount_fuji: { - keywords: [ "photo", "mountain", "nature", "japanese" ], - "char": '\ud83d\uddfb', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - volcano: { - keywords: [ "photo", "nature", "disaster" ], - "char": '\ud83c\udf0b', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - japan: { - keywords: [ "nation", "country", "japanese", "asia" ], - "char": '\ud83d\uddfe', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - camping: { - keywords: [ "photo", "outdoors", "tent" ], - "char": '\ud83c\udfd5', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tent: { - keywords: [ "photo", "camping", "outdoors" ], - "char": '\u26fa', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - national_park: { - keywords: [ "photo", "environment", "nature" ], - "char": '\ud83c\udfde', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motorway: { - keywords: [ "road", "cupertino", "interstate", "highway" ], - "char": '\ud83d\udee3', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - railway_track: { - keywords: [ "train", "transportation" ], - "char": '\ud83d\udee4', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sunrise: { - keywords: [ "morning", "view", "vacation", "photo" ], - "char": '\ud83c\udf05', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sunrise_over_mountains: { - keywords: [ "view", "vacation", "photo" ], - "char": '\ud83c\udf04', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - desert: { - keywords: [ "photo", "warm", "saharah" ], - "char": '\ud83c\udfdc', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - beach_umbrella: { - keywords: [ "weather", "summer", "sunny", "sand", "mojito" ], - "char": '\ud83c\udfd6', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - desert_island: { - keywords: [ "photo", "tropical", "mojito" ], - "char": '\ud83c\udfdd', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - city_sunrise: { - keywords: [ "photo", "good morning", "dawn" ], - "char": '\ud83c\udf07', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - city_sunset: { - keywords: [ "photo", "evening", "sky", "buildings" ], - "char": '\ud83c\udf06', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - cityscape: { - keywords: [ "photo", "night life", "urban" ], - "char": '\ud83c\udfd9', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - night_with_stars: { - keywords: [ "evening", "city", "downtown" ], - "char": '\ud83c\udf03', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bridge_at_night: { - keywords: [ "photo", "sanfrancisco" ], - "char": '\ud83c\udf09', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - milky_way: { - keywords: [ "photo", "space", "stars" ], - "char": '\ud83c\udf0c', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - stars: { - keywords: [ "night", "photo" ], - "char": '\ud83c\udf20', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sparkler: { - keywords: [ "stars", "night", "shine" ], - "char": '\ud83c\udf87', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fireworks: { - keywords: [ "photo", "festival", "carnival", "congratulations" ], - "char": '\ud83c\udf86', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rainbow: { - keywords: [ "nature", "happy", "unicorn_face", "photo", "sky", "spring" ], - "char": '\ud83c\udf08', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - houses: { - keywords: [ "buildings", "photo" ], - "char": '\ud83c\udfd8', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - european_castle: { - keywords: [ "building", "royalty", "history" ], - "char": '\ud83c\udff0', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - japanese_castle: { - keywords: [ "photo", "building" ], - "char": '\ud83c\udfef', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - stadium: { - keywords: [ "photo", "place", "sports", "concert", "venue" ], - "char": '\ud83c\udfdf', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - statue_of_liberty: { - keywords: [ "american", "newyork" ], - "char": '\ud83d\uddfd', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - house: { - keywords: [ "building", "home" ], - "char": '\ud83c\udfe0', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - house_with_garden: { - keywords: [ "home", "plant", "nature" ], - "char": '\ud83c\udfe1', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - derelict_house: { - keywords: [ "abandon", "evict", "broken", "building" ], - "char": '\ud83c\udfda', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - office: { - keywords: [ "building", "bureau", "work" ], - "char": '\ud83c\udfe2', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - department_store: { - keywords: [ "building", "shopping", "mall" ], - "char": '\ud83c\udfec', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - post_office: { - keywords: [ "building", "envelope", "communication" ], - "char": '\ud83c\udfe3', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - european_post_office: { - keywords: [ "building", "email" ], - "char": '\ud83c\udfe4', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - hospital: { - keywords: [ "building", "health", "surgery", "doctor" ], - "char": '\ud83c\udfe5', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bank: { - keywords: [ "building", "money", "sales", "cash", "business", "enterprise" ], - "char": '\ud83c\udfe6', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - hotel: { - keywords: [ "building", "accomodation", "checkin" ], - "char": '\ud83c\udfe8', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - convenience_store: { - keywords: [ "building", "shopping", "groceries" ], - "char": '\ud83c\udfea', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - school: { - keywords: [ "building", "student", "education", "learn", "teach" ], - "char": '\ud83c\udfeb', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - love_hotel: { - keywords: [ "like", "affection", "dating" ], - "char": '\ud83c\udfe9', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - wedding: { - keywords: [ "love", "like", "affection", "couple", "marriage", "bride", "groom" ], - "char": '\ud83d\udc92', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - classical_building: { - keywords: [ "art", "culture", "history" ], - "char": '\ud83c\udfdb', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - church: { - keywords: [ "building", "religion", "christ" ], - "char": '\u26ea', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mosque: { - keywords: [ "islam", "worship", "minaret" ], - "char": '\ud83d\udd4c', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - synagogue: { - keywords: [ "judaism", "worship", "temple", "jewish" ], - "char": '\ud83d\udd4d', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - kaaba: { - keywords: [ "mecca", "mosque", "islam" ], - "char": '\ud83d\udd4b', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - shinto_shrine: { - keywords: [ "temple", "japan", "kyoto" ], - "char": '\u26e9', - fitzpatrick_scale: false, - category: "travel_and_places" - }, - watch: { - keywords: [ "time", "accessories" ], - "char": '\u231a', - fitzpatrick_scale: false, - category: "objects" - }, - iphone: { - keywords: [ "technology", "apple", "gadgets", "dial" ], - "char": '\ud83d\udcf1', - fitzpatrick_scale: false, - category: "objects" - }, - calling: { - keywords: [ "iphone", "incoming" ], - "char": '\ud83d\udcf2', - fitzpatrick_scale: false, - category: "objects" - }, - computer: { - keywords: [ "technology", "laptop", "screen", "display", "monitor" ], - "char": '\ud83d\udcbb', - fitzpatrick_scale: false, - category: "objects" - }, - keyboard: { - keywords: [ "technology", "computer", "type", "input", "text" ], - "char": '\u2328', - fitzpatrick_scale: false, - category: "objects" - }, - desktop_computer: { - keywords: [ "technology", "computing", "screen" ], - "char": '\ud83d\udda5', - fitzpatrick_scale: false, - category: "objects" - }, - printer: { - keywords: [ "paper", "ink" ], - "char": '\ud83d\udda8', - fitzpatrick_scale: false, - category: "objects" - }, - computer_mouse: { - keywords: [ "click" ], - "char": '\ud83d\uddb1', - fitzpatrick_scale: false, - category: "objects" - }, - trackball: { - keywords: [ "technology", "trackpad" ], - "char": '\ud83d\uddb2', - fitzpatrick_scale: false, - category: "objects" - }, - joystick: { - keywords: [ "game", "play" ], - "char": '\ud83d\udd79', - fitzpatrick_scale: false, - category: "objects" - }, - clamp: { - keywords: [ "tool" ], - "char": '\ud83d\udddc', - fitzpatrick_scale: false, - category: "objects" - }, - minidisc: { - keywords: [ "technology", "record", "data", "disk", "90s" ], - "char": '\ud83d\udcbd', - fitzpatrick_scale: false, - category: "objects" - }, - floppy_disk: { - keywords: [ "oldschool", "technology", "save", "90s", "80s" ], - "char": '\ud83d\udcbe', - fitzpatrick_scale: false, - category: "objects" - }, - cd: { - keywords: [ "technology", "dvd", "disk", "disc", "90s" ], - "char": '\ud83d\udcbf', - fitzpatrick_scale: false, - category: "objects" - }, - dvd: { - keywords: [ "cd", "disk", "disc" ], - "char": '\ud83d\udcc0', - fitzpatrick_scale: false, - category: "objects" - }, - vhs: { - keywords: [ "record", "video", "oldschool", "90s", "80s" ], - "char": '\ud83d\udcfc', - fitzpatrick_scale: false, - category: "objects" - }, - camera: { - keywords: [ "gadgets", "photography" ], - "char": '\ud83d\udcf7', - fitzpatrick_scale: false, - category: "objects" - }, - camera_flash: { - keywords: [ "photography", "gadgets" ], - "char": '\ud83d\udcf8', - fitzpatrick_scale: false, - category: "objects" - }, - video_camera: { - keywords: [ "film", "record" ], - "char": '\ud83d\udcf9', - fitzpatrick_scale: false, - category: "objects" - }, - movie_camera: { - keywords: [ "film", "record" ], - "char": '\ud83c\udfa5', - fitzpatrick_scale: false, - category: "objects" - }, - film_projector: { - keywords: [ "video", "tape", "record", "movie" ], - "char": '\ud83d\udcfd', - fitzpatrick_scale: false, - category: "objects" - }, - film_strip: { - keywords: [ "movie" ], - "char": '\ud83c\udf9e', - fitzpatrick_scale: false, - category: "objects" - }, - telephone_receiver: { - keywords: [ "technology", "communication", "dial" ], - "char": '\ud83d\udcde', - fitzpatrick_scale: false, - category: "objects" - }, - phone: { - keywords: [ "technology", "communication", "dial", "telephone" ], - "char": '\u260e\ufe0f', - fitzpatrick_scale: false, - category: "objects" - }, - pager: { - keywords: [ "bbcall", "oldschool", "90s" ], - "char": '\ud83d\udcdf', - fitzpatrick_scale: false, - category: "objects" - }, - fax: { - keywords: [ "communication", "technology" ], - "char": '\ud83d\udce0', - fitzpatrick_scale: false, - category: "objects" - }, - tv: { - keywords: [ "technology", "program", "oldschool", "show", "television" ], - "char": '\ud83d\udcfa', - fitzpatrick_scale: false, - category: "objects" - }, - radio: { - keywords: [ "communication", "music", "podcast", "program" ], - "char": '\ud83d\udcfb', - fitzpatrick_scale: false, - category: "objects" - }, - studio_microphone: { - keywords: [ "sing", "recording", "artist", "talkshow" ], - "char": '\ud83c\udf99', - fitzpatrick_scale: false, - category: "objects" - }, - level_slider: { - keywords: [ "scale" ], - "char": '\ud83c\udf9a', - fitzpatrick_scale: false, - category: "objects" - }, - control_knobs: { - keywords: [ "dial" ], - "char": '\ud83c\udf9b', - fitzpatrick_scale: false, - category: "objects" - }, - compass: { - keywords: [ "magnetic", "navigation", "orienteering" ], - "char": '\ud83e\udded', - fitzpatrick_scale: false, - category: "objects" - }, - stopwatch: { - keywords: [ "time", "deadline" ], - "char": '\u23f1', - fitzpatrick_scale: false, - category: "objects" - }, - timer_clock: { - keywords: [ "alarm" ], - "char": '\u23f2', - fitzpatrick_scale: false, - category: "objects" - }, - alarm_clock: { - keywords: [ "time", "wake" ], - "char": '\u23f0', - fitzpatrick_scale: false, - category: "objects" - }, - mantelpiece_clock: { - keywords: [ "time" ], - "char": '\ud83d\udd70', - fitzpatrick_scale: false, - category: "objects" - }, - hourglass_flowing_sand: { - keywords: [ "oldschool", "time", "countdown" ], - "char": '\u23f3', - fitzpatrick_scale: false, - category: "objects" - }, - hourglass: { - keywords: [ "time", "clock", "oldschool", "limit", "exam", "quiz", "test" ], - "char": '\u231b', - fitzpatrick_scale: false, - category: "objects" - }, - satellite: { - keywords: [ "communication", "future", "radio", "space" ], - "char": '\ud83d\udce1', - fitzpatrick_scale: false, - category: "objects" - }, - battery: { - keywords: [ "power", "energy", "sustain" ], - "char": '\ud83d\udd0b', - fitzpatrick_scale: false, - category: "objects" - }, - electric_plug: { - keywords: [ "charger", "power" ], - "char": '\ud83d\udd0c', - fitzpatrick_scale: false, - category: "objects" - }, - bulb: { - keywords: [ "light", "electricity", "idea" ], - "char": '\ud83d\udca1', - fitzpatrick_scale: false, - category: "objects" - }, - flashlight: { - keywords: [ "dark", "camping", "sight", "night" ], - "char": '\ud83d\udd26', - fitzpatrick_scale: false, - category: "objects" - }, - candle: { - keywords: [ "fire", "wax" ], - "char": '\ud83d\udd6f', - fitzpatrick_scale: false, - category: "objects" - }, - fire_extinguisher: { - keywords: [ "quench" ], - "char": '\ud83e\uddef', - fitzpatrick_scale: false, - category: "objects" - }, - wastebasket: { - keywords: [ "bin", "trash", "rubbish", "garbage", "toss" ], - "char": '\ud83d\uddd1', - fitzpatrick_scale: false, - category: "objects" - }, - oil_drum: { - keywords: [ "barrell" ], - "char": '\ud83d\udee2', - fitzpatrick_scale: false, - category: "objects" - }, - money_with_wings: { - keywords: [ "dollar", "bills", "payment", "sale" ], - "char": '\ud83d\udcb8', - fitzpatrick_scale: false, - category: "objects" - }, - dollar: { - keywords: [ "money", "sales", "bill", "currency" ], - "char": '\ud83d\udcb5', - fitzpatrick_scale: false, - category: "objects" - }, - yen: { - keywords: [ "money", "sales", "japanese", "dollar", "currency" ], - "char": '\ud83d\udcb4', - fitzpatrick_scale: false, - category: "objects" - }, - euro: { - keywords: [ "money", "sales", "dollar", "currency" ], - "char": '\ud83d\udcb6', - fitzpatrick_scale: false, - category: "objects" - }, - pound: { - keywords: [ "british", "sterling", "money", "sales", "bills", "uk", "england", "currency" ], - "char": '\ud83d\udcb7', - fitzpatrick_scale: false, - category: "objects" - }, - moneybag: { - keywords: [ "dollar", "payment", "coins", "sale" ], - "char": '\ud83d\udcb0', - fitzpatrick_scale: false, - category: "objects" - }, - credit_card: { - keywords: [ "money", "sales", "dollar", "bill", "payment", "shopping" ], - "char": '\ud83d\udcb3', - fitzpatrick_scale: false, - category: "objects" - }, - gem: { - keywords: [ "blue", "ruby", "diamond", "jewelry" ], - "char": '\ud83d\udc8e', - fitzpatrick_scale: false, - category: "objects" - }, - balance_scale: { - keywords: [ "law", "fairness", "weight" ], - "char": '\u2696', - fitzpatrick_scale: false, - category: "objects" - }, - toolbox: { - keywords: [ "tools", "diy", "fix", "maintainer", "mechanic" ], - "char": '\ud83e\uddf0', - fitzpatrick_scale: false, - category: "objects" - }, - wrench: { - keywords: [ "tools", "diy", "ikea", "fix", "maintainer" ], - "char": '\ud83d\udd27', - fitzpatrick_scale: false, - category: "objects" - }, - hammer: { - keywords: [ "tools", "build", "create" ], - "char": '\ud83d\udd28', - fitzpatrick_scale: false, - category: "objects" - }, - hammer_and_pick: { - keywords: [ "tools", "build", "create" ], - "char": '\u2692', - fitzpatrick_scale: false, - category: "objects" - }, - hammer_and_wrench: { - keywords: [ "tools", "build", "create" ], - "char": '\ud83d\udee0', - fitzpatrick_scale: false, - category: "objects" - }, - pick: { - keywords: [ "tools", "dig" ], - "char": '\u26cf', - fitzpatrick_scale: false, - category: "objects" - }, - nut_and_bolt: { - keywords: [ "handy", "tools", "fix" ], - "char": '\ud83d\udd29', - fitzpatrick_scale: false, - category: "objects" - }, - gear: { - keywords: [ "cog" ], - "char": '\u2699', - fitzpatrick_scale: false, - category: "objects" - }, - brick: { - keywords: [ "bricks" ], - "char": '\ud83e\uddf1', - fitzpatrick_scale: false, - category: "objects" - }, - chains: { - keywords: [ "lock", "arrest" ], - "char": '\u26d3', - fitzpatrick_scale: false, - category: "objects" - }, - magnet: { - keywords: [ "attraction", "magnetic" ], - "char": '\ud83e\uddf2', - fitzpatrick_scale: false, - category: "objects" - }, - gun: { - keywords: [ "violence", "weapon", "pistol", "revolver" ], - "char": '\ud83d\udd2b', - fitzpatrick_scale: false, - category: "objects" - }, - bomb: { - keywords: [ "boom", "explode", "explosion", "terrorism" ], - "char": '\ud83d\udca3', - fitzpatrick_scale: false, - category: "objects" - }, - firecracker: { - keywords: [ "dynamite", "boom", "explode", "explosion", "explosive" ], - "char": '\ud83e\udde8', - fitzpatrick_scale: false, - category: "objects" - }, - hocho: { - keywords: [ "knife", "blade", "cutlery", "kitchen", "weapon" ], - "char": '\ud83d\udd2a', - fitzpatrick_scale: false, - category: "objects" - }, - dagger: { - keywords: [ "weapon" ], - "char": '\ud83d\udde1', - fitzpatrick_scale: false, - category: "objects" - }, - crossed_swords: { - keywords: [ "weapon" ], - "char": '\u2694', - fitzpatrick_scale: false, - category: "objects" - }, - shield: { - keywords: [ "protection", "security" ], - "char": '\ud83d\udee1', - fitzpatrick_scale: false, - category: "objects" - }, - smoking: { - keywords: [ "kills", "tobacco", "cigarette", "joint", "smoke" ], - "char": '\ud83d\udeac', - fitzpatrick_scale: false, - category: "objects" - }, - skull_and_crossbones: { - keywords: [ "poison", "danger", "deadly", "scary", "death", "pirate", "evil" ], - "char": '\u2620', - fitzpatrick_scale: false, - category: "objects" - }, - coffin: { - keywords: [ "vampire", "dead", "die", "death", "rip", "graveyard", "cemetery", "casket", "funeral", "box" ], - "char": '\u26b0', - fitzpatrick_scale: false, - category: "objects" - }, - funeral_urn: { - keywords: [ "dead", "die", "death", "rip", "ashes" ], - "char": '\u26b1', - fitzpatrick_scale: false, - category: "objects" - }, - amphora: { - keywords: [ "vase", "jar" ], - "char": '\ud83c\udffa', - fitzpatrick_scale: false, - category: "objects" - }, - crystal_ball: { - keywords: [ "disco", "party", "magic", "circus", "fortune_teller" ], - "char": '\ud83d\udd2e', - fitzpatrick_scale: false, - category: "objects" - }, - prayer_beads: { - keywords: [ "dhikr", "religious" ], - "char": '\ud83d\udcff', - fitzpatrick_scale: false, - category: "objects" - }, - nazar_amulet: { - keywords: [ "bead", "charm" ], - "char": '\ud83e\uddff', - fitzpatrick_scale: false, - category: "objects" - }, - barber: { - keywords: [ "hair", "salon", "style" ], - "char": '\ud83d\udc88', - fitzpatrick_scale: false, - category: "objects" - }, - alembic: { - keywords: [ "distilling", "science", "experiment", "chemistry" ], - "char": '\u2697', - fitzpatrick_scale: false, - category: "objects" - }, - telescope: { - keywords: [ "stars", "space", "zoom", "science", "astronomy" ], - "char": '\ud83d\udd2d', - fitzpatrick_scale: false, - category: "objects" - }, - microscope: { - keywords: [ "laboratory", "experiment", "zoomin", "science", "study" ], - "char": '\ud83d\udd2c', - fitzpatrick_scale: false, - category: "objects" - }, - hole: { - keywords: [ "embarrassing" ], - "char": '\ud83d\udd73', - fitzpatrick_scale: false, - category: "objects" - }, - pill: { - keywords: [ "health", "medicine", "doctor", "pharmacy", "drug" ], - "char": '\ud83d\udc8a', - fitzpatrick_scale: false, - category: "objects" - }, - syringe: { - keywords: [ "health", "hospital", "drugs", "blood", "medicine", "needle", "doctor", "nurse" ], - "char": '\ud83d\udc89', - fitzpatrick_scale: false, - category: "objects" - }, - dna: { - keywords: [ "biologist", "genetics", "life" ], - "char": '\ud83e\uddec', - fitzpatrick_scale: false, - category: "objects" - }, - microbe: { - keywords: [ "amoeba", "bacteria", "germs" ], - "char": '\ud83e\udda0', - fitzpatrick_scale: false, - category: "objects" - }, - petri_dish: { - keywords: [ "bacteria", "biology", "culture", "lab" ], - "char": '\ud83e\uddeb', - fitzpatrick_scale: false, - category: "objects" - }, - test_tube: { - keywords: [ "chemistry", "experiment", "lab", "science" ], - "char": '\ud83e\uddea', - fitzpatrick_scale: false, - category: "objects" - }, - thermometer: { - keywords: [ "weather", "temperature", "hot", "cold" ], - "char": '\ud83c\udf21', - fitzpatrick_scale: false, - category: "objects" - }, - broom: { - keywords: [ "cleaning", "sweeping", "witch" ], - "char": '\ud83e\uddf9', - fitzpatrick_scale: false, - category: "objects" - }, - basket: { - keywords: [ "laundry" ], - "char": '\ud83e\uddfa', - fitzpatrick_scale: false, - category: "objects" - }, - toilet_paper: { - keywords: [ "roll" ], - "char": '\ud83e\uddfb', - fitzpatrick_scale: false, - category: "objects" - }, - label: { - keywords: [ "sale", "tag" ], - "char": '\ud83c\udff7', - fitzpatrick_scale: false, - category: "objects" - }, - bookmark: { - keywords: [ "favorite", "label", "save" ], - "char": '\ud83d\udd16', - fitzpatrick_scale: false, - category: "objects" - }, - toilet: { - keywords: [ "restroom", "wc", "washroom", "bathroom", "potty" ], - "char": '\ud83d\udebd', - fitzpatrick_scale: false, - category: "objects" - }, - shower: { - keywords: [ "clean", "water", "bathroom" ], - "char": '\ud83d\udebf', - fitzpatrick_scale: false, - category: "objects" - }, - bathtub: { - keywords: [ "clean", "shower", "bathroom" ], - "char": '\ud83d\udec1', - fitzpatrick_scale: false, - category: "objects" - }, - soap: { - keywords: [ "bar", "bathing", "cleaning", "lather" ], - "char": '\ud83e\uddfc', - fitzpatrick_scale: false, - category: "objects" - }, - sponge: { - keywords: [ "absorbing", "cleaning", "porous" ], - "char": '\ud83e\uddfd', - fitzpatrick_scale: false, - category: "objects" - }, - lotion_bottle: { - keywords: [ "moisturizer", "sunscreen" ], - "char": '\ud83e\uddf4', - fitzpatrick_scale: false, - category: "objects" - }, - key: { - keywords: [ "lock", "door", "password" ], - "char": '\ud83d\udd11', - fitzpatrick_scale: false, - category: "objects" - }, - old_key: { - keywords: [ "lock", "door", "password" ], - "char": '\ud83d\udddd', - fitzpatrick_scale: false, - category: "objects" - }, - couch_and_lamp: { - keywords: [ "read", "chill" ], - "char": '\ud83d\udecb', - fitzpatrick_scale: false, - category: "objects" - }, - sleeping_bed: { - keywords: [ "bed", "rest" ], - "char": '\ud83d\udecc', - fitzpatrick_scale: true, - category: "objects" - }, - bed: { - keywords: [ "sleep", "rest" ], - "char": '\ud83d\udecf', - fitzpatrick_scale: false, - category: "objects" - }, - door: { - keywords: [ "house", "entry", "exit" ], - "char": '\ud83d\udeaa', - fitzpatrick_scale: false, - category: "objects" - }, - bellhop_bell: { - keywords: [ "service" ], - "char": '\ud83d\udece', - fitzpatrick_scale: false, - category: "objects" - }, - teddy_bear: { - keywords: [ "plush", "stuffed" ], - "char": '\ud83e\uddf8', - fitzpatrick_scale: false, - category: "objects" - }, - framed_picture: { - keywords: [ "photography" ], - "char": '\ud83d\uddbc', - fitzpatrick_scale: false, - category: "objects" - }, - world_map: { - keywords: [ "location", "direction" ], - "char": '\ud83d\uddfa', - fitzpatrick_scale: false, - category: "objects" - }, - parasol_on_ground: { - keywords: [ "weather", "summer" ], - "char": '\u26f1', - fitzpatrick_scale: false, - category: "objects" - }, - moyai: { - keywords: [ "rock", "easter island", "moai" ], - "char": '\ud83d\uddff', - fitzpatrick_scale: false, - category: "objects" - }, - shopping: { - keywords: [ "mall", "buy", "purchase" ], - "char": '\ud83d\udecd', - fitzpatrick_scale: false, - category: "objects" - }, - shopping_cart: { - keywords: [ "trolley" ], - "char": '\ud83d\uded2', - fitzpatrick_scale: false, - category: "objects" - }, - balloon: { - keywords: [ "party", "celebration", "birthday", "circus" ], - "char": '\ud83c\udf88', - fitzpatrick_scale: false, - category: "objects" - }, - flags: { - keywords: [ "fish", "japanese", "koinobori", "carp", "banner" ], - "char": '\ud83c\udf8f', - fitzpatrick_scale: false, - category: "objects" - }, - ribbon: { - keywords: [ "decoration", "pink", "girl", "bowtie" ], - "char": '\ud83c\udf80', - fitzpatrick_scale: false, - category: "objects" - }, - gift: { - keywords: [ "present", "birthday", "christmas", "xmas" ], - "char": '\ud83c\udf81', - fitzpatrick_scale: false, - category: "objects" - }, - confetti_ball: { - keywords: [ "festival", "party", "birthday", "circus" ], - "char": '\ud83c\udf8a', - fitzpatrick_scale: false, - category: "objects" - }, - tada: { - keywords: [ "party", "congratulations", "birthday", "magic", "circus", "celebration" ], - "char": '\ud83c\udf89', - fitzpatrick_scale: false, - category: "objects" - }, - dolls: { - keywords: [ "japanese", "toy", "kimono" ], - "char": '\ud83c\udf8e', - fitzpatrick_scale: false, - category: "objects" - }, - wind_chime: { - keywords: [ "nature", "ding", "spring", "bell" ], - "char": '\ud83c\udf90', - fitzpatrick_scale: false, - category: "objects" - }, - crossed_flags: { - keywords: [ "japanese", "nation", "country", "border" ], - "char": '\ud83c\udf8c', - fitzpatrick_scale: false, - category: "objects" - }, - izakaya_lantern: { - keywords: [ "light", "paper", "halloween", "spooky" ], - "char": '\ud83c\udfee', - fitzpatrick_scale: false, - category: "objects" - }, - red_envelope: { - keywords: [ "gift" ], - "char": '\ud83e\udde7', - fitzpatrick_scale: false, - category: "objects" - }, - email: { - keywords: [ "letter", "postal", "inbox", "communication" ], - "char": '\u2709\ufe0f', - fitzpatrick_scale: false, - category: "objects" - }, - envelope_with_arrow: { - keywords: [ "email", "communication" ], - "char": '\ud83d\udce9', - fitzpatrick_scale: false, - category: "objects" - }, - incoming_envelope: { - keywords: [ "email", "inbox" ], - "char": '\ud83d\udce8', - fitzpatrick_scale: false, - category: "objects" - }, - "e-mail": { - keywords: [ "communication", "inbox" ], - "char": '\ud83d\udce7', - fitzpatrick_scale: false, - category: "objects" - }, - love_letter: { - keywords: [ "email", "like", "affection", "envelope", "valentines" ], - "char": '\ud83d\udc8c', - fitzpatrick_scale: false, - category: "objects" - }, - postbox: { - keywords: [ "email", "letter", "envelope" ], - "char": '\ud83d\udcee', - fitzpatrick_scale: false, - category: "objects" - }, - mailbox_closed: { - keywords: [ "email", "communication", "inbox" ], - "char": '\ud83d\udcea', - fitzpatrick_scale: false, - category: "objects" - }, - mailbox: { - keywords: [ "email", "inbox", "communication" ], - "char": '\ud83d\udceb', - fitzpatrick_scale: false, - category: "objects" - }, - mailbox_with_mail: { - keywords: [ "email", "inbox", "communication" ], - "char": '\ud83d\udcec', - fitzpatrick_scale: false, - category: "objects" - }, - mailbox_with_no_mail: { - keywords: [ "email", "inbox" ], - "char": '\ud83d\udced', - fitzpatrick_scale: false, - category: "objects" - }, - "package": { - keywords: [ "mail", "gift", "cardboard", "box", "moving" ], - "char": '\ud83d\udce6', - fitzpatrick_scale: false, - category: "objects" - }, - postal_horn: { - keywords: [ "instrument", "music" ], - "char": '\ud83d\udcef', - fitzpatrick_scale: false, - category: "objects" - }, - inbox_tray: { - keywords: [ "email", "documents" ], - "char": '\ud83d\udce5', - fitzpatrick_scale: false, - category: "objects" - }, - outbox_tray: { - keywords: [ "inbox", "email" ], - "char": '\ud83d\udce4', - fitzpatrick_scale: false, - category: "objects" - }, - scroll: { - keywords: [ "documents", "ancient", "history", "paper" ], - "char": '\ud83d\udcdc', - fitzpatrick_scale: false, - category: "objects" - }, - page_with_curl: { - keywords: [ "documents", "office", "paper" ], - "char": '\ud83d\udcc3', - fitzpatrick_scale: false, - category: "objects" - }, - bookmark_tabs: { - keywords: [ "favorite", "save", "order", "tidy" ], - "char": '\ud83d\udcd1', - fitzpatrick_scale: false, - category: "objects" - }, - receipt: { - keywords: [ "accounting", "expenses" ], - "char": '\ud83e\uddfe', - fitzpatrick_scale: false, - category: "objects" - }, - bar_chart: { - keywords: [ "graph", "presentation", "stats" ], - "char": '\ud83d\udcca', - fitzpatrick_scale: false, - category: "objects" - }, - chart_with_upwards_trend: { - keywords: [ "graph", "presentation", "stats", "recovery", "business", "economics", "money", "sales", "good", "success" ], - "char": '\ud83d\udcc8', - fitzpatrick_scale: false, - category: "objects" - }, - chart_with_downwards_trend: { - keywords: [ "graph", "presentation", "stats", "recession", "business", "economics", "money", "sales", "bad", "failure" ], - "char": '\ud83d\udcc9', - fitzpatrick_scale: false, - category: "objects" - }, - page_facing_up: { - keywords: [ "documents", "office", "paper", "information" ], - "char": '\ud83d\udcc4', - fitzpatrick_scale: false, - category: "objects" - }, - date: { - keywords: [ "calendar", "schedule" ], - "char": '\ud83d\udcc5', - fitzpatrick_scale: false, - category: "objects" - }, - calendar: { - keywords: [ "schedule", "date", "planning" ], - "char": '\ud83d\udcc6', - fitzpatrick_scale: false, - category: "objects" - }, - spiral_calendar: { - keywords: [ "date", "schedule", "planning" ], - "char": '\ud83d\uddd3', - fitzpatrick_scale: false, - category: "objects" - }, - card_index: { - keywords: [ "business", "stationery" ], - "char": '\ud83d\udcc7', - fitzpatrick_scale: false, - category: "objects" - }, - card_file_box: { - keywords: [ "business", "stationery" ], - "char": '\ud83d\uddc3', - fitzpatrick_scale: false, - category: "objects" - }, - ballot_box: { - keywords: [ "election", "vote" ], - "char": '\ud83d\uddf3', - fitzpatrick_scale: false, - category: "objects" - }, - file_cabinet: { - keywords: [ "filing", "organizing" ], - "char": '\ud83d\uddc4', - fitzpatrick_scale: false, - category: "objects" - }, - clipboard: { - keywords: [ "stationery", "documents" ], - "char": '\ud83d\udccb', - fitzpatrick_scale: false, - category: "objects" - }, - spiral_notepad: { - keywords: [ "memo", "stationery" ], - "char": '\ud83d\uddd2', - fitzpatrick_scale: false, - category: "objects" - }, - file_folder: { - keywords: [ "documents", "business", "office" ], - "char": '\ud83d\udcc1', - fitzpatrick_scale: false, - category: "objects" - }, - open_file_folder: { - keywords: [ "documents", "load" ], - "char": '\ud83d\udcc2', - fitzpatrick_scale: false, - category: "objects" - }, - card_index_dividers: { - keywords: [ "organizing", "business", "stationery" ], - "char": '\ud83d\uddc2', - fitzpatrick_scale: false, - category: "objects" - }, - newspaper_roll: { - keywords: [ "press", "headline" ], - "char": '\ud83d\uddde', - fitzpatrick_scale: false, - category: "objects" - }, - newspaper: { - keywords: [ "press", "headline" ], - "char": '\ud83d\udcf0', - fitzpatrick_scale: false, - category: "objects" - }, - notebook: { - keywords: [ "stationery", "record", "notes", "paper", "study" ], - "char": '\ud83d\udcd3', - fitzpatrick_scale: false, - category: "objects" - }, - closed_book: { - keywords: [ "read", "library", "knowledge", "textbook", "learn" ], - "char": '\ud83d\udcd5', - fitzpatrick_scale: false, - category: "objects" - }, - green_book: { - keywords: [ "read", "library", "knowledge", "study" ], - "char": '\ud83d\udcd7', - fitzpatrick_scale: false, - category: "objects" - }, - blue_book: { - keywords: [ "read", "library", "knowledge", "learn", "study" ], - "char": '\ud83d\udcd8', - fitzpatrick_scale: false, - category: "objects" - }, - orange_book: { - keywords: [ "read", "library", "knowledge", "textbook", "study" ], - "char": '\ud83d\udcd9', - fitzpatrick_scale: false, - category: "objects" - }, - notebook_with_decorative_cover: { - keywords: [ "classroom", "notes", "record", "paper", "study" ], - "char": '\ud83d\udcd4', - fitzpatrick_scale: false, - category: "objects" - }, - ledger: { - keywords: [ "notes", "paper" ], - "char": '\ud83d\udcd2', - fitzpatrick_scale: false, - category: "objects" - }, - books: { - keywords: [ "literature", "library", "study" ], - "char": '\ud83d\udcda', - fitzpatrick_scale: false, - category: "objects" - }, - open_book: { - keywords: [ "book", "read", "library", "knowledge", "literature", "learn", "study" ], - "char": '\ud83d\udcd6', - fitzpatrick_scale: false, - category: "objects" - }, - safety_pin: { - keywords: [ "diaper" ], - "char": '\ud83e\uddf7', - fitzpatrick_scale: false, - category: "objects" - }, - link: { - keywords: [ "rings", "url" ], - "char": '\ud83d\udd17', - fitzpatrick_scale: false, - category: "objects" - }, - paperclip: { - keywords: [ "documents", "stationery" ], - "char": '\ud83d\udcce', - fitzpatrick_scale: false, - category: "objects" - }, - paperclips: { - keywords: [ "documents", "stationery" ], - "char": '\ud83d\udd87', - fitzpatrick_scale: false, - category: "objects" - }, - scissors: { - keywords: [ "stationery", "cut" ], - "char": '\u2702\ufe0f', - fitzpatrick_scale: false, - category: "objects" - }, - triangular_ruler: { - keywords: [ "stationery", "math", "architect", "sketch" ], - "char": '\ud83d\udcd0', - fitzpatrick_scale: false, - category: "objects" - }, - straight_ruler: { - keywords: [ "stationery", "calculate", "length", "math", "school", "drawing", "architect", "sketch" ], - "char": '\ud83d\udccf', - fitzpatrick_scale: false, - category: "objects" - }, - abacus: { - keywords: [ "calculation" ], - "char": '\ud83e\uddee', - fitzpatrick_scale: false, - category: "objects" - }, - pushpin: { - keywords: [ "stationery", "mark", "here" ], - "char": '\ud83d\udccc', - fitzpatrick_scale: false, - category: "objects" - }, - round_pushpin: { - keywords: [ "stationery", "location", "map", "here" ], - "char": '\ud83d\udccd', - fitzpatrick_scale: false, - category: "objects" - }, - triangular_flag_on_post: { - keywords: [ "mark", "milestone", "place" ], - "char": '\ud83d\udea9', - fitzpatrick_scale: false, - category: "objects" - }, - white_flag: { - keywords: [ "losing", "loser", "lost", "surrender", "give up", "fail" ], - "char": '\ud83c\udff3', - fitzpatrick_scale: false, - category: "objects" - }, - black_flag: { - keywords: [ "pirate" ], - "char": '\ud83c\udff4', - fitzpatrick_scale: false, - category: "objects" - }, - rainbow_flag: { - keywords: [ "flag", "rainbow", "pride", "gay", "lgbt", "glbt", "queer", "homosexual", "lesbian", "bisexual", "transgender" ], - "char": '\ud83c\udff3\ufe0f\u200d\ud83c\udf08', - fitzpatrick_scale: false, - category: "objects" - }, - closed_lock_with_key: { - keywords: [ "security", "privacy" ], - "char": '\ud83d\udd10', - fitzpatrick_scale: false, - category: "objects" - }, - lock: { - keywords: [ "security", "password", "padlock" ], - "char": '\ud83d\udd12', - fitzpatrick_scale: false, - category: "objects" - }, - unlock: { - keywords: [ "privacy", "security" ], - "char": '\ud83d\udd13', - fitzpatrick_scale: false, - category: "objects" - }, - lock_with_ink_pen: { - keywords: [ "security", "secret" ], - "char": '\ud83d\udd0f', - fitzpatrick_scale: false, - category: "objects" - }, - pen: { - keywords: [ "stationery", "writing", "write" ], - "char": '\ud83d\udd8a', - fitzpatrick_scale: false, - category: "objects" - }, - fountain_pen: { - keywords: [ "stationery", "writing", "write" ], - "char": '\ud83d\udd8b', - fitzpatrick_scale: false, - category: "objects" - }, - black_nib: { - keywords: [ "pen", "stationery", "writing", "write" ], - "char": '\u2712\ufe0f', - fitzpatrick_scale: false, - category: "objects" - }, - memo: { - keywords: [ "write", "documents", "stationery", "pencil", "paper", "writing", "legal", "exam", "quiz", "test", "study", "compose" ], - "char": '\ud83d\udcdd', - fitzpatrick_scale: false, - category: "objects" - }, - pencil2: { - keywords: [ "stationery", "write", "paper", "writing", "school", "study" ], - "char": '\u270f\ufe0f', - fitzpatrick_scale: false, - category: "objects" - }, - crayon: { - keywords: [ "drawing", "creativity" ], - "char": '\ud83d\udd8d', - fitzpatrick_scale: false, - category: "objects" - }, - paintbrush: { - keywords: [ "drawing", "creativity", "art" ], - "char": '\ud83d\udd8c', - fitzpatrick_scale: false, - category: "objects" - }, - mag: { - keywords: [ "search", "zoom", "find", "detective" ], - "char": '\ud83d\udd0d', - fitzpatrick_scale: false, - category: "objects" - }, - mag_right: { - keywords: [ "search", "zoom", "find", "detective" ], - "char": '\ud83d\udd0e', - fitzpatrick_scale: false, - category: "objects" - }, - heart: { - keywords: [ "love", "like", "valentines" ], - "char": '\u2764\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - orange_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - "char": '\ud83e\udde1', - fitzpatrick_scale: false, - category: "symbols" - }, - yellow_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - "char": '\ud83d\udc9b', - fitzpatrick_scale: false, - category: "symbols" - }, - green_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - "char": '\ud83d\udc9a', - fitzpatrick_scale: false, - category: "symbols" - }, - blue_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - "char": '\ud83d\udc99', - fitzpatrick_scale: false, - category: "symbols" - }, - purple_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - "char": '\ud83d\udc9c', - fitzpatrick_scale: false, - category: "symbols" - }, - black_heart: { - keywords: [ "evil" ], - "char": '\ud83d\udda4', - fitzpatrick_scale: false, - category: "symbols" - }, - broken_heart: { - keywords: [ "sad", "sorry", "break", "heart", "heartbreak" ], - "char": '\ud83d\udc94', - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_heart_exclamation: { - keywords: [ "decoration", "love" ], - "char": '\u2763', - fitzpatrick_scale: false, - category: "symbols" - }, - two_hearts: { - keywords: [ "love", "like", "affection", "valentines", "heart" ], - "char": '\ud83d\udc95', - fitzpatrick_scale: false, - category: "symbols" - }, - revolving_hearts: { - keywords: [ "love", "like", "affection", "valentines" ], - "char": '\ud83d\udc9e', - fitzpatrick_scale: false, - category: "symbols" - }, - heartbeat: { - keywords: [ "love", "like", "affection", "valentines", "pink", "heart" ], - "char": '\ud83d\udc93', - fitzpatrick_scale: false, - category: "symbols" - }, - heartpulse: { - keywords: [ "like", "love", "affection", "valentines", "pink" ], - "char": '\ud83d\udc97', - fitzpatrick_scale: false, - category: "symbols" - }, - sparkling_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - "char": '\ud83d\udc96', - fitzpatrick_scale: false, - category: "symbols" - }, - cupid: { - keywords: [ "love", "like", "heart", "affection", "valentines" ], - "char": '\ud83d\udc98', - fitzpatrick_scale: false, - category: "symbols" - }, - gift_heart: { - keywords: [ "love", "valentines" ], - "char": '\ud83d\udc9d', - fitzpatrick_scale: false, - category: "symbols" - }, - heart_decoration: { - keywords: [ "purple-square", "love", "like" ], - "char": '\ud83d\udc9f', - fitzpatrick_scale: false, - category: "symbols" - }, - peace_symbol: { - keywords: [ "hippie" ], - "char": '\u262e', - fitzpatrick_scale: false, - category: "symbols" - }, - latin_cross: { - keywords: [ "christianity" ], - "char": '\u271d', - fitzpatrick_scale: false, - category: "symbols" - }, - star_and_crescent: { - keywords: [ "islam" ], - "char": '\u262a', - fitzpatrick_scale: false, - category: "symbols" - }, - om: { - keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ], - "char": '\ud83d\udd49', - fitzpatrick_scale: false, - category: "symbols" - }, - wheel_of_dharma: { - keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ], - "char": '\u2638', - fitzpatrick_scale: false, - category: "symbols" - }, - star_of_david: { - keywords: [ "judaism" ], - "char": '\u2721', - fitzpatrick_scale: false, - category: "symbols" - }, - six_pointed_star: { - keywords: [ "purple-square", "religion", "jewish", "hexagram" ], - "char": '\ud83d\udd2f', - fitzpatrick_scale: false, - category: "symbols" - }, - menorah: { - keywords: [ "hanukkah", "candles", "jewish" ], - "char": '\ud83d\udd4e', - fitzpatrick_scale: false, - category: "symbols" - }, - yin_yang: { - keywords: [ "balance" ], - "char": '\u262f', - fitzpatrick_scale: false, - category: "symbols" - }, - orthodox_cross: { - keywords: [ "suppedaneum", "religion" ], - "char": '\u2626', - fitzpatrick_scale: false, - category: "symbols" - }, - place_of_worship: { - keywords: [ "religion", "church", "temple", "prayer" ], - "char": '\ud83d\uded0', - fitzpatrick_scale: false, - category: "symbols" - }, - ophiuchus: { - keywords: [ "sign", "purple-square", "constellation", "astrology" ], - "char": '\u26ce', - fitzpatrick_scale: false, - category: "symbols" - }, - aries: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - "char": '\u2648', - fitzpatrick_scale: false, - category: "symbols" - }, - taurus: { - keywords: [ "purple-square", "sign", "zodiac", "astrology" ], - "char": '\u2649', - fitzpatrick_scale: false, - category: "symbols" - }, - gemini: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - "char": '\u264a', - fitzpatrick_scale: false, - category: "symbols" - }, - cancer: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - "char": '\u264b', - fitzpatrick_scale: false, - category: "symbols" - }, - leo: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - "char": '\u264c', - fitzpatrick_scale: false, - category: "symbols" - }, - virgo: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - "char": '\u264d', - fitzpatrick_scale: false, - category: "symbols" - }, - libra: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - "char": '\u264e', - fitzpatrick_scale: false, - category: "symbols" - }, - scorpius: { - keywords: [ "sign", "zodiac", "purple-square", "astrology", "scorpio" ], - "char": '\u264f', - fitzpatrick_scale: false, - category: "symbols" - }, - sagittarius: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - "char": '\u2650', - fitzpatrick_scale: false, - category: "symbols" - }, - capricorn: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - "char": '\u2651', - fitzpatrick_scale: false, - category: "symbols" - }, - aquarius: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - "char": '\u2652', - fitzpatrick_scale: false, - category: "symbols" - }, - pisces: { - keywords: [ "purple-square", "sign", "zodiac", "astrology" ], - "char": '\u2653', - fitzpatrick_scale: false, - category: "symbols" - }, - id: { - keywords: [ "purple-square", "words" ], - "char": '\ud83c\udd94', - fitzpatrick_scale: false, - category: "symbols" - }, - atom_symbol: { - keywords: [ "science", "physics", "chemistry" ], - "char": '\u269b', - fitzpatrick_scale: false, - category: "symbols" - }, - u7a7a: { - keywords: [ "kanji", "japanese", "chinese", "empty", "sky", "blue-square" ], - "char": '\ud83c\ude33', - fitzpatrick_scale: false, - category: "symbols" - }, - u5272: { - keywords: [ "cut", "divide", "chinese", "kanji", "pink-square" ], - "char": '\ud83c\ude39', - fitzpatrick_scale: false, - category: "symbols" - }, - radioactive: { - keywords: [ "nuclear", "danger" ], - "char": '\u2622', - fitzpatrick_scale: false, - category: "symbols" - }, - biohazard: { - keywords: [ "danger" ], - "char": '\u2623', - fitzpatrick_scale: false, - category: "symbols" - }, - mobile_phone_off: { - keywords: [ "mute", "orange-square", "silence", "quiet" ], - "char": '\ud83d\udcf4', - fitzpatrick_scale: false, - category: "symbols" - }, - vibration_mode: { - keywords: [ "orange-square", "phone" ], - "char": '\ud83d\udcf3', - fitzpatrick_scale: false, - category: "symbols" - }, - u6709: { - keywords: [ "orange-square", "chinese", "have", "kanji" ], - "char": '\ud83c\ude36', - fitzpatrick_scale: false, - category: "symbols" - }, - u7121: { - keywords: [ "nothing", "chinese", "kanji", "japanese", "orange-square" ], - "char": '\ud83c\ude1a', - fitzpatrick_scale: false, - category: "symbols" - }, - u7533: { - keywords: [ "chinese", "japanese", "kanji", "orange-square" ], - "char": '\ud83c\ude38', - fitzpatrick_scale: false, - category: "symbols" - }, - u55b6: { - keywords: [ "japanese", "opening hours", "orange-square" ], - "char": '\ud83c\ude3a', - fitzpatrick_scale: false, - category: "symbols" - }, - u6708: { - keywords: [ "chinese", "month", "moon", "japanese", "orange-square", "kanji" ], - "char": '\ud83c\ude37\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - eight_pointed_black_star: { - keywords: [ "orange-square", "shape", "polygon" ], - "char": '\u2734\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - vs: { - keywords: [ "words", "orange-square" ], - "char": '\ud83c\udd9a', - fitzpatrick_scale: false, - category: "symbols" - }, - accept: { - keywords: [ "ok", "good", "chinese", "kanji", "agree", "yes", "orange-circle" ], - "char": '\ud83c\ude51', - fitzpatrick_scale: false, - category: "symbols" - }, - white_flower: { - keywords: [ "japanese", "spring" ], - "char": '\ud83d\udcae', - fitzpatrick_scale: false, - category: "symbols" - }, - ideograph_advantage: { - keywords: [ "chinese", "kanji", "obtain", "get", "circle" ], - "char": '\ud83c\ude50', - fitzpatrick_scale: false, - category: "symbols" - }, - secret: { - keywords: [ "privacy", "chinese", "sshh", "kanji", "red-circle" ], - "char": '\u3299\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - congratulations: { - keywords: [ "chinese", "kanji", "japanese", "red-circle" ], - "char": '\u3297\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - u5408: { - keywords: [ "japanese", "chinese", "join", "kanji", "red-square" ], - "char": '\ud83c\ude34', - fitzpatrick_scale: false, - category: "symbols" - }, - u6e80: { - keywords: [ "full", "chinese", "japanese", "red-square", "kanji" ], - "char": '\ud83c\ude35', - fitzpatrick_scale: false, - category: "symbols" - }, - u7981: { - keywords: [ "kanji", "japanese", "chinese", "forbidden", "limit", "restricted", "red-square" ], - "char": '\ud83c\ude32', - fitzpatrick_scale: false, - category: "symbols" - }, - a: { - keywords: [ "red-square", "alphabet", "letter" ], - "char": '\ud83c\udd70\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - b: { - keywords: [ "red-square", "alphabet", "letter" ], - "char": '\ud83c\udd71\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - ab: { - keywords: [ "red-square", "alphabet" ], - "char": '\ud83c\udd8e', - fitzpatrick_scale: false, - category: "symbols" - }, - cl: { - keywords: [ "alphabet", "words", "red-square" ], - "char": '\ud83c\udd91', - fitzpatrick_scale: false, - category: "symbols" - }, - o2: { - keywords: [ "alphabet", "red-square", "letter" ], - "char": '\ud83c\udd7e\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - sos: { - keywords: [ "help", "red-square", "words", "emergency", "911" ], - "char": '\ud83c\udd98', - fitzpatrick_scale: false, - category: "symbols" - }, - no_entry: { - keywords: [ "limit", "security", "privacy", "bad", "denied", "stop", "circle" ], - "char": '\u26d4', - fitzpatrick_scale: false, - category: "symbols" - }, - name_badge: { - keywords: [ "fire", "forbid" ], - "char": '\ud83d\udcdb', - fitzpatrick_scale: false, - category: "symbols" - }, - no_entry_sign: { - keywords: [ "forbid", "stop", "limit", "denied", "disallow", "circle" ], - "char": '\ud83d\udeab', - fitzpatrick_scale: false, - category: "symbols" - }, - x: { - keywords: [ "no", "delete", "remove", "cancel", "red" ], - "char": '\u274c', - fitzpatrick_scale: false, - category: "symbols" - }, - o: { - keywords: [ "circle", "round" ], - "char": '\u2b55', - fitzpatrick_scale: false, - category: "symbols" - }, - stop_sign: { - keywords: [ "stop" ], - "char": '\ud83d\uded1', - fitzpatrick_scale: false, - category: "symbols" - }, - anger: { - keywords: [ "angry", "mad" ], - "char": '\ud83d\udca2', - fitzpatrick_scale: false, - category: "symbols" - }, - hotsprings: { - keywords: [ "bath", "warm", "relax" ], - "char": '\u2668\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - no_pedestrians: { - keywords: [ "rules", "crossing", "walking", "circle" ], - "char": '\ud83d\udeb7', - fitzpatrick_scale: false, - category: "symbols" - }, - do_not_litter: { - keywords: [ "trash", "bin", "garbage", "circle" ], - "char": '\ud83d\udeaf', - fitzpatrick_scale: false, - category: "symbols" - }, - no_bicycles: { - keywords: [ "cyclist", "prohibited", "circle" ], - "char": '\ud83d\udeb3', - fitzpatrick_scale: false, - category: "symbols" - }, - "non-potable_water": { - keywords: [ "drink", "faucet", "tap", "circle" ], - "char": '\ud83d\udeb1', - fitzpatrick_scale: false, - category: "symbols" - }, - underage: { - keywords: [ "18", "drink", "pub", "night", "minor", "circle" ], - "char": '\ud83d\udd1e', - fitzpatrick_scale: false, - category: "symbols" - }, - no_mobile_phones: { - keywords: [ "iphone", "mute", "circle" ], - "char": '\ud83d\udcf5', - fitzpatrick_scale: false, - category: "symbols" - }, - exclamation: { - keywords: [ "heavy_exclamation_mark", "danger", "surprise", "punctuation", "wow", "warning" ], - "char": '\u2757', - fitzpatrick_scale: false, - category: "symbols" - }, - grey_exclamation: { - keywords: [ "surprise", "punctuation", "gray", "wow", "warning" ], - "char": '\u2755', - fitzpatrick_scale: false, - category: "symbols" - }, - question: { - keywords: [ "doubt", "confused" ], - "char": '\u2753', - fitzpatrick_scale: false, - category: "symbols" - }, - grey_question: { - keywords: [ "doubts", "gray", "huh", "confused" ], - "char": '\u2754', - fitzpatrick_scale: false, - category: "symbols" - }, - bangbang: { - keywords: [ "exclamation", "surprise" ], - "char": '\u203c\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - interrobang: { - keywords: [ "wat", "punctuation", "surprise" ], - "char": '\u2049\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - low_brightness: { - keywords: [ "sun", "afternoon", "warm", "summer" ], - "char": '\ud83d\udd05', - fitzpatrick_scale: false, - category: "symbols" - }, - high_brightness: { - keywords: [ "sun", "light" ], - "char": '\ud83d\udd06', - fitzpatrick_scale: false, - category: "symbols" - }, - trident: { - keywords: [ "weapon", "spear" ], - "char": '\ud83d\udd31', - fitzpatrick_scale: false, - category: "symbols" - }, - fleur_de_lis: { - keywords: [ "decorative", "scout" ], - "char": '\u269c', - fitzpatrick_scale: false, - category: "symbols" - }, - part_alternation_mark: { - keywords: [ "graph", "presentation", "stats", "business", "economics", "bad" ], - "char": '\u303d\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - warning: { - keywords: [ "exclamation", "wip", "alert", "error", "problem", "issue" ], - "char": '\u26a0\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - children_crossing: { - keywords: [ "school", "warning", "danger", "sign", "driving", "yellow-diamond" ], - "char": '\ud83d\udeb8', - fitzpatrick_scale: false, - category: "symbols" - }, - beginner: { - keywords: [ "badge", "shield" ], - "char": '\ud83d\udd30', - fitzpatrick_scale: false, - category: "symbols" - }, - recycle: { - keywords: [ "arrow", "environment", "garbage", "trash" ], - "char": '\u267b\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - u6307: { - keywords: [ "chinese", "point", "green-square", "kanji" ], - "char": '\ud83c\ude2f', - fitzpatrick_scale: false, - category: "symbols" - }, - chart: { - keywords: [ "green-square", "graph", "presentation", "stats" ], - "char": '\ud83d\udcb9', - fitzpatrick_scale: false, - category: "symbols" - }, - sparkle: { - keywords: [ "stars", "green-square", "awesome", "good", "fireworks" ], - "char": '\u2747\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - eight_spoked_asterisk: { - keywords: [ "star", "sparkle", "green-square" ], - "char": '\u2733\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - negative_squared_cross_mark: { - keywords: [ "x", "green-square", "no", "deny" ], - "char": '\u274e', - fitzpatrick_scale: false, - category: "symbols" - }, - white_check_mark: { - keywords: [ "green-square", "ok", "agree", "vote", "election", "answer", "tick" ], - "char": '\u2705', - fitzpatrick_scale: false, - category: "symbols" - }, - diamond_shape_with_a_dot_inside: { - keywords: [ "jewel", "blue", "gem", "crystal", "fancy" ], - "char": '\ud83d\udca0', - fitzpatrick_scale: false, - category: "symbols" - }, - cyclone: { - keywords: [ "weather", "swirl", "blue", "cloud", "vortex", "spiral", "whirlpool", "spin", "tornado", "hurricane", "typhoon" ], - "char": '\ud83c\udf00', - fitzpatrick_scale: false, - category: "symbols" - }, - loop: { - keywords: [ "tape", "cassette" ], - "char": '\u27bf', - fitzpatrick_scale: false, - category: "symbols" - }, - globe_with_meridians: { - keywords: [ "earth", "international", "world", "internet", "interweb", "i18n" ], - "char": '\ud83c\udf10', - fitzpatrick_scale: false, - category: "symbols" - }, - m: { - keywords: [ "alphabet", "blue-circle", "letter" ], - "char": '\u24c2\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - atm: { - keywords: [ "money", "sales", "cash", "blue-square", "payment", "bank" ], - "char": '\ud83c\udfe7', - fitzpatrick_scale: false, - category: "symbols" - }, - sa: { - keywords: [ "japanese", "blue-square", "katakana" ], - "char": '\ud83c\ude02\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - passport_control: { - keywords: [ "custom", "blue-square" ], - "char": '\ud83d\udec2', - fitzpatrick_scale: false, - category: "symbols" - }, - customs: { - keywords: [ "passport", "border", "blue-square" ], - "char": '\ud83d\udec3', - fitzpatrick_scale: false, - category: "symbols" - }, - baggage_claim: { - keywords: [ "blue-square", "airport", "transport" ], - "char": '\ud83d\udec4', - fitzpatrick_scale: false, - category: "symbols" - }, - left_luggage: { - keywords: [ "blue-square", "travel" ], - "char": '\ud83d\udec5', - fitzpatrick_scale: false, - category: "symbols" - }, - wheelchair: { - keywords: [ "blue-square", "disabled", "a11y", "accessibility" ], - "char": '\u267f', - fitzpatrick_scale: false, - category: "symbols" - }, - no_smoking: { - keywords: [ "cigarette", "blue-square", "smell", "smoke" ], - "char": '\ud83d\udead', - fitzpatrick_scale: false, - category: "symbols" - }, - wc: { - keywords: [ "toilet", "restroom", "blue-square" ], - "char": '\ud83d\udebe', - fitzpatrick_scale: false, - category: "symbols" - }, - parking: { - keywords: [ "cars", "blue-square", "alphabet", "letter" ], - "char": '\ud83c\udd7f\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - potable_water: { - keywords: [ "blue-square", "liquid", "restroom", "cleaning", "faucet" ], - "char": '\ud83d\udeb0', - fitzpatrick_scale: false, - category: "symbols" - }, - mens: { - keywords: [ "toilet", "restroom", "wc", "blue-square", "gender", "male" ], - "char": '\ud83d\udeb9', - fitzpatrick_scale: false, - category: "symbols" - }, - womens: { - keywords: [ "purple-square", "woman", "female", "toilet", "loo", "restroom", "gender" ], - "char": '\ud83d\udeba', - fitzpatrick_scale: false, - category: "symbols" - }, - baby_symbol: { - keywords: [ "orange-square", "child" ], - "char": '\ud83d\udebc', - fitzpatrick_scale: false, - category: "symbols" - }, - restroom: { - keywords: [ "blue-square", "toilet", "refresh", "wc", "gender" ], - "char": '\ud83d\udebb', - fitzpatrick_scale: false, - category: "symbols" - }, - put_litter_in_its_place: { - keywords: [ "blue-square", "sign", "human", "info" ], - "char": '\ud83d\udeae', - fitzpatrick_scale: false, - category: "symbols" - }, - cinema: { - keywords: [ "blue-square", "record", "film", "movie", "curtain", "stage", "theater" ], - "char": '\ud83c\udfa6', - fitzpatrick_scale: false, - category: "symbols" - }, - signal_strength: { - keywords: [ "blue-square", "reception", "phone", "internet", "connection", "wifi", "bluetooth", "bars" ], - "char": '\ud83d\udcf6', - fitzpatrick_scale: false, - category: "symbols" - }, - koko: { - keywords: [ "blue-square", "here", "katakana", "japanese", "destination" ], - "char": '\ud83c\ude01', - fitzpatrick_scale: false, - category: "symbols" - }, - ng: { - keywords: [ "blue-square", "words", "shape", "icon" ], - "char": '\ud83c\udd96', - fitzpatrick_scale: false, - category: "symbols" - }, - ok: { - keywords: [ "good", "agree", "yes", "blue-square" ], - "char": '\ud83c\udd97', - fitzpatrick_scale: false, - category: "symbols" - }, - up: { - keywords: [ "blue-square", "above", "high" ], - "char": '\ud83c\udd99', - fitzpatrick_scale: false, - category: "symbols" - }, - cool: { - keywords: [ "words", "blue-square" ], - "char": '\ud83c\udd92', - fitzpatrick_scale: false, - category: "symbols" - }, - "new": { - keywords: [ "blue-square", "words", "start" ], - "char": '\ud83c\udd95', - fitzpatrick_scale: false, - category: "symbols" - }, - free: { - keywords: [ "blue-square", "words" ], - "char": '\ud83c\udd93', - fitzpatrick_scale: false, - category: "symbols" - }, - zero: { - keywords: [ "0", "numbers", "blue-square", "null" ], - "char": '0\ufe0f\u20e3', - fitzpatrick_scale: false, - category: "symbols" - }, - one: { - keywords: [ "blue-square", "numbers", "1" ], - "char": '1\ufe0f\u20e3', - fitzpatrick_scale: false, - category: "symbols" - }, - two: { - keywords: [ "numbers", "2", "prime", "blue-square" ], - "char": '2\ufe0f\u20e3', - fitzpatrick_scale: false, - category: "symbols" - }, - three: { - keywords: [ "3", "numbers", "prime", "blue-square" ], - "char": '3\ufe0f\u20e3', - fitzpatrick_scale: false, - category: "symbols" - }, - four: { - keywords: [ "4", "numbers", "blue-square" ], - "char": '4\ufe0f\u20e3', - fitzpatrick_scale: false, - category: "symbols" - }, - five: { - keywords: [ "5", "numbers", "blue-square", "prime" ], - "char": '5\ufe0f\u20e3', - fitzpatrick_scale: false, - category: "symbols" - }, - six: { - keywords: [ "6", "numbers", "blue-square" ], - "char": '6\ufe0f\u20e3', - fitzpatrick_scale: false, - category: "symbols" - }, - seven: { - keywords: [ "7", "numbers", "blue-square", "prime" ], - "char": '7\ufe0f\u20e3', - fitzpatrick_scale: false, - category: "symbols" - }, - eight: { - keywords: [ "8", "blue-square", "numbers" ], - "char": '8\ufe0f\u20e3', - fitzpatrick_scale: false, - category: "symbols" - }, - nine: { - keywords: [ "blue-square", "numbers", "9" ], - "char": '9\ufe0f\u20e3', - fitzpatrick_scale: false, - category: "symbols" - }, - keycap_ten: { - keywords: [ "numbers", "10", "blue-square" ], - "char": '\ud83d\udd1f', - fitzpatrick_scale: false, - category: "symbols" - }, - asterisk: { - keywords: [ "star", "keycap" ], - "char": '*\u20e3', - fitzpatrick_scale: false, - category: "symbols" - }, - eject_button: { - keywords: [ "blue-square" ], - "char": '\u23cf\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_forward: { - keywords: [ "blue-square", "right", "direction", "play" ], - "char": '\u25b6\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - pause_button: { - keywords: [ "pause", "blue-square" ], - "char": '\u23f8', - fitzpatrick_scale: false, - category: "symbols" - }, - next_track_button: { - keywords: [ "forward", "next", "blue-square" ], - "char": '\u23ed', - fitzpatrick_scale: false, - category: "symbols" - }, - stop_button: { - keywords: [ "blue-square" ], - "char": '\u23f9', - fitzpatrick_scale: false, - category: "symbols" - }, - record_button: { - keywords: [ "blue-square" ], - "char": '\u23fa', - fitzpatrick_scale: false, - category: "symbols" - }, - play_or_pause_button: { - keywords: [ "blue-square", "play", "pause" ], - "char": '\u23ef', - fitzpatrick_scale: false, - category: "symbols" - }, - previous_track_button: { - keywords: [ "backward" ], - "char": '\u23ee', - fitzpatrick_scale: false, - category: "symbols" - }, - fast_forward: { - keywords: [ "blue-square", "play", "speed", "continue" ], - "char": '\u23e9', - fitzpatrick_scale: false, - category: "symbols" - }, - rewind: { - keywords: [ "play", "blue-square" ], - "char": '\u23ea', - fitzpatrick_scale: false, - category: "symbols" - }, - twisted_rightwards_arrows: { - keywords: [ "blue-square", "shuffle", "music", "random" ], - "char": '\ud83d\udd00', - fitzpatrick_scale: false, - category: "symbols" - }, - repeat: { - keywords: [ "loop", "record" ], - "char": '\ud83d\udd01', - fitzpatrick_scale: false, - category: "symbols" - }, - repeat_one: { - keywords: [ "blue-square", "loop" ], - "char": '\ud83d\udd02', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_backward: { - keywords: [ "blue-square", "left", "direction" ], - "char": '\u25c0\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_up_small: { - keywords: [ "blue-square", "triangle", "direction", "point", "forward", "top" ], - "char": '\ud83d\udd3c', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_down_small: { - keywords: [ "blue-square", "direction", "bottom" ], - "char": '\ud83d\udd3d', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_double_up: { - keywords: [ "blue-square", "direction", "top" ], - "char": '\u23eb', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_double_down: { - keywords: [ "blue-square", "direction", "bottom" ], - "char": '\u23ec', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_right: { - keywords: [ "blue-square", "next" ], - "char": '\u27a1\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_left: { - keywords: [ "blue-square", "previous", "back" ], - "char": '\u2b05\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_up: { - keywords: [ "blue-square", "continue", "top", "direction" ], - "char": '\u2b06\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_down: { - keywords: [ "blue-square", "direction", "bottom" ], - "char": '\u2b07\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_upper_right: { - keywords: [ "blue-square", "point", "direction", "diagonal", "northeast" ], - "char": '\u2197\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_lower_right: { - keywords: [ "blue-square", "direction", "diagonal", "southeast" ], - "char": '\u2198\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_lower_left: { - keywords: [ "blue-square", "direction", "diagonal", "southwest" ], - "char": '\u2199\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_upper_left: { - keywords: [ "blue-square", "point", "direction", "diagonal", "northwest" ], - "char": '\u2196\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_up_down: { - keywords: [ "blue-square", "direction", "way", "vertical" ], - "char": '\u2195\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - left_right_arrow: { - keywords: [ "shape", "direction", "horizontal", "sideways" ], - "char": '\u2194\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - arrows_counterclockwise: { - keywords: [ "blue-square", "sync", "cycle" ], - "char": '\ud83d\udd04', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_right_hook: { - keywords: [ "blue-square", "return", "rotate", "direction" ], - "char": '\u21aa\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - leftwards_arrow_with_hook: { - keywords: [ "back", "return", "blue-square", "undo", "enter" ], - "char": '\u21a9\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_heading_up: { - keywords: [ "blue-square", "direction", "top" ], - "char": '\u2934\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_heading_down: { - keywords: [ "blue-square", "direction", "bottom" ], - "char": '\u2935\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - hash: { - keywords: [ "symbol", "blue-square", "twitter" ], - "char": '#\ufe0f\u20e3', - fitzpatrick_scale: false, - category: "symbols" - }, - information_source: { - keywords: [ "blue-square", "alphabet", "letter" ], - "char": '\u2139\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - abc: { - keywords: [ "blue-square", "alphabet" ], - "char": '\ud83d\udd24', - fitzpatrick_scale: false, - category: "symbols" - }, - abcd: { - keywords: [ "blue-square", "alphabet" ], - "char": '\ud83d\udd21', - fitzpatrick_scale: false, - category: "symbols" - }, - capital_abcd: { - keywords: [ "alphabet", "words", "blue-square" ], - "char": '\ud83d\udd20', - fitzpatrick_scale: false, - category: "symbols" - }, - symbols: { - keywords: [ "blue-square", "music", "note", "ampersand", "percent", "glyphs", "characters" ], - "char": '\ud83d\udd23', - fitzpatrick_scale: false, - category: "symbols" - }, - musical_note: { - keywords: [ "score", "tone", "sound" ], - "char": '\ud83c\udfb5', - fitzpatrick_scale: false, - category: "symbols" - }, - notes: { - keywords: [ "music", "score" ], - "char": '\ud83c\udfb6', - fitzpatrick_scale: false, - category: "symbols" - }, - wavy_dash: { - keywords: [ "draw", "line", "moustache", "mustache", "squiggle", "scribble" ], - "char": '\u3030\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - curly_loop: { - keywords: [ "scribble", "draw", "shape", "squiggle" ], - "char": '\u27b0', - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_check_mark: { - keywords: [ "ok", "nike", "answer", "yes", "tick" ], - "char": '\u2714\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - arrows_clockwise: { - keywords: [ "sync", "cycle", "round", "repeat" ], - "char": '\ud83d\udd03', - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_plus_sign: { - keywords: [ "math", "calculation", "addition", "more", "increase" ], - "char": '\u2795', - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_minus_sign: { - keywords: [ "math", "calculation", "subtract", "less" ], - "char": '\u2796', - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_division_sign: { - keywords: [ "divide", "math", "calculation" ], - "char": '\u2797', - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_multiplication_x: { - keywords: [ "math", "calculation" ], - "char": '\u2716\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - infinity: { - keywords: [ "forever" ], - "char": '\u267e', - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_dollar_sign: { - keywords: [ "money", "sales", "payment", "currency", "buck" ], - "char": '\ud83d\udcb2', - fitzpatrick_scale: false, - category: "symbols" - }, - currency_exchange: { - keywords: [ "money", "sales", "dollar", "travel" ], - "char": '\ud83d\udcb1', - fitzpatrick_scale: false, - category: "symbols" - }, - copyright: { - keywords: [ "ip", "license", "circle", "law", "legal" ], - "char": '\xa9\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - registered: { - keywords: [ "alphabet", "circle" ], - "char": '\xae\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - tm: { - keywords: [ "trademark", "brand", "law", "legal" ], - "char": '\u2122\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - end: { - keywords: [ "words", "arrow" ], - "char": '\ud83d\udd1a', - fitzpatrick_scale: false, - category: "symbols" - }, - back: { - keywords: [ "arrow", "words", "return" ], - "char": '\ud83d\udd19', - fitzpatrick_scale: false, - category: "symbols" - }, - on: { - keywords: [ "arrow", "words" ], - "char": '\ud83d\udd1b', - fitzpatrick_scale: false, - category: "symbols" - }, - top: { - keywords: [ "words", "blue-square" ], - "char": '\ud83d\udd1d', - fitzpatrick_scale: false, - category: "symbols" - }, - soon: { - keywords: [ "arrow", "words" ], - "char": '\ud83d\udd1c', - fitzpatrick_scale: false, - category: "symbols" - }, - ballot_box_with_check: { - keywords: [ "ok", "agree", "confirm", "black-square", "vote", "election", "yes", "tick" ], - "char": '\u2611\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - radio_button: { - keywords: [ "input", "old", "music", "circle" ], - "char": '\ud83d\udd18', - fitzpatrick_scale: false, - category: "symbols" - }, - white_circle: { - keywords: [ "shape", "round" ], - "char": '\u26aa', - fitzpatrick_scale: false, - category: "symbols" - }, - black_circle: { - keywords: [ "shape", "button", "round" ], - "char": '\u26ab', - fitzpatrick_scale: false, - category: "symbols" - }, - red_circle: { - keywords: [ "shape", "error", "danger" ], - "char": '\ud83d\udd34', - fitzpatrick_scale: false, - category: "symbols" - }, - large_blue_circle: { - keywords: [ "shape", "icon", "button" ], - "char": '\ud83d\udd35', - fitzpatrick_scale: false, - category: "symbols" - }, - small_orange_diamond: { - keywords: [ "shape", "jewel", "gem" ], - "char": '\ud83d\udd38', - fitzpatrick_scale: false, - category: "symbols" - }, - small_blue_diamond: { - keywords: [ "shape", "jewel", "gem" ], - "char": '\ud83d\udd39', - fitzpatrick_scale: false, - category: "symbols" - }, - large_orange_diamond: { - keywords: [ "shape", "jewel", "gem" ], - "char": '\ud83d\udd36', - fitzpatrick_scale: false, - category: "symbols" - }, - large_blue_diamond: { - keywords: [ "shape", "jewel", "gem" ], - "char": '\ud83d\udd37', - fitzpatrick_scale: false, - category: "symbols" - }, - small_red_triangle: { - keywords: [ "shape", "direction", "up", "top" ], - "char": '\ud83d\udd3a', - fitzpatrick_scale: false, - category: "symbols" - }, - black_small_square: { - keywords: [ "shape", "icon" ], - "char": '\u25aa\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - white_small_square: { - keywords: [ "shape", "icon" ], - "char": '\u25ab\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - black_large_square: { - keywords: [ "shape", "icon", "button" ], - "char": '\u2b1b', - fitzpatrick_scale: false, - category: "symbols" - }, - white_large_square: { - keywords: [ "shape", "icon", "stone", "button" ], - "char": '\u2b1c', - fitzpatrick_scale: false, - category: "symbols" - }, - small_red_triangle_down: { - keywords: [ "shape", "direction", "bottom" ], - "char": '\ud83d\udd3b', - fitzpatrick_scale: false, - category: "symbols" - }, - black_medium_square: { - keywords: [ "shape", "button", "icon" ], - "char": '\u25fc\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - white_medium_square: { - keywords: [ "shape", "stone", "icon" ], - "char": '\u25fb\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - black_medium_small_square: { - keywords: [ "icon", "shape", "button" ], - "char": '\u25fe', - fitzpatrick_scale: false, - category: "symbols" - }, - white_medium_small_square: { - keywords: [ "shape", "stone", "icon", "button" ], - "char": '\u25fd', - fitzpatrick_scale: false, - category: "symbols" - }, - black_square_button: { - keywords: [ "shape", "input", "frame" ], - "char": '\ud83d\udd32', - fitzpatrick_scale: false, - category: "symbols" - }, - white_square_button: { - keywords: [ "shape", "input" ], - "char": '\ud83d\udd33', - fitzpatrick_scale: false, - category: "symbols" - }, - speaker: { - keywords: [ "sound", "volume", "silence", "broadcast" ], - "char": '\ud83d\udd08', - fitzpatrick_scale: false, - category: "symbols" - }, - sound: { - keywords: [ "volume", "speaker", "broadcast" ], - "char": '\ud83d\udd09', - fitzpatrick_scale: false, - category: "symbols" - }, - loud_sound: { - keywords: [ "volume", "noise", "noisy", "speaker", "broadcast" ], - "char": '\ud83d\udd0a', - fitzpatrick_scale: false, - category: "symbols" - }, - mute: { - keywords: [ "sound", "volume", "silence", "quiet" ], - "char": '\ud83d\udd07', - fitzpatrick_scale: false, - category: "symbols" - }, - mega: { - keywords: [ "sound", "speaker", "volume" ], - "char": '\ud83d\udce3', - fitzpatrick_scale: false, - category: "symbols" - }, - loudspeaker: { - keywords: [ "volume", "sound" ], - "char": '\ud83d\udce2', - fitzpatrick_scale: false, - category: "symbols" - }, - bell: { - keywords: [ "sound", "notification", "christmas", "xmas", "chime" ], - "char": '\ud83d\udd14', - fitzpatrick_scale: false, - category: "symbols" - }, - no_bell: { - keywords: [ "sound", "volume", "mute", "quiet", "silent" ], - "char": '\ud83d\udd15', - fitzpatrick_scale: false, - category: "symbols" - }, - black_joker: { - keywords: [ "poker", "cards", "game", "play", "magic" ], - "char": '\ud83c\udccf', - fitzpatrick_scale: false, - category: "symbols" - }, - mahjong: { - keywords: [ "game", "play", "chinese", "kanji" ], - "char": '\ud83c\udc04', - fitzpatrick_scale: false, - category: "symbols" - }, - spades: { - keywords: [ "poker", "cards", "suits", "magic" ], - "char": '\u2660\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - clubs: { - keywords: [ "poker", "cards", "magic", "suits" ], - "char": '\u2663\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - hearts: { - keywords: [ "poker", "cards", "magic", "suits" ], - "char": '\u2665\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - diamonds: { - keywords: [ "poker", "cards", "magic", "suits" ], - "char": '\u2666\ufe0f', - fitzpatrick_scale: false, - category: "symbols" - }, - flower_playing_cards: { - keywords: [ "game", "sunset", "red" ], - "char": '\ud83c\udfb4', - fitzpatrick_scale: false, - category: "symbols" - }, - thought_balloon: { - keywords: [ "bubble", "cloud", "speech", "thinking", "dream" ], - "char": '\ud83d\udcad', - fitzpatrick_scale: false, - category: "symbols" - }, - right_anger_bubble: { - keywords: [ "caption", "speech", "thinking", "mad" ], - "char": '\ud83d\uddef', - fitzpatrick_scale: false, - category: "symbols" - }, - speech_balloon: { - keywords: [ "bubble", "words", "message", "talk", "chatting" ], - "char": '\ud83d\udcac', - fitzpatrick_scale: false, - category: "symbols" - }, - left_speech_bubble: { - keywords: [ "words", "message", "talk", "chatting" ], - "char": '\ud83d\udde8', - fitzpatrick_scale: false, - category: "symbols" - }, - clock1: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd50', - fitzpatrick_scale: false, - category: "symbols" - }, - clock2: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd51', - fitzpatrick_scale: false, - category: "symbols" - }, - clock3: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd52', - fitzpatrick_scale: false, - category: "symbols" - }, - clock4: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd53', - fitzpatrick_scale: false, - category: "symbols" - }, - clock5: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd54', - fitzpatrick_scale: false, - category: "symbols" - }, - clock6: { - keywords: [ "time", "late", "early", "schedule", "dawn", "dusk" ], - "char": '\ud83d\udd55', - fitzpatrick_scale: false, - category: "symbols" - }, - clock7: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd56', - fitzpatrick_scale: false, - category: "symbols" - }, - clock8: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd57', - fitzpatrick_scale: false, - category: "symbols" - }, - clock9: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd58', - fitzpatrick_scale: false, - category: "symbols" - }, - clock10: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd59', - fitzpatrick_scale: false, - category: "symbols" - }, - clock11: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd5a', - fitzpatrick_scale: false, - category: "symbols" - }, - clock12: { - keywords: [ "time", "noon", "midnight", "midday", "late", "early", "schedule" ], - "char": '\ud83d\udd5b', - fitzpatrick_scale: false, - category: "symbols" - }, - clock130: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd5c', - fitzpatrick_scale: false, - category: "symbols" - }, - clock230: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd5d', - fitzpatrick_scale: false, - category: "symbols" - }, - clock330: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd5e', - fitzpatrick_scale: false, - category: "symbols" - }, - clock430: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd5f', - fitzpatrick_scale: false, - category: "symbols" - }, - clock530: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd60', - fitzpatrick_scale: false, - category: "symbols" - }, - clock630: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd61', - fitzpatrick_scale: false, - category: "symbols" - }, - clock730: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd62', - fitzpatrick_scale: false, - category: "symbols" - }, - clock830: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd63', - fitzpatrick_scale: false, - category: "symbols" - }, - clock930: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd64', - fitzpatrick_scale: false, - category: "symbols" - }, - clock1030: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd65', - fitzpatrick_scale: false, - category: "symbols" - }, - clock1130: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd66', - fitzpatrick_scale: false, - category: "symbols" - }, - clock1230: { - keywords: [ "time", "late", "early", "schedule" ], - "char": '\ud83d\udd67', - fitzpatrick_scale: false, - category: "symbols" - }, - afghanistan: { - keywords: [ "af", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\uddeb', - fitzpatrick_scale: false, - category: "flags" - }, - aland_islands: { - keywords: [ "\xc5land", "islands", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\uddfd', - fitzpatrick_scale: false, - category: "flags" - }, - albania: { - keywords: [ "al", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\uddf1', - fitzpatrick_scale: false, - category: "flags" - }, - algeria: { - keywords: [ "dz", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde9\ud83c\uddff', - fitzpatrick_scale: false, - category: "flags" - }, - american_samoa: { - keywords: [ "american", "ws", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\uddf8', - fitzpatrick_scale: false, - category: "flags" - }, - andorra: { - keywords: [ "ad", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\udde9', - fitzpatrick_scale: false, - category: "flags" - }, - angola: { - keywords: [ "ao", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\uddf4', - fitzpatrick_scale: false, - category: "flags" - }, - anguilla: { - keywords: [ "ai", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\uddee', - fitzpatrick_scale: false, - category: "flags" - }, - antarctica: { - keywords: [ "aq", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\uddf6', - fitzpatrick_scale: false, - category: "flags" - }, - antigua_barbuda: { - keywords: [ "antigua", "barbuda", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\uddec', - fitzpatrick_scale: false, - category: "flags" - }, - argentina: { - keywords: [ "ar", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\uddf7', - fitzpatrick_scale: false, - category: "flags" - }, - armenia: { - keywords: [ "am", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\uddf2', - fitzpatrick_scale: false, - category: "flags" - }, - aruba: { - keywords: [ "aw", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\uddfc', - fitzpatrick_scale: false, - category: "flags" - }, - australia: { - keywords: [ "au", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\uddfa', - fitzpatrick_scale: false, - category: "flags" - }, - austria: { - keywords: [ "at", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\uddf9', - fitzpatrick_scale: false, - category: "flags" - }, - azerbaijan: { - keywords: [ "az", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\uddff', - fitzpatrick_scale: false, - category: "flags" - }, - bahamas: { - keywords: [ "bs", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddf8', - fitzpatrick_scale: false, - category: "flags" - }, - bahrain: { - keywords: [ "bh", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\udded', - fitzpatrick_scale: false, - category: "flags" - }, - bangladesh: { - keywords: [ "bd", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\udde9', - fitzpatrick_scale: false, - category: "flags" - }, - barbados: { - keywords: [ "bb", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\udde7', - fitzpatrick_scale: false, - category: "flags" - }, - belarus: { - keywords: [ "by", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddfe', - fitzpatrick_scale: false, - category: "flags" - }, - belgium: { - keywords: [ "be", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddea', - fitzpatrick_scale: false, - category: "flags" - }, - belize: { - keywords: [ "bz", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddff', - fitzpatrick_scale: false, - category: "flags" - }, - benin: { - keywords: [ "bj", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddef', - fitzpatrick_scale: false, - category: "flags" - }, - bermuda: { - keywords: [ "bm", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddf2', - fitzpatrick_scale: false, - category: "flags" - }, - bhutan: { - keywords: [ "bt", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddf9', - fitzpatrick_scale: false, - category: "flags" - }, - bolivia: { - keywords: [ "bo", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddf4', - fitzpatrick_scale: false, - category: "flags" - }, - caribbean_netherlands: { - keywords: [ "bonaire", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddf6', - fitzpatrick_scale: false, - category: "flags" - }, - bosnia_herzegovina: { - keywords: [ "bosnia", "herzegovina", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\udde6', - fitzpatrick_scale: false, - category: "flags" - }, - botswana: { - keywords: [ "bw", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddfc', - fitzpatrick_scale: false, - category: "flags" - }, - brazil: { - keywords: [ "br", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddf7', - fitzpatrick_scale: false, - category: "flags" - }, - british_indian_ocean_territory: { - keywords: [ "british", "indian", "ocean", "territory", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddee\ud83c\uddf4', - fitzpatrick_scale: false, - category: "flags" - }, - british_virgin_islands: { - keywords: [ "british", "virgin", "islands", "bvi", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfb\ud83c\uddec', - fitzpatrick_scale: false, - category: "flags" - }, - brunei: { - keywords: [ "bn", "darussalam", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddf3', - fitzpatrick_scale: false, - category: "flags" - }, - bulgaria: { - keywords: [ "bg", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddec', - fitzpatrick_scale: false, - category: "flags" - }, - burkina_faso: { - keywords: [ "burkina", "faso", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddeb', - fitzpatrick_scale: false, - category: "flags" - }, - burundi: { - keywords: [ "bi", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddee', - fitzpatrick_scale: false, - category: "flags" - }, - cape_verde: { - keywords: [ "cabo", "verde", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\uddfb', - fitzpatrick_scale: false, - category: "flags" - }, - cambodia: { - keywords: [ "kh", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf0\ud83c\udded', - fitzpatrick_scale: false, - category: "flags" - }, - cameroon: { - keywords: [ "cm", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\uddf2', - fitzpatrick_scale: false, - category: "flags" - }, - canada: { - keywords: [ "ca", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\udde6', - fitzpatrick_scale: false, - category: "flags" - }, - canary_islands: { - keywords: [ "canary", "islands", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddee\ud83c\udde8', - fitzpatrick_scale: false, - category: "flags" - }, - cayman_islands: { - keywords: [ "cayman", "islands", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf0\ud83c\uddfe', - fitzpatrick_scale: false, - category: "flags" - }, - central_african_republic: { - keywords: [ "central", "african", "republic", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\uddeb', - fitzpatrick_scale: false, - category: "flags" - }, - chad: { - keywords: [ "td", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\udde9', - fitzpatrick_scale: false, - category: "flags" - }, - chile: { - keywords: [ "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\uddf1', - fitzpatrick_scale: false, - category: "flags" - }, - cn: { - keywords: [ "china", "chinese", "prc", "flag", "country", "nation", "banner" ], - "char": '\ud83c\udde8\ud83c\uddf3', - fitzpatrick_scale: false, - category: "flags" - }, - christmas_island: { - keywords: [ "christmas", "island", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\uddfd', - fitzpatrick_scale: false, - category: "flags" - }, - cocos_islands: { - keywords: [ "cocos", "keeling", "islands", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\udde8', - fitzpatrick_scale: false, - category: "flags" - }, - colombia: { - keywords: [ "co", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\uddf4', - fitzpatrick_scale: false, - category: "flags" - }, - comoros: { - keywords: [ "km", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf0\ud83c\uddf2', - fitzpatrick_scale: false, - category: "flags" - }, - congo_brazzaville: { - keywords: [ "congo", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\uddec', - fitzpatrick_scale: false, - category: "flags" - }, - congo_kinshasa: { - keywords: [ "congo", "democratic", "republic", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\udde9', - fitzpatrick_scale: false, - category: "flags" - }, - cook_islands: { - keywords: [ "cook", "islands", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\uddf0', - fitzpatrick_scale: false, - category: "flags" - }, - costa_rica: { - keywords: [ "costa", "rica", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\uddf7', - fitzpatrick_scale: false, - category: "flags" - }, - croatia: { - keywords: [ "hr", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udded\ud83c\uddf7', - fitzpatrick_scale: false, - category: "flags" - }, - cuba: { - keywords: [ "cu", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\uddfa', - fitzpatrick_scale: false, - category: "flags" - }, - curacao: { - keywords: [ "cura\xe7ao", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\uddfc', - fitzpatrick_scale: false, - category: "flags" - }, - cyprus: { - keywords: [ "cy", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\uddfe', - fitzpatrick_scale: false, - category: "flags" - }, - czech_republic: { - keywords: [ "cz", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\uddff', - fitzpatrick_scale: false, - category: "flags" - }, - denmark: { - keywords: [ "dk", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde9\ud83c\uddf0', - fitzpatrick_scale: false, - category: "flags" - }, - djibouti: { - keywords: [ "dj", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde9\ud83c\uddef', - fitzpatrick_scale: false, - category: "flags" - }, - dominica: { - keywords: [ "dm", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde9\ud83c\uddf2', - fitzpatrick_scale: false, - category: "flags" - }, - dominican_republic: { - keywords: [ "dominican", "republic", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde9\ud83c\uddf4', - fitzpatrick_scale: false, - category: "flags" - }, - ecuador: { - keywords: [ "ec", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddea\ud83c\udde8', - fitzpatrick_scale: false, - category: "flags" - }, - egypt: { - keywords: [ "eg", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddea\ud83c\uddec', - fitzpatrick_scale: false, - category: "flags" - }, - el_salvador: { - keywords: [ "el", "salvador", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\uddfb', - fitzpatrick_scale: false, - category: "flags" - }, - equatorial_guinea: { - keywords: [ "equatorial", "gn", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\uddf6', - fitzpatrick_scale: false, - category: "flags" - }, - eritrea: { - keywords: [ "er", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddea\ud83c\uddf7', - fitzpatrick_scale: false, - category: "flags" - }, - estonia: { - keywords: [ "ee", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddea\ud83c\uddea', - fitzpatrick_scale: false, - category: "flags" - }, - ethiopia: { - keywords: [ "et", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddea\ud83c\uddf9', - fitzpatrick_scale: false, - category: "flags" - }, - eu: { - keywords: [ "european", "union", "flag", "banner" ], - "char": '\ud83c\uddea\ud83c\uddfa', - fitzpatrick_scale: false, - category: "flags" - }, - falkland_islands: { - keywords: [ "falkland", "islands", "malvinas", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddeb\ud83c\uddf0', - fitzpatrick_scale: false, - category: "flags" - }, - faroe_islands: { - keywords: [ "faroe", "islands", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddeb\ud83c\uddf4', - fitzpatrick_scale: false, - category: "flags" - }, - fiji: { - keywords: [ "fj", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddeb\ud83c\uddef', - fitzpatrick_scale: false, - category: "flags" - }, - finland: { - keywords: [ "fi", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddeb\ud83c\uddee', - fitzpatrick_scale: false, - category: "flags" - }, - fr: { - keywords: [ "banner", "flag", "nation", "france", "french", "country" ], - "char": '\ud83c\uddeb\ud83c\uddf7', - fitzpatrick_scale: false, - category: "flags" - }, - french_guiana: { - keywords: [ "french", "guiana", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\uddeb', - fitzpatrick_scale: false, - category: "flags" - }, - french_polynesia: { - keywords: [ "french", "polynesia", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf5\ud83c\uddeb', - fitzpatrick_scale: false, - category: "flags" - }, - french_southern_territories: { - keywords: [ "french", "southern", "territories", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\uddeb', - fitzpatrick_scale: false, - category: "flags" - }, - gabon: { - keywords: [ "ga", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\udde6', - fitzpatrick_scale: false, - category: "flags" - }, - gambia: { - keywords: [ "gm", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\uddf2', - fitzpatrick_scale: false, - category: "flags" - }, - georgia: { - keywords: [ "ge", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\uddea', - fitzpatrick_scale: false, - category: "flags" - }, - de: { - keywords: [ "german", "nation", "flag", "country", "banner" ], - "char": '\ud83c\udde9\ud83c\uddea', - fitzpatrick_scale: false, - category: "flags" - }, - ghana: { - keywords: [ "gh", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\udded', - fitzpatrick_scale: false, - category: "flags" - }, - gibraltar: { - keywords: [ "gi", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\uddee', - fitzpatrick_scale: false, - category: "flags" - }, - greece: { - keywords: [ "gr", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\uddf7', - fitzpatrick_scale: false, - category: "flags" - }, - greenland: { - keywords: [ "gl", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\uddf1', - fitzpatrick_scale: false, - category: "flags" - }, - grenada: { - keywords: [ "gd", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\udde9', - fitzpatrick_scale: false, - category: "flags" - }, - guadeloupe: { - keywords: [ "gp", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\uddf5', - fitzpatrick_scale: false, - category: "flags" - }, - guam: { - keywords: [ "gu", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\uddfa', - fitzpatrick_scale: false, - category: "flags" - }, - guatemala: { - keywords: [ "gt", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\uddf9', - fitzpatrick_scale: false, - category: "flags" - }, - guernsey: { - keywords: [ "gg", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\uddec', - fitzpatrick_scale: false, - category: "flags" - }, - guinea: { - keywords: [ "gn", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\uddf3', - fitzpatrick_scale: false, - category: "flags" - }, - guinea_bissau: { - keywords: [ "gw", "bissau", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\uddfc', - fitzpatrick_scale: false, - category: "flags" - }, - guyana: { - keywords: [ "gy", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\uddfe', - fitzpatrick_scale: false, - category: "flags" - }, - haiti: { - keywords: [ "ht", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udded\ud83c\uddf9', - fitzpatrick_scale: false, - category: "flags" - }, - honduras: { - keywords: [ "hn", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udded\ud83c\uddf3', - fitzpatrick_scale: false, - category: "flags" - }, - hong_kong: { - keywords: [ "hong", "kong", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udded\ud83c\uddf0', - fitzpatrick_scale: false, - category: "flags" - }, - hungary: { - keywords: [ "hu", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udded\ud83c\uddfa', - fitzpatrick_scale: false, - category: "flags" - }, - iceland: { - keywords: [ "is", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddee\ud83c\uddf8', - fitzpatrick_scale: false, - category: "flags" - }, - india: { - keywords: [ "in", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddee\ud83c\uddf3', - fitzpatrick_scale: false, - category: "flags" - }, - indonesia: { - keywords: [ "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddee\ud83c\udde9', - fitzpatrick_scale: false, - category: "flags" - }, - iran: { - keywords: [ "iran,", "islamic", "republic", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddee\ud83c\uddf7', - fitzpatrick_scale: false, - category: "flags" - }, - iraq: { - keywords: [ "iq", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddee\ud83c\uddf6', - fitzpatrick_scale: false, - category: "flags" - }, - ireland: { - keywords: [ "ie", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddee\ud83c\uddea', - fitzpatrick_scale: false, - category: "flags" - }, - isle_of_man: { - keywords: [ "isle", "man", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddee\ud83c\uddf2', - fitzpatrick_scale: false, - category: "flags" - }, - israel: { - keywords: [ "il", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddee\ud83c\uddf1', - fitzpatrick_scale: false, - category: "flags" - }, - it: { - keywords: [ "italy", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddee\ud83c\uddf9', - fitzpatrick_scale: false, - category: "flags" - }, - cote_divoire: { - keywords: [ "ivory", "coast", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\uddee', - fitzpatrick_scale: false, - category: "flags" - }, - jamaica: { - keywords: [ "jm", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddef\ud83c\uddf2', - fitzpatrick_scale: false, - category: "flags" - }, - jp: { - keywords: [ "japanese", "nation", "flag", "country", "banner" ], - "char": '\ud83c\uddef\ud83c\uddf5', - fitzpatrick_scale: false, - category: "flags" - }, - jersey: { - keywords: [ "je", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddef\ud83c\uddea', - fitzpatrick_scale: false, - category: "flags" - }, - jordan: { - keywords: [ "jo", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddef\ud83c\uddf4', - fitzpatrick_scale: false, - category: "flags" - }, - kazakhstan: { - keywords: [ "kz", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf0\ud83c\uddff', - fitzpatrick_scale: false, - category: "flags" - }, - kenya: { - keywords: [ "ke", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf0\ud83c\uddea', - fitzpatrick_scale: false, - category: "flags" - }, - kiribati: { - keywords: [ "ki", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf0\ud83c\uddee', - fitzpatrick_scale: false, - category: "flags" - }, - kosovo: { - keywords: [ "xk", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfd\ud83c\uddf0', - fitzpatrick_scale: false, - category: "flags" - }, - kuwait: { - keywords: [ "kw", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf0\ud83c\uddfc', - fitzpatrick_scale: false, - category: "flags" - }, - kyrgyzstan: { - keywords: [ "kg", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf0\ud83c\uddec', - fitzpatrick_scale: false, - category: "flags" - }, - laos: { - keywords: [ "lao", "democratic", "republic", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf1\ud83c\udde6', - fitzpatrick_scale: false, - category: "flags" - }, - latvia: { - keywords: [ "lv", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf1\ud83c\uddfb', - fitzpatrick_scale: false, - category: "flags" - }, - lebanon: { - keywords: [ "lb", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf1\ud83c\udde7', - fitzpatrick_scale: false, - category: "flags" - }, - lesotho: { - keywords: [ "ls", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf1\ud83c\uddf8', - fitzpatrick_scale: false, - category: "flags" - }, - liberia: { - keywords: [ "lr", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf1\ud83c\uddf7', - fitzpatrick_scale: false, - category: "flags" - }, - libya: { - keywords: [ "ly", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf1\ud83c\uddfe', - fitzpatrick_scale: false, - category: "flags" - }, - liechtenstein: { - keywords: [ "li", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf1\ud83c\uddee', - fitzpatrick_scale: false, - category: "flags" - }, - lithuania: { - keywords: [ "lt", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf1\ud83c\uddf9', - fitzpatrick_scale: false, - category: "flags" - }, - luxembourg: { - keywords: [ "lu", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf1\ud83c\uddfa', - fitzpatrick_scale: false, - category: "flags" - }, - macau: { - keywords: [ "macao", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddf4', - fitzpatrick_scale: false, - category: "flags" - }, - macedonia: { - keywords: [ "macedonia,", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddf0', - fitzpatrick_scale: false, - category: "flags" - }, - madagascar: { - keywords: [ "mg", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddec', - fitzpatrick_scale: false, - category: "flags" - }, - malawi: { - keywords: [ "mw", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddfc', - fitzpatrick_scale: false, - category: "flags" - }, - malaysia: { - keywords: [ "my", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddfe', - fitzpatrick_scale: false, - category: "flags" - }, - maldives: { - keywords: [ "mv", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddfb', - fitzpatrick_scale: false, - category: "flags" - }, - mali: { - keywords: [ "ml", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddf1', - fitzpatrick_scale: false, - category: "flags" - }, - malta: { - keywords: [ "mt", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddf9', - fitzpatrick_scale: false, - category: "flags" - }, - marshall_islands: { - keywords: [ "marshall", "islands", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\udded', - fitzpatrick_scale: false, - category: "flags" - }, - martinique: { - keywords: [ "mq", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddf6', - fitzpatrick_scale: false, - category: "flags" - }, - mauritania: { - keywords: [ "mr", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddf7', - fitzpatrick_scale: false, - category: "flags" - }, - mauritius: { - keywords: [ "mu", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddfa', - fitzpatrick_scale: false, - category: "flags" - }, - mayotte: { - keywords: [ "yt", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfe\ud83c\uddf9', - fitzpatrick_scale: false, - category: "flags" - }, - mexico: { - keywords: [ "mx", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddfd', - fitzpatrick_scale: false, - category: "flags" - }, - micronesia: { - keywords: [ "micronesia,", "federated", "states", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddeb\ud83c\uddf2', - fitzpatrick_scale: false, - category: "flags" - }, - moldova: { - keywords: [ "moldova,", "republic", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\udde9', - fitzpatrick_scale: false, - category: "flags" - }, - monaco: { - keywords: [ "mc", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\udde8', - fitzpatrick_scale: false, - category: "flags" - }, - mongolia: { - keywords: [ "mn", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddf3', - fitzpatrick_scale: false, - category: "flags" - }, - montenegro: { - keywords: [ "me", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddea', - fitzpatrick_scale: false, - category: "flags" - }, - montserrat: { - keywords: [ "ms", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddf8', - fitzpatrick_scale: false, - category: "flags" - }, - morocco: { - keywords: [ "ma", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\udde6', - fitzpatrick_scale: false, - category: "flags" - }, - mozambique: { - keywords: [ "mz", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddff', - fitzpatrick_scale: false, - category: "flags" - }, - myanmar: { - keywords: [ "mm", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddf2', - fitzpatrick_scale: false, - category: "flags" - }, - namibia: { - keywords: [ "na", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf3\ud83c\udde6', - fitzpatrick_scale: false, - category: "flags" - }, - nauru: { - keywords: [ "nr", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf3\ud83c\uddf7', - fitzpatrick_scale: false, - category: "flags" - }, - nepal: { - keywords: [ "np", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf3\ud83c\uddf5', - fitzpatrick_scale: false, - category: "flags" - }, - netherlands: { - keywords: [ "nl", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf3\ud83c\uddf1', - fitzpatrick_scale: false, - category: "flags" - }, - new_caledonia: { - keywords: [ "new", "caledonia", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf3\ud83c\udde8', - fitzpatrick_scale: false, - category: "flags" - }, - new_zealand: { - keywords: [ "new", "zealand", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf3\ud83c\uddff', - fitzpatrick_scale: false, - category: "flags" - }, - nicaragua: { - keywords: [ "ni", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf3\ud83c\uddee', - fitzpatrick_scale: false, - category: "flags" - }, - niger: { - keywords: [ "ne", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf3\ud83c\uddea', - fitzpatrick_scale: false, - category: "flags" - }, - nigeria: { - keywords: [ "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf3\ud83c\uddec', - fitzpatrick_scale: false, - category: "flags" - }, - niue: { - keywords: [ "nu", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf3\ud83c\uddfa', - fitzpatrick_scale: false, - category: "flags" - }, - norfolk_island: { - keywords: [ "norfolk", "island", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf3\ud83c\uddeb', - fitzpatrick_scale: false, - category: "flags" - }, - northern_mariana_islands: { - keywords: [ "northern", "mariana", "islands", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf2\ud83c\uddf5', - fitzpatrick_scale: false, - category: "flags" - }, - north_korea: { - keywords: [ "north", "korea", "nation", "flag", "country", "banner" ], - "char": '\ud83c\uddf0\ud83c\uddf5', - fitzpatrick_scale: false, - category: "flags" - }, - norway: { - keywords: [ "no", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf3\ud83c\uddf4', - fitzpatrick_scale: false, - category: "flags" - }, - oman: { - keywords: [ "om_symbol", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf4\ud83c\uddf2', - fitzpatrick_scale: false, - category: "flags" - }, - pakistan: { - keywords: [ "pk", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf5\ud83c\uddf0', - fitzpatrick_scale: false, - category: "flags" - }, - palau: { - keywords: [ "pw", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf5\ud83c\uddfc', - fitzpatrick_scale: false, - category: "flags" - }, - palestinian_territories: { - keywords: [ "palestine", "palestinian", "territories", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf5\ud83c\uddf8', - fitzpatrick_scale: false, - category: "flags" - }, - panama: { - keywords: [ "pa", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf5\ud83c\udde6', - fitzpatrick_scale: false, - category: "flags" - }, - papua_new_guinea: { - keywords: [ "papua", "new", "guinea", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf5\ud83c\uddec', - fitzpatrick_scale: false, - category: "flags" - }, - paraguay: { - keywords: [ "py", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf5\ud83c\uddfe', - fitzpatrick_scale: false, - category: "flags" - }, - peru: { - keywords: [ "pe", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf5\ud83c\uddea', - fitzpatrick_scale: false, - category: "flags" - }, - philippines: { - keywords: [ "ph", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf5\ud83c\udded', - fitzpatrick_scale: false, - category: "flags" - }, - pitcairn_islands: { - keywords: [ "pitcairn", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf5\ud83c\uddf3', - fitzpatrick_scale: false, - category: "flags" - }, - poland: { - keywords: [ "pl", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf5\ud83c\uddf1', - fitzpatrick_scale: false, - category: "flags" - }, - portugal: { - keywords: [ "pt", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf5\ud83c\uddf9', - fitzpatrick_scale: false, - category: "flags" - }, - puerto_rico: { - keywords: [ "puerto", "rico", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf5\ud83c\uddf7', - fitzpatrick_scale: false, - category: "flags" - }, - qatar: { - keywords: [ "qa", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf6\ud83c\udde6', - fitzpatrick_scale: false, - category: "flags" - }, - reunion: { - keywords: [ "r\xe9union", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf7\ud83c\uddea', - fitzpatrick_scale: false, - category: "flags" - }, - romania: { - keywords: [ "ro", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf7\ud83c\uddf4', - fitzpatrick_scale: false, - category: "flags" - }, - ru: { - keywords: [ "russian", "federation", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf7\ud83c\uddfa', - fitzpatrick_scale: false, - category: "flags" - }, - rwanda: { - keywords: [ "rw", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf7\ud83c\uddfc', - fitzpatrick_scale: false, - category: "flags" - }, - st_barthelemy: { - keywords: [ "saint", "barth\xe9lemy", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde7\ud83c\uddf1', - fitzpatrick_scale: false, - category: "flags" - }, - st_helena: { - keywords: [ "saint", "helena", "ascension", "tristan", "cunha", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\udded', - fitzpatrick_scale: false, - category: "flags" - }, - st_kitts_nevis: { - keywords: [ "saint", "kitts", "nevis", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf0\ud83c\uddf3', - fitzpatrick_scale: false, - category: "flags" - }, - st_lucia: { - keywords: [ "saint", "lucia", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf1\ud83c\udde8', - fitzpatrick_scale: false, - category: "flags" - }, - st_pierre_miquelon: { - keywords: [ "saint", "pierre", "miquelon", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf5\ud83c\uddf2', - fitzpatrick_scale: false, - category: "flags" - }, - st_vincent_grenadines: { - keywords: [ "saint", "vincent", "grenadines", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfb\ud83c\udde8', - fitzpatrick_scale: false, - category: "flags" - }, - samoa: { - keywords: [ "ws", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfc\ud83c\uddf8', - fitzpatrick_scale: false, - category: "flags" - }, - san_marino: { - keywords: [ "san", "marino", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\uddf2', - fitzpatrick_scale: false, - category: "flags" - }, - sao_tome_principe: { - keywords: [ "sao", "tome", "principe", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\uddf9', - fitzpatrick_scale: false, - category: "flags" - }, - saudi_arabia: { - keywords: [ "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\udde6', - fitzpatrick_scale: false, - category: "flags" - }, - senegal: { - keywords: [ "sn", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\uddf3', - fitzpatrick_scale: false, - category: "flags" - }, - serbia: { - keywords: [ "rs", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf7\ud83c\uddf8', - fitzpatrick_scale: false, - category: "flags" - }, - seychelles: { - keywords: [ "sc", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\udde8', - fitzpatrick_scale: false, - category: "flags" - }, - sierra_leone: { - keywords: [ "sierra", "leone", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\uddf1', - fitzpatrick_scale: false, - category: "flags" - }, - singapore: { - keywords: [ "sg", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\uddec', - fitzpatrick_scale: false, - category: "flags" - }, - sint_maarten: { - keywords: [ "sint", "maarten", "dutch", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\uddfd', - fitzpatrick_scale: false, - category: "flags" - }, - slovakia: { - keywords: [ "sk", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\uddf0', - fitzpatrick_scale: false, - category: "flags" - }, - slovenia: { - keywords: [ "si", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\uddee', - fitzpatrick_scale: false, - category: "flags" - }, - solomon_islands: { - keywords: [ "solomon", "islands", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\udde7', - fitzpatrick_scale: false, - category: "flags" - }, - somalia: { - keywords: [ "so", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\uddf4', - fitzpatrick_scale: false, - category: "flags" - }, - south_africa: { - keywords: [ "south", "africa", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddff\ud83c\udde6', - fitzpatrick_scale: false, - category: "flags" - }, - south_georgia_south_sandwich_islands: { - keywords: [ "south", "georgia", "sandwich", "islands", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddec\ud83c\uddf8', - fitzpatrick_scale: false, - category: "flags" - }, - kr: { - keywords: [ "south", "korea", "nation", "flag", "country", "banner" ], - "char": '\ud83c\uddf0\ud83c\uddf7', - fitzpatrick_scale: false, - category: "flags" - }, - south_sudan: { - keywords: [ "south", "sd", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\uddf8', - fitzpatrick_scale: false, - category: "flags" - }, - es: { - keywords: [ "spain", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddea\ud83c\uddf8', - fitzpatrick_scale: false, - category: "flags" - }, - sri_lanka: { - keywords: [ "sri", "lanka", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf1\ud83c\uddf0', - fitzpatrick_scale: false, - category: "flags" - }, - sudan: { - keywords: [ "sd", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\udde9', - fitzpatrick_scale: false, - category: "flags" - }, - suriname: { - keywords: [ "sr", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\uddf7', - fitzpatrick_scale: false, - category: "flags" - }, - swaziland: { - keywords: [ "sz", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\uddff', - fitzpatrick_scale: false, - category: "flags" - }, - sweden: { - keywords: [ "se", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\uddea', - fitzpatrick_scale: false, - category: "flags" - }, - switzerland: { - keywords: [ "ch", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde8\ud83c\udded', - fitzpatrick_scale: false, - category: "flags" - }, - syria: { - keywords: [ "syrian", "arab", "republic", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf8\ud83c\uddfe', - fitzpatrick_scale: false, - category: "flags" - }, - taiwan: { - keywords: [ "tw", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\uddfc', - fitzpatrick_scale: false, - category: "flags" - }, - tajikistan: { - keywords: [ "tj", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\uddef', - fitzpatrick_scale: false, - category: "flags" - }, - tanzania: { - keywords: [ "tanzania,", "united", "republic", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\uddff', - fitzpatrick_scale: false, - category: "flags" - }, - thailand: { - keywords: [ "th", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\udded', - fitzpatrick_scale: false, - category: "flags" - }, - timor_leste: { - keywords: [ "timor", "leste", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\uddf1', - fitzpatrick_scale: false, - category: "flags" - }, - togo: { - keywords: [ "tg", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\uddec', - fitzpatrick_scale: false, - category: "flags" - }, - tokelau: { - keywords: [ "tk", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\uddf0', - fitzpatrick_scale: false, - category: "flags" - }, - tonga: { - keywords: [ "to", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\uddf4', - fitzpatrick_scale: false, - category: "flags" - }, - trinidad_tobago: { - keywords: [ "trinidad", "tobago", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\uddf9', - fitzpatrick_scale: false, - category: "flags" - }, - tunisia: { - keywords: [ "tn", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\uddf3', - fitzpatrick_scale: false, - category: "flags" - }, - tr: { - keywords: [ "turkey", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\uddf7', - fitzpatrick_scale: false, - category: "flags" - }, - turkmenistan: { - keywords: [ "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\uddf2', - fitzpatrick_scale: false, - category: "flags" - }, - turks_caicos_islands: { - keywords: [ "turks", "caicos", "islands", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\udde8', - fitzpatrick_scale: false, - category: "flags" - }, - tuvalu: { - keywords: [ "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddf9\ud83c\uddfb', - fitzpatrick_scale: false, - category: "flags" - }, - uganda: { - keywords: [ "ug", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfa\ud83c\uddec', - fitzpatrick_scale: false, - category: "flags" - }, - ukraine: { - keywords: [ "ua", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfa\ud83c\udde6', - fitzpatrick_scale: false, - category: "flags" - }, - united_arab_emirates: { - keywords: [ "united", "arab", "emirates", "flag", "nation", "country", "banner" ], - "char": '\ud83c\udde6\ud83c\uddea', - fitzpatrick_scale: false, - category: "flags" - }, - uk: { - keywords: [ "united", "kingdom", "great", "britain", "northern", "ireland", "flag", "nation", "country", "banner", "british", "UK", "english", "england", "union jack" ], - "char": '\ud83c\uddec\ud83c\udde7', - fitzpatrick_scale: false, - category: "flags" - }, - england: { - keywords: [ "flag", "english" ], - "char": '\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f', - fitzpatrick_scale: false, - category: "flags" - }, - scotland: { - keywords: [ "flag", "scottish" ], - "char": '\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f', - fitzpatrick_scale: false, - category: "flags" - }, - wales: { - keywords: [ "flag", "welsh" ], - "char": '\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f', - fitzpatrick_scale: false, - category: "flags" - }, - us: { - keywords: [ "united", "states", "america", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfa\ud83c\uddf8', - fitzpatrick_scale: false, - category: "flags" - }, - us_virgin_islands: { - keywords: [ "virgin", "islands", "us", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfb\ud83c\uddee', - fitzpatrick_scale: false, - category: "flags" - }, - uruguay: { - keywords: [ "uy", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfa\ud83c\uddfe', - fitzpatrick_scale: false, - category: "flags" - }, - uzbekistan: { - keywords: [ "uz", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfa\ud83c\uddff', - fitzpatrick_scale: false, - category: "flags" - }, - vanuatu: { - keywords: [ "vu", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfb\ud83c\uddfa', - fitzpatrick_scale: false, - category: "flags" - }, - vatican_city: { - keywords: [ "vatican", "city", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfb\ud83c\udde6', - fitzpatrick_scale: false, - category: "flags" - }, - venezuela: { - keywords: [ "ve", "bolivarian", "republic", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfb\ud83c\uddea', - fitzpatrick_scale: false, - category: "flags" - }, - vietnam: { - keywords: [ "viet", "nam", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfb\ud83c\uddf3', - fitzpatrick_scale: false, - category: "flags" - }, - wallis_futuna: { - keywords: [ "wallis", "futuna", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfc\ud83c\uddeb', - fitzpatrick_scale: false, - category: "flags" - }, - western_sahara: { - keywords: [ "western", "sahara", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddea\ud83c\udded', - fitzpatrick_scale: false, - category: "flags" - }, - yemen: { - keywords: [ "ye", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddfe\ud83c\uddea', - fitzpatrick_scale: false, - category: "flags" - }, - zambia: { - keywords: [ "zm", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddff\ud83c\uddf2', - fitzpatrick_scale: false, - category: "flags" - }, - zimbabwe: { - keywords: [ "zw", "flag", "nation", "country", "banner" ], - "char": '\ud83c\uddff\ud83c\uddfc', - fitzpatrick_scale: false, - category: "flags" - }, - united_nations: { - keywords: [ "un", "flag", "banner" ], - "char": '\ud83c\uddfa\ud83c\uddf3', - fitzpatrick_scale: false, - category: "flags" - }, - pirate_flag: { - keywords: [ "skull", "crossbones", "flag", "banner" ], - "char": '\ud83c\udff4\u200d\u2620\ufe0f', - fitzpatrick_scale: false, - category: "flags" - } -}); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/emoticons/js/emojiimages.min.js b/component/pear/module/tinymce/tinymce/plugins/emoticons/js/emojiimages.min.js deleted file mode 100644 index 1bc8d72..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/emoticons/js/emojiimages.min.js +++ /dev/null @@ -1,3 +0,0 @@ -// Source: npm package: emojilib -// Images provided by twemoji: https://github.com/twitter/twemoji -window.tinymce.Resource.add("tinymce.plugins.emoticons",{100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],"char":'\ud83d\udcaf',fitzpatrick_scale:!1,category:"symbols"},1234:{keywords:["numbers","blue-square"],"char":'\ud83d\udd22',fitzpatrick_scale:!1,category:"symbols"},grinning:{keywords:["face","smile","happy","joy",":D","grin"],"char":'\ud83d\ude00',fitzpatrick_scale:!1,category:"people"},grimacing:{keywords:["face","grimace","teeth"],"char":'\ud83d\ude2c',fitzpatrick_scale:!1,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],"char":'\ud83d\ude01',fitzpatrick_scale:!1,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],"char":'\ud83d\ude02',fitzpatrick_scale:!1,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],"char":'\ud83e\udd23',fitzpatrick_scale:!1,category:"people"},partying:{keywords:["face","celebration","woohoo"],"char":'\ud83e\udd73',fitzpatrick_scale:!1,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],"char":'\ud83d\ude03',fitzpatrick_scale:!1,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],"char":'\ud83d\ude04',fitzpatrick_scale:!1,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],"char":'\ud83d\ude05',fitzpatrick_scale:!1,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],"char":'\ud83d\ude06',fitzpatrick_scale:!1,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],"char":'\ud83d\ude07',fitzpatrick_scale:!1,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],"char":'\ud83d\ude09',fitzpatrick_scale:!1,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],"char":'\ud83d\ude0a',fitzpatrick_scale:!1,category:"people"},slightly_smiling_face:{keywords:["face","smile"],"char":'\ud83d\ude42',fitzpatrick_scale:!1,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],"char":'\ud83d\ude43',fitzpatrick_scale:!1,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],"char":'\u263a\ufe0f',fitzpatrick_scale:!1,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],"char":'\ud83d\ude0b',fitzpatrick_scale:!1,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],"char":'\ud83d\ude0c',fitzpatrick_scale:!1,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],"char":'\ud83d\ude0d',fitzpatrick_scale:!1,category:"people"},smiling_face_with_three_hearts:{keywords:["face","love","like","affection","valentines","infatuation","crush","hearts","adore"],"char":'\ud83e\udd70',fitzpatrick_scale:!1,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":'\ud83d\ude18',fitzpatrick_scale:!1,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],"char":'\ud83d\ude17',fitzpatrick_scale:!1,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],"char":'\ud83d\ude19',fitzpatrick_scale:!1,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":'\ud83d\ude1a',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],"char":'\ud83d\ude1c',fitzpatrick_scale:!1,category:"people"},zany:{keywords:["face","goofy","crazy"],"char":'\ud83e\udd2a',fitzpatrick_scale:!1,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],"char":'\ud83e\udd28',fitzpatrick_scale:!1,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],"char":'\ud83e\uddd0',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],"char":'\ud83d\ude1d',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],"char":'\ud83d\ude1b',fitzpatrick_scale:!1,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],"char":'\ud83e\udd11',fitzpatrick_scale:!1,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],"char":'\ud83e\udd13',fitzpatrick_scale:!1,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],"char":'\ud83d\ude0e',fitzpatrick_scale:!1,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],"char":'\ud83e\udd29',fitzpatrick_scale:!1,category:"people"},clown_face:{keywords:["face"],"char":'\ud83e\udd21',fitzpatrick_scale:!1,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],"char":'\ud83e\udd20',fitzpatrick_scale:!1,category:"people"},hugs:{keywords:["face","smile","hug"],"char":'\ud83e\udd17',fitzpatrick_scale:!1,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],"char":'\ud83d\ude0f',fitzpatrick_scale:!1,category:"people"},no_mouth:{keywords:["face","hellokitty"],"char":'\ud83d\ude36',fitzpatrick_scale:!1,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],"char":'\ud83d\ude10',fitzpatrick_scale:!1,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],"char":'\ud83d\ude11',fitzpatrick_scale:!1,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],"char":'\ud83d\ude12',fitzpatrick_scale:!1,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],"char":'\ud83d\ude44',fitzpatrick_scale:!1,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],"char":'\ud83e\udd14',fitzpatrick_scale:!1,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],"char":'\ud83e\udd25',fitzpatrick_scale:!1,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],"char":'\ud83e\udd2d',fitzpatrick_scale:!1,category:"people"},shushing:{keywords:["face","quiet","shhh"],"char":'\ud83e\udd2b',fitzpatrick_scale:!1,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],"char":'\ud83e\udd2c',fitzpatrick_scale:!1,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],"char":'\ud83e\udd2f',fitzpatrick_scale:!1,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],"char":'\ud83d\ude33',fitzpatrick_scale:!1,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],"char":'\ud83d\ude1e',fitzpatrick_scale:!1,category:"people"},worried:{keywords:["face","concern","nervous",":("],"char":'\ud83d\ude1f',fitzpatrick_scale:!1,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],"char":'\ud83d\ude20',fitzpatrick_scale:!1,category:"people"},rage:{keywords:["angry","mad","hate","despise"],"char":'\ud83d\ude21',fitzpatrick_scale:!1,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],"char":'\ud83d\ude14',fitzpatrick_scale:!1,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],"char":'\ud83d\ude15',fitzpatrick_scale:!1,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],"char":'\ud83d\ude41',fitzpatrick_scale:!1,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],"char":'\u2639',fitzpatrick_scale:!1,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],"char":'\ud83d\ude23',fitzpatrick_scale:!1,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],"char":'\ud83d\ude16',fitzpatrick_scale:!1,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],"char":'\ud83d\ude2b',fitzpatrick_scale:!1,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],"char":'\ud83d\ude29',fitzpatrick_scale:!1,category:"people"},pleading:{keywords:["face","begging","mercy"],"char":'\ud83e\udd7a',fitzpatrick_scale:!1,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],"char":'\ud83d\ude24',fitzpatrick_scale:!1,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],"char":'\ud83d\ude2e',fitzpatrick_scale:!1,category:"people"},scream:{keywords:["face","munch","scared","omg"],"char":'\ud83d\ude31',fitzpatrick_scale:!1,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],"char":'\ud83d\ude28',fitzpatrick_scale:!1,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],"char":'\ud83d\ude30',fitzpatrick_scale:!1,category:"people"},hushed:{keywords:["face","woo","shh"],"char":'\ud83d\ude2f',fitzpatrick_scale:!1,category:"people"},frowning:{keywords:["face","aw","what"],"char":'\ud83d\ude26',fitzpatrick_scale:!1,category:"people"},anguished:{keywords:["face","stunned","nervous"],"char":'\ud83d\ude27',fitzpatrick_scale:!1,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],"char":'\ud83d\ude22',fitzpatrick_scale:!1,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],"char":'\ud83d\ude25',fitzpatrick_scale:!1,category:"people"},drooling_face:{keywords:["face"],"char":'\ud83e\udd24',fitzpatrick_scale:!1,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],"char":'\ud83d\ude2a',fitzpatrick_scale:!1,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],"char":'\ud83d\ude13',fitzpatrick_scale:!1,category:"people"},hot:{keywords:["face","feverish","heat","red","sweating"],"char":'\ud83e\udd75',fitzpatrick_scale:!1,category:"people"},cold:{keywords:["face","blue","freezing","frozen","frostbite","icicles"],"char":'\ud83e\udd76',fitzpatrick_scale:!1,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],"char":'\ud83d\ude2d',fitzpatrick_scale:!1,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],"char":'\ud83d\ude35',fitzpatrick_scale:!1,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],"char":'\ud83d\ude32',fitzpatrick_scale:!1,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],"char":'\ud83e\udd10',fitzpatrick_scale:!1,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],"char":'\ud83e\udd22',fitzpatrick_scale:!1,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],"char":'\ud83e\udd27',fitzpatrick_scale:!1,category:"people"},vomiting:{keywords:["face","sick"],"char":'\ud83e\udd2e',fitzpatrick_scale:!1,category:"people"},mask:{keywords:["face","sick","ill","disease"],"char":'\ud83d\ude37',fitzpatrick_scale:!1,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],"char":'\ud83e\udd12',fitzpatrick_scale:!1,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],"char":'\ud83e\udd15',fitzpatrick_scale:!1,category:"people"},woozy:{keywords:["face","dizzy","intoxicated","tipsy","wavy"],"char":'\ud83e\udd74',fitzpatrick_scale:!1,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],"char":'\ud83d\ude34',fitzpatrick_scale:!1,category:"people"},zzz:{keywords:["sleepy","tired","dream"],"char":'\ud83d\udca4',fitzpatrick_scale:!1,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],"char":'\ud83d\udca9',fitzpatrick_scale:!1,category:"people"},smiling_imp:{keywords:["devil","horns"],"char":'\ud83d\ude08',fitzpatrick_scale:!1,category:"people"},imp:{keywords:["devil","angry","horns"],"char":'\ud83d\udc7f',fitzpatrick_scale:!1,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],"char":'\ud83d\udc79',fitzpatrick_scale:!1,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],"char":'\ud83d\udc7a',fitzpatrick_scale:!1,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],"char":'\ud83d\udc80',fitzpatrick_scale:!1,category:"people"},ghost:{keywords:["halloween","spooky","scary"],"char":'\ud83d\udc7b',fitzpatrick_scale:!1,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],"char":'\ud83d\udc7d',fitzpatrick_scale:!1,category:"people"},robot:{keywords:["computer","machine","bot"],"char":'\ud83e\udd16',fitzpatrick_scale:!1,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],"char":'\ud83d\ude3a',fitzpatrick_scale:!1,category:"people"},smile_cat:{keywords:["animal","cats","smile"],"char":'\ud83d\ude38',fitzpatrick_scale:!1,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],"char":'\ud83d\ude39',fitzpatrick_scale:!1,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],"char":'\ud83d\ude3b',fitzpatrick_scale:!1,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],"char":'\ud83d\ude3c',fitzpatrick_scale:!1,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],"char":'\ud83d\ude3d',fitzpatrick_scale:!1,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],"char":'\ud83d\ude40',fitzpatrick_scale:!1,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],"char":'\ud83d\ude3f',fitzpatrick_scale:!1,category:"people"},pouting_cat:{keywords:["animal","cats"],"char":'\ud83d\ude3e',fitzpatrick_scale:!1,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],"char":'\ud83e\udd32',fitzpatrick_scale:!0,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],"char":'\ud83d\ude4c',fitzpatrick_scale:!0,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],"char":'\ud83d\udc4f',fitzpatrick_scale:!0,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],"char":'\ud83d\udc4b',fitzpatrick_scale:!0,category:"people"},call_me_hand:{keywords:["hands","gesture"],"char":'\ud83e\udd19',fitzpatrick_scale:!0,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],"char":'\ud83d\udc4d',fitzpatrick_scale:!0,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],"char":'\ud83d\udc4e',fitzpatrick_scale:!0,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],"char":'\ud83d\udc4a',fitzpatrick_scale:!0,category:"people"},fist:{keywords:["fingers","hand","grasp"],"char":'\u270a',fitzpatrick_scale:!0,category:"people"},fist_left:{keywords:["hand","fistbump"],"char":'\ud83e\udd1b',fitzpatrick_scale:!0,category:"people"},fist_right:{keywords:["hand","fistbump"],"char":'\ud83e\udd1c',fitzpatrick_scale:!0,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],"char":'\u270c',fitzpatrick_scale:!0,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],"char":'\ud83d\udc4c',fitzpatrick_scale:!0,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],"char":'\u270b',fitzpatrick_scale:!0,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],"char":'\ud83e\udd1a',fitzpatrick_scale:!0,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],"char":'\ud83d\udc50',fitzpatrick_scale:!0,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],"char":'\ud83d\udcaa',fitzpatrick_scale:!0,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],"char":'\ud83d\ude4f',fitzpatrick_scale:!0,category:"people"},foot:{keywords:["kick","stomp"],"char":'\ud83e\uddb6',fitzpatrick_scale:!0,category:"people"},leg:{keywords:["kick","limb"],"char":'\ud83e\uddb5',fitzpatrick_scale:!0,category:"people"},handshake:{keywords:["agreement","shake"],"char":'\ud83e\udd1d',fitzpatrick_scale:!1,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],"char":'\u261d',fitzpatrick_scale:!0,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],"char":'\ud83d\udc46',fitzpatrick_scale:!0,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],"char":'\ud83d\udc47',fitzpatrick_scale:!0,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],"char":'\ud83d\udc48',fitzpatrick_scale:!0,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],"char":'\ud83d\udc49',fitzpatrick_scale:!0,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],"char":'\ud83d\udd95',fitzpatrick_scale:!0,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],"char":'\ud83d\udd90',fitzpatrick_scale:!0,category:"people"},love_you:{keywords:["hand","fingers","gesture"],"char":'\ud83e\udd1f',fitzpatrick_scale:!0,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],"char":'\ud83e\udd18',fitzpatrick_scale:!0,category:"people"},crossed_fingers:{keywords:["good","lucky"],"char":'\ud83e\udd1e',fitzpatrick_scale:!0,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],"char":'\ud83d\udd96',fitzpatrick_scale:!0,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],"char":'\u270d',fitzpatrick_scale:!0,category:"people"},selfie:{keywords:["camera","phone"],"char":'\ud83e\udd33',fitzpatrick_scale:!0,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],"char":'\ud83d\udc85',fitzpatrick_scale:!0,category:"people"},lips:{keywords:["mouth","kiss"],"char":'\ud83d\udc44',fitzpatrick_scale:!1,category:"people"},tooth:{keywords:["teeth","dentist"],"char":'\ud83e\uddb7',fitzpatrick_scale:!1,category:"people"},tongue:{keywords:["mouth","playful"],"char":'\ud83d\udc45',fitzpatrick_scale:!1,category:"people"},ear:{keywords:["face","hear","sound","listen"],"char":'\ud83d\udc42',fitzpatrick_scale:!0,category:"people"},nose:{keywords:["smell","sniff"],"char":'\ud83d\udc43',fitzpatrick_scale:!0,category:"people"},eye:{keywords:["face","look","see","watch","stare"],"char":'\ud83d\udc41',fitzpatrick_scale:!1,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],"char":'\ud83d\udc40',fitzpatrick_scale:!1,category:"people"},brain:{keywords:["smart","intelligent"],"char":'\ud83e\udde0',fitzpatrick_scale:!1,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],"char":'\ud83d\udc64',fitzpatrick_scale:!1,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],"char":'\ud83d\udc65',fitzpatrick_scale:!1,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],"char":'\ud83d\udde3',fitzpatrick_scale:!1,category:"people"},baby:{keywords:["child","boy","girl","toddler"],"char":'\ud83d\udc76',fitzpatrick_scale:!0,category:"people"},child:{keywords:["gender-neutral","young"],"char":'\ud83e\uddd2',fitzpatrick_scale:!0,category:"people"},boy:{keywords:["man","male","guy","teenager"],"char":'\ud83d\udc66',fitzpatrick_scale:!0,category:"people"},girl:{keywords:["female","woman","teenager"],"char":'\ud83d\udc67',fitzpatrick_scale:!0,category:"people"},adult:{keywords:["gender-neutral","person"],"char":'\ud83e\uddd1',fitzpatrick_scale:!0,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],"char":'\ud83d\udc68',fitzpatrick_scale:!0,category:"people"},woman:{keywords:["female","girls","lady"],"char":'\ud83d\udc69',fitzpatrick_scale:!0,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],"char":'\ud83d\udc71\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],"char":'\ud83d\udc71',fitzpatrick_scale:!0,category:"people"},bearded_person:{keywords:["person","bewhiskered"],"char":'\ud83e\uddd4',fitzpatrick_scale:!0,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],"char":'\ud83e\uddd3',fitzpatrick_scale:!0,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],"char":'\ud83d\udc74',fitzpatrick_scale:!0,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],"char":'\ud83d\udc75',fitzpatrick_scale:!0,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],"char":'\ud83d\udc72',fitzpatrick_scale:!0,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],"char":'\ud83e\uddd5',fitzpatrick_scale:!0,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],"char":'\ud83d\udc73\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],"char":'\ud83d\udc73',fitzpatrick_scale:!0,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],"char":'\ud83d\udc6e\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],"char":'\ud83d\udc6e',fitzpatrick_scale:!0,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],"char":'\ud83d\udc77\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],"char":'\ud83d\udc77',fitzpatrick_scale:!0,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],"char":'\ud83d\udc82\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],"char":'\ud83d\udc82',fitzpatrick_scale:!0,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],"char":'\ud83d\udd75\ufe0f\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},male_detective:{keywords:["human","spy","detective"],"char":'\ud83d\udd75',fitzpatrick_scale:!0,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],"char":'\ud83d\udc69\u200d\u2695\ufe0f',fitzpatrick_scale:!0,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],"char":'\ud83d\udc68\u200d\u2695\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udf3e',fitzpatrick_scale:!0,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udf3e',fitzpatrick_scale:!0,category:"people"},woman_cook:{keywords:["chef","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udf73',fitzpatrick_scale:!0,category:"people"},man_cook:{keywords:["chef","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udf73',fitzpatrick_scale:!0,category:"people"},woman_student:{keywords:["graduate","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udf93',fitzpatrick_scale:!0,category:"people"},man_student:{keywords:["graduate","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udf93',fitzpatrick_scale:!0,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udfa4',fitzpatrick_scale:!0,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udfa4',fitzpatrick_scale:!0,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udfeb',fitzpatrick_scale:!0,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udfeb',fitzpatrick_scale:!0,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udfed',fitzpatrick_scale:!0,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udfed',fitzpatrick_scale:!0,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],"char":'\ud83d\udc69\u200d\ud83d\udcbb',fitzpatrick_scale:!0,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],"char":'\ud83d\udc68\u200d\ud83d\udcbb',fitzpatrick_scale:!0,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],"char":'\ud83d\udc69\u200d\ud83d\udcbc',fitzpatrick_scale:!0,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],"char":'\ud83d\udc68\u200d\ud83d\udcbc',fitzpatrick_scale:!0,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],"char":'\ud83d\udc69\u200d\ud83d\udd27',fitzpatrick_scale:!0,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],"char":'\ud83d\udc68\u200d\ud83d\udd27',fitzpatrick_scale:!0,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],"char":'\ud83d\udc69\u200d\ud83d\udd2c',fitzpatrick_scale:!0,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],"char":'\ud83d\udc68\u200d\ud83d\udd2c',fitzpatrick_scale:!0,category:"people"},woman_artist:{keywords:["painter","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udfa8',fitzpatrick_scale:!0,category:"people"},man_artist:{keywords:["painter","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udfa8',fitzpatrick_scale:!0,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],"char":'\ud83d\udc69\u200d\ud83d\ude92',fitzpatrick_scale:!0,category:"people"},man_firefighter:{keywords:["fireman","man","human"],"char":'\ud83d\udc68\u200d\ud83d\ude92',fitzpatrick_scale:!0,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],"char":'\ud83d\udc69\u200d\u2708\ufe0f',fitzpatrick_scale:!0,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],"char":'\ud83d\udc68\u200d\u2708\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],"char":'\ud83d\udc69\u200d\ud83d\ude80',fitzpatrick_scale:!0,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],"char":'\ud83d\udc68\u200d\ud83d\ude80',fitzpatrick_scale:!0,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],"char":'\ud83d\udc69\u200d\u2696\ufe0f',fitzpatrick_scale:!0,category:"people"},man_judge:{keywords:["justice","court","man","human"],"char":'\ud83d\udc68\u200d\u2696\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_superhero:{keywords:["woman","female","good","heroine","superpowers"],"char":'\ud83e\uddb8\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_superhero:{keywords:["man","male","good","hero","superpowers"],"char":'\ud83e\uddb8\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_supervillain:{keywords:["woman","female","evil","bad","criminal","heroine","superpowers"],"char":'\ud83e\uddb9\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_supervillain:{keywords:["man","male","evil","bad","criminal","hero","superpowers"],"char":'\ud83e\uddb9\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],"char":'\ud83e\udd36',fitzpatrick_scale:!0,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],"char":'\ud83c\udf85',fitzpatrick_scale:!0,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],"char":'\ud83e\uddd9\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],"char":'\ud83e\uddd9\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_elf:{keywords:["woman","female"],"char":'\ud83e\udddd\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_elf:{keywords:["man","male"],"char":'\ud83e\udddd\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_vampire:{keywords:["woman","female"],"char":'\ud83e\udddb\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_vampire:{keywords:["man","male","dracula"],"char":'\ud83e\udddb\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],"char":'\ud83e\udddf\u200d\u2640\ufe0f',fitzpatrick_scale:!1,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],"char":'\ud83e\udddf\u200d\u2642\ufe0f',fitzpatrick_scale:!1,category:"people"},woman_genie:{keywords:["woman","female"],"char":'\ud83e\uddde\u200d\u2640\ufe0f',fitzpatrick_scale:!1,category:"people"},man_genie:{keywords:["man","male"],"char":'\ud83e\uddde\u200d\u2642\ufe0f',fitzpatrick_scale:!1,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],"char":'\ud83e\udddc\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},merman:{keywords:["man","male","triton"],"char":'\ud83e\udddc\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_fairy:{keywords:["woman","female"],"char":'\ud83e\uddda\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_fairy:{keywords:["man","male"],"char":'\ud83e\uddda\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},angel:{keywords:["heaven","wings","halo"],"char":'\ud83d\udc7c',fitzpatrick_scale:!0,category:"people"},pregnant_woman:{keywords:["baby"],"char":'\ud83e\udd30',fitzpatrick_scale:!0,category:"people"},breastfeeding:{keywords:["nursing","baby"],"char":'\ud83e\udd31',fitzpatrick_scale:!0,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],"char":'\ud83d\udc78',fitzpatrick_scale:!0,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],"char":'\ud83e\udd34',fitzpatrick_scale:!0,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],"char":'\ud83d\udc70',fitzpatrick_scale:!0,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],"char":'\ud83e\udd35',fitzpatrick_scale:!0,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],"char":'\ud83c\udfc3\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],"char":'\ud83c\udfc3',fitzpatrick_scale:!0,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],"char":'\ud83d\udeb6\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},walking_man:{keywords:["human","feet","steps"],"char":'\ud83d\udeb6',fitzpatrick_scale:!0,category:"people"},dancer:{keywords:["female","girl","woman","fun"],"char":'\ud83d\udc83',fitzpatrick_scale:!0,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],"char":'\ud83d\udd7a',fitzpatrick_scale:!0,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],"char":'\ud83d\udc6f',fitzpatrick_scale:!1,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],"char":'\ud83d\udc6f\u200d\u2642\ufe0f',fitzpatrick_scale:!1,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],"char":'\ud83d\udc6b',fitzpatrick_scale:!1,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],"char":'\ud83d\udc6c',fitzpatrick_scale:!1,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],"char":'\ud83d\udc6d',fitzpatrick_scale:!1,category:"people"},bowing_woman:{keywords:["woman","female","girl"],"char":'\ud83d\ude47\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},bowing_man:{keywords:["man","male","boy"],"char":'\ud83d\ude47',fitzpatrick_scale:!0,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],"char":'\ud83e\udd26\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],"char":'\ud83e\udd26\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],"char":'\ud83e\udd37',fitzpatrick_scale:!0,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],"char":'\ud83e\udd37\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],"char":'\ud83d\udc81',fitzpatrick_scale:!0,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],"char":'\ud83d\udc81\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],"char":'\ud83d\ude45',fitzpatrick_scale:!0,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],"char":'\ud83d\ude45\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],"char":'\ud83d\ude46',fitzpatrick_scale:!0,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],"char":'\ud83d\ude46\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],"char":'\ud83d\ude4b',fitzpatrick_scale:!0,category:"people"},raising_hand_man:{keywords:["male","boy","man"],"char":'\ud83d\ude4b\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},pouting_woman:{keywords:["female","girl","woman"],"char":'\ud83d\ude4e',fitzpatrick_scale:!0,category:"people"},pouting_man:{keywords:["male","boy","man"],"char":'\ud83d\ude4e\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],"char":'\ud83d\ude4d',fitzpatrick_scale:!0,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],"char":'\ud83d\ude4d\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},haircut_woman:{keywords:["female","girl","woman"],"char":'\ud83d\udc87',fitzpatrick_scale:!0,category:"people"},haircut_man:{keywords:["male","boy","man"],"char":'\ud83d\udc87\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],"char":'\ud83d\udc86',fitzpatrick_scale:!0,category:"people"},massage_man:{keywords:["male","boy","man","head"],"char":'\ud83d\udc86\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],"char":'\ud83e\uddd6\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],"char":'\ud83e\uddd6\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":'\ud83d\udc91',fitzpatrick_scale:!1,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":'\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69',fitzpatrick_scale:!1,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":'\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68',fitzpatrick_scale:!1,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":'\ud83d\udc8f',fitzpatrick_scale:!1,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":'\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69',fitzpatrick_scale:!1,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],"char":'\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68',fitzpatrick_scale:!1,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],"char":'\ud83d\udc6a',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],"char":'\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],"char":'\ud83d\udc69\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],"char":'\ud83d\udc69\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],"char":'\ud83d\udc68\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],"char":'\ud83d\udc68\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},yarn:{keywords:["ball","crochet","knit"],"char":'\ud83e\uddf6',fitzpatrick_scale:!1,category:"people"},thread:{keywords:["needle","sewing","spool","string"],"char":'\ud83e\uddf5',fitzpatrick_scale:!1,category:"people"},coat:{keywords:["jacket"],"char":'\ud83e\udde5',fitzpatrick_scale:!1,category:"people"},labcoat:{keywords:["doctor","experiment","scientist","chemist"],"char":'\ud83e\udd7c',fitzpatrick_scale:!1,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],"char":'\ud83d\udc5a',fitzpatrick_scale:!1,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],"char":'\ud83d\udc55',fitzpatrick_scale:!1,category:"people"},jeans:{keywords:["fashion","shopping"],"char":'\ud83d\udc56',fitzpatrick_scale:!1,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],"char":'\ud83d\udc54',fitzpatrick_scale:!1,category:"people"},dress:{keywords:["clothes","fashion","shopping"],"char":'\ud83d\udc57',fitzpatrick_scale:!1,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],"char":'\ud83d\udc59',fitzpatrick_scale:!1,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],"char":'\ud83d\udc58',fitzpatrick_scale:!1,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],"char":'\ud83d\udc84',fitzpatrick_scale:!1,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],"char":'\ud83d\udc8b',fitzpatrick_scale:!1,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],"char":'\ud83d\udc63',fitzpatrick_scale:!1,category:"people"},flat_shoe:{keywords:["ballet","slip-on","slipper"],"char":'\ud83e\udd7f',fitzpatrick_scale:!1,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],"char":'\ud83d\udc60',fitzpatrick_scale:!1,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],"char":'\ud83d\udc61',fitzpatrick_scale:!1,category:"people"},boot:{keywords:["shoes","fashion"],"char":'\ud83d\udc62',fitzpatrick_scale:!1,category:"people"},mans_shoe:{keywords:["fashion","male"],"char":'\ud83d\udc5e',fitzpatrick_scale:!1,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],"char":'\ud83d\udc5f',fitzpatrick_scale:!1,category:"people"},hiking_boot:{keywords:["backpacking","camping","hiking"],"char":'\ud83e\udd7e',fitzpatrick_scale:!1,category:"people"},socks:{keywords:["stockings","clothes"],"char":'\ud83e\udde6',fitzpatrick_scale:!1,category:"people"},gloves:{keywords:["hands","winter","clothes"],"char":'\ud83e\udde4',fitzpatrick_scale:!1,category:"people"},scarf:{keywords:["neck","winter","clothes"],"char":'\ud83e\udde3',fitzpatrick_scale:!1,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],"char":'\ud83d\udc52',fitzpatrick_scale:!1,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],"char":'\ud83c\udfa9',fitzpatrick_scale:!1,category:"people"},billed_hat:{keywords:["cap","baseball"],"char":'\ud83e\udde2',fitzpatrick_scale:!1,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],"char":'\u26d1',fitzpatrick_scale:!1,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],"char":'\ud83c\udf93',fitzpatrick_scale:!1,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],"char":'\ud83d\udc51',fitzpatrick_scale:!1,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],"char":'\ud83c\udf92',fitzpatrick_scale:!1,category:"people"},luggage:{keywords:["packing","travel"],"char":'\ud83e\uddf3',fitzpatrick_scale:!1,category:"people"},pouch:{keywords:["bag","accessories","shopping"],"char":'\ud83d\udc5d',fitzpatrick_scale:!1,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],"char":'\ud83d\udc5b',fitzpatrick_scale:!1,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],"char":'\ud83d\udc5c',fitzpatrick_scale:!1,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],"char":'\ud83d\udcbc',fitzpatrick_scale:!1,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],"char":'\ud83d\udc53',fitzpatrick_scale:!1,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],"char":'\ud83d\udd76',fitzpatrick_scale:!1,category:"people"},goggles:{keywords:["eyes","protection","safety"],"char":'\ud83e\udd7d',fitzpatrick_scale:!1,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],"char":'\ud83d\udc8d',fitzpatrick_scale:!1,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],"char":'\ud83c\udf02',fitzpatrick_scale:!1,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],"char":'\ud83d\udc36',fitzpatrick_scale:!1,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],"char":'\ud83d\udc31',fitzpatrick_scale:!1,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],"char":'\ud83d\udc2d',fitzpatrick_scale:!1,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],"char":'\ud83d\udc39',fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],"char":'\ud83d\udc30',fitzpatrick_scale:!1,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],"char":'\ud83e\udd8a',fitzpatrick_scale:!1,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],"char":'\ud83d\udc3b',fitzpatrick_scale:!1,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],"char":'\ud83d\udc3c',fitzpatrick_scale:!1,category:"animals_and_nature"},koala:{keywords:["animal","nature"],"char":'\ud83d\udc28',fitzpatrick_scale:!1,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],"char":'\ud83d\udc2f',fitzpatrick_scale:!1,category:"animals_and_nature"},lion:{keywords:["animal","nature"],"char":'\ud83e\udd81',fitzpatrick_scale:!1,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],"char":'\ud83d\udc2e',fitzpatrick_scale:!1,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],"char":'\ud83d\udc37',fitzpatrick_scale:!1,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],"char":'\ud83d\udc3d',fitzpatrick_scale:!1,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],"char":'\ud83d\udc38',fitzpatrick_scale:!1,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],"char":'\ud83e\udd91',fitzpatrick_scale:!1,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],"char":'\ud83d\udc19',fitzpatrick_scale:!1,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],"char":'\ud83e\udd90',fitzpatrick_scale:!1,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],"char":'\ud83d\udc35',fitzpatrick_scale:!1,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],"char":'\ud83e\udd8d',fitzpatrick_scale:!1,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],"char":'\ud83d\ude48',fitzpatrick_scale:!1,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],"char":'\ud83d\ude49',fitzpatrick_scale:!1,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],"char":'\ud83d\ude4a',fitzpatrick_scale:!1,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],"char":'\ud83d\udc12',fitzpatrick_scale:!1,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],"char":'\ud83d\udc14',fitzpatrick_scale:!1,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],"char":'\ud83d\udc27',fitzpatrick_scale:!1,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],"char":'\ud83d\udc26',fitzpatrick_scale:!1,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],"char":'\ud83d\udc24',fitzpatrick_scale:!1,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],"char":'\ud83d\udc23',fitzpatrick_scale:!1,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],"char":'\ud83d\udc25',fitzpatrick_scale:!1,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],"char":'\ud83e\udd86',fitzpatrick_scale:!1,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],"char":'\ud83e\udd85',fitzpatrick_scale:!1,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],"char":'\ud83e\udd89',fitzpatrick_scale:!1,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],"char":'\ud83e\udd87',fitzpatrick_scale:!1,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],"char":'\ud83d\udc3a',fitzpatrick_scale:!1,category:"animals_and_nature"},boar:{keywords:["animal","nature"],"char":'\ud83d\udc17',fitzpatrick_scale:!1,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],"char":'\ud83d\udc34',fitzpatrick_scale:!1,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],"char":'\ud83e\udd84',fitzpatrick_scale:!1,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],"char":'\ud83d\udc1d',fitzpatrick_scale:!1,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],"char":'\ud83d\udc1b',fitzpatrick_scale:!1,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],"char":'\ud83e\udd8b',fitzpatrick_scale:!1,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],"char":'\ud83d\udc0c',fitzpatrick_scale:!1,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],"char":'\ud83d\udc1e',fitzpatrick_scale:!1,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],"char":'\ud83d\udc1c',fitzpatrick_scale:!1,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],"char":'\ud83e\udd97',fitzpatrick_scale:!1,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],"char":'\ud83d\udd77',fitzpatrick_scale:!1,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],"char":'\ud83e\udd82',fitzpatrick_scale:!1,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],"char":'\ud83e\udd80',fitzpatrick_scale:!1,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],"char":'\ud83d\udc0d',fitzpatrick_scale:!1,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],"char":'\ud83e\udd8e',fitzpatrick_scale:!1,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],"char":'\ud83e\udd96',fitzpatrick_scale:!1,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],"char":'\ud83e\udd95',fitzpatrick_scale:!1,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],"char":'\ud83d\udc22',fitzpatrick_scale:!1,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],"char":'\ud83d\udc20',fitzpatrick_scale:!1,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],"char":'\ud83d\udc1f',fitzpatrick_scale:!1,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],"char":'\ud83d\udc21',fitzpatrick_scale:!1,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],"char":'\ud83d\udc2c',fitzpatrick_scale:!1,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],"char":'\ud83e\udd88',fitzpatrick_scale:!1,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],"char":'\ud83d\udc33',fitzpatrick_scale:!1,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],"char":'\ud83d\udc0b',fitzpatrick_scale:!1,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],"char":'\ud83d\udc0a',fitzpatrick_scale:!1,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],"char":'\ud83d\udc06',fitzpatrick_scale:!1,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],"char":'\ud83e\udd93',fitzpatrick_scale:!1,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],"char":'\ud83d\udc05',fitzpatrick_scale:!1,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],"char":'\ud83d\udc03',fitzpatrick_scale:!1,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],"char":'\ud83d\udc02',fitzpatrick_scale:!1,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],"char":'\ud83d\udc04',fitzpatrick_scale:!1,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],"char":'\ud83e\udd8c',fitzpatrick_scale:!1,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],"char":'\ud83d\udc2a',fitzpatrick_scale:!1,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],"char":'\ud83d\udc2b',fitzpatrick_scale:!1,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],"char":'\ud83e\udd92',fitzpatrick_scale:!1,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],"char":'\ud83d\udc18',fitzpatrick_scale:!1,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],"char":'\ud83e\udd8f',fitzpatrick_scale:!1,category:"animals_and_nature"},goat:{keywords:["animal","nature"],"char":'\ud83d\udc10',fitzpatrick_scale:!1,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],"char":'\ud83d\udc0f',fitzpatrick_scale:!1,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],"char":'\ud83d\udc11',fitzpatrick_scale:!1,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],"char":'\ud83d\udc0e',fitzpatrick_scale:!1,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],"char":'\ud83d\udc16',fitzpatrick_scale:!1,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],"char":'\ud83d\udc00',fitzpatrick_scale:!1,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],"char":'\ud83d\udc01',fitzpatrick_scale:!1,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],"char":'\ud83d\udc13',fitzpatrick_scale:!1,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],"char":'\ud83e\udd83',fitzpatrick_scale:!1,category:"animals_and_nature"},dove:{keywords:["animal","bird"],"char":'\ud83d\udd4a',fitzpatrick_scale:!1,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],"char":'\ud83d\udc15',fitzpatrick_scale:!1,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],"char":'\ud83d\udc29',fitzpatrick_scale:!1,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],"char":'\ud83d\udc08',fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],"char":'\ud83d\udc07',fitzpatrick_scale:!1,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],"char":'\ud83d\udc3f',fitzpatrick_scale:!1,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],"char":'\ud83e\udd94',fitzpatrick_scale:!1,category:"animals_and_nature"},raccoon:{keywords:["animal","nature"],"char":'\ud83e\udd9d',fitzpatrick_scale:!1,category:"animals_and_nature"},llama:{keywords:["animal","nature","alpaca"],"char":'\ud83e\udd99',fitzpatrick_scale:!1,category:"animals_and_nature"},hippopotamus:{keywords:["animal","nature"],"char":'\ud83e\udd9b',fitzpatrick_scale:!1,category:"animals_and_nature"},kangaroo:{keywords:["animal","nature","australia","joey","hop","marsupial"],"char":'\ud83e\udd98',fitzpatrick_scale:!1,category:"animals_and_nature"},badger:{keywords:["animal","nature","honey"],"char":'\ud83e\udda1',fitzpatrick_scale:!1,category:"animals_and_nature"},swan:{keywords:["animal","nature","bird"],"char":'\ud83e\udda2',fitzpatrick_scale:!1,category:"animals_and_nature"},peacock:{keywords:["animal","nature","peahen","bird"],"char":'\ud83e\udd9a',fitzpatrick_scale:!1,category:"animals_and_nature"},parrot:{keywords:["animal","nature","bird","pirate","talk"],"char":'\ud83e\udd9c',fitzpatrick_scale:!1,category:"animals_and_nature"},lobster:{keywords:["animal","nature","bisque","claws","seafood"],"char":'\ud83e\udd9e',fitzpatrick_scale:!1,category:"animals_and_nature"},mosquito:{keywords:["animal","nature","insect","malaria"],"char":'\ud83e\udd9f',fitzpatrick_scale:!1,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],"char":'\ud83d\udc3e',fitzpatrick_scale:!1,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],"char":'\ud83d\udc09',fitzpatrick_scale:!1,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],"char":'\ud83d\udc32',fitzpatrick_scale:!1,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],"char":'\ud83c\udf35',fitzpatrick_scale:!1,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],"char":'\ud83c\udf84',fitzpatrick_scale:!1,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],"char":'\ud83c\udf32',fitzpatrick_scale:!1,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],"char":'\ud83c\udf33',fitzpatrick_scale:!1,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],"char":'\ud83c\udf34',fitzpatrick_scale:!1,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],"char":'\ud83c\udf31',fitzpatrick_scale:!1,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],"char":'\ud83c\udf3f',fitzpatrick_scale:!1,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],"char":'\u2618',fitzpatrick_scale:!1,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],"char":'\ud83c\udf40',fitzpatrick_scale:!1,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],"char":'\ud83c\udf8d',fitzpatrick_scale:!1,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],"char":'\ud83c\udf8b',fitzpatrick_scale:!1,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],"char":'\ud83c\udf43',fitzpatrick_scale:!1,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],"char":'\ud83c\udf42',fitzpatrick_scale:!1,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],"char":'\ud83c\udf41',fitzpatrick_scale:!1,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],"char":'\ud83c\udf3e',fitzpatrick_scale:!1,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],"char":'\ud83c\udf3a',fitzpatrick_scale:!1,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],"char":'\ud83c\udf3b',fitzpatrick_scale:!1,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],"char":'\ud83c\udf39',fitzpatrick_scale:!1,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],"char":'\ud83e\udd40',fitzpatrick_scale:!1,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],"char":'\ud83c\udf37',fitzpatrick_scale:!1,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],"char":'\ud83c\udf3c',fitzpatrick_scale:!1,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],"char":'\ud83c\udf38',fitzpatrick_scale:!1,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],"char":'\ud83d\udc90',fitzpatrick_scale:!1,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],"char":'\ud83c\udf44',fitzpatrick_scale:!1,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],"char":'\ud83c\udf30',fitzpatrick_scale:!1,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],"char":'\ud83c\udf83',fitzpatrick_scale:!1,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],"char":'\ud83d\udc1a',fitzpatrick_scale:!1,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],"char":'\ud83d\udd78',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],"char":'\ud83c\udf0e',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],"char":'\ud83c\udf0d',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],"char":'\ud83c\udf0f',fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf15',fitzpatrick_scale:!1,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],"char":'\ud83c\udf16',fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf17',fitzpatrick_scale:!1,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf18',fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf11',fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf12',fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf13',fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],"char":'\ud83c\udf14',fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf1a',fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf1d',fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf1b',fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf1c',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],"char":'\ud83c\udf1e',fitzpatrick_scale:!1,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],"char":'\ud83c\udf19',fitzpatrick_scale:!1,category:"animals_and_nature"},star:{keywords:["night","yellow"],"char":'\u2b50',fitzpatrick_scale:!1,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],"char":'\ud83c\udf1f',fitzpatrick_scale:!1,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],"char":'\ud83d\udcab',fitzpatrick_scale:!1,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],"char":'\u2728',fitzpatrick_scale:!1,category:"animals_and_nature"},comet:{keywords:["space"],"char":'\u2604',fitzpatrick_scale:!1,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],"char":'\u2600\ufe0f',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],"char":'\ud83c\udf24',fitzpatrick_scale:!1,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],"char":'\u26c5',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],"char":'\ud83c\udf25',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],"char":'\ud83c\udf26',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],"char":'\u2601\ufe0f',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],"char":'\ud83c\udf27',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],"char":'\u26c8',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],"char":'\ud83c\udf29',fitzpatrick_scale:!1,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],"char":'\u26a1',fitzpatrick_scale:!1,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],"char":'\ud83d\udd25',fitzpatrick_scale:!1,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],"char":'\ud83d\udca5',fitzpatrick_scale:!1,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],"char":'\u2744\ufe0f',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],"char":'\ud83c\udf28',fitzpatrick_scale:!1,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],"char":'\u26c4',fitzpatrick_scale:!1,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],"char":'\u2603',fitzpatrick_scale:!1,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],"char":'\ud83c\udf2c',fitzpatrick_scale:!1,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],"char":'\ud83d\udca8',fitzpatrick_scale:!1,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],"char":'\ud83c\udf2a',fitzpatrick_scale:!1,category:"animals_and_nature"},fog:{keywords:["weather"],"char":'\ud83c\udf2b',fitzpatrick_scale:!1,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],"char":'\u2602',fitzpatrick_scale:!1,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],"char":'\u2614',fitzpatrick_scale:!1,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],"char":'\ud83d\udca7',fitzpatrick_scale:!1,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],"char":'\ud83d\udca6',fitzpatrick_scale:!1,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],"char":'\ud83c\udf0a',fitzpatrick_scale:!1,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],"char":'\ud83c\udf4f',fitzpatrick_scale:!1,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],"char":'\ud83c\udf4e',fitzpatrick_scale:!1,category:"food_and_drink"},pear:{keywords:["fruit","nature","food"],"char":'\ud83c\udf50',fitzpatrick_scale:!1,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],"char":'\ud83c\udf4a',fitzpatrick_scale:!1,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],"char":'\ud83c\udf4b',fitzpatrick_scale:!1,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],"char":'\ud83c\udf4c',fitzpatrick_scale:!1,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],"char":'\ud83c\udf49',fitzpatrick_scale:!1,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],"char":'\ud83c\udf47',fitzpatrick_scale:!1,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],"char":'\ud83c\udf53',fitzpatrick_scale:!1,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],"char":'\ud83c\udf48',fitzpatrick_scale:!1,category:"food_and_drink"},cherries:{keywords:["food","fruit"],"char":'\ud83c\udf52',fitzpatrick_scale:!1,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],"char":'\ud83c\udf51',fitzpatrick_scale:!1,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],"char":'\ud83c\udf4d',fitzpatrick_scale:!1,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],"char":'\ud83e\udd65',fitzpatrick_scale:!1,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],"char":'\ud83e\udd5d',fitzpatrick_scale:!1,category:"food_and_drink"},mango:{keywords:["fruit","food","tropical"],"char":'\ud83e\udd6d',fitzpatrick_scale:!1,category:"food_and_drink"},avocado:{keywords:["fruit","food"],"char":'\ud83e\udd51',fitzpatrick_scale:!1,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],"char":'\ud83e\udd66',fitzpatrick_scale:!1,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],"char":'\ud83c\udf45',fitzpatrick_scale:!1,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],"char":'\ud83c\udf46',fitzpatrick_scale:!1,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],"char":'\ud83e\udd52',fitzpatrick_scale:!1,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],"char":'\ud83e\udd55',fitzpatrick_scale:!1,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],"char":'\ud83c\udf36',fitzpatrick_scale:!1,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],"char":'\ud83e\udd54',fitzpatrick_scale:!1,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],"char":'\ud83c\udf3d',fitzpatrick_scale:!1,category:"food_and_drink"},leafy_greens:{keywords:["food","vegetable","plant","bok choy","cabbage","kale","lettuce"],"char":'\ud83e\udd6c',fitzpatrick_scale:!1,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],"char":'\ud83c\udf60',fitzpatrick_scale:!1,category:"food_and_drink"},peanuts:{keywords:["food","nut"],"char":'\ud83e\udd5c',fitzpatrick_scale:!1,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],"char":'\ud83c\udf6f',fitzpatrick_scale:!1,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],"char":'\ud83e\udd50',fitzpatrick_scale:!1,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],"char":'\ud83c\udf5e',fitzpatrick_scale:!1,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],"char":'\ud83e\udd56',fitzpatrick_scale:!1,category:"food_and_drink"},bagel:{keywords:["food","bread","bakery","schmear"],"char":'\ud83e\udd6f',fitzpatrick_scale:!1,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],"char":'\ud83e\udd68',fitzpatrick_scale:!1,category:"food_and_drink"},cheese:{keywords:["food","chadder"],"char":'\ud83e\uddc0',fitzpatrick_scale:!1,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],"char":'\ud83e\udd5a',fitzpatrick_scale:!1,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],"char":'\ud83e\udd53',fitzpatrick_scale:!1,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],"char":'\ud83e\udd69',fitzpatrick_scale:!1,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],"char":'\ud83e\udd5e',fitzpatrick_scale:!1,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],"char":'\ud83c\udf57',fitzpatrick_scale:!1,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],"char":'\ud83c\udf56',fitzpatrick_scale:!1,category:"food_and_drink"},bone:{keywords:["skeleton"],"char":'\ud83e\uddb4',fitzpatrick_scale:!1,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],"char":'\ud83c\udf64',fitzpatrick_scale:!1,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],"char":'\ud83c\udf73',fitzpatrick_scale:!1,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],"char":'\ud83c\udf54',fitzpatrick_scale:!1,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],"char":'\ud83c\udf5f',fitzpatrick_scale:!1,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],"char":'\ud83e\udd59',fitzpatrick_scale:!1,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],"char":'\ud83c\udf2d',fitzpatrick_scale:!1,category:"food_and_drink"},pizza:{keywords:["food","party"],"char":'\ud83c\udf55',fitzpatrick_scale:!1,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],"char":'\ud83e\udd6a',fitzpatrick_scale:!1,category:"food_and_drink"},canned_food:{keywords:["food","soup"],"char":'\ud83e\udd6b',fitzpatrick_scale:!1,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],"char":'\ud83c\udf5d',fitzpatrick_scale:!1,category:"food_and_drink"},taco:{keywords:["food","mexican"],"char":'\ud83c\udf2e',fitzpatrick_scale:!1,category:"food_and_drink"},burrito:{keywords:["food","mexican"],"char":'\ud83c\udf2f',fitzpatrick_scale:!1,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],"char":'\ud83e\udd57',fitzpatrick_scale:!1,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],"char":'\ud83e\udd58',fitzpatrick_scale:!1,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],"char":'\ud83c\udf5c',fitzpatrick_scale:!1,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],"char":'\ud83c\udf72',fitzpatrick_scale:!1,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],"char":'\ud83c\udf65',fitzpatrick_scale:!1,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],"char":'\ud83e\udd60',fitzpatrick_scale:!1,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],"char":'\ud83c\udf63',fitzpatrick_scale:!1,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],"char":'\ud83c\udf71',fitzpatrick_scale:!1,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],"char":'\ud83c\udf5b',fitzpatrick_scale:!1,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],"char":'\ud83c\udf59',fitzpatrick_scale:!1,category:"food_and_drink"},rice:{keywords:["food","china","asian"],"char":'\ud83c\udf5a',fitzpatrick_scale:!1,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],"char":'\ud83c\udf58',fitzpatrick_scale:!1,category:"food_and_drink"},oden:{keywords:["food","japanese"],"char":'\ud83c\udf62',fitzpatrick_scale:!1,category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],"char":'\ud83c\udf61',fitzpatrick_scale:!1,category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],"char":'\ud83c\udf67',fitzpatrick_scale:!1,category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],"char":'\ud83c\udf68',fitzpatrick_scale:!1,category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],"char":'\ud83c\udf66',fitzpatrick_scale:!1,category:"food_and_drink"},pie:{keywords:["food","dessert","pastry"],"char":'\ud83e\udd67',fitzpatrick_scale:!1,category:"food_and_drink"},cake:{keywords:["food","dessert"],"char":'\ud83c\udf70',fitzpatrick_scale:!1,category:"food_and_drink"},cupcake:{keywords:["food","dessert","bakery","sweet"],"char":'\ud83e\uddc1',fitzpatrick_scale:!1,category:"food_and_drink"},moon_cake:{keywords:["food","autumn"],"char":'\ud83e\udd6e',fitzpatrick_scale:!1,category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],"char":'\ud83c\udf82',fitzpatrick_scale:!1,category:"food_and_drink"},custard:{keywords:["dessert","food"],"char":'\ud83c\udf6e',fitzpatrick_scale:!1,category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],"char":'\ud83c\udf6c',fitzpatrick_scale:!1,category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],"char":'\ud83c\udf6d',fitzpatrick_scale:!1,category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],"char":'\ud83c\udf6b',fitzpatrick_scale:!1,category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],"char":'\ud83c\udf7f',fitzpatrick_scale:!1,category:"food_and_drink"},dumpling:{keywords:["food","empanada","pierogi","potsticker"],"char":'\ud83e\udd5f',fitzpatrick_scale:!1,category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],"char":'\ud83c\udf69',fitzpatrick_scale:!1,category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],"char":'\ud83c\udf6a',fitzpatrick_scale:!1,category:"food_and_drink"},milk_glass:{keywords:["beverage","drink","cow"],"char":'\ud83e\udd5b',fitzpatrick_scale:!1,category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":'\ud83c\udf7a',fitzpatrick_scale:!1,category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":'\ud83c\udf7b',fitzpatrick_scale:!1,category:"food_and_drink"},clinking_glasses:{keywords:["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],"char":'\ud83e\udd42',fitzpatrick_scale:!1,category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],"char":'\ud83c\udf77',fitzpatrick_scale:!1,category:"food_and_drink"},tumbler_glass:{keywords:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],"char":'\ud83e\udd43',fitzpatrick_scale:!1,category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],"char":'\ud83c\udf78',fitzpatrick_scale:!1,category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],"char":'\ud83c\udf79',fitzpatrick_scale:!1,category:"food_and_drink"},champagne:{keywords:["drink","wine","bottle","celebration"],"char":'\ud83c\udf7e',fitzpatrick_scale:!1,category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],"char":'\ud83c\udf76',fitzpatrick_scale:!1,category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],"char":'\ud83c\udf75',fitzpatrick_scale:!1,category:"food_and_drink"},cup_with_straw:{keywords:["drink","soda"],"char":'\ud83e\udd64',fitzpatrick_scale:!1,category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],"char":'\u2615',fitzpatrick_scale:!1,category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],"char":'\ud83c\udf7c',fitzpatrick_scale:!1,category:"food_and_drink"},salt:{keywords:["condiment","shaker"],"char":'\ud83e\uddc2',fitzpatrick_scale:!1,category:"food_and_drink"},spoon:{keywords:["cutlery","kitchen","tableware"],"char":'\ud83e\udd44',fitzpatrick_scale:!1,category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],"char":'\ud83c\udf74',fitzpatrick_scale:!1,category:"food_and_drink"},plate_with_cutlery:{keywords:["food","eat","meal","lunch","dinner","restaurant"],"char":'\ud83c\udf7d',fitzpatrick_scale:!1,category:"food_and_drink"},bowl_with_spoon:{keywords:["food","breakfast","cereal","oatmeal","porridge"],"char":'\ud83e\udd63',fitzpatrick_scale:!1,category:"food_and_drink"},takeout_box:{keywords:["food","leftovers"],"char":'\ud83e\udd61',fitzpatrick_scale:!1,category:"food_and_drink"},chopsticks:{keywords:["food"],"char":'\ud83e\udd62',fitzpatrick_scale:!1,category:"food_and_drink"},soccer:{keywords:["sports","football"],"char":'\u26bd',fitzpatrick_scale:!1,category:"activity"},basketball:{keywords:["sports","balls","NBA"],"char":'\ud83c\udfc0',fitzpatrick_scale:!1,category:"activity"},football:{keywords:["sports","balls","NFL"],"char":'\ud83c\udfc8',fitzpatrick_scale:!1,category:"activity"},baseball:{keywords:["sports","balls"],"char":'\u26be',fitzpatrick_scale:!1,category:"activity"},softball:{keywords:["sports","balls"],"char":'\ud83e\udd4e',fitzpatrick_scale:!1,category:"activity"},tennis:{keywords:["sports","balls","green"],"char":'\ud83c\udfbe',fitzpatrick_scale:!1,category:"activity"},volleyball:{keywords:["sports","balls"],"char":'\ud83c\udfd0',fitzpatrick_scale:!1,category:"activity"},rugby_football:{keywords:["sports","team"],"char":'\ud83c\udfc9',fitzpatrick_scale:!1,category:"activity"},flying_disc:{keywords:["sports","frisbee","ultimate"],"char":'\ud83e\udd4f',fitzpatrick_scale:!1,category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],"char":'\ud83c\udfb1',fitzpatrick_scale:!1,category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],"char":'\u26f3',fitzpatrick_scale:!1,category:"activity"},golfing_woman:{keywords:["sports","business","woman","female"],"char":'\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f',fitzpatrick_scale:!1,category:"activity"},golfing_man:{keywords:["sports","business"],"char":'\ud83c\udfcc',fitzpatrick_scale:!0,category:"activity"},ping_pong:{keywords:["sports","pingpong"],"char":'\ud83c\udfd3',fitzpatrick_scale:!1,category:"activity"},badminton:{keywords:["sports"],"char":'\ud83c\udff8',fitzpatrick_scale:!1,category:"activity"},goal_net:{keywords:["sports"],"char":'\ud83e\udd45',fitzpatrick_scale:!1,category:"activity"},ice_hockey:{keywords:["sports"],"char":'\ud83c\udfd2',fitzpatrick_scale:!1,category:"activity"},field_hockey:{keywords:["sports"],"char":'\ud83c\udfd1',fitzpatrick_scale:!1,category:"activity"},lacrosse:{keywords:["sports","ball","stick"],"char":'\ud83e\udd4d',fitzpatrick_scale:!1,category:"activity"},cricket:{keywords:["sports"],"char":'\ud83c\udfcf',fitzpatrick_scale:!1,category:"activity"},ski:{keywords:["sports","winter","cold","snow"],"char":'\ud83c\udfbf',fitzpatrick_scale:!1,category:"activity"},skier:{keywords:["sports","winter","snow"],"char":'\u26f7',fitzpatrick_scale:!1,category:"activity"},snowboarder:{keywords:["sports","winter"],"char":'\ud83c\udfc2',fitzpatrick_scale:!0,category:"activity"},person_fencing:{keywords:["sports","fencing","sword"],"char":'\ud83e\udd3a',fitzpatrick_scale:!1,category:"activity"},women_wrestling:{keywords:["sports","wrestlers"],"char":'\ud83e\udd3c\u200d\u2640\ufe0f',fitzpatrick_scale:!1,category:"activity"},men_wrestling:{keywords:["sports","wrestlers"],"char":'\ud83e\udd3c\u200d\u2642\ufe0f',fitzpatrick_scale:!1,category:"activity"},woman_cartwheeling:{keywords:["gymnastics"],"char":'\ud83e\udd38\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},man_cartwheeling:{keywords:["gymnastics"],"char":'\ud83e\udd38\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},woman_playing_handball:{keywords:["sports"],"char":'\ud83e\udd3e\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},man_playing_handball:{keywords:["sports"],"char":'\ud83e\udd3e\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},ice_skate:{keywords:["sports"],"char":'\u26f8',fitzpatrick_scale:!1,category:"activity"},curling_stone:{keywords:["sports"],"char":'\ud83e\udd4c',fitzpatrick_scale:!1,category:"activity"},skateboard:{keywords:["board"],"char":'\ud83d\udef9',fitzpatrick_scale:!1,category:"activity"},sled:{keywords:["sleigh","luge","toboggan"],"char":'\ud83d\udef7',fitzpatrick_scale:!1,category:"activity"},bow_and_arrow:{keywords:["sports"],"char":'\ud83c\udff9',fitzpatrick_scale:!1,category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],"char":'\ud83c\udfa3',fitzpatrick_scale:!1,category:"activity"},boxing_glove:{keywords:["sports","fighting"],"char":'\ud83e\udd4a',fitzpatrick_scale:!1,category:"activity"},martial_arts_uniform:{keywords:["judo","karate","taekwondo"],"char":'\ud83e\udd4b',fitzpatrick_scale:!1,category:"activity"},rowing_woman:{keywords:["sports","hobby","water","ship","woman","female"],"char":'\ud83d\udea3\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},rowing_man:{keywords:["sports","hobby","water","ship"],"char":'\ud83d\udea3',fitzpatrick_scale:!0,category:"activity"},climbing_woman:{keywords:["sports","hobby","woman","female","rock"],"char":'\ud83e\uddd7\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},climbing_man:{keywords:["sports","hobby","man","male","rock"],"char":'\ud83e\uddd7\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},swimming_woman:{keywords:["sports","exercise","human","athlete","water","summer","woman","female"],"char":'\ud83c\udfca\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},swimming_man:{keywords:["sports","exercise","human","athlete","water","summer"],"char":'\ud83c\udfca',fitzpatrick_scale:!0,category:"activity"},woman_playing_water_polo:{keywords:["sports","pool"],"char":'\ud83e\udd3d\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},man_playing_water_polo:{keywords:["sports","pool"],"char":'\ud83e\udd3d\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},woman_in_lotus_position:{keywords:["woman","female","meditation","yoga","serenity","zen","mindfulness"],"char":'\ud83e\uddd8\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},man_in_lotus_position:{keywords:["man","male","meditation","yoga","serenity","zen","mindfulness"],"char":'\ud83e\uddd8\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},surfing_woman:{keywords:["sports","ocean","sea","summer","beach","woman","female"],"char":'\ud83c\udfc4\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},surfing_man:{keywords:["sports","ocean","sea","summer","beach"],"char":'\ud83c\udfc4',fitzpatrick_scale:!0,category:"activity"},bath:{keywords:["clean","shower","bathroom"],"char":'\ud83d\udec0',fitzpatrick_scale:!0,category:"activity"},basketball_woman:{keywords:["sports","human","woman","female"],"char":'\u26f9\ufe0f\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},basketball_man:{keywords:["sports","human"],"char":'\u26f9',fitzpatrick_scale:!0,category:"activity"},weight_lifting_woman:{keywords:["sports","training","exercise","woman","female"],"char":'\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},weight_lifting_man:{keywords:["sports","training","exercise"],"char":'\ud83c\udfcb',fitzpatrick_scale:!0,category:"activity"},biking_woman:{keywords:["sports","bike","exercise","hipster","woman","female"],"char":'\ud83d\udeb4\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},biking_man:{keywords:["sports","bike","exercise","hipster"],"char":'\ud83d\udeb4',fitzpatrick_scale:!0,category:"activity"},mountain_biking_woman:{keywords:["transportation","sports","human","race","bike","woman","female"],"char":'\ud83d\udeb5\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},mountain_biking_man:{keywords:["transportation","sports","human","race","bike"],"char":'\ud83d\udeb5',fitzpatrick_scale:!0,category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],"char":'\ud83c\udfc7',fitzpatrick_scale:!0,category:"activity"},business_suit_levitating:{keywords:["suit","business","levitate","hover","jump"],"char":'\ud83d\udd74',fitzpatrick_scale:!0,category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],"char":'\ud83c\udfc6',fitzpatrick_scale:!1,category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],"char":'\ud83c\udfbd',fitzpatrick_scale:!1,category:"activity"},medal_sports:{keywords:["award","winning"],"char":'\ud83c\udfc5',fitzpatrick_scale:!1,category:"activity"},medal_military:{keywords:["award","winning","army"],"char":'\ud83c\udf96',fitzpatrick_scale:!1,category:"activity"},"1st_place_medal":{keywords:["award","winning","first"],"char":'\ud83e\udd47',fitzpatrick_scale:!1,category:"activity"},"2nd_place_medal":{keywords:["award","second"],"char":'\ud83e\udd48',fitzpatrick_scale:!1,category:"activity"},"3rd_place_medal":{keywords:["award","third"],"char":'\ud83e\udd49',fitzpatrick_scale:!1,category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],"char":'\ud83c\udf97',fitzpatrick_scale:!1,category:"activity"},rosette:{keywords:["flower","decoration","military"],"char":'\ud83c\udff5',fitzpatrick_scale:!1,category:"activity"},ticket:{keywords:["event","concert","pass"],"char":'\ud83c\udfab',fitzpatrick_scale:!1,category:"activity"},tickets:{keywords:["sports","concert","entrance"],"char":'\ud83c\udf9f',fitzpatrick_scale:!1,category:"activity"},performing_arts:{keywords:["acting","theater","drama"],"char":'\ud83c\udfad',fitzpatrick_scale:!1,category:"activity"},art:{keywords:["design","paint","draw","colors"],"char":'\ud83c\udfa8',fitzpatrick_scale:!1,category:"activity"},circus_tent:{keywords:["festival","carnival","party"],"char":'\ud83c\udfaa',fitzpatrick_scale:!1,category:"activity"},woman_juggling:{keywords:["juggle","balance","skill","multitask"],"char":'\ud83e\udd39\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},man_juggling:{keywords:["juggle","balance","skill","multitask"],"char":'\ud83e\udd39\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},microphone:{keywords:["sound","music","PA","sing","talkshow"],"char":'\ud83c\udfa4',fitzpatrick_scale:!1,category:"activity"},headphones:{keywords:["music","score","gadgets"],"char":'\ud83c\udfa7',fitzpatrick_scale:!1,category:"activity"},musical_score:{keywords:["treble","clef","compose"],"char":'\ud83c\udfbc',fitzpatrick_scale:!1,category:"activity"},musical_keyboard:{keywords:["piano","instrument","compose"],"char":'\ud83c\udfb9',fitzpatrick_scale:!1,category:"activity"},drum:{keywords:["music","instrument","drumsticks","snare"],"char":'\ud83e\udd41',fitzpatrick_scale:!1,category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],"char":'\ud83c\udfb7',fitzpatrick_scale:!1,category:"activity"},trumpet:{keywords:["music","brass"],"char":'\ud83c\udfba',fitzpatrick_scale:!1,category:"activity"},guitar:{keywords:["music","instrument"],"char":'\ud83c\udfb8',fitzpatrick_scale:!1,category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],"char":'\ud83c\udfbb',fitzpatrick_scale:!1,category:"activity"},clapper:{keywords:["movie","film","record"],"char":'\ud83c\udfac',fitzpatrick_scale:!1,category:"activity"},video_game:{keywords:["play","console","PS4","controller"],"char":'\ud83c\udfae',fitzpatrick_scale:!1,category:"activity"},space_invader:{keywords:["game","arcade","play"],"char":'\ud83d\udc7e',fitzpatrick_scale:!1,category:"activity"},dart:{keywords:["game","play","bar","target","bullseye"],"char":'\ud83c\udfaf',fitzpatrick_scale:!1,category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],"char":'\ud83c\udfb2',fitzpatrick_scale:!1,category:"activity"},chess_pawn:{keywords:["expendable"],"char":"\u265f",fitzpatrick_scale:!1,category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],"char":'\ud83c\udfb0',fitzpatrick_scale:!1,category:"activity"},jigsaw:{keywords:["interlocking","puzzle","piece"],"char":'\ud83e\udde9',fitzpatrick_scale:!1,category:"activity"},bowling:{keywords:["sports","fun","play"],"char":'\ud83c\udfb3',fitzpatrick_scale:!1,category:"activity"},red_car:{keywords:["red","transportation","vehicle"],"char":'\ud83d\ude97',fitzpatrick_scale:!1,category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],"char":'\ud83d\ude95',fitzpatrick_scale:!1,category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],"char":'\ud83d\ude99',fitzpatrick_scale:!1,category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],"char":'\ud83d\ude8c',fitzpatrick_scale:!1,category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],"char":'\ud83d\ude8e',fitzpatrick_scale:!1,category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],"char":'\ud83c\udfce',fitzpatrick_scale:!1,category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],"char":'\ud83d\ude93',fitzpatrick_scale:!1,category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],"char":'\ud83d\ude91',fitzpatrick_scale:!1,category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],"char":'\ud83d\ude92',fitzpatrick_scale:!1,category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],"char":'\ud83d\ude90',fitzpatrick_scale:!1,category:"travel_and_places"},truck:{keywords:["cars","transportation"],"char":'\ud83d\ude9a',fitzpatrick_scale:!1,category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],"char":'\ud83d\ude9b',fitzpatrick_scale:!1,category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],"char":'\ud83d\ude9c',fitzpatrick_scale:!1,category:"travel_and_places"},kick_scooter:{keywords:["vehicle","kick","razor"],"char":'\ud83d\udef4',fitzpatrick_scale:!1,category:"travel_and_places"},motorcycle:{keywords:["race","sports","fast"],"char":'\ud83c\udfcd',fitzpatrick_scale:!1,category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],"char":'\ud83d\udeb2',fitzpatrick_scale:!1,category:"travel_and_places"},motor_scooter:{keywords:["vehicle","vespa","sasha"],"char":'\ud83d\udef5',fitzpatrick_scale:!1,category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],"char":'\ud83d\udea8',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],"char":'\ud83d\ude94',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],"char":'\ud83d\ude8d',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],"char":'\ud83d\ude98',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],"char":'\ud83d\ude96',fitzpatrick_scale:!1,category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],"char":'\ud83d\udea1',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],"char":'\ud83d\udea0',fitzpatrick_scale:!1,category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],"char":'\ud83d\ude9f',fitzpatrick_scale:!1,category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],"char":'\ud83d\ude83',fitzpatrick_scale:!1,category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],"char":'\ud83d\ude8b',fitzpatrick_scale:!1,category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],"char":'\ud83d\ude9d',fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],"char":'\ud83d\ude84',fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],"char":'\ud83d\ude85',fitzpatrick_scale:!1,category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],"char":'\ud83d\ude88',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],"char":'\ud83d\ude9e',fitzpatrick_scale:!1,category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],"char":'\ud83d\ude82',fitzpatrick_scale:!1,category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],"char":'\ud83d\ude86',fitzpatrick_scale:!1,category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],"char":'\ud83d\ude87',fitzpatrick_scale:!1,category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],"char":'\ud83d\ude8a',fitzpatrick_scale:!1,category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],"char":'\ud83d\ude89',fitzpatrick_scale:!1,category:"travel_and_places"},flying_saucer:{keywords:["transportation","vehicle","ufo"],"char":'\ud83d\udef8',fitzpatrick_scale:!1,category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],"char":'\ud83d\ude81',fitzpatrick_scale:!1,category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],"char":'\ud83d\udee9',fitzpatrick_scale:!1,category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],"char":'\u2708\ufe0f',fitzpatrick_scale:!1,category:"travel_and_places"},flight_departure:{keywords:["airport","flight","landing"],"char":'\ud83d\udeeb',fitzpatrick_scale:!1,category:"travel_and_places"},flight_arrival:{keywords:["airport","flight","boarding"],"char":'\ud83d\udeec',fitzpatrick_scale:!1,category:"travel_and_places"},sailboat:{keywords:["ship","summer","transportation","water","sailing"],"char":'\u26f5',fitzpatrick_scale:!1,category:"travel_and_places"},motor_boat:{keywords:["ship"],"char":'\ud83d\udee5',fitzpatrick_scale:!1,category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],"char":'\ud83d\udea4',fitzpatrick_scale:!1,category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],"char":'\u26f4',fitzpatrick_scale:!1,category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],"char":'\ud83d\udef3',fitzpatrick_scale:!1,category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],"char":'\ud83d\ude80',fitzpatrick_scale:!1,category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],"char":'\ud83d\udef0',fitzpatrick_scale:!1,category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],"char":'\ud83d\udcba',fitzpatrick_scale:!1,category:"travel_and_places"},canoe:{keywords:["boat","paddle","water","ship"],"char":'\ud83d\udef6',fitzpatrick_scale:!1,category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],"char":'\u2693',fitzpatrick_scale:!1,category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],"char":'\ud83d\udea7',fitzpatrick_scale:!1,category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],"char":'\u26fd',fitzpatrick_scale:!1,category:"travel_and_places"},busstop:{keywords:["transportation","wait"],"char":'\ud83d\ude8f',fitzpatrick_scale:!1,category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],"char":'\ud83d\udea6',fitzpatrick_scale:!1,category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],"char":'\ud83d\udea5',fitzpatrick_scale:!1,category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],"char":'\ud83c\udfc1',fitzpatrick_scale:!1,category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],"char":'\ud83d\udea2',fitzpatrick_scale:!1,category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],"char":'\ud83c\udfa1',fitzpatrick_scale:!1,category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],"char":'\ud83c\udfa2',fitzpatrick_scale:!1,category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],"char":'\ud83c\udfa0',fitzpatrick_scale:!1,category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],"char":'\ud83c\udfd7',fitzpatrick_scale:!1,category:"travel_and_places"},foggy:{keywords:["photo","mountain"],"char":'\ud83c\udf01',fitzpatrick_scale:!1,category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],"char":'\ud83d\uddfc',fitzpatrick_scale:!1,category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],"char":'\ud83c\udfed',fitzpatrick_scale:!1,category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],"char":'\u26f2',fitzpatrick_scale:!1,category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],"char":'\ud83c\udf91',fitzpatrick_scale:!1,category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],"char":'\u26f0',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_snow:{keywords:["photo","nature","environment","winter","cold"],"char":'\ud83c\udfd4',fitzpatrick_scale:!1,category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],"char":'\ud83d\uddfb',fitzpatrick_scale:!1,category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],"char":'\ud83c\udf0b',fitzpatrick_scale:!1,category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],"char":'\ud83d\uddfe',fitzpatrick_scale:!1,category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],"char":'\ud83c\udfd5',fitzpatrick_scale:!1,category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],"char":'\u26fa',fitzpatrick_scale:!1,category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],"char":'\ud83c\udfde',fitzpatrick_scale:!1,category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],"char":'\ud83d\udee3',fitzpatrick_scale:!1,category:"travel_and_places"},railway_track:{keywords:["train","transportation"],"char":'\ud83d\udee4',fitzpatrick_scale:!1,category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],"char":'\ud83c\udf05',fitzpatrick_scale:!1,category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],"char":'\ud83c\udf04',fitzpatrick_scale:!1,category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],"char":'\ud83c\udfdc',fitzpatrick_scale:!1,category:"travel_and_places"},beach_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],"char":'\ud83c\udfd6',fitzpatrick_scale:!1,category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],"char":'\ud83c\udfdd',fitzpatrick_scale:!1,category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],"char":'\ud83c\udf07',fitzpatrick_scale:!1,category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],"char":'\ud83c\udf06',fitzpatrick_scale:!1,category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],"char":'\ud83c\udfd9',fitzpatrick_scale:!1,category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],"char":'\ud83c\udf03',fitzpatrick_scale:!1,category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],"char":'\ud83c\udf09',fitzpatrick_scale:!1,category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],"char":'\ud83c\udf0c',fitzpatrick_scale:!1,category:"travel_and_places"},stars:{keywords:["night","photo"],"char":'\ud83c\udf20',fitzpatrick_scale:!1,category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],"char":'\ud83c\udf87',fitzpatrick_scale:!1,category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],"char":'\ud83c\udf86',fitzpatrick_scale:!1,category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn_face","photo","sky","spring"],"char":'\ud83c\udf08',fitzpatrick_scale:!1,category:"travel_and_places"},houses:{keywords:["buildings","photo"],"char":'\ud83c\udfd8',fitzpatrick_scale:!1,category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],"char":'\ud83c\udff0',fitzpatrick_scale:!1,category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],"char":'\ud83c\udfef',fitzpatrick_scale:!1,category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],"char":'\ud83c\udfdf',fitzpatrick_scale:!1,category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],"char":'\ud83d\uddfd',fitzpatrick_scale:!1,category:"travel_and_places"},house:{keywords:["building","home"],"char":'\ud83c\udfe0',fitzpatrick_scale:!1,category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],"char":'\ud83c\udfe1',fitzpatrick_scale:!1,category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],"char":'\ud83c\udfda',fitzpatrick_scale:!1,category:"travel_and_places"},office:{keywords:["building","bureau","work"],"char":'\ud83c\udfe2',fitzpatrick_scale:!1,category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],"char":'\ud83c\udfec',fitzpatrick_scale:!1,category:"travel_and_places"},post_office:{keywords:["building","envelope","communication"],"char":'\ud83c\udfe3',fitzpatrick_scale:!1,category:"travel_and_places"},european_post_office:{keywords:["building","email"],"char":'\ud83c\udfe4',fitzpatrick_scale:!1,category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],"char":'\ud83c\udfe5',fitzpatrick_scale:!1,category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],"char":'\ud83c\udfe6',fitzpatrick_scale:!1,category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],"char":'\ud83c\udfe8',fitzpatrick_scale:!1,category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],"char":'\ud83c\udfea',fitzpatrick_scale:!1,category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],"char":'\ud83c\udfeb',fitzpatrick_scale:!1,category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],"char":'\ud83c\udfe9',fitzpatrick_scale:!1,category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],"char":'\ud83d\udc92',fitzpatrick_scale:!1,category:"travel_and_places"},classical_building:{keywords:["art","culture","history"],"char":'\ud83c\udfdb',fitzpatrick_scale:!1,category:"travel_and_places"},church:{keywords:["building","religion","christ"],"char":'\u26ea',fitzpatrick_scale:!1,category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],"char":'\ud83d\udd4c',fitzpatrick_scale:!1,category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],"char":'\ud83d\udd4d',fitzpatrick_scale:!1,category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],"char":'\ud83d\udd4b',fitzpatrick_scale:!1,category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],"char":'\u26e9',fitzpatrick_scale:!1,category:"travel_and_places"},watch:{keywords:["time","accessories"],"char":'\u231a',fitzpatrick_scale:!1,category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],"char":'\ud83d\udcf1',fitzpatrick_scale:!1,category:"objects"},calling:{keywords:["iphone","incoming"],"char":'\ud83d\udcf2',fitzpatrick_scale:!1,category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],"char":'\ud83d\udcbb',fitzpatrick_scale:!1,category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],"char":'\u2328',fitzpatrick_scale:!1,category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],"char":'\ud83d\udda5',fitzpatrick_scale:!1,category:"objects"},printer:{keywords:["paper","ink"],"char":'\ud83d\udda8',fitzpatrick_scale:!1,category:"objects"},computer_mouse:{keywords:["click"],"char":'\ud83d\uddb1',fitzpatrick_scale:!1,category:"objects"},trackball:{keywords:["technology","trackpad"],"char":'\ud83d\uddb2',fitzpatrick_scale:!1,category:"objects"},joystick:{keywords:["game","play"],"char":'\ud83d\udd79',fitzpatrick_scale:!1,category:"objects"},clamp:{keywords:["tool"],"char":'\ud83d\udddc',fitzpatrick_scale:!1,category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],"char":'\ud83d\udcbd',fitzpatrick_scale:!1,category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],"char":'\ud83d\udcbe',fitzpatrick_scale:!1,category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],"char":'\ud83d\udcbf',fitzpatrick_scale:!1,category:"objects"},dvd:{keywords:["cd","disk","disc"],"char":'\ud83d\udcc0',fitzpatrick_scale:!1,category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],"char":'\ud83d\udcfc',fitzpatrick_scale:!1,category:"objects"},camera:{keywords:["gadgets","photography"],"char":'\ud83d\udcf7',fitzpatrick_scale:!1,category:"objects"},camera_flash:{keywords:["photography","gadgets"],"char":'\ud83d\udcf8',fitzpatrick_scale:!1,category:"objects"},video_camera:{keywords:["film","record"],"char":'\ud83d\udcf9',fitzpatrick_scale:!1,category:"objects"},movie_camera:{keywords:["film","record"],"char":'\ud83c\udfa5',fitzpatrick_scale:!1,category:"objects"},film_projector:{keywords:["video","tape","record","movie"],"char":'\ud83d\udcfd',fitzpatrick_scale:!1,category:"objects"},film_strip:{keywords:["movie"],"char":'\ud83c\udf9e',fitzpatrick_scale:!1,category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],"char":'\ud83d\udcde',fitzpatrick_scale:!1,category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],"char":'\u260e\ufe0f',fitzpatrick_scale:!1,category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],"char":'\ud83d\udcdf',fitzpatrick_scale:!1,category:"objects"},fax:{keywords:["communication","technology"],"char":'\ud83d\udce0',fitzpatrick_scale:!1,category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],"char":'\ud83d\udcfa',fitzpatrick_scale:!1,category:"objects"},radio:{keywords:["communication","music","podcast","program"],"char":'\ud83d\udcfb',fitzpatrick_scale:!1,category:"objects"},studio_microphone:{keywords:["sing","recording","artist","talkshow"],"char":'\ud83c\udf99',fitzpatrick_scale:!1,category:"objects"},level_slider:{keywords:["scale"],"char":'\ud83c\udf9a',fitzpatrick_scale:!1,category:"objects"},control_knobs:{keywords:["dial"],"char":'\ud83c\udf9b',fitzpatrick_scale:!1,category:"objects"},compass:{keywords:["magnetic","navigation","orienteering"],"char":'\ud83e\udded',fitzpatrick_scale:!1,category:"objects"},stopwatch:{keywords:["time","deadline"],"char":'\u23f1',fitzpatrick_scale:!1,category:"objects"},timer_clock:{keywords:["alarm"],"char":'\u23f2',fitzpatrick_scale:!1,category:"objects"},alarm_clock:{keywords:["time","wake"],"char":'\u23f0',fitzpatrick_scale:!1,category:"objects"},mantelpiece_clock:{keywords:["time"],"char":'\ud83d\udd70',fitzpatrick_scale:!1,category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],"char":'\u23f3',fitzpatrick_scale:!1,category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],"char":'\u231b',fitzpatrick_scale:!1,category:"objects"},satellite:{keywords:["communication","future","radio","space"],"char":'\ud83d\udce1',fitzpatrick_scale:!1,category:"objects"},battery:{keywords:["power","energy","sustain"],"char":'\ud83d\udd0b',fitzpatrick_scale:!1,category:"objects"},electric_plug:{keywords:["charger","power"],"char":'\ud83d\udd0c',fitzpatrick_scale:!1,category:"objects"},bulb:{keywords:["light","electricity","idea"],"char":'\ud83d\udca1',fitzpatrick_scale:!1,category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],"char":'\ud83d\udd26',fitzpatrick_scale:!1,category:"objects"},candle:{keywords:["fire","wax"],"char":'\ud83d\udd6f',fitzpatrick_scale:!1,category:"objects"},fire_extinguisher:{keywords:["quench"],"char":'\ud83e\uddef',fitzpatrick_scale:!1,category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],"char":'\ud83d\uddd1',fitzpatrick_scale:!1,category:"objects"},oil_drum:{keywords:["barrell"],"char":'\ud83d\udee2',fitzpatrick_scale:!1,category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],"char":'\ud83d\udcb8',fitzpatrick_scale:!1,category:"objects"},dollar:{keywords:["money","sales","bill","currency"],"char":'\ud83d\udcb5',fitzpatrick_scale:!1,category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],"char":'\ud83d\udcb4',fitzpatrick_scale:!1,category:"objects"},euro:{keywords:["money","sales","dollar","currency"],"char":'\ud83d\udcb6',fitzpatrick_scale:!1,category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],"char":'\ud83d\udcb7',fitzpatrick_scale:!1,category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],"char":'\ud83d\udcb0',fitzpatrick_scale:!1,category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],"char":'\ud83d\udcb3',fitzpatrick_scale:!1,category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],"char":'\ud83d\udc8e',fitzpatrick_scale:!1,category:"objects"},balance_scale:{keywords:["law","fairness","weight"],"char":'\u2696',fitzpatrick_scale:!1,category:"objects"},toolbox:{keywords:["tools","diy","fix","maintainer","mechanic"],"char":'\ud83e\uddf0',fitzpatrick_scale:!1,category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],"char":'\ud83d\udd27',fitzpatrick_scale:!1,category:"objects"},hammer:{keywords:["tools","build","create"],"char":'\ud83d\udd28',fitzpatrick_scale:!1,category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],"char":'\u2692',fitzpatrick_scale:!1,category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],"char":'\ud83d\udee0',fitzpatrick_scale:!1,category:"objects"},pick:{keywords:["tools","dig"],"char":'\u26cf',fitzpatrick_scale:!1,category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],"char":'\ud83d\udd29',fitzpatrick_scale:!1,category:"objects"},gear:{keywords:["cog"],"char":'\u2699',fitzpatrick_scale:!1,category:"objects"},brick:{keywords:["bricks"],"char":'\ud83e\uddf1',fitzpatrick_scale:!1,category:"objects"},chains:{keywords:["lock","arrest"],"char":'\u26d3',fitzpatrick_scale:!1,category:"objects"},magnet:{keywords:["attraction","magnetic"],"char":'\ud83e\uddf2',fitzpatrick_scale:!1,category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],"char":'\ud83d\udd2b',fitzpatrick_scale:!1,category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],"char":'\ud83d\udca3',fitzpatrick_scale:!1,category:"objects"},firecracker:{keywords:["dynamite","boom","explode","explosion","explosive"],"char":'\ud83e\udde8',fitzpatrick_scale:!1,category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],"char":'\ud83d\udd2a',fitzpatrick_scale:!1,category:"objects"},dagger:{keywords:["weapon"],"char":'\ud83d\udde1',fitzpatrick_scale:!1,category:"objects"},crossed_swords:{keywords:["weapon"],"char":'\u2694',fitzpatrick_scale:!1,category:"objects"},shield:{keywords:["protection","security"],"char":'\ud83d\udee1',fitzpatrick_scale:!1,category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],"char":'\ud83d\udeac',fitzpatrick_scale:!1,category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary","death","pirate","evil"],"char":'\u2620',fitzpatrick_scale:!1,category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],"char":'\u26b0',fitzpatrick_scale:!1,category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],"char":'\u26b1',fitzpatrick_scale:!1,category:"objects"},amphora:{keywords:["vase","jar"],"char":'\ud83c\udffa',fitzpatrick_scale:!1,category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],"char":'\ud83d\udd2e',fitzpatrick_scale:!1,category:"objects"},prayer_beads:{keywords:["dhikr","religious"],"char":'\ud83d\udcff',fitzpatrick_scale:!1,category:"objects"},nazar_amulet:{keywords:["bead","charm"],"char":'\ud83e\uddff',fitzpatrick_scale:!1,category:"objects"},barber:{keywords:["hair","salon","style"],"char":'\ud83d\udc88',fitzpatrick_scale:!1,category:"objects"},alembic:{keywords:["distilling","science","experiment","chemistry"],"char":'\u2697',fitzpatrick_scale:!1,category:"objects"},telescope:{keywords:["stars","space","zoom","science","astronomy"],"char":'\ud83d\udd2d',fitzpatrick_scale:!1,category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],"char":'\ud83d\udd2c',fitzpatrick_scale:!1,category:"objects"},hole:{keywords:["embarrassing"],"char":'\ud83d\udd73',fitzpatrick_scale:!1,category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],"char":'\ud83d\udc8a',fitzpatrick_scale:!1,category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],"char":'\ud83d\udc89',fitzpatrick_scale:!1,category:"objects"},dna:{keywords:["biologist","genetics","life"],"char":'\ud83e\uddec',fitzpatrick_scale:!1,category:"objects"},microbe:{keywords:["amoeba","bacteria","germs"],"char":'\ud83e\udda0',fitzpatrick_scale:!1,category:"objects"},petri_dish:{keywords:["bacteria","biology","culture","lab"],"char":'\ud83e\uddeb',fitzpatrick_scale:!1,category:"objects"},test_tube:{keywords:["chemistry","experiment","lab","science"],"char":'\ud83e\uddea',fitzpatrick_scale:!1,category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],"char":'\ud83c\udf21',fitzpatrick_scale:!1,category:"objects"},broom:{keywords:["cleaning","sweeping","witch"],"char":'\ud83e\uddf9',fitzpatrick_scale:!1,category:"objects"},basket:{keywords:["laundry"],"char":'\ud83e\uddfa',fitzpatrick_scale:!1,category:"objects"},toilet_paper:{keywords:["roll"],"char":'\ud83e\uddfb',fitzpatrick_scale:!1,category:"objects"},label:{keywords:["sale","tag"],"char":'\ud83c\udff7',fitzpatrick_scale:!1,category:"objects"},bookmark:{keywords:["favorite","label","save"],"char":'\ud83d\udd16',fitzpatrick_scale:!1,category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],"char":'\ud83d\udebd',fitzpatrick_scale:!1,category:"objects"},shower:{keywords:["clean","water","bathroom"],"char":'\ud83d\udebf',fitzpatrick_scale:!1,category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],"char":'\ud83d\udec1',fitzpatrick_scale:!1,category:"objects"},soap:{keywords:["bar","bathing","cleaning","lather"],"char":'\ud83e\uddfc',fitzpatrick_scale:!1,category:"objects"},sponge:{keywords:["absorbing","cleaning","porous"],"char":'\ud83e\uddfd',fitzpatrick_scale:!1,category:"objects"},lotion_bottle:{keywords:["moisturizer","sunscreen"],"char":'\ud83e\uddf4',fitzpatrick_scale:!1,category:"objects"},key:{keywords:["lock","door","password"],"char":'\ud83d\udd11',fitzpatrick_scale:!1,category:"objects"},old_key:{keywords:["lock","door","password"],"char":'\ud83d\udddd',fitzpatrick_scale:!1,category:"objects"},couch_and_lamp:{keywords:["read","chill"],"char":'\ud83d\udecb',fitzpatrick_scale:!1,category:"objects"},sleeping_bed:{keywords:["bed","rest"],"char":'\ud83d\udecc',fitzpatrick_scale:!0,category:"objects"},bed:{keywords:["sleep","rest"],"char":'\ud83d\udecf',fitzpatrick_scale:!1,category:"objects"},door:{keywords:["house","entry","exit"],"char":'\ud83d\udeaa',fitzpatrick_scale:!1,category:"objects"},bellhop_bell:{keywords:["service"],"char":'\ud83d\udece',fitzpatrick_scale:!1,category:"objects"},teddy_bear:{keywords:["plush","stuffed"],"char":'\ud83e\uddf8',fitzpatrick_scale:!1,category:"objects"},framed_picture:{keywords:["photography"],"char":'\ud83d\uddbc',fitzpatrick_scale:!1,category:"objects"},world_map:{keywords:["location","direction"],"char":'\ud83d\uddfa',fitzpatrick_scale:!1,category:"objects"},parasol_on_ground:{keywords:["weather","summer"],"char":'\u26f1',fitzpatrick_scale:!1,category:"objects"},moyai:{keywords:["rock","easter island","moai"],"char":'\ud83d\uddff',fitzpatrick_scale:!1,category:"objects"},shopping:{keywords:["mall","buy","purchase"],"char":'\ud83d\udecd',fitzpatrick_scale:!1,category:"objects"},shopping_cart:{keywords:["trolley"],"char":'\ud83d\uded2',fitzpatrick_scale:!1,category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],"char":'\ud83c\udf88',fitzpatrick_scale:!1,category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],"char":'\ud83c\udf8f',fitzpatrick_scale:!1,category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],"char":'\ud83c\udf80',fitzpatrick_scale:!1,category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],"char":'\ud83c\udf81',fitzpatrick_scale:!1,category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],"char":'\ud83c\udf8a',fitzpatrick_scale:!1,category:"objects"},tada:{keywords:["party","congratulations","birthday","magic","circus","celebration"],"char":'\ud83c\udf89',fitzpatrick_scale:!1,category:"objects"},dolls:{keywords:["japanese","toy","kimono"],"char":'\ud83c\udf8e',fitzpatrick_scale:!1,category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],"char":'\ud83c\udf90',fitzpatrick_scale:!1,category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],"char":'\ud83c\udf8c',fitzpatrick_scale:!1,category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],"char":'\ud83c\udfee',fitzpatrick_scale:!1,category:"objects"},red_envelope:{keywords:["gift"],"char":'\ud83e\udde7',fitzpatrick_scale:!1,category:"objects"},email:{keywords:["letter","postal","inbox","communication"],"char":'\u2709\ufe0f',fitzpatrick_scale:!1,category:"objects"},envelope_with_arrow:{keywords:["email","communication"],"char":'\ud83d\udce9',fitzpatrick_scale:!1,category:"objects"},incoming_envelope:{keywords:["email","inbox"],"char":'\ud83d\udce8',fitzpatrick_scale:!1,category:"objects"},"e-mail":{keywords:["communication","inbox"],"char":'\ud83d\udce7',fitzpatrick_scale:!1,category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],"char":'\ud83d\udc8c',fitzpatrick_scale:!1,category:"objects"},postbox:{keywords:["email","letter","envelope"],"char":'\ud83d\udcee',fitzpatrick_scale:!1,category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],"char":'\ud83d\udcea',fitzpatrick_scale:!1,category:"objects"},mailbox:{keywords:["email","inbox","communication"],"char":'\ud83d\udceb',fitzpatrick_scale:!1,category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],"char":'\ud83d\udcec',fitzpatrick_scale:!1,category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],"char":'\ud83d\udced',fitzpatrick_scale:!1,category:"objects"},"package":{keywords:["mail","gift","cardboard","box","moving"],"char":'\ud83d\udce6',fitzpatrick_scale:!1,category:"objects"},postal_horn:{keywords:["instrument","music"],"char":'\ud83d\udcef',fitzpatrick_scale:!1,category:"objects"},inbox_tray:{keywords:["email","documents"],"char":'\ud83d\udce5',fitzpatrick_scale:!1,category:"objects"},outbox_tray:{keywords:["inbox","email"],"char":'\ud83d\udce4',fitzpatrick_scale:!1,category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],"char":'\ud83d\udcdc',fitzpatrick_scale:!1,category:"objects"},page_with_curl:{keywords:["documents","office","paper"],"char":'\ud83d\udcc3',fitzpatrick_scale:!1,category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],"char":'\ud83d\udcd1',fitzpatrick_scale:!1,category:"objects"},receipt:{keywords:["accounting","expenses"],"char":'\ud83e\uddfe',fitzpatrick_scale:!1,category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],"char":'\ud83d\udcca',fitzpatrick_scale:!1,category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],"char":'\ud83d\udcc8',fitzpatrick_scale:!1,category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],"char":'\ud83d\udcc9',fitzpatrick_scale:!1,category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],"char":'\ud83d\udcc4',fitzpatrick_scale:!1,category:"objects"},date:{keywords:["calendar","schedule"],"char":'\ud83d\udcc5',fitzpatrick_scale:!1,category:"objects"},calendar:{keywords:["schedule","date","planning"],"char":'\ud83d\udcc6',fitzpatrick_scale:!1,category:"objects"},spiral_calendar:{keywords:["date","schedule","planning"],"char":'\ud83d\uddd3',fitzpatrick_scale:!1,category:"objects"},card_index:{keywords:["business","stationery"],"char":'\ud83d\udcc7',fitzpatrick_scale:!1,category:"objects"},card_file_box:{keywords:["business","stationery"],"char":'\ud83d\uddc3',fitzpatrick_scale:!1,category:"objects"},ballot_box:{keywords:["election","vote"],"char":'\ud83d\uddf3',fitzpatrick_scale:!1,category:"objects"},file_cabinet:{keywords:["filing","organizing"],"char":'\ud83d\uddc4',fitzpatrick_scale:!1,category:"objects"},clipboard:{keywords:["stationery","documents"],"char":'\ud83d\udccb',fitzpatrick_scale:!1,category:"objects"},spiral_notepad:{keywords:["memo","stationery"],"char":'\ud83d\uddd2',fitzpatrick_scale:!1,category:"objects"},file_folder:{keywords:["documents","business","office"],"char":'\ud83d\udcc1',fitzpatrick_scale:!1,category:"objects"},open_file_folder:{keywords:["documents","load"],"char":'\ud83d\udcc2',fitzpatrick_scale:!1,category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],"char":'\ud83d\uddc2',fitzpatrick_scale:!1,category:"objects"},newspaper_roll:{keywords:["press","headline"],"char":'\ud83d\uddde',fitzpatrick_scale:!1,category:"objects"},newspaper:{keywords:["press","headline"],"char":'\ud83d\udcf0',fitzpatrick_scale:!1,category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],"char":'\ud83d\udcd3',fitzpatrick_scale:!1,category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],"char":'\ud83d\udcd5',fitzpatrick_scale:!1,category:"objects"},green_book:{keywords:["read","library","knowledge","study"],"char":'\ud83d\udcd7',fitzpatrick_scale:!1,category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],"char":'\ud83d\udcd8',fitzpatrick_scale:!1,category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],"char":'\ud83d\udcd9',fitzpatrick_scale:!1,category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],"char":'\ud83d\udcd4',fitzpatrick_scale:!1,category:"objects"},ledger:{keywords:["notes","paper"],"char":'\ud83d\udcd2',fitzpatrick_scale:!1,category:"objects"},books:{keywords:["literature","library","study"],"char":'\ud83d\udcda',fitzpatrick_scale:!1,category:"objects"},open_book:{keywords:["book","read","library","knowledge","literature","learn","study"],"char":'\ud83d\udcd6',fitzpatrick_scale:!1,category:"objects"},safety_pin:{keywords:["diaper"],"char":'\ud83e\uddf7',fitzpatrick_scale:!1,category:"objects"},link:{keywords:["rings","url"],"char":'\ud83d\udd17',fitzpatrick_scale:!1,category:"objects"},paperclip:{keywords:["documents","stationery"],"char":'\ud83d\udcce',fitzpatrick_scale:!1,category:"objects"},paperclips:{keywords:["documents","stationery"],"char":'\ud83d\udd87',fitzpatrick_scale:!1,category:"objects"},scissors:{keywords:["stationery","cut"],"char":'\u2702\ufe0f',fitzpatrick_scale:!1,category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],"char":'\ud83d\udcd0',fitzpatrick_scale:!1,category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],"char":'\ud83d\udccf',fitzpatrick_scale:!1,category:"objects"},abacus:{keywords:["calculation"],"char":'\ud83e\uddee',fitzpatrick_scale:!1,category:"objects"},pushpin:{keywords:["stationery","mark","here"],"char":'\ud83d\udccc',fitzpatrick_scale:!1,category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],"char":'\ud83d\udccd',fitzpatrick_scale:!1,category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],"char":'\ud83d\udea9',fitzpatrick_scale:!1,category:"objects"},white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],"char":'\ud83c\udff3',fitzpatrick_scale:!1,category:"objects"},black_flag:{keywords:["pirate"],"char":'\ud83c\udff4',fitzpatrick_scale:!1,category:"objects"},rainbow_flag:{keywords:["flag","rainbow","pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],"char":'\ud83c\udff3\ufe0f\u200d\ud83c\udf08',fitzpatrick_scale:!1,category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],"char":'\ud83d\udd10',fitzpatrick_scale:!1,category:"objects"},lock:{keywords:["security","password","padlock"],"char":'\ud83d\udd12',fitzpatrick_scale:!1,category:"objects"},unlock:{keywords:["privacy","security"],"char":'\ud83d\udd13',fitzpatrick_scale:!1,category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],"char":'\ud83d\udd0f',fitzpatrick_scale:!1,category:"objects"},pen:{keywords:["stationery","writing","write"],"char":'\ud83d\udd8a',fitzpatrick_scale:!1,category:"objects"},fountain_pen:{keywords:["stationery","writing","write"],"char":'\ud83d\udd8b',fitzpatrick_scale:!1,category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],"char":'\u2712\ufe0f',fitzpatrick_scale:!1,category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],"char":'\ud83d\udcdd',fitzpatrick_scale:!1,category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],"char":'\u270f\ufe0f',fitzpatrick_scale:!1,category:"objects"},crayon:{keywords:["drawing","creativity"],"char":'\ud83d\udd8d',fitzpatrick_scale:!1,category:"objects"},paintbrush:{keywords:["drawing","creativity","art"],"char":'\ud83d\udd8c',fitzpatrick_scale:!1,category:"objects"},mag:{keywords:["search","zoom","find","detective"],"char":'\ud83d\udd0d',fitzpatrick_scale:!1,category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],"char":'\ud83d\udd0e',fitzpatrick_scale:!1,category:"objects"},heart:{keywords:["love","like","valentines"],"char":'\u2764\ufe0f',fitzpatrick_scale:!1,category:"symbols"},orange_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83e\udde1',fitzpatrick_scale:!1,category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc9b',fitzpatrick_scale:!1,category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc9a',fitzpatrick_scale:!1,category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc99',fitzpatrick_scale:!1,category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc9c',fitzpatrick_scale:!1,category:"symbols"},black_heart:{keywords:["evil"],"char":'\ud83d\udda4',fitzpatrick_scale:!1,category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],"char":'\ud83d\udc94',fitzpatrick_scale:!1,category:"symbols"},heavy_heart_exclamation:{keywords:["decoration","love"],"char":'\u2763',fitzpatrick_scale:!1,category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],"char":'\ud83d\udc95',fitzpatrick_scale:!1,category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc9e',fitzpatrick_scale:!1,category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],"char":'\ud83d\udc93',fitzpatrick_scale:!1,category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],"char":'\ud83d\udc97',fitzpatrick_scale:!1,category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc96',fitzpatrick_scale:!1,category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],"char":'\ud83d\udc98',fitzpatrick_scale:!1,category:"symbols"},gift_heart:{keywords:["love","valentines"],"char":'\ud83d\udc9d',fitzpatrick_scale:!1,category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],"char":'\ud83d\udc9f',fitzpatrick_scale:!1,category:"symbols"},peace_symbol:{keywords:["hippie"],"char":'\u262e',fitzpatrick_scale:!1,category:"symbols"},latin_cross:{keywords:["christianity"],"char":'\u271d',fitzpatrick_scale:!1,category:"symbols"},star_and_crescent:{keywords:["islam"],"char":'\u262a',fitzpatrick_scale:!1,category:"symbols"},om:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":'\ud83d\udd49',fitzpatrick_scale:!1,category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":'\u2638',fitzpatrick_scale:!1,category:"symbols"},star_of_david:{keywords:["judaism"],"char":'\u2721',fitzpatrick_scale:!1,category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],"char":'\ud83d\udd2f',fitzpatrick_scale:!1,category:"symbols"},menorah:{keywords:["hanukkah","candles","jewish"],"char":'\ud83d\udd4e',fitzpatrick_scale:!1,category:"symbols"},yin_yang:{keywords:["balance"],"char":'\u262f',fitzpatrick_scale:!1,category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],"char":'\u2626',fitzpatrick_scale:!1,category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],"char":'\ud83d\uded0',fitzpatrick_scale:!1,category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],"char":'\u26ce',fitzpatrick_scale:!1,category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],"char":'\u2648',fitzpatrick_scale:!1,category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],"char":'\u2649',fitzpatrick_scale:!1,category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],"char":'\u264a',fitzpatrick_scale:!1,category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],"char":'\u264b',fitzpatrick_scale:!1,category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],"char":'\u264c',fitzpatrick_scale:!1,category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],"char":'\u264d',fitzpatrick_scale:!1,category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],"char":'\u264e',fitzpatrick_scale:!1,category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],"char":'\u264f',fitzpatrick_scale:!1,category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],"char":'\u2650',fitzpatrick_scale:!1,category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],"char":'\u2651',fitzpatrick_scale:!1,category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],"char":'\u2652',fitzpatrick_scale:!1,category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],"char":'\u2653',fitzpatrick_scale:!1,category:"symbols"},id:{keywords:["purple-square","words"],"char":'\ud83c\udd94',fitzpatrick_scale:!1,category:"symbols"},atom_symbol:{keywords:["science","physics","chemistry"],"char":'\u269b',fitzpatrick_scale:!1,category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],"char":'\ud83c\ude33',fitzpatrick_scale:!1,category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],"char":'\ud83c\ude39',fitzpatrick_scale:!1,category:"symbols"},radioactive:{keywords:["nuclear","danger"],"char":'\u2622',fitzpatrick_scale:!1,category:"symbols"},biohazard:{keywords:["danger"],"char":'\u2623',fitzpatrick_scale:!1,category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],"char":'\ud83d\udcf4',fitzpatrick_scale:!1,category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],"char":'\ud83d\udcf3',fitzpatrick_scale:!1,category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],"char":'\ud83c\ude36',fitzpatrick_scale:!1,category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],"char":'\ud83c\ude1a',fitzpatrick_scale:!1,category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],"char":'\ud83c\ude38',fitzpatrick_scale:!1,category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],"char":'\ud83c\ude3a',fitzpatrick_scale:!1,category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],"char":'\ud83c\ude37\ufe0f',fitzpatrick_scale:!1,category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],"char":'\u2734\ufe0f',fitzpatrick_scale:!1,category:"symbols"},vs:{keywords:["words","orange-square"],"char":'\ud83c\udd9a',fitzpatrick_scale:!1,category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],"char":'\ud83c\ude51',fitzpatrick_scale:!1,category:"symbols"},white_flower:{keywords:["japanese","spring"],"char":'\ud83d\udcae',fitzpatrick_scale:!1,category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],"char":'\ud83c\ude50',fitzpatrick_scale:!1,category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],"char":'\u3299\ufe0f',fitzpatrick_scale:!1,category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],"char":'\u3297\ufe0f',fitzpatrick_scale:!1,category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],"char":'\ud83c\ude34',fitzpatrick_scale:!1,category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],"char":'\ud83c\ude35',fitzpatrick_scale:!1,category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],"char":'\ud83c\ude32',fitzpatrick_scale:!1,category:"symbols"},a:{keywords:["red-square","alphabet","letter"],"char":'\ud83c\udd70\ufe0f',fitzpatrick_scale:!1,category:"symbols"},b:{keywords:["red-square","alphabet","letter"],"char":'\ud83c\udd71\ufe0f',fitzpatrick_scale:!1,category:"symbols"},ab:{keywords:["red-square","alphabet"],"char":'\ud83c\udd8e',fitzpatrick_scale:!1,category:"symbols"},cl:{keywords:["alphabet","words","red-square"],"char":'\ud83c\udd91',fitzpatrick_scale:!1,category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],"char":'\ud83c\udd7e\ufe0f',fitzpatrick_scale:!1,category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],"char":'\ud83c\udd98',fitzpatrick_scale:!1,category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],"char":'\u26d4',fitzpatrick_scale:!1,category:"symbols"},name_badge:{keywords:["fire","forbid"],"char":'\ud83d\udcdb',fitzpatrick_scale:!1,category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],"char":'\ud83d\udeab',fitzpatrick_scale:!1,category:"symbols"},x:{keywords:["no","delete","remove","cancel","red"],"char":'\u274c',fitzpatrick_scale:!1,category:"symbols"},o:{keywords:["circle","round"],"char":'\u2b55',fitzpatrick_scale:!1,category:"symbols"},stop_sign:{keywords:["stop"],"char":'\ud83d\uded1',fitzpatrick_scale:!1,category:"symbols"},anger:{keywords:["angry","mad"],"char":'\ud83d\udca2',fitzpatrick_scale:!1,category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],"char":'\u2668\ufe0f',fitzpatrick_scale:!1,category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],"char":'\ud83d\udeb7',fitzpatrick_scale:!1,category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],"char":'\ud83d\udeaf',fitzpatrick_scale:!1,category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],"char":'\ud83d\udeb3',fitzpatrick_scale:!1,category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],"char":'\ud83d\udeb1',fitzpatrick_scale:!1,category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],"char":'\ud83d\udd1e',fitzpatrick_scale:!1,category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],"char":'\ud83d\udcf5',fitzpatrick_scale:!1,category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],"char":'\u2757',fitzpatrick_scale:!1,category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],"char":'\u2755',fitzpatrick_scale:!1,category:"symbols"},question:{keywords:["doubt","confused"],"char":'\u2753',fitzpatrick_scale:!1,category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],"char":'\u2754',fitzpatrick_scale:!1,category:"symbols"},bangbang:{keywords:["exclamation","surprise"],"char":'\u203c\ufe0f',fitzpatrick_scale:!1,category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],"char":'\u2049\ufe0f',fitzpatrick_scale:!1,category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],"char":'\ud83d\udd05',fitzpatrick_scale:!1,category:"symbols"},high_brightness:{keywords:["sun","light"],"char":'\ud83d\udd06',fitzpatrick_scale:!1,category:"symbols"},trident:{keywords:["weapon","spear"],"char":'\ud83d\udd31',fitzpatrick_scale:!1,category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],"char":'\u269c',fitzpatrick_scale:!1,category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],"char":'\u303d\ufe0f',fitzpatrick_scale:!1,category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],"char":'\u26a0\ufe0f',fitzpatrick_scale:!1,category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],"char":'\ud83d\udeb8',fitzpatrick_scale:!1,category:"symbols"},beginner:{keywords:["badge","shield"],"char":'\ud83d\udd30',fitzpatrick_scale:!1,category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],"char":'\u267b\ufe0f',fitzpatrick_scale:!1,category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],"char":'\ud83c\ude2f',fitzpatrick_scale:!1,category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],"char":'\ud83d\udcb9',fitzpatrick_scale:!1,category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],"char":'\u2747\ufe0f',fitzpatrick_scale:!1,category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],"char":'\u2733\ufe0f',fitzpatrick_scale:!1,category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],"char":'\u274e',fitzpatrick_scale:!1,category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer","tick"],"char":'\u2705',fitzpatrick_scale:!1,category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],"char":'\ud83d\udca0',fitzpatrick_scale:!1,category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],"char":'\ud83c\udf00',fitzpatrick_scale:!1,category:"symbols"},loop:{keywords:["tape","cassette"],"char":'\u27bf',fitzpatrick_scale:!1,category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],"char":'\ud83c\udf10',fitzpatrick_scale:!1,category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],"char":'\u24c2\ufe0f',fitzpatrick_scale:!1,category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],"char":'\ud83c\udfe7',fitzpatrick_scale:!1,category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],"char":'\ud83c\ude02\ufe0f',fitzpatrick_scale:!1,category:"symbols"},passport_control:{keywords:["custom","blue-square"],"char":'\ud83d\udec2',fitzpatrick_scale:!1,category:"symbols"},customs:{keywords:["passport","border","blue-square"],"char":'\ud83d\udec3',fitzpatrick_scale:!1,category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],"char":'\ud83d\udec4',fitzpatrick_scale:!1,category:"symbols"},left_luggage:{keywords:["blue-square","travel"],"char":'\ud83d\udec5',fitzpatrick_scale:!1,category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],"char":'\u267f',fitzpatrick_scale:!1,category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],"char":'\ud83d\udead',fitzpatrick_scale:!1,category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],"char":'\ud83d\udebe',fitzpatrick_scale:!1,category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],"char":'\ud83c\udd7f\ufe0f',fitzpatrick_scale:!1,category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],"char":'\ud83d\udeb0',fitzpatrick_scale:!1,category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],"char":'\ud83d\udeb9',fitzpatrick_scale:!1,category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],"char":'\ud83d\udeba',fitzpatrick_scale:!1,category:"symbols"},baby_symbol:{keywords:["orange-square","child"],"char":'\ud83d\udebc',fitzpatrick_scale:!1,category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],"char":'\ud83d\udebb',fitzpatrick_scale:!1,category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],"char":'\ud83d\udeae',fitzpatrick_scale:!1,category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],"char":'\ud83c\udfa6',fitzpatrick_scale:!1,category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],"char":'\ud83d\udcf6',fitzpatrick_scale:!1,category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],"char":'\ud83c\ude01',fitzpatrick_scale:!1,category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],"char":'\ud83c\udd96',fitzpatrick_scale:!1,category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],"char":'\ud83c\udd97',fitzpatrick_scale:!1,category:"symbols"},up:{keywords:["blue-square","above","high"],"char":'\ud83c\udd99',fitzpatrick_scale:!1,category:"symbols"},cool:{keywords:["words","blue-square"],"char":'\ud83c\udd92',fitzpatrick_scale:!1,category:"symbols"},"new":{keywords:["blue-square","words","start"],"char":'\ud83c\udd95',fitzpatrick_scale:!1,category:"symbols"},free:{keywords:["blue-square","words"],"char":'\ud83c\udd93',fitzpatrick_scale:!1,category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],"char":'0\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},one:{keywords:["blue-square","numbers","1"],"char":'1\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],"char":'2\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],"char":'3\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},four:{keywords:["4","numbers","blue-square"],"char":'4\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],"char":'5\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},six:{keywords:["6","numbers","blue-square"],"char":'6\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],"char":'7\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},eight:{keywords:["8","blue-square","numbers"],"char":'8\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},nine:{keywords:["blue-square","numbers","9"],"char":'9\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],"char":'\ud83d\udd1f',fitzpatrick_scale:!1,category:"symbols"},asterisk:{keywords:["star","keycap"],"char":'*\u20e3',fitzpatrick_scale:!1,category:"symbols"},eject_button:{keywords:["blue-square"],"char":'\u23cf\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],"char":'\u25b6\ufe0f',fitzpatrick_scale:!1,category:"symbols"},pause_button:{keywords:["pause","blue-square"],"char":'\u23f8',fitzpatrick_scale:!1,category:"symbols"},next_track_button:{keywords:["forward","next","blue-square"],"char":'\u23ed',fitzpatrick_scale:!1,category:"symbols"},stop_button:{keywords:["blue-square"],"char":'\u23f9',fitzpatrick_scale:!1,category:"symbols"},record_button:{keywords:["blue-square"],"char":'\u23fa',fitzpatrick_scale:!1,category:"symbols"},play_or_pause_button:{keywords:["blue-square","play","pause"],"char":'\u23ef',fitzpatrick_scale:!1,category:"symbols"},previous_track_button:{keywords:["backward"],"char":'\u23ee',fitzpatrick_scale:!1,category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],"char":'\u23e9',fitzpatrick_scale:!1,category:"symbols"},rewind:{keywords:["play","blue-square"],"char":'\u23ea',fitzpatrick_scale:!1,category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],"char":'\ud83d\udd00',fitzpatrick_scale:!1,category:"symbols"},repeat:{keywords:["loop","record"],"char":'\ud83d\udd01',fitzpatrick_scale:!1,category:"symbols"},repeat_one:{keywords:["blue-square","loop"],"char":'\ud83d\udd02',fitzpatrick_scale:!1,category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],"char":'\u25c0\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],"char":'\ud83d\udd3c',fitzpatrick_scale:!1,category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],"char":'\ud83d\udd3d',fitzpatrick_scale:!1,category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],"char":'\u23eb',fitzpatrick_scale:!1,category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],"char":'\u23ec',fitzpatrick_scale:!1,category:"symbols"},arrow_right:{keywords:["blue-square","next"],"char":'\u27a1\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],"char":'\u2b05\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],"char":'\u2b06\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],"char":'\u2b07\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],"char":'\u2197\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],"char":'\u2198\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],"char":'\u2199\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],"char":'\u2196\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],"char":'\u2195\ufe0f',fitzpatrick_scale:!1,category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],"char":'\u2194\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],"char":'\ud83d\udd04',fitzpatrick_scale:!1,category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],"char":'\u21aa\ufe0f',fitzpatrick_scale:!1,category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],"char":'\u21a9\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],"char":'\u2934\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],"char":'\u2935\ufe0f',fitzpatrick_scale:!1,category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],"char":'#\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],"char":'\u2139\ufe0f',fitzpatrick_scale:!1,category:"symbols"},abc:{keywords:["blue-square","alphabet"],"char":'\ud83d\udd24',fitzpatrick_scale:!1,category:"symbols"},abcd:{keywords:["blue-square","alphabet"],"char":'\ud83d\udd21',fitzpatrick_scale:!1,category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],"char":'\ud83d\udd20',fitzpatrick_scale:!1,category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],"char":'\ud83d\udd23',fitzpatrick_scale:!1,category:"symbols"},musical_note:{keywords:["score","tone","sound"],"char":'\ud83c\udfb5',fitzpatrick_scale:!1,category:"symbols"},notes:{keywords:["music","score"],"char":'\ud83c\udfb6',fitzpatrick_scale:!1,category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],"char":'\u3030\ufe0f',fitzpatrick_scale:!1,category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],"char":'\u27b0',fitzpatrick_scale:!1,category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],"char":'\u2714\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],"char":'\ud83d\udd03',fitzpatrick_scale:!1,category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],"char":'\u2795',fitzpatrick_scale:!1,category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],"char":'\u2796',fitzpatrick_scale:!1,category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],"char":'\u2797',fitzpatrick_scale:!1,category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],"char":'\u2716\ufe0f',fitzpatrick_scale:!1,category:"symbols"},infinity:{keywords:["forever"],"char":'\u267e',fitzpatrick_scale:!1,category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],"char":'\ud83d\udcb2',fitzpatrick_scale:!1,category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],"char":'\ud83d\udcb1',fitzpatrick_scale:!1,category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],"char":'\xa9\ufe0f',fitzpatrick_scale:!1,category:"symbols"},registered:{keywords:["alphabet","circle"],"char":'\xae\ufe0f',fitzpatrick_scale:!1,category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],"char":'\u2122\ufe0f',fitzpatrick_scale:!1,category:"symbols"},end:{keywords:["words","arrow"],"char":'\ud83d\udd1a',fitzpatrick_scale:!1,category:"symbols"},back:{keywords:["arrow","words","return"],"char":'\ud83d\udd19',fitzpatrick_scale:!1,category:"symbols"},on:{keywords:["arrow","words"],"char":'\ud83d\udd1b',fitzpatrick_scale:!1,category:"symbols"},top:{keywords:["words","blue-square"],"char":'\ud83d\udd1d',fitzpatrick_scale:!1,category:"symbols"},soon:{keywords:["arrow","words"],"char":'\ud83d\udd1c',fitzpatrick_scale:!1,category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes","tick"],"char":'\u2611\ufe0f',fitzpatrick_scale:!1,category:"symbols"},radio_button:{keywords:["input","old","music","circle"],"char":'\ud83d\udd18',fitzpatrick_scale:!1,category:"symbols"},white_circle:{keywords:["shape","round"],"char":'\u26aa',fitzpatrick_scale:!1,category:"symbols"},black_circle:{keywords:["shape","button","round"],"char":'\u26ab',fitzpatrick_scale:!1,category:"symbols"},red_circle:{keywords:["shape","error","danger"],"char":'\ud83d\udd34',fitzpatrick_scale:!1,category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],"char":'\ud83d\udd35',fitzpatrick_scale:!1,category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],"char":'\ud83d\udd38',fitzpatrick_scale:!1,category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],"char":'\ud83d\udd39',fitzpatrick_scale:!1,category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],"char":'\ud83d\udd36',fitzpatrick_scale:!1,category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],"char":'\ud83d\udd37',fitzpatrick_scale:!1,category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],"char":'\ud83d\udd3a',fitzpatrick_scale:!1,category:"symbols"},black_small_square:{keywords:["shape","icon"],"char":'\u25aa\ufe0f',fitzpatrick_scale:!1,category:"symbols"},white_small_square:{keywords:["shape","icon"],"char":'\u25ab\ufe0f',fitzpatrick_scale:!1,category:"symbols"},black_large_square:{keywords:["shape","icon","button"],"char":'\u2b1b',fitzpatrick_scale:!1,category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],"char":'\u2b1c',fitzpatrick_scale:!1,category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],"char":'\ud83d\udd3b',fitzpatrick_scale:!1,category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],"char":'\u25fc\ufe0f',fitzpatrick_scale:!1,category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],"char":'\u25fb\ufe0f',fitzpatrick_scale:!1,category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],"char":'\u25fe',fitzpatrick_scale:!1,category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],"char":'\u25fd',fitzpatrick_scale:!1,category:"symbols"},black_square_button:{keywords:["shape","input","frame"],"char":'\ud83d\udd32',fitzpatrick_scale:!1,category:"symbols"},white_square_button:{keywords:["shape","input"],"char":'\ud83d\udd33',fitzpatrick_scale:!1,category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],"char":'\ud83d\udd08',fitzpatrick_scale:!1,category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],"char":'\ud83d\udd09',fitzpatrick_scale:!1,category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],"char":'\ud83d\udd0a',fitzpatrick_scale:!1,category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],"char":'\ud83d\udd07',fitzpatrick_scale:!1,category:"symbols"},mega:{keywords:["sound","speaker","volume"],"char":'\ud83d\udce3',fitzpatrick_scale:!1,category:"symbols"},loudspeaker:{keywords:["volume","sound"],"char":'\ud83d\udce2',fitzpatrick_scale:!1,category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],"char":'\ud83d\udd14',fitzpatrick_scale:!1,category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],"char":'\ud83d\udd15',fitzpatrick_scale:!1,category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],"char":'\ud83c\udccf',fitzpatrick_scale:!1,category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],"char":'\ud83c\udc04',fitzpatrick_scale:!1,category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],"char":'\u2660\ufe0f',fitzpatrick_scale:!1,category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],"char":'\u2663\ufe0f',fitzpatrick_scale:!1,category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],"char":'\u2665\ufe0f',fitzpatrick_scale:!1,category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],"char":'\u2666\ufe0f',fitzpatrick_scale:!1,category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],"char":'\ud83c\udfb4',fitzpatrick_scale:!1,category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking","dream"],"char":'\ud83d\udcad',fitzpatrick_scale:!1,category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],"char":'\ud83d\uddef',fitzpatrick_scale:!1,category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],"char":'\ud83d\udcac',fitzpatrick_scale:!1,category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],"char":'\ud83d\udde8',fitzpatrick_scale:!1,category:"symbols"},clock1:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd50',fitzpatrick_scale:!1,category:"symbols"},clock2:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd51',fitzpatrick_scale:!1,category:"symbols"},clock3:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd52',fitzpatrick_scale:!1,category:"symbols"},clock4:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd53',fitzpatrick_scale:!1,category:"symbols"},clock5:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd54',fitzpatrick_scale:!1,category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],"char":'\ud83d\udd55',fitzpatrick_scale:!1,category:"symbols"},clock7:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd56',fitzpatrick_scale:!1,category:"symbols"},clock8:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd57',fitzpatrick_scale:!1,category:"symbols"},clock9:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd58',fitzpatrick_scale:!1,category:"symbols"},clock10:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd59',fitzpatrick_scale:!1,category:"symbols"},clock11:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd5a',fitzpatrick_scale:!1,category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],"char":'\ud83d\udd5b',fitzpatrick_scale:!1,category:"symbols"},clock130:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd5c',fitzpatrick_scale:!1,category:"symbols"},clock230:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd5d',fitzpatrick_scale:!1,category:"symbols"},clock330:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd5e',fitzpatrick_scale:!1,category:"symbols"},clock430:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd5f',fitzpatrick_scale:!1,category:"symbols"},clock530:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd60',fitzpatrick_scale:!1,category:"symbols"},clock630:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd61',fitzpatrick_scale:!1,category:"symbols"},clock730:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd62',fitzpatrick_scale:!1,category:"symbols"},clock830:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd63',fitzpatrick_scale:!1,category:"symbols"},clock930:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd64',fitzpatrick_scale:!1,category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd65',fitzpatrick_scale:!1,category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd66',fitzpatrick_scale:!1,category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd67',fitzpatrick_scale:!1,category:"symbols"},afghanistan:{keywords:["af","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},aland_islands:{keywords:["\xc5land","islands","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddfd',fitzpatrick_scale:!1,category:"flags"},albania:{keywords:["al","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},algeria:{keywords:["dz","flag","nation","country","banner"],"char":'\ud83c\udde9\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},american_samoa:{keywords:["american","ws","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},andorra:{keywords:["ad","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},angola:{keywords:["ao","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},anguilla:{keywords:["ai","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},antarctica:{keywords:["aq","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf6',fitzpatrick_scale:!1,category:"flags"},antigua_barbuda:{keywords:["antigua","barbuda","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},argentina:{keywords:["ar","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},armenia:{keywords:["am","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},aruba:{keywords:["aw","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},australia:{keywords:["au","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},austria:{keywords:["at","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},azerbaijan:{keywords:["az","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},bahamas:{keywords:["bs","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},bahrain:{keywords:["bh","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},bangladesh:{keywords:["bd","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},barbados:{keywords:["bb","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\udde7',fitzpatrick_scale:!1,category:"flags"},belarus:{keywords:["by","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},belgium:{keywords:["be","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},belize:{keywords:["bz","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},benin:{keywords:["bj","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddef',fitzpatrick_scale:!1,category:"flags"},bermuda:{keywords:["bm","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},bhutan:{keywords:["bt","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},bolivia:{keywords:["bo","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},caribbean_netherlands:{keywords:["bonaire","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf6',fitzpatrick_scale:!1,category:"flags"},bosnia_herzegovina:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},botswana:{keywords:["bw","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},brazil:{keywords:["br","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},british_indian_ocean_territory:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},british_virgin_islands:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},brunei:{keywords:["bn","darussalam","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},bulgaria:{keywords:["bg","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},burkina_faso:{keywords:["burkina","faso","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},burundi:{keywords:["bi","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},cape_verde:{keywords:["cabo","verde","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddfb',fitzpatrick_scale:!1,category:"flags"},cambodia:{keywords:["kh","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},cameroon:{keywords:["cm","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},canada:{keywords:["ca","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},canary_islands:{keywords:["canary","islands","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},cayman_islands:{keywords:["cayman","islands","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},central_african_republic:{keywords:["central","african","republic","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},chad:{keywords:["td","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},chile:{keywords:["flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],"char":'\ud83c\udde8\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},christmas_island:{keywords:["christmas","island","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddfd',fitzpatrick_scale:!1,category:"flags"},cocos_islands:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},colombia:{keywords:["co","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},comoros:{keywords:["km","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},congo_brazzaville:{keywords:["congo","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},congo_kinshasa:{keywords:["congo","democratic","republic","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},cook_islands:{keywords:["cook","islands","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},costa_rica:{keywords:["costa","rica","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},croatia:{keywords:["hr","flag","nation","country","banner"],"char":'\ud83c\udded\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},cuba:{keywords:["cu","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},curacao:{keywords:["cura\xe7ao","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},cyprus:{keywords:["cy","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},czech_republic:{keywords:["cz","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},denmark:{keywords:["dk","flag","nation","country","banner"],"char":'\ud83c\udde9\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},djibouti:{keywords:["dj","flag","nation","country","banner"],"char":'\ud83c\udde9\ud83c\uddef',fitzpatrick_scale:!1,category:"flags"},dominica:{keywords:["dm","flag","nation","country","banner"],"char":'\ud83c\udde9\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},dominican_republic:{keywords:["dominican","republic","flag","nation","country","banner"],"char":'\ud83c\udde9\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},ecuador:{keywords:["ec","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},egypt:{keywords:["eg","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},el_salvador:{keywords:["el","salvador","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddfb',fitzpatrick_scale:!1,category:"flags"},equatorial_guinea:{keywords:["equatorial","gn","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf6',fitzpatrick_scale:!1,category:"flags"},eritrea:{keywords:["er","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},estonia:{keywords:["ee","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},ethiopia:{keywords:["et","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},eu:{keywords:["european","union","flag","banner"],"char":'\ud83c\uddea\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},falkland_islands:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],"char":'\ud83c\uddeb\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},faroe_islands:{keywords:["faroe","islands","flag","nation","country","banner"],"char":'\ud83c\uddeb\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},fiji:{keywords:["fj","flag","nation","country","banner"],"char":'\ud83c\uddeb\ud83c\uddef',fitzpatrick_scale:!1,category:"flags"},finland:{keywords:["fi","flag","nation","country","banner"],"char":'\ud83c\uddeb\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],"char":'\ud83c\uddeb\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},french_guiana:{keywords:["french","guiana","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},french_polynesia:{keywords:["french","polynesia","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},french_southern_territories:{keywords:["french","southern","territories","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},gabon:{keywords:["ga","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},gambia:{keywords:["gm","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},georgia:{keywords:["ge","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},de:{keywords:["german","nation","flag","country","banner"],"char":'\ud83c\udde9\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},ghana:{keywords:["gh","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},gibraltar:{keywords:["gi","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},greece:{keywords:["gr","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},greenland:{keywords:["gl","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},grenada:{keywords:["gd","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},guadeloupe:{keywords:["gp","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf5',fitzpatrick_scale:!1,category:"flags"},guam:{keywords:["gu","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},guatemala:{keywords:["gt","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},guernsey:{keywords:["gg","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},guinea:{keywords:["gn","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},guinea_bissau:{keywords:["gw","bissau","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},guyana:{keywords:["gy","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},haiti:{keywords:["ht","flag","nation","country","banner"],"char":'\ud83c\udded\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},honduras:{keywords:["hn","flag","nation","country","banner"],"char":'\ud83c\udded\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},hong_kong:{keywords:["hong","kong","flag","nation","country","banner"],"char":'\ud83c\udded\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},hungary:{keywords:["hu","flag","nation","country","banner"],"char":'\ud83c\udded\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},iceland:{keywords:["is","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},india:{keywords:["in","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},iran:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},iraq:{keywords:["iq","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf6',fitzpatrick_scale:!1,category:"flags"},ireland:{keywords:["ie","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},isle_of_man:{keywords:["isle","man","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},israel:{keywords:["il","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},cote_divoire:{keywords:["ivory","coast","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},jamaica:{keywords:["jm","flag","nation","country","banner"],"char":'\ud83c\uddef\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],"char":'\ud83c\uddef\ud83c\uddf5',fitzpatrick_scale:!1,category:"flags"},jersey:{keywords:["je","flag","nation","country","banner"],"char":'\ud83c\uddef\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},jordan:{keywords:["jo","flag","nation","country","banner"],"char":'\ud83c\uddef\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},kazakhstan:{keywords:["kz","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},kenya:{keywords:["ke","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},kiribati:{keywords:["ki","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},kosovo:{keywords:["xk","flag","nation","country","banner"],"char":'\ud83c\uddfd\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},kuwait:{keywords:["kw","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},kyrgyzstan:{keywords:["kg","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},laos:{keywords:["lao","democratic","republic","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},latvia:{keywords:["lv","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddfb',fitzpatrick_scale:!1,category:"flags"},lebanon:{keywords:["lb","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\udde7',fitzpatrick_scale:!1,category:"flags"},lesotho:{keywords:["ls","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},liberia:{keywords:["lr","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},libya:{keywords:["ly","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},liechtenstein:{keywords:["li","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},lithuania:{keywords:["lt","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},luxembourg:{keywords:["lu","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},macau:{keywords:["macao","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},macedonia:{keywords:["macedonia,","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},madagascar:{keywords:["mg","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},malawi:{keywords:["mw","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},malaysia:{keywords:["my","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},maldives:{keywords:["mv","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddfb',fitzpatrick_scale:!1,category:"flags"},mali:{keywords:["ml","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},malta:{keywords:["mt","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},marshall_islands:{keywords:["marshall","islands","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},martinique:{keywords:["mq","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf6',fitzpatrick_scale:!1,category:"flags"},mauritania:{keywords:["mr","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},mauritius:{keywords:["mu","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},mayotte:{keywords:["yt","flag","nation","country","banner"],"char":'\ud83c\uddfe\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},mexico:{keywords:["mx","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddfd',fitzpatrick_scale:!1,category:"flags"},micronesia:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],"char":'\ud83c\uddeb\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},moldova:{keywords:["moldova,","republic","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},monaco:{keywords:["mc","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},mongolia:{keywords:["mn","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},montenegro:{keywords:["me","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},montserrat:{keywords:["ms","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},morocco:{keywords:["ma","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},mozambique:{keywords:["mz","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},myanmar:{keywords:["mm","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},namibia:{keywords:["na","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},nauru:{keywords:["nr","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},nepal:{keywords:["np","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddf5',fitzpatrick_scale:!1,category:"flags"},netherlands:{keywords:["nl","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},new_caledonia:{keywords:["new","caledonia","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},new_zealand:{keywords:["new","zealand","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},nicaragua:{keywords:["ni","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},niger:{keywords:["ne","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},niue:{keywords:["nu","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},norfolk_island:{keywords:["norfolk","island","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},northern_mariana_islands:{keywords:["northern","mariana","islands","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf5',fitzpatrick_scale:!1,category:"flags"},north_korea:{keywords:["north","korea","nation","flag","country","banner"],"char":'\ud83c\uddf0\ud83c\uddf5',fitzpatrick_scale:!1,category:"flags"},norway:{keywords:["no","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},oman:{keywords:["om_symbol","flag","nation","country","banner"],"char":'\ud83c\uddf4\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},pakistan:{keywords:["pk","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},palau:{keywords:["pw","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},palestinian_territories:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},panama:{keywords:["pa","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},papua_new_guinea:{keywords:["papua","new","guinea","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},paraguay:{keywords:["py","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},peru:{keywords:["pe","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},philippines:{keywords:["ph","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},pitcairn_islands:{keywords:["pitcairn","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},poland:{keywords:["pl","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},portugal:{keywords:["pt","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},puerto_rico:{keywords:["puerto","rico","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},qatar:{keywords:["qa","flag","nation","country","banner"],"char":'\ud83c\uddf6\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},reunion:{keywords:["r\xe9union","flag","nation","country","banner"],"char":'\ud83c\uddf7\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},romania:{keywords:["ro","flag","nation","country","banner"],"char":'\ud83c\uddf7\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],"char":'\ud83c\uddf7\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},rwanda:{keywords:["rw","flag","nation","country","banner"],"char":'\ud83c\uddf7\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},st_barthelemy:{keywords:["saint","barth\xe9lemy","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},st_helena:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},st_kitts_nevis:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},st_lucia:{keywords:["saint","lucia","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},st_pierre_miquelon:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},st_vincent_grenadines:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},samoa:{keywords:["ws","flag","nation","country","banner"],"char":'\ud83c\uddfc\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},san_marino:{keywords:["san","marino","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},sao_tome_principe:{keywords:["sao","tome","principe","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},senegal:{keywords:["sn","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},serbia:{keywords:["rs","flag","nation","country","banner"],"char":'\ud83c\uddf7\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},seychelles:{keywords:["sc","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},sierra_leone:{keywords:["sierra","leone","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},singapore:{keywords:["sg","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},sint_maarten:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddfd',fitzpatrick_scale:!1,category:"flags"},slovakia:{keywords:["sk","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},slovenia:{keywords:["si","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},solomon_islands:{keywords:["solomon","islands","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\udde7',fitzpatrick_scale:!1,category:"flags"},somalia:{keywords:["so","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},south_africa:{keywords:["south","africa","flag","nation","country","banner"],"char":'\ud83c\uddff\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},south_georgia_south_sandwich_islands:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],"char":'\ud83c\uddf0\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},south_sudan:{keywords:["south","sd","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},sri_lanka:{keywords:["sri","lanka","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},sudan:{keywords:["sd","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},suriname:{keywords:["sr","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},swaziland:{keywords:["sz","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},sweden:{keywords:["se","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},switzerland:{keywords:["ch","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},syria:{keywords:["syrian","arab","republic","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},taiwan:{keywords:["tw","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},tajikistan:{keywords:["tj","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddef',fitzpatrick_scale:!1,category:"flags"},tanzania:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},thailand:{keywords:["th","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},timor_leste:{keywords:["timor","leste","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},togo:{keywords:["tg","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},tokelau:{keywords:["tk","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},tonga:{keywords:["to","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},trinidad_tobago:{keywords:["trinidad","tobago","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},tunisia:{keywords:["tn","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},turks_caicos_islands:{keywords:["turks","caicos","islands","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddfb',fitzpatrick_scale:!1,category:"flags"},uganda:{keywords:["ug","flag","nation","country","banner"],"char":'\ud83c\uddfa\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},ukraine:{keywords:["ua","flag","nation","country","banner"],"char":'\ud83c\uddfa\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},united_arab_emirates:{keywords:["united","arab","emirates","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},uk:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],"char":'\ud83c\uddec\ud83c\udde7',fitzpatrick_scale:!1,category:"flags"},england:{keywords:["flag","english"],"char":'\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f',fitzpatrick_scale:!1,category:"flags"},scotland:{keywords:["flag","scottish"],"char":'\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f',fitzpatrick_scale:!1,category:"flags"},wales:{keywords:["flag","welsh"],"char":'\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f',fitzpatrick_scale:!1,category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],"char":'\ud83c\uddfa\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},us_virgin_islands:{keywords:["virgin","islands","us","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},uruguay:{keywords:["uy","flag","nation","country","banner"],"char":'\ud83c\uddfa\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},uzbekistan:{keywords:["uz","flag","nation","country","banner"],"char":'\ud83c\uddfa\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},vanuatu:{keywords:["vu","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},vatican_city:{keywords:["vatican","city","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},venezuela:{keywords:["ve","bolivarian","republic","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},vietnam:{keywords:["viet","nam","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},wallis_futuna:{keywords:["wallis","futuna","flag","nation","country","banner"],"char":'\ud83c\uddfc\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},western_sahara:{keywords:["western","sahara","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},yemen:{keywords:["ye","flag","nation","country","banner"],"char":'\ud83c\uddfe\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},zambia:{keywords:["zm","flag","nation","country","banner"],"char":'\ud83c\uddff\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},zimbabwe:{keywords:["zw","flag","nation","country","banner"],"char":'\ud83c\uddff\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},united_nations:{keywords:["un","flag","banner"],"char":'\ud83c\uddfa\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},pirate_flag:{keywords:["skull","crossbones","flag","banner"],"char":'\ud83c\udff4\u200d\u2620\ufe0f',fitzpatrick_scale:!1,category:"flags"}}); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/emoticons/js/emojis.js b/component/pear/module/tinymce/tinymce/plugins/emoticons/js/emojis.js deleted file mode 100644 index 4adb59b..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/emoticons/js/emojis.js +++ /dev/null @@ -1,9423 +0,0 @@ -// Source: npm package: emojilib, file:emojis.json -window.tinymce.Resource.add("tinymce.plugins.emoticons", { - grinning: { - keywords: [ "face", "smile", "happy", "joy", ":D", "grin" ], - "char": "\ud83d\ude00", - fitzpatrick_scale: false, - category: "people" - }, - grimacing: { - keywords: [ "face", "grimace", "teeth" ], - "char": "\ud83d\ude2c", - fitzpatrick_scale: false, - category: "people" - }, - grin: { - keywords: [ "face", "happy", "smile", "joy", "kawaii" ], - "char": "\ud83d\ude01", - fitzpatrick_scale: false, - category: "people" - }, - joy: { - keywords: [ "face", "cry", "tears", "weep", "happy", "happytears", "haha" ], - "char": "\ud83d\ude02", - fitzpatrick_scale: false, - category: "people" - }, - rofl: { - keywords: [ "face", "rolling", "floor", "laughing", "lol", "haha" ], - "char": "\ud83e\udd23", - fitzpatrick_scale: false, - category: "people" - }, - partying: { - keywords: [ "face", "celebration", "woohoo" ], - "char": "\ud83e\udd73", - fitzpatrick_scale: false, - category: "people" - }, - smiley: { - keywords: [ "face", "happy", "joy", "haha", ":D", ":)", "smile", "funny" ], - "char": "\ud83d\ude03", - fitzpatrick_scale: false, - category: "people" - }, - smile: { - keywords: [ "face", "happy", "joy", "funny", "haha", "laugh", "like", ":D", ":)" ], - "char": "\ud83d\ude04", - fitzpatrick_scale: false, - category: "people" - }, - sweat_smile: { - keywords: [ "face", "hot", "happy", "laugh", "sweat", "smile", "relief" ], - "char": "\ud83d\ude05", - fitzpatrick_scale: false, - category: "people" - }, - laughing: { - keywords: [ "happy", "joy", "lol", "satisfied", "haha", "face", "glad", "XD", "laugh" ], - "char": "\ud83d\ude06", - fitzpatrick_scale: false, - category: "people" - }, - innocent: { - keywords: [ "face", "angel", "heaven", "halo" ], - "char": "\ud83d\ude07", - fitzpatrick_scale: false, - category: "people" - }, - wink: { - keywords: [ "face", "happy", "mischievous", "secret", ";)", "smile", "eye" ], - "char": "\ud83d\ude09", - fitzpatrick_scale: false, - category: "people" - }, - blush: { - keywords: [ "face", "smile", "happy", "flushed", "crush", "embarrassed", "shy", "joy" ], - "char": "\ud83d\ude0a", - fitzpatrick_scale: false, - category: "people" - }, - slightly_smiling_face: { - keywords: [ "face", "smile" ], - "char": "\ud83d\ude42", - fitzpatrick_scale: false, - category: "people" - }, - upside_down_face: { - keywords: [ "face", "flipped", "silly", "smile" ], - "char": "\ud83d\ude43", - fitzpatrick_scale: false, - category: "people" - }, - relaxed: { - keywords: [ "face", "blush", "massage", "happiness" ], - "char": "\u263a\ufe0f", - fitzpatrick_scale: false, - category: "people" - }, - yum: { - keywords: [ "happy", "joy", "tongue", "smile", "face", "silly", "yummy", "nom", "delicious", "savouring" ], - "char": "\ud83d\ude0b", - fitzpatrick_scale: false, - category: "people" - }, - relieved: { - keywords: [ "face", "relaxed", "phew", "massage", "happiness" ], - "char": "\ud83d\ude0c", - fitzpatrick_scale: false, - category: "people" - }, - heart_eyes: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "heart" ], - "char": "\ud83d\ude0d", - fitzpatrick_scale: false, - category: "people" - }, - smiling_face_with_three_hearts: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "hearts", "adore" ], - "char": "\ud83e\udd70", - fitzpatrick_scale: false, - category: "people" - }, - kissing_heart: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ], - "char": "\ud83d\ude18", - fitzpatrick_scale: false, - category: "people" - }, - kissing: { - keywords: [ "love", "like", "face", "3", "valentines", "infatuation", "kiss" ], - "char": "\ud83d\ude17", - fitzpatrick_scale: false, - category: "people" - }, - kissing_smiling_eyes: { - keywords: [ "face", "affection", "valentines", "infatuation", "kiss" ], - "char": "\ud83d\ude19", - fitzpatrick_scale: false, - category: "people" - }, - kissing_closed_eyes: { - keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ], - "char": "\ud83d\ude1a", - fitzpatrick_scale: false, - category: "people" - }, - stuck_out_tongue_winking_eye: { - keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "wink", "tongue" ], - "char": "\ud83d\ude1c", - fitzpatrick_scale: false, - category: "people" - }, - zany: { - keywords: [ "face", "goofy", "crazy" ], - "char": "\ud83e\udd2a", - fitzpatrick_scale: false, - category: "people" - }, - raised_eyebrow: { - keywords: [ "face", "distrust", "scepticism", "disapproval", "disbelief", "surprise" ], - "char": "\ud83e\udd28", - fitzpatrick_scale: false, - category: "people" - }, - monocle: { - keywords: [ "face", "stuffy", "wealthy" ], - "char": "\ud83e\uddd0", - fitzpatrick_scale: false, - category: "people" - }, - stuck_out_tongue_closed_eyes: { - keywords: [ "face", "prank", "playful", "mischievous", "smile", "tongue" ], - "char": "\ud83d\ude1d", - fitzpatrick_scale: false, - category: "people" - }, - stuck_out_tongue: { - keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "tongue" ], - "char": "\ud83d\ude1b", - fitzpatrick_scale: false, - category: "people" - }, - money_mouth_face: { - keywords: [ "face", "rich", "dollar", "money" ], - "char": "\ud83e\udd11", - fitzpatrick_scale: false, - category: "people" - }, - nerd_face: { - keywords: [ "face", "nerdy", "geek", "dork" ], - "char": "\ud83e\udd13", - fitzpatrick_scale: false, - category: "people" - }, - sunglasses: { - keywords: [ "face", "cool", "smile", "summer", "beach", "sunglass" ], - "char": "\ud83d\ude0e", - fitzpatrick_scale: false, - category: "people" - }, - star_struck: { - keywords: [ "face", "smile", "starry", "eyes", "grinning" ], - "char": "\ud83e\udd29", - fitzpatrick_scale: false, - category: "people" - }, - clown_face: { - keywords: [ "face" ], - "char": "\ud83e\udd21", - fitzpatrick_scale: false, - category: "people" - }, - cowboy_hat_face: { - keywords: [ "face", "cowgirl", "hat" ], - "char": "\ud83e\udd20", - fitzpatrick_scale: false, - category: "people" - }, - hugs: { - keywords: [ "face", "smile", "hug" ], - "char": "\ud83e\udd17", - fitzpatrick_scale: false, - category: "people" - }, - smirk: { - keywords: [ "face", "smile", "mean", "prank", "smug", "sarcasm" ], - "char": "\ud83d\ude0f", - fitzpatrick_scale: false, - category: "people" - }, - no_mouth: { - keywords: [ "face", "hellokitty" ], - "char": "\ud83d\ude36", - fitzpatrick_scale: false, - category: "people" - }, - neutral_face: { - keywords: [ "indifference", "meh", ":|", "neutral" ], - "char": "\ud83d\ude10", - fitzpatrick_scale: false, - category: "people" - }, - expressionless: { - keywords: [ "face", "indifferent", "-_-", "meh", "deadpan" ], - "char": "\ud83d\ude11", - fitzpatrick_scale: false, - category: "people" - }, - unamused: { - keywords: [ "indifference", "bored", "straight face", "serious", "sarcasm", "unimpressed", "skeptical", "dubious", "side_eye" ], - "char": "\ud83d\ude12", - fitzpatrick_scale: false, - category: "people" - }, - roll_eyes: { - keywords: [ "face", "eyeroll", "frustrated" ], - "char": "\ud83d\ude44", - fitzpatrick_scale: false, - category: "people" - }, - thinking: { - keywords: [ "face", "hmmm", "think", "consider" ], - "char": "\ud83e\udd14", - fitzpatrick_scale: false, - category: "people" - }, - lying_face: { - keywords: [ "face", "lie", "pinocchio" ], - "char": "\ud83e\udd25", - fitzpatrick_scale: false, - category: "people" - }, - hand_over_mouth: { - keywords: [ "face", "whoops", "shock", "surprise" ], - "char": "\ud83e\udd2d", - fitzpatrick_scale: false, - category: "people" - }, - shushing: { - keywords: [ "face", "quiet", "shhh" ], - "char": "\ud83e\udd2b", - fitzpatrick_scale: false, - category: "people" - }, - symbols_over_mouth: { - keywords: [ "face", "swearing", "cursing", "cussing", "profanity", "expletive" ], - "char": "\ud83e\udd2c", - fitzpatrick_scale: false, - category: "people" - }, - exploding_head: { - keywords: [ "face", "shocked", "mind", "blown" ], - "char": "\ud83e\udd2f", - fitzpatrick_scale: false, - category: "people" - }, - flushed: { - keywords: [ "face", "blush", "shy", "flattered" ], - "char": "\ud83d\ude33", - fitzpatrick_scale: false, - category: "people" - }, - disappointed: { - keywords: [ "face", "sad", "upset", "depressed", ":(" ], - "char": "\ud83d\ude1e", - fitzpatrick_scale: false, - category: "people" - }, - worried: { - keywords: [ "face", "concern", "nervous", ":(" ], - "char": "\ud83d\ude1f", - fitzpatrick_scale: false, - category: "people" - }, - angry: { - keywords: [ "mad", "face", "annoyed", "frustrated" ], - "char": "\ud83d\ude20", - fitzpatrick_scale: false, - category: "people" - }, - rage: { - keywords: [ "angry", "mad", "hate", "despise" ], - "char": "\ud83d\ude21", - fitzpatrick_scale: false, - category: "people" - }, - pensive: { - keywords: [ "face", "sad", "depressed", "upset" ], - "char": "\ud83d\ude14", - fitzpatrick_scale: false, - category: "people" - }, - confused: { - keywords: [ "face", "indifference", "huh", "weird", "hmmm", ":/" ], - "char": "\ud83d\ude15", - fitzpatrick_scale: false, - category: "people" - }, - slightly_frowning_face: { - keywords: [ "face", "frowning", "disappointed", "sad", "upset" ], - "char": "\ud83d\ude41", - fitzpatrick_scale: false, - category: "people" - }, - frowning_face: { - keywords: [ "face", "sad", "upset", "frown" ], - "char": "\u2639", - fitzpatrick_scale: false, - category: "people" - }, - persevere: { - keywords: [ "face", "sick", "no", "upset", "oops" ], - "char": "\ud83d\ude23", - fitzpatrick_scale: false, - category: "people" - }, - confounded: { - keywords: [ "face", "confused", "sick", "unwell", "oops", ":S" ], - "char": "\ud83d\ude16", - fitzpatrick_scale: false, - category: "people" - }, - tired_face: { - keywords: [ "sick", "whine", "upset", "frustrated" ], - "char": "\ud83d\ude2b", - fitzpatrick_scale: false, - category: "people" - }, - weary: { - keywords: [ "face", "tired", "sleepy", "sad", "frustrated", "upset" ], - "char": "\ud83d\ude29", - fitzpatrick_scale: false, - category: "people" - }, - pleading: { - keywords: [ "face", "begging", "mercy" ], - "char": "\ud83e\udd7a", - fitzpatrick_scale: false, - category: "people" - }, - triumph: { - keywords: [ "face", "gas", "phew", "proud", "pride" ], - "char": "\ud83d\ude24", - fitzpatrick_scale: false, - category: "people" - }, - open_mouth: { - keywords: [ "face", "surprise", "impressed", "wow", "whoa", ":O" ], - "char": "\ud83d\ude2e", - fitzpatrick_scale: false, - category: "people" - }, - scream: { - keywords: [ "face", "munch", "scared", "omg" ], - "char": "\ud83d\ude31", - fitzpatrick_scale: false, - category: "people" - }, - fearful: { - keywords: [ "face", "scared", "terrified", "nervous", "oops", "huh" ], - "char": "\ud83d\ude28", - fitzpatrick_scale: false, - category: "people" - }, - cold_sweat: { - keywords: [ "face", "nervous", "sweat" ], - "char": "\ud83d\ude30", - fitzpatrick_scale: false, - category: "people" - }, - hushed: { - keywords: [ "face", "woo", "shh" ], - "char": "\ud83d\ude2f", - fitzpatrick_scale: false, - category: "people" - }, - frowning: { - keywords: [ "face", "aw", "what" ], - "char": "\ud83d\ude26", - fitzpatrick_scale: false, - category: "people" - }, - anguished: { - keywords: [ "face", "stunned", "nervous" ], - "char": "\ud83d\ude27", - fitzpatrick_scale: false, - category: "people" - }, - cry: { - keywords: [ "face", "tears", "sad", "depressed", "upset", ":'(" ], - "char": "\ud83d\ude22", - fitzpatrick_scale: false, - category: "people" - }, - disappointed_relieved: { - keywords: [ "face", "phew", "sweat", "nervous" ], - "char": "\ud83d\ude25", - fitzpatrick_scale: false, - category: "people" - }, - drooling_face: { - keywords: [ "face" ], - "char": "\ud83e\udd24", - fitzpatrick_scale: false, - category: "people" - }, - sleepy: { - keywords: [ "face", "tired", "rest", "nap" ], - "char": "\ud83d\ude2a", - fitzpatrick_scale: false, - category: "people" - }, - sweat: { - keywords: [ "face", "hot", "sad", "tired", "exercise" ], - "char": "\ud83d\ude13", - fitzpatrick_scale: false, - category: "people" - }, - hot: { - keywords: [ "face", "feverish", "heat", "red", "sweating" ], - "char": "\ud83e\udd75", - fitzpatrick_scale: false, - category: "people" - }, - cold: { - keywords: [ "face", "blue", "freezing", "frozen", "frostbite", "icicles" ], - "char": "\ud83e\udd76", - fitzpatrick_scale: false, - category: "people" - }, - sob: { - keywords: [ "face", "cry", "tears", "sad", "upset", "depressed" ], - "char": "\ud83d\ude2d", - fitzpatrick_scale: false, - category: "people" - }, - dizzy_face: { - keywords: [ "spent", "unconscious", "xox", "dizzy" ], - "char": "\ud83d\ude35", - fitzpatrick_scale: false, - category: "people" - }, - astonished: { - keywords: [ "face", "xox", "surprised", "poisoned" ], - "char": "\ud83d\ude32", - fitzpatrick_scale: false, - category: "people" - }, - zipper_mouth_face: { - keywords: [ "face", "sealed", "zipper", "secret" ], - "char": "\ud83e\udd10", - fitzpatrick_scale: false, - category: "people" - }, - nauseated_face: { - keywords: [ "face", "vomit", "gross", "green", "sick", "throw up", "ill" ], - "char": "\ud83e\udd22", - fitzpatrick_scale: false, - category: "people" - }, - sneezing_face: { - keywords: [ "face", "gesundheit", "sneeze", "sick", "allergy" ], - "char": "\ud83e\udd27", - fitzpatrick_scale: false, - category: "people" - }, - vomiting: { - keywords: [ "face", "sick" ], - "char": "\ud83e\udd2e", - fitzpatrick_scale: false, - category: "people" - }, - mask: { - keywords: [ "face", "sick", "ill", "disease" ], - "char": "\ud83d\ude37", - fitzpatrick_scale: false, - category: "people" - }, - face_with_thermometer: { - keywords: [ "sick", "temperature", "thermometer", "cold", "fever" ], - "char": "\ud83e\udd12", - fitzpatrick_scale: false, - category: "people" - }, - face_with_head_bandage: { - keywords: [ "injured", "clumsy", "bandage", "hurt" ], - "char": "\ud83e\udd15", - fitzpatrick_scale: false, - category: "people" - }, - woozy: { - keywords: [ "face", "dizzy", "intoxicated", "tipsy", "wavy" ], - "char": "\ud83e\udd74", - fitzpatrick_scale: false, - category: "people" - }, - sleeping: { - keywords: [ "face", "tired", "sleepy", "night", "zzz" ], - "char": "\ud83d\ude34", - fitzpatrick_scale: false, - category: "people" - }, - zzz: { - keywords: [ "sleepy", "tired", "dream" ], - "char": "\ud83d\udca4", - fitzpatrick_scale: false, - category: "people" - }, - poop: { - keywords: [ "hankey", "shitface", "fail", "turd", "shit" ], - "char": "\ud83d\udca9", - fitzpatrick_scale: false, - category: "people" - }, - smiling_imp: { - keywords: [ "devil", "horns" ], - "char": "\ud83d\ude08", - fitzpatrick_scale: false, - category: "people" - }, - imp: { - keywords: [ "devil", "angry", "horns" ], - "char": "\ud83d\udc7f", - fitzpatrick_scale: false, - category: "people" - }, - japanese_ogre: { - keywords: [ "monster", "red", "mask", "halloween", "scary", "creepy", "devil", "demon", "japanese", "ogre" ], - "char": "\ud83d\udc79", - fitzpatrick_scale: false, - category: "people" - }, - japanese_goblin: { - keywords: [ "red", "evil", "mask", "monster", "scary", "creepy", "japanese", "goblin" ], - "char": "\ud83d\udc7a", - fitzpatrick_scale: false, - category: "people" - }, - skull: { - keywords: [ "dead", "skeleton", "creepy", "death" ], - "char": "\ud83d\udc80", - fitzpatrick_scale: false, - category: "people" - }, - ghost: { - keywords: [ "halloween", "spooky", "scary" ], - "char": "\ud83d\udc7b", - fitzpatrick_scale: false, - category: "people" - }, - alien: { - keywords: [ "UFO", "paul", "weird", "outer_space" ], - "char": "\ud83d\udc7d", - fitzpatrick_scale: false, - category: "people" - }, - robot: { - keywords: [ "computer", "machine", "bot" ], - "char": "\ud83e\udd16", - fitzpatrick_scale: false, - category: "people" - }, - smiley_cat: { - keywords: [ "animal", "cats", "happy", "smile" ], - "char": "\ud83d\ude3a", - fitzpatrick_scale: false, - category: "people" - }, - smile_cat: { - keywords: [ "animal", "cats", "smile" ], - "char": "\ud83d\ude38", - fitzpatrick_scale: false, - category: "people" - }, - joy_cat: { - keywords: [ "animal", "cats", "haha", "happy", "tears" ], - "char": "\ud83d\ude39", - fitzpatrick_scale: false, - category: "people" - }, - heart_eyes_cat: { - keywords: [ "animal", "love", "like", "affection", "cats", "valentines", "heart" ], - "char": "\ud83d\ude3b", - fitzpatrick_scale: false, - category: "people" - }, - smirk_cat: { - keywords: [ "animal", "cats", "smirk" ], - "char": "\ud83d\ude3c", - fitzpatrick_scale: false, - category: "people" - }, - kissing_cat: { - keywords: [ "animal", "cats", "kiss" ], - "char": "\ud83d\ude3d", - fitzpatrick_scale: false, - category: "people" - }, - scream_cat: { - keywords: [ "animal", "cats", "munch", "scared", "scream" ], - "char": "\ud83d\ude40", - fitzpatrick_scale: false, - category: "people" - }, - crying_cat_face: { - keywords: [ "animal", "tears", "weep", "sad", "cats", "upset", "cry" ], - "char": "\ud83d\ude3f", - fitzpatrick_scale: false, - category: "people" - }, - pouting_cat: { - keywords: [ "animal", "cats" ], - "char": "\ud83d\ude3e", - fitzpatrick_scale: false, - category: "people" - }, - palms_up: { - keywords: [ "hands", "gesture", "cupped", "prayer" ], - "char": "\ud83e\udd32", - fitzpatrick_scale: true, - category: "people" - }, - raised_hands: { - keywords: [ "gesture", "hooray", "yea", "celebration", "hands" ], - "char": "\ud83d\ude4c", - fitzpatrick_scale: true, - category: "people" - }, - clap: { - keywords: [ "hands", "praise", "applause", "congrats", "yay" ], - "char": "\ud83d\udc4f", - fitzpatrick_scale: true, - category: "people" - }, - wave: { - keywords: [ "hands", "gesture", "goodbye", "solong", "farewell", "hello", "hi", "palm" ], - "char": "\ud83d\udc4b", - fitzpatrick_scale: true, - category: "people" - }, - call_me_hand: { - keywords: [ "hands", "gesture" ], - "char": "\ud83e\udd19", - fitzpatrick_scale: true, - category: "people" - }, - "+1": { - keywords: [ "thumbsup", "yes", "awesome", "good", "agree", "accept", "cool", "hand", "like" ], - "char": "\ud83d\udc4d", - fitzpatrick_scale: true, - category: "people" - }, - "-1": { - keywords: [ "thumbsdown", "no", "dislike", "hand" ], - "char": "\ud83d\udc4e", - fitzpatrick_scale: true, - category: "people" - }, - facepunch: { - keywords: [ "angry", "violence", "fist", "hit", "attack", "hand" ], - "char": "\ud83d\udc4a", - fitzpatrick_scale: true, - category: "people" - }, - fist: { - keywords: [ "fingers", "hand", "grasp" ], - "char": "\u270a", - fitzpatrick_scale: true, - category: "people" - }, - fist_left: { - keywords: [ "hand", "fistbump" ], - "char": "\ud83e\udd1b", - fitzpatrick_scale: true, - category: "people" - }, - fist_right: { - keywords: [ "hand", "fistbump" ], - "char": "\ud83e\udd1c", - fitzpatrick_scale: true, - category: "people" - }, - v: { - keywords: [ "fingers", "ohyeah", "hand", "peace", "victory", "two" ], - "char": "\u270c", - fitzpatrick_scale: true, - category: "people" - }, - ok_hand: { - keywords: [ "fingers", "limbs", "perfect", "ok", "okay" ], - "char": "\ud83d\udc4c", - fitzpatrick_scale: true, - category: "people" - }, - raised_hand: { - keywords: [ "fingers", "stop", "highfive", "palm", "ban" ], - "char": "\u270b", - fitzpatrick_scale: true, - category: "people" - }, - raised_back_of_hand: { - keywords: [ "fingers", "raised", "backhand" ], - "char": "\ud83e\udd1a", - fitzpatrick_scale: true, - category: "people" - }, - open_hands: { - keywords: [ "fingers", "butterfly", "hands", "open" ], - "char": "\ud83d\udc50", - fitzpatrick_scale: true, - category: "people" - }, - muscle: { - keywords: [ "arm", "flex", "hand", "summer", "strong", "biceps" ], - "char": "\ud83d\udcaa", - fitzpatrick_scale: true, - category: "people" - }, - pray: { - keywords: [ "please", "hope", "wish", "namaste", "highfive" ], - "char": "\ud83d\ude4f", - fitzpatrick_scale: true, - category: "people" - }, - foot: { - keywords: [ "kick", "stomp" ], - "char": "\ud83e\uddb6", - fitzpatrick_scale: true, - category: "people" - }, - leg: { - keywords: [ "kick", "limb" ], - "char": "\ud83e\uddb5", - fitzpatrick_scale: true, - category: "people" - }, - handshake: { - keywords: [ "agreement", "shake" ], - "char": "\ud83e\udd1d", - fitzpatrick_scale: false, - category: "people" - }, - point_up: { - keywords: [ "hand", "fingers", "direction", "up" ], - "char": "\u261d", - fitzpatrick_scale: true, - category: "people" - }, - point_up_2: { - keywords: [ "fingers", "hand", "direction", "up" ], - "char": "\ud83d\udc46", - fitzpatrick_scale: true, - category: "people" - }, - point_down: { - keywords: [ "fingers", "hand", "direction", "down" ], - "char": "\ud83d\udc47", - fitzpatrick_scale: true, - category: "people" - }, - point_left: { - keywords: [ "direction", "fingers", "hand", "left" ], - "char": "\ud83d\udc48", - fitzpatrick_scale: true, - category: "people" - }, - point_right: { - keywords: [ "fingers", "hand", "direction", "right" ], - "char": "\ud83d\udc49", - fitzpatrick_scale: true, - category: "people" - }, - fu: { - keywords: [ "hand", "fingers", "rude", "middle", "flipping" ], - "char": "\ud83d\udd95", - fitzpatrick_scale: true, - category: "people" - }, - raised_hand_with_fingers_splayed: { - keywords: [ "hand", "fingers", "palm" ], - "char": "\ud83d\udd90", - fitzpatrick_scale: true, - category: "people" - }, - love_you: { - keywords: [ "hand", "fingers", "gesture" ], - "char": "\ud83e\udd1f", - fitzpatrick_scale: true, - category: "people" - }, - metal: { - keywords: [ "hand", "fingers", "evil_eye", "sign_of_horns", "rock_on" ], - "char": "\ud83e\udd18", - fitzpatrick_scale: true, - category: "people" - }, - crossed_fingers: { - keywords: [ "good", "lucky" ], - "char": "\ud83e\udd1e", - fitzpatrick_scale: true, - category: "people" - }, - vulcan_salute: { - keywords: [ "hand", "fingers", "spock", "star trek" ], - "char": "\ud83d\udd96", - fitzpatrick_scale: true, - category: "people" - }, - writing_hand: { - keywords: [ "lower_left_ballpoint_pen", "stationery", "write", "compose" ], - "char": "\u270d", - fitzpatrick_scale: true, - category: "people" - }, - selfie: { - keywords: [ "camera", "phone" ], - "char": "\ud83e\udd33", - fitzpatrick_scale: true, - category: "people" - }, - nail_care: { - keywords: [ "beauty", "manicure", "finger", "fashion", "nail" ], - "char": "\ud83d\udc85", - fitzpatrick_scale: true, - category: "people" - }, - lips: { - keywords: [ "mouth", "kiss" ], - "char": "\ud83d\udc44", - fitzpatrick_scale: false, - category: "people" - }, - tooth: { - keywords: [ "teeth", "dentist" ], - "char": "\ud83e\uddb7", - fitzpatrick_scale: false, - category: "people" - }, - tongue: { - keywords: [ "mouth", "playful" ], - "char": "\ud83d\udc45", - fitzpatrick_scale: false, - category: "people" - }, - ear: { - keywords: [ "face", "hear", "sound", "listen" ], - "char": "\ud83d\udc42", - fitzpatrick_scale: true, - category: "people" - }, - nose: { - keywords: [ "smell", "sniff" ], - "char": "\ud83d\udc43", - fitzpatrick_scale: true, - category: "people" - }, - eye: { - keywords: [ "face", "look", "see", "watch", "stare" ], - "char": "\ud83d\udc41", - fitzpatrick_scale: false, - category: "people" - }, - eyes: { - keywords: [ "look", "watch", "stalk", "peek", "see" ], - "char": "\ud83d\udc40", - fitzpatrick_scale: false, - category: "people" - }, - brain: { - keywords: [ "smart", "intelligent" ], - "char": "\ud83e\udde0", - fitzpatrick_scale: false, - category: "people" - }, - bust_in_silhouette: { - keywords: [ "user", "person", "human" ], - "char": "\ud83d\udc64", - fitzpatrick_scale: false, - category: "people" - }, - busts_in_silhouette: { - keywords: [ "user", "person", "human", "group", "team" ], - "char": "\ud83d\udc65", - fitzpatrick_scale: false, - category: "people" - }, - speaking_head: { - keywords: [ "user", "person", "human", "sing", "say", "talk" ], - "char": "\ud83d\udde3", - fitzpatrick_scale: false, - category: "people" - }, - baby: { - keywords: [ "child", "boy", "girl", "toddler" ], - "char": "\ud83d\udc76", - fitzpatrick_scale: true, - category: "people" - }, - child: { - keywords: [ "gender-neutral", "young" ], - "char": "\ud83e\uddd2", - fitzpatrick_scale: true, - category: "people" - }, - boy: { - keywords: [ "man", "male", "guy", "teenager" ], - "char": "\ud83d\udc66", - fitzpatrick_scale: true, - category: "people" - }, - girl: { - keywords: [ "female", "woman", "teenager" ], - "char": "\ud83d\udc67", - fitzpatrick_scale: true, - category: "people" - }, - adult: { - keywords: [ "gender-neutral", "person" ], - "char": "\ud83e\uddd1", - fitzpatrick_scale: true, - category: "people" - }, - man: { - keywords: [ "mustache", "father", "dad", "guy", "classy", "sir", "moustache" ], - "char": "\ud83d\udc68", - fitzpatrick_scale: true, - category: "people" - }, - woman: { - keywords: [ "female", "girls", "lady" ], - "char": "\ud83d\udc69", - fitzpatrick_scale: true, - category: "people" - }, - blonde_woman: { - keywords: [ "woman", "female", "girl", "blonde", "person" ], - "char": "\ud83d\udc71\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - blonde_man: { - keywords: [ "man", "male", "boy", "blonde", "guy", "person" ], - "char": "\ud83d\udc71", - fitzpatrick_scale: true, - category: "people" - }, - bearded_person: { - keywords: [ "person", "bewhiskered" ], - "char": "\ud83e\uddd4", - fitzpatrick_scale: true, - category: "people" - }, - older_adult: { - keywords: [ "human", "elder", "senior", "gender-neutral" ], - "char": "\ud83e\uddd3", - fitzpatrick_scale: true, - category: "people" - }, - older_man: { - keywords: [ "human", "male", "men", "old", "elder", "senior" ], - "char": "\ud83d\udc74", - fitzpatrick_scale: true, - category: "people" - }, - older_woman: { - keywords: [ "human", "female", "women", "lady", "old", "elder", "senior" ], - "char": "\ud83d\udc75", - fitzpatrick_scale: true, - category: "people" - }, - man_with_gua_pi_mao: { - keywords: [ "male", "boy", "chinese" ], - "char": "\ud83d\udc72", - fitzpatrick_scale: true, - category: "people" - }, - woman_with_headscarf: { - keywords: [ "female", "hijab", "mantilla", "tichel" ], - "char": "\ud83e\uddd5", - fitzpatrick_scale: true, - category: "people" - }, - woman_with_turban: { - keywords: [ "female", "indian", "hinduism", "arabs", "woman" ], - "char": "\ud83d\udc73\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_with_turban: { - keywords: [ "male", "indian", "hinduism", "arabs" ], - "char": "\ud83d\udc73", - fitzpatrick_scale: true, - category: "people" - }, - policewoman: { - keywords: [ "woman", "police", "law", "legal", "enforcement", "arrest", "911", "female" ], - "char": "\ud83d\udc6e\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - policeman: { - keywords: [ "man", "police", "law", "legal", "enforcement", "arrest", "911" ], - "char": "\ud83d\udc6e", - fitzpatrick_scale: true, - category: "people" - }, - construction_worker_woman: { - keywords: [ "female", "human", "wip", "build", "construction", "worker", "labor", "woman" ], - "char": "\ud83d\udc77\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - construction_worker_man: { - keywords: [ "male", "human", "wip", "guy", "build", "construction", "worker", "labor" ], - "char": "\ud83d\udc77", - fitzpatrick_scale: true, - category: "people" - }, - guardswoman: { - keywords: [ "uk", "gb", "british", "female", "royal", "woman" ], - "char": "\ud83d\udc82\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - guardsman: { - keywords: [ "uk", "gb", "british", "male", "guy", "royal" ], - "char": "\ud83d\udc82", - fitzpatrick_scale: true, - category: "people" - }, - female_detective: { - keywords: [ "human", "spy", "detective", "female", "woman" ], - "char": "\ud83d\udd75\ufe0f\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - male_detective: { - keywords: [ "human", "spy", "detective" ], - "char": "\ud83d\udd75", - fitzpatrick_scale: true, - category: "people" - }, - woman_health_worker: { - keywords: [ "doctor", "nurse", "therapist", "healthcare", "woman", "human" ], - "char": "\ud83d\udc69\u200d\u2695\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_health_worker: { - keywords: [ "doctor", "nurse", "therapist", "healthcare", "man", "human" ], - "char": "\ud83d\udc68\u200d\u2695\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_farmer: { - keywords: [ "rancher", "gardener", "woman", "human" ], - "char": "\ud83d\udc69\u200d\ud83c\udf3e", - fitzpatrick_scale: true, - category: "people" - }, - man_farmer: { - keywords: [ "rancher", "gardener", "man", "human" ], - "char": "\ud83d\udc68\u200d\ud83c\udf3e", - fitzpatrick_scale: true, - category: "people" - }, - woman_cook: { - keywords: [ "chef", "woman", "human" ], - "char": "\ud83d\udc69\u200d\ud83c\udf73", - fitzpatrick_scale: true, - category: "people" - }, - man_cook: { - keywords: [ "chef", "man", "human" ], - "char": "\ud83d\udc68\u200d\ud83c\udf73", - fitzpatrick_scale: true, - category: "people" - }, - woman_student: { - keywords: [ "graduate", "woman", "human" ], - "char": "\ud83d\udc69\u200d\ud83c\udf93", - fitzpatrick_scale: true, - category: "people" - }, - man_student: { - keywords: [ "graduate", "man", "human" ], - "char": "\ud83d\udc68\u200d\ud83c\udf93", - fitzpatrick_scale: true, - category: "people" - }, - woman_singer: { - keywords: [ "rockstar", "entertainer", "woman", "human" ], - "char": "\ud83d\udc69\u200d\ud83c\udfa4", - fitzpatrick_scale: true, - category: "people" - }, - man_singer: { - keywords: [ "rockstar", "entertainer", "man", "human" ], - "char": "\ud83d\udc68\u200d\ud83c\udfa4", - fitzpatrick_scale: true, - category: "people" - }, - woman_teacher: { - keywords: [ "instructor", "professor", "woman", "human" ], - "char": "\ud83d\udc69\u200d\ud83c\udfeb", - fitzpatrick_scale: true, - category: "people" - }, - man_teacher: { - keywords: [ "instructor", "professor", "man", "human" ], - "char": "\ud83d\udc68\u200d\ud83c\udfeb", - fitzpatrick_scale: true, - category: "people" - }, - woman_factory_worker: { - keywords: [ "assembly", "industrial", "woman", "human" ], - "char": "\ud83d\udc69\u200d\ud83c\udfed", - fitzpatrick_scale: true, - category: "people" - }, - man_factory_worker: { - keywords: [ "assembly", "industrial", "man", "human" ], - "char": "\ud83d\udc68\u200d\ud83c\udfed", - fitzpatrick_scale: true, - category: "people" - }, - woman_technologist: { - keywords: [ "coder", "developer", "engineer", "programmer", "software", "woman", "human", "laptop", "computer" ], - "char": "\ud83d\udc69\u200d\ud83d\udcbb", - fitzpatrick_scale: true, - category: "people" - }, - man_technologist: { - keywords: [ "coder", "developer", "engineer", "programmer", "software", "man", "human", "laptop", "computer" ], - "char": "\ud83d\udc68\u200d\ud83d\udcbb", - fitzpatrick_scale: true, - category: "people" - }, - woman_office_worker: { - keywords: [ "business", "manager", "woman", "human" ], - "char": "\ud83d\udc69\u200d\ud83d\udcbc", - fitzpatrick_scale: true, - category: "people" - }, - man_office_worker: { - keywords: [ "business", "manager", "man", "human" ], - "char": "\ud83d\udc68\u200d\ud83d\udcbc", - fitzpatrick_scale: true, - category: "people" - }, - woman_mechanic: { - keywords: [ "plumber", "woman", "human", "wrench" ], - "char": "\ud83d\udc69\u200d\ud83d\udd27", - fitzpatrick_scale: true, - category: "people" - }, - man_mechanic: { - keywords: [ "plumber", "man", "human", "wrench" ], - "char": "\ud83d\udc68\u200d\ud83d\udd27", - fitzpatrick_scale: true, - category: "people" - }, - woman_scientist: { - keywords: [ "biologist", "chemist", "engineer", "physicist", "woman", "human" ], - "char": "\ud83d\udc69\u200d\ud83d\udd2c", - fitzpatrick_scale: true, - category: "people" - }, - man_scientist: { - keywords: [ "biologist", "chemist", "engineer", "physicist", "man", "human" ], - "char": "\ud83d\udc68\u200d\ud83d\udd2c", - fitzpatrick_scale: true, - category: "people" - }, - woman_artist: { - keywords: [ "painter", "woman", "human" ], - "char": "\ud83d\udc69\u200d\ud83c\udfa8", - fitzpatrick_scale: true, - category: "people" - }, - man_artist: { - keywords: [ "painter", "man", "human" ], - "char": "\ud83d\udc68\u200d\ud83c\udfa8", - fitzpatrick_scale: true, - category: "people" - }, - woman_firefighter: { - keywords: [ "fireman", "woman", "human" ], - "char": "\ud83d\udc69\u200d\ud83d\ude92", - fitzpatrick_scale: true, - category: "people" - }, - man_firefighter: { - keywords: [ "fireman", "man", "human" ], - "char": "\ud83d\udc68\u200d\ud83d\ude92", - fitzpatrick_scale: true, - category: "people" - }, - woman_pilot: { - keywords: [ "aviator", "plane", "woman", "human" ], - "char": "\ud83d\udc69\u200d\u2708\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_pilot: { - keywords: [ "aviator", "plane", "man", "human" ], - "char": "\ud83d\udc68\u200d\u2708\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_astronaut: { - keywords: [ "space", "rocket", "woman", "human" ], - "char": "\ud83d\udc69\u200d\ud83d\ude80", - fitzpatrick_scale: true, - category: "people" - }, - man_astronaut: { - keywords: [ "space", "rocket", "man", "human" ], - "char": "\ud83d\udc68\u200d\ud83d\ude80", - fitzpatrick_scale: true, - category: "people" - }, - woman_judge: { - keywords: [ "justice", "court", "woman", "human" ], - "char": "\ud83d\udc69\u200d\u2696\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_judge: { - keywords: [ "justice", "court", "man", "human" ], - "char": "\ud83d\udc68\u200d\u2696\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_superhero: { - keywords: [ "woman", "female", "good", "heroine", "superpowers" ], - "char": "\ud83e\uddb8\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_superhero: { - keywords: [ "man", "male", "good", "hero", "superpowers" ], - "char": "\ud83e\uddb8\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_supervillain: { - keywords: [ "woman", "female", "evil", "bad", "criminal", "heroine", "superpowers" ], - "char": "\ud83e\uddb9\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_supervillain: { - keywords: [ "man", "male", "evil", "bad", "criminal", "hero", "superpowers" ], - "char": "\ud83e\uddb9\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - mrs_claus: { - keywords: [ "woman", "female", "xmas", "mother christmas" ], - "char": "\ud83e\udd36", - fitzpatrick_scale: true, - category: "people" - }, - santa: { - keywords: [ "festival", "man", "male", "xmas", "father christmas" ], - "char": "\ud83c\udf85", - fitzpatrick_scale: true, - category: "people" - }, - sorceress: { - keywords: [ "woman", "female", "mage", "witch" ], - "char": "\ud83e\uddd9\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - wizard: { - keywords: [ "man", "male", "mage", "sorcerer" ], - "char": "\ud83e\uddd9\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_elf: { - keywords: [ "woman", "female" ], - "char": "\ud83e\udddd\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_elf: { - keywords: [ "man", "male" ], - "char": "\ud83e\udddd\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_vampire: { - keywords: [ "woman", "female" ], - "char": "\ud83e\udddb\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_vampire: { - keywords: [ "man", "male", "dracula" ], - "char": "\ud83e\udddb\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_zombie: { - keywords: [ "woman", "female", "undead", "walking dead" ], - "char": "\ud83e\udddf\u200d\u2640\ufe0f", - fitzpatrick_scale: false, - category: "people" - }, - man_zombie: { - keywords: [ "man", "male", "dracula", "undead", "walking dead" ], - "char": "\ud83e\udddf\u200d\u2642\ufe0f", - fitzpatrick_scale: false, - category: "people" - }, - woman_genie: { - keywords: [ "woman", "female" ], - "char": "\ud83e\uddde\u200d\u2640\ufe0f", - fitzpatrick_scale: false, - category: "people" - }, - man_genie: { - keywords: [ "man", "male" ], - "char": "\ud83e\uddde\u200d\u2642\ufe0f", - fitzpatrick_scale: false, - category: "people" - }, - mermaid: { - keywords: [ "woman", "female", "merwoman", "ariel" ], - "char": "\ud83e\udddc\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - merman: { - keywords: [ "man", "male", "triton" ], - "char": "\ud83e\udddc\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_fairy: { - keywords: [ "woman", "female" ], - "char": "\ud83e\uddda\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_fairy: { - keywords: [ "man", "male" ], - "char": "\ud83e\uddda\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - angel: { - keywords: [ "heaven", "wings", "halo" ], - "char": "\ud83d\udc7c", - fitzpatrick_scale: true, - category: "people" - }, - pregnant_woman: { - keywords: [ "baby" ], - "char": "\ud83e\udd30", - fitzpatrick_scale: true, - category: "people" - }, - breastfeeding: { - keywords: [ "nursing", "baby" ], - "char": "\ud83e\udd31", - fitzpatrick_scale: true, - category: "people" - }, - princess: { - keywords: [ "girl", "woman", "female", "blond", "crown", "royal", "queen" ], - "char": "\ud83d\udc78", - fitzpatrick_scale: true, - category: "people" - }, - prince: { - keywords: [ "boy", "man", "male", "crown", "royal", "king" ], - "char": "\ud83e\udd34", - fitzpatrick_scale: true, - category: "people" - }, - bride_with_veil: { - keywords: [ "couple", "marriage", "wedding", "woman", "bride" ], - "char": "\ud83d\udc70", - fitzpatrick_scale: true, - category: "people" - }, - man_in_tuxedo: { - keywords: [ "couple", "marriage", "wedding", "groom" ], - "char": "\ud83e\udd35", - fitzpatrick_scale: true, - category: "people" - }, - running_woman: { - keywords: [ "woman", "walking", "exercise", "race", "running", "female" ], - "char": "\ud83c\udfc3\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - running_man: { - keywords: [ "man", "walking", "exercise", "race", "running" ], - "char": "\ud83c\udfc3", - fitzpatrick_scale: true, - category: "people" - }, - walking_woman: { - keywords: [ "human", "feet", "steps", "woman", "female" ], - "char": "\ud83d\udeb6\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - walking_man: { - keywords: [ "human", "feet", "steps" ], - "char": "\ud83d\udeb6", - fitzpatrick_scale: true, - category: "people" - }, - dancer: { - keywords: [ "female", "girl", "woman", "fun" ], - "char": "\ud83d\udc83", - fitzpatrick_scale: true, - category: "people" - }, - man_dancing: { - keywords: [ "male", "boy", "fun", "dancer" ], - "char": "\ud83d\udd7a", - fitzpatrick_scale: true, - category: "people" - }, - dancing_women: { - keywords: [ "female", "bunny", "women", "girls" ], - "char": "\ud83d\udc6f", - fitzpatrick_scale: false, - category: "people" - }, - dancing_men: { - keywords: [ "male", "bunny", "men", "boys" ], - "char": "\ud83d\udc6f\u200d\u2642\ufe0f", - fitzpatrick_scale: false, - category: "people" - }, - couple: { - keywords: [ "pair", "people", "human", "love", "date", "dating", "like", "affection", "valentines", "marriage" ], - "char": "\ud83d\udc6b", - fitzpatrick_scale: false, - category: "people" - }, - two_men_holding_hands: { - keywords: [ "pair", "couple", "love", "like", "bromance", "friendship", "people", "human" ], - "char": "\ud83d\udc6c", - fitzpatrick_scale: false, - category: "people" - }, - two_women_holding_hands: { - keywords: [ "pair", "friendship", "couple", "love", "like", "female", "people", "human" ], - "char": "\ud83d\udc6d", - fitzpatrick_scale: false, - category: "people" - }, - bowing_woman: { - keywords: [ "woman", "female", "girl" ], - "char": "\ud83d\ude47\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - bowing_man: { - keywords: [ "man", "male", "boy" ], - "char": "\ud83d\ude47", - fitzpatrick_scale: true, - category: "people" - }, - man_facepalming: { - keywords: [ "man", "male", "boy", "disbelief" ], - "char": "\ud83e\udd26\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_facepalming: { - keywords: [ "woman", "female", "girl", "disbelief" ], - "char": "\ud83e\udd26\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_shrugging: { - keywords: [ "woman", "female", "girl", "confused", "indifferent", "doubt" ], - "char": "\ud83e\udd37", - fitzpatrick_scale: true, - category: "people" - }, - man_shrugging: { - keywords: [ "man", "male", "boy", "confused", "indifferent", "doubt" ], - "char": "\ud83e\udd37\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - tipping_hand_woman: { - keywords: [ "female", "girl", "woman", "human", "information" ], - "char": "\ud83d\udc81", - fitzpatrick_scale: true, - category: "people" - }, - tipping_hand_man: { - keywords: [ "male", "boy", "man", "human", "information" ], - "char": "\ud83d\udc81\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - no_good_woman: { - keywords: [ "female", "girl", "woman", "nope" ], - "char": "\ud83d\ude45", - fitzpatrick_scale: true, - category: "people" - }, - no_good_man: { - keywords: [ "male", "boy", "man", "nope" ], - "char": "\ud83d\ude45\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - ok_woman: { - keywords: [ "women", "girl", "female", "pink", "human", "woman" ], - "char": "\ud83d\ude46", - fitzpatrick_scale: true, - category: "people" - }, - ok_man: { - keywords: [ "men", "boy", "male", "blue", "human", "man" ], - "char": "\ud83d\ude46\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - raising_hand_woman: { - keywords: [ "female", "girl", "woman" ], - "char": "\ud83d\ude4b", - fitzpatrick_scale: true, - category: "people" - }, - raising_hand_man: { - keywords: [ "male", "boy", "man" ], - "char": "\ud83d\ude4b\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - pouting_woman: { - keywords: [ "female", "girl", "woman" ], - "char": "\ud83d\ude4e", - fitzpatrick_scale: true, - category: "people" - }, - pouting_man: { - keywords: [ "male", "boy", "man" ], - "char": "\ud83d\ude4e\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - frowning_woman: { - keywords: [ "female", "girl", "woman", "sad", "depressed", "discouraged", "unhappy" ], - "char": "\ud83d\ude4d", - fitzpatrick_scale: true, - category: "people" - }, - frowning_man: { - keywords: [ "male", "boy", "man", "sad", "depressed", "discouraged", "unhappy" ], - "char": "\ud83d\ude4d\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - haircut_woman: { - keywords: [ "female", "girl", "woman" ], - "char": "\ud83d\udc87", - fitzpatrick_scale: true, - category: "people" - }, - haircut_man: { - keywords: [ "male", "boy", "man" ], - "char": "\ud83d\udc87\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - massage_woman: { - keywords: [ "female", "girl", "woman", "head" ], - "char": "\ud83d\udc86", - fitzpatrick_scale: true, - category: "people" - }, - massage_man: { - keywords: [ "male", "boy", "man", "head" ], - "char": "\ud83d\udc86\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - woman_in_steamy_room: { - keywords: [ "female", "woman", "spa", "steamroom", "sauna" ], - "char": "\ud83e\uddd6\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - man_in_steamy_room: { - keywords: [ "male", "man", "spa", "steamroom", "sauna" ], - "char": "\ud83e\uddd6\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "people" - }, - couple_with_heart_woman_man: { - keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ], - "char": "\ud83d\udc91", - fitzpatrick_scale: false, - category: "people" - }, - couple_with_heart_woman_woman: { - keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ], - "char": "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69", - fitzpatrick_scale: false, - category: "people" - }, - couple_with_heart_man_man: { - keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ], - "char": "\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68", - fitzpatrick_scale: false, - category: "people" - }, - couplekiss_man_woman: { - keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ], - "char": "\ud83d\udc8f", - fitzpatrick_scale: false, - category: "people" - }, - couplekiss_woman_woman: { - keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ], - "char": "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69", - fitzpatrick_scale: false, - category: "people" - }, - couplekiss_man_man: { - keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ], - "char": "\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68", - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_boy: { - keywords: [ "home", "parents", "child", "mom", "dad", "father", "mother", "people", "human" ], - "char": "\ud83d\udc6a", - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_girl: { - keywords: [ "home", "parents", "people", "human", "child" ], - "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_girl_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_boy_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_woman_girl_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_girl_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_boy_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_woman_girl_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_girl_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_boy_boy: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_man_girl_girl: { - keywords: [ "home", "parents", "people", "human", "children" ], - "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_boy: { - keywords: [ "home", "parent", "people", "human", "child" ], - "char": "\ud83d\udc69\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_girl: { - keywords: [ "home", "parent", "people", "human", "child" ], - "char": "\ud83d\udc69\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_girl_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - "char": "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_boy_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - "char": "\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_woman_girl_girl: { - keywords: [ "home", "parent", "people", "human", "children" ], - "char": "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_man_boy: { - keywords: [ "home", "parent", "people", "human", "child" ], - "char": "\ud83d\udc68\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_girl: { - keywords: [ "home", "parent", "people", "human", "child" ], - "char": "\ud83d\udc68\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - family_man_girl_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - "char": "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_boy_boy: { - keywords: [ "home", "parent", "people", "human", "children" ], - "char": "\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66", - fitzpatrick_scale: false, - category: "people" - }, - family_man_girl_girl: { - keywords: [ "home", "parent", "people", "human", "children" ], - "char": "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67", - fitzpatrick_scale: false, - category: "people" - }, - yarn: { - keywords: [ "ball", "crochet", "knit" ], - "char": "\ud83e\uddf6", - fitzpatrick_scale: false, - category: "people" - }, - thread: { - keywords: [ "needle", "sewing", "spool", "string" ], - "char": "\ud83e\uddf5", - fitzpatrick_scale: false, - category: "people" - }, - coat: { - keywords: [ "jacket" ], - "char": "\ud83e\udde5", - fitzpatrick_scale: false, - category: "people" - }, - labcoat: { - keywords: [ "doctor", "experiment", "scientist", "chemist" ], - "char": "\ud83e\udd7c", - fitzpatrick_scale: false, - category: "people" - }, - womans_clothes: { - keywords: [ "fashion", "shopping_bags", "female" ], - "char": "\ud83d\udc5a", - fitzpatrick_scale: false, - category: "people" - }, - tshirt: { - keywords: [ "fashion", "cloth", "casual", "shirt", "tee" ], - "char": "\ud83d\udc55", - fitzpatrick_scale: false, - category: "people" - }, - jeans: { - keywords: [ "fashion", "shopping" ], - "char": "\ud83d\udc56", - fitzpatrick_scale: false, - category: "people" - }, - necktie: { - keywords: [ "shirt", "suitup", "formal", "fashion", "cloth", "business" ], - "char": "\ud83d\udc54", - fitzpatrick_scale: false, - category: "people" - }, - dress: { - keywords: [ "clothes", "fashion", "shopping" ], - "char": "\ud83d\udc57", - fitzpatrick_scale: false, - category: "people" - }, - bikini: { - keywords: [ "swimming", "female", "woman", "girl", "fashion", "beach", "summer" ], - "char": "\ud83d\udc59", - fitzpatrick_scale: false, - category: "people" - }, - kimono: { - keywords: [ "dress", "fashion", "women", "female", "japanese" ], - "char": "\ud83d\udc58", - fitzpatrick_scale: false, - category: "people" - }, - lipstick: { - keywords: [ "female", "girl", "fashion", "woman" ], - "char": "\ud83d\udc84", - fitzpatrick_scale: false, - category: "people" - }, - kiss: { - keywords: [ "face", "lips", "love", "like", "affection", "valentines" ], - "char": "\ud83d\udc8b", - fitzpatrick_scale: false, - category: "people" - }, - footprints: { - keywords: [ "feet", "tracking", "walking", "beach" ], - "char": "\ud83d\udc63", - fitzpatrick_scale: false, - category: "people" - }, - flat_shoe: { - keywords: [ "ballet", "slip-on", "slipper" ], - "char": "\ud83e\udd7f", - fitzpatrick_scale: false, - category: "people" - }, - high_heel: { - keywords: [ "fashion", "shoes", "female", "pumps", "stiletto" ], - "char": "\ud83d\udc60", - fitzpatrick_scale: false, - category: "people" - }, - sandal: { - keywords: [ "shoes", "fashion", "flip flops" ], - "char": "\ud83d\udc61", - fitzpatrick_scale: false, - category: "people" - }, - boot: { - keywords: [ "shoes", "fashion" ], - "char": "\ud83d\udc62", - fitzpatrick_scale: false, - category: "people" - }, - mans_shoe: { - keywords: [ "fashion", "male" ], - "char": "\ud83d\udc5e", - fitzpatrick_scale: false, - category: "people" - }, - athletic_shoe: { - keywords: [ "shoes", "sports", "sneakers" ], - "char": "\ud83d\udc5f", - fitzpatrick_scale: false, - category: "people" - }, - hiking_boot: { - keywords: [ "backpacking", "camping", "hiking" ], - "char": "\ud83e\udd7e", - fitzpatrick_scale: false, - category: "people" - }, - socks: { - keywords: [ "stockings", "clothes" ], - "char": "\ud83e\udde6", - fitzpatrick_scale: false, - category: "people" - }, - gloves: { - keywords: [ "hands", "winter", "clothes" ], - "char": "\ud83e\udde4", - fitzpatrick_scale: false, - category: "people" - }, - scarf: { - keywords: [ "neck", "winter", "clothes" ], - "char": "\ud83e\udde3", - fitzpatrick_scale: false, - category: "people" - }, - womans_hat: { - keywords: [ "fashion", "accessories", "female", "lady", "spring" ], - "char": "\ud83d\udc52", - fitzpatrick_scale: false, - category: "people" - }, - tophat: { - keywords: [ "magic", "gentleman", "classy", "circus" ], - "char": "\ud83c\udfa9", - fitzpatrick_scale: false, - category: "people" - }, - billed_hat: { - keywords: [ "cap", "baseball" ], - "char": "\ud83e\udde2", - fitzpatrick_scale: false, - category: "people" - }, - rescue_worker_helmet: { - keywords: [ "construction", "build" ], - "char": "\u26d1", - fitzpatrick_scale: false, - category: "people" - }, - mortar_board: { - keywords: [ "school", "college", "degree", "university", "graduation", "cap", "hat", "legal", "learn", "education" ], - "char": "\ud83c\udf93", - fitzpatrick_scale: false, - category: "people" - }, - crown: { - keywords: [ "king", "kod", "leader", "royalty", "lord" ], - "char": "\ud83d\udc51", - fitzpatrick_scale: false, - category: "people" - }, - school_satchel: { - keywords: [ "student", "education", "bag", "backpack" ], - "char": "\ud83c\udf92", - fitzpatrick_scale: false, - category: "people" - }, - luggage: { - keywords: [ "packing", "travel" ], - "char": "\ud83e\uddf3", - fitzpatrick_scale: false, - category: "people" - }, - pouch: { - keywords: [ "bag", "accessories", "shopping" ], - "char": "\ud83d\udc5d", - fitzpatrick_scale: false, - category: "people" - }, - purse: { - keywords: [ "fashion", "accessories", "money", "sales", "shopping" ], - "char": "\ud83d\udc5b", - fitzpatrick_scale: false, - category: "people" - }, - handbag: { - keywords: [ "fashion", "accessory", "accessories", "shopping" ], - "char": "\ud83d\udc5c", - fitzpatrick_scale: false, - category: "people" - }, - briefcase: { - keywords: [ "business", "documents", "work", "law", "legal", "job", "career" ], - "char": "\ud83d\udcbc", - fitzpatrick_scale: false, - category: "people" - }, - eyeglasses: { - keywords: [ "fashion", "accessories", "eyesight", "nerdy", "dork", "geek" ], - "char": "\ud83d\udc53", - fitzpatrick_scale: false, - category: "people" - }, - dark_sunglasses: { - keywords: [ "face", "cool", "accessories" ], - "char": "\ud83d\udd76", - fitzpatrick_scale: false, - category: "people" - }, - goggles: { - keywords: [ "eyes", "protection", "safety" ], - "char": "\ud83e\udd7d", - fitzpatrick_scale: false, - category: "people" - }, - ring: { - keywords: [ "wedding", "propose", "marriage", "valentines", "diamond", "fashion", "jewelry", "gem", "engagement" ], - "char": "\ud83d\udc8d", - fitzpatrick_scale: false, - category: "people" - }, - closed_umbrella: { - keywords: [ "weather", "rain", "drizzle" ], - "char": "\ud83c\udf02", - fitzpatrick_scale: false, - category: "people" - }, - dog: { - keywords: [ "animal", "friend", "nature", "woof", "puppy", "pet", "faithful" ], - "char": "\ud83d\udc36", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cat: { - keywords: [ "animal", "meow", "nature", "pet", "kitten" ], - "char": "\ud83d\udc31", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mouse: { - keywords: [ "animal", "nature", "cheese_wedge", "rodent" ], - "char": "\ud83d\udc2d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hamster: { - keywords: [ "animal", "nature" ], - "char": "\ud83d\udc39", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rabbit: { - keywords: [ "animal", "nature", "pet", "spring", "magic", "bunny" ], - "char": "\ud83d\udc30", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fox_face: { - keywords: [ "animal", "nature", "face" ], - "char": "\ud83e\udd8a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bear: { - keywords: [ "animal", "nature", "wild" ], - "char": "\ud83d\udc3b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - panda_face: { - keywords: [ "animal", "nature", "panda" ], - "char": "\ud83d\udc3c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - koala: { - keywords: [ "animal", "nature" ], - "char": "\ud83d\udc28", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tiger: { - keywords: [ "animal", "cat", "danger", "wild", "nature", "roar" ], - "char": "\ud83d\udc2f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - lion: { - keywords: [ "animal", "nature" ], - "char": "\ud83e\udd81", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cow: { - keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ], - "char": "\ud83d\udc2e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - pig: { - keywords: [ "animal", "oink", "nature" ], - "char": "\ud83d\udc37", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - pig_nose: { - keywords: [ "animal", "oink" ], - "char": "\ud83d\udc3d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - frog: { - keywords: [ "animal", "nature", "croak", "toad" ], - "char": "\ud83d\udc38", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - squid: { - keywords: [ "animal", "nature", "ocean", "sea" ], - "char": "\ud83e\udd91", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - octopus: { - keywords: [ "animal", "creature", "ocean", "sea", "nature", "beach" ], - "char": "\ud83d\udc19", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shrimp: { - keywords: [ "animal", "ocean", "nature", "seafood" ], - "char": "\ud83e\udd90", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - monkey_face: { - keywords: [ "animal", "nature", "circus" ], - "char": "\ud83d\udc35", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - gorilla: { - keywords: [ "animal", "nature", "circus" ], - "char": "\ud83e\udd8d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - see_no_evil: { - keywords: [ "monkey", "animal", "nature", "haha" ], - "char": "\ud83d\ude48", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hear_no_evil: { - keywords: [ "animal", "monkey", "nature" ], - "char": "\ud83d\ude49", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - speak_no_evil: { - keywords: [ "monkey", "animal", "nature", "omg" ], - "char": "\ud83d\ude4a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - monkey: { - keywords: [ "animal", "nature", "banana", "circus" ], - "char": "\ud83d\udc12", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - chicken: { - keywords: [ "animal", "cluck", "nature", "bird" ], - "char": "\ud83d\udc14", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - penguin: { - keywords: [ "animal", "nature" ], - "char": "\ud83d\udc27", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bird: { - keywords: [ "animal", "nature", "fly", "tweet", "spring" ], - "char": "\ud83d\udc26", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - baby_chick: { - keywords: [ "animal", "chicken", "bird" ], - "char": "\ud83d\udc24", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hatching_chick: { - keywords: [ "animal", "chicken", "egg", "born", "baby", "bird" ], - "char": "\ud83d\udc23", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hatched_chick: { - keywords: [ "animal", "chicken", "baby", "bird" ], - "char": "\ud83d\udc25", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - duck: { - keywords: [ "animal", "nature", "bird", "mallard" ], - "char": "\ud83e\udd86", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - eagle: { - keywords: [ "animal", "nature", "bird" ], - "char": "\ud83e\udd85", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - owl: { - keywords: [ "animal", "nature", "bird", "hoot" ], - "char": "\ud83e\udd89", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bat: { - keywords: [ "animal", "nature", "blind", "vampire" ], - "char": "\ud83e\udd87", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - wolf: { - keywords: [ "animal", "nature", "wild" ], - "char": "\ud83d\udc3a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - boar: { - keywords: [ "animal", "nature" ], - "char": "\ud83d\udc17", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - horse: { - keywords: [ "animal", "brown", "nature" ], - "char": "\ud83d\udc34", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - unicorn: { - keywords: [ "animal", "nature", "mystical" ], - "char": "\ud83e\udd84", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - honeybee: { - keywords: [ "animal", "insect", "nature", "bug", "spring", "honey" ], - "char": "\ud83d\udc1d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bug: { - keywords: [ "animal", "insect", "nature", "worm" ], - "char": "\ud83d\udc1b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - butterfly: { - keywords: [ "animal", "insect", "nature", "caterpillar" ], - "char": "\ud83e\udd8b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snail: { - keywords: [ "slow", "animal", "shell" ], - "char": "\ud83d\udc0c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - beetle: { - keywords: [ "animal", "insect", "nature", "ladybug" ], - "char": "\ud83d\udc1e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ant: { - keywords: [ "animal", "insect", "nature", "bug" ], - "char": "\ud83d\udc1c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - grasshopper: { - keywords: [ "animal", "cricket", "chirp" ], - "char": "\ud83e\udd97", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - spider: { - keywords: [ "animal", "arachnid" ], - "char": "\ud83d\udd77", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - scorpion: { - keywords: [ "animal", "arachnid" ], - "char": "\ud83e\udd82", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - crab: { - keywords: [ "animal", "crustacean" ], - "char": "\ud83e\udd80", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snake: { - keywords: [ "animal", "evil", "nature", "hiss", "python" ], - "char": "\ud83d\udc0d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - lizard: { - keywords: [ "animal", "nature", "reptile" ], - "char": "\ud83e\udd8e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - "t-rex": { - keywords: [ "animal", "nature", "dinosaur", "tyrannosaurus", "extinct" ], - "char": "\ud83e\udd96", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sauropod: { - keywords: [ "animal", "nature", "dinosaur", "brachiosaurus", "brontosaurus", "diplodocus", "extinct" ], - "char": "\ud83e\udd95", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - turtle: { - keywords: [ "animal", "slow", "nature", "tortoise" ], - "char": "\ud83d\udc22", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tropical_fish: { - keywords: [ "animal", "swim", "ocean", "beach", "nemo" ], - "char": "\ud83d\udc20", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fish: { - keywords: [ "animal", "food", "nature" ], - "char": "\ud83d\udc1f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - blowfish: { - keywords: [ "animal", "nature", "food", "sea", "ocean" ], - "char": "\ud83d\udc21", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dolphin: { - keywords: [ "animal", "nature", "fish", "sea", "ocean", "flipper", "fins", "beach" ], - "char": "\ud83d\udc2c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shark: { - keywords: [ "animal", "nature", "fish", "sea", "ocean", "jaws", "fins", "beach" ], - "char": "\ud83e\udd88", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - whale: { - keywords: [ "animal", "nature", "sea", "ocean" ], - "char": "\ud83d\udc33", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - whale2: { - keywords: [ "animal", "nature", "sea", "ocean" ], - "char": "\ud83d\udc0b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - crocodile: { - keywords: [ "animal", "nature", "reptile", "lizard", "alligator" ], - "char": "\ud83d\udc0a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - leopard: { - keywords: [ "animal", "nature" ], - "char": "\ud83d\udc06", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - zebra: { - keywords: [ "animal", "nature", "stripes", "safari" ], - "char": "\ud83e\udd93", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tiger2: { - keywords: [ "animal", "nature", "roar" ], - "char": "\ud83d\udc05", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - water_buffalo: { - keywords: [ "animal", "nature", "ox", "cow" ], - "char": "\ud83d\udc03", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ox: { - keywords: [ "animal", "cow", "beef" ], - "char": "\ud83d\udc02", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cow2: { - keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ], - "char": "\ud83d\udc04", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - deer: { - keywords: [ "animal", "nature", "horns", "venison" ], - "char": "\ud83e\udd8c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dromedary_camel: { - keywords: [ "animal", "hot", "desert", "hump" ], - "char": "\ud83d\udc2a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - camel: { - keywords: [ "animal", "nature", "hot", "desert", "hump" ], - "char": "\ud83d\udc2b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - giraffe: { - keywords: [ "animal", "nature", "spots", "safari" ], - "char": "\ud83e\udd92", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - elephant: { - keywords: [ "animal", "nature", "nose", "th", "circus" ], - "char": "\ud83d\udc18", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rhinoceros: { - keywords: [ "animal", "nature", "horn" ], - "char": "\ud83e\udd8f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - goat: { - keywords: [ "animal", "nature" ], - "char": "\ud83d\udc10", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ram: { - keywords: [ "animal", "sheep", "nature" ], - "char": "\ud83d\udc0f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sheep: { - keywords: [ "animal", "nature", "wool", "shipit" ], - "char": "\ud83d\udc11", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - racehorse: { - keywords: [ "animal", "gamble", "luck" ], - "char": "\ud83d\udc0e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - pig2: { - keywords: [ "animal", "nature" ], - "char": "\ud83d\udc16", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rat: { - keywords: [ "animal", "mouse", "rodent" ], - "char": "\ud83d\udc00", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mouse2: { - keywords: [ "animal", "nature", "rodent" ], - "char": "\ud83d\udc01", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rooster: { - keywords: [ "animal", "nature", "chicken" ], - "char": "\ud83d\udc13", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - turkey: { - keywords: [ "animal", "bird" ], - "char": "\ud83e\udd83", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dove: { - keywords: [ "animal", "bird" ], - "char": "\ud83d\udd4a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dog2: { - keywords: [ "animal", "nature", "friend", "doge", "pet", "faithful" ], - "char": "\ud83d\udc15", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - poodle: { - keywords: [ "dog", "animal", "101", "nature", "pet" ], - "char": "\ud83d\udc29", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cat2: { - keywords: [ "animal", "meow", "pet", "cats" ], - "char": "\ud83d\udc08", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rabbit2: { - keywords: [ "animal", "nature", "pet", "magic", "spring" ], - "char": "\ud83d\udc07", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - chipmunk: { - keywords: [ "animal", "nature", "rodent", "squirrel" ], - "char": "\ud83d\udc3f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hedgehog: { - keywords: [ "animal", "nature", "spiny" ], - "char": "\ud83e\udd94", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - raccoon: { - keywords: [ "animal", "nature" ], - "char": "\ud83e\udd9d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - llama: { - keywords: [ "animal", "nature", "alpaca" ], - "char": "\ud83e\udd99", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hippopotamus: { - keywords: [ "animal", "nature" ], - "char": "\ud83e\udd9b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - kangaroo: { - keywords: [ "animal", "nature", "australia", "joey", "hop", "marsupial" ], - "char": "\ud83e\udd98", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - badger: { - keywords: [ "animal", "nature", "honey" ], - "char": "\ud83e\udda1", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - swan: { - keywords: [ "animal", "nature", "bird" ], - "char": "\ud83e\udda2", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - peacock: { - keywords: [ "animal", "nature", "peahen", "bird" ], - "char": "\ud83e\udd9a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - parrot: { - keywords: [ "animal", "nature", "bird", "pirate", "talk" ], - "char": "\ud83e\udd9c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - lobster: { - keywords: [ "animal", "nature", "bisque", "claws", "seafood" ], - "char": "\ud83e\udd9e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mosquito: { - keywords: [ "animal", "nature", "insect", "malaria" ], - "char": "\ud83e\udd9f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - paw_prints: { - keywords: [ "animal", "tracking", "footprints", "dog", "cat", "pet", "feet" ], - "char": "\ud83d\udc3e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dragon: { - keywords: [ "animal", "myth", "nature", "chinese", "green" ], - "char": "\ud83d\udc09", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dragon_face: { - keywords: [ "animal", "myth", "nature", "chinese", "green" ], - "char": "\ud83d\udc32", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cactus: { - keywords: [ "vegetable", "plant", "nature" ], - "char": "\ud83c\udf35", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - christmas_tree: { - keywords: [ "festival", "vacation", "december", "xmas", "celebration" ], - "char": "\ud83c\udf84", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - evergreen_tree: { - keywords: [ "plant", "nature" ], - "char": "\ud83c\udf32", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - deciduous_tree: { - keywords: [ "plant", "nature" ], - "char": "\ud83c\udf33", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - palm_tree: { - keywords: [ "plant", "vegetable", "nature", "summer", "beach", "mojito", "tropical" ], - "char": "\ud83c\udf34", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - seedling: { - keywords: [ "plant", "nature", "grass", "lawn", "spring" ], - "char": "\ud83c\udf31", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - herb: { - keywords: [ "vegetable", "plant", "medicine", "weed", "grass", "lawn" ], - "char": "\ud83c\udf3f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shamrock: { - keywords: [ "vegetable", "plant", "nature", "irish", "clover" ], - "char": "\u2618", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - four_leaf_clover: { - keywords: [ "vegetable", "plant", "nature", "lucky", "irish" ], - "char": "\ud83c\udf40", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bamboo: { - keywords: [ "plant", "nature", "vegetable", "panda", "pine_decoration" ], - "char": "\ud83c\udf8d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tanabata_tree: { - keywords: [ "plant", "nature", "branch", "summer" ], - "char": "\ud83c\udf8b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - leaves: { - keywords: [ "nature", "plant", "tree", "vegetable", "grass", "lawn", "spring" ], - "char": "\ud83c\udf43", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fallen_leaf: { - keywords: [ "nature", "plant", "vegetable", "leaves" ], - "char": "\ud83c\udf42", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - maple_leaf: { - keywords: [ "nature", "plant", "vegetable", "ca", "fall" ], - "char": "\ud83c\udf41", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ear_of_rice: { - keywords: [ "nature", "plant" ], - "char": "\ud83c\udf3e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - hibiscus: { - keywords: [ "plant", "vegetable", "flowers", "beach" ], - "char": "\ud83c\udf3a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sunflower: { - keywords: [ "nature", "plant", "fall" ], - "char": "\ud83c\udf3b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - rose: { - keywords: [ "flowers", "valentines", "love", "spring" ], - "char": "\ud83c\udf39", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - wilted_flower: { - keywords: [ "plant", "nature", "flower" ], - "char": "\ud83e\udd40", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tulip: { - keywords: [ "flowers", "plant", "nature", "summer", "spring" ], - "char": "\ud83c\udf37", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - blossom: { - keywords: [ "nature", "flowers", "yellow" ], - "char": "\ud83c\udf3c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cherry_blossom: { - keywords: [ "nature", "plant", "spring", "flower" ], - "char": "\ud83c\udf38", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - bouquet: { - keywords: [ "flowers", "nature", "spring" ], - "char": "\ud83d\udc90", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - mushroom: { - keywords: [ "plant", "vegetable" ], - "char": "\ud83c\udf44", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - chestnut: { - keywords: [ "food", "squirrel" ], - "char": "\ud83c\udf30", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - jack_o_lantern: { - keywords: [ "halloween", "light", "pumpkin", "creepy", "fall" ], - "char": "\ud83c\udf83", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - shell: { - keywords: [ "nature", "sea", "beach" ], - "char": "\ud83d\udc1a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - spider_web: { - keywords: [ "animal", "insect", "arachnid", "silk" ], - "char": "\ud83d\udd78", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - earth_americas: { - keywords: [ "globe", "world", "USA", "international" ], - "char": "\ud83c\udf0e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - earth_africa: { - keywords: [ "globe", "world", "international" ], - "char": "\ud83c\udf0d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - earth_asia: { - keywords: [ "globe", "world", "east", "international" ], - "char": "\ud83c\udf0f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - full_moon: { - keywords: [ "nature", "yellow", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": "\ud83c\udf15", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waning_gibbous_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep", "waxing_gibbous_moon" ], - "char": "\ud83c\udf16", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - last_quarter_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": "\ud83c\udf17", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waning_crescent_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": "\ud83c\udf18", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - new_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": "\ud83c\udf11", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waxing_crescent_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": "\ud83c\udf12", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - first_quarter_moon: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": "\ud83c\udf13", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - waxing_gibbous_moon: { - keywords: [ "nature", "night", "sky", "gray", "twilight", "planet", "space", "evening", "sleep" ], - "char": "\ud83c\udf14", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - new_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": "\ud83c\udf1a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - full_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": "\ud83c\udf1d", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - first_quarter_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": "\ud83c\udf1b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - last_quarter_moon_with_face: { - keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ], - "char": "\ud83c\udf1c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_with_face: { - keywords: [ "nature", "morning", "sky" ], - "char": "\ud83c\udf1e", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - crescent_moon: { - keywords: [ "night", "sleep", "sky", "evening", "magic" ], - "char": "\ud83c\udf19", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - star: { - keywords: [ "night", "yellow" ], - "char": "\u2b50", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - star2: { - keywords: [ "night", "sparkle", "awesome", "good", "magic" ], - "char": "\ud83c\udf1f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dizzy: { - keywords: [ "star", "sparkle", "shoot", "magic" ], - "char": "\ud83d\udcab", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sparkles: { - keywords: [ "stars", "shine", "shiny", "cool", "awesome", "good", "magic" ], - "char": "\u2728", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - comet: { - keywords: [ "space" ], - "char": "\u2604", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sunny: { - keywords: [ "weather", "nature", "brightness", "summer", "beach", "spring" ], - "char": "\u2600\ufe0f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_behind_small_cloud: { - keywords: [ "weather" ], - "char": "\ud83c\udf24", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - partly_sunny: { - keywords: [ "weather", "nature", "cloudy", "morning", "fall", "spring" ], - "char": "\u26c5", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_behind_large_cloud: { - keywords: [ "weather" ], - "char": "\ud83c\udf25", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sun_behind_rain_cloud: { - keywords: [ "weather" ], - "char": "\ud83c\udf26", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud: { - keywords: [ "weather", "sky" ], - "char": "\u2601\ufe0f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_rain: { - keywords: [ "weather" ], - "char": "\ud83c\udf27", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_lightning_and_rain: { - keywords: [ "weather", "lightning" ], - "char": "\u26c8", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_lightning: { - keywords: [ "weather", "thunder" ], - "char": "\ud83c\udf29", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - zap: { - keywords: [ "thunder", "weather", "lightning bolt", "fast" ], - "char": "\u26a1", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fire: { - keywords: [ "hot", "cook", "flame" ], - "char": "\ud83d\udd25", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - boom: { - keywords: [ "bomb", "explode", "explosion", "collision", "blown" ], - "char": "\ud83d\udca5", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snowflake: { - keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas" ], - "char": "\u2744\ufe0f", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - cloud_with_snow: { - keywords: [ "weather" ], - "char": "\ud83c\udf28", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snowman: { - keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen", "without_snow" ], - "char": "\u26c4", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - snowman_with_snow: { - keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen" ], - "char": "\u2603", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - wind_face: { - keywords: [ "gust", "air" ], - "char": "\ud83c\udf2c", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - dash: { - keywords: [ "wind", "air", "fast", "shoo", "fart", "smoke", "puff" ], - "char": "\ud83d\udca8", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - tornado: { - keywords: [ "weather", "cyclone", "twister" ], - "char": "\ud83c\udf2a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - fog: { - keywords: [ "weather" ], - "char": "\ud83c\udf2b", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - open_umbrella: { - keywords: [ "weather", "spring" ], - "char": "\u2602", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - umbrella: { - keywords: [ "rainy", "weather", "spring" ], - "char": "\u2614", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - droplet: { - keywords: [ "water", "drip", "faucet", "spring" ], - "char": "\ud83d\udca7", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - sweat_drops: { - keywords: [ "water", "drip", "oops" ], - "char": "\ud83d\udca6", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - ocean: { - keywords: [ "sea", "water", "wave", "nature", "tsunami", "disaster" ], - "char": "\ud83c\udf0a", - fitzpatrick_scale: false, - category: "animals_and_nature" - }, - green_apple: { - keywords: [ "fruit", "nature" ], - "char": "\ud83c\udf4f", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - apple: { - keywords: [ "fruit", "mac", "school" ], - "char": "\ud83c\udf4e", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pear: { - keywords: [ "fruit", "nature", "food" ], - "char": "\ud83c\udf50", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tangerine: { - keywords: [ "food", "fruit", "nature", "orange" ], - "char": "\ud83c\udf4a", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - lemon: { - keywords: [ "fruit", "nature" ], - "char": "\ud83c\udf4b", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - banana: { - keywords: [ "fruit", "food", "monkey" ], - "char": "\ud83c\udf4c", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - watermelon: { - keywords: [ "fruit", "food", "picnic", "summer" ], - "char": "\ud83c\udf49", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - grapes: { - keywords: [ "fruit", "food", "wine" ], - "char": "\ud83c\udf47", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - strawberry: { - keywords: [ "fruit", "food", "nature" ], - "char": "\ud83c\udf53", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - melon: { - keywords: [ "fruit", "nature", "food" ], - "char": "\ud83c\udf48", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cherries: { - keywords: [ "food", "fruit" ], - "char": "\ud83c\udf52", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - peach: { - keywords: [ "fruit", "nature", "food" ], - "char": "\ud83c\udf51", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pineapple: { - keywords: [ "fruit", "nature", "food" ], - "char": "\ud83c\udf4d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - coconut: { - keywords: [ "fruit", "nature", "food", "palm" ], - "char": "\ud83e\udd65", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - kiwi_fruit: { - keywords: [ "fruit", "food" ], - "char": "\ud83e\udd5d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - mango: { - keywords: [ "fruit", "food", "tropical" ], - "char": "\ud83e\udd6d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - avocado: { - keywords: [ "fruit", "food" ], - "char": "\ud83e\udd51", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - broccoli: { - keywords: [ "fruit", "food", "vegetable" ], - "char": "\ud83e\udd66", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tomato: { - keywords: [ "fruit", "vegetable", "nature", "food" ], - "char": "\ud83c\udf45", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - eggplant: { - keywords: [ "vegetable", "nature", "food", "aubergine" ], - "char": "\ud83c\udf46", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cucumber: { - keywords: [ "fruit", "food", "pickle" ], - "char": "\ud83e\udd52", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - carrot: { - keywords: [ "vegetable", "food", "orange" ], - "char": "\ud83e\udd55", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - hot_pepper: { - keywords: [ "food", "spicy", "chilli", "chili" ], - "char": "\ud83c\udf36", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - potato: { - keywords: [ "food", "tuber", "vegatable", "starch" ], - "char": "\ud83e\udd54", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - corn: { - keywords: [ "food", "vegetable", "plant" ], - "char": "\ud83c\udf3d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - leafy_greens: { - keywords: [ "food", "vegetable", "plant", "bok choy", "cabbage", "kale", "lettuce" ], - "char": "\ud83e\udd6c", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sweet_potato: { - keywords: [ "food", "nature" ], - "char": "\ud83c\udf60", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - peanuts: { - keywords: [ "food", "nut" ], - "char": "\ud83e\udd5c", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - honey_pot: { - keywords: [ "bees", "sweet", "kitchen" ], - "char": "\ud83c\udf6f", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - croissant: { - keywords: [ "food", "bread", "french" ], - "char": "\ud83e\udd50", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bread: { - keywords: [ "food", "wheat", "breakfast", "toast" ], - "char": "\ud83c\udf5e", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - baguette_bread: { - keywords: [ "food", "bread", "french" ], - "char": "\ud83e\udd56", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bagel: { - keywords: [ "food", "bread", "bakery", "schmear" ], - "char": "\ud83e\udd6f", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pretzel: { - keywords: [ "food", "bread", "twisted" ], - "char": "\ud83e\udd68", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cheese: { - keywords: [ "food", "chadder" ], - "char": "\ud83e\uddc0", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - egg: { - keywords: [ "food", "chicken", "breakfast" ], - "char": "\ud83e\udd5a", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bacon: { - keywords: [ "food", "breakfast", "pork", "pig", "meat" ], - "char": "\ud83e\udd53", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - steak: { - keywords: [ "food", "cow", "meat", "cut", "chop", "lambchop", "porkchop" ], - "char": "\ud83e\udd69", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pancakes: { - keywords: [ "food", "breakfast", "flapjacks", "hotcakes" ], - "char": "\ud83e\udd5e", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - poultry_leg: { - keywords: [ "food", "meat", "drumstick", "bird", "chicken", "turkey" ], - "char": "\ud83c\udf57", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - meat_on_bone: { - keywords: [ "good", "food", "drumstick" ], - "char": "\ud83c\udf56", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bone: { - keywords: [ "skeleton" ], - "char": "\ud83e\uddb4", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fried_shrimp: { - keywords: [ "food", "animal", "appetizer", "summer" ], - "char": "\ud83c\udf64", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fried_egg: { - keywords: [ "food", "breakfast", "kitchen", "egg" ], - "char": "\ud83c\udf73", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - hamburger: { - keywords: [ "meat", "fast food", "beef", "cheeseburger", "mcdonalds", "burger king" ], - "char": "\ud83c\udf54", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fries: { - keywords: [ "chips", "snack", "fast food" ], - "char": "\ud83c\udf5f", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - stuffed_flatbread: { - keywords: [ "food", "flatbread", "stuffed", "gyro" ], - "char": "\ud83e\udd59", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - hotdog: { - keywords: [ "food", "frankfurter" ], - "char": "\ud83c\udf2d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pizza: { - keywords: [ "food", "party" ], - "char": "\ud83c\udf55", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sandwich: { - keywords: [ "food", "lunch", "bread" ], - "char": "\ud83e\udd6a", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - canned_food: { - keywords: [ "food", "soup" ], - "char": "\ud83e\udd6b", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - spaghetti: { - keywords: [ "food", "italian", "noodle" ], - "char": "\ud83c\udf5d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - taco: { - keywords: [ "food", "mexican" ], - "char": "\ud83c\udf2e", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - burrito: { - keywords: [ "food", "mexican" ], - "char": "\ud83c\udf2f", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - green_salad: { - keywords: [ "food", "healthy", "lettuce" ], - "char": "\ud83e\udd57", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - shallow_pan_of_food: { - keywords: [ "food", "cooking", "casserole", "paella" ], - "char": "\ud83e\udd58", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - ramen: { - keywords: [ "food", "japanese", "noodle", "chopsticks" ], - "char": "\ud83c\udf5c", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - stew: { - keywords: [ "food", "meat", "soup" ], - "char": "\ud83c\udf72", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fish_cake: { - keywords: [ "food", "japan", "sea", "beach", "narutomaki", "pink", "swirl", "kamaboko", "surimi", "ramen" ], - "char": "\ud83c\udf65", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fortune_cookie: { - keywords: [ "food", "prophecy" ], - "char": "\ud83e\udd60", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sushi: { - keywords: [ "food", "fish", "japanese", "rice" ], - "char": "\ud83c\udf63", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bento: { - keywords: [ "food", "japanese", "box" ], - "char": "\ud83c\udf71", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - curry: { - keywords: [ "food", "spicy", "hot", "indian" ], - "char": "\ud83c\udf5b", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - rice_ball: { - keywords: [ "food", "japanese" ], - "char": "\ud83c\udf59", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - rice: { - keywords: [ "food", "china", "asian" ], - "char": "\ud83c\udf5a", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - rice_cracker: { - keywords: [ "food", "japanese" ], - "char": "\ud83c\udf58", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - oden: { - keywords: [ "food", "japanese" ], - "char": "\ud83c\udf62", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - dango: { - keywords: [ "food", "dessert", "sweet", "japanese", "barbecue", "meat" ], - "char": "\ud83c\udf61", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - shaved_ice: { - keywords: [ "hot", "dessert", "summer" ], - "char": "\ud83c\udf67", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - ice_cream: { - keywords: [ "food", "hot", "dessert" ], - "char": "\ud83c\udf68", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - icecream: { - keywords: [ "food", "hot", "dessert", "summer" ], - "char": "\ud83c\udf66", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - pie: { - keywords: [ "food", "dessert", "pastry" ], - "char": "\ud83e\udd67", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cake: { - keywords: [ "food", "dessert" ], - "char": "\ud83c\udf70", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cupcake: { - keywords: [ "food", "dessert", "bakery", "sweet" ], - "char": "\ud83e\uddc1", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - moon_cake: { - keywords: [ "food", "autumn" ], - "char": "\ud83e\udd6e", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - birthday: { - keywords: [ "food", "dessert", "cake" ], - "char": "\ud83c\udf82", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - custard: { - keywords: [ "dessert", "food" ], - "char": "\ud83c\udf6e", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - candy: { - keywords: [ "snack", "dessert", "sweet", "lolly" ], - "char": "\ud83c\udf6c", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - lollipop: { - keywords: [ "food", "snack", "candy", "sweet" ], - "char": "\ud83c\udf6d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - chocolate_bar: { - keywords: [ "food", "snack", "dessert", "sweet" ], - "char": "\ud83c\udf6b", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - popcorn: { - keywords: [ "food", "movie theater", "films", "snack" ], - "char": "\ud83c\udf7f", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - dumpling: { - keywords: [ "food", "empanada", "pierogi", "potsticker" ], - "char": "\ud83e\udd5f", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - doughnut: { - keywords: [ "food", "dessert", "snack", "sweet", "donut" ], - "char": "\ud83c\udf69", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cookie: { - keywords: [ "food", "snack", "oreo", "chocolate", "sweet", "dessert" ], - "char": "\ud83c\udf6a", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - milk_glass: { - keywords: [ "beverage", "drink", "cow" ], - "char": "\ud83e\udd5b", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - beer: { - keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ], - "char": "\ud83c\udf7a", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - beers: { - keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ], - "char": "\ud83c\udf7b", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - clinking_glasses: { - keywords: [ "beverage", "drink", "party", "alcohol", "celebrate", "cheers", "wine", "champagne", "toast" ], - "char": "\ud83e\udd42", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - wine_glass: { - keywords: [ "drink", "beverage", "drunk", "alcohol", "booze" ], - "char": "\ud83c\udf77", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tumbler_glass: { - keywords: [ "drink", "beverage", "drunk", "alcohol", "liquor", "booze", "bourbon", "scotch", "whisky", "glass", "shot" ], - "char": "\ud83e\udd43", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cocktail: { - keywords: [ "drink", "drunk", "alcohol", "beverage", "booze", "mojito" ], - "char": "\ud83c\udf78", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tropical_drink: { - keywords: [ "beverage", "cocktail", "summer", "beach", "alcohol", "booze", "mojito" ], - "char": "\ud83c\udf79", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - champagne: { - keywords: [ "drink", "wine", "bottle", "celebration" ], - "char": "\ud83c\udf7e", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - sake: { - keywords: [ "wine", "drink", "drunk", "beverage", "japanese", "alcohol", "booze" ], - "char": "\ud83c\udf76", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - tea: { - keywords: [ "drink", "bowl", "breakfast", "green", "british" ], - "char": "\ud83c\udf75", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - cup_with_straw: { - keywords: [ "drink", "soda" ], - "char": "\ud83e\udd64", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - coffee: { - keywords: [ "beverage", "caffeine", "latte", "espresso" ], - "char": "\u2615", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - baby_bottle: { - keywords: [ "food", "container", "milk" ], - "char": "\ud83c\udf7c", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - salt: { - keywords: [ "condiment", "shaker" ], - "char": "\ud83e\uddc2", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - spoon: { - keywords: [ "cutlery", "kitchen", "tableware" ], - "char": "\ud83e\udd44", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - fork_and_knife: { - keywords: [ "cutlery", "kitchen" ], - "char": "\ud83c\udf74", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - plate_with_cutlery: { - keywords: [ "food", "eat", "meal", "lunch", "dinner", "restaurant" ], - "char": "\ud83c\udf7d", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - bowl_with_spoon: { - keywords: [ "food", "breakfast", "cereal", "oatmeal", "porridge" ], - "char": "\ud83e\udd63", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - takeout_box: { - keywords: [ "food", "leftovers" ], - "char": "\ud83e\udd61", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - chopsticks: { - keywords: [ "food" ], - "char": "\ud83e\udd62", - fitzpatrick_scale: false, - category: "food_and_drink" - }, - soccer: { - keywords: [ "sports", "football" ], - "char": "\u26bd", - fitzpatrick_scale: false, - category: "activity" - }, - basketball: { - keywords: [ "sports", "balls", "NBA" ], - "char": "\ud83c\udfc0", - fitzpatrick_scale: false, - category: "activity" - }, - football: { - keywords: [ "sports", "balls", "NFL" ], - "char": "\ud83c\udfc8", - fitzpatrick_scale: false, - category: "activity" - }, - baseball: { - keywords: [ "sports", "balls" ], - "char": "\u26be", - fitzpatrick_scale: false, - category: "activity" - }, - softball: { - keywords: [ "sports", "balls" ], - "char": "\ud83e\udd4e", - fitzpatrick_scale: false, - category: "activity" - }, - tennis: { - keywords: [ "sports", "balls", "green" ], - "char": "\ud83c\udfbe", - fitzpatrick_scale: false, - category: "activity" - }, - volleyball: { - keywords: [ "sports", "balls" ], - "char": "\ud83c\udfd0", - fitzpatrick_scale: false, - category: "activity" - }, - rugby_football: { - keywords: [ "sports", "team" ], - "char": "\ud83c\udfc9", - fitzpatrick_scale: false, - category: "activity" - }, - flying_disc: { - keywords: [ "sports", "frisbee", "ultimate" ], - "char": "\ud83e\udd4f", - fitzpatrick_scale: false, - category: "activity" - }, - "8ball": { - keywords: [ "pool", "hobby", "game", "luck", "magic" ], - "char": "\ud83c\udfb1", - fitzpatrick_scale: false, - category: "activity" - }, - golf: { - keywords: [ "sports", "business", "flag", "hole", "summer" ], - "char": "\u26f3", - fitzpatrick_scale: false, - category: "activity" - }, - golfing_woman: { - keywords: [ "sports", "business", "woman", "female" ], - "char": "\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f", - fitzpatrick_scale: false, - category: "activity" - }, - golfing_man: { - keywords: [ "sports", "business" ], - "char": "\ud83c\udfcc", - fitzpatrick_scale: true, - category: "activity" - }, - ping_pong: { - keywords: [ "sports", "pingpong" ], - "char": "\ud83c\udfd3", - fitzpatrick_scale: false, - category: "activity" - }, - badminton: { - keywords: [ "sports" ], - "char": "\ud83c\udff8", - fitzpatrick_scale: false, - category: "activity" - }, - goal_net: { - keywords: [ "sports" ], - "char": "\ud83e\udd45", - fitzpatrick_scale: false, - category: "activity" - }, - ice_hockey: { - keywords: [ "sports" ], - "char": "\ud83c\udfd2", - fitzpatrick_scale: false, - category: "activity" - }, - field_hockey: { - keywords: [ "sports" ], - "char": "\ud83c\udfd1", - fitzpatrick_scale: false, - category: "activity" - }, - lacrosse: { - keywords: [ "sports", "ball", "stick" ], - "char": "\ud83e\udd4d", - fitzpatrick_scale: false, - category: "activity" - }, - cricket: { - keywords: [ "sports" ], - "char": "\ud83c\udfcf", - fitzpatrick_scale: false, - category: "activity" - }, - ski: { - keywords: [ "sports", "winter", "cold", "snow" ], - "char": "\ud83c\udfbf", - fitzpatrick_scale: false, - category: "activity" - }, - skier: { - keywords: [ "sports", "winter", "snow" ], - "char": "\u26f7", - fitzpatrick_scale: false, - category: "activity" - }, - snowboarder: { - keywords: [ "sports", "winter" ], - "char": "\ud83c\udfc2", - fitzpatrick_scale: true, - category: "activity" - }, - person_fencing: { - keywords: [ "sports", "fencing", "sword" ], - "char": "\ud83e\udd3a", - fitzpatrick_scale: false, - category: "activity" - }, - women_wrestling: { - keywords: [ "sports", "wrestlers" ], - "char": "\ud83e\udd3c\u200d\u2640\ufe0f", - fitzpatrick_scale: false, - category: "activity" - }, - men_wrestling: { - keywords: [ "sports", "wrestlers" ], - "char": "\ud83e\udd3c\u200d\u2642\ufe0f", - fitzpatrick_scale: false, - category: "activity" - }, - woman_cartwheeling: { - keywords: [ "gymnastics" ], - "char": "\ud83e\udd38\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - man_cartwheeling: { - keywords: [ "gymnastics" ], - "char": "\ud83e\udd38\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - woman_playing_handball: { - keywords: [ "sports" ], - "char": "\ud83e\udd3e\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - man_playing_handball: { - keywords: [ "sports" ], - "char": "\ud83e\udd3e\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - ice_skate: { - keywords: [ "sports" ], - "char": "\u26f8", - fitzpatrick_scale: false, - category: "activity" - }, - curling_stone: { - keywords: [ "sports" ], - "char": "\ud83e\udd4c", - fitzpatrick_scale: false, - category: "activity" - }, - skateboard: { - keywords: [ "board" ], - "char": "\ud83d\udef9", - fitzpatrick_scale: false, - category: "activity" - }, - sled: { - keywords: [ "sleigh", "luge", "toboggan" ], - "char": "\ud83d\udef7", - fitzpatrick_scale: false, - category: "activity" - }, - bow_and_arrow: { - keywords: [ "sports" ], - "char": "\ud83c\udff9", - fitzpatrick_scale: false, - category: "activity" - }, - fishing_pole_and_fish: { - keywords: [ "food", "hobby", "summer" ], - "char": "\ud83c\udfa3", - fitzpatrick_scale: false, - category: "activity" - }, - boxing_glove: { - keywords: [ "sports", "fighting" ], - "char": "\ud83e\udd4a", - fitzpatrick_scale: false, - category: "activity" - }, - martial_arts_uniform: { - keywords: [ "judo", "karate", "taekwondo" ], - "char": "\ud83e\udd4b", - fitzpatrick_scale: false, - category: "activity" - }, - rowing_woman: { - keywords: [ "sports", "hobby", "water", "ship", "woman", "female" ], - "char": "\ud83d\udea3\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - rowing_man: { - keywords: [ "sports", "hobby", "water", "ship" ], - "char": "\ud83d\udea3", - fitzpatrick_scale: true, - category: "activity" - }, - climbing_woman: { - keywords: [ "sports", "hobby", "woman", "female", "rock" ], - "char": "\ud83e\uddd7\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - climbing_man: { - keywords: [ "sports", "hobby", "man", "male", "rock" ], - "char": "\ud83e\uddd7\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - swimming_woman: { - keywords: [ "sports", "exercise", "human", "athlete", "water", "summer", "woman", "female" ], - "char": "\ud83c\udfca\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - swimming_man: { - keywords: [ "sports", "exercise", "human", "athlete", "water", "summer" ], - "char": "\ud83c\udfca", - fitzpatrick_scale: true, - category: "activity" - }, - woman_playing_water_polo: { - keywords: [ "sports", "pool" ], - "char": "\ud83e\udd3d\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - man_playing_water_polo: { - keywords: [ "sports", "pool" ], - "char": "\ud83e\udd3d\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - woman_in_lotus_position: { - keywords: [ "woman", "female", "meditation", "yoga", "serenity", "zen", "mindfulness" ], - "char": "\ud83e\uddd8\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - man_in_lotus_position: { - keywords: [ "man", "male", "meditation", "yoga", "serenity", "zen", "mindfulness" ], - "char": "\ud83e\uddd8\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - surfing_woman: { - keywords: [ "sports", "ocean", "sea", "summer", "beach", "woman", "female" ], - "char": "\ud83c\udfc4\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - surfing_man: { - keywords: [ "sports", "ocean", "sea", "summer", "beach" ], - "char": "\ud83c\udfc4", - fitzpatrick_scale: true, - category: "activity" - }, - bath: { - keywords: [ "clean", "shower", "bathroom" ], - "char": "\ud83d\udec0", - fitzpatrick_scale: true, - category: "activity" - }, - basketball_woman: { - keywords: [ "sports", "human", "woman", "female" ], - "char": "\u26f9\ufe0f\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - basketball_man: { - keywords: [ "sports", "human" ], - "char": "\u26f9", - fitzpatrick_scale: true, - category: "activity" - }, - weight_lifting_woman: { - keywords: [ "sports", "training", "exercise", "woman", "female" ], - "char": "\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - weight_lifting_man: { - keywords: [ "sports", "training", "exercise" ], - "char": "\ud83c\udfcb", - fitzpatrick_scale: true, - category: "activity" - }, - biking_woman: { - keywords: [ "sports", "bike", "exercise", "hipster", "woman", "female" ], - "char": "\ud83d\udeb4\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - biking_man: { - keywords: [ "sports", "bike", "exercise", "hipster" ], - "char": "\ud83d\udeb4", - fitzpatrick_scale: true, - category: "activity" - }, - mountain_biking_woman: { - keywords: [ "transportation", "sports", "human", "race", "bike", "woman", "female" ], - "char": "\ud83d\udeb5\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - mountain_biking_man: { - keywords: [ "transportation", "sports", "human", "race", "bike" ], - "char": "\ud83d\udeb5", - fitzpatrick_scale: true, - category: "activity" - }, - horse_racing: { - keywords: [ "animal", "betting", "competition", "gambling", "luck" ], - "char": "\ud83c\udfc7", - fitzpatrick_scale: true, - category: "activity" - }, - business_suit_levitating: { - keywords: [ "suit", "business", "levitate", "hover", "jump" ], - "char": "\ud83d\udd74", - fitzpatrick_scale: true, - category: "activity" - }, - trophy: { - keywords: [ "win", "award", "contest", "place", "ftw", "ceremony" ], - "char": "\ud83c\udfc6", - fitzpatrick_scale: false, - category: "activity" - }, - running_shirt_with_sash: { - keywords: [ "play", "pageant" ], - "char": "\ud83c\udfbd", - fitzpatrick_scale: false, - category: "activity" - }, - medal_sports: { - keywords: [ "award", "winning" ], - "char": "\ud83c\udfc5", - fitzpatrick_scale: false, - category: "activity" - }, - medal_military: { - keywords: [ "award", "winning", "army" ], - "char": "\ud83c\udf96", - fitzpatrick_scale: false, - category: "activity" - }, - "1st_place_medal": { - keywords: [ "award", "winning", "first" ], - "char": "\ud83e\udd47", - fitzpatrick_scale: false, - category: "activity" - }, - "2nd_place_medal": { - keywords: [ "award", "second" ], - "char": "\ud83e\udd48", - fitzpatrick_scale: false, - category: "activity" - }, - "3rd_place_medal": { - keywords: [ "award", "third" ], - "char": "\ud83e\udd49", - fitzpatrick_scale: false, - category: "activity" - }, - reminder_ribbon: { - keywords: [ "sports", "cause", "support", "awareness" ], - "char": "\ud83c\udf97", - fitzpatrick_scale: false, - category: "activity" - }, - rosette: { - keywords: [ "flower", "decoration", "military" ], - "char": "\ud83c\udff5", - fitzpatrick_scale: false, - category: "activity" - }, - ticket: { - keywords: [ "event", "concert", "pass" ], - "char": "\ud83c\udfab", - fitzpatrick_scale: false, - category: "activity" - }, - tickets: { - keywords: [ "sports", "concert", "entrance" ], - "char": "\ud83c\udf9f", - fitzpatrick_scale: false, - category: "activity" - }, - performing_arts: { - keywords: [ "acting", "theater", "drama" ], - "char": "\ud83c\udfad", - fitzpatrick_scale: false, - category: "activity" - }, - art: { - keywords: [ "design", "paint", "draw", "colors" ], - "char": "\ud83c\udfa8", - fitzpatrick_scale: false, - category: "activity" - }, - circus_tent: { - keywords: [ "festival", "carnival", "party" ], - "char": "\ud83c\udfaa", - fitzpatrick_scale: false, - category: "activity" - }, - woman_juggling: { - keywords: [ "juggle", "balance", "skill", "multitask" ], - "char": "\ud83e\udd39\u200d\u2640\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - man_juggling: { - keywords: [ "juggle", "balance", "skill", "multitask" ], - "char": "\ud83e\udd39\u200d\u2642\ufe0f", - fitzpatrick_scale: true, - category: "activity" - }, - microphone: { - keywords: [ "sound", "music", "PA", "sing", "talkshow" ], - "char": "\ud83c\udfa4", - fitzpatrick_scale: false, - category: "activity" - }, - headphones: { - keywords: [ "music", "score", "gadgets" ], - "char": "\ud83c\udfa7", - fitzpatrick_scale: false, - category: "activity" - }, - musical_score: { - keywords: [ "treble", "clef", "compose" ], - "char": "\ud83c\udfbc", - fitzpatrick_scale: false, - category: "activity" - }, - musical_keyboard: { - keywords: [ "piano", "instrument", "compose" ], - "char": "\ud83c\udfb9", - fitzpatrick_scale: false, - category: "activity" - }, - drum: { - keywords: [ "music", "instrument", "drumsticks", "snare" ], - "char": "\ud83e\udd41", - fitzpatrick_scale: false, - category: "activity" - }, - saxophone: { - keywords: [ "music", "instrument", "jazz", "blues" ], - "char": "\ud83c\udfb7", - fitzpatrick_scale: false, - category: "activity" - }, - trumpet: { - keywords: [ "music", "brass" ], - "char": "\ud83c\udfba", - fitzpatrick_scale: false, - category: "activity" - }, - guitar: { - keywords: [ "music", "instrument" ], - "char": "\ud83c\udfb8", - fitzpatrick_scale: false, - category: "activity" - }, - violin: { - keywords: [ "music", "instrument", "orchestra", "symphony" ], - "char": "\ud83c\udfbb", - fitzpatrick_scale: false, - category: "activity" - }, - clapper: { - keywords: [ "movie", "film", "record" ], - "char": "\ud83c\udfac", - fitzpatrick_scale: false, - category: "activity" - }, - video_game: { - keywords: [ "play", "console", "PS4", "controller" ], - "char": "\ud83c\udfae", - fitzpatrick_scale: false, - category: "activity" - }, - space_invader: { - keywords: [ "game", "arcade", "play" ], - "char": "\ud83d\udc7e", - fitzpatrick_scale: false, - category: "activity" - }, - dart: { - keywords: [ "game", "play", "bar", "target", "bullseye" ], - "char": "\ud83c\udfaf", - fitzpatrick_scale: false, - category: "activity" - }, - game_die: { - keywords: [ "dice", "random", "tabletop", "play", "luck" ], - "char": "\ud83c\udfb2", - fitzpatrick_scale: false, - category: "activity" - }, - chess_pawn: { - keywords: [ "expendable" ], - "char": "\u265f", - fitzpatrick_scale: false, - category: "activity" - }, - slot_machine: { - keywords: [ "bet", "gamble", "vegas", "fruit machine", "luck", "casino" ], - "char": "\ud83c\udfb0", - fitzpatrick_scale: false, - category: "activity" - }, - jigsaw: { - keywords: [ "interlocking", "puzzle", "piece" ], - "char": "\ud83e\udde9", - fitzpatrick_scale: false, - category: "activity" - }, - bowling: { - keywords: [ "sports", "fun", "play" ], - "char": "\ud83c\udfb3", - fitzpatrick_scale: false, - category: "activity" - }, - red_car: { - keywords: [ "red", "transportation", "vehicle" ], - "char": "\ud83d\ude97", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - taxi: { - keywords: [ "uber", "vehicle", "cars", "transportation" ], - "char": "\ud83d\ude95", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - blue_car: { - keywords: [ "transportation", "vehicle" ], - "char": "\ud83d\ude99", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bus: { - keywords: [ "car", "vehicle", "transportation" ], - "char": "\ud83d\ude8c", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - trolleybus: { - keywords: [ "bart", "transportation", "vehicle" ], - "char": "\ud83d\ude8e", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - racing_car: { - keywords: [ "sports", "race", "fast", "formula", "f1" ], - "char": "\ud83c\udfce", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - police_car: { - keywords: [ "vehicle", "cars", "transportation", "law", "legal", "enforcement" ], - "char": "\ud83d\ude93", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ambulance: { - keywords: [ "health", "911", "hospital" ], - "char": "\ud83d\ude91", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fire_engine: { - keywords: [ "transportation", "cars", "vehicle" ], - "char": "\ud83d\ude92", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - minibus: { - keywords: [ "vehicle", "car", "transportation" ], - "char": "\ud83d\ude90", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - truck: { - keywords: [ "cars", "transportation" ], - "char": "\ud83d\ude9a", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - articulated_lorry: { - keywords: [ "vehicle", "cars", "transportation", "express" ], - "char": "\ud83d\ude9b", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tractor: { - keywords: [ "vehicle", "car", "farming", "agriculture" ], - "char": "\ud83d\ude9c", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - kick_scooter: { - keywords: [ "vehicle", "kick", "razor" ], - "char": "\ud83d\udef4", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motorcycle: { - keywords: [ "race", "sports", "fast" ], - "char": "\ud83c\udfcd", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bike: { - keywords: [ "sports", "bicycle", "exercise", "hipster" ], - "char": "\ud83d\udeb2", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motor_scooter: { - keywords: [ "vehicle", "vespa", "sasha" ], - "char": "\ud83d\udef5", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rotating_light: { - keywords: [ "police", "ambulance", "911", "emergency", "alert", "error", "pinged", "law", "legal" ], - "char": "\ud83d\udea8", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_police_car: { - keywords: [ "vehicle", "law", "legal", "enforcement", "911" ], - "char": "\ud83d\ude94", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_bus: { - keywords: [ "vehicle", "transportation" ], - "char": "\ud83d\ude8d", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_automobile: { - keywords: [ "car", "vehicle", "transportation" ], - "char": "\ud83d\ude98", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - oncoming_taxi: { - keywords: [ "vehicle", "cars", "uber" ], - "char": "\ud83d\ude96", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - aerial_tramway: { - keywords: [ "transportation", "vehicle", "ski" ], - "char": "\ud83d\udea1", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain_cableway: { - keywords: [ "transportation", "vehicle", "ski" ], - "char": "\ud83d\udea0", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - suspension_railway: { - keywords: [ "vehicle", "transportation" ], - "char": "\ud83d\ude9f", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - railway_car: { - keywords: [ "transportation", "vehicle" ], - "char": "\ud83d\ude83", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - train: { - keywords: [ "transportation", "vehicle", "carriage", "public", "travel" ], - "char": "\ud83d\ude8b", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - monorail: { - keywords: [ "transportation", "vehicle" ], - "char": "\ud83d\ude9d", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bullettrain_side: { - keywords: [ "transportation", "vehicle" ], - "char": "\ud83d\ude84", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bullettrain_front: { - keywords: [ "transportation", "vehicle", "speed", "fast", "public", "travel" ], - "char": "\ud83d\ude85", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - light_rail: { - keywords: [ "transportation", "vehicle" ], - "char": "\ud83d\ude88", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain_railway: { - keywords: [ "transportation", "vehicle" ], - "char": "\ud83d\ude9e", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - steam_locomotive: { - keywords: [ "transportation", "vehicle", "train" ], - "char": "\ud83d\ude82", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - train2: { - keywords: [ "transportation", "vehicle" ], - "char": "\ud83d\ude86", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - metro: { - keywords: [ "transportation", "blue-square", "mrt", "underground", "tube" ], - "char": "\ud83d\ude87", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tram: { - keywords: [ "transportation", "vehicle" ], - "char": "\ud83d\ude8a", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - station: { - keywords: [ "transportation", "vehicle", "public" ], - "char": "\ud83d\ude89", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - flying_saucer: { - keywords: [ "transportation", "vehicle", "ufo" ], - "char": "\ud83d\udef8", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - helicopter: { - keywords: [ "transportation", "vehicle", "fly" ], - "char": "\ud83d\ude81", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - small_airplane: { - keywords: [ "flight", "transportation", "fly", "vehicle" ], - "char": "\ud83d\udee9", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - airplane: { - keywords: [ "vehicle", "transportation", "flight", "fly" ], - "char": "\u2708\ufe0f", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - flight_departure: { - keywords: [ "airport", "flight", "landing" ], - "char": "\ud83d\udeeb", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - flight_arrival: { - keywords: [ "airport", "flight", "boarding" ], - "char": "\ud83d\udeec", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sailboat: { - keywords: [ "ship", "summer", "transportation", "water", "sailing" ], - "char": "\u26f5", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motor_boat: { - keywords: [ "ship" ], - "char": "\ud83d\udee5", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - speedboat: { - keywords: [ "ship", "transportation", "vehicle", "summer" ], - "char": "\ud83d\udea4", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ferry: { - keywords: [ "boat", "ship", "yacht" ], - "char": "\u26f4", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - passenger_ship: { - keywords: [ "yacht", "cruise", "ferry" ], - "char": "\ud83d\udef3", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rocket: { - keywords: [ "launch", "ship", "staffmode", "NASA", "outer space", "outer_space", "fly" ], - "char": "\ud83d\ude80", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - artificial_satellite: { - keywords: [ "communication", "gps", "orbit", "spaceflight", "NASA", "ISS" ], - "char": "\ud83d\udef0", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - seat: { - keywords: [ "sit", "airplane", "transport", "bus", "flight", "fly" ], - "char": "\ud83d\udcba", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - canoe: { - keywords: [ "boat", "paddle", "water", "ship" ], - "char": "\ud83d\udef6", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - anchor: { - keywords: [ "ship", "ferry", "sea", "boat" ], - "char": "\u2693", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - construction: { - keywords: [ "wip", "progress", "caution", "warning" ], - "char": "\ud83d\udea7", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fuelpump: { - keywords: [ "gas station", "petroleum" ], - "char": "\u26fd", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - busstop: { - keywords: [ "transportation", "wait" ], - "char": "\ud83d\ude8f", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - vertical_traffic_light: { - keywords: [ "transportation", "driving" ], - "char": "\ud83d\udea6", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - traffic_light: { - keywords: [ "transportation", "signal" ], - "char": "\ud83d\udea5", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - checkered_flag: { - keywords: [ "contest", "finishline", "race", "gokart" ], - "char": "\ud83c\udfc1", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ship: { - keywords: [ "transportation", "titanic", "deploy" ], - "char": "\ud83d\udea2", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - ferris_wheel: { - keywords: [ "photo", "carnival", "londoneye" ], - "char": "\ud83c\udfa1", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - roller_coaster: { - keywords: [ "carnival", "playground", "photo", "fun" ], - "char": "\ud83c\udfa2", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - carousel_horse: { - keywords: [ "photo", "carnival" ], - "char": "\ud83c\udfa0", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - building_construction: { - keywords: [ "wip", "working", "progress" ], - "char": "\ud83c\udfd7", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - foggy: { - keywords: [ "photo", "mountain" ], - "char": "\ud83c\udf01", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tokyo_tower: { - keywords: [ "photo", "japanese" ], - "char": "\ud83d\uddfc", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - factory: { - keywords: [ "building", "industry", "pollution", "smoke" ], - "char": "\ud83c\udfed", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fountain: { - keywords: [ "photo", "summer", "water", "fresh" ], - "char": "\u26f2", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rice_scene: { - keywords: [ "photo", "japan", "asia", "tsukimi" ], - "char": "\ud83c\udf91", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain: { - keywords: [ "photo", "nature", "environment" ], - "char": "\u26f0", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mountain_snow: { - keywords: [ "photo", "nature", "environment", "winter", "cold" ], - "char": "\ud83c\udfd4", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mount_fuji: { - keywords: [ "photo", "mountain", "nature", "japanese" ], - "char": "\ud83d\uddfb", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - volcano: { - keywords: [ "photo", "nature", "disaster" ], - "char": "\ud83c\udf0b", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - japan: { - keywords: [ "nation", "country", "japanese", "asia" ], - "char": "\ud83d\uddfe", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - camping: { - keywords: [ "photo", "outdoors", "tent" ], - "char": "\ud83c\udfd5", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - tent: { - keywords: [ "photo", "camping", "outdoors" ], - "char": "\u26fa", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - national_park: { - keywords: [ "photo", "environment", "nature" ], - "char": "\ud83c\udfde", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - motorway: { - keywords: [ "road", "cupertino", "interstate", "highway" ], - "char": "\ud83d\udee3", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - railway_track: { - keywords: [ "train", "transportation" ], - "char": "\ud83d\udee4", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sunrise: { - keywords: [ "morning", "view", "vacation", "photo" ], - "char": "\ud83c\udf05", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sunrise_over_mountains: { - keywords: [ "view", "vacation", "photo" ], - "char": "\ud83c\udf04", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - desert: { - keywords: [ "photo", "warm", "saharah" ], - "char": "\ud83c\udfdc", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - beach_umbrella: { - keywords: [ "weather", "summer", "sunny", "sand", "mojito" ], - "char": "\ud83c\udfd6", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - desert_island: { - keywords: [ "photo", "tropical", "mojito" ], - "char": "\ud83c\udfdd", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - city_sunrise: { - keywords: [ "photo", "good morning", "dawn" ], - "char": "\ud83c\udf07", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - city_sunset: { - keywords: [ "photo", "evening", "sky", "buildings" ], - "char": "\ud83c\udf06", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - cityscape: { - keywords: [ "photo", "night life", "urban" ], - "char": "\ud83c\udfd9", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - night_with_stars: { - keywords: [ "evening", "city", "downtown" ], - "char": "\ud83c\udf03", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bridge_at_night: { - keywords: [ "photo", "sanfrancisco" ], - "char": "\ud83c\udf09", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - milky_way: { - keywords: [ "photo", "space", "stars" ], - "char": "\ud83c\udf0c", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - stars: { - keywords: [ "night", "photo" ], - "char": "\ud83c\udf20", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - sparkler: { - keywords: [ "stars", "night", "shine" ], - "char": "\ud83c\udf87", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - fireworks: { - keywords: [ "photo", "festival", "carnival", "congratulations" ], - "char": "\ud83c\udf86", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - rainbow: { - keywords: [ "nature", "happy", "unicorn_face", "photo", "sky", "spring" ], - "char": "\ud83c\udf08", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - houses: { - keywords: [ "buildings", "photo" ], - "char": "\ud83c\udfd8", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - european_castle: { - keywords: [ "building", "royalty", "history" ], - "char": "\ud83c\udff0", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - japanese_castle: { - keywords: [ "photo", "building" ], - "char": "\ud83c\udfef", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - stadium: { - keywords: [ "photo", "place", "sports", "concert", "venue" ], - "char": "\ud83c\udfdf", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - statue_of_liberty: { - keywords: [ "american", "newyork" ], - "char": "\ud83d\uddfd", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - house: { - keywords: [ "building", "home" ], - "char": "\ud83c\udfe0", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - house_with_garden: { - keywords: [ "home", "plant", "nature" ], - "char": "\ud83c\udfe1", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - derelict_house: { - keywords: [ "abandon", "evict", "broken", "building" ], - "char": "\ud83c\udfda", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - office: { - keywords: [ "building", "bureau", "work" ], - "char": "\ud83c\udfe2", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - department_store: { - keywords: [ "building", "shopping", "mall" ], - "char": "\ud83c\udfec", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - post_office: { - keywords: [ "building", "envelope", "communication" ], - "char": "\ud83c\udfe3", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - european_post_office: { - keywords: [ "building", "email" ], - "char": "\ud83c\udfe4", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - hospital: { - keywords: [ "building", "health", "surgery", "doctor" ], - "char": "\ud83c\udfe5", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - bank: { - keywords: [ "building", "money", "sales", "cash", "business", "enterprise" ], - "char": "\ud83c\udfe6", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - hotel: { - keywords: [ "building", "accomodation", "checkin" ], - "char": "\ud83c\udfe8", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - convenience_store: { - keywords: [ "building", "shopping", "groceries" ], - "char": "\ud83c\udfea", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - school: { - keywords: [ "building", "student", "education", "learn", "teach" ], - "char": "\ud83c\udfeb", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - love_hotel: { - keywords: [ "like", "affection", "dating" ], - "char": "\ud83c\udfe9", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - wedding: { - keywords: [ "love", "like", "affection", "couple", "marriage", "bride", "groom" ], - "char": "\ud83d\udc92", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - classical_building: { - keywords: [ "art", "culture", "history" ], - "char": "\ud83c\udfdb", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - church: { - keywords: [ "building", "religion", "christ" ], - "char": "\u26ea", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - mosque: { - keywords: [ "islam", "worship", "minaret" ], - "char": "\ud83d\udd4c", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - synagogue: { - keywords: [ "judaism", "worship", "temple", "jewish" ], - "char": "\ud83d\udd4d", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - kaaba: { - keywords: [ "mecca", "mosque", "islam" ], - "char": "\ud83d\udd4b", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - shinto_shrine: { - keywords: [ "temple", "japan", "kyoto" ], - "char": "\u26e9", - fitzpatrick_scale: false, - category: "travel_and_places" - }, - watch: { - keywords: [ "time", "accessories" ], - "char": "\u231a", - fitzpatrick_scale: false, - category: "objects" - }, - iphone: { - keywords: [ "technology", "apple", "gadgets", "dial" ], - "char": "\ud83d\udcf1", - fitzpatrick_scale: false, - category: "objects" - }, - calling: { - keywords: [ "iphone", "incoming" ], - "char": "\ud83d\udcf2", - fitzpatrick_scale: false, - category: "objects" - }, - computer: { - keywords: [ "technology", "laptop", "screen", "display", "monitor" ], - "char": "\ud83d\udcbb", - fitzpatrick_scale: false, - category: "objects" - }, - keyboard: { - keywords: [ "technology", "computer", "type", "input", "text" ], - "char": "\u2328", - fitzpatrick_scale: false, - category: "objects" - }, - desktop_computer: { - keywords: [ "technology", "computing", "screen" ], - "char": "\ud83d\udda5", - fitzpatrick_scale: false, - category: "objects" - }, - printer: { - keywords: [ "paper", "ink" ], - "char": "\ud83d\udda8", - fitzpatrick_scale: false, - category: "objects" - }, - computer_mouse: { - keywords: [ "click" ], - "char": "\ud83d\uddb1", - fitzpatrick_scale: false, - category: "objects" - }, - trackball: { - keywords: [ "technology", "trackpad" ], - "char": "\ud83d\uddb2", - fitzpatrick_scale: false, - category: "objects" - }, - joystick: { - keywords: [ "game", "play" ], - "char": "\ud83d\udd79", - fitzpatrick_scale: false, - category: "objects" - }, - clamp: { - keywords: [ "tool" ], - "char": "\ud83d\udddc", - fitzpatrick_scale: false, - category: "objects" - }, - minidisc: { - keywords: [ "technology", "record", "data", "disk", "90s" ], - "char": "\ud83d\udcbd", - fitzpatrick_scale: false, - category: "objects" - }, - floppy_disk: { - keywords: [ "oldschool", "technology", "save", "90s", "80s" ], - "char": "\ud83d\udcbe", - fitzpatrick_scale: false, - category: "objects" - }, - cd: { - keywords: [ "technology", "dvd", "disk", "disc", "90s" ], - "char": "\ud83d\udcbf", - fitzpatrick_scale: false, - category: "objects" - }, - dvd: { - keywords: [ "cd", "disk", "disc" ], - "char": "\ud83d\udcc0", - fitzpatrick_scale: false, - category: "objects" - }, - vhs: { - keywords: [ "record", "video", "oldschool", "90s", "80s" ], - "char": "\ud83d\udcfc", - fitzpatrick_scale: false, - category: "objects" - }, - camera: { - keywords: [ "gadgets", "photography" ], - "char": "\ud83d\udcf7", - fitzpatrick_scale: false, - category: "objects" - }, - camera_flash: { - keywords: [ "photography", "gadgets" ], - "char": "\ud83d\udcf8", - fitzpatrick_scale: false, - category: "objects" - }, - video_camera: { - keywords: [ "film", "record" ], - "char": "\ud83d\udcf9", - fitzpatrick_scale: false, - category: "objects" - }, - movie_camera: { - keywords: [ "film", "record" ], - "char": "\ud83c\udfa5", - fitzpatrick_scale: false, - category: "objects" - }, - film_projector: { - keywords: [ "video", "tape", "record", "movie" ], - "char": "\ud83d\udcfd", - fitzpatrick_scale: false, - category: "objects" - }, - film_strip: { - keywords: [ "movie" ], - "char": "\ud83c\udf9e", - fitzpatrick_scale: false, - category: "objects" - }, - telephone_receiver: { - keywords: [ "technology", "communication", "dial" ], - "char": "\ud83d\udcde", - fitzpatrick_scale: false, - category: "objects" - }, - phone: { - keywords: [ "technology", "communication", "dial", "telephone" ], - "char": "\u260e\ufe0f", - fitzpatrick_scale: false, - category: "objects" - }, - pager: { - keywords: [ "bbcall", "oldschool", "90s" ], - "char": "\ud83d\udcdf", - fitzpatrick_scale: false, - category: "objects" - }, - fax: { - keywords: [ "communication", "technology" ], - "char": "\ud83d\udce0", - fitzpatrick_scale: false, - category: "objects" - }, - tv: { - keywords: [ "technology", "program", "oldschool", "show", "television" ], - "char": "\ud83d\udcfa", - fitzpatrick_scale: false, - category: "objects" - }, - radio: { - keywords: [ "communication", "music", "podcast", "program" ], - "char": "\ud83d\udcfb", - fitzpatrick_scale: false, - category: "objects" - }, - studio_microphone: { - keywords: [ "sing", "recording", "artist", "talkshow" ], - "char": "\ud83c\udf99", - fitzpatrick_scale: false, - category: "objects" - }, - level_slider: { - keywords: [ "scale" ], - "char": "\ud83c\udf9a", - fitzpatrick_scale: false, - category: "objects" - }, - control_knobs: { - keywords: [ "dial" ], - "char": "\ud83c\udf9b", - fitzpatrick_scale: false, - category: "objects" - }, - compass: { - keywords: [ "magnetic", "navigation", "orienteering" ], - "char": "\ud83e\udded", - fitzpatrick_scale: false, - category: "objects" - }, - stopwatch: { - keywords: [ "time", "deadline" ], - "char": "\u23f1", - fitzpatrick_scale: false, - category: "objects" - }, - timer_clock: { - keywords: [ "alarm" ], - "char": "\u23f2", - fitzpatrick_scale: false, - category: "objects" - }, - alarm_clock: { - keywords: [ "time", "wake" ], - "char": "\u23f0", - fitzpatrick_scale: false, - category: "objects" - }, - mantelpiece_clock: { - keywords: [ "time" ], - "char": "\ud83d\udd70", - fitzpatrick_scale: false, - category: "objects" - }, - hourglass_flowing_sand: { - keywords: [ "oldschool", "time", "countdown" ], - "char": "\u23f3", - fitzpatrick_scale: false, - category: "objects" - }, - hourglass: { - keywords: [ "time", "clock", "oldschool", "limit", "exam", "quiz", "test" ], - "char": "\u231b", - fitzpatrick_scale: false, - category: "objects" - }, - satellite: { - keywords: [ "communication", "future", "radio", "space" ], - "char": "\ud83d\udce1", - fitzpatrick_scale: false, - category: "objects" - }, - battery: { - keywords: [ "power", "energy", "sustain" ], - "char": "\ud83d\udd0b", - fitzpatrick_scale: false, - category: "objects" - }, - electric_plug: { - keywords: [ "charger", "power" ], - "char": "\ud83d\udd0c", - fitzpatrick_scale: false, - category: "objects" - }, - bulb: { - keywords: [ "light", "electricity", "idea" ], - "char": "\ud83d\udca1", - fitzpatrick_scale: false, - category: "objects" - }, - flashlight: { - keywords: [ "dark", "camping", "sight", "night" ], - "char": "\ud83d\udd26", - fitzpatrick_scale: false, - category: "objects" - }, - candle: { - keywords: [ "fire", "wax" ], - "char": "\ud83d\udd6f", - fitzpatrick_scale: false, - category: "objects" - }, - fire_extinguisher: { - keywords: [ "quench" ], - "char": "\ud83e\uddef", - fitzpatrick_scale: false, - category: "objects" - }, - wastebasket: { - keywords: [ "bin", "trash", "rubbish", "garbage", "toss" ], - "char": "\ud83d\uddd1", - fitzpatrick_scale: false, - category: "objects" - }, - oil_drum: { - keywords: [ "barrell" ], - "char": "\ud83d\udee2", - fitzpatrick_scale: false, - category: "objects" - }, - money_with_wings: { - keywords: [ "dollar", "bills", "payment", "sale" ], - "char": "\ud83d\udcb8", - fitzpatrick_scale: false, - category: "objects" - }, - dollar: { - keywords: [ "money", "sales", "bill", "currency" ], - "char": "\ud83d\udcb5", - fitzpatrick_scale: false, - category: "objects" - }, - yen: { - keywords: [ "money", "sales", "japanese", "dollar", "currency" ], - "char": "\ud83d\udcb4", - fitzpatrick_scale: false, - category: "objects" - }, - euro: { - keywords: [ "money", "sales", "dollar", "currency" ], - "char": "\ud83d\udcb6", - fitzpatrick_scale: false, - category: "objects" - }, - pound: { - keywords: [ "british", "sterling", "money", "sales", "bills", "uk", "england", "currency" ], - "char": "\ud83d\udcb7", - fitzpatrick_scale: false, - category: "objects" - }, - moneybag: { - keywords: [ "dollar", "payment", "coins", "sale" ], - "char": "\ud83d\udcb0", - fitzpatrick_scale: false, - category: "objects" - }, - credit_card: { - keywords: [ "money", "sales", "dollar", "bill", "payment", "shopping" ], - "char": "\ud83d\udcb3", - fitzpatrick_scale: false, - category: "objects" - }, - gem: { - keywords: [ "blue", "ruby", "diamond", "jewelry" ], - "char": "\ud83d\udc8e", - fitzpatrick_scale: false, - category: "objects" - }, - balance_scale: { - keywords: [ "law", "fairness", "weight" ], - "char": "\u2696", - fitzpatrick_scale: false, - category: "objects" - }, - toolbox: { - keywords: [ "tools", "diy", "fix", "maintainer", "mechanic" ], - "char": "\ud83e\uddf0", - fitzpatrick_scale: false, - category: "objects" - }, - wrench: { - keywords: [ "tools", "diy", "ikea", "fix", "maintainer" ], - "char": "\ud83d\udd27", - fitzpatrick_scale: false, - category: "objects" - }, - hammer: { - keywords: [ "tools", "build", "create" ], - "char": "\ud83d\udd28", - fitzpatrick_scale: false, - category: "objects" - }, - hammer_and_pick: { - keywords: [ "tools", "build", "create" ], - "char": "\u2692", - fitzpatrick_scale: false, - category: "objects" - }, - hammer_and_wrench: { - keywords: [ "tools", "build", "create" ], - "char": "\ud83d\udee0", - fitzpatrick_scale: false, - category: "objects" - }, - pick: { - keywords: [ "tools", "dig" ], - "char": "\u26cf", - fitzpatrick_scale: false, - category: "objects" - }, - nut_and_bolt: { - keywords: [ "handy", "tools", "fix" ], - "char": "\ud83d\udd29", - fitzpatrick_scale: false, - category: "objects" - }, - gear: { - keywords: [ "cog" ], - "char": "\u2699", - fitzpatrick_scale: false, - category: "objects" - }, - brick: { - keywords: [ "bricks" ], - "char": "\ud83e\uddf1", - fitzpatrick_scale: false, - category: "objects" - }, - chains: { - keywords: [ "lock", "arrest" ], - "char": "\u26d3", - fitzpatrick_scale: false, - category: "objects" - }, - magnet: { - keywords: [ "attraction", "magnetic" ], - "char": "\ud83e\uddf2", - fitzpatrick_scale: false, - category: "objects" - }, - gun: { - keywords: [ "violence", "weapon", "pistol", "revolver" ], - "char": "\ud83d\udd2b", - fitzpatrick_scale: false, - category: "objects" - }, - bomb: { - keywords: [ "boom", "explode", "explosion", "terrorism" ], - "char": "\ud83d\udca3", - fitzpatrick_scale: false, - category: "objects" - }, - firecracker: { - keywords: [ "dynamite", "boom", "explode", "explosion", "explosive" ], - "char": "\ud83e\udde8", - fitzpatrick_scale: false, - category: "objects" - }, - hocho: { - keywords: [ "knife", "blade", "cutlery", "kitchen", "weapon" ], - "char": "\ud83d\udd2a", - fitzpatrick_scale: false, - category: "objects" - }, - dagger: { - keywords: [ "weapon" ], - "char": "\ud83d\udde1", - fitzpatrick_scale: false, - category: "objects" - }, - crossed_swords: { - keywords: [ "weapon" ], - "char": "\u2694", - fitzpatrick_scale: false, - category: "objects" - }, - shield: { - keywords: [ "protection", "security" ], - "char": "\ud83d\udee1", - fitzpatrick_scale: false, - category: "objects" - }, - smoking: { - keywords: [ "kills", "tobacco", "cigarette", "joint", "smoke" ], - "char": "\ud83d\udeac", - fitzpatrick_scale: false, - category: "objects" - }, - skull_and_crossbones: { - keywords: [ "poison", "danger", "deadly", "scary", "death", "pirate", "evil" ], - "char": "\u2620", - fitzpatrick_scale: false, - category: "objects" - }, - coffin: { - keywords: [ "vampire", "dead", "die", "death", "rip", "graveyard", "cemetery", "casket", "funeral", "box" ], - "char": "\u26b0", - fitzpatrick_scale: false, - category: "objects" - }, - funeral_urn: { - keywords: [ "dead", "die", "death", "rip", "ashes" ], - "char": "\u26b1", - fitzpatrick_scale: false, - category: "objects" - }, - amphora: { - keywords: [ "vase", "jar" ], - "char": "\ud83c\udffa", - fitzpatrick_scale: false, - category: "objects" - }, - crystal_ball: { - keywords: [ "disco", "party", "magic", "circus", "fortune_teller" ], - "char": "\ud83d\udd2e", - fitzpatrick_scale: false, - category: "objects" - }, - prayer_beads: { - keywords: [ "dhikr", "religious" ], - "char": "\ud83d\udcff", - fitzpatrick_scale: false, - category: "objects" - }, - nazar_amulet: { - keywords: [ "bead", "charm" ], - "char": "\ud83e\uddff", - fitzpatrick_scale: false, - category: "objects" - }, - barber: { - keywords: [ "hair", "salon", "style" ], - "char": "\ud83d\udc88", - fitzpatrick_scale: false, - category: "objects" - }, - alembic: { - keywords: [ "distilling", "science", "experiment", "chemistry" ], - "char": "\u2697", - fitzpatrick_scale: false, - category: "objects" - }, - telescope: { - keywords: [ "stars", "space", "zoom", "science", "astronomy" ], - "char": "\ud83d\udd2d", - fitzpatrick_scale: false, - category: "objects" - }, - microscope: { - keywords: [ "laboratory", "experiment", "zoomin", "science", "study" ], - "char": "\ud83d\udd2c", - fitzpatrick_scale: false, - category: "objects" - }, - hole: { - keywords: [ "embarrassing" ], - "char": "\ud83d\udd73", - fitzpatrick_scale: false, - category: "objects" - }, - pill: { - keywords: [ "health", "medicine", "doctor", "pharmacy", "drug" ], - "char": "\ud83d\udc8a", - fitzpatrick_scale: false, - category: "objects" - }, - syringe: { - keywords: [ "health", "hospital", "drugs", "blood", "medicine", "needle", "doctor", "nurse" ], - "char": "\ud83d\udc89", - fitzpatrick_scale: false, - category: "objects" - }, - dna: { - keywords: [ "biologist", "genetics", "life" ], - "char": "\ud83e\uddec", - fitzpatrick_scale: false, - category: "objects" - }, - microbe: { - keywords: [ "amoeba", "bacteria", "germs" ], - "char": "\ud83e\udda0", - fitzpatrick_scale: false, - category: "objects" - }, - petri_dish: { - keywords: [ "bacteria", "biology", "culture", "lab" ], - "char": "\ud83e\uddeb", - fitzpatrick_scale: false, - category: "objects" - }, - test_tube: { - keywords: [ "chemistry", "experiment", "lab", "science" ], - "char": "\ud83e\uddea", - fitzpatrick_scale: false, - category: "objects" - }, - thermometer: { - keywords: [ "weather", "temperature", "hot", "cold" ], - "char": "\ud83c\udf21", - fitzpatrick_scale: false, - category: "objects" - }, - broom: { - keywords: [ "cleaning", "sweeping", "witch" ], - "char": "\ud83e\uddf9", - fitzpatrick_scale: false, - category: "objects" - }, - basket: { - keywords: [ "laundry" ], - "char": "\ud83e\uddfa", - fitzpatrick_scale: false, - category: "objects" - }, - toilet_paper: { - keywords: [ "roll" ], - "char": "\ud83e\uddfb", - fitzpatrick_scale: false, - category: "objects" - }, - label: { - keywords: [ "sale", "tag" ], - "char": "\ud83c\udff7", - fitzpatrick_scale: false, - category: "objects" - }, - bookmark: { - keywords: [ "favorite", "label", "save" ], - "char": "\ud83d\udd16", - fitzpatrick_scale: false, - category: "objects" - }, - toilet: { - keywords: [ "restroom", "wc", "washroom", "bathroom", "potty" ], - "char": "\ud83d\udebd", - fitzpatrick_scale: false, - category: "objects" - }, - shower: { - keywords: [ "clean", "water", "bathroom" ], - "char": "\ud83d\udebf", - fitzpatrick_scale: false, - category: "objects" - }, - bathtub: { - keywords: [ "clean", "shower", "bathroom" ], - "char": "\ud83d\udec1", - fitzpatrick_scale: false, - category: "objects" - }, - soap: { - keywords: [ "bar", "bathing", "cleaning", "lather" ], - "char": "\ud83e\uddfc", - fitzpatrick_scale: false, - category: "objects" - }, - sponge: { - keywords: [ "absorbing", "cleaning", "porous" ], - "char": "\ud83e\uddfd", - fitzpatrick_scale: false, - category: "objects" - }, - lotion_bottle: { - keywords: [ "moisturizer", "sunscreen" ], - "char": "\ud83e\uddf4", - fitzpatrick_scale: false, - category: "objects" - }, - key: { - keywords: [ "lock", "door", "password" ], - "char": "\ud83d\udd11", - fitzpatrick_scale: false, - category: "objects" - }, - old_key: { - keywords: [ "lock", "door", "password" ], - "char": "\ud83d\udddd", - fitzpatrick_scale: false, - category: "objects" - }, - couch_and_lamp: { - keywords: [ "read", "chill" ], - "char": "\ud83d\udecb", - fitzpatrick_scale: false, - category: "objects" - }, - sleeping_bed: { - keywords: [ "bed", "rest" ], - "char": "\ud83d\udecc", - fitzpatrick_scale: true, - category: "objects" - }, - bed: { - keywords: [ "sleep", "rest" ], - "char": "\ud83d\udecf", - fitzpatrick_scale: false, - category: "objects" - }, - door: { - keywords: [ "house", "entry", "exit" ], - "char": "\ud83d\udeaa", - fitzpatrick_scale: false, - category: "objects" - }, - bellhop_bell: { - keywords: [ "service" ], - "char": "\ud83d\udece", - fitzpatrick_scale: false, - category: "objects" - }, - teddy_bear: { - keywords: [ "plush", "stuffed" ], - "char": "\ud83e\uddf8", - fitzpatrick_scale: false, - category: "objects" - }, - framed_picture: { - keywords: [ "photography" ], - "char": "\ud83d\uddbc", - fitzpatrick_scale: false, - category: "objects" - }, - world_map: { - keywords: [ "location", "direction" ], - "char": "\ud83d\uddfa", - fitzpatrick_scale: false, - category: "objects" - }, - parasol_on_ground: { - keywords: [ "weather", "summer" ], - "char": "\u26f1", - fitzpatrick_scale: false, - category: "objects" - }, - moyai: { - keywords: [ "rock", "easter island", "moai" ], - "char": "\ud83d\uddff", - fitzpatrick_scale: false, - category: "objects" - }, - shopping: { - keywords: [ "mall", "buy", "purchase" ], - "char": "\ud83d\udecd", - fitzpatrick_scale: false, - category: "objects" - }, - shopping_cart: { - keywords: [ "trolley" ], - "char": "\ud83d\uded2", - fitzpatrick_scale: false, - category: "objects" - }, - balloon: { - keywords: [ "party", "celebration", "birthday", "circus" ], - "char": "\ud83c\udf88", - fitzpatrick_scale: false, - category: "objects" - }, - flags: { - keywords: [ "fish", "japanese", "koinobori", "carp", "banner" ], - "char": "\ud83c\udf8f", - fitzpatrick_scale: false, - category: "objects" - }, - ribbon: { - keywords: [ "decoration", "pink", "girl", "bowtie" ], - "char": "\ud83c\udf80", - fitzpatrick_scale: false, - category: "objects" - }, - gift: { - keywords: [ "present", "birthday", "christmas", "xmas" ], - "char": "\ud83c\udf81", - fitzpatrick_scale: false, - category: "objects" - }, - confetti_ball: { - keywords: [ "festival", "party", "birthday", "circus" ], - "char": "\ud83c\udf8a", - fitzpatrick_scale: false, - category: "objects" - }, - tada: { - keywords: [ "party", "congratulations", "birthday", "magic", "circus", "celebration" ], - "char": "\ud83c\udf89", - fitzpatrick_scale: false, - category: "objects" - }, - dolls: { - keywords: [ "japanese", "toy", "kimono" ], - "char": "\ud83c\udf8e", - fitzpatrick_scale: false, - category: "objects" - }, - wind_chime: { - keywords: [ "nature", "ding", "spring", "bell" ], - "char": "\ud83c\udf90", - fitzpatrick_scale: false, - category: "objects" - }, - crossed_flags: { - keywords: [ "japanese", "nation", "country", "border" ], - "char": "\ud83c\udf8c", - fitzpatrick_scale: false, - category: "objects" - }, - izakaya_lantern: { - keywords: [ "light", "paper", "halloween", "spooky" ], - "char": "\ud83c\udfee", - fitzpatrick_scale: false, - category: "objects" - }, - red_envelope: { - keywords: [ "gift" ], - "char": "\ud83e\udde7", - fitzpatrick_scale: false, - category: "objects" - }, - email: { - keywords: [ "letter", "postal", "inbox", "communication" ], - "char": "\u2709\ufe0f", - fitzpatrick_scale: false, - category: "objects" - }, - envelope_with_arrow: { - keywords: [ "email", "communication" ], - "char": "\ud83d\udce9", - fitzpatrick_scale: false, - category: "objects" - }, - incoming_envelope: { - keywords: [ "email", "inbox" ], - "char": "\ud83d\udce8", - fitzpatrick_scale: false, - category: "objects" - }, - "e-mail": { - keywords: [ "communication", "inbox" ], - "char": "\ud83d\udce7", - fitzpatrick_scale: false, - category: "objects" - }, - love_letter: { - keywords: [ "email", "like", "affection", "envelope", "valentines" ], - "char": "\ud83d\udc8c", - fitzpatrick_scale: false, - category: "objects" - }, - postbox: { - keywords: [ "email", "letter", "envelope" ], - "char": "\ud83d\udcee", - fitzpatrick_scale: false, - category: "objects" - }, - mailbox_closed: { - keywords: [ "email", "communication", "inbox" ], - "char": "\ud83d\udcea", - fitzpatrick_scale: false, - category: "objects" - }, - mailbox: { - keywords: [ "email", "inbox", "communication" ], - "char": "\ud83d\udceb", - fitzpatrick_scale: false, - category: "objects" - }, - mailbox_with_mail: { - keywords: [ "email", "inbox", "communication" ], - "char": "\ud83d\udcec", - fitzpatrick_scale: false, - category: "objects" - }, - mailbox_with_no_mail: { - keywords: [ "email", "inbox" ], - "char": "\ud83d\udced", - fitzpatrick_scale: false, - category: "objects" - }, - "package": { - keywords: [ "mail", "gift", "cardboard", "box", "moving" ], - "char": "\ud83d\udce6", - fitzpatrick_scale: false, - category: "objects" - }, - postal_horn: { - keywords: [ "instrument", "music" ], - "char": "\ud83d\udcef", - fitzpatrick_scale: false, - category: "objects" - }, - inbox_tray: { - keywords: [ "email", "documents" ], - "char": "\ud83d\udce5", - fitzpatrick_scale: false, - category: "objects" - }, - outbox_tray: { - keywords: [ "inbox", "email" ], - "char": "\ud83d\udce4", - fitzpatrick_scale: false, - category: "objects" - }, - scroll: { - keywords: [ "documents", "ancient", "history", "paper" ], - "char": "\ud83d\udcdc", - fitzpatrick_scale: false, - category: "objects" - }, - page_with_curl: { - keywords: [ "documents", "office", "paper" ], - "char": "\ud83d\udcc3", - fitzpatrick_scale: false, - category: "objects" - }, - bookmark_tabs: { - keywords: [ "favorite", "save", "order", "tidy" ], - "char": "\ud83d\udcd1", - fitzpatrick_scale: false, - category: "objects" - }, - receipt: { - keywords: [ "accounting", "expenses" ], - "char": "\ud83e\uddfe", - fitzpatrick_scale: false, - category: "objects" - }, - bar_chart: { - keywords: [ "graph", "presentation", "stats" ], - "char": "\ud83d\udcca", - fitzpatrick_scale: false, - category: "objects" - }, - chart_with_upwards_trend: { - keywords: [ "graph", "presentation", "stats", "recovery", "business", "economics", "money", "sales", "good", "success" ], - "char": "\ud83d\udcc8", - fitzpatrick_scale: false, - category: "objects" - }, - chart_with_downwards_trend: { - keywords: [ "graph", "presentation", "stats", "recession", "business", "economics", "money", "sales", "bad", "failure" ], - "char": "\ud83d\udcc9", - fitzpatrick_scale: false, - category: "objects" - }, - page_facing_up: { - keywords: [ "documents", "office", "paper", "information" ], - "char": "\ud83d\udcc4", - fitzpatrick_scale: false, - category: "objects" - }, - date: { - keywords: [ "calendar", "schedule" ], - "char": "\ud83d\udcc5", - fitzpatrick_scale: false, - category: "objects" - }, - calendar: { - keywords: [ "schedule", "date", "planning" ], - "char": "\ud83d\udcc6", - fitzpatrick_scale: false, - category: "objects" - }, - spiral_calendar: { - keywords: [ "date", "schedule", "planning" ], - "char": "\ud83d\uddd3", - fitzpatrick_scale: false, - category: "objects" - }, - card_index: { - keywords: [ "business", "stationery" ], - "char": "\ud83d\udcc7", - fitzpatrick_scale: false, - category: "objects" - }, - card_file_box: { - keywords: [ "business", "stationery" ], - "char": "\ud83d\uddc3", - fitzpatrick_scale: false, - category: "objects" - }, - ballot_box: { - keywords: [ "election", "vote" ], - "char": "\ud83d\uddf3", - fitzpatrick_scale: false, - category: "objects" - }, - file_cabinet: { - keywords: [ "filing", "organizing" ], - "char": "\ud83d\uddc4", - fitzpatrick_scale: false, - category: "objects" - }, - clipboard: { - keywords: [ "stationery", "documents" ], - "char": "\ud83d\udccb", - fitzpatrick_scale: false, - category: "objects" - }, - spiral_notepad: { - keywords: [ "memo", "stationery" ], - "char": "\ud83d\uddd2", - fitzpatrick_scale: false, - category: "objects" - }, - file_folder: { - keywords: [ "documents", "business", "office" ], - "char": "\ud83d\udcc1", - fitzpatrick_scale: false, - category: "objects" - }, - open_file_folder: { - keywords: [ "documents", "load" ], - "char": "\ud83d\udcc2", - fitzpatrick_scale: false, - category: "objects" - }, - card_index_dividers: { - keywords: [ "organizing", "business", "stationery" ], - "char": "\ud83d\uddc2", - fitzpatrick_scale: false, - category: "objects" - }, - newspaper_roll: { - keywords: [ "press", "headline" ], - "char": "\ud83d\uddde", - fitzpatrick_scale: false, - category: "objects" - }, - newspaper: { - keywords: [ "press", "headline" ], - "char": "\ud83d\udcf0", - fitzpatrick_scale: false, - category: "objects" - }, - notebook: { - keywords: [ "stationery", "record", "notes", "paper", "study" ], - "char": "\ud83d\udcd3", - fitzpatrick_scale: false, - category: "objects" - }, - closed_book: { - keywords: [ "read", "library", "knowledge", "textbook", "learn" ], - "char": "\ud83d\udcd5", - fitzpatrick_scale: false, - category: "objects" - }, - green_book: { - keywords: [ "read", "library", "knowledge", "study" ], - "char": "\ud83d\udcd7", - fitzpatrick_scale: false, - category: "objects" - }, - blue_book: { - keywords: [ "read", "library", "knowledge", "learn", "study" ], - "char": "\ud83d\udcd8", - fitzpatrick_scale: false, - category: "objects" - }, - orange_book: { - keywords: [ "read", "library", "knowledge", "textbook", "study" ], - "char": "\ud83d\udcd9", - fitzpatrick_scale: false, - category: "objects" - }, - notebook_with_decorative_cover: { - keywords: [ "classroom", "notes", "record", "paper", "study" ], - "char": "\ud83d\udcd4", - fitzpatrick_scale: false, - category: "objects" - }, - ledger: { - keywords: [ "notes", "paper" ], - "char": "\ud83d\udcd2", - fitzpatrick_scale: false, - category: "objects" - }, - books: { - keywords: [ "literature", "library", "study" ], - "char": "\ud83d\udcda", - fitzpatrick_scale: false, - category: "objects" - }, - open_book: { - keywords: [ "book", "read", "library", "knowledge", "literature", "learn", "study" ], - "char": "\ud83d\udcd6", - fitzpatrick_scale: false, - category: "objects" - }, - safety_pin: { - keywords: [ "diaper" ], - "char": "\ud83e\uddf7", - fitzpatrick_scale: false, - category: "objects" - }, - link: { - keywords: [ "rings", "url" ], - "char": "\ud83d\udd17", - fitzpatrick_scale: false, - category: "objects" - }, - paperclip: { - keywords: [ "documents", "stationery" ], - "char": "\ud83d\udcce", - fitzpatrick_scale: false, - category: "objects" - }, - paperclips: { - keywords: [ "documents", "stationery" ], - "char": "\ud83d\udd87", - fitzpatrick_scale: false, - category: "objects" - }, - scissors: { - keywords: [ "stationery", "cut" ], - "char": "\u2702\ufe0f", - fitzpatrick_scale: false, - category: "objects" - }, - triangular_ruler: { - keywords: [ "stationery", "math", "architect", "sketch" ], - "char": "\ud83d\udcd0", - fitzpatrick_scale: false, - category: "objects" - }, - straight_ruler: { - keywords: [ "stationery", "calculate", "length", "math", "school", "drawing", "architect", "sketch" ], - "char": "\ud83d\udccf", - fitzpatrick_scale: false, - category: "objects" - }, - abacus: { - keywords: [ "calculation" ], - "char": "\ud83e\uddee", - fitzpatrick_scale: false, - category: "objects" - }, - pushpin: { - keywords: [ "stationery", "mark", "here" ], - "char": "\ud83d\udccc", - fitzpatrick_scale: false, - category: "objects" - }, - round_pushpin: { - keywords: [ "stationery", "location", "map", "here" ], - "char": "\ud83d\udccd", - fitzpatrick_scale: false, - category: "objects" - }, - triangular_flag_on_post: { - keywords: [ "mark", "milestone", "place" ], - "char": "\ud83d\udea9", - fitzpatrick_scale: false, - category: "objects" - }, - white_flag: { - keywords: [ "losing", "loser", "lost", "surrender", "give up", "fail" ], - "char": "\ud83c\udff3", - fitzpatrick_scale: false, - category: "objects" - }, - black_flag: { - keywords: [ "pirate" ], - "char": "\ud83c\udff4", - fitzpatrick_scale: false, - category: "objects" - }, - rainbow_flag: { - keywords: [ "flag", "rainbow", "pride", "gay", "lgbt", "glbt", "queer", "homosexual", "lesbian", "bisexual", "transgender" ], - "char": "\ud83c\udff3\ufe0f\u200d\ud83c\udf08", - fitzpatrick_scale: false, - category: "objects" - }, - closed_lock_with_key: { - keywords: [ "security", "privacy" ], - "char": "\ud83d\udd10", - fitzpatrick_scale: false, - category: "objects" - }, - lock: { - keywords: [ "security", "password", "padlock" ], - "char": "\ud83d\udd12", - fitzpatrick_scale: false, - category: "objects" - }, - unlock: { - keywords: [ "privacy", "security" ], - "char": "\ud83d\udd13", - fitzpatrick_scale: false, - category: "objects" - }, - lock_with_ink_pen: { - keywords: [ "security", "secret" ], - "char": "\ud83d\udd0f", - fitzpatrick_scale: false, - category: "objects" - }, - pen: { - keywords: [ "stationery", "writing", "write" ], - "char": "\ud83d\udd8a", - fitzpatrick_scale: false, - category: "objects" - }, - fountain_pen: { - keywords: [ "stationery", "writing", "write" ], - "char": "\ud83d\udd8b", - fitzpatrick_scale: false, - category: "objects" - }, - black_nib: { - keywords: [ "pen", "stationery", "writing", "write" ], - "char": "\u2712\ufe0f", - fitzpatrick_scale: false, - category: "objects" - }, - memo: { - keywords: [ "write", "documents", "stationery", "pencil", "paper", "writing", "legal", "exam", "quiz", "test", "study", "compose" ], - "char": "\ud83d\udcdd", - fitzpatrick_scale: false, - category: "objects" - }, - pencil2: { - keywords: [ "stationery", "write", "paper", "writing", "school", "study" ], - "char": "\u270f\ufe0f", - fitzpatrick_scale: false, - category: "objects" - }, - crayon: { - keywords: [ "drawing", "creativity" ], - "char": "\ud83d\udd8d", - fitzpatrick_scale: false, - category: "objects" - }, - paintbrush: { - keywords: [ "drawing", "creativity", "art" ], - "char": "\ud83d\udd8c", - fitzpatrick_scale: false, - category: "objects" - }, - mag: { - keywords: [ "search", "zoom", "find", "detective" ], - "char": "\ud83d\udd0d", - fitzpatrick_scale: false, - category: "objects" - }, - mag_right: { - keywords: [ "search", "zoom", "find", "detective" ], - "char": "\ud83d\udd0e", - fitzpatrick_scale: false, - category: "objects" - }, - heart: { - keywords: [ "love", "like", "valentines" ], - "char": "\u2764\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - orange_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - "char": "\ud83e\udde1", - fitzpatrick_scale: false, - category: "symbols" - }, - yellow_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - "char": "\ud83d\udc9b", - fitzpatrick_scale: false, - category: "symbols" - }, - green_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - "char": "\ud83d\udc9a", - fitzpatrick_scale: false, - category: "symbols" - }, - blue_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - "char": "\ud83d\udc99", - fitzpatrick_scale: false, - category: "symbols" - }, - purple_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - "char": "\ud83d\udc9c", - fitzpatrick_scale: false, - category: "symbols" - }, - black_heart: { - keywords: [ "evil" ], - "char": "\ud83d\udda4", - fitzpatrick_scale: false, - category: "symbols" - }, - broken_heart: { - keywords: [ "sad", "sorry", "break", "heart", "heartbreak" ], - "char": "\ud83d\udc94", - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_heart_exclamation: { - keywords: [ "decoration", "love" ], - "char": "\u2763", - fitzpatrick_scale: false, - category: "symbols" - }, - two_hearts: { - keywords: [ "love", "like", "affection", "valentines", "heart" ], - "char": "\ud83d\udc95", - fitzpatrick_scale: false, - category: "symbols" - }, - revolving_hearts: { - keywords: [ "love", "like", "affection", "valentines" ], - "char": "\ud83d\udc9e", - fitzpatrick_scale: false, - category: "symbols" - }, - heartbeat: { - keywords: [ "love", "like", "affection", "valentines", "pink", "heart" ], - "char": "\ud83d\udc93", - fitzpatrick_scale: false, - category: "symbols" - }, - heartpulse: { - keywords: [ "like", "love", "affection", "valentines", "pink" ], - "char": "\ud83d\udc97", - fitzpatrick_scale: false, - category: "symbols" - }, - sparkling_heart: { - keywords: [ "love", "like", "affection", "valentines" ], - "char": "\ud83d\udc96", - fitzpatrick_scale: false, - category: "symbols" - }, - cupid: { - keywords: [ "love", "like", "heart", "affection", "valentines" ], - "char": "\ud83d\udc98", - fitzpatrick_scale: false, - category: "symbols" - }, - gift_heart: { - keywords: [ "love", "valentines" ], - "char": "\ud83d\udc9d", - fitzpatrick_scale: false, - category: "symbols" - }, - heart_decoration: { - keywords: [ "purple-square", "love", "like" ], - "char": "\ud83d\udc9f", - fitzpatrick_scale: false, - category: "symbols" - }, - peace_symbol: { - keywords: [ "hippie" ], - "char": "\u262e", - fitzpatrick_scale: false, - category: "symbols" - }, - latin_cross: { - keywords: [ "christianity" ], - "char": "\u271d", - fitzpatrick_scale: false, - category: "symbols" - }, - star_and_crescent: { - keywords: [ "islam" ], - "char": "\u262a", - fitzpatrick_scale: false, - category: "symbols" - }, - om: { - keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ], - "char": "\ud83d\udd49", - fitzpatrick_scale: false, - category: "symbols" - }, - wheel_of_dharma: { - keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ], - "char": "\u2638", - fitzpatrick_scale: false, - category: "symbols" - }, - star_of_david: { - keywords: [ "judaism" ], - "char": "\u2721", - fitzpatrick_scale: false, - category: "symbols" - }, - six_pointed_star: { - keywords: [ "purple-square", "religion", "jewish", "hexagram" ], - "char": "\ud83d\udd2f", - fitzpatrick_scale: false, - category: "symbols" - }, - menorah: { - keywords: [ "hanukkah", "candles", "jewish" ], - "char": "\ud83d\udd4e", - fitzpatrick_scale: false, - category: "symbols" - }, - yin_yang: { - keywords: [ "balance" ], - "char": "\u262f", - fitzpatrick_scale: false, - category: "symbols" - }, - orthodox_cross: { - keywords: [ "suppedaneum", "religion" ], - "char": "\u2626", - fitzpatrick_scale: false, - category: "symbols" - }, - place_of_worship: { - keywords: [ "religion", "church", "temple", "prayer" ], - "char": "\ud83d\uded0", - fitzpatrick_scale: false, - category: "symbols" - }, - ophiuchus: { - keywords: [ "sign", "purple-square", "constellation", "astrology" ], - "char": "\u26ce", - fitzpatrick_scale: false, - category: "symbols" - }, - aries: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - "char": "\u2648", - fitzpatrick_scale: false, - category: "symbols" - }, - taurus: { - keywords: [ "purple-square", "sign", "zodiac", "astrology" ], - "char": "\u2649", - fitzpatrick_scale: false, - category: "symbols" - }, - gemini: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - "char": "\u264a", - fitzpatrick_scale: false, - category: "symbols" - }, - cancer: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - "char": "\u264b", - fitzpatrick_scale: false, - category: "symbols" - }, - leo: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - "char": "\u264c", - fitzpatrick_scale: false, - category: "symbols" - }, - virgo: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - "char": "\u264d", - fitzpatrick_scale: false, - category: "symbols" - }, - libra: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - "char": "\u264e", - fitzpatrick_scale: false, - category: "symbols" - }, - scorpius: { - keywords: [ "sign", "zodiac", "purple-square", "astrology", "scorpio" ], - "char": "\u264f", - fitzpatrick_scale: false, - category: "symbols" - }, - sagittarius: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - "char": "\u2650", - fitzpatrick_scale: false, - category: "symbols" - }, - capricorn: { - keywords: [ "sign", "zodiac", "purple-square", "astrology" ], - "char": "\u2651", - fitzpatrick_scale: false, - category: "symbols" - }, - aquarius: { - keywords: [ "sign", "purple-square", "zodiac", "astrology" ], - "char": "\u2652", - fitzpatrick_scale: false, - category: "symbols" - }, - pisces: { - keywords: [ "purple-square", "sign", "zodiac", "astrology" ], - "char": "\u2653", - fitzpatrick_scale: false, - category: "symbols" - }, - id: { - keywords: [ "purple-square", "words" ], - "char": "\ud83c\udd94", - fitzpatrick_scale: false, - category: "symbols" - }, - atom_symbol: { - keywords: [ "science", "physics", "chemistry" ], - "char": "\u269b", - fitzpatrick_scale: false, - category: "symbols" - }, - u7a7a: { - keywords: [ "kanji", "japanese", "chinese", "empty", "sky", "blue-square" ], - "char": "\ud83c\ude33", - fitzpatrick_scale: false, - category: "symbols" - }, - u5272: { - keywords: [ "cut", "divide", "chinese", "kanji", "pink-square" ], - "char": "\ud83c\ude39", - fitzpatrick_scale: false, - category: "symbols" - }, - radioactive: { - keywords: [ "nuclear", "danger" ], - "char": "\u2622", - fitzpatrick_scale: false, - category: "symbols" - }, - biohazard: { - keywords: [ "danger" ], - "char": "\u2623", - fitzpatrick_scale: false, - category: "symbols" - }, - mobile_phone_off: { - keywords: [ "mute", "orange-square", "silence", "quiet" ], - "char": "\ud83d\udcf4", - fitzpatrick_scale: false, - category: "symbols" - }, - vibration_mode: { - keywords: [ "orange-square", "phone" ], - "char": "\ud83d\udcf3", - fitzpatrick_scale: false, - category: "symbols" - }, - u6709: { - keywords: [ "orange-square", "chinese", "have", "kanji" ], - "char": "\ud83c\ude36", - fitzpatrick_scale: false, - category: "symbols" - }, - u7121: { - keywords: [ "nothing", "chinese", "kanji", "japanese", "orange-square" ], - "char": "\ud83c\ude1a", - fitzpatrick_scale: false, - category: "symbols" - }, - u7533: { - keywords: [ "chinese", "japanese", "kanji", "orange-square" ], - "char": "\ud83c\ude38", - fitzpatrick_scale: false, - category: "symbols" - }, - u55b6: { - keywords: [ "japanese", "opening hours", "orange-square" ], - "char": "\ud83c\ude3a", - fitzpatrick_scale: false, - category: "symbols" - }, - u6708: { - keywords: [ "chinese", "month", "moon", "japanese", "orange-square", "kanji" ], - "char": "\ud83c\ude37\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - eight_pointed_black_star: { - keywords: [ "orange-square", "shape", "polygon" ], - "char": "\u2734\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - vs: { - keywords: [ "words", "orange-square" ], - "char": "\ud83c\udd9a", - fitzpatrick_scale: false, - category: "symbols" - }, - accept: { - keywords: [ "ok", "good", "chinese", "kanji", "agree", "yes", "orange-circle" ], - "char": "\ud83c\ude51", - fitzpatrick_scale: false, - category: "symbols" - }, - white_flower: { - keywords: [ "japanese", "spring" ], - "char": "\ud83d\udcae", - fitzpatrick_scale: false, - category: "symbols" - }, - ideograph_advantage: { - keywords: [ "chinese", "kanji", "obtain", "get", "circle" ], - "char": "\ud83c\ude50", - fitzpatrick_scale: false, - category: "symbols" - }, - secret: { - keywords: [ "privacy", "chinese", "sshh", "kanji", "red-circle" ], - "char": "\u3299\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - congratulations: { - keywords: [ "chinese", "kanji", "japanese", "red-circle" ], - "char": "\u3297\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - u5408: { - keywords: [ "japanese", "chinese", "join", "kanji", "red-square" ], - "char": "\ud83c\ude34", - fitzpatrick_scale: false, - category: "symbols" - }, - u6e80: { - keywords: [ "full", "chinese", "japanese", "red-square", "kanji" ], - "char": "\ud83c\ude35", - fitzpatrick_scale: false, - category: "symbols" - }, - u7981: { - keywords: [ "kanji", "japanese", "chinese", "forbidden", "limit", "restricted", "red-square" ], - "char": "\ud83c\ude32", - fitzpatrick_scale: false, - category: "symbols" - }, - a: { - keywords: [ "red-square", "alphabet", "letter" ], - "char": "\ud83c\udd70\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - b: { - keywords: [ "red-square", "alphabet", "letter" ], - "char": "\ud83c\udd71\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - ab: { - keywords: [ "red-square", "alphabet" ], - "char": "\ud83c\udd8e", - fitzpatrick_scale: false, - category: "symbols" - }, - cl: { - keywords: [ "alphabet", "words", "red-square" ], - "char": "\ud83c\udd91", - fitzpatrick_scale: false, - category: "symbols" - }, - o2: { - keywords: [ "alphabet", "red-square", "letter" ], - "char": "\ud83c\udd7e\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - sos: { - keywords: [ "help", "red-square", "words", "emergency", "911" ], - "char": "\ud83c\udd98", - fitzpatrick_scale: false, - category: "symbols" - }, - no_entry: { - keywords: [ "limit", "security", "privacy", "bad", "denied", "stop", "circle" ], - "char": "\u26d4", - fitzpatrick_scale: false, - category: "symbols" - }, - name_badge: { - keywords: [ "fire", "forbid" ], - "char": "\ud83d\udcdb", - fitzpatrick_scale: false, - category: "symbols" - }, - no_entry_sign: { - keywords: [ "forbid", "stop", "limit", "denied", "disallow", "circle" ], - "char": "\ud83d\udeab", - fitzpatrick_scale: false, - category: "symbols" - }, - x: { - keywords: [ "no", "delete", "remove", "cancel", "red" ], - "char": "\u274c", - fitzpatrick_scale: false, - category: "symbols" - }, - o: { - keywords: [ "circle", "round" ], - "char": "\u2b55", - fitzpatrick_scale: false, - category: "symbols" - }, - stop_sign: { - keywords: [ "stop" ], - "char": "\ud83d\uded1", - fitzpatrick_scale: false, - category: "symbols" - }, - anger: { - keywords: [ "angry", "mad" ], - "char": "\ud83d\udca2", - fitzpatrick_scale: false, - category: "symbols" - }, - hotsprings: { - keywords: [ "bath", "warm", "relax" ], - "char": "\u2668\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - no_pedestrians: { - keywords: [ "rules", "crossing", "walking", "circle" ], - "char": "\ud83d\udeb7", - fitzpatrick_scale: false, - category: "symbols" - }, - do_not_litter: { - keywords: [ "trash", "bin", "garbage", "circle" ], - "char": "\ud83d\udeaf", - fitzpatrick_scale: false, - category: "symbols" - }, - no_bicycles: { - keywords: [ "cyclist", "prohibited", "circle" ], - "char": "\ud83d\udeb3", - fitzpatrick_scale: false, - category: "symbols" - }, - "non-potable_water": { - keywords: [ "drink", "faucet", "tap", "circle" ], - "char": "\ud83d\udeb1", - fitzpatrick_scale: false, - category: "symbols" - }, - underage: { - keywords: [ "18", "drink", "pub", "night", "minor", "circle" ], - "char": "\ud83d\udd1e", - fitzpatrick_scale: false, - category: "symbols" - }, - no_mobile_phones: { - keywords: [ "iphone", "mute", "circle" ], - "char": "\ud83d\udcf5", - fitzpatrick_scale: false, - category: "symbols" - }, - exclamation: { - keywords: [ "heavy_exclamation_mark", "danger", "surprise", "punctuation", "wow", "warning" ], - "char": "\u2757", - fitzpatrick_scale: false, - category: "symbols" - }, - grey_exclamation: { - keywords: [ "surprise", "punctuation", "gray", "wow", "warning" ], - "char": "\u2755", - fitzpatrick_scale: false, - category: "symbols" - }, - question: { - keywords: [ "doubt", "confused" ], - "char": "\u2753", - fitzpatrick_scale: false, - category: "symbols" - }, - grey_question: { - keywords: [ "doubts", "gray", "huh", "confused" ], - "char": "\u2754", - fitzpatrick_scale: false, - category: "symbols" - }, - bangbang: { - keywords: [ "exclamation", "surprise" ], - "char": "\u203c\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - interrobang: { - keywords: [ "wat", "punctuation", "surprise" ], - "char": "\u2049\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - 100: { - keywords: [ "score", "perfect", "numbers", "century", "exam", "quiz", "test", "pass", "hundred" ], - "char": "\ud83d\udcaf", - fitzpatrick_scale: false, - category: "symbols" - }, - low_brightness: { - keywords: [ "sun", "afternoon", "warm", "summer" ], - "char": "\ud83d\udd05", - fitzpatrick_scale: false, - category: "symbols" - }, - high_brightness: { - keywords: [ "sun", "light" ], - "char": "\ud83d\udd06", - fitzpatrick_scale: false, - category: "symbols" - }, - trident: { - keywords: [ "weapon", "spear" ], - "char": "\ud83d\udd31", - fitzpatrick_scale: false, - category: "symbols" - }, - fleur_de_lis: { - keywords: [ "decorative", "scout" ], - "char": "\u269c", - fitzpatrick_scale: false, - category: "symbols" - }, - part_alternation_mark: { - keywords: [ "graph", "presentation", "stats", "business", "economics", "bad" ], - "char": "\u303d\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - warning: { - keywords: [ "exclamation", "wip", "alert", "error", "problem", "issue" ], - "char": "\u26a0\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - children_crossing: { - keywords: [ "school", "warning", "danger", "sign", "driving", "yellow-diamond" ], - "char": "\ud83d\udeb8", - fitzpatrick_scale: false, - category: "symbols" - }, - beginner: { - keywords: [ "badge", "shield" ], - "char": "\ud83d\udd30", - fitzpatrick_scale: false, - category: "symbols" - }, - recycle: { - keywords: [ "arrow", "environment", "garbage", "trash" ], - "char": "\u267b\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - u6307: { - keywords: [ "chinese", "point", "green-square", "kanji" ], - "char": "\ud83c\ude2f", - fitzpatrick_scale: false, - category: "symbols" - }, - chart: { - keywords: [ "green-square", "graph", "presentation", "stats" ], - "char": "\ud83d\udcb9", - fitzpatrick_scale: false, - category: "symbols" - }, - sparkle: { - keywords: [ "stars", "green-square", "awesome", "good", "fireworks" ], - "char": "\u2747\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - eight_spoked_asterisk: { - keywords: [ "star", "sparkle", "green-square" ], - "char": "\u2733\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - negative_squared_cross_mark: { - keywords: [ "x", "green-square", "no", "deny" ], - "char": "\u274e", - fitzpatrick_scale: false, - category: "symbols" - }, - white_check_mark: { - keywords: [ "green-square", "ok", "agree", "vote", "election", "answer", "tick" ], - "char": "\u2705", - fitzpatrick_scale: false, - category: "symbols" - }, - diamond_shape_with_a_dot_inside: { - keywords: [ "jewel", "blue", "gem", "crystal", "fancy" ], - "char": "\ud83d\udca0", - fitzpatrick_scale: false, - category: "symbols" - }, - cyclone: { - keywords: [ "weather", "swirl", "blue", "cloud", "vortex", "spiral", "whirlpool", "spin", "tornado", "hurricane", "typhoon" ], - "char": "\ud83c\udf00", - fitzpatrick_scale: false, - category: "symbols" - }, - loop: { - keywords: [ "tape", "cassette" ], - "char": "\u27bf", - fitzpatrick_scale: false, - category: "symbols" - }, - globe_with_meridians: { - keywords: [ "earth", "international", "world", "internet", "interweb", "i18n" ], - "char": "\ud83c\udf10", - fitzpatrick_scale: false, - category: "symbols" - }, - m: { - keywords: [ "alphabet", "blue-circle", "letter" ], - "char": "\u24c2\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - atm: { - keywords: [ "money", "sales", "cash", "blue-square", "payment", "bank" ], - "char": "\ud83c\udfe7", - fitzpatrick_scale: false, - category: "symbols" - }, - sa: { - keywords: [ "japanese", "blue-square", "katakana" ], - "char": "\ud83c\ude02\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - passport_control: { - keywords: [ "custom", "blue-square" ], - "char": "\ud83d\udec2", - fitzpatrick_scale: false, - category: "symbols" - }, - customs: { - keywords: [ "passport", "border", "blue-square" ], - "char": "\ud83d\udec3", - fitzpatrick_scale: false, - category: "symbols" - }, - baggage_claim: { - keywords: [ "blue-square", "airport", "transport" ], - "char": "\ud83d\udec4", - fitzpatrick_scale: false, - category: "symbols" - }, - left_luggage: { - keywords: [ "blue-square", "travel" ], - "char": "\ud83d\udec5", - fitzpatrick_scale: false, - category: "symbols" - }, - wheelchair: { - keywords: [ "blue-square", "disabled", "a11y", "accessibility" ], - "char": "\u267f", - fitzpatrick_scale: false, - category: "symbols" - }, - no_smoking: { - keywords: [ "cigarette", "blue-square", "smell", "smoke" ], - "char": "\ud83d\udead", - fitzpatrick_scale: false, - category: "symbols" - }, - wc: { - keywords: [ "toilet", "restroom", "blue-square" ], - "char": "\ud83d\udebe", - fitzpatrick_scale: false, - category: "symbols" - }, - parking: { - keywords: [ "cars", "blue-square", "alphabet", "letter" ], - "char": "\ud83c\udd7f\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - potable_water: { - keywords: [ "blue-square", "liquid", "restroom", "cleaning", "faucet" ], - "char": "\ud83d\udeb0", - fitzpatrick_scale: false, - category: "symbols" - }, - mens: { - keywords: [ "toilet", "restroom", "wc", "blue-square", "gender", "male" ], - "char": "\ud83d\udeb9", - fitzpatrick_scale: false, - category: "symbols" - }, - womens: { - keywords: [ "purple-square", "woman", "female", "toilet", "loo", "restroom", "gender" ], - "char": "\ud83d\udeba", - fitzpatrick_scale: false, - category: "symbols" - }, - baby_symbol: { - keywords: [ "orange-square", "child" ], - "char": "\ud83d\udebc", - fitzpatrick_scale: false, - category: "symbols" - }, - restroom: { - keywords: [ "blue-square", "toilet", "refresh", "wc", "gender" ], - "char": "\ud83d\udebb", - fitzpatrick_scale: false, - category: "symbols" - }, - put_litter_in_its_place: { - keywords: [ "blue-square", "sign", "human", "info" ], - "char": "\ud83d\udeae", - fitzpatrick_scale: false, - category: "symbols" - }, - cinema: { - keywords: [ "blue-square", "record", "film", "movie", "curtain", "stage", "theater" ], - "char": "\ud83c\udfa6", - fitzpatrick_scale: false, - category: "symbols" - }, - signal_strength: { - keywords: [ "blue-square", "reception", "phone", "internet", "connection", "wifi", "bluetooth", "bars" ], - "char": "\ud83d\udcf6", - fitzpatrick_scale: false, - category: "symbols" - }, - koko: { - keywords: [ "blue-square", "here", "katakana", "japanese", "destination" ], - "char": "\ud83c\ude01", - fitzpatrick_scale: false, - category: "symbols" - }, - ng: { - keywords: [ "blue-square", "words", "shape", "icon" ], - "char": "\ud83c\udd96", - fitzpatrick_scale: false, - category: "symbols" - }, - ok: { - keywords: [ "good", "agree", "yes", "blue-square" ], - "char": "\ud83c\udd97", - fitzpatrick_scale: false, - category: "symbols" - }, - up: { - keywords: [ "blue-square", "above", "high" ], - "char": "\ud83c\udd99", - fitzpatrick_scale: false, - category: "symbols" - }, - cool: { - keywords: [ "words", "blue-square" ], - "char": "\ud83c\udd92", - fitzpatrick_scale: false, - category: "symbols" - }, - "new": { - keywords: [ "blue-square", "words", "start" ], - "char": "\ud83c\udd95", - fitzpatrick_scale: false, - category: "symbols" - }, - free: { - keywords: [ "blue-square", "words" ], - "char": "\ud83c\udd93", - fitzpatrick_scale: false, - category: "symbols" - }, - zero: { - keywords: [ "0", "numbers", "blue-square", "null" ], - "char": "0\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - one: { - keywords: [ "blue-square", "numbers", "1" ], - "char": "1\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - two: { - keywords: [ "numbers", "2", "prime", "blue-square" ], - "char": "2\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - three: { - keywords: [ "3", "numbers", "prime", "blue-square" ], - "char": "3\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - four: { - keywords: [ "4", "numbers", "blue-square" ], - "char": "4\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - five: { - keywords: [ "5", "numbers", "blue-square", "prime" ], - "char": "5\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - six: { - keywords: [ "6", "numbers", "blue-square" ], - "char": "6\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - seven: { - keywords: [ "7", "numbers", "blue-square", "prime" ], - "char": "7\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - eight: { - keywords: [ "8", "blue-square", "numbers" ], - "char": "8\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - nine: { - keywords: [ "blue-square", "numbers", "9" ], - "char": "9\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - keycap_ten: { - keywords: [ "numbers", "10", "blue-square" ], - "char": "\ud83d\udd1f", - fitzpatrick_scale: false, - category: "symbols" - }, - asterisk: { - keywords: [ "star", "keycap" ], - "char": "*\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - 1234: { - keywords: [ "numbers", "blue-square" ], - "char": "\ud83d\udd22", - fitzpatrick_scale: false, - category: "symbols" - }, - eject_button: { - keywords: [ "blue-square" ], - "char": "\u23cf\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_forward: { - keywords: [ "blue-square", "right", "direction", "play" ], - "char": "\u25b6\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - pause_button: { - keywords: [ "pause", "blue-square" ], - "char": "\u23f8", - fitzpatrick_scale: false, - category: "symbols" - }, - next_track_button: { - keywords: [ "forward", "next", "blue-square" ], - "char": "\u23ed", - fitzpatrick_scale: false, - category: "symbols" - }, - stop_button: { - keywords: [ "blue-square" ], - "char": "\u23f9", - fitzpatrick_scale: false, - category: "symbols" - }, - record_button: { - keywords: [ "blue-square" ], - "char": "\u23fa", - fitzpatrick_scale: false, - category: "symbols" - }, - play_or_pause_button: { - keywords: [ "blue-square", "play", "pause" ], - "char": "\u23ef", - fitzpatrick_scale: false, - category: "symbols" - }, - previous_track_button: { - keywords: [ "backward" ], - "char": "\u23ee", - fitzpatrick_scale: false, - category: "symbols" - }, - fast_forward: { - keywords: [ "blue-square", "play", "speed", "continue" ], - "char": "\u23e9", - fitzpatrick_scale: false, - category: "symbols" - }, - rewind: { - keywords: [ "play", "blue-square" ], - "char": "\u23ea", - fitzpatrick_scale: false, - category: "symbols" - }, - twisted_rightwards_arrows: { - keywords: [ "blue-square", "shuffle", "music", "random" ], - "char": "\ud83d\udd00", - fitzpatrick_scale: false, - category: "symbols" - }, - repeat: { - keywords: [ "loop", "record" ], - "char": "\ud83d\udd01", - fitzpatrick_scale: false, - category: "symbols" - }, - repeat_one: { - keywords: [ "blue-square", "loop" ], - "char": "\ud83d\udd02", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_backward: { - keywords: [ "blue-square", "left", "direction" ], - "char": "\u25c0\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_up_small: { - keywords: [ "blue-square", "triangle", "direction", "point", "forward", "top" ], - "char": "\ud83d\udd3c", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_down_small: { - keywords: [ "blue-square", "direction", "bottom" ], - "char": "\ud83d\udd3d", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_double_up: { - keywords: [ "blue-square", "direction", "top" ], - "char": "\u23eb", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_double_down: { - keywords: [ "blue-square", "direction", "bottom" ], - "char": "\u23ec", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_right: { - keywords: [ "blue-square", "next" ], - "char": "\u27a1\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_left: { - keywords: [ "blue-square", "previous", "back" ], - "char": "\u2b05\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_up: { - keywords: [ "blue-square", "continue", "top", "direction" ], - "char": "\u2b06\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_down: { - keywords: [ "blue-square", "direction", "bottom" ], - "char": "\u2b07\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_upper_right: { - keywords: [ "blue-square", "point", "direction", "diagonal", "northeast" ], - "char": "\u2197\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_lower_right: { - keywords: [ "blue-square", "direction", "diagonal", "southeast" ], - "char": "\u2198\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_lower_left: { - keywords: [ "blue-square", "direction", "diagonal", "southwest" ], - "char": "\u2199\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_upper_left: { - keywords: [ "blue-square", "point", "direction", "diagonal", "northwest" ], - "char": "\u2196\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_up_down: { - keywords: [ "blue-square", "direction", "way", "vertical" ], - "char": "\u2195\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - left_right_arrow: { - keywords: [ "shape", "direction", "horizontal", "sideways" ], - "char": "\u2194\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrows_counterclockwise: { - keywords: [ "blue-square", "sync", "cycle" ], - "char": "\ud83d\udd04", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_right_hook: { - keywords: [ "blue-square", "return", "rotate", "direction" ], - "char": "\u21aa\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - leftwards_arrow_with_hook: { - keywords: [ "back", "return", "blue-square", "undo", "enter" ], - "char": "\u21a9\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_heading_up: { - keywords: [ "blue-square", "direction", "top" ], - "char": "\u2934\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrow_heading_down: { - keywords: [ "blue-square", "direction", "bottom" ], - "char": "\u2935\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - hash: { - keywords: [ "symbol", "blue-square", "twitter" ], - "char": "#\ufe0f\u20e3", - fitzpatrick_scale: false, - category: "symbols" - }, - information_source: { - keywords: [ "blue-square", "alphabet", "letter" ], - "char": "\u2139\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - abc: { - keywords: [ "blue-square", "alphabet" ], - "char": "\ud83d\udd24", - fitzpatrick_scale: false, - category: "symbols" - }, - abcd: { - keywords: [ "blue-square", "alphabet" ], - "char": "\ud83d\udd21", - fitzpatrick_scale: false, - category: "symbols" - }, - capital_abcd: { - keywords: [ "alphabet", "words", "blue-square" ], - "char": "\ud83d\udd20", - fitzpatrick_scale: false, - category: "symbols" - }, - symbols: { - keywords: [ "blue-square", "music", "note", "ampersand", "percent", "glyphs", "characters" ], - "char": "\ud83d\udd23", - fitzpatrick_scale: false, - category: "symbols" - }, - musical_note: { - keywords: [ "score", "tone", "sound" ], - "char": "\ud83c\udfb5", - fitzpatrick_scale: false, - category: "symbols" - }, - notes: { - keywords: [ "music", "score" ], - "char": "\ud83c\udfb6", - fitzpatrick_scale: false, - category: "symbols" - }, - wavy_dash: { - keywords: [ "draw", "line", "moustache", "mustache", "squiggle", "scribble" ], - "char": "\u3030\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - curly_loop: { - keywords: [ "scribble", "draw", "shape", "squiggle" ], - "char": "\u27b0", - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_check_mark: { - keywords: [ "ok", "nike", "answer", "yes", "tick" ], - "char": "\u2714\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - arrows_clockwise: { - keywords: [ "sync", "cycle", "round", "repeat" ], - "char": "\ud83d\udd03", - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_plus_sign: { - keywords: [ "math", "calculation", "addition", "more", "increase" ], - "char": "\u2795", - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_minus_sign: { - keywords: [ "math", "calculation", "subtract", "less" ], - "char": "\u2796", - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_division_sign: { - keywords: [ "divide", "math", "calculation" ], - "char": "\u2797", - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_multiplication_x: { - keywords: [ "math", "calculation" ], - "char": "\u2716\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - infinity: { - keywords: [ "forever" ], - "char": "\u267e", - fitzpatrick_scale: false, - category: "symbols" - }, - heavy_dollar_sign: { - keywords: [ "money", "sales", "payment", "currency", "buck" ], - "char": "\ud83d\udcb2", - fitzpatrick_scale: false, - category: "symbols" - }, - currency_exchange: { - keywords: [ "money", "sales", "dollar", "travel" ], - "char": "\ud83d\udcb1", - fitzpatrick_scale: false, - category: "symbols" - }, - copyright: { - keywords: [ "ip", "license", "circle", "law", "legal" ], - "char": "\xa9\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - registered: { - keywords: [ "alphabet", "circle" ], - "char": "\xae\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - tm: { - keywords: [ "trademark", "brand", "law", "legal" ], - "char": "\u2122\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - end: { - keywords: [ "words", "arrow" ], - "char": "\ud83d\udd1a", - fitzpatrick_scale: false, - category: "symbols" - }, - back: { - keywords: [ "arrow", "words", "return" ], - "char": "\ud83d\udd19", - fitzpatrick_scale: false, - category: "symbols" - }, - on: { - keywords: [ "arrow", "words" ], - "char": "\ud83d\udd1b", - fitzpatrick_scale: false, - category: "symbols" - }, - top: { - keywords: [ "words", "blue-square" ], - "char": "\ud83d\udd1d", - fitzpatrick_scale: false, - category: "symbols" - }, - soon: { - keywords: [ "arrow", "words" ], - "char": "\ud83d\udd1c", - fitzpatrick_scale: false, - category: "symbols" - }, - ballot_box_with_check: { - keywords: [ "ok", "agree", "confirm", "black-square", "vote", "election", "yes", "tick" ], - "char": "\u2611\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - radio_button: { - keywords: [ "input", "old", "music", "circle" ], - "char": "\ud83d\udd18", - fitzpatrick_scale: false, - category: "symbols" - }, - white_circle: { - keywords: [ "shape", "round" ], - "char": "\u26aa", - fitzpatrick_scale: false, - category: "symbols" - }, - black_circle: { - keywords: [ "shape", "button", "round" ], - "char": "\u26ab", - fitzpatrick_scale: false, - category: "symbols" - }, - red_circle: { - keywords: [ "shape", "error", "danger" ], - "char": "\ud83d\udd34", - fitzpatrick_scale: false, - category: "symbols" - }, - large_blue_circle: { - keywords: [ "shape", "icon", "button" ], - "char": "\ud83d\udd35", - fitzpatrick_scale: false, - category: "symbols" - }, - small_orange_diamond: { - keywords: [ "shape", "jewel", "gem" ], - "char": "\ud83d\udd38", - fitzpatrick_scale: false, - category: "symbols" - }, - small_blue_diamond: { - keywords: [ "shape", "jewel", "gem" ], - "char": "\ud83d\udd39", - fitzpatrick_scale: false, - category: "symbols" - }, - large_orange_diamond: { - keywords: [ "shape", "jewel", "gem" ], - "char": "\ud83d\udd36", - fitzpatrick_scale: false, - category: "symbols" - }, - large_blue_diamond: { - keywords: [ "shape", "jewel", "gem" ], - "char": "\ud83d\udd37", - fitzpatrick_scale: false, - category: "symbols" - }, - small_red_triangle: { - keywords: [ "shape", "direction", "up", "top" ], - "char": "\ud83d\udd3a", - fitzpatrick_scale: false, - category: "symbols" - }, - black_small_square: { - keywords: [ "shape", "icon" ], - "char": "\u25aa\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - white_small_square: { - keywords: [ "shape", "icon" ], - "char": "\u25ab\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - black_large_square: { - keywords: [ "shape", "icon", "button" ], - "char": "\u2b1b", - fitzpatrick_scale: false, - category: "symbols" - }, - white_large_square: { - keywords: [ "shape", "icon", "stone", "button" ], - "char": "\u2b1c", - fitzpatrick_scale: false, - category: "symbols" - }, - small_red_triangle_down: { - keywords: [ "shape", "direction", "bottom" ], - "char": "\ud83d\udd3b", - fitzpatrick_scale: false, - category: "symbols" - }, - black_medium_square: { - keywords: [ "shape", "button", "icon" ], - "char": "\u25fc\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - white_medium_square: { - keywords: [ "shape", "stone", "icon" ], - "char": "\u25fb\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - black_medium_small_square: { - keywords: [ "icon", "shape", "button" ], - "char": "\u25fe", - fitzpatrick_scale: false, - category: "symbols" - }, - white_medium_small_square: { - keywords: [ "shape", "stone", "icon", "button" ], - "char": "\u25fd", - fitzpatrick_scale: false, - category: "symbols" - }, - black_square_button: { - keywords: [ "shape", "input", "frame" ], - "char": "\ud83d\udd32", - fitzpatrick_scale: false, - category: "symbols" - }, - white_square_button: { - keywords: [ "shape", "input" ], - "char": "\ud83d\udd33", - fitzpatrick_scale: false, - category: "symbols" - }, - speaker: { - keywords: [ "sound", "volume", "silence", "broadcast" ], - "char": "\ud83d\udd08", - fitzpatrick_scale: false, - category: "symbols" - }, - sound: { - keywords: [ "volume", "speaker", "broadcast" ], - "char": "\ud83d\udd09", - fitzpatrick_scale: false, - category: "symbols" - }, - loud_sound: { - keywords: [ "volume", "noise", "noisy", "speaker", "broadcast" ], - "char": "\ud83d\udd0a", - fitzpatrick_scale: false, - category: "symbols" - }, - mute: { - keywords: [ "sound", "volume", "silence", "quiet" ], - "char": "\ud83d\udd07", - fitzpatrick_scale: false, - category: "symbols" - }, - mega: { - keywords: [ "sound", "speaker", "volume" ], - "char": "\ud83d\udce3", - fitzpatrick_scale: false, - category: "symbols" - }, - loudspeaker: { - keywords: [ "volume", "sound" ], - "char": "\ud83d\udce2", - fitzpatrick_scale: false, - category: "symbols" - }, - bell: { - keywords: [ "sound", "notification", "christmas", "xmas", "chime" ], - "char": "\ud83d\udd14", - fitzpatrick_scale: false, - category: "symbols" - }, - no_bell: { - keywords: [ "sound", "volume", "mute", "quiet", "silent" ], - "char": "\ud83d\udd15", - fitzpatrick_scale: false, - category: "symbols" - }, - black_joker: { - keywords: [ "poker", "cards", "game", "play", "magic" ], - "char": "\ud83c\udccf", - fitzpatrick_scale: false, - category: "symbols" - }, - mahjong: { - keywords: [ "game", "play", "chinese", "kanji" ], - "char": "\ud83c\udc04", - fitzpatrick_scale: false, - category: "symbols" - }, - spades: { - keywords: [ "poker", "cards", "suits", "magic" ], - "char": "\u2660\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - clubs: { - keywords: [ "poker", "cards", "magic", "suits" ], - "char": "\u2663\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - hearts: { - keywords: [ "poker", "cards", "magic", "suits" ], - "char": "\u2665\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - diamonds: { - keywords: [ "poker", "cards", "magic", "suits" ], - "char": "\u2666\ufe0f", - fitzpatrick_scale: false, - category: "symbols" - }, - flower_playing_cards: { - keywords: [ "game", "sunset", "red" ], - "char": "\ud83c\udfb4", - fitzpatrick_scale: false, - category: "symbols" - }, - thought_balloon: { - keywords: [ "bubble", "cloud", "speech", "thinking", "dream" ], - "char": "\ud83d\udcad", - fitzpatrick_scale: false, - category: "symbols" - }, - right_anger_bubble: { - keywords: [ "caption", "speech", "thinking", "mad" ], - "char": "\ud83d\uddef", - fitzpatrick_scale: false, - category: "symbols" - }, - speech_balloon: { - keywords: [ "bubble", "words", "message", "talk", "chatting" ], - "char": "\ud83d\udcac", - fitzpatrick_scale: false, - category: "symbols" - }, - left_speech_bubble: { - keywords: [ "words", "message", "talk", "chatting" ], - "char": "\ud83d\udde8", - fitzpatrick_scale: false, - category: "symbols" - }, - clock1: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd50", - fitzpatrick_scale: false, - category: "symbols" - }, - clock2: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd51", - fitzpatrick_scale: false, - category: "symbols" - }, - clock3: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd52", - fitzpatrick_scale: false, - category: "symbols" - }, - clock4: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd53", - fitzpatrick_scale: false, - category: "symbols" - }, - clock5: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd54", - fitzpatrick_scale: false, - category: "symbols" - }, - clock6: { - keywords: [ "time", "late", "early", "schedule", "dawn", "dusk" ], - "char": "\ud83d\udd55", - fitzpatrick_scale: false, - category: "symbols" - }, - clock7: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd56", - fitzpatrick_scale: false, - category: "symbols" - }, - clock8: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd57", - fitzpatrick_scale: false, - category: "symbols" - }, - clock9: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd58", - fitzpatrick_scale: false, - category: "symbols" - }, - clock10: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd59", - fitzpatrick_scale: false, - category: "symbols" - }, - clock11: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd5a", - fitzpatrick_scale: false, - category: "symbols" - }, - clock12: { - keywords: [ "time", "noon", "midnight", "midday", "late", "early", "schedule" ], - "char": "\ud83d\udd5b", - fitzpatrick_scale: false, - category: "symbols" - }, - clock130: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd5c", - fitzpatrick_scale: false, - category: "symbols" - }, - clock230: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd5d", - fitzpatrick_scale: false, - category: "symbols" - }, - clock330: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd5e", - fitzpatrick_scale: false, - category: "symbols" - }, - clock430: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd5f", - fitzpatrick_scale: false, - category: "symbols" - }, - clock530: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd60", - fitzpatrick_scale: false, - category: "symbols" - }, - clock630: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd61", - fitzpatrick_scale: false, - category: "symbols" - }, - clock730: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd62", - fitzpatrick_scale: false, - category: "symbols" - }, - clock830: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd63", - fitzpatrick_scale: false, - category: "symbols" - }, - clock930: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd64", - fitzpatrick_scale: false, - category: "symbols" - }, - clock1030: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd65", - fitzpatrick_scale: false, - category: "symbols" - }, - clock1130: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd66", - fitzpatrick_scale: false, - category: "symbols" - }, - clock1230: { - keywords: [ "time", "late", "early", "schedule" ], - "char": "\ud83d\udd67", - fitzpatrick_scale: false, - category: "symbols" - }, - afghanistan: { - keywords: [ "af", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - aland_islands: { - keywords: [ "\xc5land", "islands", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\uddfd", - fitzpatrick_scale: false, - category: "flags" - }, - albania: { - keywords: [ "al", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - algeria: { - keywords: [ "dz", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde9\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - american_samoa: { - keywords: [ "american", "ws", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - andorra: { - keywords: [ "ad", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - angola: { - keywords: [ "ao", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - anguilla: { - keywords: [ "ai", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - antarctica: { - keywords: [ "aq", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\uddf6", - fitzpatrick_scale: false, - category: "flags" - }, - antigua_barbuda: { - keywords: [ "antigua", "barbuda", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - argentina: { - keywords: [ "ar", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - armenia: { - keywords: [ "am", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - aruba: { - keywords: [ "aw", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - australia: { - keywords: [ "au", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - austria: { - keywords: [ "at", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - azerbaijan: { - keywords: [ "az", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - bahamas: { - keywords: [ "bs", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - bahrain: { - keywords: [ "bh", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - bangladesh: { - keywords: [ "bd", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - barbados: { - keywords: [ "bb", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\udde7", - fitzpatrick_scale: false, - category: "flags" - }, - belarus: { - keywords: [ "by", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - belgium: { - keywords: [ "be", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - belize: { - keywords: [ "bz", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - benin: { - keywords: [ "bj", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddef", - fitzpatrick_scale: false, - category: "flags" - }, - bermuda: { - keywords: [ "bm", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - bhutan: { - keywords: [ "bt", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - bolivia: { - keywords: [ "bo", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - caribbean_netherlands: { - keywords: [ "bonaire", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddf6", - fitzpatrick_scale: false, - category: "flags" - }, - bosnia_herzegovina: { - keywords: [ "bosnia", "herzegovina", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - botswana: { - keywords: [ "bw", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - brazil: { - keywords: [ "br", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - british_indian_ocean_territory: { - keywords: [ "british", "indian", "ocean", "territory", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddee\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - british_virgin_islands: { - keywords: [ "british", "virgin", "islands", "bvi", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfb\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - brunei: { - keywords: [ "bn", "darussalam", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - bulgaria: { - keywords: [ "bg", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - burkina_faso: { - keywords: [ "burkina", "faso", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - burundi: { - keywords: [ "bi", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - cape_verde: { - keywords: [ "cabo", "verde", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\uddfb", - fitzpatrick_scale: false, - category: "flags" - }, - cambodia: { - keywords: [ "kh", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf0\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - cameroon: { - keywords: [ "cm", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - canada: { - keywords: [ "ca", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - canary_islands: { - keywords: [ "canary", "islands", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddee\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - cayman_islands: { - keywords: [ "cayman", "islands", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf0\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - central_african_republic: { - keywords: [ "central", "african", "republic", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - chad: { - keywords: [ "td", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - chile: { - keywords: [ "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - cn: { - keywords: [ "china", "chinese", "prc", "flag", "country", "nation", "banner" ], - "char": "\ud83c\udde8\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - christmas_island: { - keywords: [ "christmas", "island", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\uddfd", - fitzpatrick_scale: false, - category: "flags" - }, - cocos_islands: { - keywords: [ "cocos", "keeling", "islands", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - colombia: { - keywords: [ "co", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - comoros: { - keywords: [ "km", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf0\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - congo_brazzaville: { - keywords: [ "congo", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - congo_kinshasa: { - keywords: [ "congo", "democratic", "republic", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - cook_islands: { - keywords: [ "cook", "islands", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - costa_rica: { - keywords: [ "costa", "rica", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - croatia: { - keywords: [ "hr", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udded\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - cuba: { - keywords: [ "cu", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - curacao: { - keywords: [ "cura\xe7ao", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - cyprus: { - keywords: [ "cy", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - czech_republic: { - keywords: [ "cz", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - denmark: { - keywords: [ "dk", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde9\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - djibouti: { - keywords: [ "dj", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde9\ud83c\uddef", - fitzpatrick_scale: false, - category: "flags" - }, - dominica: { - keywords: [ "dm", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde9\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - dominican_republic: { - keywords: [ "dominican", "republic", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde9\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - ecuador: { - keywords: [ "ec", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddea\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - egypt: { - keywords: [ "eg", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddea\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - el_salvador: { - keywords: [ "el", "salvador", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\uddfb", - fitzpatrick_scale: false, - category: "flags" - }, - equatorial_guinea: { - keywords: [ "equatorial", "gn", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\uddf6", - fitzpatrick_scale: false, - category: "flags" - }, - eritrea: { - keywords: [ "er", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddea\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - estonia: { - keywords: [ "ee", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddea\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - ethiopia: { - keywords: [ "et", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddea\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - eu: { - keywords: [ "european", "union", "flag", "banner" ], - "char": "\ud83c\uddea\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - falkland_islands: { - keywords: [ "falkland", "islands", "malvinas", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddeb\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - faroe_islands: { - keywords: [ "faroe", "islands", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddeb\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - fiji: { - keywords: [ "fj", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddeb\ud83c\uddef", - fitzpatrick_scale: false, - category: "flags" - }, - finland: { - keywords: [ "fi", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddeb\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - fr: { - keywords: [ "banner", "flag", "nation", "france", "french", "country" ], - "char": "\ud83c\uddeb\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - french_guiana: { - keywords: [ "french", "guiana", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - french_polynesia: { - keywords: [ "french", "polynesia", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf5\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - french_southern_territories: { - keywords: [ "french", "southern", "territories", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - gabon: { - keywords: [ "ga", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - gambia: { - keywords: [ "gm", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - georgia: { - keywords: [ "ge", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - de: { - keywords: [ "german", "nation", "flag", "country", "banner" ], - "char": "\ud83c\udde9\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - ghana: { - keywords: [ "gh", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - gibraltar: { - keywords: [ "gi", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - greece: { - keywords: [ "gr", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - greenland: { - keywords: [ "gl", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - grenada: { - keywords: [ "gd", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - guadeloupe: { - keywords: [ "gp", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\uddf5", - fitzpatrick_scale: false, - category: "flags" - }, - guam: { - keywords: [ "gu", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - guatemala: { - keywords: [ "gt", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - guernsey: { - keywords: [ "gg", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - guinea: { - keywords: [ "gn", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - guinea_bissau: { - keywords: [ "gw", "bissau", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - guyana: { - keywords: [ "gy", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - haiti: { - keywords: [ "ht", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udded\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - honduras: { - keywords: [ "hn", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udded\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - hong_kong: { - keywords: [ "hong", "kong", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udded\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - hungary: { - keywords: [ "hu", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udded\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - iceland: { - keywords: [ "is", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddee\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - india: { - keywords: [ "in", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddee\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - indonesia: { - keywords: [ "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddee\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - iran: { - keywords: [ "iran,", "islamic", "republic", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddee\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - iraq: { - keywords: [ "iq", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddee\ud83c\uddf6", - fitzpatrick_scale: false, - category: "flags" - }, - ireland: { - keywords: [ "ie", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddee\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - isle_of_man: { - keywords: [ "isle", "man", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddee\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - israel: { - keywords: [ "il", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddee\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - it: { - keywords: [ "italy", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddee\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - cote_divoire: { - keywords: [ "ivory", "coast", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - jamaica: { - keywords: [ "jm", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddef\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - jp: { - keywords: [ "japanese", "nation", "flag", "country", "banner" ], - "char": "\ud83c\uddef\ud83c\uddf5", - fitzpatrick_scale: false, - category: "flags" - }, - jersey: { - keywords: [ "je", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddef\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - jordan: { - keywords: [ "jo", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddef\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - kazakhstan: { - keywords: [ "kz", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf0\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - kenya: { - keywords: [ "ke", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf0\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - kiribati: { - keywords: [ "ki", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf0\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - kosovo: { - keywords: [ "xk", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfd\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - kuwait: { - keywords: [ "kw", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf0\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - kyrgyzstan: { - keywords: [ "kg", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf0\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - laos: { - keywords: [ "lao", "democratic", "republic", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf1\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - latvia: { - keywords: [ "lv", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf1\ud83c\uddfb", - fitzpatrick_scale: false, - category: "flags" - }, - lebanon: { - keywords: [ "lb", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf1\ud83c\udde7", - fitzpatrick_scale: false, - category: "flags" - }, - lesotho: { - keywords: [ "ls", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf1\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - liberia: { - keywords: [ "lr", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf1\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - libya: { - keywords: [ "ly", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf1\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - liechtenstein: { - keywords: [ "li", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf1\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - lithuania: { - keywords: [ "lt", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf1\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - luxembourg: { - keywords: [ "lu", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf1\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - macau: { - keywords: [ "macao", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - macedonia: { - keywords: [ "macedonia,", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - madagascar: { - keywords: [ "mg", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - malawi: { - keywords: [ "mw", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - malaysia: { - keywords: [ "my", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - maldives: { - keywords: [ "mv", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddfb", - fitzpatrick_scale: false, - category: "flags" - }, - mali: { - keywords: [ "ml", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - malta: { - keywords: [ "mt", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - marshall_islands: { - keywords: [ "marshall", "islands", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - martinique: { - keywords: [ "mq", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddf6", - fitzpatrick_scale: false, - category: "flags" - }, - mauritania: { - keywords: [ "mr", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - mauritius: { - keywords: [ "mu", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - mayotte: { - keywords: [ "yt", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfe\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - mexico: { - keywords: [ "mx", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddfd", - fitzpatrick_scale: false, - category: "flags" - }, - micronesia: { - keywords: [ "micronesia,", "federated", "states", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddeb\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - moldova: { - keywords: [ "moldova,", "republic", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - monaco: { - keywords: [ "mc", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - mongolia: { - keywords: [ "mn", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - montenegro: { - keywords: [ "me", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - montserrat: { - keywords: [ "ms", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - morocco: { - keywords: [ "ma", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - mozambique: { - keywords: [ "mz", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - myanmar: { - keywords: [ "mm", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - namibia: { - keywords: [ "na", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf3\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - nauru: { - keywords: [ "nr", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf3\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - nepal: { - keywords: [ "np", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf3\ud83c\uddf5", - fitzpatrick_scale: false, - category: "flags" - }, - netherlands: { - keywords: [ "nl", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf3\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - new_caledonia: { - keywords: [ "new", "caledonia", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf3\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - new_zealand: { - keywords: [ "new", "zealand", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf3\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - nicaragua: { - keywords: [ "ni", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf3\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - niger: { - keywords: [ "ne", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf3\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - nigeria: { - keywords: [ "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf3\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - niue: { - keywords: [ "nu", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf3\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - norfolk_island: { - keywords: [ "norfolk", "island", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf3\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - northern_mariana_islands: { - keywords: [ "northern", "mariana", "islands", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf2\ud83c\uddf5", - fitzpatrick_scale: false, - category: "flags" - }, - north_korea: { - keywords: [ "north", "korea", "nation", "flag", "country", "banner" ], - "char": "\ud83c\uddf0\ud83c\uddf5", - fitzpatrick_scale: false, - category: "flags" - }, - norway: { - keywords: [ "no", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf3\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - oman: { - keywords: [ "om_symbol", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf4\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - pakistan: { - keywords: [ "pk", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf5\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - palau: { - keywords: [ "pw", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf5\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - palestinian_territories: { - keywords: [ "palestine", "palestinian", "territories", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf5\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - panama: { - keywords: [ "pa", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf5\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - papua_new_guinea: { - keywords: [ "papua", "new", "guinea", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf5\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - paraguay: { - keywords: [ "py", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf5\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - peru: { - keywords: [ "pe", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf5\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - philippines: { - keywords: [ "ph", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf5\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - pitcairn_islands: { - keywords: [ "pitcairn", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf5\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - poland: { - keywords: [ "pl", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf5\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - portugal: { - keywords: [ "pt", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf5\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - puerto_rico: { - keywords: [ "puerto", "rico", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf5\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - qatar: { - keywords: [ "qa", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf6\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - reunion: { - keywords: [ "r\xe9union", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf7\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - romania: { - keywords: [ "ro", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf7\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - ru: { - keywords: [ "russian", "federation", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf7\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - rwanda: { - keywords: [ "rw", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf7\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - st_barthelemy: { - keywords: [ "saint", "barth\xe9lemy", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde7\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - st_helena: { - keywords: [ "saint", "helena", "ascension", "tristan", "cunha", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - st_kitts_nevis: { - keywords: [ "saint", "kitts", "nevis", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf0\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - st_lucia: { - keywords: [ "saint", "lucia", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf1\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - st_pierre_miquelon: { - keywords: [ "saint", "pierre", "miquelon", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf5\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - st_vincent_grenadines: { - keywords: [ "saint", "vincent", "grenadines", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfb\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - samoa: { - keywords: [ "ws", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfc\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - san_marino: { - keywords: [ "san", "marino", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - sao_tome_principe: { - keywords: [ "sao", "tome", "principe", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - saudi_arabia: { - keywords: [ "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - senegal: { - keywords: [ "sn", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - serbia: { - keywords: [ "rs", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf7\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - seychelles: { - keywords: [ "sc", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - sierra_leone: { - keywords: [ "sierra", "leone", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - singapore: { - keywords: [ "sg", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - sint_maarten: { - keywords: [ "sint", "maarten", "dutch", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\uddfd", - fitzpatrick_scale: false, - category: "flags" - }, - slovakia: { - keywords: [ "sk", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - slovenia: { - keywords: [ "si", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - solomon_islands: { - keywords: [ "solomon", "islands", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\udde7", - fitzpatrick_scale: false, - category: "flags" - }, - somalia: { - keywords: [ "so", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - south_africa: { - keywords: [ "south", "africa", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddff\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - south_georgia_south_sandwich_islands: { - keywords: [ "south", "georgia", "sandwich", "islands", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddec\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - kr: { - keywords: [ "south", "korea", "nation", "flag", "country", "banner" ], - "char": "\ud83c\uddf0\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - south_sudan: { - keywords: [ "south", "sd", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - es: { - keywords: [ "spain", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddea\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - sri_lanka: { - keywords: [ "sri", "lanka", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf1\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - sudan: { - keywords: [ "sd", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\udde9", - fitzpatrick_scale: false, - category: "flags" - }, - suriname: { - keywords: [ "sr", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - swaziland: { - keywords: [ "sz", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - sweden: { - keywords: [ "se", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - switzerland: { - keywords: [ "ch", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde8\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - syria: { - keywords: [ "syrian", "arab", "republic", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf8\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - taiwan: { - keywords: [ "tw", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - tajikistan: { - keywords: [ "tj", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\uddef", - fitzpatrick_scale: false, - category: "flags" - }, - tanzania: { - keywords: [ "tanzania,", "united", "republic", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - thailand: { - keywords: [ "th", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - timor_leste: { - keywords: [ "timor", "leste", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\uddf1", - fitzpatrick_scale: false, - category: "flags" - }, - togo: { - keywords: [ "tg", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - tokelau: { - keywords: [ "tk", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\uddf0", - fitzpatrick_scale: false, - category: "flags" - }, - tonga: { - keywords: [ "to", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\uddf4", - fitzpatrick_scale: false, - category: "flags" - }, - trinidad_tobago: { - keywords: [ "trinidad", "tobago", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\uddf9", - fitzpatrick_scale: false, - category: "flags" - }, - tunisia: { - keywords: [ "tn", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - tr: { - keywords: [ "turkey", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\uddf7", - fitzpatrick_scale: false, - category: "flags" - }, - turkmenistan: { - keywords: [ "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - turks_caicos_islands: { - keywords: [ "turks", "caicos", "islands", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\udde8", - fitzpatrick_scale: false, - category: "flags" - }, - tuvalu: { - keywords: [ "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddf9\ud83c\uddfb", - fitzpatrick_scale: false, - category: "flags" - }, - uganda: { - keywords: [ "ug", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfa\ud83c\uddec", - fitzpatrick_scale: false, - category: "flags" - }, - ukraine: { - keywords: [ "ua", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfa\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - united_arab_emirates: { - keywords: [ "united", "arab", "emirates", "flag", "nation", "country", "banner" ], - "char": "\ud83c\udde6\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - uk: { - keywords: [ "united", "kingdom", "great", "britain", "northern", "ireland", "flag", "nation", "country", "banner", "british", "UK", "english", "england", "union jack" ], - "char": "\ud83c\uddec\ud83c\udde7", - fitzpatrick_scale: false, - category: "flags" - }, - england: { - keywords: [ "flag", "english" ], - "char": "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f", - fitzpatrick_scale: false, - category: "flags" - }, - scotland: { - keywords: [ "flag", "scottish" ], - "char": "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f", - fitzpatrick_scale: false, - category: "flags" - }, - wales: { - keywords: [ "flag", "welsh" ], - "char": "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f", - fitzpatrick_scale: false, - category: "flags" - }, - us: { - keywords: [ "united", "states", "america", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfa\ud83c\uddf8", - fitzpatrick_scale: false, - category: "flags" - }, - us_virgin_islands: { - keywords: [ "virgin", "islands", "us", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfb\ud83c\uddee", - fitzpatrick_scale: false, - category: "flags" - }, - uruguay: { - keywords: [ "uy", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfa\ud83c\uddfe", - fitzpatrick_scale: false, - category: "flags" - }, - uzbekistan: { - keywords: [ "uz", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfa\ud83c\uddff", - fitzpatrick_scale: false, - category: "flags" - }, - vanuatu: { - keywords: [ "vu", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfb\ud83c\uddfa", - fitzpatrick_scale: false, - category: "flags" - }, - vatican_city: { - keywords: [ "vatican", "city", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfb\ud83c\udde6", - fitzpatrick_scale: false, - category: "flags" - }, - venezuela: { - keywords: [ "ve", "bolivarian", "republic", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfb\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - vietnam: { - keywords: [ "viet", "nam", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfb\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - wallis_futuna: { - keywords: [ "wallis", "futuna", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfc\ud83c\uddeb", - fitzpatrick_scale: false, - category: "flags" - }, - western_sahara: { - keywords: [ "western", "sahara", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddea\ud83c\udded", - fitzpatrick_scale: false, - category: "flags" - }, - yemen: { - keywords: [ "ye", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddfe\ud83c\uddea", - fitzpatrick_scale: false, - category: "flags" - }, - zambia: { - keywords: [ "zm", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddff\ud83c\uddf2", - fitzpatrick_scale: false, - category: "flags" - }, - zimbabwe: { - keywords: [ "zw", "flag", "nation", "country", "banner" ], - "char": "\ud83c\uddff\ud83c\uddfc", - fitzpatrick_scale: false, - category: "flags" - }, - united_nations: { - keywords: [ "un", "flag", "banner" ], - "char": "\ud83c\uddfa\ud83c\uddf3", - fitzpatrick_scale: false, - category: "flags" - }, - pirate_flag: { - keywords: [ "skull", "crossbones", "flag", "banner" ], - "char": "\ud83c\udff4\u200d\u2620\ufe0f", - fitzpatrick_scale: false, - category: "flags" - } -}); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/emoticons/js/emojis.min.js b/component/pear/module/tinymce/tinymce/plugins/emoticons/js/emojis.min.js deleted file mode 100644 index 8295d5a..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/emoticons/js/emojis.min.js +++ /dev/null @@ -1,2 +0,0 @@ -// Source: npm package: emojilib, file:emojis.json -window.tinymce.Resource.add("tinymce.plugins.emoticons",{grinning:{keywords:["face","smile","happy","joy",":D","grin"],"char":"\ud83d\ude00",fitzpatrick_scale:!1,category:"people"},grimacing:{keywords:["face","grimace","teeth"],"char":"\ud83d\ude2c",fitzpatrick_scale:!1,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],"char":"\ud83d\ude01",fitzpatrick_scale:!1,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],"char":"\ud83d\ude02",fitzpatrick_scale:!1,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],"char":"\ud83e\udd23",fitzpatrick_scale:!1,category:"people"},partying:{keywords:["face","celebration","woohoo"],"char":"\ud83e\udd73",fitzpatrick_scale:!1,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],"char":"\ud83d\ude03",fitzpatrick_scale:!1,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],"char":"\ud83d\ude04",fitzpatrick_scale:!1,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],"char":"\ud83d\ude05",fitzpatrick_scale:!1,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],"char":"\ud83d\ude06",fitzpatrick_scale:!1,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],"char":"\ud83d\ude07",fitzpatrick_scale:!1,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],"char":"\ud83d\ude09",fitzpatrick_scale:!1,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],"char":"\ud83d\ude0a",fitzpatrick_scale:!1,category:"people"},slightly_smiling_face:{keywords:["face","smile"],"char":"\ud83d\ude42",fitzpatrick_scale:!1,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],"char":"\ud83d\ude43",fitzpatrick_scale:!1,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],"char":"\u263a\ufe0f",fitzpatrick_scale:!1,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],"char":"\ud83d\ude0b",fitzpatrick_scale:!1,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],"char":"\ud83d\ude0c",fitzpatrick_scale:!1,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],"char":"\ud83d\ude0d",fitzpatrick_scale:!1,category:"people"},smiling_face_with_three_hearts:{keywords:["face","love","like","affection","valentines","infatuation","crush","hearts","adore"],"char":"\ud83e\udd70",fitzpatrick_scale:!1,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude18",fitzpatrick_scale:!1,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],"char":"\ud83d\ude17",fitzpatrick_scale:!1,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude19",fitzpatrick_scale:!1,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude1a",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],"char":"\ud83d\ude1c",fitzpatrick_scale:!1,category:"people"},zany:{keywords:["face","goofy","crazy"],"char":"\ud83e\udd2a",fitzpatrick_scale:!1,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],"char":"\ud83e\udd28",fitzpatrick_scale:!1,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],"char":"\ud83e\uddd0",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],"char":"\ud83d\ude1d",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],"char":"\ud83d\ude1b",fitzpatrick_scale:!1,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],"char":"\ud83e\udd11",fitzpatrick_scale:!1,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],"char":"\ud83e\udd13",fitzpatrick_scale:!1,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],"char":"\ud83d\ude0e",fitzpatrick_scale:!1,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],"char":"\ud83e\udd29",fitzpatrick_scale:!1,category:"people"},clown_face:{keywords:["face"],"char":"\ud83e\udd21",fitzpatrick_scale:!1,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],"char":"\ud83e\udd20",fitzpatrick_scale:!1,category:"people"},hugs:{keywords:["face","smile","hug"],"char":"\ud83e\udd17",fitzpatrick_scale:!1,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],"char":"\ud83d\ude0f",fitzpatrick_scale:!1,category:"people"},no_mouth:{keywords:["face","hellokitty"],"char":"\ud83d\ude36",fitzpatrick_scale:!1,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],"char":"\ud83d\ude10",fitzpatrick_scale:!1,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],"char":"\ud83d\ude11",fitzpatrick_scale:!1,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],"char":"\ud83d\ude12",fitzpatrick_scale:!1,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],"char":"\ud83d\ude44",fitzpatrick_scale:!1,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],"char":"\ud83e\udd14",fitzpatrick_scale:!1,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],"char":"\ud83e\udd25",fitzpatrick_scale:!1,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],"char":"\ud83e\udd2d",fitzpatrick_scale:!1,category:"people"},shushing:{keywords:["face","quiet","shhh"],"char":"\ud83e\udd2b",fitzpatrick_scale:!1,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],"char":"\ud83e\udd2c",fitzpatrick_scale:!1,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],"char":"\ud83e\udd2f",fitzpatrick_scale:!1,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],"char":"\ud83d\ude33",fitzpatrick_scale:!1,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],"char":"\ud83d\ude1e",fitzpatrick_scale:!1,category:"people"},worried:{keywords:["face","concern","nervous",":("],"char":"\ud83d\ude1f",fitzpatrick_scale:!1,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],"char":"\ud83d\ude20",fitzpatrick_scale:!1,category:"people"},rage:{keywords:["angry","mad","hate","despise"],"char":"\ud83d\ude21",fitzpatrick_scale:!1,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],"char":"\ud83d\ude14",fitzpatrick_scale:!1,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],"char":"\ud83d\ude15",fitzpatrick_scale:!1,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],"char":"\ud83d\ude41",fitzpatrick_scale:!1,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],"char":"\u2639",fitzpatrick_scale:!1,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],"char":"\ud83d\ude23",fitzpatrick_scale:!1,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],"char":"\ud83d\ude16",fitzpatrick_scale:!1,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],"char":"\ud83d\ude2b",fitzpatrick_scale:!1,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],"char":"\ud83d\ude29",fitzpatrick_scale:!1,category:"people"},pleading:{keywords:["face","begging","mercy"],"char":"\ud83e\udd7a",fitzpatrick_scale:!1,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],"char":"\ud83d\ude24",fitzpatrick_scale:!1,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],"char":"\ud83d\ude2e",fitzpatrick_scale:!1,category:"people"},scream:{keywords:["face","munch","scared","omg"],"char":"\ud83d\ude31",fitzpatrick_scale:!1,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],"char":"\ud83d\ude28",fitzpatrick_scale:!1,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],"char":"\ud83d\ude30",fitzpatrick_scale:!1,category:"people"},hushed:{keywords:["face","woo","shh"],"char":"\ud83d\ude2f",fitzpatrick_scale:!1,category:"people"},frowning:{keywords:["face","aw","what"],"char":"\ud83d\ude26",fitzpatrick_scale:!1,category:"people"},anguished:{keywords:["face","stunned","nervous"],"char":"\ud83d\ude27",fitzpatrick_scale:!1,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],"char":"\ud83d\ude22",fitzpatrick_scale:!1,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],"char":"\ud83d\ude25",fitzpatrick_scale:!1,category:"people"},drooling_face:{keywords:["face"],"char":"\ud83e\udd24",fitzpatrick_scale:!1,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],"char":"\ud83d\ude2a",fitzpatrick_scale:!1,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],"char":"\ud83d\ude13",fitzpatrick_scale:!1,category:"people"},hot:{keywords:["face","feverish","heat","red","sweating"],"char":"\ud83e\udd75",fitzpatrick_scale:!1,category:"people"},cold:{keywords:["face","blue","freezing","frozen","frostbite","icicles"],"char":"\ud83e\udd76",fitzpatrick_scale:!1,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],"char":"\ud83d\ude2d",fitzpatrick_scale:!1,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],"char":"\ud83d\ude35",fitzpatrick_scale:!1,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],"char":"\ud83d\ude32",fitzpatrick_scale:!1,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],"char":"\ud83e\udd10",fitzpatrick_scale:!1,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],"char":"\ud83e\udd22",fitzpatrick_scale:!1,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],"char":"\ud83e\udd27",fitzpatrick_scale:!1,category:"people"},vomiting:{keywords:["face","sick"],"char":"\ud83e\udd2e",fitzpatrick_scale:!1,category:"people"},mask:{keywords:["face","sick","ill","disease"],"char":"\ud83d\ude37",fitzpatrick_scale:!1,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],"char":"\ud83e\udd12",fitzpatrick_scale:!1,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],"char":"\ud83e\udd15",fitzpatrick_scale:!1,category:"people"},woozy:{keywords:["face","dizzy","intoxicated","tipsy","wavy"],"char":"\ud83e\udd74",fitzpatrick_scale:!1,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],"char":"\ud83d\ude34",fitzpatrick_scale:!1,category:"people"},zzz:{keywords:["sleepy","tired","dream"],"char":"\ud83d\udca4",fitzpatrick_scale:!1,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],"char":"\ud83d\udca9",fitzpatrick_scale:!1,category:"people"},smiling_imp:{keywords:["devil","horns"],"char":"\ud83d\ude08",fitzpatrick_scale:!1,category:"people"},imp:{keywords:["devil","angry","horns"],"char":"\ud83d\udc7f",fitzpatrick_scale:!1,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],"char":"\ud83d\udc79",fitzpatrick_scale:!1,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],"char":"\ud83d\udc7a",fitzpatrick_scale:!1,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],"char":"\ud83d\udc80",fitzpatrick_scale:!1,category:"people"},ghost:{keywords:["halloween","spooky","scary"],"char":"\ud83d\udc7b",fitzpatrick_scale:!1,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],"char":"\ud83d\udc7d",fitzpatrick_scale:!1,category:"people"},robot:{keywords:["computer","machine","bot"],"char":"\ud83e\udd16",fitzpatrick_scale:!1,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],"char":"\ud83d\ude3a",fitzpatrick_scale:!1,category:"people"},smile_cat:{keywords:["animal","cats","smile"],"char":"\ud83d\ude38",fitzpatrick_scale:!1,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],"char":"\ud83d\ude39",fitzpatrick_scale:!1,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],"char":"\ud83d\ude3b",fitzpatrick_scale:!1,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],"char":"\ud83d\ude3c",fitzpatrick_scale:!1,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],"char":"\ud83d\ude3d",fitzpatrick_scale:!1,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],"char":"\ud83d\ude40",fitzpatrick_scale:!1,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],"char":"\ud83d\ude3f",fitzpatrick_scale:!1,category:"people"},pouting_cat:{keywords:["animal","cats"],"char":"\ud83d\ude3e",fitzpatrick_scale:!1,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],"char":"\ud83e\udd32",fitzpatrick_scale:!0,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],"char":"\ud83d\ude4c",fitzpatrick_scale:!0,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],"char":"\ud83d\udc4f",fitzpatrick_scale:!0,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],"char":"\ud83d\udc4b",fitzpatrick_scale:!0,category:"people"},call_me_hand:{keywords:["hands","gesture"],"char":"\ud83e\udd19",fitzpatrick_scale:!0,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],"char":"\ud83d\udc4d",fitzpatrick_scale:!0,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],"char":"\ud83d\udc4e",fitzpatrick_scale:!0,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],"char":"\ud83d\udc4a",fitzpatrick_scale:!0,category:"people"},fist:{keywords:["fingers","hand","grasp"],"char":"\u270a",fitzpatrick_scale:!0,category:"people"},fist_left:{keywords:["hand","fistbump"],"char":"\ud83e\udd1b",fitzpatrick_scale:!0,category:"people"},fist_right:{keywords:["hand","fistbump"],"char":"\ud83e\udd1c",fitzpatrick_scale:!0,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],"char":"\u270c",fitzpatrick_scale:!0,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],"char":"\ud83d\udc4c",fitzpatrick_scale:!0,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],"char":"\u270b",fitzpatrick_scale:!0,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],"char":"\ud83e\udd1a",fitzpatrick_scale:!0,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],"char":"\ud83d\udc50",fitzpatrick_scale:!0,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],"char":"\ud83d\udcaa",fitzpatrick_scale:!0,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],"char":"\ud83d\ude4f",fitzpatrick_scale:!0,category:"people"},foot:{keywords:["kick","stomp"],"char":"\ud83e\uddb6",fitzpatrick_scale:!0,category:"people"},leg:{keywords:["kick","limb"],"char":"\ud83e\uddb5",fitzpatrick_scale:!0,category:"people"},handshake:{keywords:["agreement","shake"],"char":"\ud83e\udd1d",fitzpatrick_scale:!1,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],"char":"\u261d",fitzpatrick_scale:!0,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],"char":"\ud83d\udc46",fitzpatrick_scale:!0,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],"char":"\ud83d\udc47",fitzpatrick_scale:!0,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],"char":"\ud83d\udc48",fitzpatrick_scale:!0,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],"char":"\ud83d\udc49",fitzpatrick_scale:!0,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],"char":"\ud83d\udd95",fitzpatrick_scale:!0,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],"char":"\ud83d\udd90",fitzpatrick_scale:!0,category:"people"},love_you:{keywords:["hand","fingers","gesture"],"char":"\ud83e\udd1f",fitzpatrick_scale:!0,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],"char":"\ud83e\udd18",fitzpatrick_scale:!0,category:"people"},crossed_fingers:{keywords:["good","lucky"],"char":"\ud83e\udd1e",fitzpatrick_scale:!0,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],"char":"\ud83d\udd96",fitzpatrick_scale:!0,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],"char":"\u270d",fitzpatrick_scale:!0,category:"people"},selfie:{keywords:["camera","phone"],"char":"\ud83e\udd33",fitzpatrick_scale:!0,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],"char":"\ud83d\udc85",fitzpatrick_scale:!0,category:"people"},lips:{keywords:["mouth","kiss"],"char":"\ud83d\udc44",fitzpatrick_scale:!1,category:"people"},tooth:{keywords:["teeth","dentist"],"char":"\ud83e\uddb7",fitzpatrick_scale:!1,category:"people"},tongue:{keywords:["mouth","playful"],"char":"\ud83d\udc45",fitzpatrick_scale:!1,category:"people"},ear:{keywords:["face","hear","sound","listen"],"char":"\ud83d\udc42",fitzpatrick_scale:!0,category:"people"},nose:{keywords:["smell","sniff"],"char":"\ud83d\udc43",fitzpatrick_scale:!0,category:"people"},eye:{keywords:["face","look","see","watch","stare"],"char":"\ud83d\udc41",fitzpatrick_scale:!1,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],"char":"\ud83d\udc40",fitzpatrick_scale:!1,category:"people"},brain:{keywords:["smart","intelligent"],"char":"\ud83e\udde0",fitzpatrick_scale:!1,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],"char":"\ud83d\udc64",fitzpatrick_scale:!1,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],"char":"\ud83d\udc65",fitzpatrick_scale:!1,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],"char":"\ud83d\udde3",fitzpatrick_scale:!1,category:"people"},baby:{keywords:["child","boy","girl","toddler"],"char":"\ud83d\udc76",fitzpatrick_scale:!0,category:"people"},child:{keywords:["gender-neutral","young"],"char":"\ud83e\uddd2",fitzpatrick_scale:!0,category:"people"},boy:{keywords:["man","male","guy","teenager"],"char":"\ud83d\udc66",fitzpatrick_scale:!0,category:"people"},girl:{keywords:["female","woman","teenager"],"char":"\ud83d\udc67",fitzpatrick_scale:!0,category:"people"},adult:{keywords:["gender-neutral","person"],"char":"\ud83e\uddd1",fitzpatrick_scale:!0,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],"char":"\ud83d\udc68",fitzpatrick_scale:!0,category:"people"},woman:{keywords:["female","girls","lady"],"char":"\ud83d\udc69",fitzpatrick_scale:!0,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],"char":"\ud83d\udc71\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],"char":"\ud83d\udc71",fitzpatrick_scale:!0,category:"people"},bearded_person:{keywords:["person","bewhiskered"],"char":"\ud83e\uddd4",fitzpatrick_scale:!0,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],"char":"\ud83e\uddd3",fitzpatrick_scale:!0,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],"char":"\ud83d\udc74",fitzpatrick_scale:!0,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],"char":"\ud83d\udc75",fitzpatrick_scale:!0,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],"char":"\ud83d\udc72",fitzpatrick_scale:!0,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],"char":"\ud83e\uddd5",fitzpatrick_scale:!0,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],"char":"\ud83d\udc73\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],"char":"\ud83d\udc73",fitzpatrick_scale:!0,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],"char":"\ud83d\udc6e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],"char":"\ud83d\udc6e",fitzpatrick_scale:!0,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],"char":"\ud83d\udc77\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],"char":"\ud83d\udc77",fitzpatrick_scale:!0,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],"char":"\ud83d\udc82\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],"char":"\ud83d\udc82",fitzpatrick_scale:!0,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],"char":"\ud83d\udd75\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},male_detective:{keywords:["human","spy","detective"],"char":"\ud83d\udd75",fitzpatrick_scale:!0,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],"char":"\ud83d\udc69\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],"char":"\ud83d\udc68\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},woman_cook:{keywords:["chef","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},man_cook:{keywords:["chef","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},woman_student:{keywords:["graduate","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},man_student:{keywords:["graduate","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],"char":"\ud83d\udc69\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],"char":"\ud83d\udc68\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],"char":"\ud83d\udc68\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],"char":"\ud83d\udc69\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],"char":"\ud83d\udc68\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],"char":"\ud83d\udc68\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},woman_artist:{keywords:["painter","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},man_artist:{keywords:["painter","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},man_firefighter:{keywords:["fireman","man","human"],"char":"\ud83d\udc68\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],"char":"\ud83d\udc69\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],"char":"\ud83d\udc68\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],"char":"\ud83d\udc68\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],"char":"\ud83d\udc69\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},man_judge:{keywords:["justice","court","man","human"],"char":"\ud83d\udc68\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_superhero:{keywords:["woman","female","good","heroine","superpowers"],"char":"\ud83e\uddb8\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_superhero:{keywords:["man","male","good","hero","superpowers"],"char":"\ud83e\uddb8\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_supervillain:{keywords:["woman","female","evil","bad","criminal","heroine","superpowers"],"char":"\ud83e\uddb9\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_supervillain:{keywords:["man","male","evil","bad","criminal","hero","superpowers"],"char":"\ud83e\uddb9\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],"char":"\ud83e\udd36",fitzpatrick_scale:!0,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],"char":"\ud83c\udf85",fitzpatrick_scale:!0,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],"char":"\ud83e\uddd9\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],"char":"\ud83e\uddd9\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_elf:{keywords:["woman","female"],"char":"\ud83e\udddd\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_elf:{keywords:["man","male"],"char":"\ud83e\udddd\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_vampire:{keywords:["woman","female"],"char":"\ud83e\udddb\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_vampire:{keywords:["man","male","dracula"],"char":"\ud83e\udddb\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],"char":"\ud83e\udddf\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],"char":"\ud83e\udddf\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},woman_genie:{keywords:["woman","female"],"char":"\ud83e\uddde\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_genie:{keywords:["man","male"],"char":"\ud83e\uddde\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],"char":"\ud83e\udddc\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},merman:{keywords:["man","male","triton"],"char":"\ud83e\udddc\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_fairy:{keywords:["woman","female"],"char":"\ud83e\uddda\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_fairy:{keywords:["man","male"],"char":"\ud83e\uddda\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},angel:{keywords:["heaven","wings","halo"],"char":"\ud83d\udc7c",fitzpatrick_scale:!0,category:"people"},pregnant_woman:{keywords:["baby"],"char":"\ud83e\udd30",fitzpatrick_scale:!0,category:"people"},breastfeeding:{keywords:["nursing","baby"],"char":"\ud83e\udd31",fitzpatrick_scale:!0,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],"char":"\ud83d\udc78",fitzpatrick_scale:!0,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],"char":"\ud83e\udd34",fitzpatrick_scale:!0,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],"char":"\ud83d\udc70",fitzpatrick_scale:!0,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],"char":"\ud83e\udd35",fitzpatrick_scale:!0,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],"char":"\ud83c\udfc3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],"char":"\ud83c\udfc3",fitzpatrick_scale:!0,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],"char":"\ud83d\udeb6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},walking_man:{keywords:["human","feet","steps"],"char":"\ud83d\udeb6",fitzpatrick_scale:!0,category:"people"},dancer:{keywords:["female","girl","woman","fun"],"char":"\ud83d\udc83",fitzpatrick_scale:!0,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],"char":"\ud83d\udd7a",fitzpatrick_scale:!0,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],"char":"\ud83d\udc6f",fitzpatrick_scale:!1,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],"char":"\ud83d\udc6f\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],"char":"\ud83d\udc6b",fitzpatrick_scale:!1,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],"char":"\ud83d\udc6c",fitzpatrick_scale:!1,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],"char":"\ud83d\udc6d",fitzpatrick_scale:!1,category:"people"},bowing_woman:{keywords:["woman","female","girl"],"char":"\ud83d\ude47\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},bowing_man:{keywords:["man","male","boy"],"char":"\ud83d\ude47",fitzpatrick_scale:!0,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],"char":"\ud83e\udd26\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],"char":"\ud83e\udd26\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],"char":"\ud83e\udd37",fitzpatrick_scale:!0,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],"char":"\ud83e\udd37\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],"char":"\ud83d\udc81",fitzpatrick_scale:!0,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],"char":"\ud83d\udc81\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],"char":"\ud83d\ude45",fitzpatrick_scale:!0,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],"char":"\ud83d\ude45\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],"char":"\ud83d\ude46",fitzpatrick_scale:!0,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],"char":"\ud83d\ude46\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],"char":"\ud83d\ude4b",fitzpatrick_scale:!0,category:"people"},raising_hand_man:{keywords:["male","boy","man"],"char":"\ud83d\ude4b\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},pouting_woman:{keywords:["female","girl","woman"],"char":"\ud83d\ude4e",fitzpatrick_scale:!0,category:"people"},pouting_man:{keywords:["male","boy","man"],"char":"\ud83d\ude4e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],"char":"\ud83d\ude4d",fitzpatrick_scale:!0,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],"char":"\ud83d\ude4d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},haircut_woman:{keywords:["female","girl","woman"],"char":"\ud83d\udc87",fitzpatrick_scale:!0,category:"people"},haircut_man:{keywords:["male","boy","man"],"char":"\ud83d\udc87\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],"char":"\ud83d\udc86",fitzpatrick_scale:!0,category:"people"},massage_man:{keywords:["male","boy","man","head"],"char":"\ud83d\udc86\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],"char":"\ud83e\uddd6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],"char":"\ud83e\uddd6\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc91",fitzpatrick_scale:!1,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc8f",fitzpatrick_scale:!1,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],"char":"\ud83d\udc6a",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},yarn:{keywords:["ball","crochet","knit"],"char":"\ud83e\uddf6",fitzpatrick_scale:!1,category:"people"},thread:{keywords:["needle","sewing","spool","string"],"char":"\ud83e\uddf5",fitzpatrick_scale:!1,category:"people"},coat:{keywords:["jacket"],"char":"\ud83e\udde5",fitzpatrick_scale:!1,category:"people"},labcoat:{keywords:["doctor","experiment","scientist","chemist"],"char":"\ud83e\udd7c",fitzpatrick_scale:!1,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],"char":"\ud83d\udc5a",fitzpatrick_scale:!1,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],"char":"\ud83d\udc55",fitzpatrick_scale:!1,category:"people"},jeans:{keywords:["fashion","shopping"],"char":"\ud83d\udc56",fitzpatrick_scale:!1,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],"char":"\ud83d\udc54",fitzpatrick_scale:!1,category:"people"},dress:{keywords:["clothes","fashion","shopping"],"char":"\ud83d\udc57",fitzpatrick_scale:!1,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],"char":"\ud83d\udc59",fitzpatrick_scale:!1,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],"char":"\ud83d\udc58",fitzpatrick_scale:!1,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],"char":"\ud83d\udc84",fitzpatrick_scale:!1,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],"char":"\ud83d\udc8b",fitzpatrick_scale:!1,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],"char":"\ud83d\udc63",fitzpatrick_scale:!1,category:"people"},flat_shoe:{keywords:["ballet","slip-on","slipper"],"char":"\ud83e\udd7f",fitzpatrick_scale:!1,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],"char":"\ud83d\udc60",fitzpatrick_scale:!1,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],"char":"\ud83d\udc61",fitzpatrick_scale:!1,category:"people"},boot:{keywords:["shoes","fashion"],"char":"\ud83d\udc62",fitzpatrick_scale:!1,category:"people"},mans_shoe:{keywords:["fashion","male"],"char":"\ud83d\udc5e",fitzpatrick_scale:!1,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],"char":"\ud83d\udc5f",fitzpatrick_scale:!1,category:"people"},hiking_boot:{keywords:["backpacking","camping","hiking"],"char":"\ud83e\udd7e",fitzpatrick_scale:!1,category:"people"},socks:{keywords:["stockings","clothes"],"char":"\ud83e\udde6",fitzpatrick_scale:!1,category:"people"},gloves:{keywords:["hands","winter","clothes"],"char":"\ud83e\udde4",fitzpatrick_scale:!1,category:"people"},scarf:{keywords:["neck","winter","clothes"],"char":"\ud83e\udde3",fitzpatrick_scale:!1,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],"char":"\ud83d\udc52",fitzpatrick_scale:!1,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],"char":"\ud83c\udfa9",fitzpatrick_scale:!1,category:"people"},billed_hat:{keywords:["cap","baseball"],"char":"\ud83e\udde2",fitzpatrick_scale:!1,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],"char":"\u26d1",fitzpatrick_scale:!1,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],"char":"\ud83c\udf93",fitzpatrick_scale:!1,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],"char":"\ud83d\udc51",fitzpatrick_scale:!1,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],"char":"\ud83c\udf92",fitzpatrick_scale:!1,category:"people"},luggage:{keywords:["packing","travel"],"char":"\ud83e\uddf3",fitzpatrick_scale:!1,category:"people"},pouch:{keywords:["bag","accessories","shopping"],"char":"\ud83d\udc5d",fitzpatrick_scale:!1,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],"char":"\ud83d\udc5b",fitzpatrick_scale:!1,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],"char":"\ud83d\udc5c",fitzpatrick_scale:!1,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],"char":"\ud83d\udcbc",fitzpatrick_scale:!1,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],"char":"\ud83d\udc53",fitzpatrick_scale:!1,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],"char":"\ud83d\udd76",fitzpatrick_scale:!1,category:"people"},goggles:{keywords:["eyes","protection","safety"],"char":"\ud83e\udd7d",fitzpatrick_scale:!1,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],"char":"\ud83d\udc8d",fitzpatrick_scale:!1,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],"char":"\ud83c\udf02",fitzpatrick_scale:!1,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],"char":"\ud83d\udc36",fitzpatrick_scale:!1,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],"char":"\ud83d\udc31",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],"char":"\ud83d\udc2d",fitzpatrick_scale:!1,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],"char":"\ud83d\udc39",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],"char":"\ud83d\udc30",fitzpatrick_scale:!1,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],"char":"\ud83e\udd8a",fitzpatrick_scale:!1,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],"char":"\ud83d\udc3b",fitzpatrick_scale:!1,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],"char":"\ud83d\udc3c",fitzpatrick_scale:!1,category:"animals_and_nature"},koala:{keywords:["animal","nature"],"char":"\ud83d\udc28",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],"char":"\ud83d\udc2f",fitzpatrick_scale:!1,category:"animals_and_nature"},lion:{keywords:["animal","nature"],"char":"\ud83e\udd81",fitzpatrick_scale:!1,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],"char":"\ud83d\udc2e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],"char":"\ud83d\udc37",fitzpatrick_scale:!1,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],"char":"\ud83d\udc3d",fitzpatrick_scale:!1,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],"char":"\ud83d\udc38",fitzpatrick_scale:!1,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],"char":"\ud83e\udd91",fitzpatrick_scale:!1,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],"char":"\ud83d\udc19",fitzpatrick_scale:!1,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],"char":"\ud83e\udd90",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],"char":"\ud83d\udc35",fitzpatrick_scale:!1,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],"char":"\ud83e\udd8d",fitzpatrick_scale:!1,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],"char":"\ud83d\ude48",fitzpatrick_scale:!1,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],"char":"\ud83d\ude49",fitzpatrick_scale:!1,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],"char":"\ud83d\ude4a",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],"char":"\ud83d\udc12",fitzpatrick_scale:!1,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],"char":"\ud83d\udc14",fitzpatrick_scale:!1,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],"char":"\ud83d\udc27",fitzpatrick_scale:!1,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],"char":"\ud83d\udc26",fitzpatrick_scale:!1,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],"char":"\ud83d\udc24",fitzpatrick_scale:!1,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],"char":"\ud83d\udc23",fitzpatrick_scale:!1,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],"char":"\ud83d\udc25",fitzpatrick_scale:!1,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],"char":"\ud83e\udd86",fitzpatrick_scale:!1,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],"char":"\ud83e\udd85",fitzpatrick_scale:!1,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],"char":"\ud83e\udd89",fitzpatrick_scale:!1,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],"char":"\ud83e\udd87",fitzpatrick_scale:!1,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],"char":"\ud83d\udc3a",fitzpatrick_scale:!1,category:"animals_and_nature"},boar:{keywords:["animal","nature"],"char":"\ud83d\udc17",fitzpatrick_scale:!1,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],"char":"\ud83d\udc34",fitzpatrick_scale:!1,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],"char":"\ud83e\udd84",fitzpatrick_scale:!1,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],"char":"\ud83d\udc1d",fitzpatrick_scale:!1,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],"char":"\ud83d\udc1b",fitzpatrick_scale:!1,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],"char":"\ud83e\udd8b",fitzpatrick_scale:!1,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],"char":"\ud83d\udc0c",fitzpatrick_scale:!1,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],"char":"\ud83d\udc1e",fitzpatrick_scale:!1,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],"char":"\ud83d\udc1c",fitzpatrick_scale:!1,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],"char":"\ud83e\udd97",fitzpatrick_scale:!1,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],"char":"\ud83d\udd77",fitzpatrick_scale:!1,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],"char":"\ud83e\udd82",fitzpatrick_scale:!1,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],"char":"\ud83e\udd80",fitzpatrick_scale:!1,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],"char":"\ud83d\udc0d",fitzpatrick_scale:!1,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],"char":"\ud83e\udd8e",fitzpatrick_scale:!1,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],"char":"\ud83e\udd96",fitzpatrick_scale:!1,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],"char":"\ud83e\udd95",fitzpatrick_scale:!1,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],"char":"\ud83d\udc22",fitzpatrick_scale:!1,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],"char":"\ud83d\udc20",fitzpatrick_scale:!1,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],"char":"\ud83d\udc1f",fitzpatrick_scale:!1,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],"char":"\ud83d\udc21",fitzpatrick_scale:!1,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],"char":"\ud83d\udc2c",fitzpatrick_scale:!1,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],"char":"\ud83e\udd88",fitzpatrick_scale:!1,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],"char":"\ud83d\udc33",fitzpatrick_scale:!1,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],"char":"\ud83d\udc0b",fitzpatrick_scale:!1,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],"char":"\ud83d\udc0a",fitzpatrick_scale:!1,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],"char":"\ud83d\udc06",fitzpatrick_scale:!1,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],"char":"\ud83e\udd93",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],"char":"\ud83d\udc05",fitzpatrick_scale:!1,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],"char":"\ud83d\udc03",fitzpatrick_scale:!1,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],"char":"\ud83d\udc02",fitzpatrick_scale:!1,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],"char":"\ud83d\udc04",fitzpatrick_scale:!1,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],"char":"\ud83e\udd8c",fitzpatrick_scale:!1,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],"char":"\ud83d\udc2a",fitzpatrick_scale:!1,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],"char":"\ud83d\udc2b",fitzpatrick_scale:!1,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],"char":"\ud83e\udd92",fitzpatrick_scale:!1,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],"char":"\ud83d\udc18",fitzpatrick_scale:!1,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],"char":"\ud83e\udd8f",fitzpatrick_scale:!1,category:"animals_and_nature"},goat:{keywords:["animal","nature"],"char":"\ud83d\udc10",fitzpatrick_scale:!1,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],"char":"\ud83d\udc0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],"char":"\ud83d\udc11",fitzpatrick_scale:!1,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],"char":"\ud83d\udc0e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],"char":"\ud83d\udc16",fitzpatrick_scale:!1,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],"char":"\ud83d\udc00",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],"char":"\ud83d\udc01",fitzpatrick_scale:!1,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],"char":"\ud83d\udc13",fitzpatrick_scale:!1,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],"char":"\ud83e\udd83",fitzpatrick_scale:!1,category:"animals_and_nature"},dove:{keywords:["animal","bird"],"char":"\ud83d\udd4a",fitzpatrick_scale:!1,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],"char":"\ud83d\udc15",fitzpatrick_scale:!1,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],"char":"\ud83d\udc29",fitzpatrick_scale:!1,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],"char":"\ud83d\udc08",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],"char":"\ud83d\udc07",fitzpatrick_scale:!1,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],"char":"\ud83d\udc3f",fitzpatrick_scale:!1,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],"char":"\ud83e\udd94",fitzpatrick_scale:!1,category:"animals_and_nature"},raccoon:{keywords:["animal","nature"],"char":"\ud83e\udd9d",fitzpatrick_scale:!1,category:"animals_and_nature"},llama:{keywords:["animal","nature","alpaca"],"char":"\ud83e\udd99",fitzpatrick_scale:!1,category:"animals_and_nature"},hippopotamus:{keywords:["animal","nature"],"char":"\ud83e\udd9b",fitzpatrick_scale:!1,category:"animals_and_nature"},kangaroo:{keywords:["animal","nature","australia","joey","hop","marsupial"],"char":"\ud83e\udd98",fitzpatrick_scale:!1,category:"animals_and_nature"},badger:{keywords:["animal","nature","honey"],"char":"\ud83e\udda1",fitzpatrick_scale:!1,category:"animals_and_nature"},swan:{keywords:["animal","nature","bird"],"char":"\ud83e\udda2",fitzpatrick_scale:!1,category:"animals_and_nature"},peacock:{keywords:["animal","nature","peahen","bird"],"char":"\ud83e\udd9a",fitzpatrick_scale:!1,category:"animals_and_nature"},parrot:{keywords:["animal","nature","bird","pirate","talk"],"char":"\ud83e\udd9c",fitzpatrick_scale:!1,category:"animals_and_nature"},lobster:{keywords:["animal","nature","bisque","claws","seafood"],"char":"\ud83e\udd9e",fitzpatrick_scale:!1,category:"animals_and_nature"},mosquito:{keywords:["animal","nature","insect","malaria"],"char":"\ud83e\udd9f",fitzpatrick_scale:!1,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],"char":"\ud83d\udc3e",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],"char":"\ud83d\udc09",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],"char":"\ud83d\udc32",fitzpatrick_scale:!1,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],"char":"\ud83c\udf35",fitzpatrick_scale:!1,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],"char":"\ud83c\udf84",fitzpatrick_scale:!1,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],"char":"\ud83c\udf32",fitzpatrick_scale:!1,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],"char":"\ud83c\udf33",fitzpatrick_scale:!1,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],"char":"\ud83c\udf34",fitzpatrick_scale:!1,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],"char":"\ud83c\udf31",fitzpatrick_scale:!1,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],"char":"\ud83c\udf3f",fitzpatrick_scale:!1,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],"char":"\u2618",fitzpatrick_scale:!1,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],"char":"\ud83c\udf40",fitzpatrick_scale:!1,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],"char":"\ud83c\udf8d",fitzpatrick_scale:!1,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],"char":"\ud83c\udf8b",fitzpatrick_scale:!1,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],"char":"\ud83c\udf43",fitzpatrick_scale:!1,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],"char":"\ud83c\udf42",fitzpatrick_scale:!1,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],"char":"\ud83c\udf41",fitzpatrick_scale:!1,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],"char":"\ud83c\udf3e",fitzpatrick_scale:!1,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],"char":"\ud83c\udf3a",fitzpatrick_scale:!1,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],"char":"\ud83c\udf3b",fitzpatrick_scale:!1,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],"char":"\ud83c\udf39",fitzpatrick_scale:!1,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],"char":"\ud83e\udd40",fitzpatrick_scale:!1,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],"char":"\ud83c\udf37",fitzpatrick_scale:!1,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],"char":"\ud83c\udf3c",fitzpatrick_scale:!1,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],"char":"\ud83c\udf38",fitzpatrick_scale:!1,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],"char":"\ud83d\udc90",fitzpatrick_scale:!1,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],"char":"\ud83c\udf44",fitzpatrick_scale:!1,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],"char":"\ud83c\udf30",fitzpatrick_scale:!1,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],"char":"\ud83c\udf83",fitzpatrick_scale:!1,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],"char":"\ud83d\udc1a",fitzpatrick_scale:!1,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],"char":"\ud83d\udd78",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],"char":"\ud83c\udf0e",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],"char":"\ud83c\udf0d",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],"char":"\ud83c\udf0f",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf15",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],"char":"\ud83c\udf16",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf17",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf18",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf11",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf12",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf13",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],"char":"\ud83c\udf14",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1a",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1d",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1b",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1c",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],"char":"\ud83c\udf1e",fitzpatrick_scale:!1,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],"char":"\ud83c\udf19",fitzpatrick_scale:!1,category:"animals_and_nature"},star:{keywords:["night","yellow"],"char":"\u2b50",fitzpatrick_scale:!1,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],"char":"\ud83c\udf1f",fitzpatrick_scale:!1,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],"char":"\ud83d\udcab",fitzpatrick_scale:!1,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],"char":"\u2728",fitzpatrick_scale:!1,category:"animals_and_nature"},comet:{keywords:["space"],"char":"\u2604",fitzpatrick_scale:!1,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],"char":"\u2600\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],"char":"\ud83c\udf24",fitzpatrick_scale:!1,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],"char":"\u26c5",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],"char":"\ud83c\udf25",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],"char":"\ud83c\udf26",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],"char":"\u2601\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],"char":"\ud83c\udf27",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],"char":"\u26c8",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],"char":"\ud83c\udf29",fitzpatrick_scale:!1,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],"char":"\u26a1",fitzpatrick_scale:!1,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],"char":"\ud83d\udd25",fitzpatrick_scale:!1,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],"char":"\ud83d\udca5",fitzpatrick_scale:!1,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],"char":"\u2744\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],"char":"\ud83c\udf28",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],"char":"\u26c4",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],"char":"\u2603",fitzpatrick_scale:!1,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],"char":"\ud83c\udf2c",fitzpatrick_scale:!1,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],"char":"\ud83d\udca8",fitzpatrick_scale:!1,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],"char":"\ud83c\udf2a",fitzpatrick_scale:!1,category:"animals_and_nature"},fog:{keywords:["weather"],"char":"\ud83c\udf2b",fitzpatrick_scale:!1,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],"char":"\u2602",fitzpatrick_scale:!1,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],"char":"\u2614",fitzpatrick_scale:!1,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],"char":"\ud83d\udca7",fitzpatrick_scale:!1,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],"char":"\ud83d\udca6",fitzpatrick_scale:!1,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],"char":"\ud83c\udf0a",fitzpatrick_scale:!1,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],"char":"\ud83c\udf4f",fitzpatrick_scale:!1,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],"char":"\ud83c\udf4e",fitzpatrick_scale:!1,category:"food_and_drink"},pear:{keywords:["fruit","nature","food"],"char":"\ud83c\udf50",fitzpatrick_scale:!1,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],"char":"\ud83c\udf4a",fitzpatrick_scale:!1,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],"char":"\ud83c\udf4b",fitzpatrick_scale:!1,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],"char":"\ud83c\udf4c",fitzpatrick_scale:!1,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],"char":"\ud83c\udf49",fitzpatrick_scale:!1,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],"char":"\ud83c\udf47",fitzpatrick_scale:!1,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],"char":"\ud83c\udf53",fitzpatrick_scale:!1,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],"char":"\ud83c\udf48",fitzpatrick_scale:!1,category:"food_and_drink"},cherries:{keywords:["food","fruit"],"char":"\ud83c\udf52",fitzpatrick_scale:!1,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],"char":"\ud83c\udf51",fitzpatrick_scale:!1,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],"char":"\ud83c\udf4d",fitzpatrick_scale:!1,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],"char":"\ud83e\udd65",fitzpatrick_scale:!1,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],"char":"\ud83e\udd5d",fitzpatrick_scale:!1,category:"food_and_drink"},mango:{keywords:["fruit","food","tropical"],"char":"\ud83e\udd6d",fitzpatrick_scale:!1,category:"food_and_drink"},avocado:{keywords:["fruit","food"],"char":"\ud83e\udd51",fitzpatrick_scale:!1,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],"char":"\ud83e\udd66",fitzpatrick_scale:!1,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],"char":"\ud83c\udf45",fitzpatrick_scale:!1,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],"char":"\ud83c\udf46",fitzpatrick_scale:!1,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],"char":"\ud83e\udd52",fitzpatrick_scale:!1,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],"char":"\ud83e\udd55",fitzpatrick_scale:!1,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],"char":"\ud83c\udf36",fitzpatrick_scale:!1,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],"char":"\ud83e\udd54",fitzpatrick_scale:!1,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],"char":"\ud83c\udf3d",fitzpatrick_scale:!1,category:"food_and_drink"},leafy_greens:{keywords:["food","vegetable","plant","bok choy","cabbage","kale","lettuce"],"char":"\ud83e\udd6c",fitzpatrick_scale:!1,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],"char":"\ud83c\udf60",fitzpatrick_scale:!1,category:"food_and_drink"},peanuts:{keywords:["food","nut"],"char":"\ud83e\udd5c",fitzpatrick_scale:!1,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],"char":"\ud83c\udf6f",fitzpatrick_scale:!1,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],"char":"\ud83e\udd50",fitzpatrick_scale:!1,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],"char":"\ud83c\udf5e",fitzpatrick_scale:!1,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],"char":"\ud83e\udd56",fitzpatrick_scale:!1,category:"food_and_drink"},bagel:{keywords:["food","bread","bakery","schmear"],"char":"\ud83e\udd6f",fitzpatrick_scale:!1,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],"char":"\ud83e\udd68",fitzpatrick_scale:!1,category:"food_and_drink"},cheese:{keywords:["food","chadder"],"char":"\ud83e\uddc0",fitzpatrick_scale:!1,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],"char":"\ud83e\udd5a",fitzpatrick_scale:!1,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],"char":"\ud83e\udd53",fitzpatrick_scale:!1,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],"char":"\ud83e\udd69",fitzpatrick_scale:!1,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],"char":"\ud83e\udd5e",fitzpatrick_scale:!1,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],"char":"\ud83c\udf57",fitzpatrick_scale:!1,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],"char":"\ud83c\udf56",fitzpatrick_scale:!1,category:"food_and_drink"},bone:{keywords:["skeleton"],"char":"\ud83e\uddb4",fitzpatrick_scale:!1,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],"char":"\ud83c\udf64",fitzpatrick_scale:!1,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],"char":"\ud83c\udf73",fitzpatrick_scale:!1,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],"char":"\ud83c\udf54",fitzpatrick_scale:!1,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],"char":"\ud83c\udf5f",fitzpatrick_scale:!1,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],"char":"\ud83e\udd59",fitzpatrick_scale:!1,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],"char":"\ud83c\udf2d",fitzpatrick_scale:!1,category:"food_and_drink"},pizza:{keywords:["food","party"],"char":"\ud83c\udf55",fitzpatrick_scale:!1,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],"char":"\ud83e\udd6a",fitzpatrick_scale:!1,category:"food_and_drink"},canned_food:{keywords:["food","soup"],"char":"\ud83e\udd6b",fitzpatrick_scale:!1,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],"char":"\ud83c\udf5d",fitzpatrick_scale:!1,category:"food_and_drink"},taco:{keywords:["food","mexican"],"char":"\ud83c\udf2e",fitzpatrick_scale:!1,category:"food_and_drink"},burrito:{keywords:["food","mexican"],"char":"\ud83c\udf2f",fitzpatrick_scale:!1,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],"char":"\ud83e\udd57",fitzpatrick_scale:!1,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],"char":"\ud83e\udd58",fitzpatrick_scale:!1,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],"char":"\ud83c\udf5c",fitzpatrick_scale:!1,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],"char":"\ud83c\udf72",fitzpatrick_scale:!1,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],"char":"\ud83c\udf65",fitzpatrick_scale:!1,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],"char":"\ud83e\udd60",fitzpatrick_scale:!1,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],"char":"\ud83c\udf63",fitzpatrick_scale:!1,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],"char":"\ud83c\udf71",fitzpatrick_scale:!1,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],"char":"\ud83c\udf5b",fitzpatrick_scale:!1,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],"char":"\ud83c\udf59",fitzpatrick_scale:!1,category:"food_and_drink"},rice:{keywords:["food","china","asian"],"char":"\ud83c\udf5a",fitzpatrick_scale:!1,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],"char":"\ud83c\udf58",fitzpatrick_scale:!1,category:"food_and_drink"},oden:{keywords:["food","japanese"],"char":"\ud83c\udf62",fitzpatrick_scale:!1,category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],"char":"\ud83c\udf61",fitzpatrick_scale:!1,category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],"char":"\ud83c\udf67",fitzpatrick_scale:!1,category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],"char":"\ud83c\udf68",fitzpatrick_scale:!1,category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],"char":"\ud83c\udf66",fitzpatrick_scale:!1,category:"food_and_drink"},pie:{keywords:["food","dessert","pastry"],"char":"\ud83e\udd67",fitzpatrick_scale:!1,category:"food_and_drink"},cake:{keywords:["food","dessert"],"char":"\ud83c\udf70",fitzpatrick_scale:!1,category:"food_and_drink"},cupcake:{keywords:["food","dessert","bakery","sweet"],"char":"\ud83e\uddc1",fitzpatrick_scale:!1,category:"food_and_drink"},moon_cake:{keywords:["food","autumn"],"char":"\ud83e\udd6e",fitzpatrick_scale:!1,category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],"char":"\ud83c\udf82",fitzpatrick_scale:!1,category:"food_and_drink"},custard:{keywords:["dessert","food"],"char":"\ud83c\udf6e",fitzpatrick_scale:!1,category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],"char":"\ud83c\udf6c",fitzpatrick_scale:!1,category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],"char":"\ud83c\udf6d",fitzpatrick_scale:!1,category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],"char":"\ud83c\udf6b",fitzpatrick_scale:!1,category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],"char":"\ud83c\udf7f",fitzpatrick_scale:!1,category:"food_and_drink"},dumpling:{keywords:["food","empanada","pierogi","potsticker"],"char":"\ud83e\udd5f",fitzpatrick_scale:!1,category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],"char":"\ud83c\udf69",fitzpatrick_scale:!1,category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],"char":"\ud83c\udf6a",fitzpatrick_scale:!1,category:"food_and_drink"},milk_glass:{keywords:["beverage","drink","cow"],"char":"\ud83e\udd5b",fitzpatrick_scale:!1,category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":"\ud83c\udf7a",fitzpatrick_scale:!1,category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":"\ud83c\udf7b",fitzpatrick_scale:!1,category:"food_and_drink"},clinking_glasses:{keywords:["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],"char":"\ud83e\udd42",fitzpatrick_scale:!1,category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],"char":"\ud83c\udf77",fitzpatrick_scale:!1,category:"food_and_drink"},tumbler_glass:{keywords:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],"char":"\ud83e\udd43",fitzpatrick_scale:!1,category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],"char":"\ud83c\udf78",fitzpatrick_scale:!1,category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],"char":"\ud83c\udf79",fitzpatrick_scale:!1,category:"food_and_drink"},champagne:{keywords:["drink","wine","bottle","celebration"],"char":"\ud83c\udf7e",fitzpatrick_scale:!1,category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],"char":"\ud83c\udf76",fitzpatrick_scale:!1,category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],"char":"\ud83c\udf75",fitzpatrick_scale:!1,category:"food_and_drink"},cup_with_straw:{keywords:["drink","soda"],"char":"\ud83e\udd64",fitzpatrick_scale:!1,category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],"char":"\u2615",fitzpatrick_scale:!1,category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],"char":"\ud83c\udf7c",fitzpatrick_scale:!1,category:"food_and_drink"},salt:{keywords:["condiment","shaker"],"char":"\ud83e\uddc2",fitzpatrick_scale:!1,category:"food_and_drink"},spoon:{keywords:["cutlery","kitchen","tableware"],"char":"\ud83e\udd44",fitzpatrick_scale:!1,category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],"char":"\ud83c\udf74",fitzpatrick_scale:!1,category:"food_and_drink"},plate_with_cutlery:{keywords:["food","eat","meal","lunch","dinner","restaurant"],"char":"\ud83c\udf7d",fitzpatrick_scale:!1,category:"food_and_drink"},bowl_with_spoon:{keywords:["food","breakfast","cereal","oatmeal","porridge"],"char":"\ud83e\udd63",fitzpatrick_scale:!1,category:"food_and_drink"},takeout_box:{keywords:["food","leftovers"],"char":"\ud83e\udd61",fitzpatrick_scale:!1,category:"food_and_drink"},chopsticks:{keywords:["food"],"char":"\ud83e\udd62",fitzpatrick_scale:!1,category:"food_and_drink"},soccer:{keywords:["sports","football"],"char":"\u26bd",fitzpatrick_scale:!1,category:"activity"},basketball:{keywords:["sports","balls","NBA"],"char":"\ud83c\udfc0",fitzpatrick_scale:!1,category:"activity"},football:{keywords:["sports","balls","NFL"],"char":"\ud83c\udfc8",fitzpatrick_scale:!1,category:"activity"},baseball:{keywords:["sports","balls"],"char":"\u26be",fitzpatrick_scale:!1,category:"activity"},softball:{keywords:["sports","balls"],"char":"\ud83e\udd4e",fitzpatrick_scale:!1,category:"activity"},tennis:{keywords:["sports","balls","green"],"char":"\ud83c\udfbe",fitzpatrick_scale:!1,category:"activity"},volleyball:{keywords:["sports","balls"],"char":"\ud83c\udfd0",fitzpatrick_scale:!1,category:"activity"},rugby_football:{keywords:["sports","team"],"char":"\ud83c\udfc9",fitzpatrick_scale:!1,category:"activity"},flying_disc:{keywords:["sports","frisbee","ultimate"],"char":"\ud83e\udd4f",fitzpatrick_scale:!1,category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],"char":"\ud83c\udfb1",fitzpatrick_scale:!1,category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],"char":"\u26f3",fitzpatrick_scale:!1,category:"activity"},golfing_woman:{keywords:["sports","business","woman","female"],"char":"\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},golfing_man:{keywords:["sports","business"],"char":"\ud83c\udfcc",fitzpatrick_scale:!0,category:"activity"},ping_pong:{keywords:["sports","pingpong"],"char":"\ud83c\udfd3",fitzpatrick_scale:!1,category:"activity"},badminton:{keywords:["sports"],"char":"\ud83c\udff8",fitzpatrick_scale:!1,category:"activity"},goal_net:{keywords:["sports"],"char":"\ud83e\udd45",fitzpatrick_scale:!1,category:"activity"},ice_hockey:{keywords:["sports"],"char":"\ud83c\udfd2",fitzpatrick_scale:!1,category:"activity"},field_hockey:{keywords:["sports"],"char":"\ud83c\udfd1",fitzpatrick_scale:!1,category:"activity"},lacrosse:{keywords:["sports","ball","stick"],"char":"\ud83e\udd4d",fitzpatrick_scale:!1,category:"activity"},cricket:{keywords:["sports"],"char":"\ud83c\udfcf",fitzpatrick_scale:!1,category:"activity"},ski:{keywords:["sports","winter","cold","snow"],"char":"\ud83c\udfbf",fitzpatrick_scale:!1,category:"activity"},skier:{keywords:["sports","winter","snow"],"char":"\u26f7",fitzpatrick_scale:!1,category:"activity"},snowboarder:{keywords:["sports","winter"],"char":"\ud83c\udfc2",fitzpatrick_scale:!0,category:"activity"},person_fencing:{keywords:["sports","fencing","sword"],"char":"\ud83e\udd3a",fitzpatrick_scale:!1,category:"activity"},women_wrestling:{keywords:["sports","wrestlers"],"char":"\ud83e\udd3c\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},men_wrestling:{keywords:["sports","wrestlers"],"char":"\ud83e\udd3c\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"activity"},woman_cartwheeling:{keywords:["gymnastics"],"char":"\ud83e\udd38\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_cartwheeling:{keywords:["gymnastics"],"char":"\ud83e\udd38\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_playing_handball:{keywords:["sports"],"char":"\ud83e\udd3e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_handball:{keywords:["sports"],"char":"\ud83e\udd3e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},ice_skate:{keywords:["sports"],"char":"\u26f8",fitzpatrick_scale:!1,category:"activity"},curling_stone:{keywords:["sports"],"char":"\ud83e\udd4c",fitzpatrick_scale:!1,category:"activity"},skateboard:{keywords:["board"],"char":"\ud83d\udef9",fitzpatrick_scale:!1,category:"activity"},sled:{keywords:["sleigh","luge","toboggan"],"char":"\ud83d\udef7",fitzpatrick_scale:!1,category:"activity"},bow_and_arrow:{keywords:["sports"],"char":"\ud83c\udff9",fitzpatrick_scale:!1,category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],"char":"\ud83c\udfa3",fitzpatrick_scale:!1,category:"activity"},boxing_glove:{keywords:["sports","fighting"],"char":"\ud83e\udd4a",fitzpatrick_scale:!1,category:"activity"},martial_arts_uniform:{keywords:["judo","karate","taekwondo"],"char":"\ud83e\udd4b",fitzpatrick_scale:!1,category:"activity"},rowing_woman:{keywords:["sports","hobby","water","ship","woman","female"],"char":"\ud83d\udea3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},rowing_man:{keywords:["sports","hobby","water","ship"],"char":"\ud83d\udea3",fitzpatrick_scale:!0,category:"activity"},climbing_woman:{keywords:["sports","hobby","woman","female","rock"],"char":"\ud83e\uddd7\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},climbing_man:{keywords:["sports","hobby","man","male","rock"],"char":"\ud83e\uddd7\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_woman:{keywords:["sports","exercise","human","athlete","water","summer","woman","female"],"char":"\ud83c\udfca\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_man:{keywords:["sports","exercise","human","athlete","water","summer"],"char":"\ud83c\udfca",fitzpatrick_scale:!0,category:"activity"},woman_playing_water_polo:{keywords:["sports","pool"],"char":"\ud83e\udd3d\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_water_polo:{keywords:["sports","pool"],"char":"\ud83e\udd3d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_in_lotus_position:{keywords:["woman","female","meditation","yoga","serenity","zen","mindfulness"],"char":"\ud83e\uddd8\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_in_lotus_position:{keywords:["man","male","meditation","yoga","serenity","zen","mindfulness"],"char":"\ud83e\uddd8\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_woman:{keywords:["sports","ocean","sea","summer","beach","woman","female"],"char":"\ud83c\udfc4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_man:{keywords:["sports","ocean","sea","summer","beach"],"char":"\ud83c\udfc4",fitzpatrick_scale:!0,category:"activity"},bath:{keywords:["clean","shower","bathroom"],"char":"\ud83d\udec0",fitzpatrick_scale:!0,category:"activity"},basketball_woman:{keywords:["sports","human","woman","female"],"char":"\u26f9\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},basketball_man:{keywords:["sports","human"],"char":"\u26f9",fitzpatrick_scale:!0,category:"activity"},weight_lifting_woman:{keywords:["sports","training","exercise","woman","female"],"char":"\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},weight_lifting_man:{keywords:["sports","training","exercise"],"char":"\ud83c\udfcb",fitzpatrick_scale:!0,category:"activity"},biking_woman:{keywords:["sports","bike","exercise","hipster","woman","female"],"char":"\ud83d\udeb4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},biking_man:{keywords:["sports","bike","exercise","hipster"],"char":"\ud83d\udeb4",fitzpatrick_scale:!0,category:"activity"},mountain_biking_woman:{keywords:["transportation","sports","human","race","bike","woman","female"],"char":"\ud83d\udeb5\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},mountain_biking_man:{keywords:["transportation","sports","human","race","bike"],"char":"\ud83d\udeb5",fitzpatrick_scale:!0,category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],"char":"\ud83c\udfc7",fitzpatrick_scale:!0,category:"activity"},business_suit_levitating:{keywords:["suit","business","levitate","hover","jump"],"char":"\ud83d\udd74",fitzpatrick_scale:!0,category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],"char":"\ud83c\udfc6",fitzpatrick_scale:!1,category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],"char":"\ud83c\udfbd",fitzpatrick_scale:!1,category:"activity"},medal_sports:{keywords:["award","winning"],"char":"\ud83c\udfc5",fitzpatrick_scale:!1,category:"activity"},medal_military:{keywords:["award","winning","army"],"char":"\ud83c\udf96",fitzpatrick_scale:!1,category:"activity"},"1st_place_medal":{keywords:["award","winning","first"],"char":"\ud83e\udd47",fitzpatrick_scale:!1,category:"activity"},"2nd_place_medal":{keywords:["award","second"],"char":"\ud83e\udd48",fitzpatrick_scale:!1,category:"activity"},"3rd_place_medal":{keywords:["award","third"],"char":"\ud83e\udd49",fitzpatrick_scale:!1,category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],"char":"\ud83c\udf97",fitzpatrick_scale:!1,category:"activity"},rosette:{keywords:["flower","decoration","military"],"char":"\ud83c\udff5",fitzpatrick_scale:!1,category:"activity"},ticket:{keywords:["event","concert","pass"],"char":"\ud83c\udfab",fitzpatrick_scale:!1,category:"activity"},tickets:{keywords:["sports","concert","entrance"],"char":"\ud83c\udf9f",fitzpatrick_scale:!1,category:"activity"},performing_arts:{keywords:["acting","theater","drama"],"char":"\ud83c\udfad",fitzpatrick_scale:!1,category:"activity"},art:{keywords:["design","paint","draw","colors"],"char":"\ud83c\udfa8",fitzpatrick_scale:!1,category:"activity"},circus_tent:{keywords:["festival","carnival","party"],"char":"\ud83c\udfaa",fitzpatrick_scale:!1,category:"activity"},woman_juggling:{keywords:["juggle","balance","skill","multitask"],"char":"\ud83e\udd39\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_juggling:{keywords:["juggle","balance","skill","multitask"],"char":"\ud83e\udd39\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},microphone:{keywords:["sound","music","PA","sing","talkshow"],"char":"\ud83c\udfa4",fitzpatrick_scale:!1,category:"activity"},headphones:{keywords:["music","score","gadgets"],"char":"\ud83c\udfa7",fitzpatrick_scale:!1,category:"activity"},musical_score:{keywords:["treble","clef","compose"],"char":"\ud83c\udfbc",fitzpatrick_scale:!1,category:"activity"},musical_keyboard:{keywords:["piano","instrument","compose"],"char":"\ud83c\udfb9",fitzpatrick_scale:!1,category:"activity"},drum:{keywords:["music","instrument","drumsticks","snare"],"char":"\ud83e\udd41",fitzpatrick_scale:!1,category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],"char":"\ud83c\udfb7",fitzpatrick_scale:!1,category:"activity"},trumpet:{keywords:["music","brass"],"char":"\ud83c\udfba",fitzpatrick_scale:!1,category:"activity"},guitar:{keywords:["music","instrument"],"char":"\ud83c\udfb8",fitzpatrick_scale:!1,category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],"char":"\ud83c\udfbb",fitzpatrick_scale:!1,category:"activity"},clapper:{keywords:["movie","film","record"],"char":"\ud83c\udfac",fitzpatrick_scale:!1,category:"activity"},video_game:{keywords:["play","console","PS4","controller"],"char":"\ud83c\udfae",fitzpatrick_scale:!1,category:"activity"},space_invader:{keywords:["game","arcade","play"],"char":"\ud83d\udc7e",fitzpatrick_scale:!1,category:"activity"},dart:{keywords:["game","play","bar","target","bullseye"],"char":"\ud83c\udfaf",fitzpatrick_scale:!1,category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],"char":"\ud83c\udfb2",fitzpatrick_scale:!1,category:"activity"},chess_pawn:{keywords:["expendable"],"char":"\u265f",fitzpatrick_scale:!1,category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],"char":"\ud83c\udfb0",fitzpatrick_scale:!1,category:"activity"},jigsaw:{keywords:["interlocking","puzzle","piece"],"char":"\ud83e\udde9",fitzpatrick_scale:!1,category:"activity"},bowling:{keywords:["sports","fun","play"],"char":"\ud83c\udfb3",fitzpatrick_scale:!1,category:"activity"},red_car:{keywords:["red","transportation","vehicle"],"char":"\ud83d\ude97",fitzpatrick_scale:!1,category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],"char":"\ud83d\ude95",fitzpatrick_scale:!1,category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],"char":"\ud83d\ude99",fitzpatrick_scale:!1,category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],"char":"\ud83d\ude8c",fitzpatrick_scale:!1,category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],"char":"\ud83d\ude8e",fitzpatrick_scale:!1,category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],"char":"\ud83c\udfce",fitzpatrick_scale:!1,category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],"char":"\ud83d\ude93",fitzpatrick_scale:!1,category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],"char":"\ud83d\ude91",fitzpatrick_scale:!1,category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],"char":"\ud83d\ude92",fitzpatrick_scale:!1,category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],"char":"\ud83d\ude90",fitzpatrick_scale:!1,category:"travel_and_places"},truck:{keywords:["cars","transportation"],"char":"\ud83d\ude9a",fitzpatrick_scale:!1,category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],"char":"\ud83d\ude9b",fitzpatrick_scale:!1,category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],"char":"\ud83d\ude9c",fitzpatrick_scale:!1,category:"travel_and_places"},kick_scooter:{keywords:["vehicle","kick","razor"],"char":"\ud83d\udef4",fitzpatrick_scale:!1,category:"travel_and_places"},motorcycle:{keywords:["race","sports","fast"],"char":"\ud83c\udfcd",fitzpatrick_scale:!1,category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],"char":"\ud83d\udeb2",fitzpatrick_scale:!1,category:"travel_and_places"},motor_scooter:{keywords:["vehicle","vespa","sasha"],"char":"\ud83d\udef5",fitzpatrick_scale:!1,category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],"char":"\ud83d\udea8",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],"char":"\ud83d\ude94",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],"char":"\ud83d\ude8d",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],"char":"\ud83d\ude98",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],"char":"\ud83d\ude96",fitzpatrick_scale:!1,category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],"char":"\ud83d\udea1",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],"char":"\ud83d\udea0",fitzpatrick_scale:!1,category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],"char":"\ud83d\ude9f",fitzpatrick_scale:!1,category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],"char":"\ud83d\ude83",fitzpatrick_scale:!1,category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],"char":"\ud83d\ude8b",fitzpatrick_scale:!1,category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],"char":"\ud83d\ude9d",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],"char":"\ud83d\ude84",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],"char":"\ud83d\ude85",fitzpatrick_scale:!1,category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],"char":"\ud83d\ude88",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],"char":"\ud83d\ude9e",fitzpatrick_scale:!1,category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],"char":"\ud83d\ude82",fitzpatrick_scale:!1,category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],"char":"\ud83d\ude86",fitzpatrick_scale:!1,category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],"char":"\ud83d\ude87",fitzpatrick_scale:!1,category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],"char":"\ud83d\ude8a",fitzpatrick_scale:!1,category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],"char":"\ud83d\ude89",fitzpatrick_scale:!1,category:"travel_and_places"},flying_saucer:{keywords:["transportation","vehicle","ufo"],"char":"\ud83d\udef8",fitzpatrick_scale:!1,category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],"char":"\ud83d\ude81",fitzpatrick_scale:!1,category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],"char":"\ud83d\udee9",fitzpatrick_scale:!1,category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],"char":"\u2708\ufe0f",fitzpatrick_scale:!1,category:"travel_and_places"},flight_departure:{keywords:["airport","flight","landing"],"char":"\ud83d\udeeb",fitzpatrick_scale:!1,category:"travel_and_places"},flight_arrival:{keywords:["airport","flight","boarding"],"char":"\ud83d\udeec",fitzpatrick_scale:!1,category:"travel_and_places"},sailboat:{keywords:["ship","summer","transportation","water","sailing"],"char":"\u26f5",fitzpatrick_scale:!1,category:"travel_and_places"},motor_boat:{keywords:["ship"],"char":"\ud83d\udee5",fitzpatrick_scale:!1,category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],"char":"\ud83d\udea4",fitzpatrick_scale:!1,category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],"char":"\u26f4",fitzpatrick_scale:!1,category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],"char":"\ud83d\udef3",fitzpatrick_scale:!1,category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],"char":"\ud83d\ude80",fitzpatrick_scale:!1,category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],"char":"\ud83d\udef0",fitzpatrick_scale:!1,category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],"char":"\ud83d\udcba",fitzpatrick_scale:!1,category:"travel_and_places"},canoe:{keywords:["boat","paddle","water","ship"],"char":"\ud83d\udef6",fitzpatrick_scale:!1,category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],"char":"\u2693",fitzpatrick_scale:!1,category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],"char":"\ud83d\udea7",fitzpatrick_scale:!1,category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],"char":"\u26fd",fitzpatrick_scale:!1,category:"travel_and_places"},busstop:{keywords:["transportation","wait"],"char":"\ud83d\ude8f",fitzpatrick_scale:!1,category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],"char":"\ud83d\udea6",fitzpatrick_scale:!1,category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],"char":"\ud83d\udea5",fitzpatrick_scale:!1,category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],"char":"\ud83c\udfc1",fitzpatrick_scale:!1,category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],"char":"\ud83d\udea2",fitzpatrick_scale:!1,category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],"char":"\ud83c\udfa1",fitzpatrick_scale:!1,category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],"char":"\ud83c\udfa2",fitzpatrick_scale:!1,category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],"char":"\ud83c\udfa0",fitzpatrick_scale:!1,category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],"char":"\ud83c\udfd7",fitzpatrick_scale:!1,category:"travel_and_places"},foggy:{keywords:["photo","mountain"],"char":"\ud83c\udf01",fitzpatrick_scale:!1,category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],"char":"\ud83d\uddfc",fitzpatrick_scale:!1,category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],"char":"\ud83c\udfed",fitzpatrick_scale:!1,category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],"char":"\u26f2",fitzpatrick_scale:!1,category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],"char":"\ud83c\udf91",fitzpatrick_scale:!1,category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],"char":"\u26f0",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_snow:{keywords:["photo","nature","environment","winter","cold"],"char":"\ud83c\udfd4",fitzpatrick_scale:!1,category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],"char":"\ud83d\uddfb",fitzpatrick_scale:!1,category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],"char":"\ud83c\udf0b",fitzpatrick_scale:!1,category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],"char":"\ud83d\uddfe",fitzpatrick_scale:!1,category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],"char":"\ud83c\udfd5",fitzpatrick_scale:!1,category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],"char":"\u26fa",fitzpatrick_scale:!1,category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],"char":"\ud83c\udfde",fitzpatrick_scale:!1,category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],"char":"\ud83d\udee3",fitzpatrick_scale:!1,category:"travel_and_places"},railway_track:{keywords:["train","transportation"],"char":"\ud83d\udee4",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],"char":"\ud83c\udf05",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],"char":"\ud83c\udf04",fitzpatrick_scale:!1,category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],"char":"\ud83c\udfdc",fitzpatrick_scale:!1,category:"travel_and_places"},beach_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],"char":"\ud83c\udfd6",fitzpatrick_scale:!1,category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],"char":"\ud83c\udfdd",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],"char":"\ud83c\udf07",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],"char":"\ud83c\udf06",fitzpatrick_scale:!1,category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],"char":"\ud83c\udfd9",fitzpatrick_scale:!1,category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],"char":"\ud83c\udf03",fitzpatrick_scale:!1,category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],"char":"\ud83c\udf09",fitzpatrick_scale:!1,category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],"char":"\ud83c\udf0c",fitzpatrick_scale:!1,category:"travel_and_places"},stars:{keywords:["night","photo"],"char":"\ud83c\udf20",fitzpatrick_scale:!1,category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],"char":"\ud83c\udf87",fitzpatrick_scale:!1,category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],"char":"\ud83c\udf86",fitzpatrick_scale:!1,category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn_face","photo","sky","spring"],"char":"\ud83c\udf08",fitzpatrick_scale:!1,category:"travel_and_places"},houses:{keywords:["buildings","photo"],"char":"\ud83c\udfd8",fitzpatrick_scale:!1,category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],"char":"\ud83c\udff0",fitzpatrick_scale:!1,category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],"char":"\ud83c\udfef",fitzpatrick_scale:!1,category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],"char":"\ud83c\udfdf",fitzpatrick_scale:!1,category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],"char":"\ud83d\uddfd",fitzpatrick_scale:!1,category:"travel_and_places"},house:{keywords:["building","home"],"char":"\ud83c\udfe0",fitzpatrick_scale:!1,category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],"char":"\ud83c\udfe1",fitzpatrick_scale:!1,category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],"char":"\ud83c\udfda",fitzpatrick_scale:!1,category:"travel_and_places"},office:{keywords:["building","bureau","work"],"char":"\ud83c\udfe2",fitzpatrick_scale:!1,category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],"char":"\ud83c\udfec",fitzpatrick_scale:!1,category:"travel_and_places"},post_office:{keywords:["building","envelope","communication"],"char":"\ud83c\udfe3",fitzpatrick_scale:!1,category:"travel_and_places"},european_post_office:{keywords:["building","email"],"char":"\ud83c\udfe4",fitzpatrick_scale:!1,category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],"char":"\ud83c\udfe5",fitzpatrick_scale:!1,category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],"char":"\ud83c\udfe6",fitzpatrick_scale:!1,category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],"char":"\ud83c\udfe8",fitzpatrick_scale:!1,category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],"char":"\ud83c\udfea",fitzpatrick_scale:!1,category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],"char":"\ud83c\udfeb",fitzpatrick_scale:!1,category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],"char":"\ud83c\udfe9",fitzpatrick_scale:!1,category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],"char":"\ud83d\udc92",fitzpatrick_scale:!1,category:"travel_and_places"},classical_building:{keywords:["art","culture","history"],"char":"\ud83c\udfdb",fitzpatrick_scale:!1,category:"travel_and_places"},church:{keywords:["building","religion","christ"],"char":"\u26ea",fitzpatrick_scale:!1,category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],"char":"\ud83d\udd4c",fitzpatrick_scale:!1,category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],"char":"\ud83d\udd4d",fitzpatrick_scale:!1,category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],"char":"\ud83d\udd4b",fitzpatrick_scale:!1,category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],"char":"\u26e9",fitzpatrick_scale:!1,category:"travel_and_places"},watch:{keywords:["time","accessories"],"char":"\u231a",fitzpatrick_scale:!1,category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],"char":"\ud83d\udcf1",fitzpatrick_scale:!1,category:"objects"},calling:{keywords:["iphone","incoming"],"char":"\ud83d\udcf2",fitzpatrick_scale:!1,category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],"char":"\ud83d\udcbb",fitzpatrick_scale:!1,category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],"char":"\u2328",fitzpatrick_scale:!1,category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],"char":"\ud83d\udda5",fitzpatrick_scale:!1,category:"objects"},printer:{keywords:["paper","ink"],"char":"\ud83d\udda8",fitzpatrick_scale:!1,category:"objects"},computer_mouse:{keywords:["click"],"char":"\ud83d\uddb1",fitzpatrick_scale:!1,category:"objects"},trackball:{keywords:["technology","trackpad"],"char":"\ud83d\uddb2",fitzpatrick_scale:!1,category:"objects"},joystick:{keywords:["game","play"],"char":"\ud83d\udd79",fitzpatrick_scale:!1,category:"objects"},clamp:{keywords:["tool"],"char":"\ud83d\udddc",fitzpatrick_scale:!1,category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],"char":"\ud83d\udcbd",fitzpatrick_scale:!1,category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],"char":"\ud83d\udcbe",fitzpatrick_scale:!1,category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],"char":"\ud83d\udcbf",fitzpatrick_scale:!1,category:"objects"},dvd:{keywords:["cd","disk","disc"],"char":"\ud83d\udcc0",fitzpatrick_scale:!1,category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],"char":"\ud83d\udcfc",fitzpatrick_scale:!1,category:"objects"},camera:{keywords:["gadgets","photography"],"char":"\ud83d\udcf7",fitzpatrick_scale:!1,category:"objects"},camera_flash:{keywords:["photography","gadgets"],"char":"\ud83d\udcf8",fitzpatrick_scale:!1,category:"objects"},video_camera:{keywords:["film","record"],"char":"\ud83d\udcf9",fitzpatrick_scale:!1,category:"objects"},movie_camera:{keywords:["film","record"],"char":"\ud83c\udfa5",fitzpatrick_scale:!1,category:"objects"},film_projector:{keywords:["video","tape","record","movie"],"char":"\ud83d\udcfd",fitzpatrick_scale:!1,category:"objects"},film_strip:{keywords:["movie"],"char":"\ud83c\udf9e",fitzpatrick_scale:!1,category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],"char":"\ud83d\udcde",fitzpatrick_scale:!1,category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],"char":"\u260e\ufe0f",fitzpatrick_scale:!1,category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],"char":"\ud83d\udcdf",fitzpatrick_scale:!1,category:"objects"},fax:{keywords:["communication","technology"],"char":"\ud83d\udce0",fitzpatrick_scale:!1,category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],"char":"\ud83d\udcfa",fitzpatrick_scale:!1,category:"objects"},radio:{keywords:["communication","music","podcast","program"],"char":"\ud83d\udcfb",fitzpatrick_scale:!1,category:"objects"},studio_microphone:{keywords:["sing","recording","artist","talkshow"],"char":"\ud83c\udf99",fitzpatrick_scale:!1,category:"objects"},level_slider:{keywords:["scale"],"char":"\ud83c\udf9a",fitzpatrick_scale:!1,category:"objects"},control_knobs:{keywords:["dial"],"char":"\ud83c\udf9b",fitzpatrick_scale:!1,category:"objects"},compass:{keywords:["magnetic","navigation","orienteering"],"char":"\ud83e\udded",fitzpatrick_scale:!1,category:"objects"},stopwatch:{keywords:["time","deadline"],"char":"\u23f1",fitzpatrick_scale:!1,category:"objects"},timer_clock:{keywords:["alarm"],"char":"\u23f2",fitzpatrick_scale:!1,category:"objects"},alarm_clock:{keywords:["time","wake"],"char":"\u23f0",fitzpatrick_scale:!1,category:"objects"},mantelpiece_clock:{keywords:["time"],"char":"\ud83d\udd70",fitzpatrick_scale:!1,category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],"char":"\u23f3",fitzpatrick_scale:!1,category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],"char":"\u231b",fitzpatrick_scale:!1,category:"objects"},satellite:{keywords:["communication","future","radio","space"],"char":"\ud83d\udce1",fitzpatrick_scale:!1,category:"objects"},battery:{keywords:["power","energy","sustain"],"char":"\ud83d\udd0b",fitzpatrick_scale:!1,category:"objects"},electric_plug:{keywords:["charger","power"],"char":"\ud83d\udd0c",fitzpatrick_scale:!1,category:"objects"},bulb:{keywords:["light","electricity","idea"],"char":"\ud83d\udca1",fitzpatrick_scale:!1,category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],"char":"\ud83d\udd26",fitzpatrick_scale:!1,category:"objects"},candle:{keywords:["fire","wax"],"char":"\ud83d\udd6f",fitzpatrick_scale:!1,category:"objects"},fire_extinguisher:{keywords:["quench"],"char":"\ud83e\uddef",fitzpatrick_scale:!1,category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],"char":"\ud83d\uddd1",fitzpatrick_scale:!1,category:"objects"},oil_drum:{keywords:["barrell"],"char":"\ud83d\udee2",fitzpatrick_scale:!1,category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],"char":"\ud83d\udcb8",fitzpatrick_scale:!1,category:"objects"},dollar:{keywords:["money","sales","bill","currency"],"char":"\ud83d\udcb5",fitzpatrick_scale:!1,category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],"char":"\ud83d\udcb4",fitzpatrick_scale:!1,category:"objects"},euro:{keywords:["money","sales","dollar","currency"],"char":"\ud83d\udcb6",fitzpatrick_scale:!1,category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],"char":"\ud83d\udcb7",fitzpatrick_scale:!1,category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],"char":"\ud83d\udcb0",fitzpatrick_scale:!1,category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],"char":"\ud83d\udcb3",fitzpatrick_scale:!1,category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],"char":"\ud83d\udc8e",fitzpatrick_scale:!1,category:"objects"},balance_scale:{keywords:["law","fairness","weight"],"char":"\u2696",fitzpatrick_scale:!1,category:"objects"},toolbox:{keywords:["tools","diy","fix","maintainer","mechanic"],"char":"\ud83e\uddf0",fitzpatrick_scale:!1,category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],"char":"\ud83d\udd27",fitzpatrick_scale:!1,category:"objects"},hammer:{keywords:["tools","build","create"],"char":"\ud83d\udd28",fitzpatrick_scale:!1,category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],"char":"\u2692",fitzpatrick_scale:!1,category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],"char":"\ud83d\udee0",fitzpatrick_scale:!1,category:"objects"},pick:{keywords:["tools","dig"],"char":"\u26cf",fitzpatrick_scale:!1,category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],"char":"\ud83d\udd29",fitzpatrick_scale:!1,category:"objects"},gear:{keywords:["cog"],"char":"\u2699",fitzpatrick_scale:!1,category:"objects"},brick:{keywords:["bricks"],"char":"\ud83e\uddf1",fitzpatrick_scale:!1,category:"objects"},chains:{keywords:["lock","arrest"],"char":"\u26d3",fitzpatrick_scale:!1,category:"objects"},magnet:{keywords:["attraction","magnetic"],"char":"\ud83e\uddf2",fitzpatrick_scale:!1,category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],"char":"\ud83d\udd2b",fitzpatrick_scale:!1,category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],"char":"\ud83d\udca3",fitzpatrick_scale:!1,category:"objects"},firecracker:{keywords:["dynamite","boom","explode","explosion","explosive"],"char":"\ud83e\udde8",fitzpatrick_scale:!1,category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],"char":"\ud83d\udd2a",fitzpatrick_scale:!1,category:"objects"},dagger:{keywords:["weapon"],"char":"\ud83d\udde1",fitzpatrick_scale:!1,category:"objects"},crossed_swords:{keywords:["weapon"],"char":"\u2694",fitzpatrick_scale:!1,category:"objects"},shield:{keywords:["protection","security"],"char":"\ud83d\udee1",fitzpatrick_scale:!1,category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],"char":"\ud83d\udeac",fitzpatrick_scale:!1,category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary","death","pirate","evil"],"char":"\u2620",fitzpatrick_scale:!1,category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],"char":"\u26b0",fitzpatrick_scale:!1,category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],"char":"\u26b1",fitzpatrick_scale:!1,category:"objects"},amphora:{keywords:["vase","jar"],"char":"\ud83c\udffa",fitzpatrick_scale:!1,category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],"char":"\ud83d\udd2e",fitzpatrick_scale:!1,category:"objects"},prayer_beads:{keywords:["dhikr","religious"],"char":"\ud83d\udcff",fitzpatrick_scale:!1,category:"objects"},nazar_amulet:{keywords:["bead","charm"],"char":"\ud83e\uddff",fitzpatrick_scale:!1,category:"objects"},barber:{keywords:["hair","salon","style"],"char":"\ud83d\udc88",fitzpatrick_scale:!1,category:"objects"},alembic:{keywords:["distilling","science","experiment","chemistry"],"char":"\u2697",fitzpatrick_scale:!1,category:"objects"},telescope:{keywords:["stars","space","zoom","science","astronomy"],"char":"\ud83d\udd2d",fitzpatrick_scale:!1,category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],"char":"\ud83d\udd2c",fitzpatrick_scale:!1,category:"objects"},hole:{keywords:["embarrassing"],"char":"\ud83d\udd73",fitzpatrick_scale:!1,category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],"char":"\ud83d\udc8a",fitzpatrick_scale:!1,category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],"char":"\ud83d\udc89",fitzpatrick_scale:!1,category:"objects"},dna:{keywords:["biologist","genetics","life"],"char":"\ud83e\uddec",fitzpatrick_scale:!1,category:"objects"},microbe:{keywords:["amoeba","bacteria","germs"],"char":"\ud83e\udda0",fitzpatrick_scale:!1,category:"objects"},petri_dish:{keywords:["bacteria","biology","culture","lab"],"char":"\ud83e\uddeb",fitzpatrick_scale:!1,category:"objects"},test_tube:{keywords:["chemistry","experiment","lab","science"],"char":"\ud83e\uddea",fitzpatrick_scale:!1,category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],"char":"\ud83c\udf21",fitzpatrick_scale:!1,category:"objects"},broom:{keywords:["cleaning","sweeping","witch"],"char":"\ud83e\uddf9",fitzpatrick_scale:!1,category:"objects"},basket:{keywords:["laundry"],"char":"\ud83e\uddfa",fitzpatrick_scale:!1,category:"objects"},toilet_paper:{keywords:["roll"],"char":"\ud83e\uddfb",fitzpatrick_scale:!1,category:"objects"},label:{keywords:["sale","tag"],"char":"\ud83c\udff7",fitzpatrick_scale:!1,category:"objects"},bookmark:{keywords:["favorite","label","save"],"char":"\ud83d\udd16",fitzpatrick_scale:!1,category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],"char":"\ud83d\udebd",fitzpatrick_scale:!1,category:"objects"},shower:{keywords:["clean","water","bathroom"],"char":"\ud83d\udebf",fitzpatrick_scale:!1,category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],"char":"\ud83d\udec1",fitzpatrick_scale:!1,category:"objects"},soap:{keywords:["bar","bathing","cleaning","lather"],"char":"\ud83e\uddfc",fitzpatrick_scale:!1,category:"objects"},sponge:{keywords:["absorbing","cleaning","porous"],"char":"\ud83e\uddfd",fitzpatrick_scale:!1,category:"objects"},lotion_bottle:{keywords:["moisturizer","sunscreen"],"char":"\ud83e\uddf4",fitzpatrick_scale:!1,category:"objects"},key:{keywords:["lock","door","password"],"char":"\ud83d\udd11",fitzpatrick_scale:!1,category:"objects"},old_key:{keywords:["lock","door","password"],"char":"\ud83d\udddd",fitzpatrick_scale:!1,category:"objects"},couch_and_lamp:{keywords:["read","chill"],"char":"\ud83d\udecb",fitzpatrick_scale:!1,category:"objects"},sleeping_bed:{keywords:["bed","rest"],"char":"\ud83d\udecc",fitzpatrick_scale:!0,category:"objects"},bed:{keywords:["sleep","rest"],"char":"\ud83d\udecf",fitzpatrick_scale:!1,category:"objects"},door:{keywords:["house","entry","exit"],"char":"\ud83d\udeaa",fitzpatrick_scale:!1,category:"objects"},bellhop_bell:{keywords:["service"],"char":"\ud83d\udece",fitzpatrick_scale:!1,category:"objects"},teddy_bear:{keywords:["plush","stuffed"],"char":"\ud83e\uddf8",fitzpatrick_scale:!1,category:"objects"},framed_picture:{keywords:["photography"],"char":"\ud83d\uddbc",fitzpatrick_scale:!1,category:"objects"},world_map:{keywords:["location","direction"],"char":"\ud83d\uddfa",fitzpatrick_scale:!1,category:"objects"},parasol_on_ground:{keywords:["weather","summer"],"char":"\u26f1",fitzpatrick_scale:!1,category:"objects"},moyai:{keywords:["rock","easter island","moai"],"char":"\ud83d\uddff",fitzpatrick_scale:!1,category:"objects"},shopping:{keywords:["mall","buy","purchase"],"char":"\ud83d\udecd",fitzpatrick_scale:!1,category:"objects"},shopping_cart:{keywords:["trolley"],"char":"\ud83d\uded2",fitzpatrick_scale:!1,category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],"char":"\ud83c\udf88",fitzpatrick_scale:!1,category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],"char":"\ud83c\udf8f",fitzpatrick_scale:!1,category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],"char":"\ud83c\udf80",fitzpatrick_scale:!1,category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],"char":"\ud83c\udf81",fitzpatrick_scale:!1,category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],"char":"\ud83c\udf8a",fitzpatrick_scale:!1,category:"objects"},tada:{keywords:["party","congratulations","birthday","magic","circus","celebration"],"char":"\ud83c\udf89",fitzpatrick_scale:!1,category:"objects"},dolls:{keywords:["japanese","toy","kimono"],"char":"\ud83c\udf8e",fitzpatrick_scale:!1,category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],"char":"\ud83c\udf90",fitzpatrick_scale:!1,category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],"char":"\ud83c\udf8c",fitzpatrick_scale:!1,category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],"char":"\ud83c\udfee",fitzpatrick_scale:!1,category:"objects"},red_envelope:{keywords:["gift"],"char":"\ud83e\udde7",fitzpatrick_scale:!1,category:"objects"},email:{keywords:["letter","postal","inbox","communication"],"char":"\u2709\ufe0f",fitzpatrick_scale:!1,category:"objects"},envelope_with_arrow:{keywords:["email","communication"],"char":"\ud83d\udce9",fitzpatrick_scale:!1,category:"objects"},incoming_envelope:{keywords:["email","inbox"],"char":"\ud83d\udce8",fitzpatrick_scale:!1,category:"objects"},"e-mail":{keywords:["communication","inbox"],"char":"\ud83d\udce7",fitzpatrick_scale:!1,category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],"char":"\ud83d\udc8c",fitzpatrick_scale:!1,category:"objects"},postbox:{keywords:["email","letter","envelope"],"char":"\ud83d\udcee",fitzpatrick_scale:!1,category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],"char":"\ud83d\udcea",fitzpatrick_scale:!1,category:"objects"},mailbox:{keywords:["email","inbox","communication"],"char":"\ud83d\udceb",fitzpatrick_scale:!1,category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],"char":"\ud83d\udcec",fitzpatrick_scale:!1,category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],"char":"\ud83d\udced",fitzpatrick_scale:!1,category:"objects"},"package":{keywords:["mail","gift","cardboard","box","moving"],"char":"\ud83d\udce6",fitzpatrick_scale:!1,category:"objects"},postal_horn:{keywords:["instrument","music"],"char":"\ud83d\udcef",fitzpatrick_scale:!1,category:"objects"},inbox_tray:{keywords:["email","documents"],"char":"\ud83d\udce5",fitzpatrick_scale:!1,category:"objects"},outbox_tray:{keywords:["inbox","email"],"char":"\ud83d\udce4",fitzpatrick_scale:!1,category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],"char":"\ud83d\udcdc",fitzpatrick_scale:!1,category:"objects"},page_with_curl:{keywords:["documents","office","paper"],"char":"\ud83d\udcc3",fitzpatrick_scale:!1,category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],"char":"\ud83d\udcd1",fitzpatrick_scale:!1,category:"objects"},receipt:{keywords:["accounting","expenses"],"char":"\ud83e\uddfe",fitzpatrick_scale:!1,category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],"char":"\ud83d\udcca",fitzpatrick_scale:!1,category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],"char":"\ud83d\udcc8",fitzpatrick_scale:!1,category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],"char":"\ud83d\udcc9",fitzpatrick_scale:!1,category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],"char":"\ud83d\udcc4",fitzpatrick_scale:!1,category:"objects"},date:{keywords:["calendar","schedule"],"char":"\ud83d\udcc5",fitzpatrick_scale:!1,category:"objects"},calendar:{keywords:["schedule","date","planning"],"char":"\ud83d\udcc6",fitzpatrick_scale:!1,category:"objects"},spiral_calendar:{keywords:["date","schedule","planning"],"char":"\ud83d\uddd3",fitzpatrick_scale:!1,category:"objects"},card_index:{keywords:["business","stationery"],"char":"\ud83d\udcc7",fitzpatrick_scale:!1,category:"objects"},card_file_box:{keywords:["business","stationery"],"char":"\ud83d\uddc3",fitzpatrick_scale:!1,category:"objects"},ballot_box:{keywords:["election","vote"],"char":"\ud83d\uddf3",fitzpatrick_scale:!1,category:"objects"},file_cabinet:{keywords:["filing","organizing"],"char":"\ud83d\uddc4",fitzpatrick_scale:!1,category:"objects"},clipboard:{keywords:["stationery","documents"],"char":"\ud83d\udccb",fitzpatrick_scale:!1,category:"objects"},spiral_notepad:{keywords:["memo","stationery"],"char":"\ud83d\uddd2",fitzpatrick_scale:!1,category:"objects"},file_folder:{keywords:["documents","business","office"],"char":"\ud83d\udcc1",fitzpatrick_scale:!1,category:"objects"},open_file_folder:{keywords:["documents","load"],"char":"\ud83d\udcc2",fitzpatrick_scale:!1,category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],"char":"\ud83d\uddc2",fitzpatrick_scale:!1,category:"objects"},newspaper_roll:{keywords:["press","headline"],"char":"\ud83d\uddde",fitzpatrick_scale:!1,category:"objects"},newspaper:{keywords:["press","headline"],"char":"\ud83d\udcf0",fitzpatrick_scale:!1,category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],"char":"\ud83d\udcd3",fitzpatrick_scale:!1,category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],"char":"\ud83d\udcd5",fitzpatrick_scale:!1,category:"objects"},green_book:{keywords:["read","library","knowledge","study"],"char":"\ud83d\udcd7",fitzpatrick_scale:!1,category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],"char":"\ud83d\udcd8",fitzpatrick_scale:!1,category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],"char":"\ud83d\udcd9",fitzpatrick_scale:!1,category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],"char":"\ud83d\udcd4",fitzpatrick_scale:!1,category:"objects"},ledger:{keywords:["notes","paper"],"char":"\ud83d\udcd2",fitzpatrick_scale:!1,category:"objects"},books:{keywords:["literature","library","study"],"char":"\ud83d\udcda",fitzpatrick_scale:!1,category:"objects"},open_book:{keywords:["book","read","library","knowledge","literature","learn","study"],"char":"\ud83d\udcd6",fitzpatrick_scale:!1,category:"objects"},safety_pin:{keywords:["diaper"],"char":"\ud83e\uddf7",fitzpatrick_scale:!1,category:"objects"},link:{keywords:["rings","url"],"char":"\ud83d\udd17",fitzpatrick_scale:!1,category:"objects"},paperclip:{keywords:["documents","stationery"],"char":"\ud83d\udcce",fitzpatrick_scale:!1,category:"objects"},paperclips:{keywords:["documents","stationery"],"char":"\ud83d\udd87",fitzpatrick_scale:!1,category:"objects"},scissors:{keywords:["stationery","cut"],"char":"\u2702\ufe0f",fitzpatrick_scale:!1,category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],"char":"\ud83d\udcd0",fitzpatrick_scale:!1,category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],"char":"\ud83d\udccf",fitzpatrick_scale:!1,category:"objects"},abacus:{keywords:["calculation"],"char":"\ud83e\uddee",fitzpatrick_scale:!1,category:"objects"},pushpin:{keywords:["stationery","mark","here"],"char":"\ud83d\udccc",fitzpatrick_scale:!1,category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],"char":"\ud83d\udccd",fitzpatrick_scale:!1,category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],"char":"\ud83d\udea9",fitzpatrick_scale:!1,category:"objects"},white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],"char":"\ud83c\udff3",fitzpatrick_scale:!1,category:"objects"},black_flag:{keywords:["pirate"],"char":"\ud83c\udff4",fitzpatrick_scale:!1,category:"objects"},rainbow_flag:{keywords:["flag","rainbow","pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],"char":"\ud83c\udff3\ufe0f\u200d\ud83c\udf08",fitzpatrick_scale:!1,category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],"char":"\ud83d\udd10",fitzpatrick_scale:!1,category:"objects"},lock:{keywords:["security","password","padlock"],"char":"\ud83d\udd12",fitzpatrick_scale:!1,category:"objects"},unlock:{keywords:["privacy","security"],"char":"\ud83d\udd13",fitzpatrick_scale:!1,category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],"char":"\ud83d\udd0f",fitzpatrick_scale:!1,category:"objects"},pen:{keywords:["stationery","writing","write"],"char":"\ud83d\udd8a",fitzpatrick_scale:!1,category:"objects"},fountain_pen:{keywords:["stationery","writing","write"],"char":"\ud83d\udd8b",fitzpatrick_scale:!1,category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],"char":"\u2712\ufe0f",fitzpatrick_scale:!1,category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],"char":"\ud83d\udcdd",fitzpatrick_scale:!1,category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],"char":"\u270f\ufe0f",fitzpatrick_scale:!1,category:"objects"},crayon:{keywords:["drawing","creativity"],"char":"\ud83d\udd8d",fitzpatrick_scale:!1,category:"objects"},paintbrush:{keywords:["drawing","creativity","art"],"char":"\ud83d\udd8c",fitzpatrick_scale:!1,category:"objects"},mag:{keywords:["search","zoom","find","detective"],"char":"\ud83d\udd0d",fitzpatrick_scale:!1,category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],"char":"\ud83d\udd0e",fitzpatrick_scale:!1,category:"objects"},heart:{keywords:["love","like","valentines"],"char":"\u2764\ufe0f",fitzpatrick_scale:!1,category:"symbols"},orange_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83e\udde1",fitzpatrick_scale:!1,category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9b",fitzpatrick_scale:!1,category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9a",fitzpatrick_scale:!1,category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc99",fitzpatrick_scale:!1,category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9c",fitzpatrick_scale:!1,category:"symbols"},black_heart:{keywords:["evil"],"char":"\ud83d\udda4",fitzpatrick_scale:!1,category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],"char":"\ud83d\udc94",fitzpatrick_scale:!1,category:"symbols"},heavy_heart_exclamation:{keywords:["decoration","love"],"char":"\u2763",fitzpatrick_scale:!1,category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],"char":"\ud83d\udc95",fitzpatrick_scale:!1,category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9e",fitzpatrick_scale:!1,category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],"char":"\ud83d\udc93",fitzpatrick_scale:!1,category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],"char":"\ud83d\udc97",fitzpatrick_scale:!1,category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc96",fitzpatrick_scale:!1,category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],"char":"\ud83d\udc98",fitzpatrick_scale:!1,category:"symbols"},gift_heart:{keywords:["love","valentines"],"char":"\ud83d\udc9d",fitzpatrick_scale:!1,category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],"char":"\ud83d\udc9f",fitzpatrick_scale:!1,category:"symbols"},peace_symbol:{keywords:["hippie"],"char":"\u262e",fitzpatrick_scale:!1,category:"symbols"},latin_cross:{keywords:["christianity"],"char":"\u271d",fitzpatrick_scale:!1,category:"symbols"},star_and_crescent:{keywords:["islam"],"char":"\u262a",fitzpatrick_scale:!1,category:"symbols"},om:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":"\ud83d\udd49",fitzpatrick_scale:!1,category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":"\u2638",fitzpatrick_scale:!1,category:"symbols"},star_of_david:{keywords:["judaism"],"char":"\u2721",fitzpatrick_scale:!1,category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],"char":"\ud83d\udd2f",fitzpatrick_scale:!1,category:"symbols"},menorah:{keywords:["hanukkah","candles","jewish"],"char":"\ud83d\udd4e",fitzpatrick_scale:!1,category:"symbols"},yin_yang:{keywords:["balance"],"char":"\u262f",fitzpatrick_scale:!1,category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],"char":"\u2626",fitzpatrick_scale:!1,category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],"char":"\ud83d\uded0",fitzpatrick_scale:!1,category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],"char":"\u26ce",fitzpatrick_scale:!1,category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u2648",fitzpatrick_scale:!1,category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],"char":"\u2649",fitzpatrick_scale:!1,category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264a",fitzpatrick_scale:!1,category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264b",fitzpatrick_scale:!1,category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u264c",fitzpatrick_scale:!1,category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264d",fitzpatrick_scale:!1,category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u264e",fitzpatrick_scale:!1,category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],"char":"\u264f",fitzpatrick_scale:!1,category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u2650",fitzpatrick_scale:!1,category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u2651",fitzpatrick_scale:!1,category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u2652",fitzpatrick_scale:!1,category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],"char":"\u2653",fitzpatrick_scale:!1,category:"symbols"},id:{keywords:["purple-square","words"],"char":"\ud83c\udd94",fitzpatrick_scale:!1,category:"symbols"},atom_symbol:{keywords:["science","physics","chemistry"],"char":"\u269b",fitzpatrick_scale:!1,category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],"char":"\ud83c\ude33",fitzpatrick_scale:!1,category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],"char":"\ud83c\ude39",fitzpatrick_scale:!1,category:"symbols"},radioactive:{keywords:["nuclear","danger"],"char":"\u2622",fitzpatrick_scale:!1,category:"symbols"},biohazard:{keywords:["danger"],"char":"\u2623",fitzpatrick_scale:!1,category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],"char":"\ud83d\udcf4",fitzpatrick_scale:!1,category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],"char":"\ud83d\udcf3",fitzpatrick_scale:!1,category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],"char":"\ud83c\ude36",fitzpatrick_scale:!1,category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],"char":"\ud83c\ude1a",fitzpatrick_scale:!1,category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],"char":"\ud83c\ude38",fitzpatrick_scale:!1,category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],"char":"\ud83c\ude3a",fitzpatrick_scale:!1,category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],"char":"\ud83c\ude37\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],"char":"\u2734\ufe0f",fitzpatrick_scale:!1,category:"symbols"},vs:{keywords:["words","orange-square"],"char":"\ud83c\udd9a",fitzpatrick_scale:!1,category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],"char":"\ud83c\ude51",fitzpatrick_scale:!1,category:"symbols"},white_flower:{keywords:["japanese","spring"],"char":"\ud83d\udcae",fitzpatrick_scale:!1,category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],"char":"\ud83c\ude50",fitzpatrick_scale:!1,category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],"char":"\u3299\ufe0f",fitzpatrick_scale:!1,category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],"char":"\u3297\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],"char":"\ud83c\ude34",fitzpatrick_scale:!1,category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],"char":"\ud83c\ude35",fitzpatrick_scale:!1,category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],"char":"\ud83c\ude32",fitzpatrick_scale:!1,category:"symbols"},a:{keywords:["red-square","alphabet","letter"],"char":"\ud83c\udd70\ufe0f",fitzpatrick_scale:!1,category:"symbols"},b:{keywords:["red-square","alphabet","letter"],"char":"\ud83c\udd71\ufe0f",fitzpatrick_scale:!1,category:"symbols"},ab:{keywords:["red-square","alphabet"],"char":"\ud83c\udd8e",fitzpatrick_scale:!1,category:"symbols"},cl:{keywords:["alphabet","words","red-square"],"char":"\ud83c\udd91",fitzpatrick_scale:!1,category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],"char":"\ud83c\udd7e\ufe0f",fitzpatrick_scale:!1,category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],"char":"\ud83c\udd98",fitzpatrick_scale:!1,category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],"char":"\u26d4",fitzpatrick_scale:!1,category:"symbols"},name_badge:{keywords:["fire","forbid"],"char":"\ud83d\udcdb",fitzpatrick_scale:!1,category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],"char":"\ud83d\udeab",fitzpatrick_scale:!1,category:"symbols"},x:{keywords:["no","delete","remove","cancel","red"],"char":"\u274c",fitzpatrick_scale:!1,category:"symbols"},o:{keywords:["circle","round"],"char":"\u2b55",fitzpatrick_scale:!1,category:"symbols"},stop_sign:{keywords:["stop"],"char":"\ud83d\uded1",fitzpatrick_scale:!1,category:"symbols"},anger:{keywords:["angry","mad"],"char":"\ud83d\udca2",fitzpatrick_scale:!1,category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],"char":"\u2668\ufe0f",fitzpatrick_scale:!1,category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],"char":"\ud83d\udeb7",fitzpatrick_scale:!1,category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],"char":"\ud83d\udeaf",fitzpatrick_scale:!1,category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],"char":"\ud83d\udeb3",fitzpatrick_scale:!1,category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],"char":"\ud83d\udeb1",fitzpatrick_scale:!1,category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],"char":"\ud83d\udd1e",fitzpatrick_scale:!1,category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],"char":"\ud83d\udcf5",fitzpatrick_scale:!1,category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],"char":"\u2757",fitzpatrick_scale:!1,category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],"char":"\u2755",fitzpatrick_scale:!1,category:"symbols"},question:{keywords:["doubt","confused"],"char":"\u2753",fitzpatrick_scale:!1,category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],"char":"\u2754",fitzpatrick_scale:!1,category:"symbols"},bangbang:{keywords:["exclamation","surprise"],"char":"\u203c\ufe0f",fitzpatrick_scale:!1,category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],"char":"\u2049\ufe0f",fitzpatrick_scale:!1,category:"symbols"},100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],"char":"\ud83d\udcaf",fitzpatrick_scale:!1,category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],"char":"\ud83d\udd05",fitzpatrick_scale:!1,category:"symbols"},high_brightness:{keywords:["sun","light"],"char":"\ud83d\udd06",fitzpatrick_scale:!1,category:"symbols"},trident:{keywords:["weapon","spear"],"char":"\ud83d\udd31",fitzpatrick_scale:!1,category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],"char":"\u269c",fitzpatrick_scale:!1,category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],"char":"\u303d\ufe0f",fitzpatrick_scale:!1,category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],"char":"\u26a0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],"char":"\ud83d\udeb8",fitzpatrick_scale:!1,category:"symbols"},beginner:{keywords:["badge","shield"],"char":"\ud83d\udd30",fitzpatrick_scale:!1,category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],"char":"\u267b\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],"char":"\ud83c\ude2f",fitzpatrick_scale:!1,category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],"char":"\ud83d\udcb9",fitzpatrick_scale:!1,category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],"char":"\u2747\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],"char":"\u2733\ufe0f",fitzpatrick_scale:!1,category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],"char":"\u274e",fitzpatrick_scale:!1,category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer","tick"],"char":"\u2705",fitzpatrick_scale:!1,category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],"char":"\ud83d\udca0",fitzpatrick_scale:!1,category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],"char":"\ud83c\udf00",fitzpatrick_scale:!1,category:"symbols"},loop:{keywords:["tape","cassette"],"char":"\u27bf",fitzpatrick_scale:!1,category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],"char":"\ud83c\udf10",fitzpatrick_scale:!1,category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],"char":"\u24c2\ufe0f",fitzpatrick_scale:!1,category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],"char":"\ud83c\udfe7",fitzpatrick_scale:!1,category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],"char":"\ud83c\ude02\ufe0f",fitzpatrick_scale:!1,category:"symbols"},passport_control:{keywords:["custom","blue-square"],"char":"\ud83d\udec2",fitzpatrick_scale:!1,category:"symbols"},customs:{keywords:["passport","border","blue-square"],"char":"\ud83d\udec3",fitzpatrick_scale:!1,category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],"char":"\ud83d\udec4",fitzpatrick_scale:!1,category:"symbols"},left_luggage:{keywords:["blue-square","travel"],"char":"\ud83d\udec5",fitzpatrick_scale:!1,category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],"char":"\u267f",fitzpatrick_scale:!1,category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],"char":"\ud83d\udead",fitzpatrick_scale:!1,category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],"char":"\ud83d\udebe",fitzpatrick_scale:!1,category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],"char":"\ud83c\udd7f\ufe0f",fitzpatrick_scale:!1,category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],"char":"\ud83d\udeb0",fitzpatrick_scale:!1,category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],"char":"\ud83d\udeb9",fitzpatrick_scale:!1,category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],"char":"\ud83d\udeba",fitzpatrick_scale:!1,category:"symbols"},baby_symbol:{keywords:["orange-square","child"],"char":"\ud83d\udebc",fitzpatrick_scale:!1,category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],"char":"\ud83d\udebb",fitzpatrick_scale:!1,category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],"char":"\ud83d\udeae",fitzpatrick_scale:!1,category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],"char":"\ud83c\udfa6",fitzpatrick_scale:!1,category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],"char":"\ud83d\udcf6",fitzpatrick_scale:!1,category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],"char":"\ud83c\ude01",fitzpatrick_scale:!1,category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],"char":"\ud83c\udd96",fitzpatrick_scale:!1,category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],"char":"\ud83c\udd97",fitzpatrick_scale:!1,category:"symbols"},up:{keywords:["blue-square","above","high"],"char":"\ud83c\udd99",fitzpatrick_scale:!1,category:"symbols"},cool:{keywords:["words","blue-square"],"char":"\ud83c\udd92",fitzpatrick_scale:!1,category:"symbols"},"new":{keywords:["blue-square","words","start"],"char":"\ud83c\udd95",fitzpatrick_scale:!1,category:"symbols"},free:{keywords:["blue-square","words"],"char":"\ud83c\udd93",fitzpatrick_scale:!1,category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],"char":"0\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},one:{keywords:["blue-square","numbers","1"],"char":"1\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],"char":"2\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],"char":"3\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},four:{keywords:["4","numbers","blue-square"],"char":"4\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],"char":"5\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},six:{keywords:["6","numbers","blue-square"],"char":"6\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],"char":"7\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},eight:{keywords:["8","blue-square","numbers"],"char":"8\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},nine:{keywords:["blue-square","numbers","9"],"char":"9\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],"char":"\ud83d\udd1f",fitzpatrick_scale:!1,category:"symbols"},asterisk:{keywords:["star","keycap"],"char":"*\u20e3",fitzpatrick_scale:!1,category:"symbols"},1234:{keywords:["numbers","blue-square"],"char":"\ud83d\udd22",fitzpatrick_scale:!1,category:"symbols"},eject_button:{keywords:["blue-square"],"char":"\u23cf\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],"char":"\u25b6\ufe0f",fitzpatrick_scale:!1,category:"symbols"},pause_button:{keywords:["pause","blue-square"],"char":"\u23f8",fitzpatrick_scale:!1,category:"symbols"},next_track_button:{keywords:["forward","next","blue-square"],"char":"\u23ed",fitzpatrick_scale:!1,category:"symbols"},stop_button:{keywords:["blue-square"],"char":"\u23f9",fitzpatrick_scale:!1,category:"symbols"},record_button:{keywords:["blue-square"],"char":"\u23fa",fitzpatrick_scale:!1,category:"symbols"},play_or_pause_button:{keywords:["blue-square","play","pause"],"char":"\u23ef",fitzpatrick_scale:!1,category:"symbols"},previous_track_button:{keywords:["backward"],"char":"\u23ee",fitzpatrick_scale:!1,category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],"char":"\u23e9",fitzpatrick_scale:!1,category:"symbols"},rewind:{keywords:["play","blue-square"],"char":"\u23ea",fitzpatrick_scale:!1,category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],"char":"\ud83d\udd00",fitzpatrick_scale:!1,category:"symbols"},repeat:{keywords:["loop","record"],"char":"\ud83d\udd01",fitzpatrick_scale:!1,category:"symbols"},repeat_one:{keywords:["blue-square","loop"],"char":"\ud83d\udd02",fitzpatrick_scale:!1,category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],"char":"\u25c0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],"char":"\ud83d\udd3c",fitzpatrick_scale:!1,category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],"char":"\ud83d\udd3d",fitzpatrick_scale:!1,category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],"char":"\u23eb",fitzpatrick_scale:!1,category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],"char":"\u23ec",fitzpatrick_scale:!1,category:"symbols"},arrow_right:{keywords:["blue-square","next"],"char":"\u27a1\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],"char":"\u2b05\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],"char":"\u2b06\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],"char":"\u2b07\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],"char":"\u2197\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],"char":"\u2198\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],"char":"\u2199\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],"char":"\u2196\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],"char":"\u2195\ufe0f",fitzpatrick_scale:!1,category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],"char":"\u2194\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],"char":"\ud83d\udd04",fitzpatrick_scale:!1,category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],"char":"\u21aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],"char":"\u21a9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],"char":"\u2934\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],"char":"\u2935\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],"char":"#\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],"char":"\u2139\ufe0f",fitzpatrick_scale:!1,category:"symbols"},abc:{keywords:["blue-square","alphabet"],"char":"\ud83d\udd24",fitzpatrick_scale:!1,category:"symbols"},abcd:{keywords:["blue-square","alphabet"],"char":"\ud83d\udd21",fitzpatrick_scale:!1,category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],"char":"\ud83d\udd20",fitzpatrick_scale:!1,category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],"char":"\ud83d\udd23",fitzpatrick_scale:!1,category:"symbols"},musical_note:{keywords:["score","tone","sound"],"char":"\ud83c\udfb5",fitzpatrick_scale:!1,category:"symbols"},notes:{keywords:["music","score"],"char":"\ud83c\udfb6",fitzpatrick_scale:!1,category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],"char":"\u3030\ufe0f",fitzpatrick_scale:!1,category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],"char":"\u27b0",fitzpatrick_scale:!1,category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],"char":"\u2714\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],"char":"\ud83d\udd03",fitzpatrick_scale:!1,category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],"char":"\u2795",fitzpatrick_scale:!1,category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],"char":"\u2796",fitzpatrick_scale:!1,category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],"char":"\u2797",fitzpatrick_scale:!1,category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],"char":"\u2716\ufe0f",fitzpatrick_scale:!1,category:"symbols"},infinity:{keywords:["forever"],"char":"\u267e",fitzpatrick_scale:!1,category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],"char":"\ud83d\udcb2",fitzpatrick_scale:!1,category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],"char":"\ud83d\udcb1",fitzpatrick_scale:!1,category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],"char":"\xa9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},registered:{keywords:["alphabet","circle"],"char":"\xae\ufe0f",fitzpatrick_scale:!1,category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],"char":"\u2122\ufe0f",fitzpatrick_scale:!1,category:"symbols"},end:{keywords:["words","arrow"],"char":"\ud83d\udd1a",fitzpatrick_scale:!1,category:"symbols"},back:{keywords:["arrow","words","return"],"char":"\ud83d\udd19",fitzpatrick_scale:!1,category:"symbols"},on:{keywords:["arrow","words"],"char":"\ud83d\udd1b",fitzpatrick_scale:!1,category:"symbols"},top:{keywords:["words","blue-square"],"char":"\ud83d\udd1d",fitzpatrick_scale:!1,category:"symbols"},soon:{keywords:["arrow","words"],"char":"\ud83d\udd1c",fitzpatrick_scale:!1,category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes","tick"],"char":"\u2611\ufe0f",fitzpatrick_scale:!1,category:"symbols"},radio_button:{keywords:["input","old","music","circle"],"char":"\ud83d\udd18",fitzpatrick_scale:!1,category:"symbols"},white_circle:{keywords:["shape","round"],"char":"\u26aa",fitzpatrick_scale:!1,category:"symbols"},black_circle:{keywords:["shape","button","round"],"char":"\u26ab",fitzpatrick_scale:!1,category:"symbols"},red_circle:{keywords:["shape","error","danger"],"char":"\ud83d\udd34",fitzpatrick_scale:!1,category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],"char":"\ud83d\udd35",fitzpatrick_scale:!1,category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd38",fitzpatrick_scale:!1,category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd39",fitzpatrick_scale:!1,category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd36",fitzpatrick_scale:!1,category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd37",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],"char":"\ud83d\udd3a",fitzpatrick_scale:!1,category:"symbols"},black_small_square:{keywords:["shape","icon"],"char":"\u25aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_small_square:{keywords:["shape","icon"],"char":"\u25ab\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_large_square:{keywords:["shape","icon","button"],"char":"\u2b1b",fitzpatrick_scale:!1,category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],"char":"\u2b1c",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],"char":"\ud83d\udd3b",fitzpatrick_scale:!1,category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],"char":"\u25fc\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],"char":"\u25fb\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],"char":"\u25fe",fitzpatrick_scale:!1,category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],"char":"\u25fd",fitzpatrick_scale:!1,category:"symbols"},black_square_button:{keywords:["shape","input","frame"],"char":"\ud83d\udd32",fitzpatrick_scale:!1,category:"symbols"},white_square_button:{keywords:["shape","input"],"char":"\ud83d\udd33",fitzpatrick_scale:!1,category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],"char":"\ud83d\udd08",fitzpatrick_scale:!1,category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],"char":"\ud83d\udd09",fitzpatrick_scale:!1,category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],"char":"\ud83d\udd0a",fitzpatrick_scale:!1,category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],"char":"\ud83d\udd07",fitzpatrick_scale:!1,category:"symbols"},mega:{keywords:["sound","speaker","volume"],"char":"\ud83d\udce3",fitzpatrick_scale:!1,category:"symbols"},loudspeaker:{keywords:["volume","sound"],"char":"\ud83d\udce2",fitzpatrick_scale:!1,category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],"char":"\ud83d\udd14",fitzpatrick_scale:!1,category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],"char":"\ud83d\udd15",fitzpatrick_scale:!1,category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],"char":"\ud83c\udccf",fitzpatrick_scale:!1,category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],"char":"\ud83c\udc04",fitzpatrick_scale:!1,category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],"char":"\u2660\ufe0f",fitzpatrick_scale:!1,category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],"char":"\u2663\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],"char":"\u2665\ufe0f",fitzpatrick_scale:!1,category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],"char":"\u2666\ufe0f",fitzpatrick_scale:!1,category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],"char":"\ud83c\udfb4",fitzpatrick_scale:!1,category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking","dream"],"char":"\ud83d\udcad",fitzpatrick_scale:!1,category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],"char":"\ud83d\uddef",fitzpatrick_scale:!1,category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],"char":"\ud83d\udcac",fitzpatrick_scale:!1,category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],"char":"\ud83d\udde8",fitzpatrick_scale:!1,category:"symbols"},clock1:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd50",fitzpatrick_scale:!1,category:"symbols"},clock2:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd51",fitzpatrick_scale:!1,category:"symbols"},clock3:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd52",fitzpatrick_scale:!1,category:"symbols"},clock4:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd53",fitzpatrick_scale:!1,category:"symbols"},clock5:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd54",fitzpatrick_scale:!1,category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],"char":"\ud83d\udd55",fitzpatrick_scale:!1,category:"symbols"},clock7:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd56",fitzpatrick_scale:!1,category:"symbols"},clock8:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd57",fitzpatrick_scale:!1,category:"symbols"},clock9:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd58",fitzpatrick_scale:!1,category:"symbols"},clock10:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd59",fitzpatrick_scale:!1,category:"symbols"},clock11:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5a",fitzpatrick_scale:!1,category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],"char":"\ud83d\udd5b",fitzpatrick_scale:!1,category:"symbols"},clock130:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5c",fitzpatrick_scale:!1,category:"symbols"},clock230:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5d",fitzpatrick_scale:!1,category:"symbols"},clock330:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5e",fitzpatrick_scale:!1,category:"symbols"},clock430:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5f",fitzpatrick_scale:!1,category:"symbols"},clock530:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd60",fitzpatrick_scale:!1,category:"symbols"},clock630:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd61",fitzpatrick_scale:!1,category:"symbols"},clock730:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd62",fitzpatrick_scale:!1,category:"symbols"},clock830:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd63",fitzpatrick_scale:!1,category:"symbols"},clock930:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd64",fitzpatrick_scale:!1,category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd65",fitzpatrick_scale:!1,category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd66",fitzpatrick_scale:!1,category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd67",fitzpatrick_scale:!1,category:"symbols"},afghanistan:{keywords:["af","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},aland_islands:{keywords:["\xc5land","islands","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},albania:{keywords:["al","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},algeria:{keywords:["dz","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},american_samoa:{keywords:["american","ws","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},andorra:{keywords:["ad","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},angola:{keywords:["ao","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},anguilla:{keywords:["ai","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},antarctica:{keywords:["aq","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},antigua_barbuda:{keywords:["antigua","barbuda","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},argentina:{keywords:["ar","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},armenia:{keywords:["am","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},aruba:{keywords:["aw","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},australia:{keywords:["au","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},austria:{keywords:["at","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},azerbaijan:{keywords:["az","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},bahamas:{keywords:["bs","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},bahrain:{keywords:["bh","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},bangladesh:{keywords:["bd","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},barbados:{keywords:["bb","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},belarus:{keywords:["by","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},belgium:{keywords:["be","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},belize:{keywords:["bz","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},benin:{keywords:["bj","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},bermuda:{keywords:["bm","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},bhutan:{keywords:["bt","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},bolivia:{keywords:["bo","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},caribbean_netherlands:{keywords:["bonaire","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},bosnia_herzegovina:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},botswana:{keywords:["bw","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},brazil:{keywords:["br","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},british_indian_ocean_territory:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},british_virgin_islands:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},brunei:{keywords:["bn","darussalam","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},bulgaria:{keywords:["bg","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},burkina_faso:{keywords:["burkina","faso","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},burundi:{keywords:["bi","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},cape_verde:{keywords:["cabo","verde","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},cambodia:{keywords:["kh","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},cameroon:{keywords:["cm","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},canada:{keywords:["ca","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},canary_islands:{keywords:["canary","islands","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},cayman_islands:{keywords:["cayman","islands","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},central_african_republic:{keywords:["central","african","republic","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},chad:{keywords:["td","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},chile:{keywords:["flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],"char":"\ud83c\udde8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},christmas_island:{keywords:["christmas","island","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},cocos_islands:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},colombia:{keywords:["co","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},comoros:{keywords:["km","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},congo_brazzaville:{keywords:["congo","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},congo_kinshasa:{keywords:["congo","democratic","republic","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},cook_islands:{keywords:["cook","islands","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},costa_rica:{keywords:["costa","rica","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},croatia:{keywords:["hr","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},cuba:{keywords:["cu","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},curacao:{keywords:["cura\xe7ao","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},cyprus:{keywords:["cy","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},czech_republic:{keywords:["cz","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},denmark:{keywords:["dk","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},djibouti:{keywords:["dj","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},dominica:{keywords:["dm","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},dominican_republic:{keywords:["dominican","republic","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ecuador:{keywords:["ec","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},egypt:{keywords:["eg","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},el_salvador:{keywords:["el","salvador","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},equatorial_guinea:{keywords:["equatorial","gn","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},eritrea:{keywords:["er","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},estonia:{keywords:["ee","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ethiopia:{keywords:["et","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},eu:{keywords:["european","union","flag","banner"],"char":"\ud83c\uddea\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},falkland_islands:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},faroe_islands:{keywords:["faroe","islands","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},fiji:{keywords:["fj","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},finland:{keywords:["fi","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],"char":"\ud83c\uddeb\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},french_guiana:{keywords:["french","guiana","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_polynesia:{keywords:["french","polynesia","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_southern_territories:{keywords:["french","southern","territories","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},gabon:{keywords:["ga","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},gambia:{keywords:["gm","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},georgia:{keywords:["ge","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},de:{keywords:["german","nation","flag","country","banner"],"char":"\ud83c\udde9\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ghana:{keywords:["gh","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},gibraltar:{keywords:["gi","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},greece:{keywords:["gr","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},greenland:{keywords:["gl","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},grenada:{keywords:["gd","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},guadeloupe:{keywords:["gp","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},guam:{keywords:["gu","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},guatemala:{keywords:["gt","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},guernsey:{keywords:["gg","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},guinea:{keywords:["gn","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},guinea_bissau:{keywords:["gw","bissau","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},guyana:{keywords:["gy","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},haiti:{keywords:["ht","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},honduras:{keywords:["hn","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},hong_kong:{keywords:["hong","kong","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},hungary:{keywords:["hu","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},iceland:{keywords:["is","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},india:{keywords:["in","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},iran:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},iraq:{keywords:["iq","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},ireland:{keywords:["ie","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},isle_of_man:{keywords:["isle","man","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},israel:{keywords:["il","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},cote_divoire:{keywords:["ivory","coast","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},jamaica:{keywords:["jm","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],"char":"\ud83c\uddef\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},jersey:{keywords:["je","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},jordan:{keywords:["jo","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},kazakhstan:{keywords:["kz","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},kenya:{keywords:["ke","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},kiribati:{keywords:["ki","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},kosovo:{keywords:["xk","flag","nation","country","banner"],"char":"\ud83c\uddfd\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},kuwait:{keywords:["kw","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},kyrgyzstan:{keywords:["kg","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},laos:{keywords:["lao","democratic","republic","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},latvia:{keywords:["lv","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},lebanon:{keywords:["lb","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},lesotho:{keywords:["ls","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},liberia:{keywords:["lr","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},libya:{keywords:["ly","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},liechtenstein:{keywords:["li","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},lithuania:{keywords:["lt","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},luxembourg:{keywords:["lu","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},macau:{keywords:["macao","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},macedonia:{keywords:["macedonia,","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},madagascar:{keywords:["mg","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},malawi:{keywords:["mw","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},malaysia:{keywords:["my","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},maldives:{keywords:["mv","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},mali:{keywords:["ml","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},malta:{keywords:["mt","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},marshall_islands:{keywords:["marshall","islands","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},martinique:{keywords:["mq","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},mauritania:{keywords:["mr","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},mauritius:{keywords:["mu","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},mayotte:{keywords:["yt","flag","nation","country","banner"],"char":"\ud83c\uddfe\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},mexico:{keywords:["mx","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},micronesia:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},moldova:{keywords:["moldova,","republic","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},monaco:{keywords:["mc","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},mongolia:{keywords:["mn","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},montenegro:{keywords:["me","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},montserrat:{keywords:["ms","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},morocco:{keywords:["ma","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},mozambique:{keywords:["mz","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},myanmar:{keywords:["mm","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},namibia:{keywords:["na","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},nauru:{keywords:["nr","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},nepal:{keywords:["np","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},netherlands:{keywords:["nl","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},new_caledonia:{keywords:["new","caledonia","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},new_zealand:{keywords:["new","zealand","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},nicaragua:{keywords:["ni","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},niger:{keywords:["ne","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},niue:{keywords:["nu","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},norfolk_island:{keywords:["norfolk","island","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},northern_mariana_islands:{keywords:["northern","mariana","islands","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},north_korea:{keywords:["north","korea","nation","flag","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},norway:{keywords:["no","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},oman:{keywords:["om_symbol","flag","nation","country","banner"],"char":"\ud83c\uddf4\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},pakistan:{keywords:["pk","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},palau:{keywords:["pw","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},palestinian_territories:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},panama:{keywords:["pa","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},papua_new_guinea:{keywords:["papua","new","guinea","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},paraguay:{keywords:["py","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},peru:{keywords:["pe","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},philippines:{keywords:["ph","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},pitcairn_islands:{keywords:["pitcairn","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},poland:{keywords:["pl","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},portugal:{keywords:["pt","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},puerto_rico:{keywords:["puerto","rico","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},qatar:{keywords:["qa","flag","nation","country","banner"],"char":"\ud83c\uddf6\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},reunion:{keywords:["r\xe9union","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},romania:{keywords:["ro","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},rwanda:{keywords:["rw","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},st_barthelemy:{keywords:["saint","barth\xe9lemy","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},st_helena:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},st_kitts_nevis:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},st_lucia:{keywords:["saint","lucia","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},st_pierre_miquelon:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},st_vincent_grenadines:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},samoa:{keywords:["ws","flag","nation","country","banner"],"char":"\ud83c\uddfc\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},san_marino:{keywords:["san","marino","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},sao_tome_principe:{keywords:["sao","tome","principe","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},senegal:{keywords:["sn","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},serbia:{keywords:["rs","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},seychelles:{keywords:["sc","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},sierra_leone:{keywords:["sierra","leone","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},singapore:{keywords:["sg","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},sint_maarten:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},slovakia:{keywords:["sk","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},slovenia:{keywords:["si","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},solomon_islands:{keywords:["solomon","islands","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},somalia:{keywords:["so","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},south_africa:{keywords:["south","africa","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},south_georgia_south_sandwich_islands:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},south_sudan:{keywords:["south","sd","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},sri_lanka:{keywords:["sri","lanka","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},sudan:{keywords:["sd","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},suriname:{keywords:["sr","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},swaziland:{keywords:["sz","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},sweden:{keywords:["se","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},switzerland:{keywords:["ch","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},syria:{keywords:["syrian","arab","republic","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},taiwan:{keywords:["tw","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},tajikistan:{keywords:["tj","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},tanzania:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},thailand:{keywords:["th","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},timor_leste:{keywords:["timor","leste","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},togo:{keywords:["tg","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},tokelau:{keywords:["tk","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},tonga:{keywords:["to","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},trinidad_tobago:{keywords:["trinidad","tobago","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},tunisia:{keywords:["tn","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},turks_caicos_islands:{keywords:["turks","caicos","islands","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},uganda:{keywords:["ug","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},ukraine:{keywords:["ua","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},united_arab_emirates:{keywords:["united","arab","emirates","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},uk:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],"char":"\ud83c\uddec\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},england:{keywords:["flag","english"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},scotland:{keywords:["flag","scottish"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},wales:{keywords:["flag","welsh"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},us_virgin_islands:{keywords:["virgin","islands","us","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},uruguay:{keywords:["uy","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},uzbekistan:{keywords:["uz","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},vanuatu:{keywords:["vu","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},vatican_city:{keywords:["vatican","city","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},venezuela:{keywords:["ve","bolivarian","republic","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},vietnam:{keywords:["viet","nam","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},wallis_futuna:{keywords:["wallis","futuna","flag","nation","country","banner"],"char":"\ud83c\uddfc\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},western_sahara:{keywords:["western","sahara","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},yemen:{keywords:["ye","flag","nation","country","banner"],"char":"\ud83c\uddfe\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},zambia:{keywords:["zm","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},zimbabwe:{keywords:["zw","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},united_nations:{keywords:["un","flag","banner"],"char":"\ud83c\uddfa\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},pirate_flag:{keywords:["skull","crossbones","flag","banner"],"char":"\ud83c\udff4\u200d\u2620\ufe0f",fitzpatrick_scale:!1,category:"flags"}}); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/emoticons/plugin.js b/component/pear/module/tinymce/tinymce/plugins/emoticons/plugin.js deleted file mode 100644 index e939611..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/emoticons/plugin.js +++ /dev/null @@ -1,605 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -(function () { - 'use strict'; - - var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); - - var DEFAULT_ID = 'tinymce.plugins.emoticons'; - var getEmoticonDatabase = function (editor) { - return editor.getParam('emoticons_database', 'emojis', 'string'); - }; - var getEmoticonDatabaseUrl = function (editor, pluginUrl) { - var database = getEmoticonDatabase(editor); - return editor.getParam('emoticons_database_url', pluginUrl + '/js/' + database + editor.suffix + '.js', 'string'); - }; - var getEmoticonDatabaseId = function (editor) { - return editor.getParam('emoticons_database_id', DEFAULT_ID, 'string'); - }; - var getAppendedEmoticons = function (editor) { - return editor.getParam('emoticons_append', {}, 'object'); - }; - var getEmotionsImageUrl = function (editor) { - return editor.getParam('emoticons_images_url', 'https://twemoji.maxcdn.com/v/13.0.1/72x72/', 'string'); - }; - - var __assign = function () { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - - var Cell = function (initial) { - var value = initial; - var get = function () { - return value; - }; - var set = function (v) { - value = v; - }; - return { - get: get, - set: set - }; - }; - - var hasOwnProperty = Object.prototype.hasOwnProperty; - var shallow = function (old, nu) { - return nu; - }; - var baseMerge = function (merger) { - return function () { - var objects = new Array(arguments.length); - for (var i = 0; i < objects.length; i++) { - objects[i] = arguments[i]; - } - if (objects.length === 0) { - throw new Error('Can\'t merge zero objects'); - } - var ret = {}; - for (var j = 0; j < objects.length; j++) { - var curObject = objects[j]; - for (var key in curObject) { - if (hasOwnProperty.call(curObject, key)) { - ret[key] = merger(ret[key], curObject[key]); - } - } - } - return ret; - }; - }; - var merge = baseMerge(shallow); - - var noop = function () { - }; - var constant = function (value) { - return function () { - return value; - }; - }; - var never = constant(false); - var always = constant(true); - - var none = function () { - return NONE; - }; - var NONE = function () { - var eq = function (o) { - return o.isNone(); - }; - var call = function (thunk) { - return thunk(); - }; - var id = function (n) { - return n; - }; - var me = { - fold: function (n, _s) { - return n(); - }, - is: never, - isSome: never, - isNone: always, - getOr: id, - getOrThunk: call, - getOrDie: function (msg) { - throw new Error(msg || 'error: getOrDie called on none.'); - }, - getOrNull: constant(null), - getOrUndefined: constant(undefined), - or: id, - orThunk: call, - map: none, - each: noop, - bind: none, - exists: never, - forall: always, - filter: none, - equals: eq, - equals_: eq, - toArray: function () { - return []; - }, - toString: constant('none()') - }; - return me; - }(); - var some = function (a) { - var constant_a = constant(a); - var self = function () { - return me; - }; - var bind = function (f) { - return f(a); - }; - var me = { - fold: function (n, s) { - return s(a); - }, - is: function (v) { - return a === v; - }, - isSome: always, - isNone: never, - getOr: constant_a, - getOrThunk: constant_a, - getOrDie: constant_a, - getOrNull: constant_a, - getOrUndefined: constant_a, - or: self, - orThunk: self, - map: function (f) { - return some(f(a)); - }, - each: function (f) { - f(a); - }, - bind: bind, - exists: bind, - forall: bind, - filter: function (f) { - return f(a) ? me : NONE; - }, - toArray: function () { - return [a]; - }, - toString: function () { - return 'some(' + a + ')'; - }, - equals: function (o) { - return o.is(a); - }, - equals_: function (o, elementEq) { - return o.fold(never, function (b) { - return elementEq(a, b); - }); - } - }; - return me; - }; - var from = function (value) { - return value === null || value === undefined ? NONE : some(value); - }; - var Optional = { - some: some, - none: none, - from: from - }; - - var keys = Object.keys; - var hasOwnProperty$1 = Object.hasOwnProperty; - var each = function (obj, f) { - var props = keys(obj); - for (var k = 0, len = props.length; k < len; k++) { - var i = props[k]; - var x = obj[i]; - f(x, i); - } - }; - var map = function (obj, f) { - return tupleMap(obj, function (x, i) { - return { - k: i, - v: f(x, i) - }; - }); - }; - var tupleMap = function (obj, f) { - var r = {}; - each(obj, function (x, i) { - var tuple = f(x, i); - r[tuple.k] = tuple.v; - }); - return r; - }; - var has = function (obj, key) { - return hasOwnProperty$1.call(obj, key); - }; - - var checkRange = function (str, substr, start) { - return substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr; - }; - var contains = function (str, substr) { - return str.indexOf(substr) !== -1; - }; - var startsWith = function (str, prefix) { - return checkRange(str, prefix, 0); - }; - - var global$1 = tinymce.util.Tools.resolve('tinymce.Resource'); - - var global$2 = tinymce.util.Tools.resolve('tinymce.util.Delay'); - - var global$3 = tinymce.util.Tools.resolve('tinymce.util.Promise'); - - var ALL_CATEGORY = 'All'; - var categoryNameMap = { - symbols: 'Symbols', - people: 'People', - animals_and_nature: 'Animals and Nature', - food_and_drink: 'Food and Drink', - activity: 'Activity', - travel_and_places: 'Travel and Places', - objects: 'Objects', - flags: 'Flags', - user: 'User Defined' - }; - var translateCategory = function (categories, name) { - return has(categories, name) ? categories[name] : name; - }; - var getUserDefinedEmoticons = function (editor) { - var userDefinedEmoticons = getAppendedEmoticons(editor); - return map(userDefinedEmoticons, function (value) { - return __assign({ - keywords: [], - category: 'user' - }, value); - }); - }; - var initDatabase = function (editor, databaseUrl, databaseId) { - var categories = Cell(Optional.none()); - var all = Cell(Optional.none()); - var emojiImagesUrl = getEmotionsImageUrl(editor); - var getEmoji = function (lib) { - if (startsWith(lib.char, '= max; - }; - }); - for (var i = 0; i < list.length; i++) { - if (pattern.length === 0 || emojiMatches(list[i], lowerCasePattern)) { - matches.push({ - value: list[i].char, - text: list[i].title, - icon: list[i].char - }); - if (reachedLimit(matches.length)) { - break; - } - } - } - return matches; - }; - - var init = function (editor, database) { - editor.ui.registry.addAutocompleter('emoticons', { - ch: ':', - columns: 'auto', - minChars: 2, - fetch: function (pattern, maxResults) { - return database.waitForLoad().then(function () { - var candidates = database.listAll(); - return emojisFrom(candidates, pattern, Optional.some(maxResults)); - }); - }, - onAction: function (autocompleteApi, rng, value) { - editor.selection.setRng(rng); - editor.insertContent(value); - autocompleteApi.hide(); - } - }); - }; - - var last = function (fn, rate) { - var timer = null; - var cancel = function () { - if (timer !== null) { - clearTimeout(timer); - timer = null; - } - }; - var throttle = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - if (timer !== null) { - clearTimeout(timer); - } - timer = setTimeout(function () { - fn.apply(null, args); - timer = null; - }, rate); - }; - return { - cancel: cancel, - throttle: throttle - }; - }; - - var insertEmoticon = function (editor, ch) { - editor.insertContent(ch); - }; - - var patternName = 'pattern'; - var open = function (editor, database) { - var initialState = { - pattern: '', - results: emojisFrom(database.listAll(), '', Optional.some(300)) - }; - var currentTab = Cell(ALL_CATEGORY); - var scan = function (dialogApi) { - var dialogData = dialogApi.getData(); - var category = currentTab.get(); - var candidates = database.listCategory(category); - var results = emojisFrom(candidates, dialogData[patternName], category === ALL_CATEGORY ? Optional.some(300) : Optional.none()); - dialogApi.setData({ results: results }); - }; - var updateFilter = last(function (dialogApi) { - scan(dialogApi); - }, 200); - var searchField = { - label: 'Search', - type: 'input', - name: patternName - }; - var resultsField = { - type: 'collection', - name: 'results' - }; - var getInitialState = function () { - var body = { - type: 'tabpanel', - tabs: map$1(database.listCategories(), function (cat) { - return { - title: cat, - name: cat, - items: [ - searchField, - resultsField - ] - }; - }) - }; - return { - title: 'Emoticons', - size: 'normal', - body: body, - initialData: initialState, - onTabChange: function (dialogApi, details) { - currentTab.set(details.newTabName); - updateFilter.throttle(dialogApi); - }, - onChange: updateFilter.throttle, - onAction: function (dialogApi, actionData) { - if (actionData.name === 'results') { - insertEmoticon(editor, actionData.value); - dialogApi.close(); - } - }, - buttons: [{ - type: 'cancel', - text: 'Close', - primary: true - }] - }; - }; - var dialogApi = editor.windowManager.open(getInitialState()); - dialogApi.focus(patternName); - if (!database.hasLoaded()) { - dialogApi.block('Loading emoticons...'); - database.waitForLoad().then(function () { - dialogApi.redial(getInitialState()); - updateFilter.throttle(dialogApi); - dialogApi.focus(patternName); - dialogApi.unblock(); - }).catch(function (_err) { - dialogApi.redial({ - title: 'Emoticons', - body: { - type: 'panel', - items: [{ - type: 'alertbanner', - level: 'error', - icon: 'warning', - text: '

                                      Could not load emoticons

                                      ' - }] - }, - buttons: [{ - type: 'cancel', - text: 'Close', - primary: true - }], - initialData: { - pattern: '', - results: [] - } - }); - dialogApi.focus(patternName); - dialogApi.unblock(); - }); - } - }; - - var register = function (editor, database) { - var onAction = function () { - return open(editor, database); - }; - editor.ui.registry.addButton('emoticons', { - tooltip: 'Emoticons', - icon: 'emoji', - onAction: onAction - }); - editor.ui.registry.addMenuItem('emoticons', { - text: 'Emoticons...', - icon: 'emoji', - onAction: onAction - }); - }; - - function Plugin () { - global.add('emoticons', function (editor, pluginUrl) { - var databaseUrl = getEmoticonDatabaseUrl(editor, pluginUrl); - var databaseId = getEmoticonDatabaseId(editor); - var database = initDatabase(editor, databaseUrl, databaseId); - register(editor, database); - init(editor, database); - setup(editor); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/emoticons/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/emoticons/plugin.min.js deleted file mode 100644 index 250d786..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/emoticons/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var u,t,n,e,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=function(){return(o=Object.assign||function(t){for(var n,e=1,r=arguments.length;e=i.length&&o.substr(u,u+i.length)===i?e["char"].replace(/src="([^"]+)"/,function(t,n){return'src="'+f+n+'"'}):e["char"]),category:_(A,t.category)},c=l[a.category]!==undefined?l[a.category]:[];l[a.category]=c.concat([a]),s.push(a)}),r.set(h.some(l)),n.set(h.some(s))};e.on("init",function(){O.load(t,o).then(function(t){var n=T(e);i(c(t,n))},function(t){console.log("Failed to load emoticons: "+t),r.set(h.some({})),n.set(h.some([]))})});var u=function(){return n.get().getOr([])},a=function(){return r.get().isSome()&&n.get().isSome()};return{listCategories:function(){return[k].concat(y(r.get().getOr({})))},hasLoaded:a,waitForLoad:function(){return a()?j.resolve(!0):new j(function(t,n){var e=15,r=C.setInterval(function(){a()?(C.clearInterval(r),t(!0)):--e<0&&(console.log("Could not load emojis from url: "+o),C.clearInterval(r),n(!1))},100)})},listAll:u,listCategory:function(n){return n===k?u():r.get().bind(function(t){return h.from(t[n])}).getOr([])}}},x=function(t,n,e){for(var r=[],o=n.toLowerCase(),i=e.fold(function(){return l},function(n){return function(t){return n<=t}}),u=0;uCould not load emoticons

                                      "}]},buttons:[{type:"cancel",text:"Close",primary:!0}],initialData:{pattern:"",results:[]}}),f.focus(D),f.unblock()}))};r.add("emoticons",function(t,n){var e,r,o,i,u,a,c,l,s,f=(r=n,o=(e=t).getParam("emoticons_database","emojis","string"),e.getParam("emoticons_database_url",r+"/js/"+o+e.suffix+".js","string")),m=t.getParam("emoticons_database_id","tinymce.plugins.emoticons","string"),g=P(t,f,m);u=g,a=function(){return L(i,u)},(i=t).ui.registry.addButton("emoticons",{tooltip:"Emoticons",icon:"emoji",onAction:a}),i.ui.registry.addMenuItem("emoticons",{text:"Emoticons...",icon:"emoji",onAction:a}),l=g,(c=t).ui.registry.addAutocompleter("emoticons",{ch:":",columns:"auto",minChars:2,fetch:function(n,e){return l.waitForLoad().then(function(){var t=l.listAll();return x(t,n,h.some(e))})},onAction:function(t,n,e){c.selection.setRng(n),c.insertContent(e),t.hide()}}),(s=t).on("PreInit",function(){s.parser.addAttributeFilter("data-emoticon",function(t){!function(t,n){for(var e=0,r=t.length;e'); - }; - var getProtect = function (editor) { - return editor.getParam('protect'); - }; - - var parseHeader = function (head) { - return global$2({ - validate: false, - root_name: '#document' - }).parse(head, { format: 'xhtml' }); - }; - var htmlToData = function (editor, head) { - var headerFragment = parseHeader(head); - var data = {}; - var elm, matches; - function getAttr(elm, name) { - var value = elm.attr(name); - return value || ''; - } - data.fontface = getDefaultFontFamily(editor); - data.fontsize = getDefaultFontSize(editor); - elm = headerFragment.firstChild; - if (elm.type === 7) { - data.xml_pi = true; - matches = /encoding="([^"]+)"/.exec(elm.value); - if (matches) { - data.docencoding = matches[1]; - } - } - elm = headerFragment.getAll('#doctype')[0]; - if (elm) { - data.doctype = ''; - } - elm = headerFragment.getAll('title')[0]; - if (elm && elm.firstChild) { - data.title = elm.firstChild.value; - } - global$1.each(headerFragment.getAll('meta'), function (meta) { - var name = meta.attr('name'); - var httpEquiv = meta.attr('http-equiv'); - var matches; - if (name) { - data[name.toLowerCase()] = meta.attr('content'); - } else if (httpEquiv === 'Content-Type') { - matches = /charset\s*=\s*(.*)\s*/gi.exec(meta.attr('content')); - if (matches) { - data.docencoding = matches[1]; - } - } - }); - elm = headerFragment.getAll('html')[0]; - if (elm) { - data.langcode = getAttr(elm, 'lang') || getAttr(elm, 'xml:lang'); - } - data.stylesheets = []; - global$1.each(headerFragment.getAll('link'), function (link) { - if (link.attr('rel') === 'stylesheet') { - data.stylesheets.push(link.attr('href')); - } - }); - elm = headerFragment.getAll('body')[0]; - if (elm) { - data.langdir = getAttr(elm, 'dir'); - data.style = getAttr(elm, 'style'); - data.visited_color = getAttr(elm, 'vlink'); - data.link_color = getAttr(elm, 'link'); - data.active_color = getAttr(elm, 'alink'); - } - return data; - }; - var dataToHtml = function (editor, data, head) { - var headElement, elm, value; - var dom = editor.dom; - function setAttr(elm, name, value) { - elm.attr(name, value ? value : undefined); - } - function addHeadNode(node) { - if (headElement.firstChild) { - headElement.insert(node, headElement.firstChild); - } else { - headElement.append(node); - } - } - var headerFragment = parseHeader(head); - headElement = headerFragment.getAll('head')[0]; - if (!headElement) { - elm = headerFragment.getAll('html')[0]; - headElement = new global$3('head', 1); - if (elm.firstChild) { - elm.insert(headElement, elm.firstChild, true); - } else { - elm.append(headElement); - } - } - elm = headerFragment.firstChild; - if (data.xml_pi) { - value = 'version="1.0"'; - if (data.docencoding) { - value += ' encoding="' + data.docencoding + '"'; - } - if (elm.type !== 7) { - elm = new global$3('xml', 7); - headerFragment.insert(elm, headerFragment.firstChild, true); - } - elm.value = value; - } else if (elm && elm.type === 7) { - elm.remove(); - } - elm = headerFragment.getAll('#doctype')[0]; - if (data.doctype) { - if (!elm) { - elm = new global$3('#doctype', 10); - if (data.xml_pi) { - headerFragment.insert(elm, headerFragment.firstChild); - } else { - addHeadNode(elm); - } - } - elm.value = data.doctype.substring(9, data.doctype.length - 1); - } else if (elm) { - elm.remove(); - } - elm = null; - global$1.each(headerFragment.getAll('meta'), function (meta) { - if (meta.attr('http-equiv') === 'Content-Type') { - elm = meta; - } - }); - if (data.docencoding) { - if (!elm) { - elm = new global$3('meta', 1); - elm.attr('http-equiv', 'Content-Type'); - elm.shortEnded = true; - addHeadNode(elm); - } - elm.attr('content', 'text/html; charset=' + data.docencoding); - } else if (elm) { - elm.remove(); - } - elm = headerFragment.getAll('title')[0]; - if (data.title) { - if (!elm) { - elm = new global$3('title', 1); - addHeadNode(elm); - } else { - elm.empty(); - } - elm.append(new global$3('#text', 3)).value = data.title; - } else if (elm) { - elm.remove(); - } - global$1.each('keywords,description,author,copyright,robots'.split(','), function (name) { - var nodes = headerFragment.getAll('meta'); - var i, meta; - var value = data[name]; - for (i = 0; i < nodes.length; i++) { - meta = nodes[i]; - if (meta.attr('name') === name) { - if (value) { - meta.attr('content', value); - } else { - meta.remove(); - } - return; - } - } - if (value) { - elm = new global$3('meta', 1); - elm.attr('name', name); - elm.attr('content', value); - elm.shortEnded = true; - addHeadNode(elm); - } - }); - var currentStyleSheetsMap = {}; - global$1.each(headerFragment.getAll('link'), function (stylesheet) { - if (stylesheet.attr('rel') === 'stylesheet') { - currentStyleSheetsMap[stylesheet.attr('href')] = stylesheet; - } - }); - global$1.each(data.stylesheets, function (stylesheet) { - if (!currentStyleSheetsMap[stylesheet]) { - elm = new global$3('link', 1); - elm.attr({ - rel: 'stylesheet', - text: 'text/css', - href: stylesheet - }); - elm.shortEnded = true; - addHeadNode(elm); - } - delete currentStyleSheetsMap[stylesheet]; - }); - global$1.each(currentStyleSheetsMap, function (stylesheet) { - stylesheet.remove(); - }); - elm = headerFragment.getAll('body')[0]; - if (elm) { - setAttr(elm, 'dir', data.langdir); - setAttr(elm, 'style', data.style); - setAttr(elm, 'vlink', data.visited_color); - setAttr(elm, 'link', data.link_color); - setAttr(elm, 'alink', data.active_color); - dom.setAttribs(editor.getBody(), { - style: data.style, - dir: data.dir, - vLink: data.visited_color, - link: data.link_color, - aLink: data.active_color - }); - } - elm = headerFragment.getAll('html')[0]; - if (elm) { - setAttr(elm, 'lang', data.langcode); - setAttr(elm, 'xml:lang', data.langcode); - } - if (!headElement.firstChild) { - headElement.remove(); - } - var html = global$4({ - validate: false, - indent: true, - indent_before: 'head,html,body,meta,title,script,link,style', - indent_after: 'head,html,body,meta,title,script,link,style' - }).serialize(headerFragment); - return html.substring(0, html.indexOf('')); - }; - - var open = function (editor, headState) { - var data = htmlToData(editor, headState.get()); - var defaultData = { - title: '', - keywords: '', - description: '', - robots: '', - author: '', - docencoding: '' - }; - var initialData = __assign(__assign({}, defaultData), data); - editor.windowManager.open({ - title: 'Metadata and Document Properties', - size: 'normal', - body: { - type: 'panel', - items: [ - { - name: 'title', - type: 'input', - label: 'Title' - }, - { - name: 'keywords', - type: 'input', - label: 'Keywords' - }, - { - name: 'description', - type: 'input', - label: 'Description' - }, - { - name: 'robots', - type: 'input', - label: 'Robots' - }, - { - name: 'author', - type: 'input', - label: 'Author' - }, - { - name: 'docencoding', - type: 'input', - label: 'Encoding' - } - ] - }, - buttons: [ - { - type: 'cancel', - name: 'cancel', - text: 'Cancel' - }, - { - type: 'submit', - name: 'save', - text: 'Save', - primary: true - } - ], - initialData: initialData, - onSubmit: function (api) { - var nuData = api.getData(); - var headHtml = dataToHtml(editor, global$1.extend(data, nuData), headState.get()); - headState.set(headHtml); - api.close(); - } - }); - }; - - var register = function (editor, headState) { - editor.addCommand('mceFullPageProperties', function () { - open(editor, headState); - }); - }; - - var protectHtml = function (protect, html) { - global$1.each(protect, function (pattern) { - html = html.replace(pattern, function (str) { - return ''; - }); - }); - return html; - }; - var unprotectHtml = function (html) { - return html.replace(//g, function (a, m) { - return unescape(m); - }); - }; - - var each = global$1.each; - var low = function (s) { - return s.replace(/<\/?[A-Z]+/g, function (a) { - return a.toLowerCase(); - }); - }; - var handleSetContent = function (editor, headState, footState, evt) { - var startPos, endPos, content, styles = ''; - var dom = editor.dom; - if (evt.selection) { - return; - } - content = protectHtml(getProtect(editor), evt.content); - if (evt.format === 'raw' && headState.get()) { - return; - } - if (evt.source_view && shouldHideInSourceView(editor)) { - return; - } - if (content.length === 0 && !evt.source_view) { - content = global$1.trim(headState.get()) + '\n' + global$1.trim(content) + '\n' + global$1.trim(footState.get()); - } - content = content.replace(/<(\/?)BODY/gi, '<$1body'); - startPos = content.indexOf('', startPos); - headState.set(low(content.substring(0, startPos + 1))); - endPos = content.indexOf('\n'); - } - var headerFragment = parseHeader(headState.get()); - each(headerFragment.getAll('style'), function (node) { - if (node.firstChild) { - styles += node.firstChild.value; - } - }); - var bodyElm = headerFragment.getAll('body')[0]; - if (bodyElm) { - dom.setAttribs(editor.getBody(), { - style: bodyElm.attr('style') || '', - dir: bodyElm.attr('dir') || '', - vLink: bodyElm.attr('vlink') || '', - link: bodyElm.attr('link') || '', - aLink: bodyElm.attr('alink') || '' - }); - } - dom.remove('fullpage_styles'); - var headElm = editor.getDoc().getElementsByTagName('head')[0]; - if (styles) { - var styleElm = dom.add(headElm, 'style', { id: 'fullpage_styles' }); - styleElm.appendChild(document.createTextNode(styles)); - } - var currentStyleSheetsMap = {}; - global$1.each(headElm.getElementsByTagName('link'), function (stylesheet) { - if (stylesheet.rel === 'stylesheet' && stylesheet.getAttribute('data-mce-fullpage')) { - currentStyleSheetsMap[stylesheet.href] = stylesheet; - } - }); - global$1.each(headerFragment.getAll('link'), function (stylesheet) { - var href = stylesheet.attr('href'); - if (!href) { - return true; - } - if (!currentStyleSheetsMap[href] && stylesheet.attr('rel') === 'stylesheet') { - dom.add(headElm, 'link', { - 'rel': 'stylesheet', - 'text': 'text/css', - href: href, - 'data-mce-fullpage': '1' - }); - } - delete currentStyleSheetsMap[href]; - }); - global$1.each(currentStyleSheetsMap, function (stylesheet) { - stylesheet.parentNode.removeChild(stylesheet); - }); - }; - var getDefaultHeader = function (editor) { - var header = '', value, styles = ''; - if (getDefaultXmlPi(editor)) { - var piEncoding = getDefaultEncoding(editor); - header += '\n'; - } - header += getDefaultDocType(editor); - header += '\n\n\n'; - if (value = getDefaultTitle(editor)) { - header += '' + value + '\n'; - } - if (value = getDefaultEncoding(editor)) { - header += '\n'; - } - if (value = getDefaultFontFamily(editor)) { - styles += 'font-family: ' + value + ';'; - } - if (value = getDefaultFontSize(editor)) { - styles += 'font-size: ' + value + ';'; - } - if (value = getDefaultTextColor(editor)) { - styles += 'color: ' + value + ';'; - } - header += '\n\n'; - return header; - }; - var handleGetContent = function (editor, head, foot, evt) { - if (evt.format === 'html' && !evt.selection && (!evt.source_view || !shouldHideInSourceView(editor))) { - evt.content = unprotectHtml(global$1.trim(head) + '\n' + global$1.trim(evt.content) + '\n' + global$1.trim(foot)); - } - }; - var setup = function (editor, headState, footState) { - editor.on('BeforeSetContent', function (evt) { - handleSetContent(editor, headState, footState, evt); - }); - editor.on('GetContent', function (evt) { - handleGetContent(editor, headState.get(), footState.get(), evt); - }); - }; - - var register$1 = function (editor) { - editor.ui.registry.addButton('fullpage', { - tooltip: 'Metadata and document properties', - icon: 'document-properties', - onAction: function () { - editor.execCommand('mceFullPageProperties'); - } - }); - editor.ui.registry.addMenuItem('fullpage', { - text: 'Metadata and document properties', - icon: 'document-properties', - onAction: function () { - editor.execCommand('mceFullPageProperties'); - } - }); - }; - - function Plugin () { - global.add('fullpage', function (editor) { - var headState = Cell(''), footState = Cell(''); - register(editor, headState); - register$1(editor); - setup(editor, headState, footState); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/fullpage/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/fullpage/plugin.min.js deleted file mode 100644 index 2592f73..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/fullpage/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var s=function(e){var t=e;return{get:function(){return t},set:function(e){t=e}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(){return(u=Object.assign||function(e){for(var t,n=1,l=arguments.length;n"),(n=r.getAll("title")[0])&&n.firstChild&&(a.title=n.firstChild.value),p.each(r.getAll("meta"),function(e){var t,n=e.attr("name"),l=e.attr("http-equiv");n?a[n.toLowerCase()]=e.attr("content"):"Content-Type"===l&&(t=/charset\s*=\s*(.*)\s*/gi.exec(e.attr("content")))&&(a.docencoding=t[1])}),(n=r.getAll("html")[0])&&(a.langcode=s(n,"lang")||s(n,"xml:lang")),a.stylesheets=[],p.each(r.getAll("link"),function(e){"stylesheet"===e.attr("rel")&&a.stylesheets.push(e.attr("href"))}),(n=r.getAll("body")[0])&&(a.langdir=s(n,"dir"),a.style=s(n,"style"),a.visited_color=s(n,"vlink"),a.link_color=s(n,"link"),a.active_color=s(n,"alink")),a);function s(e,t){return e.attr(t)||""}var d=u(u({},{title:"",keywords:"",description:"",robots:"",author:"",docencoding:""}),c);l.windowManager.open({title:"Metadata and Document Properties",size:"normal",body:{type:"panel",items:[{name:"title",type:"input",label:"Title"},{name:"keywords",type:"input",label:"Keywords"},{name:"description",type:"input",label:"Description"},{name:"robots",type:"input",label:"Robots"},{name:"author",type:"input",label:"Author"},{name:"docencoding",type:"input",label:"Encoding"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:d,onSubmit:function(e){var t=e.getData(),n=function(e,o,t){var r,n,l=e.dom;function i(e,t,n){e.attr(t,n||undefined)}function a(e){c.firstChild?c.insert(e,c.firstChild):c.append(e)}var c,s=v(t);(c=s.getAll("head")[0])||(r=s.getAll("html")[0],c=new m("head",1),r.firstChild?r.insert(c,r.firstChild,!0):r.append(c)),r=s.firstChild,o.xml_pi?(n='version="1.0"',o.docencoding&&(n+=' encoding="'+o.docencoding+'"'),7!==r.type&&(r=new m("xml",7),s.insert(r,s.firstChild,!0)),r.value=n):r&&7===r.type&&r.remove(),r=s.getAll("#doctype")[0],o.doctype?(r||(r=new m("#doctype",10),o.xml_pi?s.insert(r,s.firstChild):a(r)),r.value=o.doctype.substring(9,o.doctype.length-1)):r&&r.remove(),r=null,p.each(s.getAll("meta"),function(e){"Content-Type"===e.attr("http-equiv")&&(r=e)}),o.docencoding?(r||((r=new m("meta",1)).attr("http-equiv","Content-Type"),r.shortEnded=!0,a(r)),r.attr("content","text/html; charset="+o.docencoding)):r&&r.remove(),r=s.getAll("title")[0],o.title?(r?r.empty():a(r=new m("title",1)),r.append(new m("#text",3)).value=o.title):r&&r.remove(),p.each("keywords,description,author,copyright,robots".split(","),function(e){for(var t,n=s.getAll("meta"),l=o[e],i=0;i"))}(l,p.extend(c,t),i.get());i.set(n),e.close()}})},_=p.each,b=function(e){return e.replace(/<\/?[A-Z]+/g,function(e){return e.toLowerCase()})},x=function(e,t,n,l){var i,o,r,a,c,s,d,u,m,f="",g=e.dom;l.selection||(a=e.getParam("protect"),c=l.content,p.each(a,function(e){c=c.replace(e,function(e){return"\x3c!--mce:protected "+escape(e)+"--\x3e"})}),r=c,"raw"===l.format&&t.get()||l.source_view&&h(e)||(0!==r.length||l.source_view||(r=p.trim(t.get())+"\n"+p.trim(r)+"\n"+p.trim(n.get())),-1!==(i=(r=r.replace(/<(\/?)BODY/gi,"<$1body")).indexOf("",i),t.set(b(r.substring(0,i+1))),-1===(o=r.indexOf("\n")),s=v(t.get()),_(s.getAll("style"),function(e){e.firstChild&&(f+=e.firstChild.value)}),(d=s.getAll("body")[0])&&g.setAttribs(e.getBody(),{style:d.attr("style")||"",dir:d.attr("dir")||"",vLink:d.attr("vlink")||"",link:d.attr("link")||"",aLink:d.attr("alink")||""}),g.remove("fullpage_styles"),u=e.getDoc().getElementsByTagName("head")[0],f&&g.add(u,"style",{id:"fullpage_styles"}).appendChild(document.createTextNode(f)),m={},p.each(u.getElementsByTagName("link"),function(e){"stylesheet"===e.rel&&e.getAttribute("data-mce-fullpage")&&(m[e.href]=e)}),p.each(s.getAll("link"),function(e){var t=e.attr("href");if(!t)return!0;m[t]||"stylesheet"!==e.attr("rel")||g.add(u,"link",{rel:"stylesheet",text:"text/css",href:t,"data-mce-fullpage":"1"}),delete m[t]}),p.each(m,function(e){e.parentNode.removeChild(e)})))},k=function(e){var t,n="",l="";return e.getParam("fullpage_default_xml_pi")&&(n+='\n'),n+=e.getParam("fullpage_default_doctype",""),n+="\n\n\n",(t=e.getParam("fullpage_default_title"))&&(n+=""+t+"\n"),(t=i(e))&&(n+='\n'),(t=g(e))&&(l+="font-family: "+t+";"),(t=y(e))&&(l+="font-size: "+t+";"),(t=e.getParam("fullpage_default_text_color"))&&(l+="color: "+t+";"),n+="\n\n"},C=function(e,t,n,l){"html"!==l.format||l.selection||l.source_view&&h(e)||(l.content=(p.trim(t)+"\n"+p.trim(l.content)+"\n"+p.trim(n)).replace(//g,function(e,t){return unescape(t)}))};e.add("fullpage",function(e){var t,n,l,i,o,r,a=s(""),c=s("");n=a,(t=e).addCommand("mceFullPageProperties",function(){d(t,n)}),(l=e).ui.registry.addButton("fullpage",{tooltip:"Metadata and document properties",icon:"document-properties",onAction:function(){l.execCommand("mceFullPageProperties")}}),l.ui.registry.addMenuItem("fullpage",{text:"Metadata and document properties",icon:"document-properties",onAction:function(){l.execCommand("mceFullPageProperties")}}),o=a,r=c,(i=e).on("BeforeSetContent",function(e){x(i,o,r,e)}),i.on("GetContent",function(e){C(i,o.get(),r.get(),e)})})}(); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/fullscreen/plugin.js b/component/pear/module/tinymce/tinymce/plugins/fullscreen/plugin.js deleted file mode 100644 index deb9dde..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/fullscreen/plugin.js +++ /dev/null @@ -1,979 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -(function () { - 'use strict'; - - var Cell = function (initial) { - var value = initial; - var get = function () { - return value; - }; - var set = function (v) { - value = v; - }; - return { - get: get, - set: set - }; - }; - - var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); - - var get = function (fullscreenState) { - return { - isFullscreen: function () { - return fullscreenState.get() !== null; - } - }; - }; - - var noop = function () { - }; - var compose = function (fa, fb) { - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return fa(fb.apply(null, args)); - }; - }; - var compose1 = function (fbc, fab) { - return function (a) { - return fbc(fab(a)); - }; - }; - var constant = function (value) { - return function () { - return value; - }; - }; - function curry(fn) { - var initialArgs = []; - for (var _i = 1; _i < arguments.length; _i++) { - initialArgs[_i - 1] = arguments[_i]; - } - return function () { - var restArgs = []; - for (var _i = 0; _i < arguments.length; _i++) { - restArgs[_i] = arguments[_i]; - } - var all = initialArgs.concat(restArgs); - return fn.apply(null, all); - }; - } - var never = constant(false); - var always = constant(true); - - var none = function () { - return NONE; - }; - var NONE = function () { - var eq = function (o) { - return o.isNone(); - }; - var call = function (thunk) { - return thunk(); - }; - var id = function (n) { - return n; - }; - var me = { - fold: function (n, _s) { - return n(); - }, - is: never, - isSome: never, - isNone: always, - getOr: id, - getOrThunk: call, - getOrDie: function (msg) { - throw new Error(msg || 'error: getOrDie called on none.'); - }, - getOrNull: constant(null), - getOrUndefined: constant(undefined), - or: id, - orThunk: call, - map: none, - each: noop, - bind: none, - exists: never, - forall: always, - filter: none, - equals: eq, - equals_: eq, - toArray: function () { - return []; - }, - toString: constant('none()') - }; - return me; - }(); - var some = function (a) { - var constant_a = constant(a); - var self = function () { - return me; - }; - var bind = function (f) { - return f(a); - }; - var me = { - fold: function (n, s) { - return s(a); - }, - is: function (v) { - return a === v; - }, - isSome: always, - isNone: never, - getOr: constant_a, - getOrThunk: constant_a, - getOrDie: constant_a, - getOrNull: constant_a, - getOrUndefined: constant_a, - or: self, - orThunk: self, - map: function (f) { - return some(f(a)); - }, - each: function (f) { - f(a); - }, - bind: bind, - exists: bind, - forall: bind, - filter: function (f) { - return f(a) ? me : NONE; - }, - toArray: function () { - return [a]; - }, - toString: function () { - return 'some(' + a + ')'; - }, - equals: function (o) { - return o.is(a); - }, - equals_: function (o, elementEq) { - return o.fold(never, function (b) { - return elementEq(a, b); - }); - } - }; - return me; - }; - var from = function (value) { - return value === null || value === undefined ? NONE : some(value); - }; - var Optional = { - some: some, - none: none, - from: from - }; - - var revocable = function (doRevoke) { - var subject = Cell(Optional.none()); - var revoke = function () { - return subject.get().each(doRevoke); - }; - var clear = function () { - revoke(); - subject.set(Optional.none()); - }; - var isSet = function () { - return subject.get().isSome(); - }; - var set = function (s) { - revoke(); - subject.set(Optional.some(s)); - }; - return { - clear: clear, - isSet: isSet, - set: set - }; - }; - var unbindable = function () { - return revocable(function (s) { - return s.unbind(); - }); - }; - var value = function () { - var subject = Cell(Optional.none()); - var clear = function () { - return subject.set(Optional.none()); - }; - var set = function (s) { - return subject.set(Optional.some(s)); - }; - var isSet = function () { - return subject.get().isSome(); - }; - var on = function (f) { - return subject.get().each(f); - }; - return { - clear: clear, - set: set, - isSet: isSet, - on: on - }; - }; - - var typeOf = function (x) { - var t = typeof x; - if (x === null) { - return 'null'; - } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { - return 'array'; - } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { - return 'string'; - } else { - return t; - } - }; - var isType = function (type) { - return function (value) { - return typeOf(value) === type; - }; - }; - var isSimpleType = function (type) { - return function (value) { - return typeof value === type; - }; - }; - var isString = isType('string'); - var isArray = isType('array'); - var isBoolean = isSimpleType('boolean'); - var isNullable = function (a) { - return a === null || a === undefined; - }; - var isNonNullable = function (a) { - return !isNullable(a); - }; - var isFunction = isSimpleType('function'); - var isNumber = isSimpleType('number'); - - var nativePush = Array.prototype.push; - var map = function (xs, f) { - var len = xs.length; - var r = new Array(len); - for (var i = 0; i < len; i++) { - var x = xs[i]; - r[i] = f(x, i); - } - return r; - }; - var each = function (xs, f) { - for (var i = 0, len = xs.length; i < len; i++) { - var x = xs[i]; - f(x, i); - } - }; - var filter = function (xs, pred) { - var r = []; - for (var i = 0, len = xs.length; i < len; i++) { - var x = xs[i]; - if (pred(x, i)) { - r.push(x); - } - } - return r; - }; - var flatten = function (xs) { - var r = []; - for (var i = 0, len = xs.length; i < len; ++i) { - if (!isArray(xs[i])) { - throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); - } - nativePush.apply(r, xs[i]); - } - return r; - }; - var bind = function (xs, f) { - return flatten(map(xs, f)); - }; - var get$1 = function (xs, i) { - return i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none(); - }; - var head = function (xs) { - return get$1(xs, 0); - }; - - var keys = Object.keys; - var each$1 = function (obj, f) { - var props = keys(obj); - for (var k = 0, len = props.length; k < len; k++) { - var i = props[k]; - var x = obj[i]; - f(x, i); - } - }; - - var isSupported = function (dom) { - return dom.style !== undefined && isFunction(dom.style.getPropertyValue); - }; - - var fromHtml = function (html, scope) { - var doc = scope || document; - var div = doc.createElement('div'); - div.innerHTML = html; - if (!div.hasChildNodes() || div.childNodes.length > 1) { - console.error('HTML does not have a single root node', html); - throw new Error('HTML must have a single root node'); - } - return fromDom(div.childNodes[0]); - }; - var fromTag = function (tag, scope) { - var doc = scope || document; - var node = doc.createElement(tag); - return fromDom(node); - }; - var fromText = function (text, scope) { - var doc = scope || document; - var node = doc.createTextNode(text); - return fromDom(node); - }; - var fromDom = function (node) { - if (node === null || node === undefined) { - throw new Error('Node cannot be null or undefined'); - } - return { dom: node }; - }; - var fromPoint = function (docElm, x, y) { - return Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom); - }; - var SugarElement = { - fromHtml: fromHtml, - fromTag: fromTag, - fromText: fromText, - fromDom: fromDom, - fromPoint: fromPoint - }; - - var Global = typeof window !== 'undefined' ? window : Function('return this;')(); - - var DOCUMENT = 9; - var DOCUMENT_FRAGMENT = 11; - var ELEMENT = 1; - var TEXT = 3; - - var type = function (element) { - return element.dom.nodeType; - }; - var isType$1 = function (t) { - return function (element) { - return type(element) === t; - }; - }; - var isElement = isType$1(ELEMENT); - var isText = isType$1(TEXT); - var isDocument = isType$1(DOCUMENT); - var isDocumentFragment = isType$1(DOCUMENT_FRAGMENT); - - var is = function (element, selector) { - var dom = element.dom; - if (dom.nodeType !== ELEMENT) { - return false; - } else { - var elem = dom; - if (elem.matches !== undefined) { - return elem.matches(selector); - } else if (elem.msMatchesSelector !== undefined) { - return elem.msMatchesSelector(selector); - } else if (elem.webkitMatchesSelector !== undefined) { - return elem.webkitMatchesSelector(selector); - } else if (elem.mozMatchesSelector !== undefined) { - return elem.mozMatchesSelector(selector); - } else { - throw new Error('Browser lacks native selectors'); - } - } - }; - var bypassSelector = function (dom) { - return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0; - }; - var all = function (selector, scope) { - var base = scope === undefined ? document : scope.dom; - return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), SugarElement.fromDom); - }; - - var eq = function (e1, e2) { - return e1.dom === e2.dom; - }; - - var owner = function (element) { - return SugarElement.fromDom(element.dom.ownerDocument); - }; - var documentOrOwner = function (dos) { - return isDocument(dos) ? dos : owner(dos); - }; - var parent = function (element) { - return Optional.from(element.dom.parentNode).map(SugarElement.fromDom); - }; - var parents = function (element, isRoot) { - var stop = isFunction(isRoot) ? isRoot : never; - var dom = element.dom; - var ret = []; - while (dom.parentNode !== null && dom.parentNode !== undefined) { - var rawParent = dom.parentNode; - var p = SugarElement.fromDom(rawParent); - ret.push(p); - if (stop(p) === true) { - break; - } else { - dom = rawParent; - } - } - return ret; - }; - var siblings = function (element) { - var filterSelf = function (elements) { - return filter(elements, function (x) { - return !eq(element, x); - }); - }; - return parent(element).map(children).map(filterSelf).getOr([]); - }; - var children = function (element) { - return map(element.dom.childNodes, SugarElement.fromDom); - }; - - var isShadowRoot = function (dos) { - return isDocumentFragment(dos); - }; - var supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode); - var isSupported$1 = constant(supported); - var getRootNode = supported ? function (e) { - return SugarElement.fromDom(e.dom.getRootNode()); - } : documentOrOwner; - var getShadowRoot = function (e) { - var r = getRootNode(e); - return isShadowRoot(r) ? Optional.some(r) : Optional.none(); - }; - var getShadowHost = function (e) { - return SugarElement.fromDom(e.dom.host); - }; - var getOriginalEventTarget = function (event) { - if (isSupported$1() && isNonNullable(event.target)) { - var el = SugarElement.fromDom(event.target); - if (isElement(el) && isOpenShadowHost(el)) { - if (event.composed && event.composedPath) { - var composedPath = event.composedPath(); - if (composedPath) { - return head(composedPath); - } - } - } - } - return Optional.from(event.target); - }; - var isOpenShadowHost = function (element) { - return isNonNullable(element.dom.shadowRoot); - }; - - var inBody = function (element) { - var dom = isText(element) ? element.dom.parentNode : element.dom; - if (dom === undefined || dom === null || dom.ownerDocument === null) { - return false; - } - var doc = dom.ownerDocument; - return getShadowRoot(SugarElement.fromDom(dom)).fold(function () { - return doc.body.contains(dom); - }, compose1(inBody, getShadowHost)); - }; - var getBody = function (doc) { - var b = doc.dom.body; - if (b === null || b === undefined) { - throw new Error('Body is not available yet'); - } - return SugarElement.fromDom(b); - }; - - var rawSet = function (dom, key, value) { - if (isString(value) || isBoolean(value) || isNumber(value)) { - dom.setAttribute(key, value + ''); - } else { - console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom); - throw new Error('Attribute value was not simple'); - } - }; - var set = function (element, key, value) { - rawSet(element.dom, key, value); - }; - var get$2 = function (element, key) { - var v = element.dom.getAttribute(key); - return v === null ? undefined : v; - }; - var remove = function (element, key) { - element.dom.removeAttribute(key); - }; - - var internalSet = function (dom, property, value) { - if (!isString(value)) { - console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom); - throw new Error('CSS value must be a string: ' + value); - } - if (isSupported(dom)) { - dom.style.setProperty(property, value); - } - }; - var setAll = function (element, css) { - var dom = element.dom; - each$1(css, function (v, k) { - internalSet(dom, k, v); - }); - }; - var get$3 = function (element, property) { - var dom = element.dom; - var styles = window.getComputedStyle(dom); - var r = styles.getPropertyValue(property); - return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r; - }; - var getUnsafeProperty = function (dom, property) { - return isSupported(dom) ? dom.style.getPropertyValue(property) : ''; - }; - - var mkEvent = function (target, x, y, stop, prevent, kill, raw) { - return { - target: target, - x: x, - y: y, - stop: stop, - prevent: prevent, - kill: kill, - raw: raw - }; - }; - var fromRawEvent = function (rawEvent) { - var target = SugarElement.fromDom(getOriginalEventTarget(rawEvent).getOr(rawEvent.target)); - var stop = function () { - return rawEvent.stopPropagation(); - }; - var prevent = function () { - return rawEvent.preventDefault(); - }; - var kill = compose(prevent, stop); - return mkEvent(target, rawEvent.clientX, rawEvent.clientY, stop, prevent, kill, rawEvent); - }; - var handle = function (filter, handler) { - return function (rawEvent) { - if (filter(rawEvent)) { - handler(fromRawEvent(rawEvent)); - } - }; - }; - var binder = function (element, event, filter, handler, useCapture) { - var wrapped = handle(filter, handler); - element.dom.addEventListener(event, wrapped, useCapture); - return { unbind: curry(unbind, element, event, wrapped, useCapture) }; - }; - var bind$1 = function (element, event, filter, handler) { - return binder(element, event, filter, handler, false); - }; - var unbind = function (element, event, handler, useCapture) { - element.dom.removeEventListener(event, handler, useCapture); - }; - - var filter$1 = always; - var bind$2 = function (element, event, handler) { - return bind$1(element, event, filter$1, handler); - }; - - var r = function (left, top) { - var translate = function (x, y) { - return r(left + x, top + y); - }; - return { - left: left, - top: top, - translate: translate - }; - }; - var SugarPosition = r; - - var get$4 = function (_DOC) { - var doc = _DOC !== undefined ? _DOC.dom : document; - var x = doc.body.scrollLeft || doc.documentElement.scrollLeft; - var y = doc.body.scrollTop || doc.documentElement.scrollTop; - return SugarPosition(x, y); - }; - - var get$5 = function (_win) { - var win = _win === undefined ? window : _win; - return Optional.from(win['visualViewport']); - }; - var bounds = function (x, y, width, height) { - return { - x: x, - y: y, - width: width, - height: height, - right: x + width, - bottom: y + height - }; - }; - var getBounds = function (_win) { - var win = _win === undefined ? window : _win; - var doc = win.document; - var scroll = get$4(SugarElement.fromDom(doc)); - return get$5(win).fold(function () { - var html = win.document.documentElement; - var width = html.clientWidth; - var height = html.clientHeight; - return bounds(scroll.left, scroll.top, width, height); - }, function (visualViewport) { - return bounds(Math.max(visualViewport.pageLeft, scroll.left), Math.max(visualViewport.pageTop, scroll.top), visualViewport.width, visualViewport.height); - }); - }; - var bind$3 = function (name, callback, _win) { - return get$5(_win).map(function (visualViewport) { - var handler = function (e) { - return callback(fromRawEvent(e)); - }; - visualViewport.addEventListener(name, handler); - return { - unbind: function () { - return visualViewport.removeEventListener(name, handler); - } - }; - }).getOrThunk(function () { - return { unbind: noop }; - }); - }; - - var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); - - var global$2 = tinymce.util.Tools.resolve('tinymce.Env'); - - var global$3 = tinymce.util.Tools.resolve('tinymce.util.Delay'); - - var fireFullscreenStateChanged = function (editor, state) { - editor.fire('FullscreenStateChanged', { state: state }); - }; - - var getFullscreenNative = function (editor) { - return editor.getParam('fullscreen_native', false, 'boolean'); - }; - - var getFullscreenRoot = function (editor) { - var elem = SugarElement.fromDom(editor.getElement()); - return getShadowRoot(elem).map(getShadowHost).getOrThunk(function () { - return getBody(owner(elem)); - }); - }; - var getFullscreenElement = function (root) { - if (root.fullscreenElement !== undefined) { - return root.fullscreenElement; - } else if (root.msFullscreenElement !== undefined) { - return root.msFullscreenElement; - } else if (root.webkitFullscreenElement !== undefined) { - return root.webkitFullscreenElement; - } else { - return null; - } - }; - var getFullscreenchangeEventName = function () { - if (document.fullscreenElement !== undefined) { - return 'fullscreenchange'; - } else if (document.msFullscreenElement !== undefined) { - return 'MSFullscreenChange'; - } else if (document.webkitFullscreenElement !== undefined) { - return 'webkitfullscreenchange'; - } else { - return 'fullscreenchange'; - } - }; - var requestFullscreen = function (sugarElem) { - var elem = sugarElem.dom; - if (elem.requestFullscreen) { - elem.requestFullscreen(); - } else if (elem.msRequestFullscreen) { - elem.msRequestFullscreen(); - } else if (elem.webkitRequestFullScreen) { - elem.webkitRequestFullScreen(); - } - }; - var exitFullscreen = function (sugarDoc) { - var doc = sugarDoc.dom; - if (doc.exitFullscreen) { - doc.exitFullscreen(); - } else if (doc.msExitFullscreen) { - doc.msExitFullscreen(); - } else if (doc.webkitCancelFullScreen) { - doc.webkitCancelFullScreen(); - } - }; - var isFullscreenElement = function (elem) { - return elem.dom === getFullscreenElement(owner(elem).dom); - }; - - var ancestors = function (scope, predicate, isRoot) { - return filter(parents(scope, isRoot), predicate); - }; - var siblings$1 = function (scope, predicate) { - return filter(siblings(scope), predicate); - }; - - var all$1 = function (selector) { - return all(selector); - }; - var ancestors$1 = function (scope, selector, isRoot) { - return ancestors(scope, function (e) { - return is(e, selector); - }, isRoot); - }; - var siblings$2 = function (scope, selector) { - return siblings$1(scope, function (e) { - return is(e, selector); - }); - }; - - var attr = 'data-ephox-mobile-fullscreen-style'; - var siblingStyles = 'display:none!important;'; - var ancestorPosition = 'position:absolute!important;'; - var ancestorStyles = 'top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;height:100%!important;overflow:visible!important;'; - var bgFallback = 'background-color:rgb(255,255,255)!important;'; - var isAndroid = global$2.os.isAndroid(); - var matchColor = function (editorBody) { - var color = get$3(editorBody, 'background-color'); - return color !== undefined && color !== '' ? 'background-color:' + color + '!important' : bgFallback; - }; - var clobberStyles = function (dom, container, editorBody) { - var gatherSiblings = function (element) { - return siblings$2(element, '*:not(.tox-silver-sink)'); - }; - var clobber = function (clobberStyle) { - return function (element) { - var styles = get$2(element, 'style'); - var backup = styles === undefined ? 'no-styles' : styles.trim(); - if (backup === clobberStyle) { - return; - } else { - set(element, attr, backup); - setAll(element, dom.parseStyle(clobberStyle)); - } - }; - }; - var ancestors = ancestors$1(container, '*'); - var siblings = bind(ancestors, gatherSiblings); - var bgColor = matchColor(editorBody); - each(siblings, clobber(siblingStyles)); - each(ancestors, clobber(ancestorPosition + ancestorStyles + bgColor)); - var containerStyles = isAndroid === true ? '' : ancestorPosition; - clobber(containerStyles + ancestorStyles + bgColor)(container); - }; - var restoreStyles = function (dom) { - var clobberedEls = all$1('[' + attr + ']'); - each(clobberedEls, function (element) { - var restore = get$2(element, attr); - if (restore !== 'no-styles') { - setAll(element, dom.parseStyle(restore)); - } else { - remove(element, 'style'); - } - remove(element, attr); - }); - }; - - var DOM = global$1.DOM; - var getScrollPos = function () { - var vp = getBounds(window); - return { - x: vp.x, - y: vp.y - }; - }; - var setScrollPos = function (pos) { - window.scrollTo(pos.x, pos.y); - }; - var viewportUpdate = get$5().fold(function () { - return { - bind: noop, - unbind: noop - }; - }, function (visualViewport) { - var editorContainer = value(); - var resizeBinder = unbindable(); - var scrollBinder = unbindable(); - var refreshScroll = function () { - document.body.scrollTop = 0; - document.documentElement.scrollTop = 0; - }; - var refreshVisualViewport = function () { - window.requestAnimationFrame(function () { - editorContainer.on(function (container) { - return setAll(container, { - top: visualViewport.offsetTop + 'px', - left: visualViewport.offsetLeft + 'px', - height: visualViewport.height + 'px', - width: visualViewport.width + 'px' - }); - }); - }); - }; - var update = global$3.throttle(function () { - refreshScroll(); - refreshVisualViewport(); - }, 50); - var bind = function (element) { - editorContainer.set(element); - update(); - resizeBinder.set(bind$3('resize', update)); - scrollBinder.set(bind$3('scroll', update)); - }; - var unbind = function () { - editorContainer.on(function () { - resizeBinder.clear(); - scrollBinder.clear(); - }); - editorContainer.clear(); - }; - return { - bind: bind, - unbind: unbind - }; - }); - var toggleFullscreen = function (editor, fullscreenState) { - var body = document.body; - var documentElement = document.documentElement; - var editorContainer = editor.getContainer(); - var editorContainerS = SugarElement.fromDom(editorContainer); - var fullscreenRoot = getFullscreenRoot(editor); - var fullscreenInfo = fullscreenState.get(); - var editorBody = SugarElement.fromDom(editor.getBody()); - var isTouch = global$2.deviceType.isTouch(); - var editorContainerStyle = editorContainer.style; - var iframe = editor.iframeElement; - var iframeStyle = iframe.style; - var handleClasses = function (handler) { - handler(body, 'tox-fullscreen'); - handler(documentElement, 'tox-fullscreen'); - handler(editorContainer, 'tox-fullscreen'); - getShadowRoot(editorContainerS).map(function (root) { - return getShadowHost(root).dom; - }).each(function (host) { - handler(host, 'tox-fullscreen'); - handler(host, 'tox-shadowhost'); - }); - }; - var cleanup = function () { - if (isTouch) { - restoreStyles(editor.dom); - } - handleClasses(DOM.removeClass); - viewportUpdate.unbind(); - Optional.from(fullscreenState.get()).each(function (info) { - return info.fullscreenChangeHandler.unbind(); - }); - }; - if (!fullscreenInfo) { - var fullscreenChangeHandler = bind$2(owner(fullscreenRoot), getFullscreenchangeEventName(), function (_evt) { - if (getFullscreenNative(editor)) { - if (!isFullscreenElement(fullscreenRoot) && fullscreenState.get() !== null) { - toggleFullscreen(editor, fullscreenState); - } - } - }); - var newFullScreenInfo = { - scrollPos: getScrollPos(), - containerWidth: editorContainerStyle.width, - containerHeight: editorContainerStyle.height, - containerTop: editorContainerStyle.top, - containerLeft: editorContainerStyle.left, - iframeWidth: iframeStyle.width, - iframeHeight: iframeStyle.height, - fullscreenChangeHandler: fullscreenChangeHandler - }; - if (isTouch) { - clobberStyles(editor.dom, editorContainerS, editorBody); - } - iframeStyle.width = iframeStyle.height = '100%'; - editorContainerStyle.width = editorContainerStyle.height = ''; - handleClasses(DOM.addClass); - viewportUpdate.bind(editorContainerS); - editor.on('remove', cleanup); - fullscreenState.set(newFullScreenInfo); - if (getFullscreenNative(editor)) { - requestFullscreen(fullscreenRoot); - } - fireFullscreenStateChanged(editor, true); - } else { - fullscreenInfo.fullscreenChangeHandler.unbind(); - if (getFullscreenNative(editor) && isFullscreenElement(fullscreenRoot)) { - exitFullscreen(owner(fullscreenRoot)); - } - iframeStyle.width = fullscreenInfo.iframeWidth; - iframeStyle.height = fullscreenInfo.iframeHeight; - editorContainerStyle.width = fullscreenInfo.containerWidth; - editorContainerStyle.height = fullscreenInfo.containerHeight; - editorContainerStyle.top = fullscreenInfo.containerTop; - editorContainerStyle.left = fullscreenInfo.containerLeft; - setScrollPos(fullscreenInfo.scrollPos); - fullscreenState.set(null); - fireFullscreenStateChanged(editor, false); - cleanup(); - editor.off('remove', cleanup); - } - }; - - var register = function (editor, fullscreenState) { - editor.addCommand('mceFullScreen', function () { - toggleFullscreen(editor, fullscreenState); - }); - }; - - var makeSetupHandler = function (editor, fullscreenState) { - return function (api) { - api.setActive(fullscreenState.get() !== null); - var editorEventCallback = function (e) { - return api.setActive(e.state); - }; - editor.on('FullscreenStateChanged', editorEventCallback); - return function () { - return editor.off('FullscreenStateChanged', editorEventCallback); - }; - }; - }; - var register$1 = function (editor, fullscreenState) { - editor.ui.registry.addToggleMenuItem('fullscreen', { - text: 'Fullscreen', - icon: 'fullscreen', - shortcut: 'Meta+Shift+F', - onAction: function () { - return editor.execCommand('mceFullScreen'); - }, - onSetup: makeSetupHandler(editor, fullscreenState) - }); - editor.ui.registry.addToggleButton('fullscreen', { - tooltip: 'Fullscreen', - icon: 'fullscreen', - onAction: function () { - return editor.execCommand('mceFullScreen'); - }, - onSetup: makeSetupHandler(editor, fullscreenState) - }); - }; - - function Plugin () { - global.add('fullscreen', function (editor) { - var fullscreenState = Cell(null); - if (editor.inline) { - return get(fullscreenState); - } - register(editor, fullscreenState); - register$1(editor, fullscreenState); - editor.addShortcut('Meta+Shift+F', '', 'mceFullScreen'); - return get(fullscreenState); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/fullscreen/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/fullscreen/plugin.min.js deleted file mode 100644 index 7dee35d..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/fullscreen/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var c=function(n){var e=n;return{get:function(){return e},set:function(n){e=n}}},n=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(n){return{isFullscreen:function(){return null!==n.get()}}},e=function(){},u=function(n){return function(){return n}};var t,r,o,l=u(!1),f=u(!0),a=function(){return d},d=(t=function(n){return n.isNone()},{fold:function(n,e){return n()},is:l,isSome:l,isNone:f,getOr:o=function(n){return n},getOrThunk:r=function(n){return n()},getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:u(null),getOrUndefined:u(undefined),or:o,orThunk:r,map:a,each:e,bind:a,exists:l,forall:f,filter:a,equals:t,equals_:t,toArray:function(){return[]},toString:u("none()")}),s=function(t){var n=u(t),e=function(){return o},r=function(n){return n(t)},o={fold:function(n,e){return e(t)},is:function(n){return t===n},isSome:f,isNone:l,getOr:n,getOrThunk:n,getOrDie:n,getOrNull:n,getOrUndefined:n,or:e,orThunk:e,map:function(n){return s(n(t))},each:function(n){n(t)},bind:r,exists:r,forall:r,filter:function(n){return n(t)?o:d},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(n){return n.is(t)},equals_:function(n,e){return n.fold(l,function(n){return e(t,n)})}};return o},S={some:s,none:a,from:function(n){return null===n||n===undefined?d:s(n)}},m=function(){return n=function(n){return n.unbind()},e=c(S.none()),t=function(){return e.get().each(n)},{clear:function(){t(),e.set(S.none())},isSet:function(){return e.get().isSome()},set:function(n){t(),e.set(S.some(n))}};var n,e,t},h=function(r){return function(n){return t=typeof(e=n),(null===e?"null":"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t)===r;var e,t}},g=function(e){return function(n){return typeof n===e}},p=h("string"),v=h("array"),y=g("boolean"),w=function(n){return!(null===(e=n)||e===undefined);var e},b=g("function"),E=g("number"),F=Array.prototype.push,T=function(n,e){for(var t=n.length,r=new Array(t),o=0;o -1; - }; - var map = function (xs, f) { - var len = xs.length; - var r = new Array(len); - for (var i = 0; i < len; i++) { - var x = xs[i]; - r[i] = f(x, i); - } - return r; - }; - var filter = function (xs, pred) { - var r = []; - for (var i = 0, len = xs.length; i < len; i++) { - var x = xs[i]; - if (pred(x, i)) { - r.push(x); - } - } - return r; - }; - var findUntil = function (xs, pred, until) { - for (var i = 0, len = xs.length; i < len; i++) { - var x = xs[i]; - if (pred(x, i)) { - return Optional.some(x); - } else if (until(x, i)) { - break; - } - } - return Optional.none(); - }; - var find = function (xs, pred) { - return findUntil(xs, pred, never); - }; - - var keys = Object.keys; - var hasOwnProperty = Object.hasOwnProperty; - var get$1 = function (obj, key) { - return has(obj, key) ? Optional.from(obj[key]) : Optional.none(); - }; - var has = function (obj, key) { - return hasOwnProperty.call(obj, key); - }; - - var cat = function (arr) { - var r = []; - var push = function (x) { - r.push(x); - }; - for (var i = 0; i < arr.length; i++) { - arr[i].each(push); - } - return r; - }; - - var getHelpTabs = function (editor) { - return Optional.from(editor.getParam('help_tabs')); - }; - var getForcedPlugins = function (editor) { - return editor.getParam('forced_plugins'); - }; - - var description = '

                                      Editor UI keyboard navigation

                                      \n\n

                                      Activating keyboard navigation

                                      \n\n

                                      The sections of the outer UI of the editor - the menubar, toolbar, sidebar and footer - are all keyboard navigable. As such, there are multiple ways to activate keyboard navigation:

                                      \n
                                        \n
                                      • Focus the menubar: Alt + F9 (Windows) or ⌥F9 (MacOS)
                                      • \n
                                      • Focus the toolbar: Alt + F10 (Windows) or ⌥F10 (MacOS)
                                      • \n
                                      • Focus the footer: Alt + F11 (Windows) or ⌥F11 (MacOS)
                                      • \n
                                      \n\n

                                      Focusing the menubar or toolbar will start keyboard navigation at the first item in the menubar or toolbar, which will be highlighted with a gray background. Focusing the footer will start keyboard navigation at the first item in the element path, which will be highlighted with an underline.

                                      \n\n

                                      Moving between UI sections

                                      \n\n

                                      When keyboard navigation is active, pressing tab will move the focus to the next major section of the UI, where applicable. These sections are:

                                      \n
                                        \n
                                      • the menubar
                                      • \n
                                      • each group of the toolbar
                                      • \n
                                      • the sidebar
                                      • \n
                                      • the element path in the footer
                                      • \n
                                      • the wordcount toggle button in the footer
                                      • \n
                                      • the branding link in the footer
                                      • \n
                                      \n\n

                                      Pressing shift + tab will move backwards through the same sections, except when moving from the footer to the toolbar. Focusing the element path then pressing shift + tab will move focus to the first toolbar group, not the last.

                                      \n\n

                                      Moving within UI sections

                                      \n\n

                                      Keyboard navigation within UI sections can usually be achieved using the left and right arrow keys. This includes:

                                      \n
                                        \n
                                      • moving between menus in the menubar
                                      • \n
                                      • moving between buttons in a toolbar group
                                      • \n
                                      • moving between items in the element path
                                      • \n
                                      \n\n

                                      In all these UI sections, keyboard navigation will cycle within the section. For example, focusing the last button in a toolbar group then pressing right arrow will move focus to the first item in the same toolbar group.

                                      \n\n

                                      Executing buttons

                                      \n\n

                                      To execute a button, navigate the selection to the desired button and hit space or enter.

                                      \n\n

                                      Opening, navigating and closing menus

                                      \n\n

                                      When focusing a menubar button or a toolbar button with a menu, pressing space, enter or down arrow will open the menu. When the menu opens the first item will be selected. To move up or down the menu, press the up or down arrow key respectively. This is the same for submenus, which can also be opened and closed using the left and right arrow keys.

                                      \n\n

                                      To close any active menu, hit the escape key. When a menu is closed the selection will be restored to its previous selection. This also works for closing submenus.

                                      \n\n

                                      Context toolbars and menus

                                      \n\n

                                      To focus an open context toolbar such as the table context toolbar, press Ctrl + F9 (Windows) or ⌃F9 (MacOS).

                                      \n\n

                                      Context toolbar navigation is the same as toolbar navigation, and context menu navigation is the same as standard menu navigation.

                                      \n\n

                                      Dialog navigation

                                      \n\n

                                      There are two types of dialog UIs in TinyMCE: tabbed dialogs and non-tabbed dialogs.

                                      \n\n

                                      When a non-tabbed dialog is opened, the first interactive component in the dialog will be focused. Users can navigate between interactive components by pressing tab. This includes any footer buttons. Navigation will cycle back to the first dialog component if tab is pressed while focusing the last component in the dialog. Pressing shift + tab will navigate backwards.

                                      \n\n

                                      When a tabbed dialog is opened, the first button in the tab menu is focused. Pressing tab will navigate to the first interactive component in that tab, and will cycle through the tab\u2019s components, the footer buttons, then back to the tab button. To switch to another tab, focus the tab button for the current tab, then use the arrow keys to cycle through the tab buttons.

                                      '; - var tab = function () { - var body = { - type: 'htmlpanel', - presets: 'document', - html: description - }; - return { - name: 'keyboardnav', - title: 'Keyboard Navigation', - items: [body] - }; - }; - - var global$1 = tinymce.util.Tools.resolve('tinymce.Env'); - - var convertText = function (source) { - var mac = { - alt: '⌥', - ctrl: '⌃', - shift: '⇧', - meta: '⌘', - access: '⌃⌥' - }; - var other = { - meta: 'Ctrl ', - access: 'Shift + Alt ' - }; - var replace = global$1.mac ? mac : other; - var shortcut = source.split('+'); - var updated = map(shortcut, function (segment) { - var search = segment.toLowerCase().trim(); - return has(replace, search) ? replace[search] : segment; - }); - return global$1.mac ? updated.join('').replace(/\s/, '') : updated.join('+'); - }; - - var shortcuts = [ - { - shortcuts: ['Meta + B'], - action: 'Bold' - }, - { - shortcuts: ['Meta + I'], - action: 'Italic' - }, - { - shortcuts: ['Meta + U'], - action: 'Underline' - }, - { - shortcuts: ['Meta + A'], - action: 'Select all' - }, - { - shortcuts: [ - 'Meta + Y', - 'Meta + Shift + Z' - ], - action: 'Redo' - }, - { - shortcuts: ['Meta + Z'], - action: 'Undo' - }, - { - shortcuts: ['Access + 1'], - action: 'Heading 1' - }, - { - shortcuts: ['Access + 2'], - action: 'Heading 2' - }, - { - shortcuts: ['Access + 3'], - action: 'Heading 3' - }, - { - shortcuts: ['Access + 4'], - action: 'Heading 4' - }, - { - shortcuts: ['Access + 5'], - action: 'Heading 5' - }, - { - shortcuts: ['Access + 6'], - action: 'Heading 6' - }, - { - shortcuts: ['Access + 7'], - action: 'Paragraph' - }, - { - shortcuts: ['Access + 8'], - action: 'Div' - }, - { - shortcuts: ['Access + 9'], - action: 'Address' - }, - { - shortcuts: ['Alt + 0'], - action: 'Open help dialog' - }, - { - shortcuts: ['Alt + F9'], - action: 'Focus to menubar' - }, - { - shortcuts: ['Alt + F10'], - action: 'Focus to toolbar' - }, - { - shortcuts: ['Alt + F11'], - action: 'Focus to element path' - }, - { - shortcuts: ['Ctrl + F9'], - action: 'Focus to contextual toolbar' - }, - { - shortcuts: ['Shift + Enter'], - action: 'Open popup menu for split buttons' - }, - { - shortcuts: ['Meta + K'], - action: 'Insert link (if link plugin activated)' - }, - { - shortcuts: ['Meta + S'], - action: 'Save (if save plugin activated)' - }, - { - shortcuts: ['Meta + F'], - action: 'Find (if searchreplace plugin activated)' - }, - { - shortcuts: ['Meta + Shift + F'], - action: 'Switch to or from fullscreen mode' - } - ]; - - var tab$1 = function () { - var shortcutList = map(shortcuts, function (shortcut) { - var shortcutText = map(shortcut.shortcuts, convertText).join(' or '); - return [ - shortcut.action, - shortcutText - ]; - }); - var tablePanel = { - type: 'table', - header: [ - 'Action', - 'Shortcut' - ], - cells: shortcutList - }; - return { - name: 'shortcuts', - title: 'Handy Shortcuts', - items: [tablePanel] - }; - }; - - var global$2 = tinymce.util.Tools.resolve('tinymce.util.I18n'); - - var urls = [ - { - key: 'advlist', - name: 'Advanced List' - }, - { - key: 'anchor', - name: 'Anchor' - }, - { - key: 'autolink', - name: 'Autolink' - }, - { - key: 'autoresize', - name: 'Autoresize' - }, - { - key: 'autosave', - name: 'Autosave' - }, - { - key: 'bbcode', - name: 'BBCode' - }, - { - key: 'charmap', - name: 'Character Map' - }, - { - key: 'code', - name: 'Code' - }, - { - key: 'codesample', - name: 'Code Sample' - }, - { - key: 'colorpicker', - name: 'Color Picker' - }, - { - key: 'directionality', - name: 'Directionality' - }, - { - key: 'emoticons', - name: 'Emoticons' - }, - { - key: 'fullpage', - name: 'Full Page' - }, - { - key: 'fullscreen', - name: 'Full Screen' - }, - { - key: 'help', - name: 'Help' - }, - { - key: 'hr', - name: 'Horizontal Rule' - }, - { - key: 'image', - name: 'Image' - }, - { - key: 'imagetools', - name: 'Image Tools' - }, - { - key: 'importcss', - name: 'Import CSS' - }, - { - key: 'insertdatetime', - name: 'Insert Date/Time' - }, - { - key: 'legacyoutput', - name: 'Legacy Output' - }, - { - key: 'link', - name: 'Link' - }, - { - key: 'lists', - name: 'Lists' - }, - { - key: 'media', - name: 'Media' - }, - { - key: 'nonbreaking', - name: 'Nonbreaking' - }, - { - key: 'noneditable', - name: 'Noneditable' - }, - { - key: 'pagebreak', - name: 'Page Break' - }, - { - key: 'paste', - name: 'Paste' - }, - { - key: 'preview', - name: 'Preview' - }, - { - key: 'print', - name: 'Print' - }, - { - key: 'save', - name: 'Save' - }, - { - key: 'searchreplace', - name: 'Search and Replace' - }, - { - key: 'spellchecker', - name: 'Spell Checker' - }, - { - key: 'tabfocus', - name: 'Tab Focus' - }, - { - key: 'table', - name: 'Table' - }, - { - key: 'template', - name: 'Template' - }, - { - key: 'textcolor', - name: 'Text Color' - }, - { - key: 'textpattern', - name: 'Text Pattern' - }, - { - key: 'toc', - name: 'Table of Contents' - }, - { - key: 'visualblocks', - name: 'Visual Blocks' - }, - { - key: 'visualchars', - name: 'Visual Characters' - }, - { - key: 'wordcount', - name: 'Word Count' - }, - { - key: 'advcode', - name: 'Advanced Code Editor*' - }, - { - key: 'formatpainter', - name: 'Format Painter*' - }, - { - key: 'powerpaste', - name: 'PowerPaste*' - }, - { - key: 'tinydrive', - name: 'Tiny Drive*', - slug: 'drive' - }, - { - key: 'tinymcespellchecker', - name: 'Spell Checker Pro*' - }, - { - key: 'a11ychecker', - name: 'Accessibility Checker*' - }, - { - key: 'linkchecker', - name: 'Link Checker*' - }, - { - key: 'mentions', - name: 'Mentions*' - }, - { - key: 'mediaembed', - name: 'Enhanced Media Embed*' - }, - { - key: 'checklist', - name: 'Checklist*' - }, - { - key: 'casechange', - name: 'Case Change*' - }, - { - key: 'permanentpen', - name: 'Permanent Pen*' - }, - { - key: 'pageembed', - name: 'Page Embed*' - }, - { - key: 'tinycomments', - name: 'Tiny Comments*', - slug: 'comments' - }, - { - key: 'advtable', - name: 'Advanced Tables*' - }, - { - key: 'autocorrect', - name: 'Autocorrect*' - } - ]; - - var tab$2 = function (editor) { - var availablePlugins = function () { - var premiumPlugins = [ - 'Accessibility Checker', - 'Advanced Code Editor', - 'Advanced Tables', - 'Case Change', - 'Checklist', - 'Tiny Comments', - 'Tiny Drive', - 'Enhanced Media Embed', - 'Format Painter', - 'Link Checker', - 'Mentions', - 'MoxieManager', - 'Page Embed', - 'Permanent Pen', - 'PowerPaste', - 'Spell Checker Pro' - ]; - var premiumPluginList = map(premiumPlugins, function (plugin) { - return '
                                    • ' + global$2.translate(plugin) + '
                                    • '; - }).join(''); - return '
                                      ' + '

                                      ' + global$2.translate('Premium plugins:') + '

                                      ' + '' + '
                                      '; - }; - var makeLink = function (p) { - return '' + p.name + ''; - }; - var maybeUrlize = function (editor, key) { - return find(urls, function (x) { - return x.key === key; - }).fold(function () { - var getMetadata = editor.plugins[key].getMetadata; - return typeof getMetadata === 'function' ? makeLink(getMetadata()) : key; - }, function (x) { - var urlSlug = x.slug || x.key; - return makeLink({ - name: x.name, - url: 'https://www.tiny.cloud/docs/plugins/' + urlSlug - }); - }); - }; - var getPluginKeys = function (editor) { - var keys$1 = keys(editor.plugins); - var forced_plugins = getForcedPlugins(editor); - return forced_plugins === undefined ? keys$1 : filter(keys$1, function (k) { - return !contains(forced_plugins, k); - }); - }; - var pluginLister = function (editor) { - var pluginKeys = getPluginKeys(editor); - var pluginLis = map(pluginKeys, function (key) { - return '
                                    • ' + maybeUrlize(editor, key) + '
                                    • '; - }); - var count = pluginLis.length; - var pluginsString = pluginLis.join(''); - var html = '

                                      ' + global$2.translate([ - 'Plugins installed ({0}):', - count - ]) + '

                                      ' + '
                                        ' + pluginsString + '
                                      '; - return html; - }; - var installedPlugins = function (editor) { - if (editor == null) { - return ''; - } - return '
                                      ' + pluginLister(editor) + '
                                      '; - }; - var htmlPanel = { - type: 'htmlpanel', - presets: 'document', - html: [ - installedPlugins(editor), - availablePlugins() - ].join('') - }; - return { - name: 'plugins', - title: 'Plugins', - items: [htmlPanel] - }; - }; - - var global$3 = tinymce.util.Tools.resolve('tinymce.EditorManager'); - - var tab$3 = function () { - var getVersion = function (major, minor) { - return major.indexOf('@') === 0 ? 'X.X.X' : major + '.' + minor; - }; - var version = getVersion(global$3.majorVersion, global$3.minorVersion); - var changeLogLink = 'TinyMCE ' + version + ''; - var htmlPanel = { - type: 'htmlpanel', - html: '

                                      ' + global$2.translate([ - 'You are using {0}', - changeLogLink - ]) + '

                                      ', - presets: 'document' - }; - return { - name: 'versions', - title: 'Version', - items: [htmlPanel] - }; - }; - - var parseHelpTabsSetting = function (tabsFromSettings, tabs) { - var newTabs = {}; - var names = map(tabsFromSettings, function (t) { - if (typeof t === 'string') { - if (has(tabs, t)) { - newTabs[t] = tabs[t]; - } - return t; - } else { - newTabs[t.name] = t; - return t.name; - } - }); - return { - tabs: newTabs, - names: names - }; - }; - var getNamesFromTabs = function (tabs) { - var names = keys(tabs); - var idx = names.indexOf('versions'); - if (idx !== -1) { - names.splice(idx, 1); - names.push('versions'); - } - return { - tabs: tabs, - names: names - }; - }; - var parseCustomTabs = function (editor, customTabs) { - var _a; - var shortcuts = tab$1(); - var nav = tab(); - var plugins = tab$2(editor); - var versions = tab$3(); - var tabs = __assign((_a = {}, _a[shortcuts.name] = shortcuts, _a[nav.name] = nav, _a[plugins.name] = plugins, _a[versions.name] = versions, _a), customTabs.get()); - return getHelpTabs(editor).fold(function () { - return getNamesFromTabs(tabs); - }, function (tabsFromSettings) { - return parseHelpTabsSetting(tabsFromSettings, tabs); - }); - }; - var init = function (editor, customTabs) { - return function () { - var _a = parseCustomTabs(editor, customTabs), tabs = _a.tabs, names = _a.names; - var foundTabs = map(names, function (name) { - return get$1(tabs, name); - }); - var dialogTabs = cat(foundTabs); - var body = { - type: 'tabpanel', - tabs: dialogTabs - }; - editor.windowManager.open({ - title: 'Help', - size: 'medium', - body: body, - buttons: [{ - type: 'cancel', - name: 'close', - text: 'Close', - primary: true - }], - initialData: {} - }); - }; - }; - - function Plugin () { - global.add('help', function (editor) { - var customTabs = Cell({}); - var api = get(customTabs); - var dialogOpener = init(editor, customTabs); - register$1(editor, dialogOpener); - register(editor, dialogOpener); - editor.shortcuts.add('Alt+0', 'Open help dialog', 'mceHelp'); - return api; - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/help/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/help/plugin.min.js deleted file mode 100644 index 6b4b414..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/help/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var e,t,n,a=tinymce.util.Tools.resolve("tinymce.PluginManager"),m=function(){return(m=Object.assign||function(e){for(var t,n=1,a=arguments.length;n'+e.name+""};return{name:"plugins",title:"Plugins",items:[{type:"htmlpanel",presets:"document",html:[null==(n=e)?"":'
                                      '+function(a){var e,t,n,o=(t=f((e=a).plugins),(n=e.getParam("forced_plugins"))===undefined?t:function(e,t){for(var n=[],a=0,o=e.length;a"+(t=a,n=e,g(C,function(e){return e.key===n}).fold(function(){var e=t.plugins[n].getMetadata;return"function"==typeof e?l(e()):n},function(e){var t=e.slug||e.key;return l({name:e.name,url:"https://www.tiny.cloud/docs/plugins/"+t})}))+"";var t,n}),r=i.length,s=i.join("");return"

                                      "+A.translate(["Plugins installed ({0}):",r])+"

                                        "+s+"
                                      "}(n)+"
                                      ",(t=p(["Accessibility Checker","Advanced Code Editor","Advanced Tables","Case Change","Checklist","Tiny Comments","Tiny Drive","Enhanced Media Embed","Format Painter","Link Checker","Mentions","MoxieManager","Page Embed","Permanent Pen","PowerPaste","Spell Checker Pro"],function(e){return"
                                    • "+A.translate(e)+"
                                    • "}).join(""),'

                                      '+A.translate("Premium plugins:")+"

                                      ")].join("")}]}},x=tinymce.util.Tools.resolve("tinymce.EditorManager"),P=function(e,t){var n,a,o,i,r,s={name:"shortcuts",title:"Handy Shortcuts",items:[{type:"table",header:["Action","Shortcut"],cells:p(w,function(e){var t=p(e.shortcuts,v).join(" or ");return[e.action,t]})}]},l={name:"keyboardnav",title:"Keyboard Navigation",items:[{type:"htmlpanel",presets:"document",html:"

                                      Editor UI keyboard navigation

                                      \n\n

                                      Activating keyboard navigation

                                      \n\n

                                      The sections of the outer UI of the editor - the menubar, toolbar, sidebar and footer - are all keyboard navigable. As such, there are multiple ways to activate keyboard navigation:

                                      \n
                                        \n
                                      • Focus the menubar: Alt + F9 (Windows) or ⌥F9 (MacOS)
                                      • \n
                                      • Focus the toolbar: Alt + F10 (Windows) or ⌥F10 (MacOS)
                                      • \n
                                      • Focus the footer: Alt + F11 (Windows) or ⌥F11 (MacOS)
                                      • \n
                                      \n\n

                                      Focusing the menubar or toolbar will start keyboard navigation at the first item in the menubar or toolbar, which will be highlighted with a gray background. Focusing the footer will start keyboard navigation at the first item in the element path, which will be highlighted with an underline.

                                      \n\n

                                      Moving between UI sections

                                      \n\n

                                      When keyboard navigation is active, pressing tab will move the focus to the next major section of the UI, where applicable. These sections are:

                                      \n
                                        \n
                                      • the menubar
                                      • \n
                                      • each group of the toolbar
                                      • \n
                                      • the sidebar
                                      • \n
                                      • the element path in the footer
                                      • \n
                                      • the wordcount toggle button in the footer
                                      • \n
                                      • the branding link in the footer
                                      • \n
                                      \n\n

                                      Pressing shift + tab will move backwards through the same sections, except when moving from the footer to the toolbar. Focusing the element path then pressing shift + tab will move focus to the first toolbar group, not the last.

                                      \n\n

                                      Moving within UI sections

                                      \n\n

                                      Keyboard navigation within UI sections can usually be achieved using the left and right arrow keys. This includes:

                                      \n
                                        \n
                                      • moving between menus in the menubar
                                      • \n
                                      • moving between buttons in a toolbar group
                                      • \n
                                      • moving between items in the element path
                                      • \n
                                      \n\n

                                      In all these UI sections, keyboard navigation will cycle within the section. For example, focusing the last button in a toolbar group then pressing right arrow will move focus to the first item in the same toolbar group.

                                      \n\n

                                      Executing buttons

                                      \n\n

                                      To execute a button, navigate the selection to the desired button and hit space or enter.

                                      \n\n

                                      Opening, navigating and closing menus

                                      \n\n

                                      When focusing a menubar button or a toolbar button with a menu, pressing space, enter or down arrow will open the menu. When the menu opens the first item will be selected. To move up or down the menu, press the up or down arrow key respectively. This is the same for submenus, which can also be opened and closed using the left and right arrow keys.

                                      \n\n

                                      To close any active menu, hit the escape key. When a menu is closed the selection will be restored to its previous selection. This also works for closing submenus.

                                      \n\n

                                      Context toolbars and menus

                                      \n\n

                                      To focus an open context toolbar such as the table context toolbar, press Ctrl + F9 (Windows) or ⌃F9 (MacOS).

                                      \n\n

                                      Context toolbar navigation is the same as toolbar navigation, and context menu navigation is the same as standard menu navigation.

                                      \n\n

                                      Dialog navigation

                                      \n\n

                                      There are two types of dialog UIs in TinyMCE: tabbed dialogs and non-tabbed dialogs.

                                      \n\n

                                      When a non-tabbed dialog is opened, the first interactive component in the dialog will be focused. Users can navigate between interactive components by pressing tab. This includes any footer buttons. Navigation will cycle back to the first dialog component if tab is pressed while focusing the last component in the dialog. Pressing shift + tab will navigate backwards.

                                      \n\n

                                      When a tabbed dialog is opened, the first button in the tab menu is focused. Pressing tab will navigate to the first interactive component in that tab, and will cycle through the tab\u2019s components, the footer buttons, then back to the tab button. To switch to another tab, focus the tab button for the current tab, then use the arrow keys to cycle through the tab buttons.

                                      "}]},c=T(e),u=(i='TinyMCE '+(a=x.majorVersion,o=x.minorVersion,0===a.indexOf("@")?"X.X.X":a+"."+o)+"",{name:"versions",title:"Version",items:[{type:"htmlpanel",html:"

                                      "+A.translate(["You are using {0}",i])+"

                                      ",presets:"document"}]}),h=m(((n={})[s.name]=s,n[l.name]=l,n[c.name]=c,n[u.name]=u,n),t.get());return r=e,d.from(r.getParam("help_tabs")).fold(function(){return t=f(e=h),-1!==(n=t.indexOf("versions"))&&(t.splice(n,1),t.push("versions")),{tabs:e,names:t};var e,t,n},function(e){return t=h,n={},a=p(e,function(e){return"string"==typeof e?(y(t,e)&&(n[e]=t[e]),e):(n[e.name]=e).name}),{tabs:n,names:a};var t,n,a})},M=function(o,i){return function(){var e=P(o,i),a=e.tabs,t=e.names,n={type:"tabpanel",tabs:function(e){for(var t=[],n=function(e){t.push(e)},a=0;a'); - }); - }; - - var register$1 = function (editor) { - editor.ui.registry.addButton('hr', { - icon: 'horizontal-rule', - tooltip: 'Horizontal line', - onAction: function () { - return editor.execCommand('InsertHorizontalRule'); - } - }); - editor.ui.registry.addMenuItem('hr', { - icon: 'horizontal-rule', - text: 'Horizontal line', - onAction: function () { - return editor.execCommand('InsertHorizontalRule'); - } - }); - }; - - function Plugin () { - global.add('hr', function (editor) { - register(editor); - register$1(editor); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/hr/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/hr/plugin.min.js deleted file mode 100644 index dfeca9e..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/hr/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager");n.add("hr",function(n){var o,t;(o=n).addCommand("InsertHorizontalRule",function(){o.execCommand("mceInsertContent",!1,"
                                      ")}),(t=n).ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Horizontal line",onAction:function(){return t.execCommand("InsertHorizontalRule")}}),t.ui.registry.addMenuItem("hr",{icon:"horizontal-rule",text:"Horizontal line",onAction:function(){return t.execCommand("InsertHorizontalRule")}})})}(); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/image/plugin.js b/component/pear/module/tinymce/tinymce/plugins/image/plugin.js deleted file mode 100644 index d7b1cf1..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/image/plugin.js +++ /dev/null @@ -1,1664 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -(function () { - 'use strict'; - - var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); - - var __assign = function () { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - - var typeOf = function (x) { - var t = typeof x; - if (x === null) { - return 'null'; - } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { - return 'array'; - } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { - return 'string'; - } else { - return t; - } - }; - var isType = function (type) { - return function (value) { - return typeOf(value) === type; - }; - }; - var isSimpleType = function (type) { - return function (value) { - return typeof value === type; - }; - }; - var eq = function (t) { - return function (a) { - return t === a; - }; - }; - var isString = isType('string'); - var isObject = isType('object'); - var isArray = isType('array'); - var isNull = eq(null); - var isBoolean = isSimpleType('boolean'); - var isNumber = isSimpleType('number'); - - var noop = function () { - }; - var constant = function (value) { - return function () { - return value; - }; - }; - var never = constant(false); - var always = constant(true); - - var none = function () { - return NONE; - }; - var NONE = function () { - var eq = function (o) { - return o.isNone(); - }; - var call = function (thunk) { - return thunk(); - }; - var id = function (n) { - return n; - }; - var me = { - fold: function (n, _s) { - return n(); - }, - is: never, - isSome: never, - isNone: always, - getOr: id, - getOrThunk: call, - getOrDie: function (msg) { - throw new Error(msg || 'error: getOrDie called on none.'); - }, - getOrNull: constant(null), - getOrUndefined: constant(undefined), - or: id, - orThunk: call, - map: none, - each: noop, - bind: none, - exists: never, - forall: always, - filter: none, - equals: eq, - equals_: eq, - toArray: function () { - return []; - }, - toString: constant('none()') - }; - return me; - }(); - var some = function (a) { - var constant_a = constant(a); - var self = function () { - return me; - }; - var bind = function (f) { - return f(a); - }; - var me = { - fold: function (n, s) { - return s(a); - }, - is: function (v) { - return a === v; - }, - isSome: always, - isNone: never, - getOr: constant_a, - getOrThunk: constant_a, - getOrDie: constant_a, - getOrNull: constant_a, - getOrUndefined: constant_a, - or: self, - orThunk: self, - map: function (f) { - return some(f(a)); - }, - each: function (f) { - f(a); - }, - bind: bind, - exists: bind, - forall: bind, - filter: function (f) { - return f(a) ? me : NONE; - }, - toArray: function () { - return [a]; - }, - toString: function () { - return 'some(' + a + ')'; - }, - equals: function (o) { - return o.is(a); - }, - equals_: function (o, elementEq) { - return o.fold(never, function (b) { - return elementEq(a, b); - }); - } - }; - return me; - }; - var from = function (value) { - return value === null || value === undefined ? NONE : some(value); - }; - var Optional = { - some: some, - none: none, - from: from - }; - - var nativePush = Array.prototype.push; - var flatten = function (xs) { - var r = []; - for (var i = 0, len = xs.length; i < len; ++i) { - if (!isArray(xs[i])) { - throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); - } - nativePush.apply(r, xs[i]); - } - return r; - }; - var get = function (xs, i) { - return i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none(); - }; - var head = function (xs) { - return get(xs, 0); - }; - var findMap = function (arr, f) { - for (var i = 0; i < arr.length; i++) { - var r = f(arr[i], i); - if (r.isSome()) { - return r; - } - } - return Optional.none(); - }; - - var Global = typeof window !== 'undefined' ? window : Function('return this;')(); - - var rawSet = function (dom, key, value) { - if (isString(value) || isBoolean(value) || isNumber(value)) { - dom.setAttribute(key, value + ''); - } else { - console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom); - throw new Error('Attribute value was not simple'); - } - }; - var set = function (element, key, value) { - rawSet(element.dom, key, value); - }; - var remove = function (element, key) { - element.dom.removeAttribute(key); - }; - - var fromHtml = function (html, scope) { - var doc = scope || document; - var div = doc.createElement('div'); - div.innerHTML = html; - if (!div.hasChildNodes() || div.childNodes.length > 1) { - console.error('HTML does not have a single root node', html); - throw new Error('HTML must have a single root node'); - } - return fromDom(div.childNodes[0]); - }; - var fromTag = function (tag, scope) { - var doc = scope || document; - var node = doc.createElement(tag); - return fromDom(node); - }; - var fromText = function (text, scope) { - var doc = scope || document; - var node = doc.createTextNode(text); - return fromDom(node); - }; - var fromDom = function (node) { - if (node === null || node === undefined) { - throw new Error('Node cannot be null or undefined'); - } - return { dom: node }; - }; - var fromPoint = function (docElm, x, y) { - return Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom); - }; - var SugarElement = { - fromHtml: fromHtml, - fromTag: fromTag, - fromText: fromText, - fromDom: fromDom, - fromPoint: fromPoint - }; - - var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); - - var global$2 = tinymce.util.Tools.resolve('tinymce.util.Promise'); - - var global$3 = tinymce.util.Tools.resolve('tinymce.util.XHR'); - - var hasDimensions = function (editor) { - return editor.getParam('image_dimensions', true, 'boolean'); - }; - var hasAdvTab = function (editor) { - return editor.getParam('image_advtab', false, 'boolean'); - }; - var hasUploadTab = function (editor) { - return editor.getParam('image_uploadtab', true, 'boolean'); - }; - var getPrependUrl = function (editor) { - return editor.getParam('image_prepend_url', '', 'string'); - }; - var getClassList = function (editor) { - return editor.getParam('image_class_list'); - }; - var hasDescription = function (editor) { - return editor.getParam('image_description', true, 'boolean'); - }; - var hasImageTitle = function (editor) { - return editor.getParam('image_title', false, 'boolean'); - }; - var hasImageCaption = function (editor) { - return editor.getParam('image_caption', false, 'boolean'); - }; - var getImageList = function (editor) { - return editor.getParam('image_list', false); - }; - var hasUploadUrl = function (editor) { - return !!getUploadUrl(editor); - }; - var hasUploadHandler = function (editor) { - return !!getUploadHandler(editor); - }; - var getUploadUrl = function (editor) { - return editor.getParam('images_upload_url', '', 'string'); - }; - var getUploadHandler = function (editor) { - return editor.getParam('images_upload_handler', undefined, 'function'); - }; - var getUploadBasePath = function (editor) { - return editor.getParam('images_upload_base_path', undefined, 'string'); - }; - var getUploadCredentials = function (editor) { - return editor.getParam('images_upload_credentials', false, 'boolean'); - }; - var showAccessibilityOptions = function (editor) { - return editor.getParam('a11y_advanced_options', false, 'boolean'); - }; - var isAutomaticUploadsEnabled = function (editor) { - return editor.getParam('automatic_uploads', true, 'boolean'); - }; - - var parseIntAndGetMax = function (val1, val2) { - return Math.max(parseInt(val1, 10), parseInt(val2, 10)); - }; - var getImageSize = function (url) { - return new global$2(function (callback) { - var img = document.createElement('img'); - var done = function (dimensions) { - if (img.parentNode) { - img.parentNode.removeChild(img); - } - callback(dimensions); - }; - img.onload = function () { - var width = parseIntAndGetMax(img.width, img.clientWidth); - var height = parseIntAndGetMax(img.height, img.clientHeight); - var dimensions = { - width: width, - height: height - }; - done(global$2.resolve(dimensions)); - }; - img.onerror = function () { - done(global$2.reject('Failed to get image dimensions for: ' + url)); - }; - var style = img.style; - style.visibility = 'hidden'; - style.position = 'fixed'; - style.bottom = style.left = '0px'; - style.width = style.height = 'auto'; - document.body.appendChild(img); - img.src = url; - }); - }; - var removePixelSuffix = function (value) { - if (value) { - value = value.replace(/px$/, ''); - } - return value; - }; - var addPixelSuffix = function (value) { - if (value.length > 0 && /^[0-9]+$/.test(value)) { - value += 'px'; - } - return value; - }; - var mergeMargins = function (css) { - if (css.margin) { - var splitMargin = String(css.margin).split(' '); - switch (splitMargin.length) { - case 1: - css['margin-top'] = css['margin-top'] || splitMargin[0]; - css['margin-right'] = css['margin-right'] || splitMargin[0]; - css['margin-bottom'] = css['margin-bottom'] || splitMargin[0]; - css['margin-left'] = css['margin-left'] || splitMargin[0]; - break; - case 2: - css['margin-top'] = css['margin-top'] || splitMargin[0]; - css['margin-right'] = css['margin-right'] || splitMargin[1]; - css['margin-bottom'] = css['margin-bottom'] || splitMargin[0]; - css['margin-left'] = css['margin-left'] || splitMargin[1]; - break; - case 3: - css['margin-top'] = css['margin-top'] || splitMargin[0]; - css['margin-right'] = css['margin-right'] || splitMargin[1]; - css['margin-bottom'] = css['margin-bottom'] || splitMargin[2]; - css['margin-left'] = css['margin-left'] || splitMargin[1]; - break; - case 4: - css['margin-top'] = css['margin-top'] || splitMargin[0]; - css['margin-right'] = css['margin-right'] || splitMargin[1]; - css['margin-bottom'] = css['margin-bottom'] || splitMargin[2]; - css['margin-left'] = css['margin-left'] || splitMargin[3]; - } - delete css.margin; - } - return css; - }; - var createImageList = function (editor, callback) { - var imageList = getImageList(editor); - if (typeof imageList === 'string') { - global$3.send({ - url: imageList, - success: function (text) { - callback(JSON.parse(text)); - } - }); - } else if (typeof imageList === 'function') { - imageList(callback); - } else { - callback(imageList); - } - }; - var waitLoadImage = function (editor, data, imgElm) { - var selectImage = function () { - imgElm.onload = imgElm.onerror = null; - if (editor.selection) { - editor.selection.select(imgElm); - editor.nodeChanged(); - } - }; - imgElm.onload = function () { - if (!data.width && !data.height && hasDimensions(editor)) { - editor.dom.setAttribs(imgElm, { - width: String(imgElm.clientWidth), - height: String(imgElm.clientHeight) - }); - } - selectImage(); - }; - imgElm.onerror = selectImage; - }; - var blobToDataUri = function (blob) { - return new global$2(function (resolve, reject) { - var reader = new FileReader(); - reader.onload = function () { - resolve(reader.result); - }; - reader.onerror = function () { - reject(reader.error.message); - }; - reader.readAsDataURL(blob); - }); - }; - var isPlaceholderImage = function (imgElm) { - return imgElm.nodeName === 'IMG' && (imgElm.hasAttribute('data-mce-object') || imgElm.hasAttribute('data-mce-placeholder')); - }; - - var DOM = global$1.DOM; - var getHspace = function (image) { - if (image.style.marginLeft && image.style.marginRight && image.style.marginLeft === image.style.marginRight) { - return removePixelSuffix(image.style.marginLeft); - } else { - return ''; - } - }; - var getVspace = function (image) { - if (image.style.marginTop && image.style.marginBottom && image.style.marginTop === image.style.marginBottom) { - return removePixelSuffix(image.style.marginTop); - } else { - return ''; - } - }; - var getBorder = function (image) { - if (image.style.borderWidth) { - return removePixelSuffix(image.style.borderWidth); - } else { - return ''; - } - }; - var getAttrib = function (image, name) { - if (image.hasAttribute(name)) { - return image.getAttribute(name); - } else { - return ''; - } - }; - var getStyle = function (image, name) { - return image.style[name] ? image.style[name] : ''; - }; - var hasCaption = function (image) { - return image.parentNode !== null && image.parentNode.nodeName === 'FIGURE'; - }; - var updateAttrib = function (image, name, value) { - if (value === '') { - image.removeAttribute(name); - } else { - image.setAttribute(name, value); - } - }; - var wrapInFigure = function (image) { - var figureElm = DOM.create('figure', { class: 'image' }); - DOM.insertAfter(figureElm, image); - figureElm.appendChild(image); - figureElm.appendChild(DOM.create('figcaption', { contentEditable: 'true' }, 'Caption')); - figureElm.contentEditable = 'false'; - }; - var removeFigure = function (image) { - var figureElm = image.parentNode; - DOM.insertAfter(image, figureElm); - DOM.remove(figureElm); - }; - var toggleCaption = function (image) { - if (hasCaption(image)) { - removeFigure(image); - } else { - wrapInFigure(image); - } - }; - var normalizeStyle = function (image, normalizeCss) { - var attrValue = image.getAttribute('style'); - var value = normalizeCss(attrValue !== null ? attrValue : ''); - if (value.length > 0) { - image.setAttribute('style', value); - image.setAttribute('data-mce-style', value); - } else { - image.removeAttribute('style'); - } - }; - var setSize = function (name, normalizeCss) { - return function (image, name, value) { - if (image.style[name]) { - image.style[name] = addPixelSuffix(value); - normalizeStyle(image, normalizeCss); - } else { - updateAttrib(image, name, value); - } - }; - }; - var getSize = function (image, name) { - if (image.style[name]) { - return removePixelSuffix(image.style[name]); - } else { - return getAttrib(image, name); - } - }; - var setHspace = function (image, value) { - var pxValue = addPixelSuffix(value); - image.style.marginLeft = pxValue; - image.style.marginRight = pxValue; - }; - var setVspace = function (image, value) { - var pxValue = addPixelSuffix(value); - image.style.marginTop = pxValue; - image.style.marginBottom = pxValue; - }; - var setBorder = function (image, value) { - var pxValue = addPixelSuffix(value); - image.style.borderWidth = pxValue; - }; - var setBorderStyle = function (image, value) { - image.style.borderStyle = value; - }; - var getBorderStyle = function (image) { - return getStyle(image, 'borderStyle'); - }; - var isFigure = function (elm) { - return elm.nodeName === 'FIGURE'; - }; - var isImage = function (elm) { - return elm.nodeName === 'IMG'; - }; - var getIsDecorative = function (image) { - return DOM.getAttrib(image, 'alt').length === 0 && DOM.getAttrib(image, 'role') === 'presentation'; - }; - var getAlt = function (image) { - if (getIsDecorative(image)) { - return ''; - } else { - return getAttrib(image, 'alt'); - } - }; - var defaultData = function () { - return { - src: '', - alt: '', - title: '', - width: '', - height: '', - class: '', - style: '', - caption: false, - hspace: '', - vspace: '', - border: '', - borderStyle: '', - isDecorative: false - }; - }; - var getStyleValue = function (normalizeCss, data) { - var image = document.createElement('img'); - updateAttrib(image, 'style', data.style); - if (getHspace(image) || data.hspace !== '') { - setHspace(image, data.hspace); - } - if (getVspace(image) || data.vspace !== '') { - setVspace(image, data.vspace); - } - if (getBorder(image) || data.border !== '') { - setBorder(image, data.border); - } - if (getBorderStyle(image) || data.borderStyle !== '') { - setBorderStyle(image, data.borderStyle); - } - return normalizeCss(image.getAttribute('style')); - }; - var create = function (normalizeCss, data) { - var image = document.createElement('img'); - write(normalizeCss, __assign(__assign({}, data), { caption: false }), image); - setAlt(image, data.alt, data.isDecorative); - if (data.caption) { - var figure = DOM.create('figure', { class: 'image' }); - figure.appendChild(image); - figure.appendChild(DOM.create('figcaption', { contentEditable: 'true' }, 'Caption')); - figure.contentEditable = 'false'; - return figure; - } else { - return image; - } - }; - var read = function (normalizeCss, image) { - return { - src: getAttrib(image, 'src'), - alt: getAlt(image), - title: getAttrib(image, 'title'), - width: getSize(image, 'width'), - height: getSize(image, 'height'), - class: getAttrib(image, 'class'), - style: normalizeCss(getAttrib(image, 'style')), - caption: hasCaption(image), - hspace: getHspace(image), - vspace: getVspace(image), - border: getBorder(image), - borderStyle: getStyle(image, 'borderStyle'), - isDecorative: getIsDecorative(image) - }; - }; - var updateProp = function (image, oldData, newData, name, set) { - if (newData[name] !== oldData[name]) { - set(image, name, newData[name]); - } - }; - var setAlt = function (image, alt, isDecorative) { - if (isDecorative) { - DOM.setAttrib(image, 'role', 'presentation'); - var sugarImage = SugarElement.fromDom(image); - set(sugarImage, 'alt', ''); - } else { - if (isNull(alt)) { - var sugarImage = SugarElement.fromDom(image); - remove(sugarImage, 'alt'); - } else { - var sugarImage = SugarElement.fromDom(image); - set(sugarImage, 'alt', alt); - } - if (DOM.getAttrib(image, 'role') === 'presentation') { - DOM.setAttrib(image, 'role', ''); - } - } - }; - var updateAlt = function (image, oldData, newData) { - if (newData.alt !== oldData.alt || newData.isDecorative !== oldData.isDecorative) { - setAlt(image, newData.alt, newData.isDecorative); - } - }; - var normalized = function (set, normalizeCss) { - return function (image, name, value) { - set(image, value); - normalizeStyle(image, normalizeCss); - }; - }; - var write = function (normalizeCss, newData, image) { - var oldData = read(normalizeCss, image); - updateProp(image, oldData, newData, 'caption', function (image, _name, _value) { - return toggleCaption(image); - }); - updateProp(image, oldData, newData, 'src', updateAttrib); - updateProp(image, oldData, newData, 'title', updateAttrib); - updateProp(image, oldData, newData, 'width', setSize('width', normalizeCss)); - updateProp(image, oldData, newData, 'height', setSize('height', normalizeCss)); - updateProp(image, oldData, newData, 'class', updateAttrib); - updateProp(image, oldData, newData, 'style', normalized(function (image, value) { - return updateAttrib(image, 'style', value); - }, normalizeCss)); - updateProp(image, oldData, newData, 'hspace', normalized(setHspace, normalizeCss)); - updateProp(image, oldData, newData, 'vspace', normalized(setVspace, normalizeCss)); - updateProp(image, oldData, newData, 'border', normalized(setBorder, normalizeCss)); - updateProp(image, oldData, newData, 'borderStyle', normalized(setBorderStyle, normalizeCss)); - updateAlt(image, oldData, newData); - }; - - var normalizeCss = function (editor, cssText) { - var css = editor.dom.styles.parse(cssText); - var mergedCss = mergeMargins(css); - var compressed = editor.dom.styles.parse(editor.dom.styles.serialize(mergedCss)); - return editor.dom.styles.serialize(compressed); - }; - var getSelectedImage = function (editor) { - var imgElm = editor.selection.getNode(); - var figureElm = editor.dom.getParent(imgElm, 'figure.image'); - if (figureElm) { - return editor.dom.select('img', figureElm)[0]; - } - if (imgElm && (imgElm.nodeName !== 'IMG' || isPlaceholderImage(imgElm))) { - return null; - } - return imgElm; - }; - var splitTextBlock = function (editor, figure) { - var dom = editor.dom; - var textBlock = dom.getParent(figure.parentNode, function (node) { - return !!editor.schema.getTextBlockElements()[node.nodeName]; - }, editor.getBody()); - if (textBlock) { - return dom.split(textBlock, figure); - } else { - return figure; - } - }; - var readImageDataFromSelection = function (editor) { - var image = getSelectedImage(editor); - return image ? read(function (css) { - return normalizeCss(editor, css); - }, image) : defaultData(); - }; - var insertImageAtCaret = function (editor, data) { - var elm = create(function (css) { - return normalizeCss(editor, css); - }, data); - editor.dom.setAttrib(elm, 'data-mce-id', '__mcenew'); - editor.focus(); - editor.selection.setContent(elm.outerHTML); - var insertedElm = editor.dom.select('*[data-mce-id="__mcenew"]')[0]; - editor.dom.setAttrib(insertedElm, 'data-mce-id', null); - if (isFigure(insertedElm)) { - var figure = splitTextBlock(editor, insertedElm); - editor.selection.select(figure); - } else { - editor.selection.select(insertedElm); - } - }; - var syncSrcAttr = function (editor, image) { - editor.dom.setAttrib(image, 'src', image.getAttribute('src')); - }; - var deleteImage = function (editor, image) { - if (image) { - var elm = editor.dom.is(image.parentNode, 'figure.image') ? image.parentNode : image; - editor.dom.remove(elm); - editor.focus(); - editor.nodeChanged(); - if (editor.dom.isEmpty(editor.getBody())) { - editor.setContent(''); - editor.selection.setCursorLocation(); - } - } - }; - var writeImageDataToSelection = function (editor, data) { - var image = getSelectedImage(editor); - write(function (css) { - return normalizeCss(editor, css); - }, data, image); - syncSrcAttr(editor, image); - if (isFigure(image.parentNode)) { - var figure = image.parentNode; - splitTextBlock(editor, figure); - editor.selection.select(image.parentNode); - } else { - editor.selection.select(image); - waitLoadImage(editor, data, image); - } - }; - var insertOrUpdateImage = function (editor, partialData) { - var image = getSelectedImage(editor); - if (image) { - var selectedImageData = read(function (css) { - return normalizeCss(editor, css); - }, image); - var data = __assign(__assign({}, selectedImageData), partialData); - if (data.src) { - writeImageDataToSelection(editor, data); - } else { - deleteImage(editor, image); - } - } else if (partialData.src) { - insertImageAtCaret(editor, __assign(__assign({}, defaultData()), partialData)); - } - }; - - var hasOwnProperty = Object.prototype.hasOwnProperty; - var deep = function (old, nu) { - var bothObjects = isObject(old) && isObject(nu); - return bothObjects ? deepMerge(old, nu) : nu; - }; - var baseMerge = function (merger) { - return function () { - var objects = new Array(arguments.length); - for (var i = 0; i < objects.length; i++) { - objects[i] = arguments[i]; - } - if (objects.length === 0) { - throw new Error('Can\'t merge zero objects'); - } - var ret = {}; - for (var j = 0; j < objects.length; j++) { - var curObject = objects[j]; - for (var key in curObject) { - if (hasOwnProperty.call(curObject, key)) { - ret[key] = merger(ret[key], curObject[key]); - } - } - } - return ret; - }; - }; - var deepMerge = baseMerge(deep); - - var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools'); - - var getValue = function (item) { - return isString(item.value) ? item.value : ''; - }; - var getText = function (item) { - if (isString(item.text)) { - return item.text; - } else if (isString(item.title)) { - return item.title; - } else { - return ''; - } - }; - var sanitizeList = function (list, extractValue) { - var out = []; - global$4.each(list, function (item) { - var text = getText(item); - if (item.menu !== undefined) { - var items = sanitizeList(item.menu, extractValue); - out.push({ - text: text, - items: items - }); - } else { - var value = extractValue(item); - out.push({ - text: text, - value: value - }); - } - }); - return out; - }; - var sanitizer = function (extracter) { - if (extracter === void 0) { - extracter = getValue; - } - return function (list) { - if (list) { - return Optional.from(list).map(function (list) { - return sanitizeList(list, extracter); - }); - } else { - return Optional.none(); - } - }; - }; - var sanitize = function (list) { - return sanitizer(getValue)(list); - }; - var isGroup = function (item) { - return Object.prototype.hasOwnProperty.call(item, 'items'); - }; - var findEntryDelegate = function (list, value) { - return findMap(list, function (item) { - if (isGroup(item)) { - return findEntryDelegate(item.items, value); - } else if (item.value === value) { - return Optional.some(item); - } else { - return Optional.none(); - } - }); - }; - var findEntry = function (optList, value) { - return optList.bind(function (list) { - return findEntryDelegate(list, value); - }); - }; - var ListUtils = { - sanitizer: sanitizer, - sanitize: sanitize, - findEntry: findEntry - }; - - var pathJoin = function (path1, path2) { - if (path1) { - return path1.replace(/\/$/, '') + '/' + path2.replace(/^\//, ''); - } - return path2; - }; - function Uploader (settings) { - var defaultHandler = function (blobInfo, success, failure, progress) { - var xhr = new XMLHttpRequest(); - xhr.open('POST', settings.url); - xhr.withCredentials = settings.credentials; - xhr.upload.onprogress = function (e) { - progress(e.loaded / e.total * 100); - }; - xhr.onerror = function () { - failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status); - }; - xhr.onload = function () { - if (xhr.status < 200 || xhr.status >= 300) { - failure('HTTP Error: ' + xhr.status); - return; - } - var json = JSON.parse(xhr.responseText); - if (!json || typeof json.location !== 'string') { - failure('Invalid JSON: ' + xhr.responseText); - return; - } - success(pathJoin(settings.basePath, json.location)); - }; - var formData = new FormData(); - formData.append('file', blobInfo.blob(), blobInfo.filename()); - xhr.send(formData); - }; - var uploadBlob = function (blobInfo, handler) { - return new global$2(function (resolve, reject) { - try { - handler(blobInfo, resolve, reject, noop); - } catch (ex) { - reject(ex.message); - } - }); - }; - var isDefaultHandler = function (handler) { - return handler === defaultHandler; - }; - var upload = function (blobInfo) { - return !settings.url && isDefaultHandler(settings.handler) ? global$2.reject('Upload url missing from the settings.') : uploadBlob(blobInfo, settings.handler); - }; - settings = global$4.extend({ - credentials: false, - handler: defaultHandler - }, settings); - return { upload: upload }; - } - - var makeTab = function (_info) { - return { - title: 'Advanced', - name: 'advanced', - items: [ - { - type: 'input', - label: 'Style', - name: 'style' - }, - { - type: 'grid', - columns: 2, - items: [ - { - type: 'input', - label: 'Vertical space', - name: 'vspace', - inputMode: 'numeric' - }, - { - type: 'input', - label: 'Horizontal space', - name: 'hspace', - inputMode: 'numeric' - }, - { - type: 'input', - label: 'Border width', - name: 'border', - inputMode: 'numeric' - }, - { - type: 'listbox', - name: 'borderstyle', - label: 'Border style', - items: [ - { - text: 'Select...', - value: '' - }, - { - text: 'Solid', - value: 'solid' - }, - { - text: 'Dotted', - value: 'dotted' - }, - { - text: 'Dashed', - value: 'dashed' - }, - { - text: 'Double', - value: 'double' - }, - { - text: 'Groove', - value: 'groove' - }, - { - text: 'Ridge', - value: 'ridge' - }, - { - text: 'Inset', - value: 'inset' - }, - { - text: 'Outset', - value: 'outset' - }, - { - text: 'None', - value: 'none' - }, - { - text: 'Hidden', - value: 'hidden' - } - ] - } - ] - } - ] - }; - }; - var AdvTab = { makeTab: makeTab }; - - var collect = function (editor) { - var urlListSanitizer = ListUtils.sanitizer(function (item) { - return editor.convertURL(item.value || item.url, 'src'); - }); - var futureImageList = new global$2(function (completer) { - createImageList(editor, function (imageList) { - completer(urlListSanitizer(imageList).map(function (items) { - return flatten([ - [{ - text: 'None', - value: '' - }], - items - ]); - })); - }); - }); - var classList = ListUtils.sanitize(getClassList(editor)); - var hasAdvTab$1 = hasAdvTab(editor); - var hasUploadTab$1 = hasUploadTab(editor); - var hasUploadUrl$1 = hasUploadUrl(editor); - var hasUploadHandler$1 = hasUploadHandler(editor); - var image = readImageDataFromSelection(editor); - var hasDescription$1 = hasDescription(editor); - var hasImageTitle$1 = hasImageTitle(editor); - var hasDimensions$1 = hasDimensions(editor); - var hasImageCaption$1 = hasImageCaption(editor); - var hasAccessibilityOptions = showAccessibilityOptions(editor); - var url = getUploadUrl(editor); - var basePath = getUploadBasePath(editor); - var credentials = getUploadCredentials(editor); - var handler = getUploadHandler(editor); - var automaticUploads = isAutomaticUploadsEnabled(editor); - var prependURL = Optional.some(getPrependUrl(editor)).filter(function (preUrl) { - return isString(preUrl) && preUrl.length > 0; - }); - return futureImageList.then(function (imageList) { - return { - image: image, - imageList: imageList, - classList: classList, - hasAdvTab: hasAdvTab$1, - hasUploadTab: hasUploadTab$1, - hasUploadUrl: hasUploadUrl$1, - hasUploadHandler: hasUploadHandler$1, - hasDescription: hasDescription$1, - hasImageTitle: hasImageTitle$1, - hasDimensions: hasDimensions$1, - hasImageCaption: hasImageCaption$1, - url: url, - basePath: basePath, - credentials: credentials, - handler: handler, - prependURL: prependURL, - hasAccessibilityOptions: hasAccessibilityOptions, - automaticUploads: automaticUploads - }; - }); - }; - - var makeItems = function (info) { - var imageUrl = { - name: 'src', - type: 'urlinput', - filetype: 'image', - label: 'Source' - }; - var imageList = info.imageList.map(function (items) { - return { - name: 'images', - type: 'listbox', - label: 'Image list', - items: items - }; - }); - var imageDescription = { - name: 'alt', - type: 'input', - label: 'Alternative description', - disabled: info.hasAccessibilityOptions && info.image.isDecorative - }; - var imageTitle = { - name: 'title', - type: 'input', - label: 'Image title' - }; - var imageDimensions = { - name: 'dimensions', - type: 'sizeinput' - }; - var isDecorative = { - type: 'label', - label: 'Accessibility', - items: [{ - name: 'isDecorative', - type: 'checkbox', - label: 'Image is decorative' - }] - }; - var classList = info.classList.map(function (items) { - return { - name: 'classes', - type: 'listbox', - label: 'Class', - items: items - }; - }); - var caption = { - type: 'label', - label: 'Caption', - items: [{ - type: 'checkbox', - name: 'caption', - label: 'Show caption' - }] - }; - return flatten([ - [imageUrl], - imageList.toArray(), - info.hasAccessibilityOptions && info.hasDescription ? [isDecorative] : [], - info.hasDescription ? [imageDescription] : [], - info.hasImageTitle ? [imageTitle] : [], - info.hasDimensions ? [imageDimensions] : [], - [{ - type: 'grid', - columns: 2, - items: flatten([ - classList.toArray(), - info.hasImageCaption ? [caption] : [] - ]) - }] - ]); - }; - var makeTab$1 = function (info) { - return { - title: 'General', - name: 'general', - items: makeItems(info) - }; - }; - var MainTab = { - makeTab: makeTab$1, - makeItems: makeItems - }; - - var makeTab$2 = function (_info) { - var items = [{ - type: 'dropzone', - name: 'fileinput' - }]; - return { - title: 'Upload', - name: 'upload', - items: items - }; - }; - var UploadTab = { makeTab: makeTab$2 }; - - var createState = function (info) { - return { - prevImage: ListUtils.findEntry(info.imageList, info.image.src), - prevAlt: info.image.alt, - open: true - }; - }; - var fromImageData = function (image) { - return { - src: { - value: image.src, - meta: {} - }, - images: image.src, - alt: image.alt, - title: image.title, - dimensions: { - width: image.width, - height: image.height - }, - classes: image.class, - caption: image.caption, - style: image.style, - vspace: image.vspace, - border: image.border, - hspace: image.hspace, - borderstyle: image.borderStyle, - fileinput: [], - isDecorative: image.isDecorative - }; - }; - var toImageData = function (data, removeEmptyAlt) { - return { - src: data.src.value, - alt: data.alt.length === 0 && removeEmptyAlt ? null : data.alt, - title: data.title, - width: data.dimensions.width, - height: data.dimensions.height, - class: data.classes, - style: data.style, - caption: data.caption, - hspace: data.hspace, - vspace: data.vspace, - border: data.border, - borderStyle: data.borderstyle, - isDecorative: data.isDecorative - }; - }; - var addPrependUrl2 = function (info, srcURL) { - if (!/^(?:[a-zA-Z]+:)?\/\//.test(srcURL)) { - return info.prependURL.bind(function (prependUrl) { - if (srcURL.substring(0, prependUrl.length) !== prependUrl) { - return Optional.some(prependUrl + srcURL); - } - return Optional.none(); - }); - } - return Optional.none(); - }; - var addPrependUrl = function (info, api) { - var data = api.getData(); - addPrependUrl2(info, data.src.value).each(function (srcURL) { - api.setData({ - src: { - value: srcURL, - meta: data.src.meta - } - }); - }); - }; - var formFillFromMeta2 = function (info, data, meta) { - if (info.hasDescription && isString(meta.alt)) { - data.alt = meta.alt; - } - if (info.hasAccessibilityOptions) { - data.isDecorative = meta.isDecorative || data.isDecorative || false; - } - if (info.hasImageTitle && isString(meta.title)) { - data.title = meta.title; - } - if (info.hasDimensions) { - if (isString(meta.width)) { - data.dimensions.width = meta.width; - } - if (isString(meta.height)) { - data.dimensions.height = meta.height; - } - } - if (isString(meta.class)) { - ListUtils.findEntry(info.classList, meta.class).each(function (entry) { - data.classes = entry.value; - }); - } - if (info.hasImageCaption) { - if (isBoolean(meta.caption)) { - data.caption = meta.caption; - } - } - if (info.hasAdvTab) { - if (isString(meta.style)) { - data.style = meta.style; - } - if (isString(meta.vspace)) { - data.vspace = meta.vspace; - } - if (isString(meta.border)) { - data.border = meta.border; - } - if (isString(meta.hspace)) { - data.hspace = meta.hspace; - } - if (isString(meta.borderstyle)) { - data.borderstyle = meta.borderstyle; - } - } - }; - var formFillFromMeta = function (info, api) { - var data = api.getData(); - var meta = data.src.meta; - if (meta !== undefined) { - var newData = deepMerge({}, data); - formFillFromMeta2(info, newData, meta); - api.setData(newData); - } - }; - var calculateImageSize = function (helpers, info, state, api) { - var data = api.getData(); - var url = data.src.value; - var meta = data.src.meta || {}; - if (!meta.width && !meta.height && info.hasDimensions) { - helpers.imageSize(url).then(function (size) { - if (state.open) { - api.setData({ dimensions: size }); - } - }); - } - }; - var updateImagesDropdown = function (info, state, api) { - var data = api.getData(); - var image = ListUtils.findEntry(info.imageList, data.src.value); - state.prevImage = image; - api.setData({ - images: image.map(function (entry) { - return entry.value; - }).getOr('') - }); - }; - var changeSrc = function (helpers, info, state, api) { - addPrependUrl(info, api); - formFillFromMeta(info, api); - calculateImageSize(helpers, info, state, api); - updateImagesDropdown(info, state, api); - }; - var changeImages = function (helpers, info, state, api) { - var data = api.getData(); - var image = ListUtils.findEntry(info.imageList, data.images); - image.each(function (img) { - var updateAlt = data.alt === '' || state.prevImage.map(function (image) { - return image.text === data.alt; - }).getOr(false); - if (updateAlt) { - if (img.value === '') { - api.setData({ - src: img, - alt: state.prevAlt - }); - } else { - api.setData({ - src: img, - alt: img.text - }); - } - } else { - api.setData({ src: img }); - } - }); - state.prevImage = image; - changeSrc(helpers, info, state, api); - }; - var calcVSpace = function (css) { - var matchingTopBottom = css['margin-top'] && css['margin-bottom'] && css['margin-top'] === css['margin-bottom']; - return matchingTopBottom ? removePixelSuffix(String(css['margin-top'])) : ''; - }; - var calcHSpace = function (css) { - var matchingLeftRight = css['margin-right'] && css['margin-left'] && css['margin-right'] === css['margin-left']; - return matchingLeftRight ? removePixelSuffix(String(css['margin-right'])) : ''; - }; - var calcBorderWidth = function (css) { - return css['border-width'] ? removePixelSuffix(String(css['border-width'])) : ''; - }; - var calcBorderStyle = function (css) { - return css['border-style'] ? String(css['border-style']) : ''; - }; - var calcStyle = function (parseStyle, serializeStyle, css) { - return serializeStyle(parseStyle(serializeStyle(css))); - }; - var changeStyle2 = function (parseStyle, serializeStyle, data) { - var css = mergeMargins(parseStyle(data.style)); - var dataCopy = deepMerge({}, data); - dataCopy.vspace = calcVSpace(css); - dataCopy.hspace = calcHSpace(css); - dataCopy.border = calcBorderWidth(css); - dataCopy.borderstyle = calcBorderStyle(css); - dataCopy.style = calcStyle(parseStyle, serializeStyle, css); - return dataCopy; - }; - var changeStyle = function (helpers, api) { - var data = api.getData(); - var newData = changeStyle2(helpers.parseStyle, helpers.serializeStyle, data); - api.setData(newData); - }; - var changeAStyle = function (helpers, info, api) { - var data = deepMerge(fromImageData(info.image), api.getData()); - var style = getStyleValue(helpers.normalizeCss, toImageData(data, false)); - api.setData({ style: style }); - }; - var changeFileInput = function (helpers, info, state, api) { - var data = api.getData(); - api.block('Uploading image'); - head(data.fileinput).fold(function () { - api.unblock(); - }, function (file) { - var blobUri = URL.createObjectURL(file); - var uploader = Uploader({ - url: info.url, - basePath: info.basePath, - credentials: info.credentials, - handler: info.handler - }); - var finalize = function () { - api.unblock(); - URL.revokeObjectURL(blobUri); - }; - var updateSrcAndSwitchTab = function (url) { - api.setData({ - src: { - value: url, - meta: {} - } - }); - api.showTab('general'); - changeSrc(helpers, info, state, api); - }; - blobToDataUri(file).then(function (dataUrl) { - var blobInfo = helpers.createBlobCache(file, blobUri, dataUrl); - if (info.automaticUploads) { - uploader.upload(blobInfo).then(function (url) { - updateSrcAndSwitchTab(url); - finalize(); - }).catch(function (err) { - finalize(); - helpers.alertErr(err); - }); - } else { - helpers.addToBlobCache(blobInfo); - updateSrcAndSwitchTab(blobInfo.blobUri()); - api.unblock(); - } - }); - }); - }; - var changeHandler = function (helpers, info, state) { - return function (api, evt) { - if (evt.name === 'src') { - changeSrc(helpers, info, state, api); - } else if (evt.name === 'images') { - changeImages(helpers, info, state, api); - } else if (evt.name === 'alt') { - state.prevAlt = api.getData().alt; - } else if (evt.name === 'style') { - changeStyle(helpers, api); - } else if (evt.name === 'vspace' || evt.name === 'hspace' || evt.name === 'border' || evt.name === 'borderstyle') { - changeAStyle(helpers, info, api); - } else if (evt.name === 'fileinput') { - changeFileInput(helpers, info, state, api); - } else if (evt.name === 'isDecorative') { - if (api.getData().isDecorative) { - api.disable('alt'); - } else { - api.enable('alt'); - } - } - }; - }; - var closeHandler = function (state) { - return function () { - state.open = false; - }; - }; - var makeDialogBody = function (info) { - if (info.hasAdvTab || info.hasUploadUrl || info.hasUploadHandler) { - var tabPanel = { - type: 'tabpanel', - tabs: flatten([ - [MainTab.makeTab(info)], - info.hasAdvTab ? [AdvTab.makeTab(info)] : [], - info.hasUploadTab && (info.hasUploadUrl || info.hasUploadHandler) ? [UploadTab.makeTab(info)] : [] - ]) - }; - return tabPanel; - } else { - var panel = { - type: 'panel', - items: MainTab.makeItems(info) - }; - return panel; - } - }; - var makeDialog = function (helpers) { - return function (info) { - var state = createState(info); - return { - title: 'Insert/Edit Image', - size: 'normal', - body: makeDialogBody(info), - buttons: [ - { - type: 'cancel', - name: 'cancel', - text: 'Cancel' - }, - { - type: 'submit', - name: 'save', - text: 'Save', - primary: true - } - ], - initialData: fromImageData(info.image), - onSubmit: helpers.onSubmit(info), - onChange: changeHandler(helpers, info, state), - onClose: closeHandler(state) - }; - }; - }; - var submitHandler = function (editor) { - return function (info) { - return function (api) { - var data = deepMerge(fromImageData(info.image), api.getData()); - editor.execCommand('mceUpdateImage', false, toImageData(data, info.hasAccessibilityOptions)); - editor.editorUpload.uploadImagesAuto(); - api.close(); - }; - }; - }; - var imageSize = function (editor) { - return function (url) { - return getImageSize(editor.documentBaseURI.toAbsolute(url)).then(function (dimensions) { - return { - width: String(dimensions.width), - height: String(dimensions.height) - }; - }); - }; - }; - var createBlobCache = function (editor) { - return function (file, blobUri, dataUrl) { - return editor.editorUpload.blobCache.create({ - blob: file, - blobUri: blobUri, - name: file.name ? file.name.replace(/\.[^\.]+$/, '') : null, - filename: file.name, - base64: dataUrl.split(',')[1] - }); - }; - }; - var addToBlobCache = function (editor) { - return function (blobInfo) { - editor.editorUpload.blobCache.add(blobInfo); - }; - }; - var alertErr = function (editor) { - return function (message) { - editor.windowManager.alert(message); - }; - }; - var normalizeCss$1 = function (editor) { - return function (cssText) { - return normalizeCss(editor, cssText); - }; - }; - var parseStyle = function (editor) { - return function (cssText) { - return editor.dom.parseStyle(cssText); - }; - }; - var serializeStyle = function (editor) { - return function (stylesArg, name) { - return editor.dom.serializeStyle(stylesArg, name); - }; - }; - var Dialog = function (editor) { - var helpers = { - onSubmit: submitHandler(editor), - imageSize: imageSize(editor), - addToBlobCache: addToBlobCache(editor), - createBlobCache: createBlobCache(editor), - alertErr: alertErr(editor), - normalizeCss: normalizeCss$1(editor), - parseStyle: parseStyle(editor), - serializeStyle: serializeStyle(editor) - }; - var open = function () { - collect(editor).then(makeDialog(helpers)).then(editor.windowManager.open); - }; - return { open: open }; - }; - - var register = function (editor) { - editor.addCommand('mceImage', Dialog(editor).open); - editor.addCommand('mceUpdateImage', function (_ui, data) { - editor.undoManager.transact(function () { - return insertOrUpdateImage(editor, data); - }); - }); - }; - - var hasImageClass = function (node) { - var className = node.attr('class'); - return className && /\bimage\b/.test(className); - }; - var toggleContentEditableState = function (state) { - return function (nodes) { - var i = nodes.length; - var toggleContentEditable = function (node) { - node.attr('contenteditable', state ? 'true' : null); - }; - while (i--) { - var node = nodes[i]; - if (hasImageClass(node)) { - node.attr('contenteditable', state ? 'false' : null); - global$4.each(node.getAll('figcaption'), toggleContentEditable); - } - } - }; - }; - var setup = function (editor) { - editor.on('PreInit', function () { - editor.parser.addNodeFilter('figure', toggleContentEditableState(true)); - editor.serializer.addNodeFilter('figure', toggleContentEditableState(false)); - }); - }; - - var register$1 = function (editor) { - editor.ui.registry.addToggleButton('image', { - icon: 'image', - tooltip: 'Insert/edit image', - onAction: Dialog(editor).open, - onSetup: function (buttonApi) { - return editor.selection.selectorChangedWithUnbind('img:not([data-mce-object],[data-mce-placeholder]),figure.image', buttonApi.setActive).unbind; - } - }); - editor.ui.registry.addMenuItem('image', { - icon: 'image', - text: 'Image...', - onAction: Dialog(editor).open - }); - editor.ui.registry.addContextMenu('image', { - update: function (element) { - return isFigure(element) || isImage(element) && !isPlaceholderImage(element) ? ['image'] : []; - } - }); - }; - - function Plugin () { - global.add('image', function (editor) { - setup(editor); - register$1(editor); - register(editor); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/image/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/image/plugin.min.js deleted file mode 100644 index 7b45436..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/image/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var t,e,n,r,o,a=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=function(){return(c=Object.assign||function(e){for(var t,n=1,r=arguments.length;n 1) { - console.error('HTML does not have a single root node', html); - throw new Error('HTML must have a single root node'); - } - return fromDom(div.childNodes[0]); - }; - var fromTag = function (tag, scope) { - var doc = scope || document; - var node = doc.createElement(tag); - return fromDom(node); - }; - var fromText = function (text, scope) { - var doc = scope || document; - var node = doc.createTextNode(text); - return fromDom(node); - }; - var fromDom = function (node) { - if (node === null || node === undefined) { - throw new Error('Node cannot be null or undefined'); - } - return { dom: node }; - }; - var fromPoint = function (docElm, x, y) { - return Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom); - }; - var SugarElement = { - fromHtml: fromHtml, - fromTag: fromTag, - fromText: fromText, - fromDom: fromDom, - fromPoint: fromPoint - }; - - var is = function (element, selector) { - var dom = element.dom; - if (dom.nodeType !== ELEMENT) { - return false; - } else { - var elem = dom; - if (elem.matches !== undefined) { - return elem.matches(selector); - } else if (elem.msMatchesSelector !== undefined) { - return elem.msMatchesSelector(selector); - } else if (elem.webkitMatchesSelector !== undefined) { - return elem.webkitMatchesSelector(selector); - } else if (elem.mozMatchesSelector !== undefined) { - return elem.mozMatchesSelector(selector); - } else { - throw new Error('Browser lacks native selectors'); - } - } - }; - - var Global = typeof window !== 'undefined' ? window : Function('return this;')(); - - var child = function (scope, predicate) { - var pred = function (node) { - return predicate(SugarElement.fromDom(node)); - }; - var result = find(scope.dom.childNodes, pred); - return result.map(SugarElement.fromDom); - }; - - var child$1 = function (scope, selector) { - return child(scope, function (e) { - return is(e, selector); - }); - }; - - var global$2 = tinymce.util.Tools.resolve('tinymce.util.Delay'); - - var global$3 = tinymce.util.Tools.resolve('tinymce.util.Promise'); - - var global$4 = tinymce.util.Tools.resolve('tinymce.util.URI'); - - var getToolbarItems = function (editor) { - return editor.getParam('imagetools_toolbar', 'rotateleft rotateright flipv fliph editimage imageoptions'); - }; - var getProxyUrl = function (editor) { - return editor.getParam('imagetools_proxy'); - }; - var getCorsHosts = function (editor) { - return editor.getParam('imagetools_cors_hosts', [], 'string[]'); - }; - var getCredentialsHosts = function (editor) { - return editor.getParam('imagetools_credentials_hosts', [], 'string[]'); - }; - var getFetchImage = function (editor) { - return Optional.from(editor.getParam('imagetools_fetch_image', null, 'function')); - }; - var getApiKey = function (editor) { - return editor.getParam('api_key', editor.getParam('imagetools_api_key', '', 'string'), 'string'); - }; - var getUploadTimeout = function (editor) { - return editor.getParam('images_upload_timeout', 30000, 'number'); - }; - var shouldReuseFilename = function (editor) { - return editor.getParam('images_reuse_filename', false, 'boolean'); - }; - - function getImageSize(img) { - var width, height; - function isPxValue(value) { - return /^[0-9\.]+px$/.test(value); - } - width = img.style.width; - height = img.style.height; - if (width || height) { - if (isPxValue(width) && isPxValue(height)) { - return { - w: parseInt(width, 10), - h: parseInt(height, 10) - }; - } - return null; - } - width = img.width; - height = img.height; - if (width && height) { - return { - w: parseInt(width, 10), - h: parseInt(height, 10) - }; - } - return null; - } - function setImageSize(img, size) { - var width, height; - if (size) { - width = img.style.width; - height = img.style.height; - if (width || height) { - img.style.width = size.w + 'px'; - img.style.height = size.h + 'px'; - img.removeAttribute('data-mce-style'); - } - width = img.width; - height = img.height; - if (width || height) { - img.setAttribute('width', String(size.w)); - img.setAttribute('height', String(size.h)); - } - } - } - function getNaturalImageSize(img) { - return { - w: img.naturalWidth, - h: img.naturalHeight - }; - } - - var count = 0; - var getFigureImg = function (elem) { - return child$1(SugarElement.fromDom(elem), 'img'); - }; - var isFigure = function (editor, elem) { - return editor.dom.is(elem, 'figure'); - }; - var isImage = function (editor, imgNode) { - return editor.dom.is(imgNode, 'img:not([data-mce-object],[data-mce-placeholder])'); - }; - var getEditableImage = function (editor, node) { - var isEditable = function (imgNode) { - return isImage(editor, imgNode) && (isLocalImage(editor, imgNode) || isCorsImage(editor, imgNode) || isNonNullable(getProxyUrl(editor))); - }; - if (isFigure(editor, node)) { - return getFigureImg(node).bind(function (img) { - return isEditable(img.dom) ? Optional.some(img.dom) : Optional.none(); - }); - } else { - return isEditable(node) ? Optional.some(node) : Optional.none(); - } - }; - var displayError = function (editor, error) { - editor.notificationManager.open({ - text: error, - type: 'error' - }); - }; - var getSelectedImage = function (editor) { - var elem = editor.selection.getNode(); - var figureElm = editor.dom.getParent(elem, 'figure.image'); - if (figureElm !== null && isFigure(editor, figureElm)) { - return getFigureImg(figureElm); - } else if (isImage(editor, elem)) { - return Optional.some(SugarElement.fromDom(elem)); - } else { - return Optional.none(); - } - }; - var extractFilename = function (editor, url, group) { - var m = url.match(/(?:\/|^)(([^\/\?]+)\.(?:[a-z0-9.]+))(?:\?|$)/i); - return isNonNullable(m) ? editor.dom.encode(m[group]) : null; - }; - var createId = function () { - return 'imagetools' + count++; - }; - var isLocalImage = function (editor, img) { - var url = img.src; - return url.indexOf('data:') === 0 || url.indexOf('blob:') === 0 || new global$4(url).host === editor.documentBaseURI.host; - }; - var isCorsImage = function (editor, img) { - return global$1.inArray(getCorsHosts(editor), new global$4(img.src).host) !== -1; - }; - var isCorsWithCredentialsImage = function (editor, img) { - return global$1.inArray(getCredentialsHosts(editor), new global$4(img.src).host) !== -1; - }; - var defaultFetchImage = function (editor, img) { - if (isCorsImage(editor, img)) { - return getUrl(img.src, null, isCorsWithCredentialsImage(editor, img)); - } - if (!isLocalImage(editor, img)) { - var proxyUrl = getProxyUrl(editor); - var src = proxyUrl + (proxyUrl.indexOf('?') === -1 ? '?' : '&') + 'url=' + encodeURIComponent(img.src); - var apiKey = getApiKey(editor); - return getUrl(src, apiKey, false); - } - return imageToBlob$1(img); - }; - var imageToBlob$2 = function (editor, img) { - return getFetchImage(editor).fold(function () { - return defaultFetchImage(editor, img); - }, function (customFetchImage) { - return customFetchImage(img); - }); - }; - var findBlob = function (editor, img) { - var blobInfo = editor.editorUpload.blobCache.getByUri(img.src); - if (blobInfo) { - return global$3.resolve(blobInfo.blob()); - } - return imageToBlob$2(editor, img); - }; - var startTimedUpload = function (editor, imageUploadTimerState) { - var imageUploadTimer = global$2.setEditorTimeout(editor, function () { - editor.editorUpload.uploadImagesAuto(); - }, getUploadTimeout(editor)); - imageUploadTimerState.set(imageUploadTimer); - }; - var cancelTimedUpload = function (imageUploadTimerState) { - global$2.clearTimeout(imageUploadTimerState.get()); - }; - var updateSelectedImage = function (editor, origBlob, ir, uploadImmediately, imageUploadTimerState, selectedImage, size) { - return ir.toBlob().then(function (blob) { - var uri, name, filename, blobInfo; - var blobCache = editor.editorUpload.blobCache; - uri = selectedImage.src; - var useFilename = origBlob.type === blob.type; - if (shouldReuseFilename(editor)) { - blobInfo = blobCache.getByUri(uri); - if (isNonNullable(blobInfo)) { - uri = blobInfo.uri(); - name = blobInfo.name(); - filename = blobInfo.filename(); - } else { - name = extractFilename(editor, uri, 2); - filename = extractFilename(editor, uri, 1); - } - } - blobInfo = blobCache.create({ - id: createId(), - blob: blob, - base64: ir.toBase64(), - uri: uri, - name: name, - filename: useFilename ? filename : undefined - }); - blobCache.add(blobInfo); - editor.undoManager.transact(function () { - function imageLoadedHandler() { - editor.$(selectedImage).off('load', imageLoadedHandler); - editor.nodeChanged(); - if (uploadImmediately) { - editor.editorUpload.uploadImagesAuto(); - } else { - cancelTimedUpload(imageUploadTimerState); - startTimedUpload(editor, imageUploadTimerState); - } - } - editor.$(selectedImage).on('load', imageLoadedHandler); - if (size) { - editor.$(selectedImage).attr({ - width: size.w, - height: size.h - }); - } - editor.$(selectedImage).attr({ src: blobInfo.blobUri() }).removeAttr('data-mce-src'); - }); - return blobInfo; - }); - }; - var selectedImageOperation = function (editor, imageUploadTimerState, fn, size) { - return function () { - var imgOpt = getSelectedImage(editor); - return imgOpt.fold(function () { - displayError(editor, 'Could not find selected image'); - }, function (img) { - return editor._scanForImages().then(function () { - return findBlob(editor, img.dom); - }).then(function (blob) { - return blobToImageResult(blob).then(fn).then(function (imageResult) { - return updateSelectedImage(editor, blob, imageResult, false, imageUploadTimerState, img.dom, size); - }); - }).catch(function (error) { - displayError(editor, error); - }); - }); - }; - }; - var rotate$2 = function (editor, imageUploadTimerState, angle) { - return function () { - var imgOpt = getSelectedImage(editor); - var flippedSize = imgOpt.fold(function () { - return null; - }, function (img) { - var size = getImageSize(img.dom); - return size ? { - w: size.h, - h: size.w - } : null; - }); - return selectedImageOperation(editor, imageUploadTimerState, function (imageResult) { - return rotate$1(imageResult, angle); - }, flippedSize)(); - }; - }; - var flip$2 = function (editor, imageUploadTimerState, axis) { - return function () { - return selectedImageOperation(editor, imageUploadTimerState, function (imageResult) { - return flip$1(imageResult, axis); - })(); - }; - }; - var handleDialogBlob = function (editor, imageUploadTimerState, img, originalSize, blob) { - return blobToImage$1(blob).then(function (newImage) { - var newSize = getNaturalImageSize(newImage); - if (originalSize.w !== newSize.w || originalSize.h !== newSize.h) { - if (getImageSize(img)) { - setImageSize(img, newSize); - } - } - URL.revokeObjectURL(newImage.src); - return blob; - }).then(blobToImageResult).then(function (imageResult) { - return updateSelectedImage(editor, blob, imageResult, true, imageUploadTimerState, img); - }).catch(function () { - }); - }; - - var saveState = 'save-state'; - var disable = 'disable'; - var enable = 'enable'; - - var createState = function (blob) { - return { - blob: blob, - url: URL.createObjectURL(blob) - }; - }; - var makeOpen = function (editor, imageUploadTimerState) { - return function () { - var getLoadedSpec = function (currentState) { - return { - title: 'Edit Image', - size: 'large', - body: { - type: 'panel', - items: [{ - type: 'imagetools', - name: 'imagetools', - label: 'Edit Image', - currentState: currentState - }] - }, - buttons: [ - { - type: 'cancel', - name: 'cancel', - text: 'Cancel' - }, - { - type: 'submit', - name: 'save', - text: 'Save', - primary: true, - disabled: true - } - ], - onSubmit: function (api) { - var blob = api.getData().imagetools.blob; - originalImgOpt.each(function (originalImg) { - originalSizeOpt.each(function (originalSize) { - handleDialogBlob(editor, imageUploadTimerState, originalImg.dom, originalSize, blob); - }); - }); - api.close(); - }, - onCancel: function () { - }, - onAction: function (api, details) { - switch (details.name) { - case saveState: - if (details.value) { - api.enable('save'); - } else { - api.disable('save'); - } - break; - case disable: - api.disable('save'); - api.disable('cancel'); - break; - case enable: - api.enable('cancel'); - break; - } - } - }; - }; - var originalImgOpt = getSelectedImage(editor); - var originalSizeOpt = originalImgOpt.map(function (origImg) { - return getNaturalImageSize(origImg.dom); - }); - originalImgOpt.each(function (img) { - getEditableImage(editor, img.dom).each(function (_) { - findBlob(editor, img.dom).then(function (blob) { - var state = createState(blob); - editor.windowManager.open(getLoadedSpec(state)); - }); - }); - }); - }; - }; - - var register = function (editor, imageUploadTimerState) { - global$1.each({ - mceImageRotateLeft: rotate$2(editor, imageUploadTimerState, -90), - mceImageRotateRight: rotate$2(editor, imageUploadTimerState, 90), - mceImageFlipVertical: flip$2(editor, imageUploadTimerState, 'v'), - mceImageFlipHorizontal: flip$2(editor, imageUploadTimerState, 'h'), - mceEditImage: makeOpen(editor, imageUploadTimerState) - }, function (fn, cmd) { - editor.addCommand(cmd, fn); - }); - }; - - var setup = function (editor, imageUploadTimerState, lastSelectedImageState) { - editor.on('NodeChange', function (e) { - var lastSelectedImage = lastSelectedImageState.get(); - var selectedImage = getEditableImage(editor, e.element); - if (lastSelectedImage && !selectedImage.exists(function (img) { - return lastSelectedImage.src === img.src; - })) { - cancelTimedUpload(imageUploadTimerState); - editor.editorUpload.uploadImagesAuto(); - lastSelectedImageState.set(null); - } - selectedImage.each(lastSelectedImageState.set); - }); - }; - - var register$1 = function (editor) { - var cmd = function (command) { - return function () { - return editor.execCommand(command); - }; - }; - editor.ui.registry.addButton('rotateleft', { - tooltip: 'Rotate counterclockwise', - icon: 'rotate-left', - onAction: cmd('mceImageRotateLeft') - }); - editor.ui.registry.addButton('rotateright', { - tooltip: 'Rotate clockwise', - icon: 'rotate-right', - onAction: cmd('mceImageRotateRight') - }); - editor.ui.registry.addButton('flipv', { - tooltip: 'Flip vertically', - icon: 'flip-vertically', - onAction: cmd('mceImageFlipVertical') - }); - editor.ui.registry.addButton('fliph', { - tooltip: 'Flip horizontally', - icon: 'flip-horizontally', - onAction: cmd('mceImageFlipHorizontal') - }); - editor.ui.registry.addButton('editimage', { - tooltip: 'Edit image', - icon: 'edit-image', - onAction: cmd('mceEditImage'), - onSetup: function (buttonApi) { - var setDisabled = function () { - var disabled = getSelectedImage(editor).forall(function (element) { - return getEditableImage(editor, element.dom).isNone(); - }); - buttonApi.setDisabled(disabled); - }; - editor.on('NodeChange', setDisabled); - return function () { - editor.off('NodeChange', setDisabled); - }; - } - }); - editor.ui.registry.addButton('imageoptions', { - tooltip: 'Image options', - icon: 'image', - onAction: cmd('mceImage') - }); - editor.ui.registry.addContextMenu('imagetools', { - update: function (element) { - return getEditableImage(editor, element).fold(function () { - return []; - }, function (_) { - return [{ - text: 'Edit image', - icon: 'edit-image', - onAction: cmd('mceEditImage') - }]; - }); - } - }); - }; - - var register$2 = function (editor) { - editor.ui.registry.addContextToolbar('imagetools', { - items: getToolbarItems(editor), - predicate: function (elem) { - return getEditableImage(editor, elem).isSome(); - }, - position: 'node', - scope: 'node' - }); - }; - - function Plugin () { - global.add('imagetools', function (editor) { - var imageUploadTimerState = Cell(0); - var lastSelectedImageState = Cell(null); - register(editor, imageUploadTimerState); - register$1(editor); - register$2(editor); - setup(editor, imageUploadTimerState, lastSelectedImageState); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/imagetools/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/imagetools/plugin.min.js deleted file mode 100644 index 8e4fb25..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/imagetools/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var t,e,n,r,l=function(t){var e=t;return{get:function(){return e},set:function(t){e=t}}},o=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=tinymce.util.Tools.resolve("tinymce.util.Tools"),i=function(){},u=function(t){return function(){return t}},a=u(!1),c=u(!0),f=function(){return s},s=(t=function(t){return t.isNone()},{fold:function(t,e){return t()},is:a,isSome:a,isNone:c,getOr:n=function(t){return t},getOrThunk:e=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:u(null),getOrUndefined:u(undefined),or:n,orThunk:e,map:f,each:i,bind:f,exists:a,forall:c,filter:f,equals:t,equals_:t,toArray:function(){return[]},toString:u("none()")}),m=function(n){var t=u(n),e=function(){return o},r=function(t){return t(n)},o={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:c,isNone:a,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(t){return m(t(n))},each:function(t){t(n)},bind:r,exists:r,forall:r,filter:function(t){return t(n)?o:s},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(a,function(t){return e(n,t)})}};return o},g={some:m,none:f,from:function(t){return null===t||t===undefined?s:m(t)}},h=function(t){return!(null===(e=t)||e===undefined);var e},v=(r="function",function(t){return typeof t===r});function p(t,e){return b(document.createElement("canvas"),t,e)}function y(t){var e=p(t.width,t.height);return w(e).drawImage(t,0,0),e}function w(t){return t.getContext("2d")}function b(t,e,n){return t.width=e,t.height=n,t}var I,T,_,R,U=window.Promise?window.Promise:(I=function(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],C(t,A(E,this),A(L,this))},T=window,_=I.immediateFn||"function"==typeof T.setImmediate&&T.setImmediate||function(t){setTimeout(t,1)},R=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},I.prototype["catch"]=function(t){return this.then(null,t)},I.prototype.then=function(n,r){var o=this;return new I(function(t,e){x.call(o,new k(n,r,t,e))})},I.all=function(){for(var t=[],e=0;e 0) { - global$4.each(selectorGroups, function (group) { - var menuItem = processSelector(selector, group); - if (menuItem) { - model.addItemToGroup(group.title, menuItem); - } - }); - } else { - var menuItem = processSelector(selector, null); - if (menuItem) { - model.addItem(menuItem); - } - } - } - } - }); - var items = model.toFormats(); - editor.fire('addStyleModifications', { - items: items, - replace: !shouldAppend(editor) - }); - }); - }; - - var get = function (editor) { - var convertSelectorToFormat = function (selectorText) { - return defaultConvertSelectorToFormat(editor, selectorText); - }; - return { convertSelectorToFormat: convertSelectorToFormat }; - }; - - function Plugin () { - global.add('importcss', function (editor) { - setup(editor); - return get(editor); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/importcss/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/importcss/plugin.min.js deleted file mode 100644 index 1c9dab9..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/importcss/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var n,t=tinymce.util.Tools.resolve("tinymce.PluginManager"),v=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),f=tinymce.util.Tools.resolve("tinymce.EditorManager"),m=tinymce.util.Tools.resolve("tinymce.Env"),h=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=function(t){return t.getParam("importcss_selector_converter")},o=(n="array",function(t){return r=typeof(e=t),(null===e?"null":"object"==r&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==r&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":r)===n;var e,r}),i=Array.prototype.push,l=function(t,e){return function(t){for(var e=[],r=0,n=t.length;r'); - - var stateSelectorAdapter = function (editor, selector) { - return function (buttonApi) { - return editor.selection.selectorChangedWithUnbind(selector.join(','), buttonApi.setActive).unbind; - }; - }; - - editor.ui.registry.addToggleButton('indent2em', { - icon: 'indent2em', - tooltip: pluginName, - onAction: function () { - doAct(); - }, - onSetup: stateSelectorAdapter(editor, [ - '*[style*="text-indent"]', - '*[data-mce-style*="text-indent"]', - ]) - }); - - editor.ui.registry.addMenuItem('indent2em', { - text: pluginName, - onAction: function() { - doAct(); - } - }); - - editor.addCommand('indent2em', doAct ); - - return { - getMetadata: function () { - return { - name: pluginName, - url: "http://tinymce.ax-z.cn/more-plugins/indent2em.php", - }; - } - }; -}); diff --git a/component/pear/module/tinymce/tinymce/plugins/indent2em/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/indent2em/plugin.min.js deleted file mode 100644 index b9d8382..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/indent2em/plugin.min.js +++ /dev/null @@ -1,62 +0,0 @@ -tinymce.PluginManager.add('indent2em', function(editor, url) { - var pluginName='首行缩进'; - var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); - var indent2em_val = editor.getParam('indent2em_val', '2em'); - var doAct = function () { - var dom = editor.dom; - var blocks = editor.selection.getSelectedBlocks(); - var act = ''; - global$1.each(blocks, function (block) { - if(act==''){ - act = dom.getStyle(block,'text-indent')==indent2em_val ? 'remove' : 'add'; - } - if( act=='add' ){ - dom.setStyle(block, 'text-indent', indent2em_val); - }else{ - var style=dom.getAttrib(block,'style'); - var reg = new RegExp('text-indent:[\\s]*' + indent2em_val + ';', 'ig'); - style = style.replace(reg, ''); - dom.setAttrib(block,'style',style); - } - - }); - }; - - editor.ui.registry.getAll().icons.indent2em || editor.ui.registry.addIcon('indent2em',''); - - var stateSelectorAdapter = function (editor, selector) { - return function (buttonApi) { - return editor.selection.selectorChangedWithUnbind(selector.join(','), buttonApi.setActive).unbind; - }; - }; - - editor.ui.registry.addToggleButton('indent2em', { - icon: 'indent2em', - tooltip: pluginName, - onAction: function () { - doAct(); - }, - onSetup: stateSelectorAdapter(editor, [ - '*[style*="text-indent"]', - '*[data-mce-style*="text-indent"]', - ]) - }); - - editor.ui.registry.addMenuItem('indent2em', { - text: pluginName, - onAction: function() { - doAct(); - } - }); - - editor.addCommand('indent2em', doAct ); - - return { - getMetadata: function () { - return { - name: pluginName, - url: "http://tinymce.ax-z.cn/more-plugins/indent2em.php", - }; - } - }; -}); diff --git a/component/pear/module/tinymce/tinymce/plugins/insertdatetime/plugin.js b/component/pear/module/tinymce/tinymce/plugins/insertdatetime/plugin.js deleted file mode 100644 index b8ae4bc..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/insertdatetime/plugin.js +++ /dev/null @@ -1,177 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -(function () { - 'use strict'; - - var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); - - var getDateFormat = function (editor) { - return editor.getParam('insertdatetime_dateformat', editor.translate('%Y-%m-%d')); - }; - var getTimeFormat = function (editor) { - return editor.getParam('insertdatetime_timeformat', editor.translate('%H:%M:%S')); - }; - var getFormats = function (editor) { - return editor.getParam('insertdatetime_formats', [ - '%H:%M:%S', - '%Y-%m-%d', - '%I:%M:%S %p', - '%D' - ]); - }; - var getDefaultDateTime = function (editor) { - var formats = getFormats(editor); - return formats.length > 0 ? formats[0] : getTimeFormat(editor); - }; - var shouldInsertTimeElement = function (editor) { - return editor.getParam('insertdatetime_element', false); - }; - - var daysShort = 'Sun Mon Tue Wed Thu Fri Sat Sun'.split(' '); - var daysLong = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday'.split(' '); - var monthsShort = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' '); - var monthsLong = 'January February March April May June July August September October November December'.split(' '); - var addZeros = function (value, len) { - value = '' + value; - if (value.length < len) { - for (var i = 0; i < len - value.length; i++) { - value = '0' + value; - } - } - return value; - }; - var getDateTime = function (editor, fmt, date) { - date = date || new Date(); - fmt = fmt.replace('%D', '%m/%d/%Y'); - fmt = fmt.replace('%r', '%I:%M:%S %p'); - fmt = fmt.replace('%Y', '' + date.getFullYear()); - fmt = fmt.replace('%y', '' + date.getYear()); - fmt = fmt.replace('%m', addZeros(date.getMonth() + 1, 2)); - fmt = fmt.replace('%d', addZeros(date.getDate(), 2)); - fmt = fmt.replace('%H', '' + addZeros(date.getHours(), 2)); - fmt = fmt.replace('%M', '' + addZeros(date.getMinutes(), 2)); - fmt = fmt.replace('%S', '' + addZeros(date.getSeconds(), 2)); - fmt = fmt.replace('%I', '' + ((date.getHours() + 11) % 12 + 1)); - fmt = fmt.replace('%p', '' + (date.getHours() < 12 ? 'AM' : 'PM')); - fmt = fmt.replace('%B', '' + editor.translate(monthsLong[date.getMonth()])); - fmt = fmt.replace('%b', '' + editor.translate(monthsShort[date.getMonth()])); - fmt = fmt.replace('%A', '' + editor.translate(daysLong[date.getDay()])); - fmt = fmt.replace('%a', '' + editor.translate(daysShort[date.getDay()])); - fmt = fmt.replace('%%', '%'); - return fmt; - }; - var updateElement = function (editor, timeElm, computerTime, userTime) { - var newTimeElm = editor.dom.create('time', { datetime: computerTime }, userTime); - timeElm.parentNode.insertBefore(newTimeElm, timeElm); - editor.dom.remove(timeElm); - editor.selection.select(newTimeElm, true); - editor.selection.collapse(false); - }; - var insertDateTime = function (editor, format) { - if (shouldInsertTimeElement(editor)) { - var userTime = getDateTime(editor, format); - var computerTime = void 0; - if (/%[HMSIp]/.test(format)) { - computerTime = getDateTime(editor, '%Y-%m-%dT%H:%M'); - } else { - computerTime = getDateTime(editor, '%Y-%m-%d'); - } - var timeElm = editor.dom.getParent(editor.selection.getStart(), 'time'); - if (timeElm) { - updateElement(editor, timeElm, computerTime, userTime); - } else { - editor.insertContent(''); - } - } else { - editor.insertContent(getDateTime(editor, format)); - } - }; - - var register = function (editor) { - editor.addCommand('mceInsertDate', function () { - insertDateTime(editor, getDateFormat(editor)); - }); - editor.addCommand('mceInsertTime', function () { - insertDateTime(editor, getTimeFormat(editor)); - }); - }; - - var Cell = function (initial) { - var value = initial; - var get = function () { - return value; - }; - var set = function (v) { - value = v; - }; - return { - get: get, - set: set - }; - }; - - var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); - - var register$1 = function (editor) { - var formats = getFormats(editor); - var defaultFormat = Cell(getDefaultDateTime(editor)); - editor.ui.registry.addSplitButton('insertdatetime', { - icon: 'insert-time', - tooltip: 'Insert date/time', - select: function (value) { - return value === defaultFormat.get(); - }, - fetch: function (done) { - done(global$1.map(formats, function (format) { - return { - type: 'choiceitem', - text: getDateTime(editor, format), - value: format - }; - })); - }, - onAction: function (_api) { - insertDateTime(editor, defaultFormat.get()); - }, - onItemAction: function (_api, value) { - defaultFormat.set(value); - insertDateTime(editor, value); - } - }); - var makeMenuItemHandler = function (format) { - return function () { - defaultFormat.set(format); - insertDateTime(editor, format); - }; - }; - editor.ui.registry.addNestedMenuItem('insertdatetime', { - icon: 'insert-time', - text: 'Date/time', - getSubmenuItems: function () { - return global$1.map(formats, function (format) { - return { - type: 'menuitem', - text: getDateTime(editor, format), - onAction: makeMenuItemHandler(format) - }; - }); - } - }); - }; - - function Plugin () { - global.add('insertdatetime', function (editor) { - register(editor); - register$1(editor); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/insertdatetime/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/insertdatetime/plugin.min.js deleted file mode 100644 index 478f4a3..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/insertdatetime/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(e){return e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S"))},c=function(e){return e.getParam("insertdatetime_formats",["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"])},r="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),a="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),i="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),o="January February March April May June July August September October November December".split(" "),m=function(e,t){if((e=""+e).length'+n+"")):e.insertContent(s(e,t))},t=function(t){t.addCommand("mceInsertDate",function(){var e;l(t,(e=t).getParam("insertdatetime_dateformat",e.translate("%Y-%m-%d")))}),t.addCommand("mceInsertTime",function(){l(t,u(t))})},d=tinymce.util.Tools.resolve("tinymce.util.Tools"),n=function(n){var e,t,r,a,i=c(n),o=(a=c(r=n),e=0 - - \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityFormula.html b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityFormula.html deleted file mode 100644 index f5f25b5..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityFormula.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - -
                                      -
                                      - sorry! Beta版本仅支持IE9及以上版本的浏览器,正式版本将会支持低版本浏览器,谢谢您的关注! -
                                      -
                                      - - - - - - - - - \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bar-bg.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bar-bg.png deleted file mode 100644 index 9dedcc678245832448f459c712e72039d36a2d03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 925 zcmaJ=J#W)M7&fg0RizFrNHCo)3zdk!61&YQrfTejTEbCCA~hq9eMwHKedc_@PDU04 z{{SKW0y_c;Rwj1Df8Z~0PUDn;aI$@0&-1*We$(qdIXZlBC`rrkNt4@;yZ3i(mo`^5g&O^Q9vWvFEDZ*C4wzU z&9gl5gE{74jHe{F;P200At0dzFAY!i5*yFR#fssSg4a%sydJPA!@!Vh)j-uWV4AX4H%wD|1awu?6;(WDRjVVz zMEVKX3@EIzaDw_yXJbq3EI8vlL5h-PnVi*R%BG6eXfz59U9Sp6HC@Ks&#Q4-DHR-? z28<+}&=?eo{+KSf1%;>AAwi1cuC@rX6f-7?|I0LQ|`wB zb{z`}1(}c#)#|54-7y@eqlwY3weB&L~A;|0;BOB)X?qZrfIDwvCTt(d|sM u^^g4hYw=6mb)EBJ{&W263$gZZO9!fS{B7^vr)O`AOUZ3_osX^Oul@jSrWpJH diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bar.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bar.png deleted file mode 100644 index f98ded737e1ec99b2daf3b72dd53012f84a6439d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1067 zcmaJ=&ui0A9M2pM9h6mNuuafs=H}G3Y1%bw!@3_$nyp~U))m&9rpenHw&Z2W+nNoL zO++Vx>>qGmJc@eoq=$iQ2l3!R5%H$rS&QHhM1ASn>R~k`dEfW=d_Lcw@AhP7+}GOG zN>P+AJt1bvdW?KSM_R~#?ef%dvUK899#5lLTvBXEjcKR=LE2E}U=}Lc%Hm5nL{ZJO zp3CFBe2G_)5mY=(&^0W=CSoJ5rKs}|g94n>%>@1B`8Ex7EkVyj<&bO%u&7V0+HiU` zlT%mc)wo8F41*z;Cjth<3UG}D)8X9&UD4%4 zWX~~dJRbKn!r=fx1e_HUD{jDax@!s|bW~fnu#QaNDJliDgcCH0bUy{ds>_;AwM?X7 zjH_4-8w`0V)qt}6f2d*9(GJeSzwsU@?BrG~$Yh~|mTZ+YZnoQVW$}Uy6^!g0LJPGj zP8JbHP7zr^nC3v=jBaYE5xFS-Q3~1sSSF3a5p@v*<6by@a7NM;#Lrt=g0V*l;dgEBchI&=5 z)-aY>sv(yl!7yH9|7mpXh)j=X*2k7?>VpqWGVL}Q>xnJlGr1D?)8bgp{ZRP%`}asQ z_XK`x@%J?Cyjg#Lcw>)R?DcPdE&E2NUcFd5xj~iHvr%wwc(niM4%%!Fe`Fu{?(~3b z=bk06-V{Ii+q!rCrwY5}&g4KxRC~KQB}l%`gACyNk$e~%7T%q>c=z>Y0sOkv`@QW# s=INQo>-nyY!9(TKeSzlo@g}ONh0=C9ZtN{@@!s`Kr!wNB*X!WnmBXq@IQ>f`ZLQ(`N0^xMZ8u223e!VSCdwnYN)#CQha%ErOsI z_vS$a|A8kj-t^$vzp!Ty;>C+6L2=S;st0RGG9Nt8^S<-G&zyGJclY|SL5AH`T>!&PbyXb+EQ;t<5?9v&iK1f2MenNFd;Qju94(xl-#ev{t z7$FTJ#^$*CQ5re!6j3llV?WgRZy!GL!1px%q-slc)IbxzwIrywZ1>&e)UA2^(H&4v zArlA?bwC=-!WgC+ztV+lo^6XfSV8DiRwC8_ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bottom.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bottom.png deleted file mode 100644 index e3df3d1c4a4291c9f812ac4a35ad4592e1cc671e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1003 zcmaJ=&ui0A98Vq0F&yHMvAGG4H`EC>Y0@@p!{XeU%mtb;y5f2ewlsNN!QQ9ijv~nZ0GTgc+j+2tB<}~G&*%Gn-|y#b&(7TJ z>Auj-Fiej&trX~Zj((k8r|AFHw}Xdt7$9ni%;5^D89rhrEL=uFbBrZaK!&xkx`)OX zrUTl=5-I6<$;1w8L>M-7Jj!O6vGLF|%wgv&{=Tiz0sw2nk-`67&`0d`e1-k}wJy52Vq2t0EPYsYWcil3|q)PvW>*t;W`p zEcTZ;KAX)(8iEj~hrHwp@-T!$pn#tI^FZ>YixYvMpV-jE`LEcAwgM|Kiif^hzvf%0w~zTE6r9$M*e~ zsgB<8@aN&t(a|Hde_-I!3+wys%bjO-_dY#fKW@V<^(^QFf6)77Xz1CE yD=`fWj%>ZYdoMP)Sg!P)??bz>C;ii>nOG;Yu-g6h^ZJKd(e=~R8RgC7;?^H97C9jR diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/btn.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/btn.png deleted file mode 100644 index 31c0b52f0662a08b3265963960c222f5e72ddda5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 926 zcmaJ=J#W)M7fW^I=Z$e3jw#X>V6BMj`wo8Uh7g2l6Q+z^E8FdVwfb)F!fM50$< z#5_tkTM!z@dE)sq%)kgw!q|X6KYxKB3=DW$cVs6q@iaVHQao68hyHTr>j6A|2pT!! z0ug2&$fL73MY#c2x`@wI1NTAdg0aG3r~Lbu7Lz;FPfhNm7<&VpbCgok)tV>xG7@Rym@YE@I~8 z)i~WR6)c?kG)!1XVo)f0BQj?O5DVsAc;Qmf2Lzw%#nc7V+m1j#~`1s(0cmn E57{#v_5c6? diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/down.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/down.png deleted file mode 100644 index 31c0b52f0662a08b3265963960c222f5e72ddda5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 926 zcmaJ=J#W)M7fW^I=Z$e3jw#X>V6BMj`wo8Uh7g2l6Q+z^E8FdVwfb)F!fM50$< z#5_tkTM!z@dE)sq%)kgw!q|X6KYxKB3=DW$cVs6q@iaVHQao68hyHTr>j6A|2pT!! z0ug2&$fL73MY#c2x`@wI1NTAdg0aG3r~Lbu7Lz;FPfhNm7<&VpbCgok)tV>xG7@Rym@YE@I~8 z)i~WR6)c?kG)!1XVo)f0BQj?O5DVsAc;Qmf2Lzw%#nc7V+m1j#~`1s(0cmn E57{#v_5c6? diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/top.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/top.png deleted file mode 100644 index ecda0704e84186b1f8088cc3a81f0050780b663f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 996 zcmaJ=PiWIn9L}7ZGTlKhGI#Ltc2TfNleTX*EE~0HU9lOXE3D#SrpfCXw&ca+&1OZY zI24AU;z1PAfkzMGT~Nf+@Zwp-!A>Gb^(vG3(zTrjYe@3`@O|I!_kO?ctkxmX{4;^LmKk1KVY6j+>YYT-{j06qNCz}xGg}?g3u)e?j=>yWG7$o>u#E6O_ zK!_LP353M6K#Gcz5M?ilh;ccAWN93)_pQec%*R~Cd?t;W}4Jn;%t>r z;#Y|a(sKx$p0^y6)ci9oyr#)H$EUhu;GC*Jroda4DN9k5kPwPxP)riVOe`7Crq7}A zR8~x+;_2~NhpQ4}#l{ZpaLs*gyeBubg6*=%D)y{v*vxvw2CXB@R_|QIo_cMr**h1h zCs$y}2w`LYYIJ9dxhI@2?X&BpP*BmL+{ zb8G9~sV}=bKi8hFt!*saUw=Gu>EXbW+YMo3>ej2q_1!^r`+=0t=iPz)qxxjy*NugP pcb+x3-fW+E_x#Y;i#w3(8|03TmOccd_V@7KfW^I=Z$e3jw#X>V6BMj`wo8Uh7g2l6Q+z^E8FdVwfb)F!fM50$< z#5_tkTM!z@dE)sq%)kgw!q|X6KYxKB3=DW$cVs6q@iaVHQao68hyHTr>j6A|2pT!! z0ug2&$fL73MY#c2x`@wI1NTAdg0aG3r~Lbu7Lz;FPfhNm7<&VpbCgok)tV>xG7@Rym@YE@I~8 z)i~WR6)c?kG)!1XVo)f0BQj?O5DVsAc;Qmf2Lzw%#nc7V+m1j#~`1s(0cmn E57{#v_5c6? diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-bg.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-bg.png deleted file mode 100644 index 4f9db6bee66f6ae920fbb433cc772c840a723437..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 938 zcmaJ=yN=U96g8wET4^N^6hMJSvkgeZ&)6uVm?#@3tR);piKV2(u_uX@wa3^K?4+Pr zBqaWTf`Sgw@B+O}YzY zQIZ9by;?=8B2`23J+OHoixztm)HgbtSZt-k8Kn^tgfvb0RN+ZH6{K3NmTSmzg&``* zGNevc36q0D!N7?d`w{g?2y#VdOcqp!EYtHN1kqMDOg3d=1rstS5+q*Ck5m9H>;KRo z*rF5K$A9wur*L8~BP{fBLKd;h8aFw}Lq(_+V~3L1CgixNVsAz$NoFJht$_w^5B<<1 zX>wg$g-*$qFitd;w}Ol z(t_)4xth3>n_D4>SY!jo{uAtVViJJ$k&(YU7h|X1hU@LjMQ!io3M?5RZ|q-6yX6w^uFKu=uZka~Y&OVQSoSikUmP)0)r@y{md4Bzx^7`$ivd9fz Vl~2EZdb7xHkJ;`T?+zcG{07G#ARYh! diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-left.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-left.png deleted file mode 100644 index 2f8c46ee09d0ff24cf64b524f9ad08792278bfa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 982 zcmaJ=O=#0l91nKrm<+u6fv`vBLBZyuU9;uUY_>`3DrStXbG^AVd0j)7yqLV%Y$5|e zL=eQ2HxGUuMDgN94?BDC;7wE*vdeCjfr3M+FJ0Stu!bb>gWvD>|G)qL_ioS5oF5)K zF~l&;aA8_2((w@ejtm~4|M{(*XLLADa%D1ytE6H0h{;&Ef~Kbe;X=owY=%isg`Q#75djsnWV;I6e7nH{+fvwtlrHF=ifZ=snvdqz zW=iH--IOhMY7(SFNCg~33=lfYZU94tZR~LfuzN|B^;w`|AAuB?jGKZe z0!iY;v6Lis$y z#EY^lM;eJloFd}Es!NP8?gpb>1q}tJZ+pbXE{GJ33SJ=!OEcX&g5&jM-Jnw@S};B| zJYM94=ty0luKyqEI6ZVgifBLIe+mbsRS)q+6yO!#q>ZbNMxi{Y`p6*IFJZjgt>SDA z6CBjA2h=$UoL;b93pau@ZM?3-f*TOSHBmuRSgOF;wgoe4HZzeQ&*r3LQWSH^tUMuS zgp@cTnhYN`_OC{Fx2SufY0tKF(K9}BsoQ;O>sL>7-uMF|l0NeQ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-right.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-right.png deleted file mode 100644 index 9772c54a68519446ef3c4a307c7c6477f390086c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 994 zcmaJ=KTOn69Ik?3NI(okBa1J+0Zq96z3bVAis!Y!B^L2G~n~S4^qfr(Y7Y7yw4GtzI8Vw-69(SjMXVdom$@hJ~-~0W(cYAtjqPJ(L zhoY$7;-pq0V>kKwj~*uft6N{6k>M29D|iOYdHIS4j;+$OS%WkD0<1ZcYXO{D zn<`stiX_<$=CiWS ziNZNCCrEN$Z*nzcExXXeO|ISIX1TW9#0suYB5N>kR-io|AQ#k+tT^p+(c0=YxOUrI zGJ0DsOOj!e#{Sjl<`!{JGHuzGELz5g9&vj>Z0+t0eI{4pT2afF;}6x{{r$0yuDPcV zKfM?}mLE)|hEL|$$JD^Uz`c#m`<>fAzJJ@;_;~r(-p-x=TQ~2X-n5SI{oLw4ab=~i qZ{*4D?)rrXN45vcxp!}0Q-`{!N7vc+(FD7h+`6JZr9HnmxBeS?8#|N$ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-bg.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-bg.png deleted file mode 100644 index 450faa2763dc0392583e797081f2ddb2be0c94c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 941 zcmaJ=O^ee&7|w2?E{h8*qM)ZS1yR`Mqitr}&{*0ebpxi9Ze@EkO{Q(=CKHpXNsA|M z{tEpC!k#>M@Fs|Q7W@-}KfpTaHeCpdOr5Pd*S@rcA$h?u5>hX@#+HAX#TIrHbAQJrCOtlJ-uf%!zXvBy~{ zhD*GFvKgk{NCL~AA_9hJ?D`7(^TS6LxQ@b}Nv2>1Dw?<_ix8bII(>UFwQCOBcm(Q+ zOa(kdERcBTek3OfyV8~EJl*D5u!4}O!d@mdFuOp-Ap#OtF4}@90th*=B0(q~fs!DW zc!9pKC{|<%%B5qlepnhUbVhPdYp-L`mBLO431ps+%P-KU0KwRvDRM8sZ8Bti8>E#i;U?b~C>oU=T@rf1iA}6Fr%7CW%f2ike z&=KjOt9<_{9QEe`;(I8~7Dcyj5?_b++eH*~;ZYvAH(0vWg~Ypclh?k*ZZIH%L@bS<&PFSyVsd` V_u9qNa^YoqfegK)y=y&t^#_8)AY1?d diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-left.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-left.png deleted file mode 100644 index 01b9255a2b102faaf4f70ff8a54aad65b71bcfae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 983 zcmaJ=J8aWH7`FOSsZ>-61_}cwmjR^4j-A9IrG6 zctVndWgtcck&n_>iU@I-kf4|ZgNLQjJhKLiYJL!lu4J}BhzohX)9G-X7>B(&FQihb zP(u_W6cO>e4$*^%<1Y;rROB0;V0@svyud}n zBMpI?_J62tkI+6TqSJi;DeRZJF5-*G$8FD`jjJt%pe2CWdJ*1*jZY5^d>WXw|D-1sW)DTsnWHDS52t3M Y%>Cb2T6gx>FN9aEklRpStyX$}0Ls}k`2YX_ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-right.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-right.png deleted file mode 100644 index f74673a3a57b3b421d8c0310a992e3f73e804980..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 988 zcmaJ=PiWIn9L_cz+hnkVhdB>EG8hwV{&k7#W3g+K&K1lkU12>gOe$ z5A)zjP{ErF@uVmy6Az+zk!>e$9z1yRCc6vsrE5D6){x}A-{bqf-`{tyuySL3Y-)^Q znDP9wUZm?e`b~@s)Bkt!=7=sANv=#*ag{X905KUGR}jd%<_0Pv({A1Rf)*HNh;>S3 zQZ{Zv3%i^dW4OrmDVt#y(vfdkbwoe~Z8)CF{(Ap`1&*zYOWw^mBl zR^3Y3Z2CG_h#(bk5ivpJZh9e%RJN@P={`Q@SD^1YXu3 z18r3SvuloL<7RlJjW-OK_d;TN7Ru`?OBFcBv0+A#<<$I=o>SzEDCUy$x~6MlR?jA> zDW;?@SI1VvMIPyL?K5t!FE<_q*QcI!6gan$y%b;DBu zoL&!24f z!VNxYd%kCU4&Rq^#!yP}o3i1T^#ObU&1Umkzgn%Ts`?gz{#%>PhGCd*Lw>)%(P+>& z^a^k~odDG9_2*C|5&^K^?^RVb51^Em%Vhx5>D1uwb~^x0r}KP1TLMr@jKQ@a{z)MXs?w@g%Hy3_uX!HEEfBLqvCeE0dP1Ry3_0R^7;H= zFi0koR*wow>2Np%FdB^vzPA16;V@HVZ6C5MKbnf71Ofp7m&?T}pw(&t2!%ohUzTON z-5w5ytpX%T(hF_~Efxy^+wIo;BrA%tUaz%hpU-EAX0zE~F!=00ih1#0bUYs0?Y7tJ x^>{pmLLrezJg-?Umzhk)B;a%De*k|3@CD!kB;@88S<(Oi002ovPDHLkV1m@;_M!j) diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/bbbk.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/bbbk.png deleted file mode 100644 index a793366065a08f1d8e1e50ff1f2a7b20e3e8d94f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 519 zcmV+i0{H!jP)6ov1^C~9FL z1cTTJ0l|oZNWfkTi(nyQD}vbC+4=x>mih#-5m7;`t!xAXX+#@;ili5fdbikRSy)_G z9oa2%%3+v~Ip@w{2qMBO#lVYY0sbDq-rS+RskaJgJKj=P(HKWekt0D#x)6-CkI zat((=yi+$U^85X&s!Ecis%ouPGYo@%20YKN*J}Vcolb-h`hX{&`ahVW?>Zij<#O3H zO+;i__Iy6K+ikboP3;B_ha(sa?)Q65(1N!pO2bFgpkAGplO;YigvqwI-LrF zKp_J{$k(`sfJyvcmW+jf>9`!(>JDx6%As)xyPBY|dQ4nx-&C%U@;c!F+N4~@JM2|hKovQ5y zA6euWwN0(WtZwI*MZ{b`EB0sF!~Oh?jBOqF=6>2c`zgbJUW>lPt5$V495A@HEjM!7 z>s@M|PFLUjp7*?R*0Lqsmo7y`AA7T_&&ZHbU}A9|vw%|oUt?w3{qI4i5+x*(^|>vc z`(D;L{pqAw}YeTu7O>WQx^yxs=GX`E!fhU7ppI@fAe!M>S7g7^PXe1?W!( MPgg&ebxsLQ0MLMa5C8xG diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/circleds.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/circleds.png deleted file mode 100644 index 7f455e85c607d3634d43780d2c1ef6f6789364f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 874 zcmV-w1C{)VP) zI^D>~2!5gG=jVZefv&DDkH<4RJBtunU0ucVrcfwmW@d^4gu~(b`g&Zsxw%m)m5D^6 z@EVWDO(qin?C$P<`P|;#7Aj2`P*G8FaBzStYPEW6YYSJ>=`;ZB?d{=WZ*OlP5D);w z#cniwnY2uh$cR^Ye3xq6jy#lQ%avySuw_rO*Mx!^4E9&1S2tti%ceP zd3m|V<9T~~;{rN5Iu;fd_)>%r%IEWhD3wYxnatAClH2W8DwVlhZfxLmG$KL7olT(GmVv%$f^ zwzjsivNEYuT3uajG#Z1!Ab0w6jr#xV`0oQg0eA0$40-K#w68ju5&+~b%VHmoupUbvwB>=K41As6L z_kBN|Wmy7%<2Vukp63C;PeB9~ex77XDFATJe`%S1za2>_wQXA!01*X6ds8Ap$kmH3 zz~_LXD4M2`(5`*o2Y{~YRP`d|5*?Qne_1aBjtMgi!@YBwCIB!^Q$h|HW5>=Q2&$^8 z>pD%-!;|N^gn@&I5340f5|LOU__O1jGseboB!pO&700orX+mxB`a1r7zzt(gPYN&R RA>;r6002ovPDHLkV1fyKj{N`t diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/daleth.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/daleth.png deleted file mode 100644 index ac705c36d25fcf682b8c89de7e79535b0d49978b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyvcm7LGZJ;(0)!3!W~HAs)xyPP67~Q4nZj-@3tY<^K2kR~}qu zjug`@jlF)n@WHm1Hs^OV)ZQ;-jLQDvX?E-Z)3)5htR9;3|C*jJKVkX(hWy)erzW!` z^e{GT{if6MSFl~l&~xE?D4k)Ej z6d8sA0IgQ5kpC$vpzC@Z$9bHlX~`aJHk)3rC(AMbJRT24QA+jz0DRxi@YL$+81Ee3*PI5oL6^(lgAPi(BQh`vJ9QkxN2n?ucELCjYdz{F+=VP(h?RK;M2_D&0W4>V2VIIh?0$+9fVvSnF3&jT2ZMxnkUN7ZVz zQmK56G#ZV~W&= z03wk{D8O#F13;3b+lt5I0K6BGKftmqXUcAiAP4{q!-N8`EDOLiO}Awj27q?E9SR_d zA^=_2-PUTg0?_St!`_2ht>#X9y`sfJyvcmE~$^w-YbAYeV#6kAs)xyPBY|UR^V|J7Sz>Kk~`R4EtCIn-2*kN%;RO6 zT}KzH=Kp)B$r(7O_>iweOdE^69*5!@=g(87ObW`9wBFCC)MvQjqzc1>-xuc?C$DFo z8no?{+46hU=Pm2^C@$S{O^^HI58I5jlF3!?w^s#ZyShkS-Y=H1cK_XFhHig)1P)nl izxV2kz7iwn15Pd8Q<^XI3F@ArFe0(q%gt?qWa=lNEv1pt%D#C^Fpz(t&M0N89cq5wqH>2x$r z69^!pa5y{|3`c>Sj5+OtA8}Jev@A=KBvG9#%ktrH@YBiL?KYRo zS(fz}1_FWcc>J7pyC!77b1S0000l;a+3rssK|0sd0g zb@`t-j&)sUS@pyIwJ7;$6(0000< KMNUMnLSTYW{*!$G diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/hbar.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/hbar.png deleted file mode 100644 index 8809ef3681740ad6cba9eaf95f4746247111061c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516 zcmV+f0{i`mP)d?=6rY}-~2v_>_j_LgLKY1M14)ubqY;43W;379Iq$k|tyWVMC1?h!szxFa+qR3vVk(t# zU6=E>+btT6hL8afEtg9GyvFlg+%A27ygmZ|U*H?}=e;lWs))z{0000Z1Z@N>!PZyj1H?*EP_VH|{=h;-ajys*xfJIs z2M6a=yTk4d%{AcWvI@qu5)Ti_oEQ1>h9klZ079XV!mQWpLZQI({9>`t!6E>Y$pnDOWQxb*k|c?uSSpoRmVMQt z>-9LPiG&Ur5JDJ+ zp(skb6NtrPI`lx6<-_5S&1Ti)YPAC3^?G&4px^HU5ClO@b~+u!G#xTf0??2ym&<50 z>eB;;VKfbpWf?#&ms6&j&F1+GlmNb-AO+QG6+k|p2QVIwN2Ag67S-!@0Nrj^P5S+Q zmSvT(AP6rtx!3Cf2#3RJ(&O>aG_ABc8jZemi+ny`u~^iQ&1Tc#aAY!>%jJ?xCVxJ` g@cwwc1^&LkCl8Po`2kk;QUCw|07*qoM6N<$f*B(1djJ3c diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/im.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/im.png deleted file mode 100644 index 201ec05e4bb3069cfc4cfb6853f389e5bb63bdbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 571 zcmV-B0>u4^P)5et8S zR@x{jf~}Ph5MpD}CbfmyX<=n+C1Mf8Sc$!zwb~dE5fn_P1Vj*w5>WgWbZ#-Qg!LwO z&Go`A_;z#749_|9&J05!gy1Lj3w~H{!2bi#H0^%BzaF3{3d1nTWU^AJ@I3EyI<955@ zNW0zM@AuCENRqUuE1%B;0LO6%q2+SvcDv1HnwsqQ`xlFaSvHr;O{Y_z&nF0iD2l48 zn!agf-8ETG?`31 z9uELCo6VP9LEKN!E`#kTCKiZMZ7;=Z@|9~_yG6SF_sT%SX=-A002ov JPDHLkV1hqr{M-Nl diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/mho.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/mho.png deleted file mode 100644 index 291f75054e0feea3b0bdb119589c534eca78aec0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmV-D0>b@?P);oVDL%dMx#-^US}8v!0mQxHk)R%S!GM5 z(sH>ZI1mWr^Lgzm%JWF4)A!2lc6-m-?e_1~p&ik5I#qS?c-&&K+_N0VscfN85Jgd6 z4>p@kI2A=6pUs(~xyisZ?H^gI22rAdyIDvSk18JpZFf9t;KmQmNF#{dT(zAeYP0(?7rb zBqftcMNz8Ns?Xx(^9g|EatR<7i{0q5ECVnM!zq9e zl1`^5lgWMG07#Pbgcf}V2JpB`?jOyZs;Y{jcs!nBvB2w0H-|wH`gVAUd3%;$4eRRQ>XKBqotG#caac)Q)YT<-<-dcAtR9tZ>gghC-lJ`hC_fUfH| z`fxb(`~3h`tJUuxd9&F7Xti4Rso88sQ=(0p=Xn5&#o|6S7z_YZDiue72Q}7ewd-8{ z9-wI&fJ`Ry^?U2>%9@f;czyarCcZWKFH;Ai9|wC6iw6m{XWaG-ENnDUokWvul0H@%kuGf3#n2ex8TtxtAjlLhzGP!4K;f@c#q8T|zlPp-?zJK8{AC)9G~C ze|>$;FpSx3rfHfWi0?~SDM1iou^2+A(P#ibybFwDjP%+PAJZ*OlRU@#a+ zat4C|4&B||t-M5TP1S1k)zy_C2%_ifQnuS|k|ZOMh}-R6eTn=MQxw(hc11Ij$?WXx zAcQm;&CAOR$8k=lv)OD?6t%X>b%AoZd~k5^{{FtZyDRxs^z_u@@#yvXuTia5`!^4fTnEx^0|0=2 zzmH9y&j$cJ&nxd>rHn@7@;a&2YUR)Ma5$8BtX8Xdw%Kd|@bK`U5P%;`p69Xo^z;M( zEX#@skB^T4V7J>90!WgqR4ScL2b;xW5dbbOF2n?f!vO%zW)t`7a=AV}J~kdQ%d**Q z79m8_bSjlv4!yp1wqa4u`#7ucWNSViAwW34%B~ kJCnJA`2Dl{1^lx<0meu{g?ijT^Z)<=07*qoM6N<$f{6`4UjP6A diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/wp.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/wp.png deleted file mode 100644 index 23f6541296fc04941c3eb652a55349b9b7cd8a70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524 zcmV+n0`vWeP)f(q&E zM6j_4!6u+s36?&91Q9_jEW#ibO2Ed>#wYLrv=j?Ltn9oXsbgU}3$c)BVZ0DBTMP`# zdWlADmi*P3Gylm4;hdRqVT|FE`hpM30XTqv1W;8qolbAJ+h+l;M<#i>Tnd6PnM`PA zJRWyC9n&;5O{-KY;c)n7F@8XyP>9Bx%_fyf_4|FA@pwG5+3Z%WHK5z=7K=p^%d#wr z;vYk;R*OcX_5q1RVmh6grny)w3WdU@q0wmE`4iRvTAWNKuNn|SZvY^Kj>qFw1IKYJ z%ibz~s7;&AW*`u7yWN*tr_)JMlw2-nzl-AWH~<_D2eMQY#V`!ITd&vef5aNFTCD&e z7K@Q(Bofgyjl{aH1Hf=Nd9>`o7;k=kqxj43bz71cqUrJ?tz1vMh5PN8-U? z(ChWyd|Z3I-u-@0NG!|x{r)!tc%IjFT~*c5Xw+`EZCp4m=Vj*rUe*tN$eqU2O%6i< O0000`sfJyrpBE%uH`2RWe72TvEr5Rc<;rv>sJRuE{ruIa!eG@+sS(E=eqC)F6)0CrpU zD~^R1tQgq0vrn>J6Pb8+Rx0Or7e2lCe~;^&4xibs{kU$oh1LS5IyQ;6M497@7XR_I zc+TLU`E-u9&PnYL_oS0AMP;v@l6AXmUb@n+rl!=$U;FAknHY?tv)68oWOZ*4aJpXl z`;Uq5O4p7VZ?6h62s(2d|LS@6q;-cOmtvo_PD_Vj+zaNlTfhICKX*^=>?xmA6mH)a zIxy4l?)ldz4Sn65kCdN3wtFop00i_>zopr0K52ro&W#< diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/circlearrowright.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/circlearrowright.png deleted file mode 100644 index d29116286697f520bbbecf48c4710b0ef7a81164..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 351 zcmV-l0igbgP)`sfJyrpBO{oJ#^(;W4U!E?GAs)xyPCeM$rXbK-xVc=DQMz!2eJDza6liWM0GhK2@XdvBLW+?3J616qt<~CY*PFC-Hb& zZi~RVpJyjNdbUd9c%ekwCLKnFV;vo#p_)ru1jHvFpX$Wn#F6a7@$mW1@AHb+ZT0J) zeEK$H!mMS+%~OIjzgiuTxLg{0>$1sNoAc`#oH$Bj$hvv7)+X1{dQ^{;1Uo@yxm qw|W-mT*j_H>gf(_DF^HsY8Wql2sEs_&SeD*1qM%7KbLh*2~7a*^N4@| diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/curvearrowright.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/curvearrowright.png deleted file mode 100644 index 265e1e018eba5388b2fce042a9b5ae1b271b7d9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 338 zcmV-Y0j>UtP)HMzi5;sT*t|B~Ez&Y2pZ6e^6Xsl8y(Y*6K zhhYGKx~{FYSIRukxl@FQ+qMBf+M$$Uj9m^y?E5}`sfJyrpB0loK5Y}`Phd7dtgAs)xyPIKgCQRHz=>`h=~cV!YPV9;=25-V^BaFT6c zRw>~xzI``k2J=a|UwupL^;?#?3Qe>)=`GX7s`Epwr68=K;}4ro0wZ@_;@aG`wKC@{ zlY72TZZ?xhu6WOwu$GmWo8m66#^t#z~QMl-wQ^#we**3xg x6N6TL-xvRXNB5lKsMmk1PRi?x{n`J3*V0()xR;#7S)fZ9JYD@<);T3K0RUldQ}_S? diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downdownarrows.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downdownarrows.png deleted file mode 100644 index 457598cdfa6d802453d64fe782bd0d52ec574524..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBWj4Jzrw;;!R(rZQhIkx*d+j3UVFdxUgv+ky1Z9p2-f?g*V7}{c_W*AR zi}}vm2kb<=JQi@8WX8X%|MT&Oz{7%>#a-5)1^&5V>m%Wx@!B#aTrJ{45np1=3 zuQTXRS}W?bWXe5WC7>S^9zFbF*wCTa;(IeHd+k}_$RFv)4_vQgdNc3oi`gOj8-dPd N@O1TaS?83{1OR1_W;Xx; diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downharpoonleft.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downharpoonleft.png deleted file mode 100644 index f1de8a25bcc216fa1f6ad507e3ec99e304071537..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpB1>Q-?j$J^ZSWg$n5Rc<;uWjT!5WwLYST9yAB75-cKdrn4vu7x!&XN#t zs@Psvz$G0XdNGBam!08&t?_KuJF@0Ly$A9cL(iTuce2%1a!GlA_RQ7JsBFQRta^*L g##iiNsFAl|Ob=5u$~<_b9H^MV)78&qol`;+0F>i5VE_OC diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downharpoonright.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downharpoonright.png deleted file mode 100644 index b94a0b8643e221b70bf529188b36e5df8afd79be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpB1eFqBp>qSqV;+g&Y8qg*NPgg&ebxsLQ0J76UUH||9 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/gets.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/gets.png deleted file mode 100644 index 8d659f01a2c3ecc6e43c8a15337b137d15785a00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBevv047uA76vproLLp+YZof63FtjObfKU$4}-6KO*gww)-+v@ChIvnmo8}lR<@qo$ ztlj#OCA{gLwNjfvMdRnYyZa2Q-cJp>cI%)~#|eqgMtl0VY%f`UT~zR5lB<2}r^!<$ w73VE(n7Q>@HS5wT@8_@FlP%cspr3_*!c~@k0R=wmfX-y_boFyt=akR{0KlMID*ylh diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftarrowtail.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftarrowtail.png deleted file mode 100644 index d36a75aaa41615c556991242053ac2fdcb60086f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBRg0a=3*P{R7J0fjhIkx*J2jD$*^sAoeKM1ls*u)FJ}=QLPO2eJs&kr; zIBG5AGh#gL#%(R(e((H~iSHd13YCgtRvs_h$dkapd`H&c*o|3Bf7vr-t&MKDc8jf{ zHz3Ow8$9BlgpBbH<^?GHP>yz|)ClkdaP1k9y9h$0Jm%e9U z*z^5)rQR|Y28IiN`sfJyrpBS*748lU$%sq^FBxh{y4_R~>m73^`l^cePDuVNp?7IcY*eOC)p3WZ%Op zKd)E$+^54}bW{1Tpn^lg0nvs9-l6~B?WnfC%FJ*k=Y8+vCy&$8LQOeR(p+Siy7ebB dFfy4l=)YO(B`{0qaV*dh22WQ%mvv4FO#nCtI5PkM diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftharpoonup.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftharpoonup.png deleted file mode 100644 index d9fd9f2d0636c9af03a1c431494c0e13c2283411..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpB8IyfeH`D@!qC8z3Lp+YZy&A}Sz<{IWVOiURCYB`)$~spWh4PrDnMQiZ zPrIYvpubaGt)XyJwoD%bBNNN715w&aQB2!bW`!=i$Y-$mjLZ6P2bX<)58s`)p3L74 dQu2@CPT1WK$tkV+H-WY=c)I$ztaD0e0syFuIq(1g diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftleftarrows.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftleftarrows.png deleted file mode 100644 index f4cd7c07b31aee31c45fe8438fdcea03acb4c3ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBMJwZ@SC0UN)_A%&hIkx*JI$AuMUkg9ajF6%r-cUJ3YH}g7*u$;CNS|G zaQto%?ooEwY_e~~b+sDK_g~$GCO)|0ZSb0b@4P-T8OMsp4%i2N*vv-}|{OzMud6SqGrI O89ZJ6T-G@yGywp3EMf%! diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightarrow.png deleted file mode 100644 index 4d8d86b40de8628cb7e90267bc2d6a2c529edab7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBK?T8wQocZ;E1oWnAs)xyP6-rjHsEPXG-tGMaC*d`@?e3`gbRlqWgD6w zEh%N-3u3={JMNlUPKYX{SZd+vV~TRz*QGI_Hx z1nw{P(^Or?E&JwoU&loOrK`)@bfQP;ZZCv>bC z1TN|_7=N#=f4=x6!}A!gC1<|0n67=ki%ILjeg^$pS6QQfP280Y^dEz#tDnm{r-UW| D1#5J~ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightarrows.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightarrows.png deleted file mode 100644 index 6f0717c7237f5b2bec9a988fbfb65d0e326b2586..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBWtq$WjCKQsj(WN{hIkx*JIzt>hysu6>2q8wTD&@#3xZ@y0s=T6FmQVu zV6<2e8X%LxU(I@I%F_+Tf3zEq`#Z5Ubp-qGU3N~Yf$>NEfkGKsMz5894DV}uCK_Jj zP&gTx(j(|paPBq#qA6qw9JznS@yrR!?eDG4w4<3BW<0+cb^G+eaK)CQ18Yyu zF5jTzZOOpUV|ZTnO2%!o=P`MvcbCoi{MqL9=Qn$&2Q9n3>u%$+h84jc<(o`)US nweEVUDAS1_+jtHzd||I)*fAqjKVn5W$U_XCu6{1-oD!MN diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightharpoons.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightharpoons.png deleted file mode 100644 index 10a057fd01d2a79f6b691eabe4126aeeac1bd24a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBMV>$P4zWO?)t)YnAs)xyUb)E2A}GN2;O=R$1{+qSIX1Hmjr$$EG8Gfne!X{IZs9$ZV<#-v zU$&e*fA06VY+eSAh39&cdN>vLe>F?!k=)DawNhY_c*W%zac8v{rUbP~CH71W+RLzX z%l=Z1gHf;NNK0Qn_hgP_GCy}3qh@MPq2h--f4?n!`@V`q)akFCu=vGXy%D N!PC{xWt~$(699`lW7Yrw diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightsquigarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightsquigarrow.png deleted file mode 100644 index d515001e032b759a11508f71ca4c26085d3e2ac3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 346 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpB9p;;P%8fvwpPnv`As)xyPCdA`MM0n~@$(_kb z3h=ti#&dYW$zzk}6xZHgF2TT|c<=Y)Yt{Z7j18Ng#%x=ceS6!-?Qy~q$snkidcE{o z6vKikZ2|&LiY#853=!E|ubo`9)$Y`iDVI&&{yrz+J#ESS@0kKlzLz-^FCEiZ8kMcs z64WIy=}}1ifhj@9W?Wgg?zR2e7Z+^KhlW}{Kj(SQ^7)^jnX!Vq<{U4KnWlR0lC=@D q2mem?6HFfZ%Y);RGNZFyiIFnGH9xvX`sfJyrpBQR9!s^QHrZ)_A%&hIkx*JJnW@MUlsC`dnclb`J+8j{}TC2N=a1IE5xK zXfUwvd^BtC{JYv>yY_TRc1_ox%;0<^SM~Qc384uMEaFW9hh&)N9k4tu`6m6T_R=ub z7ki7(Rlg4ws^Ka+=hQLB*sn=;e)ihZ9zh0%2Y%r#0_S#K|5>=F;9Rd^RQ9!7)=k@g z?Q^bt-)p!z>PxlH(kYrtTbqKqrW8GtV{lkodP>UR*B4I*CZRviIcMnmteo|B85_{u N44$rjF6*2UngGhGU!MQ~ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longleftrightarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longleftrightarrow.png deleted file mode 100644 index fe3141daa36519f3ffeec6c0adb5b1e11997cc2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBF^zy~mK{K$6P_-PAs)xyUUL*}Q4nBDxVfD%BY`E?fmParS^0<00^Ti* zCI(Gr2iTmO>-pa?TE0m=viHON8Ha1~+4wjZTu<%kI&#v1&FBMr!u@i;-H$EyeBaNo z)|7q2wWw@;RTjfzTXMPG<`jFa+)%{0YE{v>#_8)`_ZS*FxRl18|IAa?;i0*8-Rnvb zhH0siZH`_yP0s4-AFsCeoqTQA``_gy!rK|r=jU%PSSO-g^=guQ)iQ=to1QQ{ws5QN qYs|epLs%d%Lh$G9NsT;9*zG>fVaZUfn5GT%6N9I#pUXO@geCwXa%=ej diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longrightarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longrightarrow.png deleted file mode 100644 index ec988e1dfdb85a9d4fbcd926301d305a6f431d43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBF}|j}7A5^Z91Z`SV{b`i>Xg;mo>i<}&Ab<*a4XKQnr0 zDn6R47nwaZ==3HIMXvh|9c_sP=dNa5+_kRuzI1ZdRt|@KXa6st+iTfMEt_0 zuOsqD0RR!Dl+LL)T-0^l(kCkkA$IyL@z@*y+O|D=mHm8c?Nt@LTjj5ho$pll*fjhH e0T2N90z3iOGGMJo+Gmdd0000`sfJyrpBRi^sYE8>7cpFCY0Lp+YZop!PJumVq;=T*iNY&jEh4scYow5IeBcIqKC$$=welRy=t3BHrKkaDs z`YA@oJT&*uWK?2eFwS1<%)ua#{6~e=?}UW2OaD`w^N%e)6{<4&UbfNi^vM4EO+~O( zAn5xW(@4#!oqm@~ZZIzuQF@o2fBTzR)Y4<6J%S9ccIDmvw(aqp*Sqvu3(rMn|K4~1 z_Oc)^moNUiW>3qV#vJ=))s&NGYbP0l+XkKID&?5 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/multimap.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/multimap.png deleted file mode 100644 index c7a0bb8acf9fd2ddd635b1fe25894f80cb369d41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBZP^@!4ppGgTu&Fr5Rc<;ryk^GR^(yvonjZ$^pe4a&DX!MWVrq~Ec}C8D#nPbw_>UU$z!v-q6;w%@z&>|+WOKRJ;vOv!3t y%G#|{E=d#@oecggxLat?WXS^zY=0OZFfL}h%m3}P`sfJyrpB32QI6j2A$md!8!tIacdXdzcX`X}UCEY(`!X07Y;|*CkT|~a{qJqLy0(u}=RIGwYRQz#CXw806qy@> zvLxCRmS-$akKE>a=-%TuXLhao9psgn%Vk&V9XajvrV4?Gmo6zw_lwQBsISy?DW2ob z3xC#gU)-7a{>B|xa-ZYJ7wtyzUn>uY{|&id(kpHyxYOR^W4Ive|33^|3QlD*aXfxN PpE7v5`njxgN@xNA(oBCq diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nleftarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nleftarrow.png deleted file mode 100644 index df714e174f027fa32dd9eefda881425fda6fc707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBDU%oH#eV~ZHha1_hIkx*JJpewSy8}sdK&8k2F(WvItq;JEbJZ!7+*7R zMjT+YSkN9PwLs@~%4D^<`sfJyrpBX^wllqilgfdp%toLp+YZoqCb;hyqXB?Zw;{o`ubM4>dQ>16z?NE7o2(eCXiQdatB2?e%hRg1zoet}5l{2AXp~p1H^H^{!_-uFZO< z-D1#}%#rBNsc5P9mAAog*_2Z&i~EAAuG+-x_2GE9SO2x4o2IJMiKyA#x3?wsSU$gO zBKxa-SM}2p#UnQ7+ZW&6&St$}O5Lo@^kdIltG&JI$7DvJ djei&(@b0_wL-Z$$`(GfJ!PC{xWt~$(69AAHY)1e9 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nwarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nwarrow.png deleted file mode 100644 index bf7b7d23d8897a32cec3900c15a438c4a85ced3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBNzDaMG#&zl9(%ethIkx*d+j1`vw{HIgUv4)@(x%s<~-8)8&3j%N+qq)h zYk{WXyvS*VGJ=NUD;D)W+nYbjE&Fb%EQ5fc;MA!a`UB5_IOy z_rE5-Iwuq_YIV!-Y*(UNMdk(`NvvZ7P%D4Vs{kv&5V__VFriJR0 TVx1R2?=pD0`njxgN@xNAIoEx5 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightarrowtail.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightarrowtail.png deleted file mode 100644 index 27cdc5bf6850ee18e46d9717e72d5e82ba6d21b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBHGVDgb_Jl&Oivfb5Rc<;uWsaJR^(y5u=_<-Sc0fpBFkpR)fLQcmiZ0l z2GSO}Tn-9PgIxZpO3Y(8IcHUs&CKf`3wR6;H2i1n$jBB?yT>fBaqBidg+~`I#JQ*( zTXA~kmHCUyd|fn`3LJW**wHc5Tl3!U^B=SK<^0`VaPDjO{!&+l3v*vFGbkv%b~v~5 u+AhXB-`848zO}1P$rfdkNI1aXXs#|iJ5}t@ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightharpoondown.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightharpoondown.png deleted file mode 100644 index e384cf845a1a22e8d2297cc59074f3fd7091f31f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBIc}??{|^C$5`Ysn7Q}h3f9G9Jy8Z(2Rk-2JhV4U z$j|p*W%={x&xqbbd5oS4_V)Gv{`}mLqRG36nVpY=gF{6{WrCQ?5$5{(|KH!=e;jzg kA}X~Hq<;mg@mdKI;Vst08G_DH~;_u diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightharpoonup.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightharpoonup.png deleted file mode 100644 index 187e1eb24d08e9fdcf342cc78cd033850ce7741a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBdB(%s>T`iY5uPrNAs)w*|NQ@N&#cQR%-nl$1?yt5o+yK?g9RHD6crmA zy8cgT{QLX+_3PIk2Rf|emywaNtNF1Z;ULqcnuPp(|5d&}fBuZVL dK<*U`4DIIASRXz6Dh9NJ!PC{xWt~$(696muJ)Qsn diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightleftarrows.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightleftarrows.png deleted file mode 100644 index cdec5d9e416f3e0e851b00cefcd52a767e51e9b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBWj$%lWNV<%R!o6Wyh*ymfW=y=fkkZoMYZv~^nXKigkUVP={?N`7tDjS`he4)XF~Jh*%FwMR@f-x?Ec+~pA$DmW&Q zobz$fm*iDbKHV!%{@x`sfJyrpBMdk2ywJboPEuJopAs)xyPI2UARuphuxRODohq;NVfI)*n)5GDA)d42I z1B@06+T~6MnWga0{;>YflhhyeY}>D0m|L}Q_Etve4UDfF=6sfSkDhF(w$#L64U?DV zoX?F9@5*W)>oA=6M|G`fvQ7&F!~XR=eM2r8h9(X9xxx2 Wo6oShW~nOB{S2P2elF{r5}E*SM`iK= diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightrightarrows.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightrightarrows.png deleted file mode 100644 index 52a7f0f0f1769315be59ac067bd19238f51e4431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBCDF~6yW@aDD?MEtLp+YZo#x2PqR8W#xY=n!facVO=0^-N3XI&3TdW+I z7Btwt5uJ3C*OvGHFXwo#Tk~HTwoSU?&H0*v?}224K$8vw!@Ac|x02gCG@jdR{i4+^ zuDXmD-X@e_sg%bIcTPa*77%WWUbW>ui^hzBPhsOme9k<@chn|+V%4k zld|6~H)Lg4Y4|t&;=9+gg*!B+x}MpyYTcAe&vPsrm?yB;Ff4u&wbdairV8k222WQ% Jmvv4FO#pe!UCICe diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightsquigarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightsquigarrow.png deleted file mode 100644 index f471054f45716f22ed94250302c27b14d2c2f3f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBU6we(_GF;Yc~2L|5Rc<;uO8%WHsE0m*#3$kO-O=KO~J>(EP+Mhp!5U5 zO^i7Yau}pjSgIVHR%8W*Y6bECJFc&-U&OaF_cmMjGd^*5MplskhJ@Jb*^Fu5?k!i_ z=CNy?vx}hRbfu;amlD0(+jtd^oU7aux^`=ah3{m;W0v6}tPB>`sfJyrpBDURa{vTJ}scRXDjLp+YZz2?i?Vj#f!AhDTIq@nqsW1)lW0!G$|1DvH7 z7A&w}VDD*uS6Uyn&F6Gx<@L&$`o6Qa%-kxr?hLcuIo?0I3QJWMnKYFil~8WE@%^qF zdrfl)o6MO>5(PGW<`2@9FEvaE>S1iO-NyJZbROgKTRhC?G*Go_OeaPiGY~UN5^x$g7?Xc{(Z(R1Wm&W!#)>vxu;>nx0r#GGX?Bn7ZsIj!h z=UnvN@3oQBd@n035?~VCo?AT4_}KC8j*b`sfJyrpBDLLbkd%8fO!=5gVAs)xyUNaOts=(8bSiu*-AXFfr@_<1`fs=D>i&duT z5yxHoo2LogI5BJYe`$#h6(z&sx};A!35;)rllQF4786J=IVYLSWu4^Dq4+%JcGt>M zy$@08jJjXz7Hqu7x#fCwga6m_2d-C%TAVNT*vpl%_J7a5D$x^`%cuPKy4;+Bq3$o| zg{aT3^%?g2xooP~rm!gJRMhLe;!YON84{kf7t6SFC@y7TVAzm5du!SK?|cqsa&a9U l9Z&UBIX0~8V!iU5O+;MBaffaA7NB<+JYD@<);T3K0RSgMX`sfJyrpB0S4nK+(&>y+dN$yLp+YZo#M#LtSI1GKAY=q1~ z9t^BK%vBlrxe;ZYp8S7a|9O)7?EIOy?7L~NHu_#;(mBA?1GIdpiQt5wOHuQGziQA} zx^&96bdCpm!@aiJIxBK3G8~Ay{o#%M{jJ4%&+l{^9y2)B_xQn_`tbR^IaZAGBjaB! zh!65=nP8Z9YGJFuJ>^+jmq|RnY`XWpW6wmxHi4|$@6v%Tb>NuE8u7l0QS3oIgMQcM WutO#v`sfJyrpB9f@G>SGho;m7Xq+As)xyUcJb9M1hAb!8WfUFU9=@+pZ?z7i^_d@-7I@ z;yuHb)_kXVj?D3`{Fj^_ezIphQX}MOYP?$ebAY%z10%~1W(L7%M;CQw&82KdB-#@# zfR-vr9pC76Zs$J1m-Ekm-K2Bx_bm}Y#)MhR9=jczQ8jD5&37|{;;ldDo{N4qH|MsP z(~7S)=U?wC3cqsjR(gE)+n)@^&*wx3dc9=W^5-NIhr$8g2J!!X0Uv`tKLh!L!PC{x JWt~$(69AE2VnhG{ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/twoheadrightarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/twoheadrightarrow.png deleted file mode 100644 index 9242bc210394005cb0fe00eedc55db71bc428cbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpB9gWgUw+;e@mU_B4hIkx*JM|(bv!Z~@^#axm^=%29VGHJFaF#8QjpfW@ zy>;-Jvjvln|;O? zkA|}_Bu@}%`aZAt-$^#h=gLLrD)Z95s0%kRu>4>=Aj><`Gx$f+e-@yF89ZJ6T-G@y GGywpu23%JF diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-downarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-downarrow.png deleted file mode 100644 index b2264cbfb669bc614780abe35eb65829ba425b92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBVZ9^yp(lVsdpunnLp+YZo#x1UL_xqckyn9HCWM)51&hiRN8J!6zX=Yq z3XO#yzF$b;pPeRosm%Yg-(*gEekV0aUI*Kg-nKm)E+4`VZqix)HMgnuzJK;lX2FgJ zyB>V^DOF#m@1c42vyV%Btza#S`$ zRQ9nML0sx5L}lJ{C^B#;7QCxl(0*;2#Ny(rr)@ps~ dX5oXW_b#k|&b(G`sfJyrpB6DyVi;|oBcO`a}}As)xyPP@y?A}HeaJde4=iG4)_pN3;PkWsRL<@bh@ zcD?gw%uLz*(Y9iu#mRDh#;w;LpWM^ezL`;a1LI_d_qFFLCkD7{E){Tkm355aSOiC+ zB*Wk1=OmaJj?Jj!)ZMyX0r$U4Eg*l5q6c9 SZHz$IGkCiCxvXtB=r diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-leftrightarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-leftrightarrow.png deleted file mode 100644 index 288dcc11f9b080ae207cc642d315848fb0e14d9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpB5tZ!UT7p2KFP<)rAs)xyPCJ;}YQWR>cvbZT-a~AO%?DUEFv=+^Z(vlO zz{?}Oq48!z&ICEFuK}MXUD{W^@{|1E)BmR2=wni3`RKK`Q+zc8*8+w*j)HTs&98UK z9iQmWXKA=O=#`YZ(%MopTYiIM0)bav{jQ6gR`RR*SIuP;Mh1qQ+hwJ@*Ezdrrp8|H z*K&AdD%*CjdcMcMEH`sfJyrpBAsNxdrkp^bEuJopAs)xyPCLlStSI1GeyO2sk?fAJ1+p2OWy|Jfu-|G_ zo#Cu7J?GBBRK=E`?EFSQ9{gX=k=*mv&vx5vR|X~l27V9Ct=Gahm>1sLEs&(c$r|AG zbk22#f?qc(-!mSlwwF)t@zk{cp574T#gTZwyyt3=SGKNMv&7=9*DS-cWv_qP>bkd_ zVMpBM;_fZiW;C}5w2Lits#`Byc#hxM?dlbY%`unn@5opmx7L*FMYtma(;vnMoZoaJ V?8;tsy$8CV!PC{xWt~$(69DhOW3m7M diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lleftarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lleftarrow.png deleted file mode 100644 index 6bed12114c738d03186804fb5a466c7e6d4ffb67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpB3!e1)m##pe3!W~HAs)xyPEF)JtRT>OJC$id0DC!~1Cz#r&;ZY)jHN*` zAxsuKI3-?hEYmrC=(p#I-;=73FIHc)ZdqPzs;L8W4Znbsh35jMx4-!qO1xYdvfpmf zdCp)PEvm?p+*ADShZF;c;=J>c4ql#`OSh)E+x9&+;CY`aknG~}-ZnO%{DI!mJum(l zHJ8RN&kXWXOnPW`?(>|p56-R2@2tKy>*RxAJzhVGt4rl!X>1aG>Qc74l>g_&z_ zwzqZsRLKfInmNmHh-(>jDU%`-fwJ}G*Y{L_v-xxey{an^LB{Ts5`sfJyrpBaY>1NriXz-J3L(+Lp+YZopzA-umX?kV?7762HphbNt}n+44llGeG{5f znEM_0C$5NUl}lRWCHg<1@X^8V$C--G9iCgoW4@Z%Y60^;W+#r{`+_-lD!EJvO53!G zVQp#8M81a0iO=USGd#az8ZMFSwKDlHr-$a+*H*s5N6QqCye@dEcdt6RXKUH*ZFl_g zHJw}-GNdmTcR#CKmUGHdUo3QX%q!O3#}Tt)dS7nR@lE=*yS?m5*F23E`@8sFG}trP ZFupkuVJDM))CK4V22WQ%mvv4FO#tpWX1o9Z diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longleftrightarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longleftrightarrow.png deleted file mode 100644 index def0c9ee946544160a53d1c1e7984b11d7f6fa3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpB2`M)Hifurlm!2+;As)xyPCL!pq9D*V^Q_nc(FFFzq7hBH7aA`&mMxIY zV87A0klE@0-v;Jy8^j+gPc)4&`*WP}S#lgp!MTkSsx}_zYT)Q-&^}<|8y7b%b*IfE zKBHp_i#|`>I;}Wwt*zc%hE=O(J-=D$&1WfSg(AyWngFsI;HKMIZJElu|g52 zoVOcleOm=y?|N4Guh?_zHP=8B-_7d}8t`;zEG_B3T6*_d=n6C6Nl$EC878FOoGdam z)zjs`sfJyrpBajRW7T{Z%R_ItWGhIkx*JMExgivo}9*>hqEoMj5K0bSFk@NHoBZs1$c zQZgaJ@!JDe*{=!}Hy_G>POmVw=VVxQYtKsm&zrOsFljB|Xy^#?n!YWqd*<(b>Cb|< zGdP4kuas+hc%|uWs<;zFL%O44((P^Mb~@LxJGcl|-r*5cRC0N`sfJyrpBHKU^V(}qBy*`6+rAs)xyPI2UAQRH#8o-NqWVx_^ip@Bsvfsyk82dBjf zR+*A~;k?UdbgExj|C_MKWa)na!5b&p&61gf|M(j`f3r7V2)MLov3I=KTmP-w;flfM vb)4%g*J$~Ca6VXdHGlVsvIHjKJ`sfJyrpBX*sR@_c=hJzn(6RAs)xyPPyCLsvyvsxS91vV+li;f@}hNP?Ky1`!s{H z2PI0fJwWDW{@D^m;o&~t>~aoOK6p6c!$f2INi&aHe^tDz)=upI{QLL4-}AqQc*TnTbewJX>KuD<0Z-KZ?+hQl tGo;OXKC?s4)c@6jr=@clB|qph#9P>kEX&e$otxQ1&iQqBaHTBElu~=Rt}DiPyC;OWr9*xD z@sv`85JG60rY)njPSbP?8DoqwAw-fSXD6Vux2d(ZX&L~C41?Q5UDr}d&ycUzbl=5!p3Aa4EO~SdFvbu<0HCTWckD{3E&p2p u0Bq;BZR;kLQip5vBozKC0w4hX0pI~TeHrM5{#JPa0000l1z-ibl-`S4t%b);r<7FN$ItS5;+pu$8Hz~&UuvV zx{fhcmgP1@M6LCCDTe@SZ3tnXM8xPwLI^|z0H3y~X&SBdKHvAflu{|>oZGM7a1jv^ z(c2{eIO@b9z*@U3%WGzy=eBM4uJzuZwCL=RBX=sLBI6?>B3}6Qt~;NRXwxKsF(%r} vIVYt|(Wc(ys1KVpQ-nPKDl#Ag{sG_@p!K|`sfJyrpBA+vK5f9?Z?4tu&dhIkx*JMAp*VFjMn!mHJLJWsH!Im98Ss9e#K(`4>p zrl4#gd?7njbAr8|==)Q`^WUT^D=baPdX=iRno(*2<2weIl*nnD^kYMNHopJ8i1*zd z*E2aiii>)l&&_9INZ~nbARwqz_5QofPOce|q1~k`UhP_U*+lWtWXT%smIre_-#h>L zPw|%`sfJyrpB4N=c)!B>DnH$7b(Lp+YZoqABPMS;h)^f=QSl`;pb143_HtPNBHm}EWJ zFEoiZh;Cp{-!n6{^ro%O&Pg-b?SIaAIWB&9P0$v=6Yg4Q882OHE z(#b#Xpt*Hj_NiGd0#kwx8}vNBu`Tx%PuW+Y?-R1m=>~pNG(R)zv)zrqHs_14mxk9g zbnM~p@bLP1h$X(Gt2@!%rS^V0k9GFi@BhMXOx54a@Q>pI%Y{2PPgQ=2kOz8_!PC{x JWt~$(69BqDd>Q}% diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rsh.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rsh.png deleted file mode 100644 index 05e8974d689ec6b008136cc9ad3d43c6309be6d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBb>6#5*L{IP^E_P~Lp+YZo#xHUqR7+MepbqX(Sw2Y0gLw30QLw6CZSgh zoKp|nJ2A&B)+j~)ufIv==dYqc#?SZoy(*QR#w7AV-r@aUi-wLR_lmujilj}e*wH|JVj_Wvo?vWYl@WQrxLxjjQI;uW8SMx(o`^PjqlF@bmwSJ1F72 ykI!1P;{Dgv0SDL~EI+&R^oyH|7+B}9*Dx@#8*|3({W%BdQU*^~KbLh*2~7Z#K3K;9 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-uparrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-uparrow.png deleted file mode 100644 index e539f6517c5518046effd7267c2912b3faf608fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBVe#2ncMkxCc6z!vhIkx*JMALxVFex+PjLn53A_o+>nHIZ;^;Y~mcqQL zadYF%1Am=ES7}{P3$m}7pFVe9$q6xL<^E*O0OiQM$*?MfoD~aSa zTQ!$*Go0SUz#z!zV7mJ8-v6Qjt1TG#F8f>6r#!!NJ$R=plYoQ%gVN=G-&bc%=%3E; cPyPeTQ?V<;tgX6BfSzFRboFyt=akR{0A(X*AOHXW diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-updownarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-updownarrow.png deleted file mode 100644 index 4aa9faa2793f21f080054d1849dc7574deda8119..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBQK7w2eJ6oJA3a?hLp+YZopv$zr~;4c+*QpfEM^-vJDN54Oc4CQmeQQk z(sO_$SO4IaT-RrC&9rxw)7gsVQ-#dy*q2N>#S$f?#KfRf z6n9BvtEQk}pjT$>_1E4<&K#3S%e!3`Ij!6K$=-T99)`;%a|Qp^G)p93FJ)-x=vPsC z_uJ3K@Ywx(2coL?XerrEIv(Y+X6yQ=tg&B23w%5CR_|b}XLvB@v}OJ7sl{?_54ZmL z%X7f8e8*As_uYm@#k!lh73TA-JYv$ gb^lKM@&Eik7#8$$J^d;g4GJ{|Pgg&ebxsLQ06C+Bd;kCd diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/uparrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/uparrow.png deleted file mode 100644 index aa8f571aed79db6f7609092ff43a3117d91d4f45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpB0jYD}KJ5bv&GK|{4DmSr_S!*C7DXP`fOP2%B5xmTPhihtotD7qr@l`sfJyrpBLDL$Wf6IVEXFXjULp+YZopzA7MM1!|PRKDVOxh0!?*2HjO|Mg z$5buLy?sw3G&JPEZU)5`>7^_O40vkqzqfYeNR)A3`&CoHvFz9k4eKe|P)r3vUU22WQ%mvv4FO#txcc-sH~ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upharpoonleft.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upharpoonleft.png deleted file mode 100644 index 72d093d219db4183e4f06a8ac1ff25b5476f00a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBc`=6@i=u!+(Vi}jAs)xyUfalfz=6X#FkUUGS(-J!F6R-?1T_(l&L{E8 zwo)q7RD8-3EtuKnO_X8r2)oJ=5UR5KHFLwgsWYF;cvk0^Hq9z!yx+*k%vQ(g;*wqW f^P|y++6QdYf1PAyR&%KYTEpP!>gTe~DWM4fBD^=H diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upharpoonright.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upharpoonright.png deleted file mode 100644 index 76c7335543e8cbc93d1e41d6c4ea90941c510d07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBd1LN7WwJn_bWaz@5Rc<;uN~xMFyvryC>CAH9PO#Taq^TT?rD?wzWw{& z#qK1xyIwL(ActXzQNKt#L!mdKI;Vst01>%7PXGV_ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upuparrows.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upuparrows.png deleted file mode 100644 index 129a3383587a640f46949c70667330b9abfc7c52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyrpBC5_jC-~E9?J3L(+Lp+YZo#x1S#DT~4aw=<2^Tq)7V9tpKd{XSm3;EQ7 zlokp-N;u~DZNmlU#M_60UMT+m;aTy=!HLbd+4^hK?57Ou3=Z#WBd5*PR8lJHOh}*g zT#_Mc?d;1@-G;{`qO+I3b>|Eb6)Zldxm35kLqJeTNl9?-GYcjIW8?nE91JcdzQRhY zw2a#YoH)*`S@n9?KT{=RZ_T%Jg1j`JdaZxo$Sm`qL7m}Vc-KDmuQz@!Jt(iwZX^GJ Zabe7p??p~V8-adc@O1TaS?83{1OWDqVSWGr diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/1.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/1.png deleted file mode 100644 index 3b1ed2604fd80a290eb50c70dd88ab817998ba27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 748 zcmVMu2(fp|MWlg?c5H8rJ|7zc!MmDr9OoR0E%Hgj z`q)SC_NMuK-tHC(h1buk)rq?|r&eo$avb*-t^Y|=hRKSge<1ybNxR)HQ#^P{?RL9N zCW8=KEEenaT2YjAI-Seq%H=Xb=yJKFQYki4jtgGGUTuQs)bUm1aM|XR5VG6tsGPsv zuYcUj<>JXse9`H2nBo+$_kr}60ZR%`18^E@w#BDLG?HnY;zYDEo6lI(HIT`rei zwa-a4O*r4WUcO2z+ng!vcO2ZO<&Uaym|sMTt{UXQhkS?GK|7X-l(JfF{sq8Ns; z*=(#Ehs|bV7>1%K=kwXoUJ!)obQ-NtjPYF*=86dzkO{pqgd@$4L-;Fi~1gW94d^+Z@w;f^!K8!MR#H! z$VmKXlw4A0@;4;-cwx=``Wa7u|GWF^!W6Cbmp|JubS!#NV;8^v`qQGFaqBr1=RKG0 zKR$2SRu09M3FY51i@mS#RZqI78~Ijrjq%I8?XRcwowu9Cm(&%^<$F=Yx83~g=a^0G zg)-{rKdZ0*x=kW^YRDv}^Rwk$0|Q0AmIjIhitJtJ->h(XW*v9@tIJ1|6gllPKcz=ryW@E6;p%0ZZ~6$88DBLyyY20>ZCiF4Z_SOqY*O=n zvF5Brnssw|R_XsxcM4!}g`f);9VV+RoU$xa%lgTWhgVd5gS|2*sl;lB{@$8zH1o{! z&+E#4mtX#M&tAIfoMrMFozoV5j1Nkz7#(Der$!nbvv@w=$X(RckjFVR^s)(K!seR{ z4Vkl6t&(c{ID5aha-$qy`@Nluo8Eo@4Wi=orh}+;VXHw@)HKnyg#w34V;OGbZD)9} zYn^}+&*6C47Q4`^u|0-fD+QEJZ}Kxwi&Se_FvZUHRvx$gbU_hEINJR}`jsgE&%c)w Rp99kkgQu&X%Q~loCIF=@6Jh`W diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/3.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/3.png deleted file mode 100644 index 8abe1967dd22b51f7d729b9bca875f27b29be623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 813 zcmV+|1JeA7P)yIo5kJ+ML3>9leWI3H~HE0xOK+?7ft zOZ`7=vR$9;9gjyr5H6RC&*x(pCL9i{dXLBR%rq56F%Srt^^zp{{eGDH5cEw!;gy1* z5EOzsA9TH5H=9kIwO+3;mrLRuN-!9--$~dwV41qzZdK^@dV(ORvLFb(UeDn0Oim}0 z3Bxd|%rMMkGI>6yxm?cvfR)W=$#PmK6f~J-S-nYL%;)oDyFP6k^m|8rF%pU3>SBY^ zG_4A!(@C$_ikbt#=&(P&gG76*gDql^_oq*AGJxol7x?tkuD ztJP{Ml_F}Fm?+0_=IbZJ?blr^P1Cp!tj}L;Jp%h{$ww|Nzkf2_Za4iWSrxTfZL`@( zlEiTwMNzF*i=rrw<0MJiY&Nx8&AeC;|MDy3n9t|2Sgc;JFBS`;iqq+|(P$(RiPdUF r+9({CfhZ6KqCgag0#P6eL`m=ga(>!t>00000NkvXXu0mjfvKw{7 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/4.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/4.png deleted file mode 100644 index 31ad7f74479356eabf76a76e8bb97454a87d3834..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 635 zcmV->0)+jEP)Q2HWC6$!x=aD*!)BrN$WEJap+oLvGe`)OWJzm4NqJy=7mc0CimSziR>^gl*ehTgxyL&p}k_9y4MLI-cGU2-Lu*3?jNg~ zyWI|bA4!KJ#Uq8JNQ$I`keb7gmZY!35IvV}b43F{6h*G<20^f1uOD;gmZYxh9u5aR zFCdEIP3MX0y?o^ZC33(#d4<81{_v@atiol(K1>4oIIyeeI9bW4vft zmWnU&-bYd-MN-U82EZ5m5ui{Mib7E+3PqtPbYP)`5XRW|$1}zVA-^EhvMiNH_B6g1 z(_bzZ0Lb%P2*DU*j0quB-CK2i4*PQoA%y370O0#RX!R=9^gPc{ejjv4Ips8N-5_&3_}1&l0nxd3hkrpqW4g`!Xtib7E+3Pqtm!9Q5k V#~#b6-emv)002ovPDHLkV1g$~6*B+; diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/btn.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/btn.png deleted file mode 100644 index 77d7c10b296c249d3d557fc6a29a5221b4173d9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6784 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 i+iO?PToSNf0{;&Q$@k<}p6WUP0000b!J z!r;*0CzHuZ3L$_9P`Fp%=!H>FGd-6kn}j)Tk|f$TktFhW^Pa%6EX2p+O2M)$B&U)j z36R9hr!yppyT=P4VqM;9a^8xk|qGjt9erQj!F@JW80q?8htWidVP zxnFH2E+^Efx~}&HNX@1wrFWQRS&&k8d=QJq6rY?!M_XT84|zAcm}UNMUK2v#tT+n* z5JGfCp#``t7eWa2j!2i=yL4VTjITEjP8YyEayh;Ta|7w3bCP>^1R=BRHa(mVChNeEqy=_>jv{6zno`&Ij>G$`EG@55_{!6 zN+}_wgltHpW>c)zswzi%+Ng+#z7$rn7D734`fPk<3r@Wp{Pzs7Z5x*+E-`a8L)*4P zLr0tI+<3Ube)8>~I>S*g0}J;Hyl7rz=}D<~zngLC`80jr`}Kh&s?V!TP9;0?CVReh z9OupCR5HX9g*)frI)@H|J-5dL`hbquxmbuRmHi4cUuKY9%t8pE>Tb`sx?atFlSAfe zhUNV-gVjLSJ>2d}*<(PxUPo*=7Lu(#ScNfSAQp{je|NaQjPr&Ti^j0Ex#iXGw#$vT z4IlzIFP+WMbPaehs?}*#63>2qMj-^#^XbrR6d#K-{%%~&L*23OekMMcpfO^E z^ou)13L%)gm7{a$z;PUO`blttn@aY6{J2PC#Gqf8k2~D@!-6qlaOJ^@H!U{%;5Lp) z!hXd(aXF!_udO3JpYEY$_ey=9V*YL(lOIiLVxWT+!i^k5!{Sbn=D5lAjdcbs^*e9w zR*rk+J$BQq`n<~Aog8ID_Rv%|B+PM>OV^ir!q~qTw1E0i{SD`(^QZmNra5M6A*=lf uHF&E&vf4q-Yrw;u(OJ>>|7P@WG2kzFYjbyphIGjQ0000La=QK$f2$t>p(DOX+d++<)Xmew2Y2oq$!!S#= zb+b;#^T~Jm6#ZZQacI*aO{z_@h1+Cchmg@-+=8Iy*&SGiw!3%l9V{_SibahkXUOg zmT!SltWp6F5*x(ct{|eGmF%%5{&qmATx+3SK}Xn=nN8p}QJl4~&njqWQTfbM+=%cYZGVTrN+O;giPx z)#&LKbx$&#*_JM5#)m$2dq{14t+M`!UWv7usW;-!tzUK$q0OSHMQw1a2sU(SyV$>=rClU(D0Grup_00b zm%%~~EaX7~_rQbCA+3#AHScUJ^@F#(;rD*u_kQ2+`xGL=dB!E2b6iXUob%M?`X*Uf zi)LnL$UpF@FjXKcYfC|$KwiP3{d|J zqeiZs3M7+Bh_-mK`Q`1 z(pDnuw!`ycixeKifn*cHZ@ zC*>|O|J8k*Nr&_yof?e>Wpi2bK6(_i0ubx4UFf3GR6u40i(G+tEbfhFM!{6} f;8c2FViFh?3y^w370~qErUQl>DSr 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 U9@IYl`WRldVxgqH$~Er)0j{AjO8@`> diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/script.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/script.png deleted file mode 100644 index e29e594005eca1fc12b32117e9da1e6d277f8f7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1311 zcmV+)1>pLLP)F7=A9FrCLkW zQpAR!FtjWTveHi3*cLRSP$2?Q(IB0C6m08^OEsA>{!q6>C7NMVkTgnRzz9JZP>YP) zI2=r?xIq!bx<$e;Sao!krl7^M9~%bIF+a+F@%*~?y!YJq<9Xiq+zZTM4zrA2b1$@~ zv`_E#=k&AZOy8iV0Dz`xsYav8=;`XooV3-{)(Bha)~(a`c)2qGNs5Ft);C@;cbj9( zy=Fx4BLLtVomRKfU@&~o59hN1R7~CD;qEFBLL?!}p@j5ZtwR0Dd$z)@LzYjhpgfO;j-9r5@;#2KWRVSt-lDLoJ#;td( zpZ?o(uS7v*RpoQhYfH5+%!tKe;m+V4q^?V~1q20@(Jl1rXH$5r@Tn7Bxy~U@5L+cl z66?v5la9&tj*A`71R`7|tPsVDh;qBqI@7ynk3SyA=*Z~R zP=4sILA;>&+m_o=Z9ldpM@B}jVfnF=uKj#1KzCXv>FVy<>vFj&2W}6H{-*}CrCLh$ zxr%5?G({$pse;L3%J^^db#jGVT&yXk0HFW3et39zfTAcoq8@n<4-Ox&jo7MMFSMS_ zNYCgiDK6=dW=T1AyPcfSoDjNPE~9hI`QW7~sHv_gZft5Sn4l)$_|s9}(AbbVX)_qk zt#58=K09i2z%nrSpv~B_7yynQKI-I!@UVH)W>TrxoCx{CnK_SD33lA>=0L6AiLU2fMGfmT28oU(37~y$&fn2OEQd7#$ zl;m|f>=_ZNi`3M%oNZK8WKt&nC(y%#Q880N+BT5q@63&$RfA^zid^YXCe zJM;7Mzffz`lv4S6&R2-TY`)T)6uq~g6L_!krP6Vl{u5wOot4Xw7 z{6Q?slRZ52{+|0HO8Df%G0QD8BRVV^ni7p~{de_FNs?r~N~KzOv;QV0JUlo> zUzZr(6TFKZvK@Y)K<(SR&plmGcczX?PfI5`xjB9J@7-U?WH2!>G=N3^i@;*DVEe-c z?h-DR2QRDMy?f7BjCqWnH?6=61(cbSxgaV$>XOA`;X51-czSyx^sP|zboXq}*qAY# zz9GH-pGk+S`V#;E02y>e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00X2+L_t(o!|j&AYui>F$G>lA z@B|LLKnE7=5S#u1bzu+%c8FLCvFM;KIm9BnxD?iUJFH7~_rNWC2fJG3}E z6w3z>*$;1x>`r{xd;^m;w4 z-(9EGuU4sl(0^=|Eiykf$$n_3YTMcCU>rDkR{%tS`^<%u5()rxb~{x2v4;9jbtWT; zn>TKfmen95iOy~ZfJC>~g_IJ{_nuRGr;X{%G*-V}T{0IJWj#4?gF<_(4j=pJ-& z=i581xL9Pyya6Eu+%1=+l%pLhKyD_7;$jh{%O#X9mykOj1FDLOqy(iaCFc7+DxX(i zKeQ=(F3YSXi$MXxqY$3wp?}mL^|kM#`)4;^h;tx9qLGnIV7)yL(^J#1mMms1Tg+Oq znD&7dZ&(>W2Na<3w85;hh5F+<%qwQ>fy6vKT~E#vQ;nXqW=@|2=N!Rd0M0phhC^gT zGS)xR!4)0@I8BFCMa8WzZn3p{YtS?e_J*AtJg>Qb&>6!}74`HMQVL4HUq=hr8vH@v*_QtOh7ZG%UFl51gAiIEE=5`!=lg zzl{^9@fZV6nHb{$XA#i}pPV_st?g| z9~SBd12gY?-}~PCeZTkKHw+QsWex{k@_6OIf6sx`qf`YewKl!Qp)*6!bsfSkfkrQlGS4qw{(Tue`+EpZ7Ob;qjdilN|q@B&f`DfAuaW5PXQ%4V~ezA?=>9F>5LoF5^}vM?AOWLB0} z{&e(>8yZ&;&~NKxJ+t82=z=n%;MCWr7yvNt7zpkOA(P3F+wHDEL7tK^d~Vn__P01- z7zV7I1;a3K?AS2|0Q6sV0sxNlVngGGip`C?2DvtRux0a>DrEkW1L~{_01$Y=o>b?H zGODkj zfC$#fLcgus1}8305Vw`H4L`W|fI|C1Oyo#}5d$JxeSV~$q@m4e_L}%)oMI3H*sOy7zJA*Qu8p(j#7+^5 zPff5*EL2UkH296Gps;Lz03er8}9_5yD$mjFO=kqAN+jXE+ z?aI$uo>GW=$BUNNTbL3r&VF~6;AAoQ)zO;lKYZvgu}v(@v=GI8CNEQ-+d9O6h`u z!AMyu1xcM%plT{g`95)Zg19ygEpN0i^$-|2e-{32ewb+!mStgOd8KBrSThu{Lny-c zFopD!G?j8c*cGe`f9!aS`akIh-@!w_qr-S;AoE*>>LO4++-^5xSr*ANGMZm&MzAwT zX4=H=4|lIiK6$E0+}{1Y%&lK;*_&$fT1_(6wASC#Z@1j>AI1^vtRKBJHiFoR7#t1< z_z!r-)#NJOvg|se&1ocElvWX`Rn3S9p?x9Z+BovP=cA;atf+pfrqbx8QCk){5}~A? zr1JIA!6t~KH3xMFr>b6E(yfW05> zt;&wx{k`@v7>^7@4n?qI`;JPz^^Smukhq?p$En9_HlKw2GbQJfWSVBp=46^CCFBH| n3nt~3a#i!ptAE4)y#s#$gEY+O>%l$n00000NkvXXu0mjfSPhK+ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sum.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sum.png deleted file mode 100644 index 8c663e2bc0b315ae98a5892227b9bd27c4a393a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4273 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 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char.png deleted file mode 100644 index 4eef3c380b0f322363f83f032d27ff8367f54a71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89633 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 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/b.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/b.png deleted file mode 100644 index cc75c7d20cc48c337e251efffd52093c306f721b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 617 zcmV-v0+#)WP)1${ibmA%lZI5fS*hIY+=9O7YYTF$wUyu?RG;55d?wbxG0Kx zz20WCktCVPWbAhP8v;BR!!YCV7{jpTayg&RDT*qW%ZtULR;wX|TCJAD;mBsQ@KOlg zNvqW=h9t?u;h^|RrP6M<0iakcmdj;z0HIKb=Xu4mEE|i({)Tv&hHn*&S$zP*Fcd{0goeXmDwR^92EkzPcswdzk|ZVXG)-G97G*yEzx^3l z6ve?{a5|l2Sssl>_xs&qvE*{Od_KQkuW6b#7z`MORjbv@M-XVelzgRnR&w)!%xZvKdcwvKLjX>@?pg=j7JUl5479u%H?t}7z6;C zrU4)tjdr_TP17*OsZ?q^Z7g;j{|_i;jr0k)9KVA03p=x z_a#YU80PnEwOTC{3Z+uXA|Rbk4+aB_aVQiz91fq>6pKXwumX@IDU-=yjAdD-DC)sJ zECO=5+;X|Z7>lA$U0qX95U<`1PG22;#{Azu&*zZq1mYsQrHbWI!MgxB()Oh%C#`A9g&?PbL!p z;5g0=$8oJzizG>}*SlCO?o~D#4TfPX zj_X7sQLEL?=d;V@G7RHGR@e1>K93N(Ua#LifvL@A1NLMftM#?e+0`0sei!J08-4 UmN$%iEdT%j07*qoM6N<$g6iS~BLDyZ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/d.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/d.png deleted file mode 100644 index 66e23a897c4a97b2da18e9c2db42d91b51ec0ce3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 525 zcmV+o0`mQdP)@5XNWMM6nYk z(MD{vMJ#*+o4km%58x{ZfmC(@A%(Hh&RRrR|5O$d<6IH(O;R-hh7q;O+$&W0bn!ZQB+_@d*ODX}Mgc(`ia+G#bt2a*`y4 z!(jj@6bjBRS(bafo@H71li-`!d_HeBo0oMrrKqY30E(heN(Y01cfe+|$!4>T=Q!>* zG?`3NsT3ksDiuXhJOUVFk|enT5V2OPjYcCxlx11dH2(p*uD4n(L_8c0p-{+w03u%V zw%cvPFkF-T>K@p(?U-t{s_VM{7cCNr?Du;BD3{BoY5EUHBoe37$?-hT`ww7@34#Cs zi^U?7$@mZ0ZnusxO*5a*KQSsEIYpLbiK6KEKp=20iT4hM!(qK%2LM%78;!G^ziJR#&Zq-h$@^MWA6VzJq577PZxbYK`pr_;F(yWR14j1P#sKVEOZ-v@jEvb#&?OK31t P00000NkvXXu0mjf6gAv^goX7~m$~GA8E(!Yh;t6Fln-94H{d@2;4gZXWtpb=ohh;`i=z0jg}(4Xxm+HP z$LsYv7K;gjaJgIz!_YL1F=m?PZnpyfMNvYbP#_SP&1R3M@MkI(izu91h>Nvf1qMcD6lWg>hZ0)q=s`4*>`v=lb`Vaj$y4-syBcOXcT)<#L%w zBmf{9jjmQJ_xyUj4h92NRc+gDG#c@E{Ey?hP$)RBj4{R-JGCf^82@HZNs<6yv)Mcx hg5Ez~Z@|9~_yzANC6IOHq{#pP002ovPDHLkV1k(^@6-SQ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/f.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/f.png deleted file mode 100644 index e0f76fc95c9bef8111333e5973497f492d23bdd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 zcmVTUHE_rI zs$pkm9=kJd1_JbFh{xl;?<0gl8)F;<0b{J) zZYzp%GYRJCV87q*cDrV?X&6SaSX?X?)9KVSO~%;qcwDVk{eC~6&sVF})9GXw#_cR{ z50ui$WC8%4PRF+GE3c}m>2zAtw6DVN*C3Hdc%B!2iy&Oz9}EV$T<-Jv3yNH+R6;{l zRmRvOMdo8Rn}tTB(crw`K?28dE_No9d5sPLK$0Yc(0o3x*Xyqr8X=_BYGI5OML8S} zu~_U`pz7A7xXxm<3yTidp?+3aXEa$UFE?VitPQ50*n+BbE;+Xv(Ec(d6MLV_T; qXf50@x~_|&_$Awkn3Bd>EFy~Y;k!pzm0000iV#5#X4EPTL!{P7`&t|hZm4H5>cDwEI zcq9@D04Nj+0FcRKu~=+89wUUbT5YXX`zZJC0GrK5k|aS8Hk)nlEEbDOr4j&mJRYCV zFPF;<0R%xjJUkQ%1+`jz7`?fZr_&{qNraG8D(!SSN7pzU4gg>R$mjEV zy&fSn7z{2iFHh6~0Hspt%K)?4T(8#=LXVG+fk5B{AQFkZzP^4Luy3&2+uKYggP7|0 zJ{XNgBuUaXMNtGneDg-@_xp4g0zjkDpnLy20bDM3KPOl$7Kg)O3^<;7adFXXHfdWb zl@102u~@v1S}c~yWP)MXVzHn-0)b$?Ui*ALm&^6pqk_ZX(1z3Le13lZH8dO!pPrs@ z9PjmdqtS?>C_bN`%jLG)?csB_dP;q0neF z;c!@^(Nrpx)oOM4ZI71xsh>ApS=Zn`F@b3fO0nhcC@66(+-v9sr07*qoM6N<$g6+pL9RL6T diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/h.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/h.png deleted file mode 100644 index 0347c9327748445a525e29c28e8a6698f30bcee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537 zcmV+!0_OdRP)!2>3|_zz@p@`~v{})RiP@xm+>~W7{?%grX>hVJyo^r_+r_ zV>ld6r&E??FPDq!x&VM+Flbp;G#c%8yZ61wGZ}`VD2gbGqtQsyw83BykH;5_g<%+k z5YseORn6scolZy7G+CCz;V{Nn*Y(F%&nFNBK@fyOp#UL72O&fIJ^ev1A$z_P4RC8yog`sfJysqzQ3LWKfpHFb71=B1M&ynA< zW1sg8#d=Fw7@RtSPOV$Xs*}(-pCRa!0tbVGrmLnY`T-|~Oaw%qNxi>KWC{Z?ZG&b`|?!`GHCF@#ls;M{25o PK4tK9^>bP0l+XkK+Y5f6 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/j.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/j.png deleted file mode 100644 index c9ad651dd102a424bfe686e6c5eeedde9b72d871..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 388 zcmV-~0ek+5P)Oa3@C=?Hcklp$t(BF6t%U&#D@80)*y!6Lutf?pOOP$rzj_Sw_y&IF ze~%y{Y$*yGYX|&2;7jmc*L9S>zGhh#RaFTgYn>>dvMf#0Je^JeVB0q5+%OCP;G9QM zwB9QO_>rP0&mstdIF3bHe&>O%>wVt?Kwa0Ws%~g9rBpBi_J6PgcECRXWLf6>ev%|F z=Y$Z^ZDAz{$8kI!k9nSJnpRa6B67~Vu0ur2vYy39Y1%Z6<2aYg#kTFXZ2@4KCP|X= zJfG)TFiqdg1J`x0*X#LwM#MBt4~Ih-hK#Xc7z9Vin~_-*#qD;x-|v)CS(ZJ|V~jl> i4{?*pzS-@7kM#`=1%9=aMn66P0000&sBOD~f+5hLof{YG#-LgSAqt8@P0l~i zRL-Q%eGA{_*$~E?Ab6eSxrgtEd(ZcrOJI!QE5iU^96x~n0Dv^J`}_O1x3@;4QBf3( zF+mVUqfwUS)z#JQ?QH;v#bT3_lih9?08Azm#@J%993LNRXko1o1mW`Xa&~q$o6TNd zU!Rb0Y}Cu;A|QjwH!Kp^#3e0U(pfRI61@DQ&K+M51@*6DPnrl!`{*I!>> zBaz6%!^4<+ep~?0^Mk>FWm$}IqtTe3pMQIM(-V+LBt%hMT3UK~dZH+*SS&6qEa(Yv zI-S$g)8%rRVHf}ihr=5i8_{S~XBUOT;mys>P$&cdTU%QIu(!9T^Biy-M^RKNl>&f# zK7Vv{R4SEpu<6K>U>L^l_s3$fR;y*TTAR(L$KxRg;&T95mPwKX0992H`m3^5tJ!R} zU@++Mc$&>7P1DcM&l3|9??ry??(V+NUR_;PDwTtS1BPMl@9#xXJUl$4C`ytfx7!T> zk|aGoKAxYS69gd$g4t|lS$27Od2ViQM2gUyms~Dauh$Vm{eJ(?O%dw%`-_W<@pv2n z+U@q~=_x{JFc=J91|ej(+gX+!3-I&l{{X%f;5T7vZ3}A2W32!H002ovPDHLkV1fy- BNO1rF diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/l.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/l.png deleted file mode 100644 index 72015ab4143687e0e4434d81ba4ea3b25e7dcc94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmV-;0f+vHP)E4ynuHwF!c_Go}P?b3nKjh0000)P6y*=*M7 zbgfoPQ4~T*I-RCz`qRmhB>DY*06;{FqDDqWBuR?JVpCI7Zz6mjxm@nx-~a&D*Vk`u zZZ%r8t9(ZXfy!8VzD5iEXy=a_c8#0(b3UH zqk)JE3k$Vcty|Nx2BA(~*qDZOb#Wd+T<))taxau5ug~kH@vq?-p4Nhr>~=RuR!= zvwax)2agBduP7c zY#Iy(0ALvA@$s<_fh^1Mc--l9j*pK!9FD!cJxP+(AyE_oAe+r<;7-xb1KmgzO5RFFP-rjhge}8`m01U&5 z#UeovTS7LQeRy~fi^Tx2TCJQ;XDk-`rV!eLPNx$Nht+Czzu#{(8i_>W>gsBjFqupq zA0IC-F9D!jE>EY^Z|m$8KnQUh2LQ=ra&z^1y_rnr6Q@)vnM@{uB0>W5`5XX9lI-<* zJkKM92!a?6hr66&v1qYa1d8AXT^fx>7Z(>VFE0SVFpO5K-TdriT_lxC^ZC5dXv8o~ zrBbESX`jz`;x-M1LK=0mIp37P;ffrYbJEEEdGCqg6= zAxScoN&$e`Y^Eq`Hk-BE?Gt#gYev0ZM+mLgYaGXIHrr`D*n(jghr_X4E=3|ywOSR9 z#W4bMx%~eA-e52QfKI1dtyZTW*M7g>(G{QQ+BlgVnennWTwG6(0S ee-`*h1U>+}I&RA2*NI600000hSOo08lIz)y2VJKoCSA5U|;7FE1~f11uIxtyW_g z=KTEp_jN^4o}Zs7ijpMBWHPZVy9vPW_ut;$qMU0Q&d$z;!{K~BCkW!>kdNY7?7k|bBX;y8{Y5eNiEqmkaAy}rJBJRYP) zQMB9bYs0j=yE~ao^a9Lg^K!XVW2h&s7={@b6(mUtf`GKk<(f{XtC~MQKar3mNxkXy zfW5sv^+0!ab|gt!xjWO(_J@ZD^|9$1c8Nry)9C;Jj*pL7meuqKf^c+ng!J9r-O0&` zfnmpSoZIb&5I#LU1%p9NPrY6*6bcYRhGCE}HYzfi%=Ps(3Xv?!e;W=C4tSpDIL>Od zZaD0GK3_hcuU4zcWb%(o?RGm7iFCVN48ufG+NY z3dyppD9Yvl2;uwtd%0W=hr=khIF37=&dbY7p6B&^aIo!<*B0>a1AYK#xe|k7XKA@5XQgNl{CJ9 zA&LZIEL0Ft!P-VFQwhF;TG)w=U@v(Id%@B&m4$_kg4hHt1g!)MiH=1Mi#soR8jpj^ zS1t2re+#oS3?m}EQ$D;|9^fAUxP$L_Jnr}Vo33CmC1r_%|5 zBuT5)%6))kS$@ACfN7ecP{@6NVHl}Y3P8PHZ#J9m0DQiW`0aMPSS%z-DijK`ENhzf zOrw3hUDx&DaCkTz27>{BY&NUwdZ|=;vXejQd_I@U#@H*H$9=$LGD#+r07Ow-uh%~&I853~rDDejg1|YqyDSh0wA*cZSj=0zJiy-v ZTmWFeIro}|6xIL$002ovPDHLkV1h$w%b)-N diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/q.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/q.png deleted file mode 100644 index e47c32ea6b18aa30d7b9285a958a28dcb5bdb234..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 825 zcmV-91IGM`P)Z?MxHuUh<`gtFMT6B6BGu9mNMkfKG$>>t1a7&BMmQ)QS(M_X z1m%!k&uF{mrA9g(P%!Oe|dS) zXf#t(Q#PCJXLhi^zfaTj*x1lPm-2D8!EX#JgogfI0$0N(~H}$Bj=jUg=Uca)k zVzF3ucXvOgBuVP&={Y(&qG>vrOn$M*R{(>-5Q#)msg%iN`kdX{+gn{-l_ZHI$=lmo z)c~K*x4yoPh%T4w?Ch+mhoUG%OsCU4&#MNIB-sc$J3Ey;6B83RH#dlAx7(x9X!CWN z9!w|{@_N0En5Jo^^D~>xi9`YbHa0eb!Jvv;6bgl$PA337K0Xc(4k`fzLC9n>05CZ@ z84ib40E)$;R;vYoTrOuY7?c2geSJ?)PmP#mSrq_L6bA+d06>;yifXADtJSIsfFKC@ zd>#N8hN;)a?rs$Thr@AlasmJx$EDM0C4eZ3 zI-L#xE-o${4u`r?!7xlC=gGd$8lP%_Vo0$ zX%*4l)A9WLJe$pyN~NKpq4Du?qtU43B>vu}{~hoTaD5yG{k=yJ00000NkvXXu0mjf D!6SZ{ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/r.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/r.png deleted file mode 100644 index 44ae3c0d6484ff0336f451432bd3a86bc819ed40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 579 zcmV-J0=)f+P)~0005vNklq!bieKKc(4fugWK&E`^93x^ZaNuN~KbT zLgD@lU+jUd>)2?T=61WW4~0VYdVMyVsjBL5I2w({!%Jj}rs*4l)$jMqx7%UwbULk%>E&{{Ua#02hG9KmI-RD|X@pR_-Iit9f<2%p$}Fx{E1u`O-EOH= zk|gPLIz1m#6X0^W5{X16lc8xEA;hw5Hk<8qIzK%JCV*iW0PuRfgTVj*Se88=kMIpW z7SrW&DM=Cl42Q!=Bw{@P0BW_Gq9_26%jH_Fmh}Jt5Jhpb*__X3j^oVx!%Bdvs)0ZN z0LJ67-|x2uK$7J9dZkinHk$yTC`z$dd=hXt9DF_>_R(n6FpT$Ij^p|TH$>kVMCEDKP2 RG`Ii&002ovPDHLkV1iEf|4{${ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/s.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/s.png deleted file mode 100644 index 93dd1c61d6ac04beca23465cf78704952acf934f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 665 zcmV;K0%rY*P)D=G%-1E8J@9+H1AwUShUkU+#tT*6401$sTuhZ#NtJT?TMx)WxYPHQ~BNB<-Zg;g> z84QM7Z^E0xaeTYo3WY)dfW=~|R4T<{QLonn0H{#bTAqWvkWt6d;qyB$G*})7fY=u2R$K6ae6MyKk>>$7B>mtyU|W&7RNaS1FN5 z6buIMyLX!}kw`Y1&EarB5M($UUS$V^K_ZcO>KA#v-cqTA<2Z(4d_Ldda9|h)f1^8q z#bQCBP)?^4j^hx*LZQInaFj}AwOV}*078hOD49%dx7+8cg%D0A6O+lr{_k%xd+K)^2-2ct=DUbL}Ihq&X3V( zG?hv{4v0h|D2jfK`~CiKIDD=Gl}h#aMx#(Dh=1^$H(LC8pm-Gi4+I~a=F}9YPZ|*cs!j>HyVu|Zx!))Je$o51Ol(u zdl?@NhX4R3lliSfzc4u#i_z(HkH@1>C;$LPqtR}+%jI$afZ1$buh)00j&S?pg<%+% z%RP^e$78S8LlA_)V2H)yA0CB-_s#ANcv}Aeod}3@%EiT=00000NkvXXu0mjf*;_Ht diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/t.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/t.png deleted file mode 100644 index c359ccd2717878d307dc9f28b9f42a92dd293680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 448 zcmV;x0YCnUP)@+~05&#muxnw}@; z^zCUO=N$Y}2>e(AAOPR1Rkn~MiR-!uAz79I0E{t=@$>oQoJ*3F=Q+k0A(UkqW6ZKF z&-0p9a5|lCx0`92`~AM%ZciqY=I%f&E^(P%^n34&lgpKrI@(h_)y2qBuL z^?JSg{a!={gF%ucob%~)N(d=}o6Sa1l;Ln#mZw$GzVrE8@ka*u975Gs`lGxJdT1^!{b-!~c!08kXA*=)AkZ2+j% zYPzmpuh%5wI8LEZ006@<06^0;$?4ZKe?7=nVB(7v)Aj*W;5i&6&#O8%d!wL zilSDl#mvm-b7l|j;l5-HT^bhKiyr77I)RQWN9xSQN!lsU%6#XfzrQ zhm_KMKEGP6@CC?=2e0*dz1!`AATSK0)9Fx3U);weJK1G|kGTP^Z5U$P)5={^W4 zC9AyDIfH+IQc7X*7bwYqO<9yvW`p^ZOk`jZS!6OB)X6{@7#NPhBFXm|&YgO^-1p&j z4^R0_=Umry&ga+F?@a}OeiJqQGH=0K@N@oLhYp9sZnwJ#0H;>xo3-x@NoGy4~(Vp}_Mz?nCzykw~Q1>j4;zM$u^WW{tsMU>F8pa#t{) z&z(-^XVI-rE*1+S%IEV>3IMPyJDE%XB$LT@yM2)r1c8VoNqSz;?REo!002=Gyg3<;_xq2J4*)#R$K&x= z3No3DAP4|rvDjcRARf?D|~Ql!}+2!gnY zTBs-*MNeoOJgit6%L`_Xihlht+R9swav)N8gPKc1RC<1V~T&Jg} zS`>@LR9Bt7*Xy-ftzXsB7;J5A_4f7xSX)~Q1Oi&r*4AdRST;8|0d#eB?d|QUsI;_n zet!O22I}Y(Md5i~?M$UoM09a+;c~eEL?RK7$HP!EnIxju*VpeFba!{}?(PC`I2`Ba z=d9D`^Uci60N{B(l}c$-nwy)etE)>t*0jBmNTj{JouxD~GNKE8c6N4RVgkUxz(6=0 z24J__S>w9~0630gDKXvE)m5+8%h21~8{27;Bvn;aso(s}KpkCeZLK6pJkQ_W-m0{| zzCIR<0VpXc@%#PiV*J2Bk|c-20bqT7-Db17-EJ-2-rnx)>{Pe^&d$z{4FH%-rk9r& zmj2PvQKp@iB_9BW@$vCYH?5*5XJ=;>6%{KhE6dBvI{NVN@cjH7kH>kQ@95~rcwc8R ze|mZ{o6TcmV+#ulX)|;>ovp2{?AZTHMC=?C6%}Qo<>lpOvpKs0m;HY9cKiAHc{m*2*w{dM0y%?9rIN{HLPSv%RVoz#OeT}x1R&z>?rtKHK*WoS z3#ZeGvLzQFiXs3EheJfPSS*=L=9dA8SglqK1_L6F$72AHPGzBf@KoI0-8CAGR4T>u zydVfpr&HE6naj`Ra?+}mO6B{FlCx2=0QGtu0D8S1A*5I=TCLVkr?NbN5Yle90ia&5 zznfO8wOA}7;?>oaUawysKnUq}yEIKlqtTE4a5&^RPOA6z_F}Qvl7L>X$1u#+*4F*~ z{io>Y=;-9+M5&yh$(r_=fUev`>`czD=oG^D80=?H=_7!1{ZTrSUTMa}&$8jVKLXq4l)*Vk8yqSn^d^m_gN{yqRSn@vFwSe7M(h@wbQ r6adgPtZ88`{8NB8GDH4y)neSV00000NkvXXu0mjfv@=m- diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/y.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/y.png deleted file mode 100644 index 7b1ecf62a2ea93f55a5b60180258324b5b9e1b5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@MA8P)9{|LgS9iNzp-}L8y_d@c0C=7!gb+g7?e@E; z)oM*969BMnTaqNd-><6bjV`=1ubYyyHylL5Cm0K1A)L| zvAEfD7l4ShTCG$nQ7uW*;c)oqNvG2QU|H6^l1BjAyWj5-aWEL9QmK!INF*{G4j(i; z0rdO*OeRBhI2@kMX4j{q(I}ZrK5lpdKtx%V=kvMix`tr{gTd<~kH=%0=63;xVaT#f zbvB#r^?Fnni^WEx@ihJ%KzlV!LqyXw1wlZ>&1U2C`B<_{0Mj%jNus)3E;pM^S(cZ} z<&Obquc9ba6GHO&JY$d*KwqhC+lW}HRJz?RW9k#%qEIMwI-LN35W>C(KLPmKa{X8P zz;#{Mb*W%~Tq27})3oF9xLU1rT|b}CmSxrJbpVJ)qw#qBah7Abmuj`j^E}6Kj^l6~ u2LPfdI*yY_Byzdj4**_&6)(Ww0^R`8)1&asQC+_P0000XafZY zaS*J7)=6;E#YG*(!NJKz5&RQ6xJq|X7Z(xdE)E3|M-g3|q#X)w9TZ%vbjrCy-jhpx z*4}b2Ja~T7$vI#8qah~=1_1Pv`h|X2Z@_;52)NX2+rD0}?(-?7(P-4gfL;0kV_YZ{ zw%aWmilWGI975=LJch$z_FYZWZnqmDF8MsNe59^2K6NRaF2uolZQ@!z(=ntX8W`CgVshm&;r($Kq@@yI!v;rTzhm zqBxSFQ0Q{G0Kj}cuT(1FK?pock|bG{S&T8ZEbBV~=kxi#;+;-sI2?MM=oKJ};%>L2 zlp2N+iA22rwzg#z_Khth@+~isvromEDr{Q>2&&K zfN7ctAwozX@cTvz{1L|Ze$=yTz`ZT-`{DHl{QH0pob+c7bM=cO00000NkvXXu0mjf Dz_0ww diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/a.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/a.png deleted file mode 100644 index bbbc10267ecf51ec4f06128c516b65cd9d887fe5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499 zcmV7?s=qtReBrnOp)5OUjEmK7vmu~d0%_f+ed^j8c*tUH;8IQ*RqS0tDH#wir4+aC8 zHB~a11VF)`R?zG900@F`=jAw#GCaJT??2hHEI|GTT~ z++`Gx#|a@1v*URlK)2iVsNewrz<$4{>r5u2D9T^vY&Hv^TrR%=n9t{Q1gq7mBuSzu zdYGHdCJkP#R;^a+DS&O;;c%FCFBXgKb~_J%X__=Lkx0yDvu9hhUaxbxT%}SupU;lt pcn{ciyIn4qA5GEs+42SW=?X6_)14Nr{Mi5i002ovPDHLkV1i@^(arz> diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/b.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/b.png deleted file mode 100644 index 1f2d08ac31c91b8c8f480920fd8fe6eb1c54e709..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 599 zcmV-d0;v6oP)mrNEZB9e$0?!LpPF6qmCfA{UX zc~AHGJfG)z^*o>Fo;!o0DELeL!yoGd_y8VtKA)d<4u`|xaL{m5exPQvX|Y&}#Ufd* zR;zS6twu1L&6COGm9GY1xm-G(PP^R>pwsCnijvFa+-`Tf-5!lbf*_boCIA#g=>**G zcSTWrJ|BSDY{oE5Hk*AsFdmOd9>?QR4}gfKX#gzCG7R%g2*7MM>&$>8p_Y5M+dZ0O zSso6D0Q&vDe!yTbAkp*r{F7<1SWpxtisBo0Z9uJ7BY@NCq;5)*#BrS0>s_zc@7=Wl z$z&1$$8ls?DwV8OD*(UWKcCMv-L(O3w;KSdLm&`f7{=rAsJ9Xdg?=O z7K_D*DU-?Q2ap?9>+_^|JgzwoG-gq+*8>m^hrhMf>vi(5*=%&qqF^uxV87pM7Eou2 z0JvPPSJunr0)Xdvod8i30aUBiR|f<^FdB_-^3wpYEDNAgsn~2bNs^wd-ENnr>FIQ; zvrWmprBW#X27>`WB9Uk`8m(5VTrN8tj%YM`yh48(v0n6nQz<4}<@D0NtgzWcwUO+aRRTSmfw{4p-Mk(b2tX3-kjYflg zs~3Pur2=3!n|%!s!ry~LBH?)+&zlhjxLhu>EC;<3%Pg{O8$dFdjBD5(k4FHm>&690 zrBcCSx7+<0u-$Ik?Kamm4Pu_llv280uK~>GbFMPgbv2#7L zNe~18rBZ1!nV6>8YPHhoboh*W7eFaJ91g`|@ph%EstyK&$QtdTs0blZHrnso@&ml5 YD|ai| zQcMP2qC{QlN)#DPvND~)Xkk!BbvC6Wg)%UkZZPO(G9kOcl@hL#`wgC?$KO-Gdg}4s z?)!Ot?)9y^&$llj%QAj5D*ST3g8x9ERzz>NTTv8MDwWY_e78q_m0qtGi9~cd-EFVU zW=p5jlgZ>s`!fN@ab~kQl}gp?^-LxMAQTF59M^8Qi^U>M(-#v(QIaGn6I3b{yTWd}jnXvz z;aT*D0Nif(?Ybz6E|-g8m>2EO%dJ)mK&#cdUOXHQg+jq(GVwhBdP1N7pyhHI06`F) zPDc=g#bPlS3@Gn9 T+4U}w00000NkvXXu0mjf3BBZ@1g)_4;@` z?)Q6)amcW3y8wVBNz>`{vmc;Ztrp;5Hk{F(+wB$t6h-;i(sf-F#pm;xcSIOt%d!BV z)9EORA_#)-`>WLoV{DpcF)>{(mpsph#f?ToRaM7vii~Obt0)0+`UNv5G5>$Ul!*WU N002ovPDHLkV1f?U%`*T1 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/f.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/f.png deleted file mode 100644 index 28a6cffc0febaf5fd4e7a82b7abb382242902dca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 483 zcmV<90UZ8`P)_Y{!VbNd^|Au8jv>OG3&L9T=2cxhgcCA(sG#C__O%?`nLBXQz3p3C=#B&jB#7FGAx0jD7jpYzr_QA<2Z#vp`^m;uWfTw5CVzD5EWV6|TpG@-ov-=7H Za|LDowplw^g>V1>002ovPDHLkV1kQ))lC2Z diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/g.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/g.png deleted file mode 100644 index a8f1999bdd520beec47c4aa1e5d9b06e4641ad8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 579 zcmV-J0=)f+P)@jQ{Orqij*<%&k5)oN8ylwPlw&1Pwu1`vzI^a3iC3d1n-`TU=FE|&vPEEaVE%H=YE z!{Kn95(I%|**j~=fbn6_3Z4%jNy$1b{5d0P^|# z`B@PFKA(@+1YH24SL*e8DwVoZaL>t;$piq)vbPG_?Y1b2Mx*gbC-?h(02D>tDhLLH z02D=evPFZz;PMii&E`6L*&lJ(JoF9H>GXBV?REq3`~A8Akx1mikY)KJxZCYK9*@J} z08lEGbOE;8t-hUa;jrYVY&Bx$i& z*ladMQ6xzspBvBFCz(tF*zfmxjrOHhs}+D+t@Z;>et&;Ao6X^HSXI@JAjffqLg8md zMJN>d+)u03YOz>4ozCOieIwrNj>luG)f$aPCX~!Y}EM%C4J`y@B4o5@RfTz z&vo7R^>p3mzIzBk5b&F!!Y{{1;QtZ0-ERM0V7J>9i$$8I34+jQG?hw4jv0@~1A%}v zCdfoSpZ9n?^?H3c9EQVT00x6Wl3AH5!f2C*5urKsucklX;#8kjZ4^1pe;9;c(DuwcG9X`Ea#b0r2^JVu!2MDu7%r zC)-Kkjfll!049@(7_wTe%0=E1uvjdTRXC0VkW3~Oa$nEE^?Kzv&gF86p?13sAeBlf zq?5|kN2AenIt5^}**cxh^KK_eve|3`xEuJL9_aP@JBJ_$aUw-g02qc*wpYob%jF^n zg4t|VtJUJn@pud%5{dk17i~5hp63&Zgc$1g`v5|r(2oRqy&iyUHY)uUTX=nMjh9 zgj%f@0Gg)P>-A!>(CKvLa`|f(u`Ekb6w9)b=xjE7T+wc~4+aCdI>fghUgz`qcsx3t lPL)c@XX5j+`w09v{s53-g&g?I_Mrd(002ovPDHLkV1kf_4X^+J diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/i.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/i.png deleted file mode 100644 index a149116cbd55f5ad964efc2d6aab15facc6967ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 467 zcmV;^0WAKBP)VHNNj>{3}M*rc$tuu%{{z)mE6ibO5a3fU_JkzjI(XSm{= za@g5f-g~pV#27=7_(H+>82kf+(hHi?=|n`2OcX`+dj0uomI0H=q}%OQDwQNlj^n~G ze5$4NpzU_Me!p*;rX)!m$2FVHa=Cmw9tVSgZQHUeGscLh-EJptk#g|ub_-y=UdQ-q zwW_Kr%Z4-qK@dixQH&gq#{ibgwY>$;xj8HQ0*4jjh; zpzC@L4a);XQEoZNE}>lS0TJ;$e?FfJDbZ%L0ibDGQFqa5wF1!V_3~XT*{dmvV&0zp z5VS{JE*Ai%X%=N*Sr!1#^J4traCnaafZ=c$BRidrD2nOAQc`1x$Z?$O^-4t3>9kg> zsj51k&+qfPSS*4d*zfnRG}-t4bXBX>n$2eK58CHf@iF)lgKwE2iC9>2d~pB(002ov JPDHLkV1j&L$`=3t diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/j.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/j.png deleted file mode 100644 index cf94ff276a68cbaedf599779e91267d3e4780547..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 531 zcmV+u0_^>XP)A|? z;R9G;HCD=25sAGuN?FWCiq9dX*l6Md$Og$5u#<(Al@ya2v9fY4yv4jR!<~8bdgUzt z_x$_ad+s@RhEPiJ&T!z(@d5lj;Om$E{eJIoeD9J{>hX9uj{A{8t;cXU%w#f#yuo0g zOD2})V7Xi-5{Y;`o=hfvKA#{6JkQtb_33mf%W^Ch({JC>3EJ(p+wDG|&swq9>j5|( zk7h1bK)2fka5|l|;&!_Q&}cLs7?}Wyq5vosi#k0TjS7PB*vkYc6bgR7|8O{H#noyB zpjNBB0AN_+d_E6AQIr<|jGaI*7<`&$bCM^M34m-i`#ja&_H(%$fcbp>G?Uo-;CQ`W zRaIHMc1pC_Y*bY>do5l77>~yQQmGVEwv7u&r_%s-yB$-r8LFjH=>Z#nD2lAzd@n5) z3ji*c%g`XpGGqUk0%o(>t$OSA`hJz?`D(RlVIIwj03Z|!T`m``9tZ@=<+8PbH&k1# z){Vh&oFqw|PN!0-IGxUZzi;_PFP5}V1t#Ue5&i_XMgpi|1Aq)>_s>iZ3+PB+}^ zp5M>iJlpp^?|Yu_d%pKQ=e!X@@SFI9U&c$|B_N?ztF>CKyVPp6%4V~%SZuLa+@Z-M zwA*d1Rtq4VPG3>u@z~*Tc)ebZ;{Z4uj@$D0?>9c1%|@dU%d(9|!)P>0@#FCr3WXF3 zMZe!S7z_Zq-7Zbj|8fFCh|A>y(ChWYWu;Ql>2#CHuh#$=h5^8` ztl4bdZnsxCYPI@)@lQ@5Wl|K?Y&MA;JQkSG=KunMfYoZPR;xrN9t)JqWdPy@68U&M z2gBhIfY<8#x2@&w#&H-O9K@;R7Fr2yn|xvOM~qCP%8WC&a?7XW_0|CTbDOaMBajuhcI&Sta8 zv#3}s0^oW6mfG+4;uj(u4#(qhtyY^%Cck>lmv2+0QYi?6#bUXoG#brzyUpkGr_+gH mm{O_qO_#pC{_I`?|Bb&3aC|#3A7Tgq0000E-{0004uNkl@5XQef{FBZE z6-{TMSPCHzp|P=vMH)e|RvYas#0L<3fuLZUfDd3{VPWkH*og>2VhRh_A|S`X#bhxY z2l=`kX86qvGs6-}DZ`q0B{_~eX6Pofa5rikN^O~FaYSf{<2Ia6So47DB}NAB$LT_JZ{_e z%d%Rnc%D}jfv+0 z-xG-hO9k`!+}+sU9BkXJR;#isGfol5aR5Y7OsCV5Bn^kd?RNX!q0wjnI3ABIi>4@w zD2l48mdoWIY00wO>-9#XQ7jfa91bj--0%16_4@60ds$4=>~_0_LcwJSf-oMBDW#9c j<1^PZ`c*`LzXCh~Wd|aycr%7@00000NkvXXu0mjfK@`uf diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/m.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/m.png deleted file mode 100644 index 08eccac594fe14fe65d7acb9fe63d5d9768ad626..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 722 zcmV;@0xkWCP)i6#qQofrSpi z6LJt56htBfi>7oDF+pd zsrbIbjrTQwJ%ew{7eCWI=bn2$+|N1Zaw$oY@S9NKm$4z(5Qw74aolh?{87?}hljt0 zv=Vl^9l+Dmle9K2FE9OmzicWH&@>I;=H_P2?AdGwOS;; zR4T1SP$(3vRx5zr-CacjQ501w6-7}1CXE_Zcx1%T&y#lo7+=0G4INz&HV z7NJotvdv}_1mWP|0KoI}^NL8P(|LG!*l08WoSd9YZ>_pPr_-9Q-R4OGqO(qk7TCJu` zkk98ij+4z;ECwJFiOAV`o~I}(9*=*kr%DB&-|s6Ecs!m~t0kN7@9zM#TCF^QG)+gN z(V0^Vm0UnD8jXxbG=5A zU@#mV9nGIAm&*VchEXP-C5N`}_L~RV6a&bh;V;*BrQ9uKWA@@pv2#hc7NJ z=KFnTXNP53i^W2keIBF+L@3$(T9FYam={sTcsyS5TD043lEG%Pxm>Pq5`BJtG7Lku zYqi?+TlgceEPHl#mP{rW*Pv3Vh@vR{Yfzi7f!H-zw3uBm7!0#43M&?iN$_8AhyyWL6bu>^Oe?~M?cT7Ly)XW` zsXPx)c`ohuz3=@#_dD)(XF~|VcQ!kGbNdDSJb?JxbgHT+ilKA(R&9zT6e)578Ka=8Qm zkH_=SQ!bY=#aRG`!(pjZLI@EA0RXGj>fRFw1TYyamS{X4r&1{ZC=?1do2}h$-xw~J z3r*9w6!;3F(WtKL2q8sL9_}Scl3J}6CW8gQ=kuB0Znql%`u+a@hFmVU-|s&JOeT|Z zxon2DS`7fw>GX>m)EZDKm1eV<8Jsy&eEKolYanX0ylR@k2ndSd?Y?UUxVg03ZkgLg?AidkNt6dLQb7 zAOL{NHV{Bu&$*)hf^P7&ZXVG~H-4-T)j9hkrM<-HsVE7z_;CZnt{_ zplMn#7_|H|n`dG)8ohEG+HRhX+wGR3D3T<<>KS1BeVhI`;17@>|B2ZQUK0QS002ov JPDHLkV1i431<3#a diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/o.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/o.png deleted file mode 100644 index a6568588bc3bbbc1fce0a8fb0be937f6745ca252..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 597 zcmV-b0;>IqP)NklL7K<#)&So=eTdmestJQ9|)9Ew-LI{BAbb2@UH9!yqhr>bbR4QdK z7;aBxS*8G=&-W*QXf$fG*{I!YHUZFk+)5P1C(U>Us8lKdR;!h&s+Y?JKqwUY9=6$R zC}1!cyaAvuB#}r^Hy)1zSg+T2gLOI`fL^cn1|S#=0yrEF)Xn8`+wJyIu-R+|FdmP! z0?y|%0FTF`YLi~C2XMV!?_BQg+if%&0Q`Qx#wj_SP8`S4Mrj(fPNxHa=XovFX)tZ6 zR={L30l+Yf7C^mT2SA5TD`3Ch16VGXFRLqx^7Zv42!hdQd;?&ySO9dp-Isu9G|Dhc zwOV~|7iF_qEt{&}?*ot|Nl}zXG51R>77Gf9#bS>#hr{8c>D4r7fk1#VL{a>HS|}7) zmZe+dxyX}mi`(rUjYa@Cj*CPhcDtPr((m_cwOTTn%w#f}X5=|PpU*p;&fmdaueV$- jtM7<>K3*TdzYq8YE;zyD3(J&500000NkvXXu0mjf)BpVD diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/p.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/p.png deleted file mode 100644 index fc24a272aa555adf2dcf027c43951fa314447876..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 581 zcmV-L0=oT)P)M*DwW%(BuM~dS-zv0rWp(d0Wb{nhCsPo z<~UB*^_wM=$p9FQMvvs#Y-UsK=hoF~buHA*5)Ov}oX_V+@_xSu@b&feUWx8`08P_R zU5mv6K&@7DFR)xL0c5k;r`}Sj4*ITdGgpg}Hy>||- z$mjFdSaf6OBd-g~DAgxDilQ6+kYRn@lDikLS8? zNs@NEos;BV{{ux)02GTwUDp*wiO1uDAiQzgy-XpQOad@XleoeQf#dNAAe~MVw|FrR zWLXAKtybL+1bh8RB;v4@-IQpv+1T6x4nf&GykuE645QI#{A6TOpO@W7;K%q2y?nP| TviJ<)00000NkvXXu0mjfH#Pmk diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/q.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/q.png deleted file mode 100644 index 44ebb8de0dd2921149e440d6ab387fbc5b272093..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663 zcmV;I0%-k-P){oqBb`pO1T2?J z04Nj+&jK_W4FCv*LY4p&MSVWsivS$Q=_F>e+1miC)ym~^8QVhxn$6}z@6#zF2%=mr zM$GcoEYygA7;MPEg!;wm*!r?H6VRpNnBuR>*8jS`3OePchmW`5U zvzg6ilSm|dK3}C$g+iglVnMqql?sQ$nNFw7GNj(L>-FmKc=USx>2!Mi?hHDht<&j{ zBuOi7JRX-yrCzU>%jLelzV1Ikk0t$#Tr3vvgNu z%49N5r<23s+%N`%A)C$acDq}oPNy>(jsMz%dcE#)xxSMG0)bwy7mLMSua|uf?ycMH x)@rrYYPH|*wOXy)?dJ3OuTH9;U&sF+@Edn{t^vvb+W`Oo002ovPDHLkV1kx}D-Zwx diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/r.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/r.png deleted file mode 100644 index be3017a4a29fdcc6487596b1e22941f08da6e039..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 641 zcmV-{0)G98P)=t>#h|2=!C+CcGnyz?Bdbu?;7{R}+{++EO+*Wq@%1ptboM1y@k9{}WX zIZ?03DH@GNcDtQr+3Ui`<1qlZTrSa_RH;+|;PraH^OCVjr4j%n5(!bSMx(LWY|nBf z9n;}(2mo%k`_WacRs}&A3oMbSIQ$F%_lfIpu~=Y0JRbi6fFK9}5C{Zrjgd%1`T_YOs8A>XK&@80HF6w>0r`CX zE`Bh zu~-ZM7K??bm!|2zA4P&7Nivhkyxl4c2E%5v!M*HJl}g3q@k}NYhr7{{M8g)x!W zuV802Woe^WPMQUog^jRLlD&^$MM~L`m9mo(cCxi)DJ8KQ3yYcOE>7uohq?1Y-CO?4 z^E}V_opb)@jUXbtQw+RWAHaVGoK7c0d1yw*s3 zx7X|SWHPDO>m0`sLI7aD-`fQUf)I^He>AG9O6M^g4s8Kitrh@Gr&Dc+=Xr)~uP> z2Owg<-w%hw6ytKa27|$i0e1|w1OO_Pid}%BD7V{9+n!7&DPumLTL%;hg+L&1KA#^( zgTWvGlu9Liz|(V(PN#dl-sN(k9ch)%=K&xT3R$`AuGcF7c)eboq19?N0N8G~R+ebB zT2cIFvr$#`VUEM$_;r2sJfHxUWp}%sHX4t|GntH$T}PgMTNaB&B9S13AYv+&5=GJD z@hFP2TrNkWQMcR8X0vu5oWtRe%jMi|H_i05a8Mb-k=Q?1VJ!_x;=5`j%&#-Ejhz4XLt6S zo!QAOM+m`^`oO|k0V{x2!!U$l_|x)9INZ9xT3}UfJkTO~&Vqi5G*jcQ84h9lwA_l35&0-Lu!qTCkcW5Fv=k)El zwGEwVH|`lWVuz zc|0Dg)v7ovl?utZ-|qn=5{b`}79g9=3W6ZZax$3&(CKtY&SJ3$U_PJ!AK+DfzaM}o ziX?;CY&Mxps?yg0Ns<6WA`y~dFc<(R6bd>4&1Mt8U@#yV7={6`TrPD2XqvWIEUMD; z`5cW#04RzgJ^lrN<2V3~MuTLq*=zvP>9kHjJRaAGaX#@D1bm9pc6n*l-+Jul~|T_I2_$>7eKjO)&rQ$W&rZ}{Aa1x z>j5~Q=j0LO8904&P_Xt&!R`aI7ASg+Tw2x-UUH)%R53yGrmcXPAZc)ebp=NX2P zBGb)0>I;$n-Q)34-V{JA7UOyTgF%T9fMT(zu?L3l pT)Ym4gUjX8_88tbyEow5^#=$0z&)9g@U#E`002ovPDHLkV1kL#2^jzY diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/v.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/v.png deleted file mode 100644 index 2c51c10dfa13fca1efc357fb580242dcd2710820..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 518 zcmV+h0{Q)kP)8mEbN7VPayaLwib#)N{OO{Bw%BcYY|vvP2x3} zX7O~HIWr$~ZzhBxguqGtz+rs>Ux0&v+wIovb~~NUcDuExZ@1fv#lng}Ow{Z3LZOiE z8IQ+?p2=jQ8>Z8#Sszn?uEAiSx7h7=&)I&z@AvxwB$G*-076K$S_M$4RLl&8LV;yj z`v6&%tq*g#T;}t6v+V1)h~v0eECyh+*%%s*$788fdi#2&&Xx!9io zKqiv`a5x;EQ=%xQQYn^Y&1zjVfJ7nz;Cj9OiL0vGXf&SVZ*Q`uX@>D^Hai>+eLkNf zpNew19F0a>t(LXTMc?spj(WYmTCL9K^UEqK0K+f<;_2%UGjZlkf z0!fkpcsw3OQM_KSekGrr06?)=B(_8a7>!26u9)wyvk zk`#v&2U~&$MTbC=1{Xzw5JAYn#Yt#rwIFb4YX}6F3nEQANYJ9V1&R(LC>0?@i=&EM z#q);q-hFmGUEhP(^6;DP{m=iO@BHWg&VLS}l;S&~!8c<`uq61G1f$W&XfzT+1VJd3 zN?!#?l4P}7T`m`Q)aUaNLY|+Wf1BtpNRm{m)xzO0vp1Vf%0s`!b zL^fi6icly7!0mQ(3A|qK=H@1VTrM|1`tb0uv$NxLI@JjJ{k|f(+2z~q_Eahb;PmvA zyMjz6jCn+-svQc>8=W^=pUZZsMIR##WKvG@1)=jZ1O2x74q08tbbk%2(q zXBYsW*Xzy427|#)r?Y_I>go!><>lq9QKQlH`+fH9@pu3f3I#+5Sl5ZJHV?FLXTmlc7DMB?V==97t=fhdXq(&;p%bUK|@tJU@O^;w5vu?S$c zn3U3wkB^Ow4aHPi{_)dj0IaO6FkQP`E>>6>4u=E4)6>(e@#yF%pU?kMt9W^NkqM&F zXgnU@+uNIU*xK3xFdPnL%iZ0b!C*K%JXFrb-J*+&3jmEqIL+uK`q=;mQG z8re~ZL?Zk9`>ermz)fGL)2Xy0hGa6ygd_-piW^5o+9cLIP5ZLwOUN9UxC#ipU>~^?y9(PGANhJ#bVK9GO1rxgTWw~O#1zPbvH8qvZIu; p^wlw$Otf0}?A95h*$Z?_u&Q55s}yvHd|5}i(`N~OZG zY^hXQE|;37QP0$y67_n$a5(I0Qm@wml*?uBsy>s*FpP9MZQHhGS%M${NG6j2G)?pO zhoWLKnZ)Dq!{P8VIh{@cM59q3&ZcHXQOsmAk9k>^{d$km+U<4$%x1I4lCJA6fubn) z``xmvcDwDHpin3P5ClQjb;{BL0RX8~N|Gc1qtVDW!C)`|P^;Ch*Xv_dk|dX-SS)Tf ko0k%i&&BIQ@c#+E0CWR_T2(BDHUIzs07*qoM6N<$f?PlB)&Kwi diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/y.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/y.png deleted file mode 100644 index 6670417a7b73caadb525e084ca2ae229364529fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 559 zcmV+~0?_@5P)nq)q5ebn2V zXEk%qea>^wJ?Gpms;UZ~#1DKJUxB|ZuwJj@@i-zPVltVOB+1xv+wB$+!{PAxd^V4w zT41?cy4`M36#M;tFc<^?ilR=Z)7`ScV4%e*6bhzsECnG60pdN-R5!!V}AM~h6;bS{?zfOflW^j}|fg+ifT zug9|N`vn{h2gh;6Vo{rn_X}jRS)b2mI?}HSXcNFN%yc?^lw(!>L?Ur#+3j{Nmy73l zqQ)~9n9XJYFdPnbORLoafP6l$62dYAEx%MMRjbwfem?*-8V!{kmI9;ENI%9%B(hj6 x)Te+pFFRS5$K!D{8s&NZ>2bmD)A9cc`~tKKlO1JOmjnO+002ovPDHLkV1lPt?~woi diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/z.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/z.png deleted file mode 100644 index 2489eda0e59883c60371ad2540319227c3d509e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 559 zcmV+~0?_@5P)1MFbTr^1Jv#xAO?#Ti?C$TXtK!4tO`DUAczimtU4Fm35Np* z{Fsi{_Y|+V`?{}RxOZ(9UDv@o^$WaNAHWCjbAZKSk;~;EgqFWz7)B6;dc7`+qQ~PI zjYc;YEzcA!l}ag!l1`^}T}KFw$K&aA`mdqgZs+s)+spbxX_`jUbR-hF9vu#c?RE`-n|jSFdWC}MzWau*zr8S-|uBvHgtZO zNKYn{7~^NsjgS0Co6Ux0SqP!i=_E-K0O0j{IgUFXkA}NX^#DRxtJNe)a=BdbcwClc zK@b#0v0AN$yD!`zkx0-qEsEk>nj8v+!r}0%=}+B2RaJ_j8jZ$11IE~74=$I>Zntwd z9Q}U(o`>goilR&cCX)$45X0f{o}pAK0RTFkjv2sUFaQ8Fn@vfQR;!h&s@EQy%@&PD z%`~~yY88vc>*qe7FAxX>gF%ucWm)$7{oQW&<=3=QsUU<3g~I7{(ll+kT&~ya`FxHL x!Wf^=XM!MDmaSH+u~_Uod+_-ue*pgr@Eb7WB@o=qWm*6L002ovPDHLkV1iP;_7VU9 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/a.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/a.png deleted file mode 100644 index e8a6950a011de8bed9b29907242982b6529a26bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 393 zcmV;40e1e0P)w+cp3sNx}vo2*R(+B!mFK?RML(-GAg|S*B?+3}c%TMUlZ2 zQAz-w?lHEi3K0buQ&Qo6dVC<@E6 zPNx$91VIqTaaorCb+YTaKj(elN5n7;*D%X6HcmE8ljr%>YpWzls;X+Ykb82g==&ZK nRaJfUbL5V-_o1e%nFhSdUEfYfTWl9MQk7K=swfcyP^yWJeexm+$$6jcIzsTg&;-G09h z;B-1QScA!A(o_vPoeqG(V9*qx*XseGl*;A#e4fwed7jq>kPT6e%jME>oH&jR!w7<) zv{zQB!Q=55kH?f!&+`BfLe}ebmSyG9m1?)!0T>R4oO8MJd_Hwu2aqJm-@X-2Fr7{b zA#$$kx@B24U(;XH{i^&&08M*q#yPJ6aJ^pNQEl6<0ZEUn)!%$Qd gX+K^q;Qs@@0jA*b;6S1&FaQ7m07*qoM6N<$g62QKQUCw| diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/c.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/c.png deleted file mode 100644 index e0417c53e7b25ceec69b85978b9d0101db7e512a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330 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 G2~7ZXlyz4C diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/m.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/m.png deleted file mode 100644 index f5a79ce813b0201e6d0d42c8f5f95f54cb233065..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 450 zcmV;z0X_bSP)ztQLR=1K-09rV9;nZZqGECOk`PpD5U^^bG}}$ zecuNFK@g_XDI)H6JIk^to$I>f9FNDOP+0{kK*afc4gl?T`_BF2R_pb8KHz1OB}t-O zZ(CRnT7EFbehD}n4%EH;{bY#axbUC_K|qGlXhh0twIandO;S#$6Dfiq=(;|e%?dnI z&N*%FbULJ5k12}ce!nMCRaM4VrBYcgm&N7)5go_r^?J9;a5z*HckzW@LL diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/n.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/n.png deleted file mode 100644 index e9b7491a7bd9b8187349d4e03009094b6a941a73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmV-^0fGLBP)U#RmUs-Vcv&hBq_3 z6A@ug3D{W&-~fCIfO9@SW?A+N0xik+eE?~i5>eAMhG773T{q8jTA>Ai=Xp~ewrw-U zL{Xe4SJ(9>z%UF|RRuu+K$4{U{Z2%j^DqooR=->U5k*l1z;T?n^L#$n1B5k?1VGcY zx1*{m09lszYEwZFezw-%&q3e!|76g*uA4gY?KDj@1+Ui&z&MVZ07X#%h~xP2cuY=N zmQ!F^*7bUA+jbK`lB91NLf7@nPx# diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/o.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/o.png deleted file mode 100644 index f386683e561d8ac0d040377c8b1202885217a541..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmV-^0fGLBP)o8qIZGarymz3q{j3 z&+{my$CT+X463RMhNfvj5af9-*`ZPZ#u%kkQ4~T*mSwx9%T02t`0ASb?%{a5)|Lx! c0nP_}0J+w6G^wFA2><{907*qoM6N<$g6VjbIRF3v diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/p.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/p.png deleted file mode 100644 index 334a11890098e231dbe0f3f9177f05d084a231a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 zcmV;<0WtoGP)PZPn}zJPxPc(31B0h7r@5CmR;PN&msHlKNxB0tg|~=@fvbY1{3VdSAqXeOyPNzzx^4#C+^){Q0@B0AO>-DEXyId~)e&4oj0H$ebnnp2= zM#J}gmKJBy!D6uhU|AL+WImsFyWQLEmSq`BEK`vmkH=FDqtR%$+f}Po#>bTj5Cj3= zfkQizBY<9!BuQ@o1eQU#TCMK)`(QBO1^9kjzJNme0fBmE9D#G)kN^Mx07*qoM6N<$ Ef}p>|n*aa+ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/q.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/q.png deleted file mode 100644 index 205df6aa1f8e3dec251846aa059302cd22e353bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmV;o0Z9IdP)IeZ7lY&vA>1K2?j#7;#jSu}SDl=d#>_G%~3mY*Cx z&!0c4CWJtr8lh(mfC2DrK$c~W<3v#efKuvtUb{yq%lG}KYciPtI3AC!E~NyNQqweb zU8j_uPN&^&XBY;6*=*KL0?V=hR8{q?91aHnK@fD4AW4$xbSm2-^>{o0)OFp#As0mf zU_PI}7Sl8ZuvjcQ0Nidj0ORra%{CeVXqu)2Kv|aGxCgRPPyGt?FM#aB^?D_Q$jbSA zW{jyuXq_|8xtw|cgpl=m%^2HkHUQ!{ZnZ1jgUjV20o(1Cb1sBftyYQvT_vS$+hG`% zW$C)^Uk_PV+_&HFUzeJuDGu0&uj?d90OWbz7eJ1d%+U+re!l})E|;x4wGV#0gb*sv h{yAXy=nsH*{Q%hRmesQWCwBk<002ovPDHLkV1j`7vwHvl diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/r.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/r.png deleted file mode 100644 index fc8bc8b0ae880e53cfe630bc7e2ccfd49d80129a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysr8J)^~EYYTuv&pllnLp+YZoo0Kg#XzD({dQNALIo=~xA(zQrw%c9^ez|h z-rFO0D7%6=+f_h^rTb^sfoby#Z<=^7ods*yvbtzwth1?r-PFG*4b`1?Z z>3RQqe71??Sp%M>s=mSZzaKCBljgH@kp|NQm6Mh8y2NbGel_6ff7SYPn?wWS3-&*Z Ymw%-%TO%HG3+QDAPgg&ebxsLQ09M+BdjJ3c diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/s.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/s.png deleted file mode 100644 index bd6c50c094f3539b1a895fe0d07706d20fab5f25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmV;G0c!qu8~)-fX!E4GmpStd zbGR@JBEpek;b5JB6L1241r$Xg%W|5gr0n~CS(XhCQp<51j^l{ya=GZb9t6Rriwe+n z9nbT&Z6o62@h}WS5QNw3MdPIcJfBYhh@uF87gYu<%L2eK4Bt+k=i@k1n#4rrs@AtR7Uava?{>gP+04U3H zpOCXGyWMVpA!O4uMN$0jC(|HF631~n%t4lAZQGKy=Xr!7Nm81o zh`6rnCV=_rSCJ&iJkP%G(_5JH+j0U`sfJysr8eI19Jg&>W`JzX3_JdVGeV#wE`AmG}*_Ns71L{y!6s#jV?&JIp>X6UyhPrAn=IGNmyY~@w#=dE9Y(g ov+Q}b{Q0jb?5X@+544-iRXwLJTzszYIM7QBp00i_>zopr0O8YZ&Hw-a diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/u.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/u.png deleted file mode 100644 index 8c1dfbcf105e9f02883f4d6a0f9a286af94a0fbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389 zcmV;00eb$4P)KuhZYF5ny-L925Ctwtw8;$I}9m@On5vAglhqS^RXFW)zl&*Z(CWGF<0 zJM{rK>j6A~{{m>5=0|^;rV9X`=Lv!k$MMz-!|?Tb<#~Qw9saI)o-NBFga7~`WP7#d zR#k;Zg2RX?iU2?mgzo@+L&rf~*PQ_z|H1l1JkQ_TrX0uZ9F}FT0n~L30For_e43`O z0Te|60J1Fa{Hm(10iN*8zZG7~l61F$e<3an@W_RSm<) zvg}lwx~{t|C`l4Tv~3#zL{V(p_Us%WVp*1oqR6s5j^pYK!=P!}vMh(W)ZexWM5HL{ jok;3gTOPmzxF7HdKM4w$-7NIH00000NkvXXu0mjfM9iJ) diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ua.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ua.png deleted file mode 100644 index cc049efe2a4f36ffb323bb03540b0987ac409e90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 653 zcmV;80&@L{P)3poEa@Z!#K8`Nh~T7yf`gljgFi|!f))f(O1HK{&0t-m z^>qkezMx-2P21_~+1|PL=Dd@4-{nz+5d0(z_+k7C{09QY&m@VWSglqc9v&EmNhA`- z$H(eurBX2%4B>G2-^D}|q9~r8o^l+=vaC{ad3mWMoSmITA`y)*XbI$UId$>lGysm{2q9Lh6~OiNwT8flhs^W*E=f^TI-LeE zolXJRY&Llldb)^V7>c6YZub@+3jSP()y9uI(izpv+zW!&A} z@jQQcc&IShY&IMYTP&7ua1e{dip8Ru5d^{S_bbcKIM5mu^50O9&*$g!d9&HvN?R_M z-!SZw$)qGng+gIB^z`(kf7lU1*6X#;=c8%*>gsAM`ttGuU^1EL@1oIYbaZs2B#*~q zWiENWUWda0z-%__9CoQxie=eYET+CzyJjOZ00000NkvXXu0mjfW+5)X diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ub.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ub.png deleted file mode 100644 index 841e8cc19703f08479e5897f3d0129f7312f0db0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 707 zcmV;!0zCbRP)jpdBnt zo$O?xx5I@H{KI^uo9~wQo}1_9oWso_5JK>m`UiikEno`(06`EUk%-sphsJU>5U1^~#i ztoZqS9soFw(*Wppy8z(#`{(@2%S!+_J3CXGolXY;bUNMB(~~4g8v$fl#+fY?3TmI{ zc>pk*&2#Z2Ndf>()1oMDnxarBgc<#QUol@^UKU$pG#b$~{rLE(tp;CTUq+*mAc#O9 zpqL*YA8NpGIAmG&`uZBJ*19&u$yJwHNnI|NqbN%0_1)dwo0}VL0EAGrS~ZzWpP!$K z)9dvBz+^Hhd22Kp4u=C{&d<*^07Ov?27|NNOl`K?Z2$-cgLAo+FFUnfUtf=p zk2#KOwOXrUD2lS%?b^BsE1gcyohcfP&Rq$`Vlf;JFWpY88C!Us&tx(z%eq{y$z)Qm z*DIBZvPzO?9=zV) p-}mOF6((0004`Nkl0zO;EQCEQBbpKnXG2O++!=#K2=Xb<=OSm+Ri`ey4Mu z^PKZJf1dO7n1~2^>JK{002lxn4Tr-{r=#pg->Y7)+wFD$KA%s~`3pd!(U?poX0v%P z7_?d~w!hVCB?!X(e*XzjsZ9yQ$cfa5N=TNKFN~Mx|!1MV$olZ`t^F1y?p-?)VP9~F9t5q>= ze44I#o{z`l?--8bL{U_nXi`yl9S#SF!||cB$*AlMz|VRC?tT@H6iOT100000NkvXX Hu0mjfQi0006pNklMfx^-ckl%Vhw_ zWHKzvN~@2Lj}C`Jz>LS^;{Xi90KjxQ6(?_QZfdofICFP*#{-N;<8c6=&)06Z`7y_F zo6SbA*H^1msj^rs@{C5KaRlJ%>Pi@M9Ean$-|zoSY%-YuAel@`OY(idFibEQ6sDz8 z>2Nr_yu5sN71QZ70L*4HrH%IX_U83^h3R6k0Dw-X^YHK>t9Q9v0HD!mPV57OkXEbZ z^}F3pTAk1501$~pl>Q>=N6<9Qk7KczRG`!80O0!i`b00nFpMCGcsvdOEXzs-qtOTe z+-~<@nH_IF`F#E;fYLKqtyVaWQxqjz4Fm$AP)N4)jhlA6-G0CS{QUg-`nuomWi{LF z_Wu5UI2<1BruBMVth~6mh(@DAdkbN=+XsWe(Pp|MmNtifQwFicviR4UD8 s(_*n?vsr|Ytme-ZKR>+Afd3!x0T->L_LGj*%K!iX07*qoM6N<$g2mA?8UO$Q diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ue.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ue.png deleted file mode 100644 index 69b1f086851cfdf496a42485fd301fa1e05a1599..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 zcmV-60?GY}P)TCHq0TPl?v{rP;J49n#*Lg>l#X8@k(-EMcM)4>>z zMkDe^MN!Dt<#MTKiJk#$Hd`up64%@ zi`i^e6y-&LEXx3JyWP}`#bN<~TCFyjOe9Gv7K@wBhN7q!4_Y#r1b}|OuVx$$hsWc2 zz9|hfIUEiHz+$lgfM&B9i^baQwkV2LtJT=8qDAiYdg?L8Z%7kxJRS)kl}ddCfH6)a z5`*U%0MqI8tqN3) z$Ky;U^N7jia_93|&s>wyhnFNtPN!49-}HUieF1Ol7m!cud$y6`p8x;=07*qoM6N<$ Ef`B>r>i_@% diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uf.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uf.png deleted file mode 100644 index 9fd1e6a1f73ad2c54f5e4f9c399f48732dc3052e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmV-u0+;=XP)f zc#YTG=5bH89A@^+?%CO0Oi>j0N&JBy#;?Fj{M8dQ8jWhT+WCBTxm@XVnjnZb6qHwB z7)FzlN~JV0{eJ&h`U`<2z#1n|eWlAjq=(Y=*B)ZZsODQb|J|4hNUZmCxr1g0NUDlgY&4a9|kr9S?Y(*D%Rs zlH)k#9f1B&p64lwQr^TH0s!Fi`OsLF<@I`9E|(1x5JeGf>E&{fWqG&Tp>CMXW?v`j z?PQC^g3c(zF!TA`=kxjfegGH@2A?*Xx|>i+BoaYPrBX4{14U8d@i@}BUatn2+-x?z zUM~Q2yWIy#k|c&0aPQ7;~HL) zq;NQFz>9`z+-|pO&swb(0MzSs158F!<2b(G?-3(O5=oNN>C~{xE|bZiQj*DJG#X`D z_IA7J?@dh4&rT48;c)15Izyq*yT1zT_v`ro3;YAeCXGC%@$6o_h~P2*FR90Y7XT!2b+5IXPJ=j_5H-lG5q4 zBuVjj96+H^Q1r!Ou`FdJz~|@Z)z#I_%?$va=LsPU!zk}(x7&R_-_z66`hZHM5{X2z z+3dG3&gF6dj7H;RGSNua0`NTVbUGW21|g)~Zhr;HvMfo`{{H^Q$A>J-YXY{nx7}{H zvVMMkRsfHWkAx78WJ!_$a2%(&udlBx%i3(Vd_Mm*?C|i= zY&HX+C`uo|S->P)%v)NoM7DWNnYBd1FVljLf3WXSkDHICvc>G-RR4Vm6 zfMFP%<#0FzgTd`~dv+}r3+(cEJkJ9-j>B2BTJ5zrkw^f5TrL;YrVfV#0E|ZCwToq0 z;>Sb=G@DJFWxZZsxR%Q$c5ODB=K%;IjYb0i-EQ~7KA+EtPjJ^PibNs+Ad|^nJnYKl z@_0N30HsoCv)O2xz8R)csU9A7yWLK&*W-XpCPUNoe!ssC!!_`Fy$=`JVzGq7VS~Yd z8KcqYbUIy!4F&@MNT<_}0jASwuh+xtXf#@@)&AO?%jNJ2&paUF>;q zp=z}X0Lf(1>2&t{ePaCAqiwfZt?YLDWHMn{R-sT3<0YS8$Nvxb2K2o@2QsxxYXATM M07*qoM6N<$f@5XQd*Z8Vjj zZy>R<5X4w&WnrHtP0%N>wG7x;r0_))Svw0!7qGF=QZa>?7!X7W@aTyDMU(!V0{4p0FdBDP)egH>UO)H=V_W|7)Bbcs7?#bPlG!*;uUKA(rf;bybByXy7&bUNjCfFVLityX)q ztk>&Kr=zOsY&M%rCjEY&{Q?KjY&M^{Y}?i}joV=sV87q@dc7ZAmSq7LkH>ETSZM$N z*LAs(f1HC{E(c(>T8SF8R4N7FbUKLwls%nPgqACz3utyAR-P ZT>-WXL*43-sP$cj~qK~yk5MQny8F&a!3!Q?kE_yr7B&Ay-_%qIB4+z|HMFpzOyba&Tr zxo}S!=j@yx=jA^}IOp)w0`S@X0e=c`KA-&p7>1Efrzxd`kWQ!bJpy-Okx0aulF#Rz z(Zk{JAon?dF{Y}j{oHQ1ZH6ESjYgwbELN-4_GF0gT6E(=($gJ$*};ClPo+|v^FpD(IbSRm z&S)Z$06;1AJ|a;RGnotk#+cpc$9HnM+zZZB(=-6VV9@F8^?KoO*v*-`y5&G10AMs4 z-941j^?Get)@uO$e&24lUavQsO<9(AyPZo_x)s`Hvl$MDgb+!RWLf@(B>(?Se;x1! XUiw9ZoiIq600000NkvXXu0mjfoh<07 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uk.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uk.png deleted file mode 100644 index adb3b00ae8019b75416edd3e0f2028ec1cf1f47d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 577 zcmV-H0>1r;P)0005tNkl>6VZUV_{(<3(d%ug@3}zihn>^jIFYhQZ}=(P!=|_CN)Y^q=*;z_6Ga{z~`%i`Ft+R@^-tm+wG}TDi(_w2=LQ3 z9*+@1JkN`w$Z;Hzhr?lg)w6(FttLs*V`Q~jA%p;6I2_Uf>h*f7)%tRYVVKEeLIqeZ zmpYj&6biH{N+c32%ii67zaI<+0YDT*jPdPuqXHa{$H!jCX0y3m?%p|r!N72T1^`Xd z$iEatNvG52^O?j2K>z@r=V<{LW2e&z02Yhoa5&t9v)PP*1wm-H+f;y3sRRJ!a`~@# zBog5`uG{U>oaLkk98MuG{VYHUJq6o6Ux} z`~BWzG6BGJIyKZjHBCJp4*;+%OI(M;QK?h_U^E(i&$u?5&CzJ|F_KIs0if6G8H@jS zw0JzeSS-jz^?JRh)9G-B{ikPO&twq~=L&*#_c^}i$GzD29mS}Yb{ zE3&Gpfj|HNGMS8~X4WPC^-bUUJ+n;hD P00000NkvXXu0mjfjGqDA diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ul.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ul.png deleted file mode 100644 index 9f138ee71d6febb585fc3233651a826de42a1c6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537 zcmV+!0_OdRP)Y%7X~uskL_(w zcn>`7e(yPaw(q(3a4A9vyfePw&G7;JLjcBjzuzN-^cE0(fiW%?i!96D3OSCuTrQf0 zx&YJZG!lu3q9`xh?Y7Lw=ksO(7~{oa!7z+UkH_Nx!1KH&K%)l~MTJ74bULll{eHi^ zYqrUaM&o=w-|MpI^?J<$Hk%Cqbh}-ZE=dvq^m@H!v$@;ti~~511AzH_zFx1Dx*!NN zO(zlwhr?mF+f5x)o6QCQu~>{43T;5WUcdSN762i{?REn|wOTa*&^0P5l?nhH4hJK{ zNY7V{$783{`RpeCf<@tQ7$Nj*w_Gm2sI|QKxlX4u91i>a{^@jjmeXprd_JEMi%O-E zGA)3NHR`^I}O3h%vEuWvQ;%{lYUnK|b$0ukXmVZb-zN8rB|2#3RKYipB}laeI8zP{Go z<>27JZnrxej#8gEQ%ttlq89&Q6-ScWXxuBxm;$`L?Y4B(gMI_G7-`8^77{9=JxhB+pD3WAr_0d zTrOrD3VQOlMcQ+c10H&v>y;W0l=`?_@t}fov@Am`XuPC3-1CV7|B~X>7 zXJ==fot-Rpg=}hS(&nYM2hYyV0vH(?sZ$5xa2UYAz<`R^m1%EpSH`j|kB*MkFSKkn zYcLoN4-bD^7z_Y(oyW(=+2HQ(4nRjoht|f(PtMQJkB*K?r4oPMr>7^~m;g*nOt3+X zYOfM-I-O3ZQ)Th^_y}Neagis>=kD%qmJtdBLHHAai;D}T zJt(-ky4u;~_?-Nn6SR5J}T3uaLmM$+ZPft&YXm@wl z?RJwMa=Bb%V`DOzRPloD$BT$`Q=%@kj>6B+?nmIS@eADw_>(U7=A9dG!{fr zYB0*mlr0No!AO>BHvRz?v$9fFnws@26v;{oODh)2j2TWm~P*u}#DcR;!iGW($YIu~^LG@c>{LMx)Vi97hPLR;vny zB9%&IG8w5<3c&02US}Ya$=2)j{n^-F)%$^D_Wp>rb_aVHmU7?DzZSayea3@$~dW=Z-HP4u=3F zlA{C5idM(taj8_Q)oT2r$z%ecR;v$Ab9#_j(OZedV$1ONa407*qoM6N<$g6twVe*gdg diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uo.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uo.png deleted file mode 100644 index 0340b6d03416fa966c0b2e8970395e09e140558d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmV-k0-^nhP)RQ z<{93^nc925_kPZ8&iURF7-RU&AmNwe1Ng51&1UlrfbK<|+wH~}(=_e(`@LST-EJqz z*OJ38#Ar17zEH2%a~wAq43yUrs*SeYZap4PwOSQLQO=qqNl_G6tCcK>L?ZL~{LK@D z!{PCG{B#N-6pO{=O_IsvPdg|9d_G^jURTZ_7!1mcp+_PNh;w8DO*7 z9tmlyqG&WKYc7|If-Id*13;xx(e{Y|U^1D=58ZB8LAGA60f1o`&0b_OnTo|C0O)i| zj8NTRPNligFvfvEV6j*z2>Sg#00@Gh4IoL<;c#GCw%u+kXW(!+ zve~TC`JV2+-|r0ugZvFG7E3OdTP~O1l^nvTFzrBZ(`aXOu~T1`Hys*yau4=~0ALHsp{ s5V~HkMx)VeHotyl5}!Z258$8U3z7%h*~Ah(EC2ui07*qoM6N<$f-77Gw*UYD diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/up.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/up.png deleted file mode 100644 index f5a1d38d7583f7516237fe38ebb33ecf0a919c43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 685 zcmV;e0#f~nP)SXCIf(vj}Ht$tyX(`d%IL#US2rH`FwUdo%8vew|qVy0K{T33;+O>%VnVm049^^ z%1Wox0H9DP`u%>d*ZVVII-LRlK@eAZB9Q<9wOW0pFBS`qZMWMGhr@SA001tR>r(7? zy8xikXoT%alFVka7{4f=&vT4Ip}>pV?e-?1*=*WuHnCz6ts;lR0RRq%gID(Zy%2Cb z9swX8k7ENUiUNRQv3MWQ>2&U|Cs8912>AW}OXVhjpRiCUgaK$Y8p47T1LSf!j&VAj zFh(E@F#tlyVzB@~y9gRkR0(gCWO(v5J!+d>xH5!d8l3uTmL?YpE*ladq zmnlN%^YfD=N#P`qMkBA+%VRtq&z&Uq0GrL`^7U{yTvgF{JQh1=ep05B$piqDN+rSx zj54KZnmceFb*osf*W3fcFb@F?heMT0wOXy@a{2ealHlG=5keA) TfhFW&00000NkvXXu0mjfCNCx` diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uq.png deleted file mode 100644 index bfb7f505109971e0bd98e5fcdc2f59c943f658d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmV-k0-^nhP)1xPwJ59D%t8j44Rlfr7Uj>SNaE62j_Wd6l(^sUDSi9pj`RE3 zyr)ms`}w?jy7%+kVWKF)C#8Z9>kIgw06`Ew2%sn`9*@5Pz+Q>2!(#sCd0z%eR=z-CBNnM~%P zK{BS}@fZLKg~F4Vt5kNo9ROICRW=7Gm-Tvmxm?OK%w{tHU>K$h(C_!rAs7tG0~`*= z9isrC*XtXN271qf!9WI}(P#j`X0s_?72$B$>2&_?=Al-r6##g>-ghRsTCD=Wa5$9l zSS%Kqd!8&imSz2Zzt88BGMrAQ{eGWHrQX>^48xElDc@o?o7HNy@9d&7UK%i7A zT`m`?X*U{;9LL>mH)Q~H`)~dH{FKY(?RJX{=kpmYiOFOl-{J#6rBaDRA{@u@JYTET z2!fD`CQ`fIMupSq^d-P%v-#`E;czGxi?LWN8jU8C$yTc+isE1}FququjMwXB7)J5; s;HjF;W+)UIjYd)i?E7c;1^l!A04f&oAMt=3b^rhX07*qoM6N<$f(0xQy#N3J diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ur.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ur.png deleted file mode 100644 index 959804cd94498599d5e680a83343f22cf101af42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 690 zcmV;j0!{siP)C|xP*|aVuMRwK?SD-g`x&+OrlLUH)&N|BLasUT$FSWL{V~yP{9cNKspT< z1+9sPhX+ArG#XuGtyb&q?(Sck5Yg&fI-Nc|Je*FaMAYy1tyU}7D4)+0k<;mX zdwV0I=jUgRm&;`l0@Z32!0YQP9~zBD02+-7TYcDsDo zZnwF^CX-1%x7+Oi4h|0P@9!TUAD6qWFj=8cFbs2abi{``oo;`BAAnY?<@2+%GlfFY z>-9c9J{%6mk4$d0T3pKIa`Cy_?FJB!$N4ZGkEhdV(I#JCUvnCbMq>d_Pfr2d-Q97o zg+jq#FmP^*79b*%$poO)Y6%1)k%+}&;m_dYTZym7C;$Ke07*qoM6N<$f*$-arvLx| diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/us.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/us.png deleted file mode 100644 index 1d77b1d70537a413d909b19e7f4c6b201bc15c9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 674 zcmV;T0$u%yP)!KYxCHIF6fP{C_c-t_hL6$*vs%kc2lQ`T2QwcXxk(-)uHNK0c0*j}wW6R;yLfrqO5=0MGM;kb1o? zd(t%R^?E6a`ZtK#Y+jbZVr;+P2QVIw0Wb_xDwRAQkI`tfTCE(%Rjbvvw>P>^5xVQkYzrU|y7KOuM0FopX z3Wc?Ry}dmEE|*K)EHW4j0CsnG*On-s&##EH)NpfiBcI^l;9xbtrQL4la=BnISSS=W85Q&5dEV)C z{&jNddTAHJ!C5UK@K&Z(v2pY06Y6^ld3~~q}?>qP+eSP_U zEQrb&{N&1RR&<$ArQX*!)w=W;p6EZ9M-)v8b^+?a-8a2$u9 zkz)n5S`8s|W5(n0PN(x+8#$3#mL*AYyWQH3EXxEz7>4mw1&&>m$z(2<3(xbm(`+^g zf@rl`uc-iITr3u^m!(q4+A^EX9|7V$3X~% zuBTkx?{`U(w%aWsB;eZb_bh_%`( z5&-1$`Tt*XDwSe`>2w+f5VkVGCD-e90O8C5j82utCl^7AM zC>eB7EH0ug>Sp^79O~3DgLKrTljH}u2wKpgwP=SrxCo+F2zBd{PQ{8&4kc=cwa}qL z#k}D{$V;P`_g<&hv*mo}ekbQ9-{oSGB*AyW0N;!sga5z)-%#uK`=wHe=XtN!%PsH~@&p<0`Sk;m~ccx3~BB_^2YUudh!| zPHlgY&Gc3)jxJv=<5)9KyaU1SrDM#tmvZ|ec_`Mk6q+6m6i z&Qwe;my^@PVzF|$T&-4v!63(R(nf%!2Moi=X^xMNQQXZ-us^tX&FAx-ogI=Sw-IAM eH@hE$zs4`LQ9?CPO?xW<00009d!Cv9%+EIJ$x8nC&!$$CSfkXEa$R4SCj<8hTr1)#01Egp|cMw1FeqfwX36^%y2;jqDA zAR1d+Tf}RzSP0SU^^HbD6vaRwFf=se^ZDq6dU|@6mzNI?4ip4pvDoC~BungeJL&fL z_&72$Qm@wqK_FyycGmCrpPru5V4mlRYhq$Tc?AFjL6EKy0HD+9-rn8_86O`fFq6qh zg7f*j#bQz3qFgQqz-Tl|`YbFg0O;@Ur=(OW(Pgobl}d%U22cyx3G zz+f=2u)VzrrG05nfE>sZ^>^C|Iplp68pJn-za(+~39PPvG|p Z{0IIo#$xdaS+M{B002ovPDHLkV1kyLgsA`k diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ux.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ux.png deleted file mode 100644 index e87b75546c5db940206bcf3b68534f1875d8b56b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 575 zcmV-F0>J%=P)uo$d1!D5J&1Umt*EFqOufHZxOHHTKdt^47z1v5l zk!hSvCe|6O0JGT)Kqiy%csyph(P%^|?e%)1C~_P}2ywgJk|d4CW7~lBdR;D;@5fXs z1wasl&1O@nR4Ap_>opJv0LbU_*Xz|V410ifyZsyr00@V}kH+Ki`1ck)DVD#< zj%-|0pU(#%nM{7_9q>F4AR3L@0ubwUz1?n`%_hSzx~}i{ds&tfi3H2C01U(EbUKkp z#2Ua@yA?%gG#a|Da~vm%qAbhRYW3&m$LVw`it;l1>xcHJQmF($lB7=!`FuVD*zI*P2_x}r6tyYCX;eJdc5~tIN zQYwm~S@&QtFkPCaJ+7>`0II5*Swf*uJRawHURBlmF7x~Sgb*{p>-DlM`{;eQf>x^q zz~OLoyWJ<(?RJaBVkRJ$%e`z7`P;|qa=EzOZkNmT-&OJbReS+&=oc8(vHp)XKpFr5 N002ovPDHLkV1lty0%-sM diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uy.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uy.png deleted file mode 100644 index b51e8ee870f14ae9c5f76bc8060982c49f44225f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 zcmV;{0xA88P)D~4L5UKq#2?rhwGhNK5i7eO3W8QC0?|eV(aK7j!$y>p`2*BKPOuQM5lLYo7HVQZ zMBP^$EXR2o&%6|m_omwY=G*&rZf16uhY*6FG(P;W{UZX4#bP?0o~VEhS}vCpi9{6B zU@(kEqwRK!y(CGVpPxIO&I4cAE3jNH^?H3Y8cn5A_xJYzz~k`*0>Q_}2So^lLKFx9 z*VotY@9*3M#A5N=+Z&#CyIm>{x7&>nayT57N@X^isnu#qMyJzp5O{ie+WmXkY?jh+ zxm>H&3gcH-SCj?^fxEjq07#`$Of~=j)M_<4ND#ziGnvdLs}Yy<$%ZnptoyWKV#4f<{X;Ns$f zK^6*yr}Tl}?`IG^9uMmhsZ_czf)Ol*-zB$-Syz*4DXx7!adJW8NYC{Vj;wOSaA zMx)_y_{+6N3G{kB9I;F$yS%)-xw#=p@|d;X&B6bd-CrQ^8@v^NgnoT@#sB~S07*qo IM6N<$f)?32CjbBd diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uz.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uz.png deleted file mode 100644 index 58ee470185ca5a4a093d49efdd61cb7a1aeda038..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 527 zcmV+q0`UEbP)i7FzuUFHwVzC$q1g`NV5()NqKnU4xw`Q}MCI$z*z6oo`GutJSKi>Tb6aMKKr*x?HYUEOs~?SPuRFAFsa+_yum;F=?GK RBK-gW002ovPDHLkV1ke7;;sMy diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/v.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/v.png deleted file mode 100644 index 3aed0031cacf3ad6303d9435a42333a56835ca9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423 zcmV;Y0a*TtP)HQ0003-Nkl2XiY`I*%Hn-pJTLCR28jVJ->jJpn?@5xJ&u8EFpU0992ri-I5kxZQ3X0PH=VPN&V{WHJGuCSyk2d?FK|q?2?1_4$?GbeJF}@ zxm*Bvo<|7T?RFfJ%(PywUw+dxx7#i4EOhkQwhh3tEc&K|;a4#L2Eac6d;!#^)mRhK RsI&k8002ovPDHLkV1k@huzdgk diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/w.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/w.png deleted file mode 100644 index 008b3613484ed1bbb12f6f0be6630cdcced5fe67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 496 zcmVD^E~!LB2r@DPPACWk0Sbu7ah&`89+cpEy;dp}S(bwmXqt9B9>uWV?{~Z1mpP3_ zV>+FFG0<;Wtya9+Y&MCgUa#|^q9~)$h=>-8MJyKMFrUxQ=X3H1yb8Ho4nQ;-t<`F# zY4&VI6ccs%Y~AW4!}$#ER?K`SQKP17ywwW*S=4YVHkY5 za=H8>0FcRKX0zFDw@W6I!{Ly;gAcV*sRUrTTnchH9G<(O>pFeQCjn#3vaEM*+jghZ mab1`G5Gnj^2?e1bc)XK6{w}RaGJ4d*3X}@;uixttg5`FB4!=9LE4)nkMpyqsY_LQdM>9gU@Q3 zW-Wjyia!C1&j|%8L6?wnkmt|?&c9JB0-}BvT#*r+-9Q%L7F>a@z&)hR0;WnSxCKdRs(1NT)W-wa{{Z<;c%GG=c02ypP96(0qu5M*Y&b2DW#0D<#GwY z^E^pR1>kf#0njvUu~=L#m*H?|+ctLq?Du;G6>K&ezT$el=1vqvhG768geU+Uk4FIA zZdWv?(G3@dZ<{bhSnktYw&k#r%h>b`DAt-jPbBl!(w^}b7xP_-%+1YP) z&d#7hMEIsud|4A<0{l|fb-Uf}`FxIuAz|HaH(l2iMFDWRTm+*;0jJX`48tTz=JWZe z%!Kwa#?mw;qG1^FJO{AdZUq6#*ipe4GfngLdVT8^`MxiH`Z$xju3N2E08G<791fCA zCZgl<=y~2Jv;BTA8Nl^;JUAc-0+IddsA8678AZ|cdIeBbm1Gavw&hvZbq!#%*~q*> z-}hk{p3i3h!!Q6a3_~PP7X&zt!z%-TPYcVkr1e1@$EvC>77M;CiUNS^x^g^dng+mZ zHv4>u<5<(Qs;cBXQ^puC%W}EQvMkSY+qU2Dx6DSn-|rtw*X#ADz7ZOBM8u8#gOusV dYXba#zz?JukpQNi4>JG&002ovPDHLkV1j`sxL*JO diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/alpha.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/alpha.png deleted file mode 100644 index 91907f256e28c86774b8ce4260234f5ca0cdac6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr+J*eybgy1C)S5pFCY0Lp+YZof_MFL_y&A@^l87EkXqsyjCz51aMAe;G5te z8^Hd6K}LkVm|w+r^K9LmZ)Q8$|K;=e)O}_x>EO73g})|}_W}d&2YE)rW82S_f6bp5 zq;<^Vd~wgk>h)7jeVZb*^vhD|Yn{dCEcfeez1ESjw)EUxi!jC>!uukEXvwJb*O{oif5P948( jc71zk?!au~5V?QZ$tOLDJd2ruzGv`s^>bP0l+XkKZViHX diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/beta.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/beta.png deleted file mode 100644 index 95edb82f59d4cda867805b03112ad4ba60a4a6a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmV-^0fGLBP)l)Gp-GMO%A;cK_-FpS< zg)(r?mD7zeZQGs(Ii=JzO<8izl~SOkLB6Au(t9tZWQ$MNBb5P}eL8e~F98Q>UW+qTx) za}2!qLWp^u@1@qd?|b<4ob&fn0K+gKgw}OUDKW;N`2sR{NWcMo^uh@tV2ochsIEV| c%iv|*0PbkToCs2G7ytkO07*qoM6N<$f=QE}8UO$Q diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/chi.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/chi.png deleted file mode 100644 index 2c5f2f28f499555ec79523d8adf36a3b5c09f88d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr+J*Ii|xJr`G_5zI(bjhIkx*JMCa$gMx_5^pFJh04CW8rl`iU1kPy=oHrPw z8cQ5FZyj9DTvTxEqzb#jMejCSrr+|LKS)OO2!{ccp$2}zxsWzp=Y&Jfw$(;DO#)I*bI&_C@3k-dTx0+ z6v$vWCb713-)aVd7&<8Oc0eSa`tNompiMxMh8OH0l@y%YXzcl^<> oES!pyv?Kp+3vpoG!~cV&{H|x;clM?4fI-0E>FVdQ&MBb@08S~0mjD0& diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/delta.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/delta.png deleted file mode 100644 index 847f5c1469dbb348de397f17e25dd88cfaaf9779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr+J*QIRVg%gum7FFaiwLp+YZowkwphysu6*_T!6%_+<`8hR!PZgK=cHxDxd z=?6X&1SJ}^CkWhaJR++8Q9C%|{*Rj+5BIjmzhboyGtOYEPxzqcYjBK1Q6Nw=^grA0 zeasAky^kdxz5k>dHBFV}+|DyojF>f->W4&jPYHUxYnr3B*7M4F2NdjGpV(i&UTSD; zeE+-boUD5fEc$Y9@A>Y+!tlKET8ocM)a!~jzwP>hWlwyz@xLt6f7l?Tjfdgo18>dj zZ6~5;Uwb&m`N*m6whqm=H4Ho13R~7}je7m(6Zf}`sfJr+J*Q6n~1rPDy66`n4RAs)xyPCdxWDk#u){F&$i=3pk-7Y^K37n_8pEMT^} z(8TxRfVIcH(wl2epRQ3CI{92)`0z1_f=S$b&P+lR9>}xIUwc`xWlr&XS;4*E^|{w< zy}VI8am~Xy!cIN4Hy)LrwG8*lT>Jc*<@dCvATEX_Q{+^3h^^;m=%`rbD;UTTm|c5m zdADb<*RdJbZpEyh-o5txlc?+-L7>9@*Y~wvyr9m==}~ZAyy$?robndyJwP`zc)I$z JtaD0e0suLQU(x^o diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/eta.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/eta.png deleted file mode 100644 index 206d0142761401395213686294b78561c25d17ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr+J*F_oKtjzj{5u6epRhIkx*JIzvuoQ#(+U6^Q77k1n4D22mGFyZm zEwDHtH{)jF4Q5UI?fasQUe@@=ExYXH^1!$DL8_<&qez3$hIOy)Ql6fYS;cAEWFPxdo8Ygrp4lCPKgUe5U`vAE1_R&P&BSv!p~v!ri~3bD!HLCr@=A{;XaC~A(Oz!5Be~&J^OQ@QbguJU zm{nsSBlz{}&HTW5jFD&K3?7{7SeAKe)%sKWS1@of?2GxvroTPO(FEv222WQ%mvv4F FO#tELb(;VH diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/gamma.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/gamma.png deleted file mode 100644 index 97a09a08c45a6c7f9ce729f9de7844ed8af47eb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr+J*5yLidCj+3+IZqeI5Rc<;ryb;NRp4>BXyM@gf+LSX`h`Z$A&y;)ISjK8 zu$3|YYdkXH56i@sBh2qps$MKUYUX3;c5U*^(lm~?1P(hD4n-5GN5aPo85ojz1owWg zv7vs6SpAbU_BRu$MN-N?tPjqmHcY+c8-pW```PTN@K14iVp8Mo3HP{aWU}0 yoY%LNlvd4IFTPtt{l4o|pT`ePS?-JfVc6d5@OtBxC(1ydF?hQAxvX`sfJr+J*aoPEgY6XBoGd*1#Lp+YZy>?KrMUaOz;onWB5(oAY2TrdGlCl|!vKJU- zFEsAmx$exG(|Px7KcC#q5ud$rcIAzy0uBs}^_*uc^_etP-~V-GV3-oLW2(4X(5X4b zSuBiGf+UiYc|<-e__gsGmttP%lC6D)?{fFW1ZL-czZ`Y@((ye3uelT%7JQd;vXFWB te7+sSm8iMJ$7XysFWjZYq40pc!CZ%@?;*QSp(N0e44$rjF6*2UngG06R~P^Q diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/kappa.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/kappa.png deleted file mode 100644 index 7a8571dd2749b7e6bbc3c1969576a2e0aff20a03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr+J*ann`dS6=~z&U?BzhIkx*d+j1;ivbVY0}XQrGY_`{7Wb1JeGk}nHQqcR zYUN~}F?T`Ug=&o{&CI$h^vnOwU-IGiMYkosJ%aOmxcQeeiLN;CpYiuTdyW-Z_rFI5 zg}Tgn{&UAyE%qM6*z1f9TdzfFE8VLWw9GSox<5Nj?zo_!pke+~n~gf>EEyD(1Pzb1 z2yk^TJ+Mi~MI@O=(dV*@%ekGClA`SzN_09bc$ke>XGQIQu6@eEPwoeA!}q$|+x#15 yUcP<#@Kwd-#sA|XuYcWg`%1JctJVkR1JZR?Zf_2ng#8D4jlt8^&t;ucLK6V69dly< diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/lambda.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/lambda.png deleted file mode 100644 index b619ecd3dcc1a19882a61eb13d65f76104b3f25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr+J*2~n|yFW&-%u6VjQhIkx*d(Dxz#Xx}dLZaw{1*HspT`V#^EGh~Mg&0_Q zxh5D`tY|rS@J*sHA2+*N=JyRR?aeadKdbvjb#gp8!)>&jf%S*1!THTw%kGzNRp@W- zh`ruv#HG-}z+iYRrlCV3dC&J%y1Nv=*Y4NxUMJbXA($D>^!7rJ;bDU(t6o_2?OJ!e z^lXrzvGSvBxeN|2o!Uuh&t;6eJuaJ^k8XOteE#-t_oA~WGoHD#?X8LLbFUsj1}6^A zhVw5UThy(!elB3hTkyN2^Tn!r%e3})F^N3jZ!njT|Kyim+jAG_KL$@%KbLh*2~7Y6 ClyWry diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/mu.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/mu.png deleted file mode 100644 index 016d4642008c5a2eea36b59f2d63c38f85160b10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr+J*Nk-8Go{K=CE1oWnAs)xyPCLlks=(8Bk+p<5fl0P8@Q#c5O6eU=cMtGJ zsUP62U>9<}cd*@N$H)7(mi%=3FP1THcQyv&`OkO0-+jM1HL}OB_P%kkhp+ifX$P0jHp~rMuc<5h=GE;xdD-OW zwkf-`;(BVFy5oFPPRT`NZ_h2RU$OH4BCZt-9~mnjG9O*zwR;B8e+-_kelF{r5}E*X C7ICBi diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/nu.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/nu.png deleted file mode 100644 index 0f00fc4117d938236eb5eb6c32ba21c43106016f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr+J*Nlk^TOSFMP`#fD7Lp+YZofgP@M1iMmcd!Bb0|u1`ESx@EdDK?)oo4^}xj>hbTkzoIs)L7THE_;ouxGv!r9bo9t-ZYxT#6iu zEdtM%Y`tb#{yLSht4?al41++Y8B8cek$FOc2krFm>d^83B-UvDtfU7E2rI{WrEMu(n{&Fu$r4g^lS$F?t`VUDrVrSPa{ g>ywz&9zopr0LF!Ac>n+a diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/omega.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/omega.png deleted file mode 100644 index 3c0220f4d0cd21495d0de45a33d6a0f5b87e0024..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr+J*Im;qtr4FFbB~KT}5Rc<;r(Wc3HsEp5k7ejTz}CVm(a3v(Bj*6e0hJ0C zw*=-*jtNa)^tp1cY*|_pa_VpFnjews-eT9HVpdA)g)yl(F#TanxV=rD;nudRQTF?_ zm!8^W!+jx2IB?!`M+bqL3B4;{TP62we!c70)n%D+_4V3HN=2R8OaDxo@+rqE@*TmORda8%JJ)@8U`sfJr+J*DTN{xe;=UGNlzEY5Rc<;r*7nJG2n4M+$raFg3Z9mtbx~tD@W+Y0cjQG z11uleDw<;og}O2d7%z$bi`|#B*F%5O>N%S$jpaWVi7a4X{iED4b7o}S{%P^9E-oeK z1O)|kPb*2C-o$Xgfahu9EVYvfx;4Ldtvg;gr+2H_u^%&FVdQ&MBb@0DdiS$N&HU diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/phi.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/phi.png deleted file mode 100644 index 5b6fc9e50b7ea1a2a986346a8321bca119f08884..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnEOP)?=nRCuv*TopCxpjc|UMW@L7^C;T#MatrnyTq_55{qv=Xo#GUKU}eKB_&lZJROX zbpjAk;`sfJr+J*DdTUm_$C2`Hha1_hIkx*d(Dyeu!0EN10&W44?I_}%-ON2!?zV0>ChFoa|2E~^6#vm@i$n2$46k96iS=&#XQWSgr{M0FzCaBGS9(h`xrQ6>xP&~a!BKg&g>iZR|mSwIk)_eYEmfZ1+d>sEm4GtWTXYjAS X^F`x~V8{`m^BFu{{an^LB{Ts5skUmE diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/psi.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/psi.png deleted file mode 100644 index 92054d2b8e0b687eed39d9c0ff6a64c4813f7fc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRuVP)_AGm9e@=`2bRF?KssO_Ovq&1tUuArZsK{=8&2Z)0X|Yn>`K1a#oU5h z@FPUzy}wZ4y|1e3LP3m?bN;U~h%vqf007J92L(igh{l+z#QmQOVB04T0qPZ>3xn*rQ=TgemIz4}R2LJ#-M19|f5Z(fq2TlmtdoP5T z*UACR-|95M>!NuFAflA=1OWgntKyu?))mqk(=-Vo5HW;ctqmb)t;cap+h7~#hGD4d zT5D~sO?zP5N4u^|`}s5X!P^el&ST?$(XJ!WfCH2?qr diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/rho.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/rho.png deleted file mode 100644 index 48cc456e69b154f92b63299cd8a3ed8376448c3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr+J*Y2hpH<)wi_&pllnLp+YZopzA7MM1!|aC7-f2k#BcFI}uI2)%KzVzA!8 ze4J|ovzLTb0>8?!ikpVo(|P~1s2omy=HH;yav`sfJr+J*83Cr{H`0JY`#oJ8Lp+YZo$4sqV!-2i*)%|=q1kH%%K=8A2@TC2D_CAF zC=HMaaZ*Xi=h@w!EBRnc7dU$6gNlBIgkXmQ%YT&)!@kEW>}D=oSu+vR%>zxc|~O_-4b3~%CRsgU|q(%=c$pimff8E_-B@@3k!qgbNQ1? zyPP=U=NFud%zi)TV4#D`u^Ce?&1G_NaY;L8`MtLORcTt7sdeRTv-h>vOAi~&nQhQ8 hX{kPwV8?`sfJr+J*8STw$44r^N^E_P~Lp+YZo$AZ$tjN=lcvH3@fYZZ)NvME9XhIW<$^#ae zhURx$RINYmvhjOeuJ`lTbS1&SIZqV%4l{{ucrc$uQ#HBg&oRsLeud{e413F6dJG@U zzIN-|+hXaB*O(dvngo)17H(DB>M`kDsitf8+r9RtPoh?Doo1H0=ggd7%~lr<(Jj|b zyqp{rlD&7+^e4K%9_;p902??0Zomk-fw%!1;0EXfxB+b7cOW6&>`V0WVo#Q|`L(5gERN$qPud4PY%kyi z{3u{uS9oyom6EmAF-A)1vMl2`f^rV9P1D3VPv1?`IOiZ)P(TQQ5E4R2F6Ue+1xbY7 zLEra`v9c_a8)F0}{y~EFeV^yqIhRl108j_U7>sdU*ZE}IHcIJj9T;PZqG;RpTs~v$ zwk<*k4a1OKr4%6qxE=DkMd{h7dUC@ZltbK6YAbgpd#-i}{h)^!=l~fZqiC13}EH*U&1Q Qf&c&j07*qoM6N<$g7GYweE`sfJr+J*SswnqTQh({*F9YvLp+YZoqCb8#ek=6@txh02YFwySv4u|=(K9gd%$(` zK;8oB8N8Qxi}+bJk2|&o?`W^f|EpQ!DV(uv)dv+z8y_JRN1;Cx4_J!(?)%hrFCi^k z*O>W$0gv6B=an+!*yLp`nZnf~LO3&pIUJ>R%nW z&dqSVu;rnNuX)J>MWtk)$Y~E-1V3)m-E^(ahC{G4wtO~&;Nhz8wfwtxCbHe$CYkKw z5_-M#Yjx?wH;?9@IpgwVPWJ6<@2|RU`tnlU5$K*d=GK{>55Bae=K;OQ;OXk;vd$@? F2>=WTb|nA+ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/xi.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/xi.png deleted file mode 100644 index a00c3829d177de5ea599de8145998680341975ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#`ZP);Ouz153aXumVev4x|I@fa!oecyY6r!DzAv-+AB<|4$}VIcK<&7u?Jv@Cf`e zj$={%yHp^A;G7deAY#{bSH2*Gpp@D#_1+61NXIgb7$akBp66T$RbUtf&Ur3}YSFfB zR8PLCh|4a7(6;R~O^h)B;G7fns8b|_FvhIw3IL3;x~{2Dp!k?l(psmKPGmq5&|1eB z^C^JRzLYYboVzQ7J>-3U`o1s91L&nGC2K9`8~~POxnAHn zRMuKzalyLw-XmhuGyq_XxiaLVOLTK~s^{bN2>idm2WA<@_K>}J`Tzg`07*qoM6N<$ Ef>>6QCjbBd diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/zeta.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/zeta.png deleted file mode 100644 index 683d9bca83ea455961ba22637f470c94fb8b68c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr+J*F@YZ*25*2u4?SHRLp+YZoqABPMS;h)`SIN;4(!tsIBzuS-e^?yV2@yu zox!(-`7MKW0)I^Tv6jehN9@}x=joYWH##48fU8gd{!_jZ_AL&vo!rAHHvFub=F zR8$hoTpRy9dZp$0&k@x`e2krFVC&lgvNBYVn*QLB{=k?Mj(9zw>%L`z)W= z@q2J7>YQd`ICH`AOwj%BXHJGiE!7nMY-8Nt@p$sLsliufHvD=Se&9c&yxc}!mD)Y4 RS%98p@O1TaS?83{1OUL+e6s)m diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/digamma.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/digamma.png deleted file mode 100644 index b9ab6f1448fe0eba3714206132e00a1b3ce0d9ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJytG3HVXyDye&YX_nt0}As)xyPBY|cF%WP)z9S<$IX(BGU`xWvh*jdB<+4_8 zo9EiEu<>+`;D(4YLqqGi`=ur|`aki{X=v`pHIKhP5(t7{1lUPkU;^f7rlt(tgP$nOZFt+b2)?6#nRp0=HsF^zCgG z-aR4*OjA~~yy)>zU9c{DkG9+NhS%aHvCFHjm8w=AH1TD4@Oz)smH*;=&+nARuKvkj gasK=}!wuJ@mv=CH?bq741L$=IPgg&ebxsLQ0Nv4qe*gdg diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varepsilon.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varepsilon.png deleted file mode 100644 index 2f3ae9c94835bd79f04304c5b68e39be5c712940..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmV--0f_#IP)uuX0 zgni%7^DIfy3tu=aqT@JqUEk%wx~>R<&@_G5B*$?q%ksZZZQEW`B8Fl926bKUy6#Mg zj#q{6`w&9IFj$ryhM}seq9~#$!g2hvHl3y^48yW4F$_~xRnxSK=ioUw58wfOrXNec V1jITqZ8rb_002ovPDHLkV1k|AnsNXD diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varkappa.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varkappa.png deleted file mode 100644 index ddc85a22758f76099117875787aeeacbbb86e3b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 446 zcmV;v0YUzWP)Ska)hV*Q@2>e>&Vh z_x%3%4ENp!BEly{!G~1?YCsKm2H?8xXf*2edQlXW-7L#wS*B?^&-0)6W2H>f1OSSn z0ARb_esdkiAx#X!xYwZyu-ol8jtj#O5p`Y9^SrRKER!S&0GiEa5Cj!XssNYE<$Ar6 zdN>>w>#Nm@1m}4k9|`aYrD>|FDk2__N0wzt@NTzzKA+zMn9XKMl312Sf@_)<$8p8n ze+>{tvET0l0K+h3;*-hbbUM8UpePCnKA+Ev#lc{JNKB#9shx50@#&s!`Oq#lpQ zhr{6&fNk65;6&^7y3^@!90vf?>GYKo?Du;BXt&$G@0Z=pW&;4NR%^LjJ{(cw-lLzU oDNWOVzl$36uc8LjfPVn^0$XNCsPaLfKL7v#07*qoM6N<$f^&wulK=n! diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varphi.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varphi.png deleted file mode 100644 index a198b26921f9af5f8e825491313443f073105e4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 zcmV+j0{8uiP)&zuW&dV7K=qZq0{Ne zvK$VF+3!Ip6slAzhrT5M`_aR@{R92}yymOg{6et`x-aB*l6YKsJM2pSc1Zp!pFJcuy0e9-dn zO!xlJx#xGd_Z+woAq2i@Kj6z&0V+TR0H9Xj+wFE3hJBa_$8n0HG8`z&Ow;^Bv6-oA zuR({yVKSN6w%uyASeDf^?RL8r}_PA5&%Qb#VA3y$OEE)F3ypUv>+g-F|FURjt?SaU8QOyI!v!I>Rul)vCC`a^C<#*y(h5o^Lc7&1Td0{Uk{?n+*V9 zI2>{u2LO;H>1_w+0$kS}jYfmPKv9%uT~U-?uQwi#P1F2jL}2x+r~nn<9{}z^`f5pB S+iC~^0000yXdAO?fYZZY~3Z2kt5QR5baANUa#1PvC8$Ql$4yC#_z1X-Dl^Pd8cD^;9Z#I2`Oquh$z422A}&y+XBGozLgtaQJpy zEEWJXO=EmO^b9;6PbQPmG_6vpM59qc$mMeJ`~9r5<+1*1wYtrQr-RZ(r_*V(*}O7M zU5}T(Wm$nhpja#>lS#MR4L}sdL?V&T=bb4LA!IZf<#IVe5F(LCEEbbxnd7+ec+6NL t*Aw5C^Z9(eUPV!KphVxD{1x~JfgheZ2g)B9vbq2O002ovPDHLkV1lld(=Px3 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varsigma.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varsigma.png deleted file mode 100644 index a5409dd4b923662dd2b59335466910ad94a801dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmV-u0hj)XP)$-|GIHoMif*|+^3L%tA%Yw5~FF8$9-}i5HQQ!Ac%JVi-_UL&YV~lftZbWLpIF1M*jB%dlw*Ua3 zZChQ}5kjVE)^&Y7005+vVHm!r>Nw8zfVb9lwQUJ^otJ$A3yp+ z2ui6Cf-!d7xL?#V3`1F#`@YZf3;-D8i#vEO+5>n1XY~iin5?d03g37D0000)m9~P|q!0^>*w~4URdg+FMeqlRU>B_=)?yd@_ybmoc9wz?D-A*2D})$4xFlYL zJ8+6+XLgroVdmW(hEj@mngegP58!_S*6TGPq|s=Y+D$E*D2nZNn^HQT&sml=+;0tV zI-Lk1kHf%zzqb=mtJM@m(Oj?BI~)#wK4L8g$K%oIbUqU3aI97FjjIZmD+4Jnw!mLd%a#F zkua-%!z=7|JD1DF^Za-`<~U9e1WOMvW7ro_N*RV(E|-VHA)QWJ{r;FwE5!5h(ZYSJii)CM2L7y z4Yby85v7z;>X;gQoDGP$EKAeaXgPjLsg5(o>YLU23y@MGBF;Gx)m<%wkWxD5KH{JH vr^t-4$9SlvwSE|I`sfJr)605#|q~NlSo2Pd!~6Lp+YZopzSDMM0po@bO(C9Y*U5Ld%4sHZZ?su)e@| zge%SK0@obAH2&E$&gLl{nR-}lkMKiv`44jTGdotys9JHttAXVQvqRlI8=mIkyxZG$ zt?TznV{2HJ*~Ibavdwwxyl2|hTGnTFAr24nC>i8=j8L8 Up%mI$1N1P1r>mdKI;Vst0Mej%D*ylh diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/chi.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/chi.png deleted file mode 100644 index 774804af196fa73fe550b41b349f228a05914a47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9iTP)xtPjX9AaGvDy%pM)18l5fTj`Epc1 z1yn#5V6Bx>c3r2G+P3Y?kK@>Nos@E(=L`XJ0RWUz=iHw>=NtgC<#_-idhaQvF~&3F zoGa;G3P8lZ?}ZS@ImYO{FDxtt06^Qe#uxy&%Jl#M5km-s5Uq8gIJW_aI1Gaj;uhe> z9_;(h7y|%n?Ttk!pXHD~#z+VWAv`RR_x`l0G3I#6V}Pr3IOj^K#{gGf9zvCD1Nl7o zx~@{nt8-FHjIpL^mSssPeQ5HVwSd<8->YewN=)>s|Dp=00P+R~;PtZ(vR)ei0000< KMNUMnLSTY`>5%>a diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/delta.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/delta.png deleted file mode 100644 index c3baf6253586ab872c62ccae51d725760af5ec11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr)60QQH+ErtnLZT zn;dT*s5UU1{`t$QRz> zeDa>nt%l21t(wmeef)X%k57}fUQ3O9r^BJhaNy2jzU^I8f;bw3k4L>;doJ)vzBgOS cfxivv)3@@Ll`s9w4D>dGr>mdKI;Vst07XcFvj6}9 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/epsilon.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/epsilon.png deleted file mode 100644 index c8f85ef3fbef563dd92dd43417f489a61ac84ecb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr)60QRDO1lRbe#_dH!3Lp+YZofgR3svy#KQL=%C)Y_ddHs^0(UZ z$NS#TU-m+X!RK;|K-4tVWyUWxFGU4=$oDfibtFuf zm7uY7%JWJu&FiIKU(flRd%J1&ig)#*b+78B-raA|Z20s*#DQ_oLjEp4rj6MtlRJPu OW$<+Mb6Mw<&;$Stw0uPX diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/eta.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/eta.png deleted file mode 100644 index c02a78af3eeba4366aa30e51fb4c7732fd6d6e76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr)60ap7bAip)Tv6`n4RAs)xyPP@o?SV5poe<`y?lk$$nzDc|>2YF>2-FMzT zAUKKl49oTQ2A11wnkT(?{(t#{#eTy4!<{o9p0j!ItiyptiJ@Yiy#DD)#d=E_8Vu9s zrLX`sfJr)605veJ4r&54I^E_P~Lp+YZopzCzS&^gd{Vcu*Y?}^lY}DS_sQiMXPf6LL zv1ftsh4$)~v)^tt%RKboh2shL1p7qsiMdPjZYOCvFxE5d@YkMU`8>wU@R-7*nQ!)9 zkLrKyq3QeUsj202Cyw(oug%(8cB`V+mEpnO_-baClxM9B3_lJ{v}ajyQRD-+!~3}% z$0S@_T!PbMKQ?w8kvRY0E@xS7w8(;nuMO`sfJr)603BxJnH5x#nI!_nJ5Rc<;uQ~F%DDtpe*c8d=;lRX~#mXLW=#<3@mI4Ef z2lv0l@crN5`P}W$6V(uzBzHRokw4X|8*=)AN07 z=z6Vk|0%_N@gfck^*j?;7!ua9HZ0jZV@@`=r}1yu?6v1MPE6A0QedcLP_}JT%$e+X Q59ksGPgg&ebxsLQ00I<9GXMYp diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/kappa.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/kappa.png deleted file mode 100644 index 44aa91f3c746c532ba9456a24e136b884d30a70d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9iTP) z&paum^mU1d-uro;i`+rVZj32%$(OQUCP2i#@1>MQWSVM!JRVx>3q|Ft$T^q9(=^RA zO-CMb34{>OrE`u_`lmn>a$CeXf7-^Fwrw*T_2H=S-iHuMy#qoBW6WBswMN8$5g;M} z?E4M?0PvcQbB>6^FaW^k!!F6pIhTyn@CYIN^q+96|DsAz3CK6h(rgg`c1n8y0000< KMNUMnLSTY}Op-zX diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/lambda.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/lambda.png deleted file mode 100644 index cf67ea5de45ba58bbf2a9fc0fbcfc1b490b9ed33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr)60N!97wW{LoX9(%ethIkx*JMAFvVFeynPT`8?4UQ6u(g!+n5{w*gFqkPw z&)|K*sM%Gt;?cGh;{Q%=GKl~G^U=y{T2)?M=cL#UKj3FOUig7cEBLd`=6j!c1Oho4 zJI=eSOz$^5R((I4ogrcE-EC`6^9dL}_i@qjnsn4%la&EPFBi4((y?2c7C1@AE?p$q zhvVV&4nI5J*SqYNeo;y5F+5iB_Q{-9f$h(pckKBd^*Y;KbE{5w@w?kBE>Gq#H`LzG zpSfl$gMgF5B6EA6_v^cYyu4PveITW@G{h@&>$P9o7Oq}axQ(Yd@xuKFtoKwx`1z~3 R`GMYL@O1TaS?83{1OTT#d>8-# diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/mu.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/mu.png deleted file mode 100644 index 7284125d1d9b94b23b811982b93e41cb8e463bdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372 zcmV-)0gL{LP)00003KNklIBA+?6PY1=^B*3|val=Vi(M=? z;0F8y!1tEHIX4W0wKhqTzVAQYK}5zF0MvE8NmzEJEKAP$JkRf@X_~SutEy`Mgt*5f!{ILU}eM9#TG?jHaMA&R0f#vCfZv0bE;>bmZ5jD-i)eOx@0^*lSbH`D)D((W_@o)5OEhBai#raszI_^?)CA^!miu SbglmY0000ItDpXD!^A>xBlZx3SK zfE(}+0PnA#bI#uTloDfXnx<#FwRYRKvMiNSLWm!~zzgd8z9@=e7!LNPX-<7F0gN%@ zIC9SSeSfwu%W~>_wFYh5erAKP$lm)9!n&?h03n1irt3PwHdRU?qP3O^z&Ur$Ip=cD zRD)L6byZbb>%SSaZ{?hmQqJ?tIVV{aLI|al)*1k)c9FFf5mQRP1pq*dF@z9fJjCn0 zzY+?2eN_O!SC~@DL(&1@v<&P%TW-J&pa*;asIU(}wxA`)00000NkvXXu0mjfjRlMW diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/omega.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/omega.png deleted file mode 100644 index 3b9466db6b0cf618d1ba1359d750ae3afc6535c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 409 zcmV;K0cQS*P)X!!T@}Qc3`j zQaZOg05(xw*ZYty)Hsfp0Gx9Gcsstex~>7BEXzxPgEDqqXB&Q;!O>)UgJoIvA?p-E zTvAa{6jnvQN^4#4cNH095b^nZ?n8*^tdF|~M5L73t3^tQh{l)?0EnonsyDT8&bzKV zvlou*qm;7WVHj@pv+|s?2F@{F3$-4(EK6G)V~leS9?l;eV~jDDWm(_%)~U7jeV;Mr z`@ZLS#~Il1vqfvY4uKHDs($N?qUe~x?sw4*xB>72CRs*o0xrGj00000NkvXXu0mjf DKOm$M diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/omicron.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/omicron.png deleted file mode 100644 index 6d31fbd95e6ace84ef6f1b317ac700c9da502a09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmV-&0ge8NP)0003INklJ2haigVY1n*Ph}tRV-xQu0~}_COK5V=aHl@tW<7uh z@DBi=C6iK0(=@ehi-;*D?>!<4A&Ln3O3pdPm~-yupw?PSnG19Qh%q9fwRRtpQYxit z0ZOT^>t2RJ2mla5IN#x-$;OzYT2o31A;y@h9st10`fOs1F~;7{V4mmm!?kT&<%7%h zDWxg^A_9Q-{scfNt#UHw{HRbVrDa+AzOQPswH5$kjQfz*`sfD#!3Ucagb;fJ5<-62 z`%OU3c^t=K7{2px&T-C5cF#FCg};h*U5zo@V+R1GFC9Shd|MvC1GpdX1==;FbG^FT Q5&!@I07*qoM6N<$f<&~D)Bpeg diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/phi.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/phi.png deleted file mode 100644 index 1a928d65d4f45299b2b7bd405b61624d49db8367..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9iTP)~=P||~7CGnAG(Ev0rIay-G4{L;0M^<=7OiEI=lRQBDP`AnhXjNW zYrMb7Kfi2u$VE}SyyjX|Wm%rk2U_d8t{+2=F>0-wrg_V~Z5)~2dqhOUs;ZoGM5L5@ z>(5_w@_knuhY$cDgpeeOlyVDkt3^cg_(L$pP8PT(+9hxa9Kbi7cgzu3r%9Or0000< KMNUMnLSTYR8Ih>~ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/pi.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/pi.png deleted file mode 100644 index a1e1314b03fe7c4c585d9699e614dfce48f123ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr)608Dlxo8$c0;nVv3=As)xyPCLlStSI1`?##8JMe`tE&QU&{gF-rv-i1~h zSl%YAIUpm}bhAZ8r6OWR{iN>`*^PMel6fL#a_jVQxD+rQ{8}5E?W_58j-a66^Ho!r z7^1SX-!7~=@k8mD#QVR-CFg4Q{Jt)%xiqEAMWIQUW5&#ms`oA~E@x`m*KU>kx8u#X rR8glJ{Kh?oat}`De99GUOd|q9BOQPf&XDV0)w3Sj1(^WSG+trZafXsw-3 zLkJq8E{41;OYi+|nK4EpverJUB1F98;aQp9rKpqw051Rlfb*PNYqi$b01y!~pY?-? znpIGBKt$gA@8x^%LkJprC*_;W%*-5PwAKQ^wr!XC`KL|R-bFd*-g~XJ)|yh9=ULgo qO|NJX+4ud+(PvHLUo-#)fcXRxwJFvG85Q6F0000`sfJr)60S&>C7FjVcd2Hc(d8;A+1PO*`mH+b2oNws3wJr5olVbkuu`sfJr)60Idg diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/tau.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/tau.png deleted file mode 100644 index 7ad430550b442ecdcc55b7995c1e2fac5f05729a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr)60IVHErvkHJhdpunnLp+YZopzA7MM1#zf6g~O*$nnujMI|X1Da$bgch<` zNoY6l-C*v#dAQ5%`t3i$lNCQ389!t{W%<~1?}rU63Ji=4@2je0+?6gxF?(pX3f$WE zb{8Lm@%q=hbWR)aY!%wMYTx_ho@kB(mfKs8&3OM|IiFj~+EA~zsn09Zp1rnCcxKdV ztGP6fk>Ls>!?Mg>`<@(rmHzI8v+#k(aUmfw8cSIYRQtQkR{qN#ptCwt>UoUi{Pzt{ e;#C+JA26ps@3lE}IF1$Q4+c+HKbLh*2~7Z^#A$&5 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/theta.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/theta.png deleted file mode 100644 index b5d78300c31402f09f77c5ca91245b8ebf36b22c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmV;30eAk1P)4KnG|AU!IRJR5EY-m!Pt!z1Pc1~`oKMqqDn-k(5RvyjwTv;0u|vSS6d7ao zLDzNbx<0r<2qL<#`3rzCwhxF15mS5!;cQF+U>wI+t`OodtOs{c*Y%r2nCJOb1ad3T zT9;+HZCh$7r8wtj`(ST{+wGP%Am`j#`wxH^W8e3E-{0$S&ee6DvwMuO$o#f=?~O5t mxF;v~r2{Cgf6)cF0Pq8V(6X@sR^_e$0000`sfJr)60d9Ey5=F>o-6P_-PAs)xyPCLlkq9DNV@KO942I~zh$*fa0EDh)?X^<7r z4$xKzQwZDeU12A`CBNRo?Vp>@zT@j}Js>#o>XV~d&P+lR9xOi~ak*6XdCjb40!}=7 zrzf%PZ|c`ry65}#(#*BT3te2^*WTWC&eEmiT;|&O);65mayMVA+s2TvmbKxAtZ>zDF~-6kjZwsIc(lncLt0?tA~)rvGuo^-!;w smg{~0MLs$#ApSFS&OcWb1;%RTIMWWZr%fuhKtC~fy85}Sb4q9e06oWY;{X5v diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/xi.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/xi.png deleted file mode 100644 index a478d75912ca67133ab024ee8ea449bb68968c23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr)60X(P4ZxZ=GF=py0%h2iy*b z*z?cqShMxqPVey0nWmX_}|$oU7}4S(bxvMu>Ah&vWT`?+GEsn8PdzFbu;hQV4;` zqDlk+CWFWL?G|9~&h9$%f8c7+WVFc^L0AyiEd~+X4dO--S@GPkaQRU0 z{p60q7d-8}@4z!>=FDLj5#g2b2QQ8{;J*iKx7)kAVHl4R==(5DGZu^8wM0>z&1UpK z`~;XzrvO%~)ve|C`y-JEFMx=AK3^aZIG@i~dZW<*P_0(E0GG>UKA!`K$K$tdHk$>| zY&N+nAfkT14_*wGV-#OZY6?IPQ@0gOf?Ck=&nXIasUp81Mf?A0KH!CuB9l-F9C*O6pO`RFbE)-Oxm`6yC$E{|GYWI p|1TmU#@Ki669DgT%Ny`&z$db<4@E?goxlJ9002ovPDHLkV1gY9^5Fmg diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/approx.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/approx.png deleted file mode 100644 index 7ef6f5dab254b82b474171509f3743e7f5995ac3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 494 zcmVi0s_SV89}G7Jq?B0}S0oC2^~tsa&AejklS0aPlLN4?wazM8{S zm&;`)lVP^{{k|Xw03=D0W!dF&0hmlCJOFz|q9~?PDP}8?NSx2-dc965RaG?>i|uy1 zNF>5rHTm&BSS%J+tJUxKzwlfxm*ersj)C&4TrPhdgpg9H#B(Z&QmfSrWN@Euu~?eT zrmCvz^}1TE3W8v_+sEVavpJj14u?Zy005`c>6=(66aXZX$<1c-DHe-GQ522cqSbBv~W1gOLab<4+aBW*8_n-E|^KnO{a^oy5e`9KEe?Y3_*Xw0`znarDnWo9}d=LZ=_kdxTaU4C* z0{~su<2Vk(@Ub!7w#{)IS(XjMNRnip=cZ}0EMr+VilPUa+_vrK^Qr3^0Q$ZcMe&Sd zj4jK$w37{Wp69Q;gP-<&CtVdR>8HPKn;-};0_eJ?01EhrfG@Z6{5)89q7ncA002ov JPDHLkV1oDbmtX(@ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/baifenhao.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/baifenhao.png deleted file mode 100644 index 624539c19693627bc2a55f333ef657a165abf1db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 690 zcmV;j0!{siP)r) zLRql#2T0A5#Kub27B=#$q~ynfl&sjv1}T!oSja{Su~W=$l%hn0g-J|t?qcdRVO-bO zt*@{9tj_bCch1w9^PcxT2mpZdlla5=Vf-5W!v+9=-EJ2Q21B7xzu#vITd&vAX!Mx_ zV8L#;Q>j$+IG@jFv)TKY4@@SL)9KXf^)xk`&04KiE|;SyDwD~k z(cp(qN{WHJc=pePE%uv{+J?REhGTrQU+N$?bp4R9R4@ou-< zolb|T*lf0RIt{)8@8Px%hXaBjOhqgf@ArF1$K!FY*DIAuUuMx`1BF6yb2h8hN+y#* zs?+I4qtQ!w%6j?;GM~>O_51yB91e$lJ|B1utOoITJdsF13Rhe%mjZzRybR8hIg7UG?q#wdOVp-=uD$gsZZbN~PV07*qoM6N<$g0&kr1ONa4 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/because.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/because.png deleted file mode 100644 index 51070efc10f886dc762a36d25e73749c6655b905..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyvc`Esb@24VQsJOFdm2Lp+YZy<*69L_vV{f<5;=CHK>gMXU#pIY&I<%DlX6 z^Tt`+9AZhDyVN_@Y|t#58Gru6k0$56l4`sfJyvc`JteK}Yfb`%9(%ethIkx*JJpb@#X!Kdmt~_6)1-T+qC0MQO7$ls9$>y% z&Bkrpx3|}iVJ%F>c~Q(oKXaR114n6)hTb{(g~0dw81 zMX#;AUY5qLnxnumYuU-qF`g5$3eTC|X6bU+SSS-4{(9oF%plQ&2R3SSwFsQv#Gx2s z`Pt@pAMU;MszVBPgn(^Ymn%`;=?KaUKZ`n=L=wVLN7ozw5u_*k=xEm$rd;>4{` Ts++YP=v@X+S3j3^P6`sfJyvc`ea4BW-~0j!C3?CzhIkx*du<~pgCPg&1(!TV?(h0B$71g|<}E3&-% zANC2PVeD4m%g@c{>dx=jrO_vd$@?2>^TBL2Cd2 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cap.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cap.png deleted file mode 100644 index 59d6a754347ad2e7fb94068e40e71eade8447ce1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyvc`VLi{6D`J2`cRgJkLp+YZoun3nsm}xA(ojUTW(be0y8vJmsWmsX<=O8;vx(7AbHXEBv$N)Fu`N z#UqvT!k@A^1d0^OWHZHHS6rl)z`)QjC1}3q>(Gdc*(# diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cdot.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cdot.png deleted file mode 100644 index 4f923c17780c032655a7aa14dc94f1a709565e07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyvc`9g{bq)lxvAC{Gv15Rc<;uWaN!V8G!Ls3)sz+_(KB)0zf}#y*`1$EIm0 z-Hm_H*y2!rI;Ee-y@7#|$)5S$zjurb4xx-G&o~~u3sqIBe&4*YPb@y$wPmI+qfIaq e3x~jucdUyvWKO+f6*~m9g~8L+&t;ucLK6UndpIuu diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/circ.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/circ.png deleted file mode 100644 index a27d47748e475c55a752c387bcb6a86bcf633a81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRuVP)b@ZYe^X>+)TkIM;n zAf*(%Qy<{X;s6fdfIk3yvX3@RgE3y$)p49Cik{qH-*-*Z;y6|m#j>obsvv}Y-!l;? zgH%;b)AYO3bsYd;S(e-EJ)kHG&-1Q+k|bdmJ^%=UpswqyKTVS;insCm4(54A2wi=I z(6((4lq7RrX0>v8S> zw_n)1a!Ip29*@`SwOA|$G@yrV+kNL| zv!OXX&pRHEgAx^RI-M}aNs{~zecu;FQI_Sd>j)ul=G|_WW!W@j^BH6O%`S#vSe7*npsH%yw%_C#08~|FNoD{BpvNCWf!T-W SXo&j&0000`sfJyvc`VWG6PE4P6{H#}V&Lp+YZy=KVg>L9@OAaW{)`otVp-P>7P^&Uv^J>=+H zFu~(XmCM4dih&m{%qVY64_DbW^Vj_U+RG%{IzBv=`0!D{;lOqWiMHI^S=uqz?|%Qw zYv6l%TW(Z>%<<1QFHf)teBdjPdA>_8_h_Navdn#qHTT!A^18cEhnwNXw%XYTeoqWy zI$(3Y%SV7EbCwp97K32-B8CQ=^Z!51DOPOR)tI@zD^cQ+Mcyp6E~RspO6y)nO-sH1 zJ#w0==c2fD{`+E@sj=5%uS>QiMotqr^m&hZch5g1CXNPqsrqkhi%g2Y0R70|>FVdQ I&MBb@0P?zewEzGB diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ddots.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ddots.png deleted file mode 100644 index c609835e5a42f761cd4139dfc7b6e93904c4a017..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyvc`T{X7v)<8LiO`a}}As)xyPEq7Lq9EX!D17ef?T`W`J%F zr2g#K73sJsNqW{@hP3I=A3jb0$K&d9X)^oEGXgx0?vD5RC6d=Na?g40sj1qcv2;UI z64U!yzKyxj(^)z+T4p?#WXKY_V87e-c%jAfS!W;g3OLnmT9@4{7F+q&#p~tg@cX=x zUYrbbKF2l1+mxN&B$0e;%ZsjSR`r|SS2v5@Js|PgG$mU%IcL_gi;EN`nvDF7uFjb{ TPyG@*(De+Su6{1-oD!M`sfJr+J5EtUz3zefUvnmk<`Lp+YZoqCY>fC7iB_v5>wGL5`*4hG&iz?&j01EgF0 z0<_sDn>~&HY0uBc&~aj8@bit4Yz7UCAq|FZUYgI>D4*CgBT`yWaPIDFr_QY6sQGte zr{~)5abAoKoyV*FT@+iang6_z7YNLL8(aP0TD0R431y{KYz)=EK!(gKWfYCm?zPlD R$p&-{gQu&X%Q~loCIDMpOR)d| diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/downarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/downarrow.png deleted file mode 100644 index fe285ddba4ab2b6092b93113f114fb899d96f899..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyvc`O}5Cd_wECQ?t8j8hIkx*drgtA*+7Kt!S#(Tx40adjtRP~Z*cl1Gl#*3 z@7)1Lfd>!xBy=Q1Ja`(H2v7Dlle(r8`RmQ=`Tl#ltvFx%R$3V~=4=z`W<{S1;1wQ0#jg!}MyG-0_W> zQl~d<%Vlmz=UzBvS>~;6Z%ur|^Am2DMNW&HCfUZwAd!6kd$YoeUFSaUIq&{pxw@xN z&&GAHdp3U7R0-MRb9v75NR1-#U&VnUUu*S61ep&Rl*EQ>G=-S|wfw*kr9Geb@{`H+ QK(8`*y85}Sb4q9e06V;Y9RL6T diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/eq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/eq.png deleted file mode 100644 index 21820cadf2fc50656cc6abac4a4f3b6e0f357db3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr+J5Wr673Gjf4K{+=$5As)w*|NQ@N&#cQR%-nl$1?yt5o+yK?g9#fNSoeQv zV&xXoi}AQH`sfJr+J5OF14r|BXPQ8c!F;5Rc<;uN>q(puoWzkWqD9Q0Cy-n1g{btmYSd?>LzM zF!Rj`Vh(S0KX4+M=a!^+E*~?G!2^~DZ0W0_ydtM{7+O8Q$Dr7vZrk+A<;ed3zT(y% znuf+Zl$9*g4VG?pzfzsQ_F;|S!G2!Gtzn_D-(KvsuVQDDNI1ZLfaT0a6>Ei~4y{0U OFnGH9xvX`sfJyvc`RRwil5j~*LdQTU}5Rc<;Cp&T-RuFKV8>G_Rkn;Reb;{JwuUPlA|GwkU zDq!4^pr62Nvh~8Xn{~&x&-kzK+$ZW>ugN^VAIt~#${m+jI%O)mQ%B{zcy^2DQ-Tf~ zhy=S_iE0*$!;dIW{9Hy6D_v zi)+{QD+^?foA~nD-uS+^`on96V>dE6{TW{GI`nzrl%jLeRTuj2FwSSRVbH$irf{7< R&J^f$22WQ%mvv4FO#q*mXkY*U diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/forall.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/forall.png deleted file mode 100644 index c2a01c859c410ff2d669a4cd0c8c09283079ca79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 444 zcmV;t0Ym>=`GcQ;WC&wtz9 z_y2yk?>oLz7-Qg-`T{T32k_4UuIo}tg((n1m&@f5fMFP681l1cSw<;^5Vl6Jc9mtx z4`7UWo)-iGCqUr0EGv#{sw_j`m;+b$u*G);a60f2wT>2yj6;oBAAu=9O? zx7(?z`e(h@>!oR0*EQcR2Aoc(!C-Ja9-E&3+7tz2-0$}>#)4bSBs3b0k|en=9i>!U zVHv=7yPeHuw=0LkLDzK|uN0s;Z&g*-PseehD0(Kqwrz}Y8}A8#+nQ`PoB4b$`|C_v z*RBqS!~32;0kB@L7mLODe3ra>jlSh4`*OL|Gz~(yTCF-f2&{`HlL-JI&+`t2?F1l% mjK||n7V)U~Jo+EN+W|i#$Gq!U0w@*$0000`sfJr+J56Y&Evoe@BxtDY{7As)xyPP@q4tRT>~^(8~!12%J}Jcl_9a}Eef927jj znb2I!>~?@xqS0=`j|(P?!X}wLtbY2bp7YMc)y^EDesZB{T?;t66f^_8cn@z__qx>C zqp_n!;M~rwW^4k`p+^MYZ((}E#tn} z&ayo3vGUjZ`J(5aqxKo2r_y85}Sb4q9e E07r^>Q~&?~ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gets.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gets.png deleted file mode 100644 index 702b6da64d3590519fd342b1d443265210f123a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyvc`b>*HSbupmO6Hgb%5Rc<;r`d8f8;CT-ze*Ad7c3X#f2di+Xxr#s_*rC~ zWT}XV>{lK>F21I2&vqwG-7u9}?~~h8e^uiw$2Y z@FZL!Idhg5D<7*`sfJr+J51I^UH!0$kzx1KJJAs)xyUW;CPL_vTpp=|0EMxkYV6Bzv1*smOXut4a5 zqpFW=Ps=-IPQ|-#=GpGuW0?Q<@}KxqsxOmoo0UGdxq9|;BVWk_e}(6Bit{E*Jl?hL zzreQjhtFJ#Vn}#4N#`^Z!?~TaYUID3_TC!e;x#FViQ#>%uOH)luTGC_Ti?s34$)G{ zYdDqOO$v61wmM&2DI(~?(lF(csl(0xi4q+vVx5Xr#4JS&u0yY*|)-eh*hw6b$s&40>Tvo4uZ_S?zopr0P@v`sfJr+J5eU1A(`Tv1JTRmMILp+YZy>^lFh=Ksig(o|h-l(X~;M>-+k;U3$jmk?0 z>l;E_nspUl9{A01C*P+-M&{i14-svQzvmQ(8?RqiBz2*I?T;LXqQ&!Xwfps-Y&I|! zjLddbiT4lxp?8df!J%g(SAmNQgMgrMIAdSVZ8P7=*Q#Q#YaN(=F^YLb(LtN@hYfU2 zf2v`>7Nzv*p8cK14vA!jDc7U93_e@*F}!>Gpmx`jDU-g(X_n@nsQn#kvVgIkp@w1M XN9T?obML+fdVs;x)z4*}Q$iB}2pef% diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/in.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/in.png deleted file mode 100644 index 271d61905f992c930cbf76769743ffdf71b501dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwKPP)&V6rv>}Vy?LBE=PV#=c_0C?aa>15=4Y25#V87 z!7JeB>!awRDC)ZIx=s*&Z?>+h=XtU$^JWkP0U^Y3oU$xMQM@w)L}ZL9iqiMJrfDD7 z2+uGK!*yM}%84L~BE}eUa3Y|TR#n9#AP3uYo@Yua=ej+5|6?COkLL@1Y-66~((&7T}&wARKLDW&H(afFs- t*|x21+pg;{#!s76<K0w{pb`UNxk0gRWap-lh)002ovPDHLkV1i>Rpw0jQ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/leftrightarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/leftrightarrow.png deleted file mode 100644 index 989a47dc39a40d1cfceb4012d77213382f9eb980..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 448 zcmV;x0YCnUP)? zuHVD=oZ&r(!yzIR86FBwDJTX1UvRtK&gU})*zflY15#s}=5#ux0JU0ex7$$wh5!KK zIHmxO;|vCaF9ksmbh};p3DPtLfamj>Pe2HX;}`(0*DJCzpU<1kWJRaGT~FpG$Yl}g1hjMM4ld7h?ezo(yq#bPlUjQ~KF z<=5-Qaa@+NBjV%nI3ACpD6UqkR;$IRsjlmdMgub^3`0Q>T-VLfBFnNQNy@T4NfH1! z91gi_+Uay=vl&xRuh*B$=V`sfJr+J5L#e~F7#9GA_ItWGhIkx*JMAFvVFeyn&#R1^ICC7#8Ut@AC`+g*NE&$YmdTGeHpB8;# z>+UU?@@UTFpm)FHynfCUmtD))P~WAhpp^ag?zI?3hBdFHlGns?oJ(PF@OnAtG0)!r ze0scsyn=I%NNl}!EozzD7hkibC0PQ69S>Lpdkv#r2R6MHG+%Z4@%3ru&x5%Yw-{?K i&0m_DR~G!iT>cdQQjUO(u6;nSFnGH9xvXIP diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ll.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ll.png deleted file mode 100644 index d0cc99f3daaeaead992b145969645ce4d285359b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr+J5J^p0b*H?i;pFLe1Lp+YZy>^keSwVm;;kIX9v-HD9EU#ELaOOPV*ua>_ zAZ@{vSD<{MU9Dx(m0MBwf5_|qs^@I)+&(3!JoVk(qnQrOQXixRoH!JxOiqpb$DDK9 z%y;ruF$SY+-)o=lRgvX3_SWpoh`s(?<(Ng^VgaRNJ3c3sFNw-6ONjLAGo zQpsLCg8d=&40DP*R!q?{R62D-^MC|1!_$XciVO`iFHe8@jo&>x)_2X;|BUlyKHsU6 znzr=H!LN0N-K&Dq#GIyte-oLIUmGfwEYs%bRr$?&g@lrp_ulU=A?sd=Oz>VUYw`S^ kZB6!mUEYiXUk@`sfJr+J5U4f$(TOR|3wtBiahIkx*do7TcS&@hB!R}P1f~FQP2KJ+jLJo%(GR$dU zR#9M-*>L@|9NV4Vl*k|Rz4w{5w(PyO>+G52*>hNR5*Y1yEuL?=_I8)mj5(hRWf&6H zzFk@WZF`KD;jtqUmd_Pi?j_sCE}7CI!0=$N{M;Rk74I#dcgzS{HT@IkhHFAjNj+cP zZV59q2qc|ic`mD`sfJyvc`ZMA^4bEX1?Vm)0PLp+YZy}FV2fB^@KgSFRb4V@!A>uyf)6v%cE+n~C9 zgNWw;x85-yS@*8Gbu#8{0Z`sfJr+J5Q?6Z(R}KJ$8a!PbLp+YZopzA-fC7i>(w7W<2iW=^Wc0CVTQnLmDqmPV zecQz=&cgpb3jeeIz~3;lb*|N+G|K~w_6&3QH{aXcvB&Mnoa>BdY^=`obaYtE(p)O> zIJfKUiYZPm!P@s0^+&5HZ4G0%adpwPSuO44SyTBk0`m9 UR12g#0o}sj>FVdQ&MBb@0BHtL=Kufz diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/neg.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/neg.png deleted file mode 100644 index 164bfa842c13b5e45098b4c1d81ab2a7ec846d03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyvc`9X6FFtyw^!I!_nJ5Rc<;rx|h`P~c$*eWfpRXYQX~eV!jo^^e~@TBr1q zTPpg<%AKZd-6|~}E+XoIj|_AY7`Y=pa3B0C@?tM@!?juG++E)9Eq=Fo!L?aIL0KP< z&e^=x?3l;Y4a^KJ0v+tTZD$mJnxU7uRxog9WoVC~m*%kL S(g{G9FnGH9xvXHbFtq zrGtA%aW9CVIEten-2}V(GrDyX`b)%C5d<9^92^9}?tWm46x6}ILGXR>=+|o|&y=<| zIrrq|G#61yfh9O#jJG8)3}d(3g^5J*ii{9C9*>1Wfr$dgank8@nAHIQs4uqLZ7P+* zKS2lq073{Mq}goxuMoUN`~9BdzJzid*YEcwN$PgHr_-raDqXMF_zM0+u~=NKR+Q4i z;eavr4~|3dN-GROpsWN6RE1|{eB04+wF!i_MaY1(CKt++eQchz<4~CWx3I4JRT1KxLhuy(J09+ zQWQnk_19zaJ`hE5yUp>zg1R)s(wr%HfxokH3{beST84L!=_`ooXcDo(p-yT-Ma5$`1 yt8p5Tkcs5;`ORj-P(iEJigeHXw=a69-t-gplY1P!*rDkF0000KP)!g$-hCV%+~kEJ zgaDfQ0+jUt9>9IEr;a2^+P3{UavZ0ss%e^nAW)eAV;ls5D2j$*48w5VK&~nbLjXXU zrpLDH07A$-&j5h3ENKC@ZEKo_Wm#H)Z|S-oMbTdM12J_RC(rZiG4(vJuImHCvMiD$ z?Nyo6eK3yWG))JFs;Y{j$g=F>1Q0?9;ep}xdTE;W`Frr2695oGdsXJ<%Cv2JUDr5{ zsZ8LyuA(T%o+~j$2>HIx^E}45@B6!Nk*@21T4Y(aEUW9f|4hj|-ni9`y8f`sgLyHF@Z2mxTVT3-^F&*x^dIh{_2!{IYX)3m{0sMTseb?<>a z(ChU!n@x^48V%_MK@e`x?^Fu(J0v{PbCrw0GUkY z`9<4oHUJ1ASF=v1Q%Q$!?ZI$31mJSH7Fc002ovPDHLkV1oGe><0h< diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/plus.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/plus.png deleted file mode 100644 index 7055190c44bfa7f28cd4ee6f59f8c92199efd112..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyvc`ZJutiP-mdf3Qrfu5Rc<;r)}gssvyv2Tgbo}v80IitkX=#0%7rjmK>#~ zUcQ9MW(TjI_D)RfDhU5~=Y4s5yWEy*C(bNLDN8DTyxt#VdL_`+h&SKCa@OhJ25bw;AdNEzHFTb_e!9f89ZJ6 KT-G@yGywpN`sfJr+J56&YC{r$(Sqr>Bc!h{y4_(*k)9DDb%Sr!q|lV1K~i>2W}akAc0kfmLQh z{H9cu-w7wD-Fv?D&hHmX9lze&7$hy`&A?P4ec;U6t*s3b%EqVp?AQV(XU{6uTRKNZ zNomo=FZZ(7zIXb@`A39h!L_WOjo12~smLD#=YL)DX z4an#7O#g5=+#mLOz1jq@hs<#t)AxG4jYb1NtyZ(Ur%Y_QT(+tx91cgLQ2?9G=KT&N zNt(~+&wjJnOsCV6$pk<$nS8$kBFbbk56*Bn6a?Yt*5-1#H-}6_i^U?F%^r_OBHHiw zs;b6fvD4{fCg{2j!0-2WI-M6Qix=?icB?2#BodKjc`z6}C!Eh`P17VvN~Ka(m$;l? fg#&N^{{V0UkweYyYlbiy00000NkvXXu0mjfz`sfJr+J5b;Uf+*kGX05>FS$5Rc<;uln*bD+;haxT|%LQAmQFg*AbZH9~^@K|)~z zt4ss4iVwfQP+ka-{V0hVo79Edo*5uhV)G*RnFW zxVR`D*`#xyIl4W$Cn`Jp?ZdY&CZDID1e*Paxq!WmRpH^?&oe#)-OJ$V>gTe~DWM4f D{FYf# diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/simeq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/simeq.png deleted file mode 100644 index ac4b64b65c6a1e93dea9b3d3f317f0676fdcbbef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJr+J5Gwx^E+ouABE_u2*hIkx*JM|)Ovw}d|#+TMP4{{ZhEt;fHux)BweTO4& zfpmj#hwuxw>+HhGS=DB~IYEd2AFDr5E;GTq!(-0M*%pz40*rzMtOx!UuqpLDUNJ@M zbdcs(5ne?OMTQ5bg(Z>&CU(pzj(WW;^V^SRmX~{PZCkr4OP25Ogw&Z^%VsTG>%7Lo zA@=&~xaeT7%pT1yCEwuZGW;Gh>K^R99`*jO0Fx4v!@TD{U&U4H?-%Syw>n>Z|NEaR z&8Mf0>R3M9D~~Ooq0I2+|MAv$3QS50Omz$u3^JMbrm+OfHUavM!PC{xWt~$(696`5 BbM62D diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/surd.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/surd.png deleted file mode 100644 index 9ddfd4db77f349593e7d2eee602b0f83acfa7fcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 477 zcmV<30V4j1P)FI=HlxL{(WP8BqY3O5`3e#!W;Z{Akwzf90dqD8Z1)Xr21Wi}!n?gEo^#-L z4)>hr(xa53OZ!2`_NM@nB>BGI72te6XIVBLkKY57kxeEO*L6SrYyj8mwcqdOhS&h6 z)2ZV)T>(7L<2deHlmS3dl*8fB6(9(L;z>dK@@?BLNa(fEqBxEPK`4Ght3_L{*QRL} z=QQsiilX6gSo(NT2dmZUd4{>R-EJ+*Dla7WWFC))BuM~tUC&KO(-c6GB&Ac31GwF8 z%jNRbdzz-7IfM{GNR=@w8dE|DfX!y}=1-F38@L|ee!u5_#@%jb7)HfKDOt3|VgcZ7 zl>mfc$OiD7qQPMB@|dQnX`sfJr+J5ZNAK0eKw#_xu=U`h{y4_*Bp5dDDbdeI4|;mLFK^&1y0t81DvHF%4alw zy}+{VUv;IYH&>&IPVqqtK8p{Q4lY&itr}-tiDK+Ayf^(%E}LaK!%~rGg<};(-9cX4 z4qRS3IlT217b8dY-jl`WuFdMm+0tEdAj-Sc>g0p}O6)QRc#YY$pGTcuWdU>ogQu&X J%Q~loCIE)!NYnrT diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/therefore.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/therefore.png deleted file mode 100644 index 7fd47cf7f8c60d97f3fdeb2ee00d85886a46dc76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyvc`Esm)P3#5TUb39!fLp+YZonp(yqR7+w_@1{--}DbAWpU0T2anyl7M3!@ zjhlP>hIupRGK!a-T+Q_J=Om^69>avCaT_8y91d(}>@jrem{KI_kj=|*?UuCd`sfJr+J5P0@>XEg3+eDV{ElAs)xyP6^~aYQW)oddd~fpaoo63;hl_>OScCzI%_Z z`sfJyvc`4Xq-x=31c88&4O<5Rc<;r!C}aaS&*mo9q~HLH&l#4VL?dw)j8bj;P_^ z?bf`0p|1f4+vI~PYLh!E^<-q)S3IbkocDjnXJdKm!*6sH7CEhKchcdU&|uF{G0)sr zSn+_#S)J48WGehaLtpNyOWMKh;BtH0WEDl0JyjRB>54K4?p~MN^Y$LI+4)idmek0) zi*HjSf9*5pQ9fUMz4ZR`=mQ2kk1gWPu3MEQ(dK)3Nv2lI51x&^Q;W}8?&lJ4VmM%P z-um_HI_5_fWirn-xW0$0F|2vLDpTsDihJOb-~R%?$xk`4Y0V-H4)vYuUKcZ;$nR$H dV6c6_dAa|<+$Y(Y=0JZlc)I$ztaD0e0swwefcF3Z diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/uparrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/uparrow.png deleted file mode 100644 index 0c619451ae4cf406ac66c39ca6662f3cfd395802..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyvc`4bBUJpZI}7_dQ)4Lp+YZy|$6F#XyAZ!Sm2-T{qGh9VhT4WD5rrFqjuG zl@~BuYaa}15eYkJ%2LXx{dt{*#X6HY4=ql_v&qHFy%$VURC;lS+2lBbIrH<%cfZ#O zzWBXwUG`S70M*P{Y>o>;7BQ@O{cG1{6W=I?>!sa`7EEC}uq`*}ly>O!v<*7lk1aw& zj~4oHNVXmPUaNS7*Z9F4<6{g9a-&^xW~rSocA4}1=C)j~%4bz)Fw>c3_7?DH%HAL=!w^Lqik O%HZkh=d#Wzp$Pz_=650h diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/varnothing.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/varnothing.png deleted file mode 100644 index ea1b6c1d9e5035dee7006127814bf632eb5bd878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 584 zcmV-O0=NB%P)k+iJA{ARG>NyWJN7@pznNSwpK(C=di8Nz!Vy za=Bcu0AyJ`sfJyvc`UBP``^JIWRD?MEtLp+YZovg@rL_xr{-IjgXJZ;6_1 z)X;Hy6N5ufp^Tu7iCB%e6vMjLN+KMJOQxK&6gpTa^Or+$f{vu%+O4;@*`7b_oP6+n zQ_!gx_vKkp*>6wmd;j>#5%%x3-<6;Hn3}xbYq)IdF`yFnd*%vn!!)8VYzI1;!PC{x JWt~$(699L?U&a6c diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/gneqq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/gneqq.png deleted file mode 100644 index b299d23031ec9249af036beb8a18214c36b3fb28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 408 zcmV;J0cZY+P)ftSgSQDnztvzhZ`fSfP)4@sPJaHqcDW_y;sgZ&JUDtW*h*5x3Yav8Y6me7LoclhW z^L1T~F^sX@Edbcvx^`9U%36zvAz>xQzszZxwrzV|FUyjMq?7=FhzAZQDH_M|H8XA7 zR#j!K)mj5Unx>rd_oT>LE2TUguE;rva6hksF(ye8|6SKL=bVUsocUD^rfKr+*fb3h zF~)q}pCyDiYSxf2l~PwTbFBu$Fht+#$>-_#{{asr{FRnF)4Hkv0000bh>1Kaf%)V&C_d%jNNSv@pav008IQ7!yK>Yd}^-0|2FT97jal zg&@H>Cxob^X(7mIq?F$Kg|K#+_I-akok9q=+iim;=LjJfV<@Fs>tfH>5g?*5hI0-8 z8#fsd$8n^T)~Bu|NU4Po&bfwq76`1h&8ZU(Z3}0f=Om=ftl|fR5S7DRI|sSbP1D2} zV~lNMb^wsPnlWarjWKf0bNM^x7MetA{2*1sT1zRFQfjU9nDhC(;1&e}rBwd0i1=O- z>BM`llv>D8*l1nX<-6>9y#m1fem@?MQc6OI_x@L2louBfIp^1=xXhfE{25&;eS3`(d)#>`PF1Yxc+cWym;Zn5zTXzVC3SKHz3O zfCmuJx~^^8GRB;9e++QWwQXAz1*OzE#~2Gm?=iC0A|jh-Hciv( z5bgWEu50hT)*1jPrJ;Ej+nGGiuTQ!-4-&GUdoa&)mSx9t(=?1RMEn)=mIuqStm_H@ zUDqKZA>`=$PjSu(A#ZsgrHt)NoCo7LCjXDwb2t5Wz!$^%oE}^G<{bb4002ovPDHLk FV1kg^t9bwb diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/lnsim.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/lnsim.png deleted file mode 100644 index 1365188a04e6085031a6046ccf2e296cf6d7aa3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 447 zcmV;w0YLtVP)T_tJ0KlE2e<=rK(Z{Ygb9idE9IX!jOJN0pN|hQM%Yt7 zu(Q5^eF4)n-S78}qF5y&YTH&y>72_~LPcvt9EM@D^?QI2!u5JZM5R;+q5OlOy!GvN zd#m*}AcSzaTo93nVy$v6^4@E$&*!rcqTXtSTkZS4aI2L|HpXzy`@XlIZaj)G0^r)g-dkH@1BLMgSb8HOQ$Gjf2g>((FZoC5$M z#IgWuZP#`A8T@9Z*ECI2ylzWUZa1seT9R;X3CKaXBlch^WL%r8bpP pmd8U4fOB5=9@Iz0_s8qs0A4T3#DZWY`Az@;002ovPDHLkV1jZuz|8;v diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nbdash-1.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nbdash-1.png deleted file mode 100644 index 07cce702f4abfb4d7d235f5e19449aea32fa5672..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyro$9jSed@%lia1D-C9As)xyUfsyq;vm3!VgKuy(p*`rVH+3D{Mn=`DUqSr z#`dhMQQ_DrvjoOh5r^&`)RVdMr>27Eb0Ul2!BiEQc1AXdAI1rhVhpc$F)1v{z1{bC z1Lv1o{soy*N=C;*LPc2)-d=hAd4m8`!}H4D`^sa(r!Ac<-Sar&dg;99$7cNAmz&3s zFl(7c*Cw6W&wuV(XTY;`%C&|>iAyHEk0Ufw_q*oaR`Xmm#p?WJPv6@6*Q1yiwBxV0Gg&f z9*@;(b-7%%TJ2h3x7$ml(&agkNC*SuaybBi!C68;wQ*fL5!8VOX=-WLfrbIB*;{olbo|9{|AX^+E_aj>B=h(P&)s9*-v$iwOWY z9FBZGf4yEVm(^-D03Z|!5d^VbuZP2-&*wu?RDcIO&&y=8dkGA~q*AG`ZKBufCzHuN zJ#upvb-P`g&33Qx+-^65An|ydWm%n0N0Q`EwrRiL7nCI!;B-2x)#|$dg+f8A)e1_v z?Ljh`tW+u}ihivmhGCP*M4?dNIR01G@puddgPBa``cpRm5W>-D#4rqkAfJmEhUId( z`Fx&Er}z8)b&5)*A_(GnlNp8q0L*5y^ZEP(CAtoZqLfNyy^kNB7?!;;(=H!UaeM}&4wU|)9G|`m*?}DB*|X{O4w_6;?Tdmg9htfX)*=+XX_q?DA>jen(LjGvva0qYUA zwknFEX`0PJs}Vu~z$*t)6lGcVzWyA5F?Lw^?f|6}0JLp;>Q3LbG)~jBah7F?F}~mL z!!X#2K8m7E4y;v_=lQc|o@ZkWA!Mhe0HChxZSsF{D!At$P187z-Fp5QAcWYT_+Efh zQ^5tm7z@MDXJ_mI#&JXl2_bv{2TPwZ_H(G6GT)v2`SJP(fCqT_R+JdNI;sEw002ov JPDHLkV1i~lt1$oo diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nequiv.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nequiv.png deleted file mode 100644 index 83427dc84ec60897226f5ac9be13a5a6a0f8086c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 463 zcmV;=0WkiFP)kWEXysH4$8oBoKM+~lL5mpNs^!ey0@umniNHG9EW~ox9EDk(lqV5F7n0K0q{I; zxm-2_)B)gmJ`BSlfVK>>EE5D_u~-awc|fo0|F`Mr`UWU0;BEe#z{&ss002ovPDHLk FV1kSX%k=;N diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nexists.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nexists.png deleted file mode 100644 index c5e3e583c6d81cdb274f5d83ad06160c578d37e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyroWS<4%Lr*8ua-SKpB4DmSrcG^bX76Tqv#=8tTLS`H@8w49XB{~H?)DB3i z%w))apq-&H;ap!q@uTp}HPhecyRYnAaVaEN^EK<9hG@m4``^157#=WdC7qBcj<)W5 zeEwEj<U6>1JxAV7q-9lo_0u%QqB{?|O?+7;W4L&C+ zD0tCQUHOB1hD2NKeNPR>0}{?frc(MDiQP#(tbDJ&zy9&RLBDaSjDC6YM^Hd9c)I$z JtaD0e0sxn-bV2|C diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ngeq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ngeq.png deleted file mode 100644 index d3385e4cd6dce61f029f9b76541095347ec01231..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)1r|V7XjjJ07=i zx%ZzAoagZ4c|QRFp#0Pa<+J`cK+`lI0rUBMGMTvB0jZM7D+EN{8w0jcDo%4 zh05h}x7&R+XHJ0o{a&xvW3kwDIt74KDrH%gmw@y6yjUzAXTvZGg#y7$#LYpqTE!eb zKNP@R`jJTFbUG2tT_=ET+s$SZA*Ad2cDpT=O3yY7!?ap02Y^!_AcQKFN;n+OX0xiQ z+P3{{L(}xTeXw4y6-6OleC~jJK5rNXF~EIg%CekDB#8e8xK;H3v-`z>FJew|?N;%r QO#lD@07*qoM6N<$f{>u-1^@s6 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ngtr.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ngtr.png deleted file mode 100644 index 033a1d168126cf8e29d8b725a10ba0434d57e7ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmV;h0Z;ykP)1&`N`Rjh~?74fF1x_(W92tK&IDUX* z0guOH9LGdb+!{nwRh9RCJ#Bjj)>~~!UKnSr9z!+nUd97a8b<;HW`+c7wbIyr~h^)19>6|f~GM~)b z?FQg{KF>R>wH88T-B~&EopW=tQYwD~vMlo6YpnrDDZee9066Eg){L=vjo)vi%=rH{ zou=t}y>iZ{X_^O6Rn^9KBWY2I{PYZzQmblB#%~55tf~na08Kc*Gdz z^ZEP!vUgw@hU>bfX^NtlC}swnPA33BtyWtumo$0?z$NggpkEzq3e1!fG`XZLb|TsZny76MNxtv$jpJ~d7>z) zs=D9r??|5KSwjI6gS^>nEX#rravY~=TC3H95HfTPQ#$MQy61UJ4rn`hwOS1ZgZX?u znM^RowrywZpjxd)QFMQfqNv;LmdoYwc$`fi1VNxE%Hz7@IN1OU!|;7S-Q0yVhkmJ4 zx?Zp8PL8L5IF5V09zy7FIP7-2X0!RIDHIC*e*b5{=d%|Gp?14nEEXk6@_j#!<3~*{ zmwPouDTWW*Pi{0Ctiy+`(K?+D$8oP*Tc}d>f3y4DfG?DvE5W^y-znE zcQVB(V7XkjS}j2kc%B~)htAhz19&_h>-D-=EOH#TSS(JbQ!<%!W!efbnM`7_SgBMx z9*^&cD2n6pI2eGYX#k+A>Q4kAl*{GZUO6iV`~6-N#Y`qM8jT1c<#KsCodyYb>w3LP zk^}%0MLnO--~n&dYPC+M0|4D_*A>9N&??|uLV;Dx3<-_6NcZ=rpc{ZE`sfJyroWY3qcQfigg$DV{ElAs)xyPCLlUqR8Po^X#3i!ny~AbQ*;;faF2HB`nqx z`R*JxYcT$}f%8Alo|ga4JFZ0)1j$?IF#nNG=n3?)eH>tF4Rg zRreUS7(5TzmUH}yp1YMV0tI~4qxDjP7ae2z5*kERm l##XUb|Nh*jmsLkvHv&Z&JYD@<);T3K0RS6#SCRk# diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/notin.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/notin.png deleted file mode 100644 index d0012918e033082e4f727ec48169322da7fa3c5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 383 zcmV-_0f7FAP)LJ!9a@F2i( z9Nzl}0mgCMw(UAEwT2L)B(1Rn?>%FzD7CG8DdoDZC7IvlRXgXFWjTrU-tYTP2$|>k zh7MwkN+}_PF(!myj2VWZuvb*br`Eb*K1Bdp>woo9O3T^02B4IN5PqLk^GPY;OS{Gx zkK>qA4FCXu5CQ-x`sfJyroW8KK;$`0YTUIi4<#As)xyPTS3UK!L}F_Y_0V0W||A=?7;cS_35-c|F<# zx)SX478OjD{(W$6tH4r`2UA$mWDhK7IJYxO`B9z2xt-TEmriC3G<0)gP%1k-LHqLB zt$$0kQY4eJco`H~ysq;csJ?&bp6c^C4{s^0dS5KLW#47pMND%0^3Nq)`M!}SttP)@ xqul(G=BY31tJh5p+IlTYc=wT?H)RiO$`du|*rD3xxee$}22WQ%mvv4FO#mqxT?POE diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nprec.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nprec.png deleted file mode 100644 index a929e3b024b53f8a690da1c901403673d44d83ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 353 zcmV-n0iOPeP)>msc^zF!N=XQDWaa0kzO^=lP`SZgUkH&>s@!1HpXXUh*)&bf1~Ep?IT3m9 zi~2+aXK&MS9033kIp@~ef<9wk#c8bTx_$T|gc##649>Z>ZR;Gg{cx6L0RRBVIUlWj zYWiK*5z#bFecvmkiW@*gCjeS&@BQ}Zz2}@48SJe7KF&FFfyhn(`liQ=^ z;eWe-{_x|Rd+y;<7-RUPzTm?u00p1``~?ulvEw+oi-3B2Rmie@yWI|lLrxCAC0*AU zhKb`iH~Aaja=A#7)a&&GK`>48<*(Q4YPEVkpVQ&lY(@q+9*>z?MNzz7ub$^sDwXYa zn-2TF-)^@F06`D{K&@6o2-&v1-|q*50RS|cO_pUhn@uLaSS&`P5dlC|)mE#OBuUyt z2mwH;RMIpp48xbd+wA~gxm*$eI-QPT7#UL(MMY7@<1qj<8jWtZJDE&)o(F*8a7b{; zNs`p-^^7^4PC1T?q6lL=pU)YF`5AMH>i7Hi`~C5F5LDp%e)_mtt;*$cx-CHv*tU%j za$PsmNrEx`mStH0a5|mddoekHD2iyB&I~1ysNz>q01CiA06YOE7(F=js&pp+0000< KMNUMnLSTZxy~b?- diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsubseteq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsubseteq.png deleted file mode 100644 index 9e530e2767f3d70ea8ca7dbf8c2324b50852367f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 401 zcmV;C0dD?@P)Ih zI=SrzH;=M15B5{&C1jZOCdY(==HPq(+6cmNE7;J^|pEUyPAS-8E6P(pk_b@5`soRX8=aP9JXp}FEb!BR_(!m1?sXle8Yrctl<|EbOU^mQSjx^w1kV^#@uLw`Rpp$^#*atPb)8ZwA3x;|gb+%p zJp6bBgb=N@wU%?fEQ|MEN_hgGkRowhBcj%Np67kv0RRAgm-@b^ls-H7eS)PZj^kjA zm1UX!iX<6GDYtC{fU2sDF&`ck08rPpF$NLGaXj7euWMkMrePRD2-aF5L`Ki2Hd@=Z z>$+wbL{ii=4W$$j5%F*3d@Myj%EphU=$-7R8oYxaLMZN!*KP3s4Ib>;D&rq+_@@8> N002ovPDHLkV1gE7j^zLV diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsupseteq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsupseteq.png deleted file mode 100644 index 4c1866b401e2fa89deb23d995a79a4f8e04cc3f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 400 zcmV;B0dM|^P)~0003mNklR*i1nEGn06IV`zz(njv;y~FK4LtG61{xcIq}R(24>!m?`2tDPvY}>7(aq% z2`Hrx5;RT27z^huu>b&TZ7?l4re}=J^St|*Wm)=%`(I$Kl~Q7iDW%T2V1A55&N)Je zlo9}f95Dn{Rn>L99?G)3pMVhJFHQ(KPQF~GN-0VyLTC-sG#!TFAU}yHe<6eq5kk{6 z-Bv}`S^(I|b*Dr^h@vQb*mYfaT3of)pN%mX<6tu<5yNL3$F^;?)=H^hGrx~lCS%Nd z*!MjEtj03Nwp!gFkuipI9?>*s2{`9k>!%2ua~R{esea0XaU2mszI%5|ZQFN|9&Crt uReY`vpUVhdAyX zfCunNob!2}gG}9Vt?P<04m3WKft0eY>rm?x8DNapbyZ3+#;mp9jbA6iPt&w4%Ph;B za{!R%`DI0xQjX)8W!W@MQc6OI*X0%dv=9OzL1DwvFRR2mt`CH6i3cdA%9z z&CVFpS|>>Y002-F#l?dbMbUl`LL3d>1K^x%t>ZW@ieeZBt@XtKgiw+sZQB}SthL*= zbzKJlx9lQgj4=jd%ouB$<^U#Sbf;&_nV)3<%&e4h&H;dk zAmU~WnE7-%A!65c%&fIu&wqn~_x^sr9}b6ko{4DX)^9WL-fOLy`F6WG=c=m8JpDDm zaJS)(l#ay%ZtD{`ry%>XW!3o}pCq_w_YuOS3P%-1LD4FF()Nh!5$ ztCWf{Ztq0^Fbo3#7-O2IIiJt#{Z-Nji#=FtLkM+UTWkBie?Fg^nO)a)<2e5OGLEA$ z=J9x}{8hbWp9Q9yD-jVjO;ci9nHMp}Ow&}rK&`JW)>;vXF^b4V~wH898^O7ZS&b8Km95wsn$A#(6+7jK1Zrt4eGjdl|Uo`8w5<(bb z&*zhKP6)Z+i4J)0kBCwVV=RRDp!Vr89mnx~IuSyNi*l-iW4V-4l+s}sl9T#4yIcq% z0OLYr#tEdT%j07*qoM6N<$g0dp1 Ae*gdg diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntrianglerighteq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntrianglerighteq.png deleted file mode 100644 index abff3af7dcdb933014f0be241e50dba2a5827422..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0CcP)0pTdL}{Fb=F$W`8?12 zspAL`vG4n7ng9R*4j*tt4-ipnEu|!cZ0d(+52_%`GD66*EZf*nO2ug!J3eD4ZiG#Z zF;dECQ-|Lr&-1|X@Ds`5+M<*K07L`;&iSL_9(6tm+>6F>M8vwTuaYR_cYMCdh)5}o ivVXKh@5SpM6MO;Y0yxP?(3jc(0000mSa<%**=I-Z|%-J8)0BqB)_i>u#xm_r9vCmwrC1H`uJG)=~s82c-2s;YHew{3f+ zA7V0KW)azZXs0@H5D`S2qyHWtB1A+)2csehKtv+49yRN^6sbr4wq!sC+z)sIHCj2* TtT@y?00000NkvXXu0mjfq*8p> diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-2.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-2.png deleted file mode 100644 index 4079f6fba03da755909ea184176debbd6bfe8b31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 342 zcmV-c0jd6pP)Nklfpnl9pp|F`Qi2_z6)+{x0dz3;KytZ<+g;X^mks~ZWM;w_X8r^UBD$s2{gzl6 zkO7|p7>40dX&guI{eJ=0+DG83su*KQMzkzTxWV(buXCp>rS^T_w(VtSEZ{hfpV)gp zO_Ne8Bsu370JPR2Ktx28QW|4I1^}L|fg;2?4}o(I0E{sdtv3M9xw@{k*7S~wm`sfJyroWS*;l7YZ*YH&z>%hAs)xyPP@q4tRT?VzwG^{gGV__mpPqc?Ny)fM`@|AkrJ+3k?$I1|Mk{)$cfG_%bEeTJylN53txIe&ZG zU#a|hPY%Pa_RqDKP6^U}*zWbjEaduERk@6{OQ*cP$@pNOdH(g%ysJGM4R~VByOhrT zw6xBc<>n>H!l+~y_v-gQlgW=Q)~z~~ca86WMIXZk?cH0;RrG) j-t{xTo4w+|*9LVBw+*u#?r`4#dY{45)z4*}Q$iB}gg1dH diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash.png deleted file mode 100644 index 4f4fb1f2e91b0d3c523f84f4e909e1f85fea3cd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyro$Ey==5D}izh2RvOILp+YZy}FUJ#X*4e!v5DYrMa?L!!|CQ`Ljt?QX)gK zjqO=iqr$OMW(kb1A`aa>s3&vhPfZ2S=R_94gQ+Sq?Tl;^Ka3M1#TZ`iVp3R?d%N%P z2F@?F{0lOrl#Gsrgo?5pyuI@J^9BK?hUb;P_m#(nPg^=!y617k_0oCIkIneKFE@`N zVb(H@u1z|#pa0yo&VXm>lxq!%5|>PRA4h1W?sv_-t>(FCiq-kcp1!sBuSYR!bUo5` i_~4(`z{pm|P{H8Du;cxLd34?Qpk^pw)g(?`D}K3?~O6m zT0|rw&Uwm3A1O6-&N=72_sg<0O(UgD{QD7$rfHH=3L&)CDg1+7G|#gTf{1bntPnz2 zYjd?J0JLqJH_1)Yc<`sfJyroW9)$P#?|c7n!J~$K@0VwC?d+;(=y2j#Te^>P{?8yUB`(&kP7$h^EVl$$sE_ezsz5Asa&q-9QjN^rG3|;u8T78RR*ZGHFn(EcJ{>UMiIl}>!t3| gQStV>xdYb7n}+AK1}qfa3iLgLr>mdKI;Vst058{sX#fBK diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/succnsim.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/succnsim.png deleted file mode 100644 index 7eafb5bd473d4db551059509427c895ec984db19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmV;?0WSWDP)65N5*f!u-Afz*KropGTZ@c}ao$qOu=Apj!YZnsq<^vUYFj#AonU7uSp+hL61oM&UelBNMeYn=g8EZk&7 z)LLt;4~K&gf)FC59Bxrc8DqaaxVv7jO91x!{qcBwymu0DxiZTAN1~EoTskL@1kvZqy`)r%eELsRb2$7bhRD$VJ`{Cxie1 zizdrswk*qqc3K+Oh&YW{##myx-kU%vMF;@^#+Wf?@YOUkthEUf&j46!M>dQxlu{{W z(=^kb%jJ^r@eDv!Rnw1+F#>>;aumROUsYA&4c}=32_XYNLusv*Qf=FwPNyO4y!Xzz zd<~}L#uz#0<8{+COQPuwo1V|-j6{OByq~c##pmew{{emg&fMTr9Krp*00000NkvXX Hu0mjf)11jg diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/supsetneq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/supsetneq.png deleted file mode 100644 index b43f091926deaaf19d55f0a596f49a512a1c6a61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJyroW0TsT`Rwba&OHUWa5Rc<;!w&McCuk1}U4YH%oIVRXsiOd#Ysr0p$sO{y(BPHm-a9On~9mw%l21 z{SJjC7X$Xc=9ZP%RQ*z1Mo)@}_fstK)l|G!t%spW8SUFe;SzKjfl z-#7J3DJ%`~di&fxYRkujdFjV)yf0upV8C-d_AHB`l3iLFCr>mdKI;Vst0I(l`761SM diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/a.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/a.png deleted file mode 100644 index 9da4fafe5aeab01be22acaaf52aa64c6229129c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysrWM(ab9FKh-1o%3{Y4DmSrcA6vaVFMo5%b5&k7PKXBGzPGRN=h_oia2r| z6yRCN!?ZAQf~?ll4ZcxUTc_*(7x?+$$4UE*lk}dyS$E}Z>>9R=2DTsS2X?Jnm6dj8 zPLP$u3DGXYHUY0Y-~VpQ-RT!9JL9I!`RbmIj*PVQs3&{nkAFP5(d)ooHBQ0yL;*nt zg+)UFO0~il5-+1`v=qe8TD4@?6JYD@<);T3K0RRW(b*BIT diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/b.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/b.png deleted file mode 100644 index c14fe4f1dac6ab7d710dc32043867d2824a980b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysrWCb2b%_gR5Lhdf;zLp+YZy>^hdML~cy;BF3Mi9(qJdjfme0@VO6)c_`0 z2liWyHx9l}`1T;R|M9VtaX-{O8r)|%yy#pp`OIozKW3>5415OXKb!a}vS=zSb#Y;c z;%)i#j9+(Y%v6RA>$J`sfJysrWCSBPqGew}#Ax{^_5Rc<;ryk@ztia8waR8-OJJyD*l~G#R5oLSAsa(fc2?w4 zPYyvRi)%|ol6f{xNV&L4C&)`PHT&s{XGYz7zIWVka>?0{t;59dJjPaalIxt$bBd2= zcXb#Zdw$0I$68lS)pM1aOH;3vsz#Xzx~KIN-Zoo$#pb-G>e{a#74BvI%20d%+t22^ jO2VII%mxhgTonvAs~zqw)>2mm`i8;N)z4*}Q$iB}Ym;Vt diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/d.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/d.png deleted file mode 100644 index 2c9a95d8df8530ebcb7a5893e59960da4a457e46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysrWX0{b)|0w{4E_=E-hIkx*J8dIxvjdN-@1(Xq-Vbd1CSA%oz>#xk>Xa=d z=1j^5*m4+r7<8{L?GSOzOj24Svh)7kll#l9H2#t+gBTg}cFKcA!2 z(DAG?EGKZ1N`3MtU%6LvoR8$*e)88cz%g>#F^M$2E+)a>`|O1;nD8=4B+I$Gq&zcb zjJ!gDdQX^xp7s}|L zHtJJm*pj>Z{qOY8e+AdR{`sfJysrWX8AMA!X5yHu6epRhIkx*JM|!Mi-Le_;^y+@EY=BD24xAHKs2R6^#)_v z0@()i;jJu>Cv3^k&YF?K2tljpZfg7KfF;T9_BcDB{5Qhxq~LI&V$i%SX;A zIl07MU)aKoPbfsfe4 zLYdp!R2Svm{Md5>s;*3wtbsLy|I3D0Gv|hZ@X2--`sfJysrWW|IV|^$UPPQ$1ZALp+YZo#x2PqR8WFKU*|FbE*N~h6Z6RM)n6R1r5v- z8koOrJIWbQew$g_mZYt1RsVeGa9|@>2*V!##%obtogEAvC(erY7|tnHWJ$Z1 zdd;)w+_hWEPu4UAojQ2?|K*g;|6{v7)`}h|jb+&L-JE-0@@8Y3T_?4EOtgG1xncho qL$@?FCBc__^Ml;pD~YaPkiYZlHi!THnyWwuGI+ZBxvX;899xK8dg9!>9z6 zpb|9AxBO@bfti`vT1!Mk1OU#to3tXsFbwOumQr%gN~xT4&N-!YnX7DiSY=?t!&7#(3Rf=55>B zw!O`j+BAf4+7ti~k(r%yTI;tF)DNc;RDu`q0}6#|8F&p06951J07*qoM6N<$g4276 AVgLXD diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/h.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/h.png deleted file mode 100644 index fa3c006d3324d8d6e96bde3eb5431e84a6b9be44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysrW7WwAq2h@Q=Q#@T9Lp+YZz2?ZvqR7JJI;&C~x~`78wNZmlklin;%s1L!^mPgg&ebxsLQ06k7t6951J diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/i.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/i.png deleted file mode 100644 index 58e2a69325c503ece628a44281d8f3f31322f4ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysrW77Mkvr9MERd`}n05Rc<;uLSZQP~c$+n9=lzgl`D)gYJe^R!nE+1kEazdvhbP>b+7?z1_bx-BH;~rx>;= zD=3|LQ=z1ENS(PNNOWtM(kaXJTLVNH81}H=*xqm{>%;M2H=xxFp00i_>zopr0Ky|f AU;qFB diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/j.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/j.png deleted file mode 100644 index 592148aa81b4deca5fe1021338f129399c805f1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysrWR>|V|A;CbQMo$;V5Rc<;uQ&?2C~~kR++Z>LxITe-afXuijRRaR3mVN5 z-dA6m`TVKwf5~UF8yU@vcg^IF?PKQq UbK9q_K*un6y85}Sb4q9e0LaEnUH||9 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/k.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/k.png deleted file mode 100644 index e2daf2e56154174a51fef2078d029b1093729bab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^@<6P}!2~4N?RmZ#NO2Z;L>4nJa0`PlBg3pY5H=O_Is>6+^l-1l|IG*h0b`oIEHu}e>=@lu*HDKb+>i3x{%gFz9^Xo4IT#=JytLm zILIh0oERX|(EO&+`gZEA=>MA2|9?`SdGd*>(yAHvRxQ!md#U@v?seI>uT{sl__-(* z%}bwKtye2oF)j7x_gKx;wWa4$&#l|ar}(9|zQ1mg?J`sfJysrWHugn(tv&;V!aQ9ZLp+YZy=ExLV94Qe@rj56E4M|5vd#krZjZwU=e6EB zbMfu_nc+Ey**2(EUn^kY5ct6|r}&JH(z1qCOc(CnX<%Sv+TZ^APOM9asqy>uX8)C# bSgvt9pUbqBF^RGQ+Q8uH>gTe~DWM4f3~V^U diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/m.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/m.png deleted file mode 100644 index 9f020cc1b7d489578334cee644e972473ff7ab32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysrWHu;Sg7cB(}?e}zX4DmSrcIrXi!wNjEb5}7}Os;6jad11qmdJeLfbs-i zCp8Y~7QquN?;49cuV}3b`FVfdgg+`j#O8J!m|J<^Y+xf-$OrzW^v7qa_vcC*Gdp;# zoWjI#?be*)9zg~#&1<)~n@ui%w>5tMJMN;y;WLUYUFUXI&buwFw~j-w_?%0~#ExmH zGncJ=WWb}jH2*$>p!5pUzk46poIjuaYL2su(yF~YiUNX4RqtI>Vy_p`sfJysrWHsfZ_b8bMPK2I0N5Rc<;ryk^GR^(yXsll3~o}<3SL461F^aoKZ7`zq; ze{$&hWG#1G{nH<@#9jlpnBsE`sfJysrWc0vE5eUE`cmpxq^Lp+YZoqC_M#enD7$CCpjS_duiXg5Vto za{=`g(l>Z7@mBFSaWp+yaH#N0b(XzU-4lLaF{cLguTAY!88{~}{AZ{*J)iGzLkGiy zz3+GVNr|Ogii*zuZfu;rwzYAQkYuvJ##O8Sc6GR1`Chw)=hZH`;~(Fg`5ZGXbqmk5 z)SIj8rxokn5)pMRH2rMT&!(^_bJn?YyVkjgtYts5W=hht!+~D8x79k&wpib^Oz+8@ z#m2B^Ywm41=hF3WZZCbmcfXm9n!?{@Kxf!<{9w3iVbin3`KKe$dkmhgelF{r5}E+A COnR#T diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/p.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/p.png deleted file mode 100644 index b3e837cd82eb88546ceb17b73624dbff1683e838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysrWcE!xqef~h9lb$Y)As)xyPCLlkq9EYvzM0jB-GOyV!(0c>GKIMg?AsV* zZ!{*eUSg~^xLG0GD`WO>ZUR$f`%mW=Mdt!0%V}L^@x8#pF#ojhwObO4ugxm`sfJysrWb^~VVb$fwAH$7b(Lp+YZofgY`M1kk{&8I9^7%gt7gdBRtz-b{NG@+p- zYDTkV0^b3~?-!mF-3)$z=v%?V{|-S+e_NNy^K1<(T`Kn~snmhJcWa z9FuTSSyVZ1_TGkC%javhG6*E!`Mx)@!--?5NVe|m%O;$Ay%}9vI_6t5ToBrjdz`sfJysrW4t}Gj^ZkKBO`a}}As)xyP6^~~HsomOPi4|tC^R8}(_>}xHOH+F8>|*^ zS#kfJT*}Y=ou@|exMOwxoh#haMH?7c9`sfJysrW4%L@&VKae3$30yfLp+YZo#x2fX28>WTAt+!<5UK&F!l!w+7>fdReYHE z+L|L*H2-T?ZFy{cp!JRHG`VZFmATW`7ME8A+gC;MUSQz;!0N#N&Uo{bNgXpJ1?N8B znJYcz<&0~kdmqgy=3w-3@h*`$F53Ti#j1?n0`^tA-dAfLz5BY0gLOxBk6}xI?2|e2 zYh diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/t.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/t.png deleted file mode 100644 index 00432047f5efe9ce1711d81a8f11162336eba2bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysrW4s)sJ>KB1R6FprVLp+YZo#x2PqR8WVT4I6F1O~1y5fuf_DFK`w4orMA z4yzR3P26nzX3775pD!K$y)rVpF@;Z{k4fZ%+krX3VgX(gS-;$4WjteZ?8d4Y&y%MY zuiL7WgcT&TVCvqLde{?dnqFNO)$?V(~oh;-2sJ-yUpZ6m;gec1vAuhW@^; m?DqnJPnf`sfJysrWPJw0L7XJncE%J164DmSr_Ub~xBMJhn7oMzZd{D5(fpZCq)dChThafi9 z7Cwzez5|QG7JqX&vyywKXP)1i^7ucM#@z{SM_!(@SvK35fsy48_k%gn*G*eCTo-7% zb}On{m4RXFwY^fwEdrL$wf(o~oNo8(|HGZ|=S4hI(5dgca&JHQ@N$kc%bxE&8?Qxq zbr#DdzuBw3ly6#v8qiH05nhsW&U|?(?7+ZyypnO*q%M~^Z!$jtWf(kN{an^LB{Ts5 DemY@* diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ua.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ua.png deleted file mode 100644 index 7d36a0e98a63a6fd1968e086ae446731a4585e2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysqrZg#PYdYwR_Z=NoWAs)xyh8^rZtRQe_&Zl(m0?vR&?*pnA8lwx?^%!?E zEns@W<->mA;HAd*;*lrsp42FlQ-8Ky`7NKZj?nhp+Yh{I4jx^>6#C#YlV!T1%gjSz zOlwUUB$E5Ki&$sez7|#O>0+7g65?g~T(8q3+t+ibo7<)wn|0k=Cd7@*u9RK;oMIH no_e1hSL0npS1|o|cpx3Qe1+JJsXGIJA;942>gTe~DWM4f847}V diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ub.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ub.png deleted file mode 100644 index d1eacb7ef8cd2dcb0d0c6fb4d7f2ad23e18424fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hIoUP)OV6WpkIDn_YS1f0~&v`2znyxE;pY6+(!0T>&6Tk~B>Lz&ZDLJj$~4>4}aPRM#~kK39}dh}d=AY482Tol;7l zQ^uH-GRrc?Sf1xWJYb9gz&y{POm@xzz^M)I1B4KWSXI@hQ{=Vp`?4%P)><25ybTwO zsTU!HbM9kA)LKg^$8ju*;+iq#oc}6r+eQfK`~Lsl_dTGL3L)CI4f|ABYXbtTwTO6) z$$urK9EL$D^(mlfnrWJ})<4JXoHND%fHCIuqTS-ZC;}n?z5!3j06NQ6{=WbK002ov JPDHLkV1kG!kc0pL diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uc.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uc.png deleted file mode 100644 index e1f8bb9e0e7e3950f920b95f633e496466f4f1f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqjFP)yL^jFi$40;N@-Af2bB*&Bu!@w8= zfHyw?V2qolIZjUi0Dur;t=*0GeV+s*imbK97z-hGqf*MWzQ=sVSWy%Q2R=RStV9T* zqzIQJy1mizJonz;2oORn%X0h+E*05Yix67ZbvL@M>o|^=iX3CCs!B@vsSo}(;MYag zS_42`*Khu9awJDZc5+I!z5oCK diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ud.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ud.png deleted file mode 100644 index a5d2343dcfe16517550e55bbc0f8feee106bbb29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysqrQ_&@BUG@Nlu6nvShIkx*JMAEEvjLAQ?<mI+2{d3L;v^dE?eGPGh8X{ z?O-U7aldSmd;3^&l;YBT@8eI+DLy8l#3lb?c89>kndd*NC<(Gp=VyqR_VhcSp8PS1 z?6nEvnQNa{im@mx`W`37z;Jt;C*!r!UPn*HJ>R`F4|dG3wB&j^_xkEpuXg#d95{2? z#PIXoRC6BZH(v^6*58?19QFEz0;k5O?W)X14sst@HuJsTB)mLB9_T>^Pgg&ebxsLQ E00UWZb^rhX diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ue.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ue.png deleted file mode 100644 index 974322c69f5280bd2b88512e5d688b18474f9938..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysqrQ{A5Rf0Teimpxq^Lp+YZopzA-umX>(@73zC1m;bQJqOq%RZp^<0TLu+ZD=iJd*rdkmhgelF{r5}E)= Cx^<%f diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uf.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uf.png deleted file mode 100644 index 253244e6002ffc49dd28a84f6a071cca1a7136aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysqrGnS_Y=Dk3n#hxyXAs)w*|NQ@N&#cQR%-nl$1?yrl9!Bm6j#U{M83`#V zM^vNZ?d{)-sT zxtPe;#{BSvcNjtvLO^%g2fEoF zzytUPfX|b8%d&J`7eb(v0sy77swx05##B{x6=00fT3c%=rK<-3)_n;fk>U`uzV8`h z-usQ;dyg@0n&!AX0`T4wLWW`3jVh(0fJl?I))-?U#BQ`GinzYVe8yOw=LZSj9qz0| z2%)G5mn6D<4$?GTmSy7vfN7fEON=q+{Fjp~g!sDGrgKtCrPQS+55s^En&){pnq}G5 zYbu10Qr3078wG$rc`sfJysqrGu`D)>mLGzR(iTPhIkx*JMADRiz1J!@oBLn&RdPDHyWo+;L~yS-oU(- z$y>mB1M_zSgXyg45(PI}|74r+KY2bow}(;tYtvCB2F8C3ALdOL+_?3a#Okd|i>3%M z?D?+9qUhq~nVs7+bE`!9rfYTb+DjQ6dOm*nbyoe+oXOpCMHd&&`5blNZT@4eg!v4o z7RfVxx%Y6F?K8(M%bAqqPClL!?8Vp+bjs5F{f3LToEVtau-7m&O*xwCIAz;rpraW) MUHx3vIVCg!08tuZVE_OC diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ui.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ui.png deleted file mode 100644 index f69e3f857e6a7c7e11ecaed284b3bd53d33a5e8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysqrbJlJhvnZfYv8Rh;h{y5dKmY&RGwU)6Gxr``!Ma$Chmkv?BmCBd3k44k zu{t{+{`~wrI}3}7ii*I}xAvL|e}8@D;o*6If4_Phcc!C?f&zoOd+@JL8VaB*=xJ3rrliQch`X{SN*7w$1Jv^_n@oOtS%Ezo)fPgg&ebxsLQ09cDc AmH+?% diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uj.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uj.png deleted file mode 100644 index ffefb31042c96f3fdd04d151cfe32eb1f9007674..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysqrbBPyPQO!W1iJmTwAs)xyUOULktiZt`sfJysqrb7Pljiw^^Zet5b#hIkx*JMH4c76qQRo3nKttQW9&Enu-a5z$zZ5Ve8n zjf3?8J|FfB)=P}P51ct`duQd2(}&M~*zc$y&&hdMx#d97tM1e=Mv(*d3^x5|qh9CU zws?Nda_!bBpKdRivg-A%YJLW3a%;;MvbLcdMluIs`VpuYUjcIisQRWs_C`0YgQgEmnQWGEv!*$=7Zb z_?G`#kQ;sOXC}MLUCm$@ACD`0{rWnirm1?f^cZTYGMM-l#|17wF79+B{QdKzR?i>p o5jZ4K{NQ2WK3&!ThM$c33B8}g^nX{^0mFd7)78&qol`;+0Hh>|(f|Me diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ul.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ul.png deleted file mode 100644 index 47d868a0cbacd1e3148c7fca84eb9a9f820e9b73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysqr3!c)9Nrph7W=|K#5Rc<;uN~xVP~c&`kadUMt(midGeP9W0%ZfIn+v2L z99+z9x{=-Y|HhwZy%iL7iv1>>;W`xP(8$klJN2-o`LPYxlolB-oASwLhPjZ_j+-{_ z`jL(MnYV^TF8Hp;VX*mupyB54|K=XoJ9Z1opD; Xzgk3!mmjtPI)}m2)z4*}Q$iB}sSQvX diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/um.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/um.png deleted file mode 100644 index c45333e6034076b8fabc626ab19d9e2314ee5655..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwKPP)SfD)zy zDM2c5tN==&153~j&w1L?qfATgU;b#+%CE^(g758(smp9zm?n#h&$LoSXR za0C81Kqbsw&H}x~>;zwbq1?zVA17c>hF7sjll5 zrvQKuLMiY`p(Q|imJmYn&zS(m7yzV8c<=Z4=Wwf#Qmz%mIRHd-&h51S0l;iW z04R#W7_&bCZ+ejsf>H_q*4nxGXsy%OTC0>wH=D)Rc--HX8*l@z2mAt)S@#guVlb=# O0000`sfJysqr3-cq%)uKS5kDe}$As)xyPCIzEMM0o7-TePu%|^aCLR*;LHbgWAFh(#= zX%O{bzttprqcMu{f9dA5tIc;Rj=MkbPOF$)*(#v0?4Cd*=L7~$h7aX+IxRDvOER=2 zIvnw@zhBO9V$+$Z>TfPPCIxAoFFyBkdVY`Lv6#61p-RtV?ti~*Qaj7V#pV2$hK^g? za%ZU}P2PI#^{%Y7$&3OQEz{S=PE);RzV`L3jwMqBiyzGSe6RX_GNVMYm!{^^ZMhpK z>9lYt#CElQ=nO#+dy!WsF@NG|st{^3jhmVvLP3R{=3b zLdY--E0a>XGEV~X=cJTMsr>WNS_>f#_nuX~bZxQL=C;|HzLlzSFDifnfL~)P?e{fw RnV|px002ovPDHLkV1j#yn6>}_ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/up.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/up.png deleted file mode 100644 index d48be7b8cfb41d25ad1e53532bd9c29a7dc776bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysqrOX>Fu)V2eKwtKobhIkx*J8dIxivf@8T;bXq3ilKw8wEEpYNs@B;MA^Y zu3%M5U^Q}F=U_Egqwjzw>!kXphrVh5`I;K))i|xnF`3hWfr;UTpS2Um=}im`hHQe{ zbA!DUA6fL(-k&e*)tc1Pes0R7t!49`U%olJVeZ1Mao4|ofAd$G=kSDLwMEBwb7Biq17(8A5T-G@yGywqEYH9}n diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uq.png deleted file mode 100644 index d20612bf0e3f1f77cf23b2f812d1e18c0b5b66d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmV;a0apHrP)SD+F!N8m#Tem}y2FQc z0WQFKeeFEwoO8|*LgslUgaAO(G-;7h+##h@UDvNWh)5|##O$|uK-YDg^W{Dw7DW+4 zI0f+D1Hjr%>$?7t+1mgqC8cyNYK#GZ?IiBm+A_x0qCyA&===V7n~vl7cs$mksf(s* z`o~5qiemeM0I-o_9#B=)2EaK702@Wh8_ik^0N(qx9{bfI?-{KuOQlp=Ypsnj#+Vpm z2!RliHFF*iLZFlyV-V3=o6_>$mu0E7{)17G7)mKAW!tvNU!3zjgJ>_{wItSBM0`G4 zdbi_FURqZO!5EvSX&8p&vU#4*j_akg)`SotM7GWc0na(ub=~%{+x2I60Z!{1>qGYX Tagem$00000NkvXXu0mjfbHTL+ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ur.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ur.png deleted file mode 100644 index e812c3186f8143411f9e41e603b163045099ea97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmV-W0k8gvP)S3m_HX z65Ii#lCl65ahgz#@sV~)79nb;) z0Py|RgNXKhS4tUU06;{>akSPt=WY?|4SDaco~4u!g0;4k@;3I#6KSo92oa}gYM2A( z95XX>D}dJeJevSwjPpDLz~=$XOhf<>WBfpwo=Pbxr9>p9bmX~JnbulE2#9zm_95W- z2bX1O(g)XMw4FsF(hy*+J#VnC>+>Xg?-B8sdfT?0_MEdZCg+@UzS>_j{AFzs5oQK} iU)pWxdr=2;fcgOyy_CfoKG2r{0000)FhWKkBV>cH0VBW$WCPfM9x6Rmd6DW$yhEk@H!NG9jg7_7T4V3j2Ya(_ zzzz5ZfKQ@dO38Z<04XIQgfYf@Z;bgpvJn(Q&{{u_rIdM|rIeId5O8IGtG4=#p z7HX}f#FCoKIrrY5jMFrcx<|=kSr!1;wyphLjOb^r{Z2?JwXSQ7YXyKlW6BtF&Yc=ge95F`H_x+D z$`~__BO)HhvG4n3S+5!>-9H9Xw^q8o4n*cXu0RV)r0LO1{b002ov JPDHLkV1l=yjwJv9 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ut.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ut.png deleted file mode 100644 index d897d27c64780aa6b2917b04be971d4991fb5c21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysqrE4@i}8^eJ@i#%N%Lp+YZopzAZS&^r$c4_(M&b$P-0v7WNyl2#Qb*_HF zmY2ZKTG@UrT&_an$^O48zgk;5j!QVdx#FB7#w>AwL2=&ef^$2!Zadd$xb9H0X0nf0 zX4Lz=L0Pwgx~3G>9(L_sv-RB0OhyKVWv)jA4&9SfNLu^V?m^7^?Jf6y|5cp-`*UDa zcAN>@AKM3ybZ2>K3SO*!@5JHq`sfJysqrYmP__*4IFx6P_-PAs)xyPP@o?SV5poU-f+O^oddj+cx4U> z8Z}8CyZS$0zdOIPSf`|95iD*I$&+wEp5fKw2z3} z-(2jMUHg4|E;EDXQv)7%{{X+*`}TXE?frf){qfi1_2FKH;)V~x8Js$b8Q1@^UE0zS z&ycZp_A*aR+aIrYO=I}9xT(X5Blq^ZxrH*xJ*qbs1zs$bWspc-v(>3XLRm>F*=y6) p==6GZdd>S diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uv.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uv.png deleted file mode 100644 index 8d6cd3bbdea1f593e8b09140f47ea859542679af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysqrYgv=84}l_#9G)(YAs)xyPK)hrF%USue0nuI`xQnD4ZZ^h6&Tq)fHaUJ zRNx@HMPo*7hLc(K?tl}M?l}MVU&8!(wttYDOTqHG2WhMh3@i)>-uJCtrFBe#K_dCq zwx@IKqhIfeyM8sQyCXHS?u*mzNkQ-SD7QpROTB-X@qh#~L+tgvTkEXs85NXVbh;j` z{eJkvUIs5sh99rJy*%Zt<}I>0KUwAF?|(l7vj1NC-0fSIHLI<-PO)Y^&z(J4YnNy4 z+Qc!hkwa17qAma72bbgStK}O%HhULRTjTv?m5A#_i@s~OEc*7xD{U8uoaU(+D;Iz6 zz~7o@mHP~tmAo#8XqLX3T+HzQ;msq5j%qXfvwy&-#=UdFKl4A1z(8T}boFyt=akR{ E0N?qLH2?qr diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uw.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uw.png deleted file mode 100644 index 0d5f3890cb01ceade5bb9d1b17eb32a5feb383ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmV;r0Y(0aP)YnB{xewo;FEDTB%?vSd&cP?~1s}#O za0}c50N*d!vMiG%0RUr+Qp%HB>#pn4G+maZX&TPC=li}N$B|M>2zXl! z$aP%-V45bxw{6?D?aMg30@E}Bz`Cx8CxkRjgGedmUYy+?aLx%K!5@!p+ZbcxIHJRp z(ko3CLLdRHb>H{PvTWNHNNerIDH1}=^NjB2dH#4jVqv9JX!vP?*d=SNw}NwyD!XVA zilvkiLhMzx3wH=9WjGU$3L(UQ4#QxKIf(G40-rK6B<_Fk?c65E<`zZaV|lS)T~$@T za>>1el#)`4R>>Fx0CinIZ{j(Ne6rSBl&r5zYt0zD^4P^-jAdCC`xDymHx~If?wK^k k9M6wOa{qYU0{>s&2kbm4AE-gYjQ{`u07*qoM6N<$f}$t8hyVZp diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ux.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ux.png deleted file mode 100644 index 024bade9b32aa3d20452de9f458bc00beba8f155..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysrW20;d64HX6kMo~`}#}JR>Z>L@CZBY<$y`S?<-b!LE!`lOV8<<}>SRdfi zU<49S_6&X@<3h8p$zRX^KK@j-z5Jo7jT1+~(z*vpcN?S&m>KHIzx~=L-==uJ__<7S zPqEzJ%6XR0QzOrP_R);}yI-{I>0b2~5!a0$mrm(1d|zuJBoh{q&FGN*H;+rvX_mrL z4~|B|xbv&0%v$!+o>7s-$s_jqM#ZHe9${Juv(#E9Ofj;ZQ`}Ioks)F2Uao|mO1t@? zp>vs*@ZH*^b8cs$%-XH7*XPdI@}=gH_NA!#TwFqj4Uety_ImmJMJ@k_d)}Jnd`=o4 zEoGTCmd;P(d9` diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uy.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uy.png deleted file mode 100644 index cfa70de56d26d1a4158a9fb9759877fd01d17a68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysrW28F=48gf9PFP<)rAs)xyPP@CdMM0po{p>zxc0cxM37pd$IBztTIdEpM z9^ukyj9`pl+}L!JJ^swS*Y}@QP4>0$Z#jHsy38RKH^~Yg=YW& diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uz.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uz.png deleted file mode 100644 index 8d1fcc83fe1d05564a170ac03ede1fc843b345e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?WRP)VI0003ENkl649ELj?j1(Z z319==fDs%)H^2?l4R8Y707t+HU<25|@4@6^_>!~6^WhTzPo!!43oR|LbzR|3eZkFo z01x0F0KPF!N~v)iw=-jmQVIYu#${Qglx1071$gg62z}r0bG2>joa3Ay1g{7QA)Ir2 zi*pVDwAP2QD1ekQu@priguuk2N|a?;(h_T}wHDRo^`t@wl+v#2kp8CuRaG&@@c!oj z#uxxF#@q#9jMa6WRP4_HQc6NdlJWC_CBm)>@BJ_gN~vv(@p>WuRrpMF0Q* diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/v.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/v.png deleted file mode 100644 index 0ad4cd8a334f33a21d9548486e4f6c2a2129e8bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysrWPJ_8KnvH=%XFOdTLp+YZopzA7Re`7Nba(mP19=BHHZ&@qV6$qPeS&Qb zgRp^<`vu-#d@9FgKYeiY!+fbr&$Rz4E|?*C?+Slh7_*53a}DDK+q9h9%cd|fB=>9; zV@T@JRArd)TvAZ}Rpf%qS<_N?u9rye@CedodNSvD;hyzxexEaHH1N-sb z?Cl$O{c3gmqt7<;-Q%A!8p|KQ_}x}e@Zwg{&MALfi_a-4DOo+&I=6Dq^rWqK?paON wU;Xr3SpSL});!KveZ$^{Uu59@z<5CZxsQwKY$3%2puZSAUHx3vIVCg!0Gt7FhyVZp diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/w.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/w.png deleted file mode 100644 index c6edcb49b5f460c2664587157b62cd46b45ed5ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysrWE@6>N3!8vKpFCY0Lp+YZoqCYBMM1!|{p`Jk%r6fJX)sz{@Y}%b9iV-I zZwvEVhP4TA8f<->Y~FCS-?jb7pR!Nj{uzGGGu8b2uQ1oG;W^R3^Mm<8<>u=qyvaNa zt5z{JBuc#4y;Y3i*FO6`#JYmrh!w8{qZXX8mig-u9XMgawx_nZmVAqib8PFyr|tn!Sd<_r`sfJysrWZn@%$H+4XvbDl1aAs)xyUOmX$q9DL};d~nR2IdzBgf_5PH}D-3deb1Z zf!TWli!e`gL?$O0yQhWD3cA6sZGWr)b$ zy^h(y_wu$}hB?K@W=#G(Y2p;2hSJ#YMUi69?*#ty6H`z!bjx1bVNlHBxM}gH_~7@o zmrah%NR;4en{c1oID2h!PtYVLg{2}+7oyVd)kz*WQ~mz4&Gy{WXTq7z__(-xy4?GH xnnCGS`tQ9=3*P^pQ@P@odiVk+(I3nYm^V4Joa|Oy`VQzb22WQ%mvv4FO#nNkab^Gj diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/y.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/y.png deleted file mode 100644 index 98c8626b14f31920ca63cb8c34911db9b173174d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysrW9wrS7wQoS77oIMTAs)xyPCK}|uZ9lzZ+x77cS`HU9*$@4i^%rU;R(tbyzXaJ+=2j&BhbC1}Z_tIo= zII`|FL&E*MbUl*4xxzS?YC*|i9%Jdpui+W#s(01x|Czq(# z0#15@BCg7d?%Xq)ygqhUc8I~|;&;C{pRg>S_q^DthM~ga)}b?J{>Zp24f+}%!YIn{ ZKk1OKwfSF%SfHO7JYD@<);T3K0RU`Qfaw4L diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/z.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/z.png deleted file mode 100644 index 644a5b3158bab6d2441751b15836855112cc0d58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJysrW9*L___j`ashdo^!Lp+YZz3Rw&L_vV{LfK}f0teZKW;WKT418V8Dj`fk zR-p|nT}%ZBfX@E3 kUiPKGS_1>qKZYL++P_^-R9%kp2Z}Rzy85}Sb4q9e06MK|egFUf diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/1.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/1.png deleted file mode 100644 index 3894249db8e513cde9912875bba551de948fdb46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 965 zcmV;$13LVPP)7S}9L000AINkl^N*{QcFhN`G*0aB*?*=k4Dpgb+~_r>Cc# zQ2v1Q@pxPi1bZJ>u5fo_xXH^q6mU8Gc!X7iN#`pKmY(jq0q|8 z3IOcx?p|MCQ=XnQO}o3hGYmsj)mSWsh?Po(<2XbV1R)-eBVr7?Xs8*{y&jUaFn&3Wtr!Bzu%9D(P(sWaS;)>x3`ywQS^Gf{r&y+rT+Q(d17LMCTP80cez~l z8zv%tetvd$chk)J_4W0`!$W(YR4VoD&iP{ztyC%<9UVPAJ@$t*NsaR0S=m$`}PkK?=y3`{njE{-7?_ukIf*!9Ul;JEqm_KWEo1Y9lzS>Jb9Q_If! z_K4RToh_R#UOJ?{L7-cNEw`!HDM-Ue^&bc+0&w(haY}$w_desRqpL=x!JSY z1SYAR?4KvPE#Ugs8aw$jEa7)^e`sI$TbD1_ci7<2 zn%7^etmeLpI+}E`Q07!p&&Jog*1i6hBFCoErw|l$GX472kyVGFT%AnNb}LSVY|9D5tn|__dEZd0=`P*m9 zYpQw%tqnV@f1z1+?e*7*(=uo6jeGCCDQM-3U4D^ox}R4bdg#jPHLvQj$$pj1H+58G1+<}}SbnQ|#>t44S8C6lw&i-f-DA7ZYzkjdMAd%m6QqMcJzgg8Ti z;Hd?lqKO30pB*uJ#xr~3D{bT^pG=96pO)$x=)zGb^L_8b95e21RnIDdM2>FKIlW25 z^`J!eq8IMxKWWcC`>blO+7_;LyKYZdbK>3Nl_6e%Q?ADzR%W)He_rSGK1Pi_cNlR* d;J>MMj7v<+T&BDbumvV922WQ%mvv4FO#qE@B{={9 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/3.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/3.png deleted file mode 100644 index fad9d20cfe5e5b62a221a7ce9847dca79eae0e80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 596 zcmV-a0;~OrP)H}S_Bo$H_!nbQ-+;jDu5E`06Op=m|+}7Bbtz?**&e|;1ia&Z`WcN1~`KK!9fgxB2Wa1 zKoKYcMW6_D_dxr;Cxm#XC<=cwIE0YC@5fG7E6$)tyRI|FEKXsJ>ADVM^h{f?wRX-e zPT`!>T4Rjj*5|Te-rBa6QVvTdrEJ@F$ZU{fQYobnB3yFL!w07ieF7-we7sixz&T$# zv;yd^w!Zk?-jmk)dcAJr0mc|(Y&B5ESjzjf*3s-)cIio2D5b2mi_v4PRZ8WK(Pt}K z*R@Zf&bi0q5!7^)4vaB%U4Ju1LlQT}csM=pizb5F)htecM0O1?fYPUBYvdTBfS1s;U;#$^Cx6-EL96HKqbWNT{pQhYneV zo+3s!Hy}O@G_gP{%W|?DL*cydpAGm!?2{`RjL!B2WbSiv0udZFR4YSI^i00000heao;{}ayT3S z5R1iFZ;8d?FLT1-FaW&1zB0|Cq9UWwm}-yi@9&qFm*Y6jdh7E6Wu({Zo0^*Vd_HqP zL!ppDp-A>#nw*>*sZ^TKHA*&US|lZpkB@I} zZ=B;yZf-8~7D&2B=jP^aZ*RGQQWUkewpLM5fwumydU$x)+uMsoA_|3~wzf8XGkiXu zpO=@nu&|Ksbv=&brKP0+kPLTzbIo*od`u9;5BO4Ix7#_Vn@PX*7K`Ql{9GgwwY0P- zl}eY(RZ~;Lj_Pzek|do@r$(bOnM^p2UtC-q92}%N&C}_0-QC@cJwHGHWwouXEw9&0 z)AZHV6#%&1Zj;IMxq3-a_T=;Vn5e`wmzS3bg7`dPdU~2M%w{uNPBG{y1sxn5l*wdl zlOTwtr6soc@$tdhDwRs5QYDx)atF=I%F=4JzZU{>KXGR=*RjZ~M*Wo2b-#F&_vsH&<00I%1}mU|e60l?1A4gfG8q;_|A z+uGW=JuXA7R&)DhdwcuH$Vfp!!OF_Y=H{kWtHm&^va(Vtl>$H{61lm#;qiExnVCYN z(Bttq91ej%z&+3=cyxlnAbWM#2*8ML! hB2Wa1KoRIa>ldJcqhTm*w2%M*002ovPDHLkV1ftF2Y&zn diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c2.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c2.png deleted file mode 100644 index a8c95a87123b926713695f00e1ccf64b5821debb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1077 zcmV-51j_q~P)Bqd&dvD&({&wHY&b(O;gb-AMa6yF#2F0Kl6oX<=42nT9C@HZ*OlQgakn} zH#e6r==}UVQog>v005Vlm)SA9ySv-l+vy(kZ0v!0JRXn7lQO5Krerc%MvTE=@caEL zm1=Em4S6gUi$EYK;C6-2dYjGG+1Z&g^?LpF_4U=&ReDS$5|K)!UavP6iy@E86aD@DDKi)hhC(4UDrlNU&W47Dy}dp5QlCm?x`e}F0D#Zu%ZTji z>OwlhFaUt}_ji_39|#26+S;=Hb#-+Lg+irLr8^xChg>d4y3^?t2n1rWn5ERu&dz?< z6p2It0HIJQ<&j7vXJ=1%<}Sb%G78yRaI5(?d@{8oM9L~ zpZ^DI{m94@%4yi=c-m`tYX>S_Rh z-EQC6*%6DyKaZK;9HaTl=jSH?pr)p#$bL!=`dgCU=gD9&oS&Z;f7e(nw!gnG6beiA zMroRk$K$_JR*1!7E|<${>R(=7nwpx*y|{aNdXh?|6;Oqqo}M-~Hm zx7!_$$45s;lgVWHmdmIFMKdGk4z(F8~}4N6Jhj5;r$DNLMPAN~MzRF`7suva<{! z)ai6BEiE}Okw_#~tCej~y27@6Qjs6_d(a|wDI7rj9$z);}W?^B0qNu~eLq4Cc)9L>6jWhl$ vfY* diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c4.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c4.png deleted file mode 100644 index 74c5cdfe2e677593d0fd24cc0f6d506a0a9ca6f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1124 zcmV-q1e^PbP)h|<2K3Z>C#e!su2t}a{i{#CnPB9Vy2;xx*& zwY8m{om9`|Vo129H@$r$zb|xa5zq7!0OzIGs*DpPxEFp-{+VGD7=&z6^u%`KfogTrDjv zWHS&5NTt%$0o&W#GMS9fHk(Z-6jJjD<#M@9CX;Ngudna!?xqfiL?TU1O@y}F?HMi5 z%-87q`#XftZnvw|>a^b4+FF~<1|i(q+5!Ohe7;QXmC=EZ2&Ak=XZB^d3kx?A}RT!Jv}`!7>wN9+;5aUecw{V zY&M%rrceCv_4W1O;Nb5?6vHqw+xWM8x45{NvZ?oYJUEW?c)YT*vhSNX8w>^v!;X%Q z1Omaz%1X8tY34_!TrP*%w=aljC=`mtVn5(bi9(@hY;4T>`IPyjJU>4J0LI3~()_o# zw~LF5XJ=;+LXXEYKR+Lj$3I>5XS(YrCnq@^PE}P^UteD=7Aq+!A^Z-9BODHoj*dzs z5|Kz$Q&Ur3UOq4|5Rbot~bu*=(g!`M*e<(N_@!ia-%4 q0!5$*6oDd81d2crC<6Ttfc^##Mp87^nZJSn0000S=51)mYdzBso1Cy4gi(^Q}y|*{4S3hzPVR+za5T`35=-S<(z{PdYX-$qx z$BoXWsjUhfW>FojQ|+B{*66reA9VA0y;$_fAt%9uez_)(np5&7y1o&V zW~#{8sTr#qCmI}kA=~7dFT}vA;lRih(7+_J0K&Xb&#+2)cAnA97bW&jLqbgjI3je! zq84nwefItL>b>_azibgmiY(iGcUO$w6NUlVOpYV zV>Lv?x>*lC;rSyE^h0LU*PSu%YV7{MTDM4JYm}~3@4vsH^;UC3LjRs+R-63t@#Dw) zHT+e$?T*bzoDsHq>;3o18zYn^E+`2uvXGf{@=4LoJ8#PtX?(KLKW((~iORy6KF_kR zKP))%xKL^#$HEe;zpt{SMS@Oxp1W9MC(qX&AGHdYskQ&<)$T< iFr&p+K*K)yFT(8CKZtES;$jI*NDQ8?elF{r5}E*BMj2)R diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/1.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/1.png deleted file mode 100644 index 3654ff91c867daf6eabdb97f02ee3ac19116b676..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 918 zcmeAS@N?(olHy`uVBq!ia0vp^7C`LH!2~2%1zlDHQk(@Ik;M!Q+`=Ht$S`Y;1W=H@ z#M9T6{T_<|yQ)RY@rW1(24+)F7srr{dv9mjdb|!0Iqv`J^I}og?(VBgIrMgkZ+Y-Q z&FY1MlGB|#C1MA)EG#;@tvW1zgtCjuw(#*Sbvn3f>V+nSur)J0cn_M~ny_VWK1a)i zYf`5BzCW33{B%zByR-ep@9f#5x&)Z)59WMu=5Z7h!H(>Ce{HW@{mUT3Z1z%(R}UUM zh-Y8BX3dh!U8`5WzP!H2Z83v_XOPiMmIeEZKfZP8&>^PNn-(u#eE06%C>05wd2{D}wAsIJUtLYj8V#<) z2Ael;4h;=Gs_s2$%eHN1wzhx8UOar5=K4`3-o0}t=WVN|qFUeMxcKRQGGx^Qjoo+Wc`fboKlilg{Q2{#THil?QaZh9Wf#+dw{O?3S{1i` z`l1#4_Sr4JoOw0o#PiQG$EV&r@wvuouGv>vQP)6$ma}JlT>~rTmG6w%yLWHcO1sG? z=ggTi#gn7`@W+ZfA+P1-<)1%)-YdBL^3RLcu3xz_C1>x{q)j(-R`y~Z)!N+WpSJ_YnE2<#i>)LUcMY0Ec(&#CzySvZfel_hs%pV{(=T@w*4M9Jwd(fU zYwee>FAp)By?5u%%>4X%ZN-^Bx88nRwrtt=qf550*}66Kcgm}R`1wo2x?b+?O_Xr* zu$sGX_ip8un3$N1qAPb!pZ4CI^egZ7jT;ON?d|QKKNmAZ#Ko~SRM^PzwKFDUX0Cjq n$MrwfEr7)pE4uJs_KUgM)w27srr{dv9m#_Wm3oam?SzRW*b&#AS(v*F}4$f{$Ig zB?3|A?BcBY3K^v$>QlR%1s67#ePHVHie-`Q3JJ)%#C5Mti(_rBlT*uw**+t)mtaP!J;&g!>MDD#^jSOlT>^!b0}`U zxhAUr_~er*UVk?Dm6w;#ojZ47Ku79LAXvU!-RAVBHJ4weM1K4Du`ng&$)iV1=k;`S zSehOC9 z)2B~Y)b783|L)zj(;k1^aW(7g)1s)d>gwGylC!g4zj?EU>BWs3GZZ-D8@6rRrl+Sj zE&EW?MiwSU8zH{-k3Ws=?D_;=y?8NW{(OHGp;PZY_sQG; zJzZT@A1kS_W3hsWMpI>+}yi&@5`5& zTVuk*x9{G)dg-lOw=}x6-fbwc0>)RXTy16LMc$Ck+AYhMFWF%R%%Bl_BHAHsp-Mg0I)%V|Yo@ELd~)aNmyaIH_Pf4vd|*8*I~{*wJ}Hi0cN!9B9TT*u() L>gTe~DWM4f&I!Ff diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/3.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/3.png deleted file mode 100644 index 3fc2186ac8cbb7ae187e6b1f41a990feb3a1dc60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 931 zcmV;U16=%xP)rP3Q&Lo6rcbF zC_n)UP=EsTUqI98v?z){0J^`we|2?L=!sLQ6wmVrp`)WCgit&lm#2at2!ikjXgC}; z8jXd9USD4a0s(}O$K#PE4F-cW4TVCXQ0UVEL=jb0Re~Up0!K2L)GxTdzn7=1+wG?4 zKp@cH-+z97jxpZZ*;!j#>*(l^pOw$&3x~riD=TKR*=#oFERxgd+}PMCD=W)nGTYnR zo12?YPfs;9HL5G>a=Gkwdr?u5){;9Mj-H+#y%jAkF8=uVkhVopq~o)*vvj+@zW(6g zAm_k%JZ`hu#>dC$uIA?E-QC?Uthan#Db%5=mmVRswY4Q}`~Cjb)>dUrUteEuZ!b;9 z#>R$*hEyrT!^4k{k2=<_t}c1{7kzYUYRYQ0O54@d)vvFw${IpQOG}G9O(v77zvgzk zOG`_2rkkIim#4q-hq_#@xw*MWBx1AKqR}YJvdS7!6qWa`YVbU7GMNkp&6SEqqvhr0 zdA*r1#<5t8rdF#JV>~l6GcYjF-rlbDQpoe8z|zu^>NTMu^(j55D2mdFVvH{@FQvhS zg@sfqH8L_Hr7X*4G8u%>;^N}h`l!d_F_}zSdkG<{tE=*JR)N;l)m>a%AcQ!MYiw+k z25)a~D=RB$&GGRu$8iXuY&I)DHs^jY7z|n$x3jbJ;o(6G$}mh*Qxn55dhKa%Z?CPb z?d0TSdU~1;zP-KG*49o=PDUb;<>lp@o12D)hKY%Z_4RdHGdMVCG#V=^D!g7VA;jzT zS}c~5l9JKUQROU&L?WBb>OA#1od;>v@jR~_e13k8#bUJ2y}!R}bw2%+5OQ{QmQJU2 zpofQtc|i*uPNx%NtW(h4-ThxcUtV4~j-x9l2!cGlySqyy5?^fi-y1y7>;HQ?Jw5&O zc)_<&fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rkT5zX4>ZCm)Tw9Kiqp002ovPDHLk FV1hvCtsDRV diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/4.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/4.png deleted file mode 100644 index 6f528dbf975e917eadde81809ad3ab663a78e272..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmeAS@N?(olHy`uVBq!ia0vp^7C`LH!2~2%1zlDHQk(@Ik;M!Q+`=Ht$S`Y;1W=H@ z#M9T6{T_<|yN3Lfuu#IaXfu(gw@IiiX5M&Oy|3Ke?r3a z7ra&;0u`^4Qrd-H2TWJlCE;4;(ZQ2{SII`@#?j<}=?+sO#8N(|9v6=ZD%^hfkU`Gt zs6Q{#4}P{iVe|Q^q`k4#=JR}uHMo9p8!fa~VqguxfiC2G6x*lQ#9o)bFnRLi+qa|J z66g4-%bq)TPO0V4!w;W7Z&qu4d3tN|>Z?H_t*JMIR;Fyesp2UmA(0R%mYlOSO4UiOsI-@Ti4Hf{IacO_O*;ggoMx3f1-6c-ogy_2x0 zUcTXa^|k8o!wm`?K+%m6J=@I8%;ebS$J3&&y4`brg8v;yFpc z>1NKi<#oR*Z1T27?e6{b@1LESS(`vqRFsvi?bOtn5f?MAOF3qt-U2NXCr+Ff9cMdr%j{V~$0`yN9iLyh`r_Ze zxXb?M|9$u{VcWLt+npCqxaFrJ#Mb$L$IOzjlB%j(DMm{#XI2?KfBrmccZ5#b=E$VV zy>UGoZ2{v02BQ9g8O(8dUzS*}YDXKl?goBcc9_Gpsf<5!)Jcf<$UPAu}=UX^7c trE{8(kMEnjNSrH!hyx>5^hNw7vpHA88@1HxbYN~_@O1TaS?83{1OP2(k}v=O diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/5.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/5.png deleted file mode 100644 index e22d59278cf4d3e295d481848a2ec245d5281ecd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 904 zcmeAS@N?(olHy`uVBq!ia0vp^7C`LH!2~2%1zlDHQk(@Ik;M!Q+`=Ht$S`Y;1W=H@ z#M9T6{T_<|yC(PaMP+Ub49x1DE{-7?_ukI1^>`g1a{T>T5s@ib8~t{r6%_;r+_BP% zIC${n(W8!u32>KcC-u^6$mo=TC%kB-nm&Zdxd>#K0PW16|mp;u)kh)rn*7ym_;7Eo9s{ zRE0X1FJGR|SXEIW(S20FNn2YxZTGHST>@Ne&6{+d-)Z`PI{kQwRcv^8cv8cvRebG- zrM|p*<0EnuC>9#}w7}xlty?jA;-|H`9)15k*KfIs=j6$g%XZ(b$v2w$@_b)e8eDdkj zroDUTM#Wx_)tkQVbH+hC$efTgj`@-zm(k%k#KVQFoy)7|i z^Udqm!)JB5Ew=1_@csAQJo8>w#|^jNK6`WL&Yj=CtN)4QbaHuJ|JvTpo*i)5z-eKC zyF2?`>1VkcwrvZGjorI@xAvbf1%VqkZ!Wxf^r&m!<5Q8xf!-FnxqbWg0*f5ps*;i; zk33Wk72f&v%WCWG+qWeiCkg+k*#``(B8T677`tZvpY46{?+qHZ5 z+1)^|UbL~3>b>L;IOWf)Jv(-s*y+TPxc}*Dhr{bvu8fR|N}48c>CT-qZ_b=K^W(>k zoex``6s62fOul^o4)pZq90LiJmM7ctdZMGE434Sp%JKK_FFhz3AI5Ykk^XB=fO>S;(UZkPbWn^TObdHaQ$HdI6thCfsNpSh)mme!W1qQ7QsjaOw z3~=gLwQ6U6OOvZRbD)UvOrMQgJB~lTnX@gz^vL6n^>IG&3(jjU)1RPoddt*H`^_eL z1XS16`Mo`Ty1Ue{w(;AyZ(eieef$1h)$^Cwa&?P`%o+_$I8a^8eukUk3ev^_wUxkJ O#Ng@b=d#Wzp$P!Esi%7Y diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/6.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/6.png deleted file mode 100644 index 2eed1bcd0533a3b6ecfc54f6f9d1cab3ef4c81f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 893 zcmeAS@N?(olHy`uVBq!ia0vp^7C`LH!2~2%1zlDHQk(@Ik;M!Q+`=Ht$S`Y;1W=H@ z#M9T6{T_<|yQco?g_EW;Ffhw_x;Tbp+8!9J5xLWz|wEaqfp;vT?p5&*yg* z$-47w9?rRH`@H`B&ixP1S>BQK3KTKn`NqxL$*9r5gaawH1nj;m$9G}zV&%`A{{H@p zG?ZF4-PCdFcx(|UVm+77_wp)hj)1nrGwLcrob#RwIxSzmoMWMf%AwCStFKzw+lR*{ zaemeR*B=xzf6M##@A=vfdrVE;c{8W4w>PtS|Mzd-z684l-no1CsKoKdh3l_pZ;a6B zx|Ao()oRhVd-v|ybLMP`TDwZ5*R9s>{_*4PyYKe7E!H`G?#!7NpY?%2S68wzsps&+ z4{zSQi4Sy5|5n zojZT7ZQH+fYv}5$f9mR2h6uS9=H~jYW@BQUe%jRDe!k!G%vpAJc52h+&z&0^7su9o zu)V$g>(|oSf7h>H|M;;``GVi_%UN5uyp^0eJ$+-upI^U>g1B3oPJZ;96tXs~_ezLX z>ZbJy91@TJ)s`@9+p!~K(X*nR&CSjKnYIM2bP0 Hl+XkKMhBl+ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c1.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c1.png deleted file mode 100644 index d797cb8341215b0d5ec100495ae914f7f342f376..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 857 zcmV-f1E&0mP)T5g zNu1PH(a@qp8X;7RgIw{TrU=5Nz$J*lL8MGEA{rVTqK2!6A{!eV5`vaMiEs-WR2mwR zK#M#v^!&f!c*mh-zPtB$#QVPK`~H4>{O<4n?gR;?6uv{~;F|3Ul zm25Vv*Xz|lkB^Vf&(DX3h8TufUtbRfgVH)7#OL$rbh^#WO}Y8{`r2x>_V)G`i^a3E zvrHzlw6qishd&#BbaXU3J1du&Oa=h@`}@`0OdQ84OTXW*EJLACC=_bG!=llsvJ^$J zd9ok~05CW>_~TbN9F7*AFV5)2#l`FEYgbp7R8CAxv~%*Nr>EuIU@#O41(szSdakan z0O024rn|daT5-GG%?GL7um0fRz+^I6EEccVn@Xi7Cnwv18jZ#;d+zV=0YFv)z{$zU z;^LwjD5Z2^VWC_u`+Pn@5bSpQ;o;$*dKHyQrIC@5h7Dd`URDDoghV0{qtWPgyZ86^ z>-BnzEB@UOMNxU*Y;SLGY;351g(@F%gpjeZF%>34Nb{o2W~)}KQl3ty6N$vy+M0Uk z<>h56m6GymwQ8|gl+V$8KL7UirhKfHN~MMgl}hE|;h}l*%*;$OnUr#u%azS$zqs1g ze~887@y^c9$HzxPNTE>hcs%k)tE;Po5K5`pY+hMe0f5`v+tbrilgU&p7U$>ZS(e?| z*|V6aetCj0p^J zF&HhujBFf)YOzl zqxoJ7{NE3r=T}x%5JDK^R4Uck*=ey@zT4z)K(DT@>gwta4-ZMYyu3_NlpqM-YNGtZ zOozka*Vk8uVHk!fDJdcKY&Ls)d&~2DadELmqtR-$r2g{q^8EbFvTSK-DaUa&H8pZ8 zhGC3GV_{(-NlB2&WN4bEC<-BzNF)jh3iNt?EEeN9uBxhvVVHcsdY8*}aB!g4>sgld zcsz1_ettd_3h8t@j^o^JH$q5$o~G&A+FFFr;^Ja%D~4gbUTQBd9UUEYI-U9M(Qr6iQBgr+gpgLNC2=4SFq_TtV@F3vHk*ya z4Gj%)eRFg3s}&3c0xc~qkw}E3OG``1WD;XMH#bLG?eFhLqtSf#sMG1}>gxKv?r=El zcDtNDK0X?aMvmh!#vYGHrBe0x_it@&eWheswzs$U?Ck6xbwLoUR_of@+8_4l=S!c- zWIjGVey>ZClzTaWF_t7Lo6S-bWwBW9?(RA|I%a2Q?RNX8=jhDL%*4cm$z)04U+bPN$R8WHLz(7oX49+}teJPfkwcgJy7WP_DPNwTYsb z+c1?%t*)-hD?U9vEeOK<`}^_nu^ir zr?QTUj7(f9EP=Epypa2CZKmiI+fC3bt00k&O0SZun0`y-Q ZzW^ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c3.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c3.png deleted file mode 100644 index 0f55b7e17fa552ec9a97f0624582e5c8ab9c1c74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2532 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 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/2.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/2.png deleted file mode 100644 index 09cb7f882c266d4f44fa14fd9e9d01009ded3ffd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1148 zcmV-?1cUpDP)r6qN000CVNklB^;KP6E%As_6m@ubxVX58AL8|T8HUN} z<8(U38d08WbbEW7<2a+ysL^P2I$i!A!oqQ!Xq%MZ|Lg4RoS&aBr6XH!#?lv6)9H<$mzcs!mz z*PoxCVr?eix8L=8eU6f4S*O!!x7!gycDvo@^L>1L;HEU7Pft$(u)MsCepkv~qen+a z05Ci}T^*E3hQ+Z_&v!{IQV zD6A|fR9WvhJv{}0?(S|Opc4}l05Cp24geaBMy*!k8vvM`oD>K2{QMjM^m;vSN{`2b zZ~FTB0HC$C6*ueZ>Hxsya<#R!sZ=VV4!^gz7XXfrk9m8UL?V$$B#K$1(P**Upgd6g z-(s;CZ_r>c7z_rBSU2kaJ00v zd}Gz=bj2!yGDh_B@)AEw2q;a{G))(?Zf$L`EGsm7!aK?3av>=M%H2tCZ*M~0XSdtG zNvW2WmLidepepqF`MJ5dS*21%qtS{!De?RLq9jcok0;~v^TlGZFbpGTjjpb)0>H+` zhQOs3kH^#LbUK|b77mIz{8C5s;^G1T3pLQ_*y6*u+x8;Dqk^FIq(xuu8qtq&9akFjvMjuTAEUJI~@QzQ=R;%yXXSoaf9apePD|g8hX*#CT91ln3QOc~Bmd z2jxL|&FFswtw_Y^m@IerKPpCwX{AlG11r82cV*&LZMLn zzDLz+bzWW`OAG`805&!@D6TDi(A?bI{{DWJI6puC&2UO&X(rR%-5p7it*xyreSLjh zEEZ=`)~~It0cdV+X6ZJYO)8aU5vavt0U(h`Vnw^%{we)$f|^XG^73+)Xti3i3-s#h z3V>WLXX)G9+W;CG8nOj+e}5l9Wo2c2fEE`QXVDQ#d#^t0z6QW-`&j|Hx3>qN zzP>)5KHkkN^LRXFvl)P1uV-4b+3fLnm@aNkrk9r&00cp>^xocH07j!R`S4&c=<#?c ziaI+xV_LV{O_C%@l3uTuvy*9SYYRYodpk?d&(84~!=^x)ties9{{-KEQ=FNfRhcIK(#&1SQ4mP~Xl z%wnR`tFf^$l^FyA!H<`DE|=@mQEhE)02UV)znmcu2xMaEFD@?PHzokb$HxFv9Yn|=jTMR zt5T^FM(}@nXpu++;NjsRR-B!k1u#53oGl&=hr@4gZv;Wmdpl$FwX>zAC6!5ZIvstl z`qZPNqoW*n^ziTyKv!26OQ#q8{{B9dNl21R;=Dj0z(Lm2sm%&ddMh9ZqNu1Sl}T=H zZuELR6OJmCiY`qY4u`|xSYBS{AnS*Qh5*oI1Y>Tu8$eG_Puk&_C@9nSD4pHa)z$F< z8h;&4<#38^xvWPoFE5*#npon=$q9hY&dzLkNp^dC3!tN;<5N)9b@Vqu6M4>RwbBWZ zEueID$6ETw$Hzz{67S|8u@v)EB9SPSN|tCa7y$TuKI-Q!C67iT5vS8RFfhQU27aqH=O_=H}+8j94;ItyW9FxT~tF(rUH; zjsXS-2Q3zhP$;A_Wr8GsehCJHGMTKPpg<@T8jVIqpPrufdc6jN!D_YE)YN3=tBBys zf9ZrmA%Y-SVl)~R3Wb^ceDgIZ|3Qogna=s)!sZ9nuW Re)9kT002ovPDHLkV1hQz7aafq diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/4.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/4.png deleted file mode 100644 index 483092e69a6bd7acc836a05ef1cfd97870c578c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1406 zcmV-^1%djBP)8w$CT3z7@Pg;t7^#kC9Byi>^g>%@d)jb>g-8Jm}}IXnN0 zQ>XKsV|zB+{P*-fpNmub{Laok`@a8vn}8%q{0;EIUjkkzFO(O`3+09KLV2OQP&dG8 zwR)q_`T6 zb#-}pc}#v_U?4g=x}>CJX=#ZhNwe9^eeai~r-W8iR8&<}O-@b%pe>})XeiGF2L~r4 zBzVZ8|2Q5bx3{;WqoYctk|2oi@bI{}IEt^Wtt~Dt1`r<~pP!#^D|KAWC&#~2YisMT zU%yzS#bN<4GBQFlR;!i1+9y5b`q0qO^73*PIXpZJfR$cjV`JR6e@QwHN6V95ufM;) z&&kPQ@d|~)-``&-6f()MurTfuz9il6`oY0L04FCWY>xnCWo0b#{r#QASglqUv))mQ z&dtpMh>eY9lIQ2=0CID4SvM<{N|VVXm&FMd*RtX?8Gt*m!lG)i=04XUcEPiHYMko~e`T2Q^(8a|? zs-81RolXZpEEapwn76R703ahHy*8N=cuA|e1BA0K}^k-NIO z3iEkjdxcel}Kv}MtTh6YD1dU|>afVG7uNisDxm22j2;Q9I4&c4rRG&-8~R8{8= z@COG6Tr+ zz1jVBl&jL#2R}VMQHLl@oSvRiW0x2Gau*a7WU*K-E-tiMtxP8S`1sh^*tod3NJvO< zyHJ5Ef6yXH^2;&87XP0K<$qn~h4Mmqp}bIDC@+*3$_wR%{$GUt3jq?uS`N^A`2YX_ M07*qoM6N<$f;T9e%K!iX diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/5.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/5.png deleted file mode 100644 index 604128ceda81954571b399706eec20a83e427dbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1486 zcmV;<1u^=GP)<{P+91{3MKt(I2;xau`K&v5z2Ag^z^h!rD|+!Y;A274%O7un9b%3 z7cQ)=t?}gN&!1CLQf}V7dH??X-74iIA}J}Ur>Cc(p#i}5_BJ6qJ3G~CHIdlX*2WtH z`10k;)vH(kU?B?sNV==Xj~}xvTT@drH#euzXcP(s;Vl-+lP6EMx3{yiv(KMDPsqD> z@201x=jP_>bh^aE!~^wcUS6KrY^KQG-d+HqP>AA_lapIoTDU!e1fk!*e+OW**(ly@ zHfLsLQl!`G1>kbI;vm#!vjLc$ou#J$>g($%vaPLc_i-tNgwT2U@+E-Nr%ww>;<p(NO>+92jEG49-@bi|mIT~l7j#oJ$h8gzkT~w{D?_3pE`AF z_vt7hAwgPOl}e>FkB*IviE9#R`2bL5X>f25 zfYE4-I_=QV5V_Tec=YJe&!0b~C491zUc7iAB>VdM0OaN6McheaV`JQ2Bf3!Dg+lV) zy?X$fnwlaS$Fi{9ZnxX*JB{ACb7ysRRf5pvwjHTAQ86$uz~_81+S}WI{P-bZ*H2DPMqE1(2rvvo_3#rD69BGU zxe|*|qtSTi&>@cFs5C^-+}up<`Y4ayY&MgmBP4x3AAs`ma?03XFaTItS&8v!k{QU= zYPEX3Ua!|{wOV;nLX48sO_AN*-2fgwd`R(1rBWQtJK@)_U(_|?P^>XJH#bN8B#uR@ zFAjx5TU%Qd6%~>SkMJ6CD5iuzGc&`tVdC;b6;G1tuV23&heI+_ImALgeE1;F1Ehe7 zjSoU7S-YsHNJuU&E&?bkE2E5uhld%4q2Brr=$$DiC&yqgP~`LH&q*c{pYn;1r4A_J zPfku&R#u8%M->VM6`;XjFcb<^S6A=jk@HS>K-$fvr6r2b%*?EgwvWS}h?L7ZC>m&J|iLaf9bF+%P>s5e!h_)RQ^Fs7Agysg~~!@ op|Vg}s4P?#Dhri`{_lkT3+S5(IQogUxBvhE07*qoM6N<$f-DWpApigX diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/6.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/6.png deleted file mode 100644 index 287b6ca3da36e44daef8c3baa8ed58678a40ded8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1376 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 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/3.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/3.png deleted file mode 100644 index 70b0f3e1d0603800b7411651fb2172f01955bb46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 988 zcmV<210(#2P)Vd>x zh(89UNOW*>QgO)OB#6#}?xK^_;^wF*)WJW%MQ15?D&nL=hbjRBL6Xuz)E0}iw$`TD zJnwK4Uh3PLUXog0?ip@)?$;;JU7q{q!U6#E8;oOqiBV7rN?B^%u^3{ez^hK5`Rl_Y6-d6{7tgwWR3R-sU+(Kwk*777Jf zmTzuu%zKTwxw&vS>_AB2JDZ=M$1M*I4#2V{5{b>tP24e;%YkiUtTbwGZ^u(65{bG- zFPF=rC~jEx3{_PzXkT9+!5pF}HYlP1u)Dj9Sr-=<>zyN&N`=GW27v;=^z<}l z4TVDBgc*immQI2ei^bN~R?M1Cr|lq0k`xRE0bq7^)+~d;pd?9V6*(vXTwGjW(2*RNq_>K#202w>Lr^>t#zwY9b9=jUp*IKXy60YDH0%zAlw2~JzJjY|TW&1OG^ z0>|mPPB6mG&Q3O)tya6by6Q|s0U#6#Vb+O>39?5mm&?^^|G6s|;x)n=fMJ-ImzR3` zo}Zt;zrRLizW`}_M0!(3lqcXV_Rbgx^H5l58g`JG$^bhKGl3CQH{7{@K|X$8p7C z(ed2w*b!=~();^+i+aa2MNujQmy4q0?d^^D%p4mVt2d(Ld311a@bK`^l%y6dl}e3{ zj?T=?)JUa&mv-~$fUOm6d2T>h*f3rl!6< zZ0_#v9v&VH!!VtKAed^)#qat^ByxOw+|$#eD2l}qySuypzJT!i{f^{Ul7vt1p4^{v9v>eyO>0I_^NX~G=jTB)nT#yU{r&ws&kKU!@puLX24q>zWHQYK ziV*Vod=*Zg&xa6l36$`y$638%t#w^*X=x$8Om!uq`FuVWi&Z#du~`f__Rb3(g+~)pb1{k5@S3@wl$*%>~NyJVHoS)pR-?jYdnQ((UanLWt-2pZP0N z!@9b<+S=L>LcP7c9LIHbc6z;D_Yyu8B@~o`Qcwy?K`H3}4f+Sw?_4!#iGgVV0000< KMNUMnLSTYc2hrsK diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/other.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/other.png deleted file mode 100644 index a5796aa82861db92a8d248df72c151f187032dd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40838 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 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/2.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/2.png deleted file mode 100644 index 1eac155aae83d21adcf8317a8dcf8f80d0d964bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 464 zcmV;>0WbcEP)kFIhEeSa-?0_iGXe9`6j}$k%mcCFp|{B7g!Epa2CZ zKmiI+fC3bt?*hs>H^!vc7{fWgx|C6$$A`9UD}+d~5Tb3{t4q1Wi~kEHA|kqR;<7Bm zFf7ZGnRMMz(=<)ftk>neXN-C8*R0x2eX_Hz>l=;|QC-(nRiQ>p1XW5YrEZ)^L|xb2 zyNFLa`Wxkh8b!lL!^dSp!$-qMjiTYB;b(C)yR5Y_#uOyKz4s}IF zRsfT3sK2D5(ex;&k1kQIb)M%Tk$Il` zyWd}=o>D4=@U{?wQu?av@Qd^N$+YL?Ohn(rL!!{ zvTVa;UMWQgQA(ZhQkbCLmorV%ZKq|Lrb&{ZM`KKsa~}A>9rsL86x#;z>WZG%Na#@r zJ_H}b1i^>kqemh55d57LJsee4HBI9UUvH(9H=3rYs%mJ=VS1Q^5YN9WTI7#8R{9H&!njA4w0L^8$}R%h7UMRzh`Y5Q-f$I=$m-<^6aZSPu9ENx?a xg@$bIR<8ti5&R@cmS1V09*H7RB#K1$;RE-1D=}0)oB99%002ovPDHLkV1iV9H}S_Bo$H_!nbQ-+;jDu5E`06Op=m|+}7Bbtz?**&e|;1ia&Z`WcN1~`KK!9fgxB2Wa1 zKoKYcMW6_D_dxr;Cxm#XC<=cwIE0YC@5fG7E6$)tyRI|FEKXsJ>ADVM^h{f?wRX-e zPT`!>T4Rjj*5|Te-rBa6QVvTdrEJ@F$ZU{fQYobnB3yFL!w07ieF7-we7sixz&T$# zv;yd^w!Zk?-jmk)dcAJr0mc|(Y&B5ESjzjf*3s-)cIio2D5b2mi_v4PRZ8WK(Pt}K z*R@Zf&bi0q5!7^)4vaB%U4Ju1LlQT}csM=pizb5F)htecM0O1?fYPUBYvdTBfS1s;U;#$^Cx6-EL96HKqbWNT{pQhYneV zo+3s!Hy}O@G_gP{%W|?DL*cydpAGm!?2{`RjL!B2WbSiv0udZFR4YSI^i00000g8T0lfZwA=02AVwwz zM&8`=`8)swgTc4lN~IFM7YhIig+g+&_6}b#=waxej~e#(_tk3k!^6Y$^z`7RHAt)j z5Nfqr-z^e#34$O9LVap&Zf@3_nnPQ4e}CT`+Gx;Luc1Dl?^Amk1M*B5S-zi4$&}+b z0C;+O5{s9Ym+5rcXf%GyG!zPzN+pFt;dZ+L;PLU1n4FyK-nDi8 z6+bL4E@HQ$xlg7Ni-r`Lk|~+~FjIzMq&F3p%3`rtuW`9t7Z(?ue)roR!vsOdX0wQR za&i(5hhJV^5HXodiZMe&Lv8LqI_U3zjg5@~K($&`tJNNl2LOhLhfhyW0bpxuD;A4= zfwWc6&(DaMN~O~2v{>W!`)jpY&vz(@Xf~VQj=GX;&?Y7(5V24w;5XEqKEp`xKtAmK z#*rw&Gv#?607gegX){5lWJ;z#^mH;X*%K&%5-5QZD1j2_?*SDzJu)5~dn}&kr>3U* z2I_P=6N$w7`nq^2n~ zFDjMFTrLLyM@L64xw1WKR;+8g}?rgtsVb*VU-00000NkvXX Hu0mjf&?kid diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c2.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c2.png deleted file mode 100644 index 572ad1ffba49478afcee3e46fee8198be363a0f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 626 zcmV-&0*(ENP)k^+-H{C=?P8pdyM%m_&y}rBd<=I*AF*BpP182#HA;fs8*|az23=Wa^H2mUMG`DriI<@ zc2=vE5Q2Nalmqi4*GK5PL2Wi00Ho7t&Ra^;w9RJY@pxWrpB|4#08kVq7K^def3Ost zPA5VLr8F1};xR?&Z-L@IMJPfM${N*bRZ)~%74*RvjYgExMx$|~=E=L1-EQA*w>;Y~ zm&-SZ&$K_A%|fA2AQ0f+K8MwBx7z?9NfImdZoiTw8QmNXhvjm~GDWO&DhLAmyx)h4 zqDU#7PN(e9`*Z4aI>+O2tJP9f6(7+EMJPfMYU-`;ZMsKM6h%=KMNt$*QBF}Rm5jvY zat#K9*A*26!ALThOsCU%20=}XL?W?REY9ci6W=xIHLuxh`g}fz!(p*ldc9sgpU3yn zUn81IrS|*%d_IpvBH3&f0NieOx7+1r%H@>EvTP*7;qZqJC}(Ii8m-ssMy{$VM>2<{ zmt~m{vRbVQg@Uf@@pv2nipApfe@yUKD2k#eilQirq9}@@D2jfHzc(*hEZq7lZ=Pp& z{kpuzzH_Q`?>)ZvbLQSV_kaNa^1*(P&+N3`cDt?k%;szi^WOX&`}X#xL@?B3%*As% zxR>Yo^OAk8aD>1$gfa|s!)bksCAfjmMx#LpQK?jf5QoF@#~6HJola+~hhnwtcKe~B zudlDTUC!_XE;2ug{%@k`bo$}p;b>LZY0Kpj0Q`P`p-=#TZnv9Cr2rt2NbLC39?_5H z@p$&e>`8wznb>T$&6krXii^d9Dt!R3*=)yVgJ&N_&uqA*P!vT`6h*g96vcYIZZsM< zuXNh7Cmap~Krk3wHyu0N_5{U%IanH}syTgty z&2y*p)Opk`N_xFSluh&aSNqd+ol}a+1bi3VO1*B3b$|=sa^gPc80)dy8m#zL%sZ^`g z?(XggA%Y-0Jw2IBrhoQC0bn|vp73Yy33f9#6V=kUS}jSE)M~XTiawuDuh(BGC>A9M jil7LJpa_bfS8qQ7ClFT@Dkzn>00000NkvXXu0mjf=doX; diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/1.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/1.png deleted file mode 100644 index f6d0f2e56f9112404f1e0371b7c6de48d3056e20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 800 zcmV+*1K<3KP)20008NNkl zJGj(A9E27Jhq|b^xw*Lb4;0jYz{S}=A+teO9kk%Af?ATr#UEJEE=7Y%(SVT1c|#s~ z)*5T_;xFF$rh89LzI-?L}8y*gaK|k=@M^cl4A%&z!ilj%+P+neMtXAuW@#*Qw z$ZV>j*Xx;_p%jZnT~qX4q#ln40P^`f$8kHd9et$g65q63Dw#~GspPtSbET&%q&`1C zl|r-G{8v)1*Q*p5hA}Pp8;u6f^M1cyD=H0UeKwmdo6V}#L?Xem>_&I#?)|}F0EU3` zK9V9SlKzLQlZ$CR3PqtP6osNt6pBL62DG_!JkQ7D@nA4WQPghF>+9=ODs{5#$>nmj z+wF7j`amF{ZdWMBN_d_Z1VIo4p66BL-xDXg049N9m|QNWloyKy%d$KE*K-`Fm){(r zqtPf73aM2|lDgflmh*T#-e)iCAo~ywhvV(-?Hq@v<#MT(qtR%&Tt2&Tbg@_vLM#@G zQZ1EAZnxX%bRK*lH5QbWO6B?ad9_-3z25IvB}wY{`&#!-CKCfOYOw2lKHtsFjlds?HH&40000C=?1yLZyXP+SwbUg;vWCAfdn?AjSq8jEx;6K-6eR4C`m1Awe{{?k?vQ zlecdlyWp8|N?x@BMJ@bvTq;PUcPvv4Qi_@^s?rKKf(wOXxe%&D}85yz4iWaEVYFfEeDy^-p0Vos-nz2wQ2!ddGZ%a~BEG{nUtKo3i zHmUZ$N+c4zkj-ZG9k#Z%-l8-bjSdbDYSqWbNBxWP>gvk$E_(Kf)M1cI5h;-p={F@! zr_*O=XR<7}+d12P^+}S{)z!sgo{o+VXO!OD-0;G~!vkY15C}Lxy0^E-3+LzOjIouK z6~e94z*2xVFfd@uM6`h=mpVQ^<^_u@ z)-LFc#bSJC+tbs-jb5+!T|qB^?d@#fl!Lit(T$;rvl(NQ9ikR&OYO!CvYxw*Mwv1oC$b|;v@A!M`J<>h7T%kpVL zM@L7Ej@u?@Wigv)FRf>UAP5r^6XkN5SI5T2N~Ka$pIj~{%W^A*{r!D+pL#vIySo9b zuCDIx?iyRy*Vo%*R`nlsxxVzdTyAo5a(;f^v{e+vOeO<>AIDVW2LO-}IEfzEtZQp)l}hEa0002+`1lAKIBe43 zu(xmBZnsjYyuQBbd<_5`4u_2z^m#21e7C7fTWGafu~@9pXcUV@#ga%Qh}IjU;CX)3 zINbE&;sOlt;~w~N0e`8fYt&RI6r4`yxYH${&vP92#dJv~lPuFkU9CFZy1u^tXV5k6 zhP6IFKZ7xFx>)dlE#F7dUr8zm0wKiX@vyLhDSEvg02GTwumUoE(`K_dG16={t31fE z{9V$^%S!+Vhr_zHgTY`h7_cby`~AQKT>D5mVc?WPQY1xE`$>m13@a*htnnEoHCE0A&>-DD7X+p@#%F4mP!S3#^Qq}2n&d<;1 z=H|X6SzcZ?Jjh_%jGN%;>1lp`UTX;kgJ2sNg(eb-Znvw*RV+rinjaHNDV?32otc?& zxm<*hhld9M$mMeCm5hGB-)gl0;O6E=NrlO>%=0|Y^Rg`8-``KwqgveE-NoZ^wJ1rF zNlMN90LNaT3kwU{BFAyMw_?-*nefrhnAqCds@LmU%kAy0lC{-EtyY`HfAr+!#O-#g z_cKbRQZyPJN+a_;|Nj1N#L#ZH8C}9K3LcLK07Ow-U0ofmEtktCxn%R>&HNC}@$z+&+G`}d3jnNYdMWHAZg`!XtibAd812|k# UAGE!VT>t<807*qoM6N<$f(pB&>i_@% diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/4.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/4.png deleted file mode 100644 index 66470a6b0d6767dbe7e4b9d716d09a6e32ee3256..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 916 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 V=M|+_tOS-e44$rjF6*2UngE4UFRK6m diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/base.css b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/base.css deleted file mode 100644 index 355d9b0..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/base.css +++ /dev/null @@ -1,40 +0,0 @@ - -.kf-editor { - width: 100%; - height: 100%; - border: 1px solid #e0e0e0; - position: relative; - top: 0; - left: 0; - - overflow: hidden; - z-index: 2; - background-color: #f6f5ee; -} - -.kf-editor-edit-area { - position: relative; - top: 0; - left: 0; - - z-index: 1; - height: 0; - background-color: white; - /*background-color: white;*/ - /*background-size: 21px 21px;*/ - /*background-position: 0 0,10px 10px;*/ - /*background-image: -webkit-linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef),-webkit-linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef);*/ - /*background-image: linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef),linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef);*/ -} - -.kf-editor-canvas-container { - width: 100%; - height: 100%; -} - -.kf-editor-input-box { - position: fixed; - top: 0; - left: -99999999px; - z-index: 999999; -} \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/page.css b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/page.css deleted file mode 100644 index 8026403..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/page.css +++ /dev/null @@ -1,12 +0,0 @@ - -html, body { - width: 100%; - height: 100%; - padding: 0; - margin: 0; - background: rgba( 48, 48, 48, 0.5 ); -} - -body { - height: 1000px; -} diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/scrollbar.css b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/scrollbar.css deleted file mode 100644 index b8254b0..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/scrollbar.css +++ /dev/null @@ -1,78 +0,0 @@ -/*! - * 滚动条 - **/ - -.kf-editor-edit-scrollbar { - width: 100%; - height: 16px; - position: absolute; - bottom: 0; - left: 0; - z-index: 994; - border-top: 1px solid #ddd; -} - -.kf-editor-ui-left-button { - position: absolute; - top: 0; - left: 0; - width: 5px; - height: 100%; - background: white; -} - -.kf-editor-ui-right-button { - position: absolute; - top: 0; - right: 0; - width: 5px; - height: 100%; - background: white; -} - -.kf-editor-ui-track { - position: absolute; - top: 0; - left: 5px; - width: 0; - height: 100%; - background-image: url(../images/scrollbar/edit/bar-left.png), url(../images/scrollbar/edit/bar-right.png), url(../images/scrollbar/edit/bar-bg.png); - background-repeat: no-repeat, no-repeat, repeat-x; - background-position: 0 0, right 0, 0 0; -} - -.kf-editor-ui-thumb { - position: absolute; - top: 0; - left: 0; - width: 0; - height: 100%; -} - -.kf-editor-ui-thumb-left { - width: 5px; - height: 100%; - position: absolute; - top: 0; - left: 0; - background: url(../images/scrollbar/edit/thumb-left.png) no-repeat 0 0; - z-index: 1; -} - -.kf-editor-ui-thumb-right { - width: 5px; - height: 100%; - position: absolute; - top: 0; - right: 0; - background: url(../images/scrollbar/edit/thumb-right.png) no-repeat 0 0; -} - -.kf-editor-ui-thumb-body { - position: absolute; - top: 0; - left: 5px; - width: 0; - height: 100%; - background: url(../images/scrollbar/edit/thumb-bg.png) repeat-x 0 0; -} \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/ui.css b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/ui.css deleted file mode 100644 index e8ac470..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/ui.css +++ /dev/null @@ -1,536 +0,0 @@ -/* 工具栏 */ -.kf-editor-toolbar { - width: 100%; - padding: 1px 10px; - position: relative; - top: 0; - left: 0; - z-index: 2; - background-color: #f6f5ee; - border-bottom: 1px solid #ccc; - -moz-box-shadow:1px 1px 1px rgba( 0, 0, 0, 0.1 ); - -webkit-box-shadow:1px 1px 1px rgba( 0, 0, 0, 0.1 ); - box-shadow:1px 1px 1px rgba( 0, 0, 0, 0.1 ); - color: #000; - font-family: Helvetica, Arial, "微软雅黑", "Microsoft YaHei", "宋体", sans-serif; -} - -/* 按钮 */ -.kf-editor-ui-button { - padding: 8px 6px; - height: 79px; - font-size: 12px; - display: inline-block; - border: 1px solid transparent; - border-radius: 3px; - cursor: default; - position: relative; - top: 0; - left: 0; - z-index: 3; - vertical-align: top; - opacity: 0.5; - margin-right: 1px; -} - -.kf-editor-toolbar .kf-editor-ui-overlap-button { - width: 100%; - height: 25px; - background: #53b856; - border-radius: 0; -} - -.kf-editor-ui-button-icon { - width: 32px; - height: 32px; - margin: 2px auto; -} - -.kf-editor-ui-button-label { - color: #666; - text-align: center; - display: block; - font-size: 12px; - line-height: 20px; -} - -.kf-editor-ui-overlap-button .kf-editor-ui-button-label { - padding: 3px 5px; - text-align: left; - color: white; - font-size: 12px; -} - -.kf-editor-ui-button-sign { - border: 4px solid transparent; - border-top-color: #2d2d2d; - width: 0; - height: 0; - display: inline-block; - margin: 8px auto; - vertical-align: top; -} - -.kf-editor-ui-button-mount-point { - display: none; - position: absolute; - bottom: -2px; - left: -1px; -} - -.kf-editor-ui-overlap-button .kf-editor-ui-button-mount-point { - width: 100%; - height: 10000px; -} - -.kf-editor-ui-wrap-group { - overflow-x: hidden; - overflow-y: auto; -} - -.kf-editor-ui-overlap-button .kf-editor-ui-button-mount-point { - top: 27px; -} - -.kf-editor-toolbar .kf-editor-ui-button-in { - border-color: #8fcc91!important; - background: #e0f0dd!important; -} - -.kf-editor-toolbar .kf-editor-ui-overlap-button { - padding-top: 0; - padding-bottom: 0; - border-color: #61b864!important; - background: #61b864!important; -} - -/* 分割符 */ -.kf-editor-ui-delimiter { - width: 11px; - height: 100%; - display: none; -} - -.kf-editor-ui-enabled.kf-editor-ui-button:HOVER { - border: 1px solid #a9d9ab; - background: #ebf7e6; -} - -.kf-editor-ui-enabled.kf-editor-ui-overlap-button:HOVER { - border: 1px solid #53b856; - background: #53b856; -} - -.kf-editor-ui-delimiter-line { - width: 1px; - height: 100%; - margin: 0 auto; - background: -webkit-linear-gradient(top, rgba(233, 233, 233, 0.11), rgba(92, 92, 92, 0.20) 60%, rgba(92, 92, 92, 0.41) 80%, rgba(123, 123, 123, 0.50)); -} - -/* box */ -.kf-editor-ui-box { - border: 1px solid #b3aead; - border-radius: 3px; - box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.11); - background: white; - position: absolute; - top: 0; - left: -1px; - overflow-x: hidden; - overflow-y: auto; -} - -.kf-editor-ui-area .kf-editor-ui-box { - border-color: #61b864; -} - -.kf-editor-ui-box-container { - font-size: 12px; -} - -.kf-editor-ui-box-group-title { - background-color: #f7f6f0; - height: 23px; - line-height: 23px; - font-size: 12px; - border: 1px solid #ebeae4; - border-width: 1px 0; - padding-left: 12px; -} - -.kf-editor-ui-box-group-item-container { - padding: 7px 9px 17px 9px; -} - -.kf-editor-ui-overlap-container { - overflow: hidden; -} - -.kf-editor-ui-area .kf-editor-ui-box { - top: -1px; -} - -.kf-editor-ui-overlap-container .kf-editor-ui-button-sign { - border-top-color: white; - border-width: 4px; - margin-left: 10px; - margin-top: 8px; -} - -.kf-editor-ui-yushe-btn .kf-editor-ui-box-item { - border: 1px solid transparent; - padding: 5px; -} - -.kf-editor-ui-box-item { - display: inline-block; - margin: 4px; -} - -.kf-editor-ui-box-item-content:HOVER { - border-color: #dff3df; -} - -.kf-editor-ui-box-item-content:HOVER .kf-editor-ui-box-item-val { - border-color: #6eb864; -} - -.kf-editor-ui-area .kf-editor-ui-box-item { - position: relative; - top: 0; - left: 0; - width: 32px; - height: 32px; - border: 0; - margin: 3px; - padding: 0; - z-index: 1; -} - -.kf-editor-ui-area .kf-editor-ui-box-item img { - width: 32px; - height: 32px; -} - - -.kf-editor-ui-box-item-label { - margin-bottom: 5px; -} - -.kf-editor-ui-box-item-content { - background: white; - border: 1px solid white; -} - -.kf-editor-ui-area .kf-editor-ui-box-item-content { - position: absolute; - top: 0; - left: 0; -} - -.kf-editor-ui-area .kf-editor-ui-box-item-content:HOVER { - border: 1px solid #dff3df; -} - -.kf-editor-ui-box-item-val { - padding: 5px; - line-height: 0; - border: 1px solid #808080; -} - -.kf-editor-ui-area .kf-editor-ui-box-item-val { - padding: 0; - margin: 0; -} - -/* area */ -.kf-editor-ui-area { - height: 79px; - display: inline-block; - cursor: default; - position: relative; - top: 0; - left: 0; - vertical-align: top; - opacity: 0.5; - z-index: 4; - border: 1px solid #e0dfd5; - border-radius: 4px; - background: white; - margin: 8px 10px; -} - -.kf-editor-ui-area-container { - width: 293px; - height: 70px; - /*margin: 7px 5px 5px 5px;*/ - margin: 5px; - display: inline-block; - border-right: 0; - vertical-align: top; - position: relative; - top: 0; - left: 0; - overflow: hidden; -} - -.kf-editor-ui-area-panel { - position: absolute; - top: 0; - left: 0; - line-height: 0; - background: white; - -webkit-transition: top 0.5s linear; - -moz-transition: top 0.5s linear; - transition: top 0.5s linear; -} - -.kf-editor-ui-area-button-container { - display: inline-block; - width: 16px; - height: 100%; - overflow: hidden; - text-align: center; - border: 0 solid #D3D3D3; - border-left-width: 1px; - background-color: #f2f0e6; -} - -.kf-editor-ui-moveup-button, .kf-editor-ui-movedown-button { - line-height: 25px; - height: 30px; -} - -.kf-editor-ui-moveup-button { - background: url("../images/toolbar/btn.png") -304px 9px no-repeat; -} - -.kf-editor-ui-movedown-button { - border: 1px solid #D3D3D3; - border-width: 1px 0; - background: url("../images/toolbar/btn.png") -325px 9px no-repeat; -} - -.kf-editor-ui-area-button { - width: 100%; - height: 50px; - line-height: 26px; - background: url("../images/toolbar/btn.png") -346px 0 no-repeat; -} - -.kf-editor-ui-enabled .kf-editor-ui-area-button:HOVER { - background-color: #e5e4e1; -} - -.kf-editor-ui-enabled .kf-editor-ui-moveup-button:HOVER { - background-color: #e5e4e1; -} - -.kf-editor-ui-enabled .kf-editor-ui-movedown-button:HOVER { - background-color: #e5e4e1; -} - -.kf-editor-ui-area-button-container .kf-editor-ui-disabled { - opacity: 0.25; - background-color: transparent!important; -} - -.kf-editor-ui-area-mount { - position: absolute; - top: 0; - left: 0; - display: none; -} - -.kf-editor-ui-overlap-title { - width: 100%; - line-height: 1.5; -} - -/* list */ -.kf-editor-ui-list { - background: #f9f8f5; - border: 1px solid #b3aead; - border-radius: 3px; - position: fixed; - top: 0; - left: 0; - box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.11); -} - -.kf-editor-ui-list-bg { - display: none; -} - -.kf-editor-ui-list-item-container { - position: relative; - top: 0; - left: 0; - z-index: 2; -} - -.kf-editor-ui-list-item { - line-height: 24px; - padding: 2px 6px; - border: 1px solid transparent; - border-width: 1px 0; -} - -.kf-editor-ui-list-item-select { - color: #61b864; - font-weight: bold; -} - -.kf-editor-ui-list-item-select .kf-editor-ui-list-item-icon { - visibility: visible; - width: 16px; - height: 16px; - background: url(../images/toolbar/btn.png) no-repeat -367px 0; -} - -.kf-editor-ui-list-item:HOVER { - border-color: #beddbf; - background-color: #ecf3e9; -} - -.kf-editor-ui-list-item-icon { - width: 16px; - height: 16px; - display: inline-block; - vertical-align: middle; - margin-top: -2px; - margin-right: 4px; - visibility: hidden; -} - -/* area 内容区 */ -.kf-editor-ui-area-item { - width: 26px; - height: 26px; - position: absolute; - top: 0; - left: 0; -} - -.kf-editor-ui-area-item-inner { - width: 34px; - height: 34px; - border: 1px solid white; - position: absolute; - top: -4px; - left: -4px; - -webkit-transition: all 0.1s linear; - -moz-transition: all 0.1s linear; - transition: all 0.1s linear; - - -webkit-transform: scale( 0.76 ); - -moz-transform: scale( 0.76 ); - transform: scale( 0.76 ); -} - -.kf-editor-ui-enabled .kf-editor-ui-area-item-inner:HOVER { - border-color: #dff3df; - - -webkit-transform: scale( 1 ); - -moz-transform: scale( 1 ); - transform: scale( 1 ); -} - -.kf-editor-ui-area-item-img { - width: 32px; - height: 32px; - border: 1px solid #808080; - -webkit-transition: all 0.1s linear; - -moz-transition: all 0.1s linear; - transition: all 0.1s linear; -} - -.kf-editor-ui-enabled .kf-editor-ui-area-item-inner:HOVER .kf-editor-ui-area-item-img { - border-color: #6eb864; -} - -.kf-editor-ui-enabled { - opacity: 1; -} - -.kf-editor-ui-overlap-container .kf-editor-ui-box-item { - width: 34px; - height: 34px; - border: 1px solid white; -} - -.kf-editor-ui-overlap-container .kf-editor-ui-box-item-content:HOVER { -} - -.kf-editor-ui-overlap-container .kf-editor-ui-box-item-val { - width: 32px; - height: 32px; -} - -/* scrollbar */ -.kf-editor-ui-box::-webkit-scrollbar { - width: 17px; - background: url(../images/scrollbar/custom/bg.png) 0 0 repeat-y white; -} - -.kf-editor-ui-box::-webkit-scrollbar-button:end:increment { - height: 5px; - background: url(../images/scrollbar/custom/down.png) 0 0 repeat-y white; -} -/*定义滚动条渐减按扭的样式 */ -.kf-editor-ui-box::-webkit-scrollbar-button:start:decrement { - height: 5px; - background: url(../images/scrollbar/custom/up.png) 0 0 repeat-y white; -} - -/* 垂直滚动条的第三层轨道的上段 */ -.kf-editor-ui-box::-webkit-scrollbar-track-piece:vertical:start { - background-image: url(../images/scrollbar/custom/top.png), url(../images/scrollbar/custom/bg.png); - background-repeat: no-repeat, repeat-y; -} -/* 垂直滚动条的第三层轨道的下段 */ -.kf-editor-ui-box::-webkit-scrollbar-track-piece:vertical:end { - background-image: url(../images/scrollbar/custom/bottom.png), url(../images/scrollbar/custom/bg.png); - background-repeat: no-repeat, repeat-y; - background-position: 0 bottom, 0 0; -} -/* 垂直滚动条的滑动块 */ -.kf-editor-ui-box::-webkit-scrollbar-thumb:vertical { - /*background: url(./images2/bar.png) 6px 0 no-repeat;*/ - /*background-size: 6px;*/ - -webkit-border-image: url(../images/scrollbar/custom/bar.png) 8; - border-width: 10px; -} - -.kf-editor-ui-wrap-group::-webkit-scrollbar { - width: 17px; - background: url(../images/scrollbar/custom/bg.png) 0 0 repeat-y white; -} - -.kf-editor-ui-wrap-group::-webkit-scrollbar-button:end:increment { - height: 5px; - background: url(../images/scrollbar/custom/down.png) 0 0 repeat-y white; -} -/*定义滚动条渐减按扭的样式 */ -.kf-editor-ui-wrap-group::-webkit-scrollbar-button:start:decrement { - height: 5px; - background: url(../images/scrollbar/custom/up.png) 0 0 repeat-y white; -} - -/* 垂直滚动条的第三层轨道的上段 */ -.kf-editor-ui-wrap-group::-webkit-scrollbar-track-piece:vertical:start { - background-image: url(../images/scrollbar/custom/top.png), url(../images/scrollbar/custom/bg.png); - background-repeat: no-repeat, repeat-y; -} -/* 垂直滚动条的第三层轨道的下段 */ -.kf-editor-ui-wrap-group::-webkit-scrollbar-track-piece:vertical:end { - background-image: url(../images/scrollbar/custom/bottom.png), url(../images/scrollbar/custom/bg.png); - background-repeat: no-repeat, repeat-y; - background-position: 0 bottom, 0 0; -} -/* 垂直滚动条的滑动块 */ -.kf-editor-ui-wrap-group::-webkit-scrollbar-thumb:vertical { - -webkit-border-image: url(../images/scrollbar/custom/bar.png) 8; - border-width: 10px; -} \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/fui.css b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/fui.css deleted file mode 100644 index de07bba..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/fui.css +++ /dev/null @@ -1,540 +0,0 @@ -/** - * 所有构件样式规则 - **/ -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-widget { - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-user-drag: none; - color: #000000; - line-height: 1.5; - font-size: 12px; - font-family: "ff-tisa-web-pro-1", "ff-tisa-web-pro-2", "Lucida Grande", "Hiragino Sans GB", "Hiragino Sans GB W3", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; - -webkit-font-smoothing: antialiased; - outline: none; - display: inline-block; - vertical-align: top; - position: relative; - top: 0; - left: 0; -} -.fui-widget.fui-selectable { - -webkit-user-select: text; - -khtml-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - -webkit-user-drag: text; -} -.fui-widget * { - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-user-drag: none; -} -.fui-widget.fui-disabled { - opacity: 0.3!important; -} -.fui-widget.fui-hide { - display: none!important; -} -.fui-widget.fui-mask-animate { - -webkit-transition: all 0.2s; -} -.fui-widget.fui-mask-hint { - -webkit-transform: perspective(600px) translateZ(30px); -} - -/** - * 容器类通用样式 - **/ -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-container { - overflow: hidden; - position: relative; - top: 0; - left: 0; -} -.fui-container.fui-disabled { - opacity: 1!important; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-button-menu { - border: 1px solid white; -} -.fui-button-menu:HOVER { - border-color: #d5e1f2; -} -.fui-button-menu.fui-button-active { - border-color: #d5e1f2; - background: #d5e1f2; -} -.fui-button-menu.fui-button-active .fui-button { - background: #d5e1f2; -} -.fui-button-menu.fui-layout-top, -.fui-button-menu.fui-layout-bottom { - text-align: center; -} -.fui-button-menu.fui-layout-top .fui-open-btn, -.fui-button-menu.fui-layout-bottom .fui-open-btn { - display: block; -} - -/** - * 通用button - */ -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-button { - overflow: hidden; - cursor: default; - font-size: 0; -} -.fui-button ._layout .fui-label { - display: block; -} -.fui-button ._layout .fui-icon { - display: block; -} -.fui-button .fui-icon { - display: inline-block; - vertical-align: middle; -} -.fui-button .fui-label { - display: inline-block; - vertical-align: middle; -} -.fui-button.fui-button-layout-top .fui-label { - display: block; -} -.fui-button.fui-button-layout-top .fui-icon { - display: block; -} -.fui-button.fui-button-layout-bottom .fui-label { - display: block; -} -.fui-button.fui-button-layout-bottom .fui-icon { - display: block; -} -.fui-button:HOVER { - background-color: #d5e1f2 !important; - color: #000000 !important; -} -.fui-button:ACTIVE { - background-color: #87a9da !important; - color: #000000 !important; -} -.fui-button.fui-disabled:HOVER { - background-color: #ffffff !important; - color: #000000 !important; -} -.fui-button.fui-disabled:ACTIVE { - background-color: #ffffff !important; - color: #000000 !important; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-colorpicker { - background-color: #fff; -} -.fui-colorpicker-container { - border: 1px solid #d3d3d3; -} -.fui-colorpicker-container .fui-colorpicker-title { - background: #eee; - padding: 2px 4px; -} -.fui-colorpicker-container .fui-colorpicker-colors { - margin: 0; - padding: 0; - font-size: 0; - line-height: 0; -} -.fui-colorpicker-container .fui-colorpicker-colors-line0 { - margin-bottom: 3px; -} -.fui-colorpicker-container .fui-colorpicker-item { - display: inline-block; - margin: 0 2px; - width: 13px; - height: 13px; - border-style: solid; - border-width: 1px; -} -.fui-colorpicker-container .fui-colorpicker-commoncolor, -.fui-colorpicker-container .fui-colorpicker-standardcolor { - margin: 4px 3px; - white-space: nowrap; -} -.fui-colorpicker-container .fui-colorpicker-toolbar { - margin: 4px; - height: 27px; -} -.fui-colorpicker-container .fui-colorpicker-toolbar .fui-colorpicker-preview { - display: inline-block; - height: 25px; - line-height: 25px; - width: 120px; - border: 1px solid #d3d3d3; -} -.fui-colorpicker-container .fui-colorpicker-toolbar .fui-colorpicker-clear { - display: inline-block; - height: 25px; - line-height: 25px; - width: 60px; - border: 1px solid #d3d3d3; - font-size: 12px; - text-align: center; - position: absolute; - right: 5px; - cursor: pointer; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ - -/** - * 通用button - */ -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-dialog { - position: fixed; - top: -1000000px; - left: -100000px; - border: 1px solid #B1B1B1; - background: #fff; -} -.fui-dialog .fui-panel-content { - width: auto!important; - height: auto!important; - padding: 2px; -} -.fui-dialog .fui-dialog-caption { - margin: 0; - padding: 5px; - font-size: 16px; - font-weight: normal; - line-height: 1; - display: inline-block; -} -.fui-dialog .fui-dialog-head .fui-close-button { - float: right; -} -.fui-dialog .fui-dialog-head .fui-close-button .fui-close-button-icon { - width: 16px; - height: 16px; - background: url("images/close.png") no-repeat 0 0; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-drop-panel { - border: 1px solid #d3d3d3; - overflow: hidden; - position: relative; -} -.fui-drop-panel .fui-drop-panel-content { - display: inline-block; -} -.fui-drop-panel .fui-drop-panel-placeholder { - display: none; -} -.fui-drop-panel .fui-drop-panel-button { - border-left: 1px solid #d3d3d3; - visibility: visible; -} -.fui-drop-panel .fui-drop-panel-button:HOVER { - border-color: #d5e1f2; -} -.fui-drop-panel .fui-drop-panel-button:ACTIVE { - border-color: #87a9da; -} -.fui-drop-panel:HOVER { - border-color: #d5e1f2; -} -.fui-drop-panel:HOVER .fui-drop-panel-button { - border-left-color: #d5e1f2; -} -.fui-drop-panel:ACTIVE { - border-color: #87a9da; -} -.fui-drop-panel:ACTIVE .fui-drop-panel-button { - border-left-color: #d5e1f2; -} -.fui-drop-panel.fui-drop-panel-open { - overflow: visible; -} -.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-content { - border: 1px solid #d3d3d3; - position: absolute; - top: -1px; - left: -1px; -} -.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-button { - visibility: hidden; -} -.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-placeholder { - display: inline-block; -} -.fui-drop-panel-popup { - border: 1px solid #d3d3d3; -} -.fui-drop-panel-popup:HOVER { - border-color: #d5e1f2; -} -.fui-drop-panel-popup:HOVER .fui-drop-panel-button { - border-left-color: #d5e1f2; -} -.fui-drop-panel-popup:ACTIVE { - border-color: #87a9da; -} -.fui-drop-panel-popup:ACTIVE .fui-drop-panel-button { - border-left-color: #d5e1f2; -} - -.fui-icon { - text-align: center; - font-size: 0; -} -.fui-icon img { - display: inline-block; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-input-button { - border: 1px solid #ababab; -} -.fui-input-button .fui-input { - vertical-align: middle; - border: none!important; -} -.fui-input-button .fui-button { - vertical-align: middle; -} -.fui-input-button:HOVER { - border-color: #87a9da; -} -.fui-input-button:ACTIVE { - border-color: #87a9da; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-input { - border: 1px solid #d3d3d3; - padding: 1px; - margin: 0; -} -.fui-input:HOVER, -.fui-input:FOCUS { - border-color: #4d90fe!important; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-item { - font-size: 0; -} -.fui-item .fui-icon { - vertical-align: middle; -} -.fui-item .fui-label { - vertical-align: middle; -} -.fui-item.fui-item-selected { - background: #87a9da; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-label-panel .fui-label-panel-label { - width: 100%; - color: #666; -} -.fui-label-panel.fui-no-position .fui-label-panel-label { - position: static!important; -} -.fui-label-panel.fui-layout-bottom .fui-label-panel-label { - position: absolute; - bottom: 0; - left: 0; - top: auto; - z-index: 2; -} - -.fui-label { - cursor: default; - display: inline-block; - white-space: nowrap; -} - -/** - * 通用button - */ -.fui-mask { - position: fixed; - z-index: 99998; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-menu { - background-color: #fff; - border: 1px solid #d3d3d3; -} -.fui-menu .fui-item { - padding: 2px 5px; - display: block!important; -} -.fui-menu .fui-item:HOVER { - background: #d5e1f2; -} - -/** - * 通用button - */ -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-panel { - display: inline-block; - vertical-align: top; - overflow-y: auto; - overflow-x: hidden; -} -.fui-panel .fui-panel-content { - position: relative; - top: 0; - left: 0; -} -.fui-panel .fui-panel-content { - width: 100%; - height: 100%; -} -.fui-panel.fui-container-column { - font-size: 0; -} -.fui-panel.fui-container-column .fui-column { - display: block; -} - -/** - * 通用button - */ -.fui-ppanel::-webkit-scrollbar { - width: 15px; -} -.fui-ppanel::-webkit-scrollbar-button:start:decrement, -.fui-ppanel::-webkit-scrollbar-button:end:decrement, -.fui-ppanel::-webkit-scrollbar-button:start:increment, -.fui-ppanel::-webkit-scrollbar-button:end:increment, -.fui-ppanel::-webkit-scrollbar-thumb { - border: 1px solid #e7e7e7; -} -.fui-ppanel.fui-ppanel-position { - position: fixed; - z-index: 99999; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-separator { - background: #6d6d6d; -} - -/** - * Spin-button - */ -.fui-spin-button .fui-spin-up-btn .fui-icon, -.fui-spin-button .fui-spin-down-btn .fui-icon { - width: 16px; - height: 9px; - background: url("images/up.png") no-repeat 3px 1.5px; -} -.fui-spin-button .fui-spin-down-btn .fui-icon { - background-image: url("images/down.png"); -} - -/** - * 通用button - */ -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-tabs .fui-selected { - background-color: #d5e1f2; -} - -/** - * 可切换Button (ToggleButton) - */ -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-toggle-button.fui-button-pressed { - background-color: #aec5e6; -} -.fui-toggle-button.fui-button-pressed.fui-disabled { - background-color: #aec5e6 !important; -} diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/fui.min.css b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/fui.min.css deleted file mode 100644 index 3faab2a..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/fui.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * ==================================================== - * Themes file * Flex UI - v1.0.0 - 2014-07-28 - * https://github.com/fex-team/fui - * GitHub: https://github.com/fex-team/fui.git - * Copyright (c) 2014 Baidu Kity Group; Licensed MIT - * ==================================================== - */ - -.fui-widget{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none;color:#000;line-height:1.5;font-size:12px;font-family:ff-tisa-web-pro-1,ff-tisa-web-pro-2,"Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;-webkit-font-smoothing:antialiased;outline:0;display:inline-block;vertical-align:top;position:relative;top:0;left:0}.fui-widget.fui-selectable{-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;-webkit-user-drag:text}.fui-widget *{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none}.fui-widget.fui-disabled{opacity:.3!important}.fui-widget.fui-hide{display:none!important}.fui-widget.fui-mask-animate{-webkit-transition:all .2s}.fui-widget.fui-mask-hint{-webkit-transform:perspective(600px) translateZ(30px)}.fui-container{overflow:hidden;position:relative;top:0;left:0}.fui-container.fui-disabled{opacity:1!important}.fui-button-menu{border:1px solid #fff}.fui-button-menu:HOVER{border-color:#d5e1f2}.fui-button-menu.fui-button-active{border-color:#d5e1f2;background:#d5e1f2}.fui-button-menu.fui-button-active .fui-button{background:#d5e1f2}.fui-button-menu.fui-layout-bottom,.fui-button-menu.fui-layout-top{text-align:center}.fui-button-menu.fui-layout-bottom .fui-open-btn,.fui-button-menu.fui-layout-top .fui-open-btn{display:block}.fui-button{overflow:hidden;cursor:default;font-size:0}.fui-button ._layout .fui-icon,.fui-button ._layout .fui-label{display:block}.fui-button .fui-icon,.fui-button .fui-label{display:inline-block;vertical-align:middle}.fui-button.fui-button-layout-bottom .fui-icon,.fui-button.fui-button-layout-bottom .fui-label,.fui-button.fui-button-layout-top .fui-icon,.fui-button.fui-button-layout-top .fui-label{display:block}.fui-button:HOVER{background-color:#d5e1f2!important;color:#000!important}.fui-button:ACTIVE{background-color:#87a9da!important;color:#000!important}.fui-button.fui-disabled:ACTIVE,.fui-button.fui-disabled:HOVER{background-color:#fff!important;color:#000!important}.fui-colorpicker{background-color:#fff}.fui-colorpicker-container{border:1px solid #d3d3d3}.fui-colorpicker-container .fui-colorpicker-title{background:#eee;padding:2px 4px}.fui-colorpicker-container .fui-colorpicker-colors{margin:0;padding:0;font-size:0;line-height:0}.fui-colorpicker-container .fui-colorpicker-colors-line0{margin-bottom:3px}.fui-colorpicker-container .fui-colorpicker-item{display:inline-block;margin:0 2px;width:13px;height:13px;border-style:solid;border-width:1px}.fui-colorpicker-container .fui-colorpicker-commoncolor,.fui-colorpicker-container .fui-colorpicker-standardcolor{margin:4px 3px;white-space:nowrap}.fui-colorpicker-container .fui-colorpicker-toolbar{margin:4px;height:27px}.fui-colorpicker-container .fui-colorpicker-toolbar .fui-colorpicker-preview{display:inline-block;height:25px;line-height:25px;width:120px;border:1px solid #d3d3d3}.fui-colorpicker-container .fui-colorpicker-toolbar .fui-colorpicker-clear{display:inline-block;height:25px;line-height:25px;width:60px;border:1px solid #d3d3d3;font-size:12px;text-align:center;position:absolute;right:5px;cursor:pointer}.fui-dialog{position:fixed;top:-1000000px;left:-100000px;border:1px solid #B1B1B1;background:#fff}.fui-dialog .fui-panel-content{width:auto!important;height:auto!important;padding:2px}.fui-dialog .fui-dialog-caption{margin:0;padding:5px;font-size:16px;font-weight:400;line-height:1;display:inline-block}.fui-dialog .fui-dialog-head .fui-close-button{float:right}.fui-dialog .fui-dialog-head .fui-close-button .fui-close-button-icon{width:16px;height:16px;background:url(images/close.png) no-repeat}.fui-drop-panel{border:1px solid #d3d3d3;overflow:hidden;position:relative}.fui-drop-panel .fui-drop-panel-content{display:inline-block}.fui-drop-panel .fui-drop-panel-placeholder{display:none}.fui-drop-panel .fui-drop-panel-button{border-left:1px solid #d3d3d3;visibility:visible}.fui-drop-panel .fui-drop-panel-button:HOVER{border-color:#d5e1f2}.fui-drop-panel .fui-drop-panel-button:ACTIVE{border-color:#87a9da}.fui-drop-panel:HOVER{border-color:#d5e1f2}.fui-drop-panel:HOVER .fui-drop-panel-button{border-left-color:#d5e1f2}.fui-drop-panel:ACTIVE{border-color:#87a9da}.fui-drop-panel:ACTIVE .fui-drop-panel-button{border-left-color:#d5e1f2}.fui-drop-panel.fui-drop-panel-open{overflow:visible}.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-content{border:1px solid #d3d3d3;position:absolute;top:-1px;left:-1px}.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-button{visibility:hidden}.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-placeholder{display:inline-block}.fui-drop-panel-popup{border:1px solid #d3d3d3}.fui-drop-panel-popup:HOVER{border-color:#d5e1f2}.fui-drop-panel-popup:HOVER .fui-drop-panel-button{border-left-color:#d5e1f2}.fui-drop-panel-popup:ACTIVE{border-color:#87a9da}.fui-drop-panel-popup:ACTIVE .fui-drop-panel-button{border-left-color:#d5e1f2}.fui-icon{text-align:center;font-size:0}.fui-icon img{display:inline-block}.fui-input-button{border:1px solid #ababab}.fui-input-button .fui-input{vertical-align:middle;border:none!important}.fui-input-button .fui-button{vertical-align:middle}.fui-input-button:ACTIVE,.fui-input-button:HOVER{border-color:#87a9da}.fui-input{border:1px solid #d3d3d3;padding:1px;margin:0}.fui-input:FOCUS,.fui-input:HOVER{border-color:#4d90fe!important}.fui-item{font-size:0}.fui-item .fui-icon,.fui-item .fui-label{vertical-align:middle}.fui-item.fui-item-selected{background:#87a9da}.fui-label-panel .fui-label-panel-label{width:100%;color:#666}.fui-label-panel.fui-no-position .fui-label-panel-label{position:static!important}.fui-label-panel.fui-layout-bottom .fui-label-panel-label{position:absolute;bottom:0;left:0;top:auto;z-index:2}.fui-label{cursor:default;display:inline-block;white-space:nowrap}.fui-mask{position:fixed;z-index:99998}.fui-menu{background-color:#fff;border:1px solid #d3d3d3}.fui-menu .fui-item{padding:2px 5px;display:block!important}.fui-menu .fui-item:HOVER{background:#d5e1f2}.fui-panel{display:inline-block;vertical-align:top;overflow-y:auto;overflow-x:hidden}.fui-panel .fui-panel-content{position:relative;top:0;left:0;width:100%;height:100%}.fui-panel.fui-container-column{font-size:0}.fui-panel.fui-container-column .fui-column{display:block}.fui-ppanel::-webkit-scrollbar{width:15px}.fui-ppanel::-webkit-scrollbar-button:end:decrement,.fui-ppanel::-webkit-scrollbar-button:end:increment,.fui-ppanel::-webkit-scrollbar-button:start:decrement,.fui-ppanel::-webkit-scrollbar-button:start:increment,.fui-ppanel::-webkit-scrollbar-thumb{border:1px solid #e7e7e7}.fui-ppanel.fui-ppanel-position{position:fixed;z-index:99999}.fui-separator{background:#6d6d6d}.fui-spin-button .fui-spin-down-btn .fui-icon,.fui-spin-button .fui-spin-up-btn .fui-icon{width:16px;height:9px;background:url(images/up.png) 3px 1.5px no-repeat}.fui-spin-button .fui-spin-down-btn .fui-icon{background-image:url(images/down.png)}.fui-tabs .fui-selected{background-color:#d5e1f2}.fui-toggle-button.fui-button-pressed{background-color:#aec5e6}.fui-toggle-button.fui-button-pressed.fui-disabled{background-color:#aec5e6!important} \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/close.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/close.png deleted file mode 100644 index 4f8885f47e0ce084c2a963bad9a3d9998e4c292d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 836 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+uenMVO6iP5s=4O z;1O92G;jkLPtXOMsMzWR&J6Sy{Q{Czpb>SXl)C zO)h3IT>gKzKAIY^ORcOtQZv&tN*GLyjZf`ioC;JUj${s0O?YNXNd`zsq;KE}pb|+W zCBB)tsU?*KsSIFG=ojRr+iwc%W1gMI^(Ad(<+{D7f)T~Q8m<^~z7|ERA%qn2y z=vkV1J2~ZkTHXkhPC}9n4f142%gjjyhM0aver~FMT1kPvp{bF9erjTIWo9xkD3bF~ t*vTn*x|zA@ddTuX*XbJ?niv~HNHZfnpa{bxe=VSG44$rjF6*2UngElh3X%W- diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/down.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/down.png deleted file mode 100644 index cf92db68069cad3c42ef007f543f905fe00fb2b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1089 zcmaJ=Ye*DP6rPCG7VH5P6%@m0nAFZ|cgJo_jdoch0%zyWO$c z^~J8GE)2tpqcuVt?T%egRDk~9C+6Nk+Y%T_!aAc7rX>qtA;o9_cvO>`KpaR)+qSzP zfMGLB)kG2|#SOe{Xr$!CkQvQHXbcNfWlTwK0T6EhO{yLw#;;r_a8(Hs8+{@znqkna z*0fuouDv!Px3|cZ3Q@Hd4`g^mpaCf187-yTd?rX_d3j_zZi>LOA+RM#{3$9a#_+IV z0o+G=+%nBDILDEU*T-?pYMiARmZH((+>Dp^aXedrPksc-W+{z)T&SMRg-$`D8A6k% zsB}6_rah!#HBn4uWu?QxvThXNw%c?lW!$=5l4B5nEnBJyRYS)eMybJQg+T&U`lkiW zoTAn3$!kIvMr9{n0UC3!&i!utm=-VJc|%TKC0VL(q#}8f&}6qRaN1=6}Fx-P4#XwXD zB{EOFwf(MJ^nxAT?_#d{=P!PA`ahQ)I5x2PZQ)mOPUnK+Jx>-DmhXL?*g95!b9W&% zcqQF?_QJEk{lmn=jv1$W=6wp>bKSVSeBZ0ojgE7x*Q9o;$4l>AD!TBv;n0z?2VZ_h z-`qOW_r8AEyKwFVvH#RXZI$&XHq@0aI*EO(IV$++k*i;34c;DFOm>aE9O+ftL)Yhb vulP08KTeb`K6q{8=%!txMK@0be|?=zW7=RMaef)Q+j-Q{NUhMfZcFEHB|va9 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/open.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/open.png deleted file mode 100644 index 861a04e883c7eeabda06bf1ea385218b2c34ff3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 859 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&V!2%?m`@?4fDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&U|7|wYy{+S z7I;J!1L+hn=AU--E|4+Z)5S4F<9zLTL%t>hiMEI0yJu7|i1R&MraXJMw)#ZT{6|@j z9*Oeo5?GfYQJ|*c6TqJQ=lAvxrP=qE_$%kV*?8tH7bkDovpqK&71QVVu=Tkx7(Pu2 z+3;`gtV`^Z`wq|F_DHDboX%7JZF}}ENqbyZe9-eF`zHNJzt60ZexGDF&3U3-)bV~| zZQX=7pS0y><%C?hRQ&v9Tph!N@T$#BUq5yMov2#k8c~vxSdwa$T$Bo=7>o=IO>_-R zbqx$dj0~(y%&iQ}wGAw+3=CMEvM!@&$jwj5OsmALp+x>tK2U=%$cEzlw370~qErUY z+{E-$-^BFHlpinIKI- z4Ai8TUz8rXB)%TzlH#&-tK|IL+|;}h1_k%jywoC~CsGuWDiu7F^L_L4^Yk+F6%0{uKbLh*2~7Yx9TzJA diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/up.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/up.png deleted file mode 100644 index 4e4a6d1f9831b280fc99774f19b835ae0ff96c7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1080 zcmaJ=T}TvB6dp;$Br^(1MQ9q0655%a+1=3{cQe~rbE7d^m)d@HoVo4}>-;oxZCCLr z5t4kdqN2AT0|o2Fel#r%3Zk;7it@!Eis->0BB`M6=&ttAHeBYOdpO^B&bjBi{Y{N~ z3JXdLFbpdUHSl4y+jd@l9{T_IQuG*YB`_F;&3ZdbiYCD7WW5dGAytflFc9UglTUyT z!&X%&ktmD``#4EgNzslWQ>uZ`80M=@8KRT`5N`u9Me`H$_Z|?qBKwI$9>FOX0T5Rj zx=qmB-58O&6OvaZYIowk6o&{@07X2dc4!ut@)L`^9I|aUMc|7eFySYbii!$NctAG+ z?jc|&bsR6z%nTZ4QQUpa_T6r9m;}(5&(d0}m|8R1B!-8g4U+ZF(p46R6Uq7F1)I zRsgo6 z<@8hsXgcVwbMXvc$9jUnDu$tho(z`PrA`%SFoTs>u&r3!RlOjg_<4!eqr#s2Iu~?O&tLxR8Eqb6L3Puq=I`A-$VO*c;z?2GOG!3GsE2 z)LY;Fse*^jb@wZXd~LYbtycDjb1zMfonKgAQa16uvaDuEnWUmcWKU1+c+I=1ZCi4$ zzUtgsITX7a`*m>dftm5KYb`?;b{!kNHSOJWd7^iAq1<$BRs jrDjcgU*e40*OHTmbscRzN6p+Rwcm0m*vQ}5-Fo^Dnsa3k diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/jquery-3.6.0.min.js b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/jquery-3.6.0.min.js deleted file mode 100644 index c4c6022..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/jquery-3.6.0.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
                                      "],col:[2,"","
                                      "],tr:[2,"","
                                      "],td:[3,"","
                                      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="

                                      ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0p;p++)k=n[p],k!==h?k?"string"==typeof k?(n[p]="brackets"===e.name&&2>p?k:"function"===e.name&&0===p?k:c("text",k),f.operand.push(n[p])):(f.operand.push({}),n[p]=b(a.operand[p],k,f.operand[f.operand.length-1],g,i)):(n[p]=c("empty"),f.operand.push(n[p])):(m.push(p),i.hasOwnProperty("startOffset")||(i.startOffset=p),i.endOffset=p,e.attr&&e.attr.id&&(i.groupId=e.attr.id));for(2===m.length&&(i.endOffset-=1);p=m.length;)p=m[p-1],n.splice(p,1),m.length--,a.operand.splice(p,1)}if(o=d(e.name),!o)throw new Error("operator type error: not found "+e.operator);j=function(){},j.prototype=o.prototype,l=new j,o.apply(l,n),f.func=l;for(var r in e.callFn)e.callFn.hasOwnProperty(r)&&l[r]&&l[r].apply(l,e.callFn[r]);return e.attr&&(e.attr.id&&(g[e.attr.id]={objGroup:l,strGroup:a}),e.attr["data-root"]&&(g.root={objGroup:l,strGroup:a}),l.setAttr(e.attr)),l}function c(a,b){switch(a){case"empty":return new kf.EmptyExpression;case"text":return new kf.TextExpression(b)}}function d(a){return g[a]||kf[a.replace(/^[a-z]/i,function(a){return a.toUpperCase()}).replace(/-([a-z])/gi,function(a,b){return b.toUpperCase()})+"Expression"]}function e(a){var b={};if("[object Array]"==={}.toString.call(a)){b=[];for(var c=0,d=a.length;d>c;c++)b[c]=f(a[c])}else for(var e in a)a.hasOwnProperty(e)&&(b[e]=f(a[e]));return b}function f(a){return a?"object"!=typeof a?a:e(a):a}var g={},h="\uf155";return a.prototype.generateBy=function(a){var c=a.tree,d={},f={},g={};if("string"==typeof c)throw new Error("Unhandled error");return this.formula.appendExpression(b(c,e(c),d,g,f)),{select:f,parsedTree:c,tree:d,mapping:g}},a.prototype.regenerateBy=function(a){return this.formula.clearExpressions(),this.generateBy(a)},a}},b[1]={value:function(){return{toRPNExpression:b.r(2),generateTree:b.r(3)}}},b[2]={value:function(){function a(b){var e=[],f=null;for(b=c(b);f=b.shift();)"combination"===f.name&&1===f.operand.length&&"brackets"===f.operand[0].name&&(f=f.operand[0]),e.push(d.isArray(f)?a(f):f);return e}function c(a){for(var b=[],c=null;void 0!==(c=a.pop());)if(!c||"object"!=typeof c||c.sign!==!1&&"function"!==c.name)b.push(c);else{var d=c.handler(c,[],b.reverse());b.unshift(d),b.reverse()}return b.reverse()}var d=b.r(4);return a}},b[3]={value:function(){function a(b){for(var e=null,f=[],g=0,h=b.length;h>g;g++)d.isArray(b[g])&&(b[g]=a(b[g]));for(;e=b.shift();)f.push("object"==typeof e&&e.handler?e.handler(e,f,b):e);return c(f)}var c=b.r(13),d=b.r(4);return a}},b[4]={value:function(){var a=b.r(7),c=b.r(6),d=b.r(15),e={getLatexType:function(b){return b=b.replace(/^\\/,""),a[b]?"operator":c[b]?"function":"text"},isArray:function(a){return a&&"[object Array]"===Object.prototype.toString.call(a)},getDefine:function(b){return e.extend({},a[b.replace("\\","")])},getFuncDefine:function(a){return{name:"function",params:a.replace(/^\\/,""),handler:d}},getBracketsDefine:function(b,c){return e.extend({params:[b,c]},a.brackets)},extend:function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}};return e}},b[5]={value:function(){var a=!0;return{".":a,"{":a,"}":a,"[":a,"]":a,"(":a,")":a,"|":a}}},b[6]={value:function(){return{sin:1,cos:1,arccos:1,cosh:1,det:1,inf:1,limsup:1,Pr:1,tan:1,arcsin:1,cot:1,dim:1,ker:1,ln:1,sec:1,tanh:1,arctan:1,coth:1,exp:1,lg:1,log:1,arg:1,csc:1,gcd:1,lim:1,max:1,sinh:1,deg:1,hom:1,liminf:1,min:1,sup:1}}},b[7]={value:function(){var a=b.r(22),c=b.r(11);return{"^":{name:"superscript",type:c.OP,handler:a},_:{name:"subscript",type:c.OP,handler:a},frac:{name:"fraction",type:c.FN,sign:!1,handler:b.r(14)},sqrt:{name:"radical",type:c.FN,sign:!1,handler:b.r(23)},sum:{name:"summation",type:c.FN,traversal:"rtl",handler:b.r(24)},"int":{name:"integration",type:c.FN,traversal:"rtl",handler:b.r(16)},brackets:{name:"brackets",type:c.FN,handler:b.r(12)},mathcal:{name:"mathcal",type:c.FN,sign:!1,handler:b.r(19)},mathfrak:{name:"mathfrak",type:c.FN,sign:!1,handler:b.r(20)},mathbb:{name:"mathbb",type:c.FN,sign:!1,handler:b.r(18)},mathrm:{name:"mathrm",type:c.FN,sign:!1,handler:b.r(21)}}}},b[8]={value:function(){return{"int":b.r(26),quot:b.r(27)}}},b[9]={value:function(){return{combination:b.r(29),fraction:b.r(30),"function":b.r(31),integration:b.r(32),subscript:b.r(39),superscript:b.r(41),script:b.r(37),radical:b.r(38),summation:b.r(40),brackets:b.r(28),mathcal:b.r(34),mathfrak:b.r(35),mathbb:b.r(33),mathrm:b.r(36)}}},b[10]={value:function(){return{"#":1,$:1,"%":1,_:1,"&":1,"{":1,"}":1,"^":1,"~":1}}},b[11]={value:function(){return{OP:1,FN:2}}},b[12]={value:function(){var a=b.r(5);return function(b,c,d){for(var e=0,f=b.params.length;f>e;e++)if(!(b.params[e]in a))throw new Error("Brackets: invalid params");return b.operand=b.params,b.params[2]=d.shift(),delete b.handler,delete b.params,b}}},b[13]={value:function(){return function(){return{name:"combination",operand:arguments[0]||[]}}}},b[14]={value:function(){return function(a,b,c){var d=c.shift(),e=c.shift();if(void 0===d||void 0===e)throw new Error("Frac: Syntax Error");return d.handler&&"integration"===d.name?(d=d.handler(d,b,[e]),e=c.shift()):e.handler&&"integration"===e.name&&(e=e.handler(e,b,[c.shift()])),a.operand=[d,e],delete a.handler,a}}},b[15]={value:function(){var a=b.r(17);return function(b,c,d){var e=a.exec(d);return e.expr&&e.expr.handler&&"integration"===e.expr.name&&(e.expr=e.expr.handler(e.expr,c,[d.shift()])),b.operand=[b.params,e.expr,e.superscript,e.subscript],delete b.params,delete b.handler,b}}},b[16]={value:function(){var a=b.r(17),c=b.r(11).FN;return function(b,d,e){var f=e.shift(),g=a.exec(e);return g.expr&&g.expr.type===c&&g.expr.handler&&"integration"===g.expr.name&&(g.expr=g.expr.handler(g.expr,d,[e.shift()])),b.operand=[g.expr,g.superscript,g.subscript],b.callFn={setType:[0|f]},delete b.handler,b}}},b[17]={value:function(){function a(a){var c=b(a),d=null,e={superscript:null,subscript:null};if(!c)return e;if(d=b(a),e[c.type]=c.value||null,d){if(d.type===c.type)throw new Error("Script: syntax error!");e[d.type]=d.value||null}return e}function b(a){var b=a.shift();return b?"subscript"===b.name||"superscript"===b.name?{type:b.name,value:a.shift()}:(a.unshift(b),null):null}return{exec:function(b){var c=a(b),d=b.shift();if(d&&d.name&&-1!==d.name.indexOf("script"))throw new Error("Script: syntax error!");return c.expr=d||null,c}}}},b[18]={value:function(){return function(a,b,c){var d=c.shift();return"object"==typeof d&&"combination"===d.name&&(d=d.operand.join("")),a.name="text",a.attr={_reverse:"mathbb"},a.callFn={setFamily:["KF AMS BB"]},a.operand=[d],delete a.handler,a}}},b[19]={value:function(){return function(a,b,c){var d=c.shift();return"object"==typeof d&&"combination"===d.name&&(d=d.operand.join("")),a.name="text",a.attr={_reverse:"mathcal"},a.callFn={setFamily:["KF AMS CAL"]},a.operand=[d],delete a.handler,a}}},b[20]={value:function(){return function(a,b,c){var d=c.shift();return"object"==typeof d&&"combination"===d.name&&(d=d.operand.join("")),a.name="text",a.attr={_reverse:"mathfrak"},a.callFn={setFamily:["KF AMS FRAK"]},a.operand=[d],delete a.handler,a}}},b[21]={value:function(){return function(a,b,c){var d=c.shift();return"object"==typeof d&&"combination"===d.name&&(d=d.operand.join("")),a.name="text",a.attr={_reverse:"mathrm"},a.callFn={setFamily:["KF AMS ROMAN"]},a.operand=[d],delete a.handler,a}}},b[22]={value:function(){return function(a,b,c){var d=b.pop(),e=c.shift()||null;if(!e)throw new Error("Missing script");if(d=d||"",d.name===a.name||"script"===d.name)throw new Error("script error");return"subscript"===d.name?(d.name="script",d.operand[2]=d.operand[1],d.operand[1]=e,d):"superscript"===d.name?(d.name="script",d.operand[2]=e,d):(a.operand=[d,e],delete a.handler,a)}}},b[23]={value:function(){var a=b.r(13);return function(b,c,d){var e=d.shift(),f=null,g=null;if("["===e){for(e=[];(f=d.shift())&&"]"!==f;)e.push(f);e=0===e.length?null:a(e),g=d.shift()}else g=e,e=null;return b.operand=[g,e],delete b.handler,b}}},b[24]={value:function(){var a=b.r(17),c=b.r(11).FN;return function(b,d,e){var f=a.exec(e);return f.expr&&f.expr.type===c&&f.expr.handler&&"integration"===f.expr.name&&(f.expr=f.expr.handler(f.expr,d,[e.shift()])),b.operand=[f.expr,f.superscript,f.subscript],delete b.handler,b}}},b[25]={value:function(){function a(a){if(d(a))return a.substring(1);switch(m.getLatexType(a)){case"operator":return m.getDefine(a);case"function":return m.getFuncDefine(a);default:return c(a)}}function c(a){return 0===a.indexOf("\\")?a+"\\":a}function d(a){return 0===a.indexOf("\\")?!!l[a.substring(1)]:!1}function e(a){return a.replace(/\\\s+/,"").replace(/\s*([^a-z0-9\s])\s*/gi,function(a,b){return b})}var f=b.r(43).Parser,g=b.r(1),h=b.r(8),i=b.r(42),j=b.r(7),k=b.r(9),l=b.r(10),m=b.r(4),n="\ufff8",o="\ufffc",p=new RegExp(n+"|"+o,"g"),q=new RegExp(n,"g"),r=new RegExp(o,"g");f.register("latex",f.implement({parse:function(a){var b=this.split(this.format(a));return b=this.parseToGroup(b),b=this.parseToStruct(b),this.generateTree(b)},serialization:function(a,b){return i(a,b)},expand:function(a){var b=a.parse,c=null,d=a.pre,e=a.reverse;for(var f in b)b.hasOwnProperty(f)&&(c=f.replace(/\\/g,""),j[c]=b[f]);for(var f in e)e.hasOwnProperty(f)&&(k[f.replace(/\\/g,"")]=e[f]);if(d)for(var f in d)d.hasOwnProperty(f)&&(h[f.replace(/\\/g,"")]=d[f])},format:function(a){a=e(a),a=a.replace(p,"").replace(/\\{/gi,n).replace(/\\}/gi,o);for(var b in h)h.hasOwnProperty(b)&&(a=h[b](a));return a},split:function(a){var b=[],c=/(?:\\[^a-z]\s*)|(?:\\[a-z]+\s*)|(?:[{}]\s*)|(?:[^\\{}]\s*)/gi,d=/^\s+|\s+$/g,e=null;for(a=a.replace(d,"");e=c.exec(a);)e=e[0].replace(d,""),e&&b.push(e);return b},generateTree:function(a){for(var b=[],c=null;c=a.shift();)b.push(m.isArray(c)?this.generateTree(c):c);return b=g.toRPNExpression(b),g.generateTree(b)},parseToGroup:function(a){for(var b=[],c=[b],d=0,e=0,f=0,g=a.length;g>f;f++)switch(a[f]){case"{":d++,c.push(b),b.push([]),b=b[b.length-1];break;case"}":d--,b=c.pop();break;case"\\left":e++,c.push(b),b.push([[]]),b=b[b.length-1][0],b.type="brackets",f++,b.leftBrackets=a[f].replace(q,"{").replace(r,"}");break;case"\\right":e--,f++,b.rightBrackets=a[f].replace(q,"{").replace(r,"}"),b=c.pop();break;default:b.push(a[f].replace(q,"\\{").replace(r,"\\}"))}if(0!==d)throw new Error("Group Error!");if(0!==e)throw new Error("Brackets Error!");return c[0]},parseToStruct:function(b){for(var c=[],d=0,e=b.length;e>d;d++)m.isArray(b[d])?"brackets"===b[d].type?(c.push(m.getBracketsDefine(b[d].leftBrackets,b[d].rightBrackets)),c.push(this.parseToStruct(b[d]))):c.push(this.parseToStruct(b[d])):c.push(a(b[d]));return c}}))}},b[26]={value:function(){return function(a){return a.replace(/\\(i+)nt(\b|[^a-zA-Z])/g,function(a,b,c){return"\\int "+b.length+c})}}},b[27]={value:function(){return function(a){return a.replace(/``/g,"\u201c")}}},b[28]={value:function(){return function(a){return("{"===a[0]||"}"===a[0])&&(a[0]="\\"+a[0]),("{"===a[1]||"}"===a[1])&&(a[1]="\\"+a[1]),["\\left",a[0],a[2],"\\right",a[1]].join(" ")}}},b[29]={value:function(){return function(a){return this.attr["data-root"]||this.attr["data-placeholder"]?a.join(""):"{"+a.join("")+"}"}}},b[30]={value:function(){return function(a){return"\\frac "+a[0]+" "+a[1]}}},b[31]={value:function(){return function(a){var b=["\\"+a[0]];return a[2]&&b.push("^"+a[2]),a[3]&&b.push("_"+a[3]),a[1]&&b.push(" "+a[1]),b.join("")}}},b[32]={value:function(){return function(a){var b=["\\int "];if(this.callFn&&this.callFn.setType){b=["\\"];for(var c=0,d=this.callFn.setType;d>c;c++)b.push("i");b.push("nt ")}return a[1]&&b.push("^"+a[1]),a[2]&&b.push("_"+a[2]),a[0]&&b.push(" "+a[0]),b.join("")}}},b[33]={value:function(){return function(a){return"\\mathbb{"+a[0]+"}"}}},b[34]={value:function(){return function(a){return"\\mathcal{"+a[0]+"}"}}},b[35]={value:function(){return function(a){return"\\mathfrak{"+a[0]+"}"}}},b[36]={value:function(){return function(a){return"\\mathrm{"+a[0]+"}"}}},b[37]={value:function(){return function(a){return a[0]+"^"+a[1]+"_"+a[2]}}},b[38]={value:function(){return function(a){var b=["\\sqrt"];return a[1]&&b.push("["+a[1]+"]"),b.push(" "+a[0]),b.join("")}}},b[39]={value:function(){return function(a){return a[0]+"_"+a[1]}}},b[40]={value:function(){return function(a){var b=["\\sum "];return a[1]&&b.push("^"+a[1]),a[2]&&b.push("_"+a[2]),a[0]&&b.push(" "+a[0]),b.join("")}}},b[41]={value:function(){return function(a){return a[0]+"^"+a[1]}}},b[42]={value:function(){function a(b,e){var g=[],h=null,i=null;if("object"!=typeof b)return c(b)?"\\"+b+" ":b.replace(f,function(a,b){return b+" "});"combination"===b.name&&1===b.operand.length&&"combination"===b.operand[0].name&&(b=b.operand[0]),i=b.operand;for(var j=0,k=i.length;k>j;j++)g.push(i[j]?a(i[j]):i[j]);return h=b.attr&&b.attr._reverse?b.attr._reverse:b.name,d[h].call(b,g,e)}function c(a){return!!e[a]}var d=b.r(9),e=b.r(10),f=/(\\(?:[\w]+)|(?:[^a-z]))\\/gi;return function(b,c){return a(b,c)}}},b[43]={value:function(a,b,c){function d(a){this.impl=new a,this.conf={}}function e(){this.conf={}}var f={},g={},h={extend:function(a,b){var c=null;b=[].slice.call(arguments,1);for(var d=0,e=b.length;e>d;d++){c=b[d];for(var f in c)c.hasOwnProperty(f)&&(a[f]=c[f])}},setData:function(a,b,c){if("string"==typeof b)a[b]=c;else{if("object"!=typeof b)throw new Error("invalid option");for(c in b)b.hasOwnProperty(c)&&(a[c]=b[c])}}},i={use:function(a){if(!g[a])throw new Error("unknown parser type");return this.proxy(g[a])},config:function(a,b){return h.setData(f,a,b),this},register:function(a,b){return g[a.toLowerCase()]=b,this},implement:function(a){var b=function(){},c=a.constructor||function(){},d=function(){e.call(this),c.call(this)};b.prototype=e.prototype,d.prototype=new b,delete a.constructor;for(var f in a)"constructor"!==f&&a.hasOwnProperty(f)&&(d.prototype[f]=a[f]);return d},proxy:function(a){return new d(a)}};h.extend(d.prototype,{config:function(a,b){h.setData(this.conf,a,b)},set:function(a,b){this.impl.set(a,b)},parse:function(a){var b={config:{},tree:this.impl.parse(a)};return h.extend(b.config,f,this.conf),b},serialization:function(a,b){return this.impl.serialization(a,b)},expand:function(a){this.impl.expand(a)}}),h.extend(e.prototype,{set:function(a,b){h.extend(this.conf,a,b)},parse:function(){throw new Error("Abstract function")}}),c.exports={Parser:i,ParserInterface:e}}},b[44]={value:function(){var a=b.r(43).Parser;b.r(25),window.kf.Parser=a,window.kf.Assembly=b.r(0)}};var c={"kf.start":44};!function(){try{a("kf.start")}catch(b){}}(this)}(); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kity-formula-render.all.js b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kity-formula-render.all.js deleted file mode 100644 index 8066599..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kity-formula-render.all.js +++ /dev/null @@ -1,5757 +0,0 @@ -/*! - * ==================================================== - * Kity Formula Render - v1.0.0 - 2014-07-30 - * https://github.com/kitygraph/formula - * GitHub: https://github.com/kitygraph/formula.git - * Copyright (c) 2014 Baidu Kity Group; Licensed MIT - * ==================================================== - */ - -(function () { -var _p = { - r: function(index) { - if (_p[index].inited) { - return _p[index].value; - } - if (typeof _p[index].value === "function") { - var module = { - exports: {} - }, returnValue = _p[index].value(null, module.exports, module); - _p[index].inited = true; - _p[index].value = returnValue; - if (returnValue !== undefined) { - return returnValue; - } else { - for (var key in module.exports) { - if (module.exports.hasOwnProperty(key)) { - _p[index].inited = true; - _p[index].value = module.exports; - return module.exports; - } - } - } - } else { - _p[index].inited = true; - return _p[index].value; - } - } -}; - -/*! - * canvg库封装 - * canvg官网: https://code.google.com/p/canvg/ - */ -_p[0] = { - value: function(require) { - /** - * A class to parse color values - * @author Stoyan Stefanov - * @link http://www.phpied.com/rgb-color-parser-in-javascript/ - * @license Use it if you like it - */ - function RGBColor(color_string) { - this.ok = false; - // strip any leading # - if (color_string.charAt(0) == "#") { - // remove # if any - color_string = color_string.substr(1, 6); - } - color_string = color_string.replace(/ /g, ""); - color_string = color_string.toLowerCase(); - // before getting into regexps, try simple matches - // and overwrite the input - var simple_colors = { - aliceblue: "f0f8ff", - antiquewhite: "faebd7", - aqua: "00ffff", - aquamarine: "7fffd4", - azure: "f0ffff", - beige: "f5f5dc", - bisque: "ffe4c4", - black: "000000", - blanchedalmond: "ffebcd", - blue: "0000ff", - blueviolet: "8a2be2", - brown: "a52a2a", - burlywood: "deb887", - cadetblue: "5f9ea0", - chartreuse: "7fff00", - chocolate: "d2691e", - coral: "ff7f50", - cornflowerblue: "6495ed", - cornsilk: "fff8dc", - crimson: "dc143c", - cyan: "00ffff", - darkblue: "00008b", - darkcyan: "008b8b", - darkgoldenrod: "b8860b", - darkgray: "a9a9a9", - darkgreen: "006400", - darkkhaki: "bdb76b", - darkmagenta: "8b008b", - darkolivegreen: "556b2f", - darkorange: "ff8c00", - darkorchid: "9932cc", - darkred: "8b0000", - darksalmon: "e9967a", - darkseagreen: "8fbc8f", - darkslateblue: "483d8b", - darkslategray: "2f4f4f", - darkturquoise: "00ced1", - darkviolet: "9400d3", - deeppink: "ff1493", - deepskyblue: "00bfff", - dimgray: "696969", - dodgerblue: "1e90ff", - feldspar: "d19275", - firebrick: "b22222", - floralwhite: "fffaf0", - forestgreen: "228b22", - fuchsia: "ff00ff", - gainsboro: "dcdcdc", - ghostwhite: "f8f8ff", - gold: "ffd700", - goldenrod: "daa520", - gray: "808080", - green: "008000", - greenyellow: "adff2f", - honeydew: "f0fff0", - hotpink: "ff69b4", - indianred: "cd5c5c", - indigo: "4b0082", - ivory: "fffff0", - khaki: "f0e68c", - lavender: "e6e6fa", - lavenderblush: "fff0f5", - lawngreen: "7cfc00", - lemonchiffon: "fffacd", - lightblue: "add8e6", - lightcoral: "f08080", - lightcyan: "e0ffff", - lightgoldenrodyellow: "fafad2", - lightgrey: "d3d3d3", - lightgreen: "90ee90", - lightpink: "ffb6c1", - lightsalmon: "ffa07a", - lightseagreen: "20b2aa", - lightskyblue: "87cefa", - lightslateblue: "8470ff", - lightslategray: "778899", - lightsteelblue: "b0c4de", - lightyellow: "ffffe0", - lime: "00ff00", - limegreen: "32cd32", - linen: "faf0e6", - magenta: "ff00ff", - maroon: "800000", - mediumaquamarine: "66cdaa", - mediumblue: "0000cd", - mediumorchid: "ba55d3", - mediumpurple: "9370d8", - mediumseagreen: "3cb371", - mediumslateblue: "7b68ee", - mediumspringgreen: "00fa9a", - mediumturquoise: "48d1cc", - mediumvioletred: "c71585", - midnightblue: "191970", - mintcream: "f5fffa", - mistyrose: "ffe4e1", - moccasin: "ffe4b5", - navajowhite: "ffdead", - navy: "000080", - oldlace: "fdf5e6", - olive: "808000", - olivedrab: "6b8e23", - orange: "ffa500", - orangered: "ff4500", - orchid: "da70d6", - palegoldenrod: "eee8aa", - palegreen: "98fb98", - paleturquoise: "afeeee", - palevioletred: "d87093", - papayawhip: "ffefd5", - peachpuff: "ffdab9", - peru: "cd853f", - pink: "ffc0cb", - plum: "dda0dd", - powderblue: "b0e0e6", - purple: "800080", - red: "ff0000", - rosybrown: "bc8f8f", - royalblue: "4169e1", - saddlebrown: "8b4513", - salmon: "fa8072", - sandybrown: "f4a460", - seagreen: "2e8b57", - seashell: "fff5ee", - sienna: "a0522d", - silver: "c0c0c0", - skyblue: "87ceeb", - slateblue: "6a5acd", - slategray: "708090", - snow: "fffafa", - springgreen: "00ff7f", - steelblue: "4682b4", - tan: "d2b48c", - teal: "008080", - thistle: "d8bfd8", - tomato: "ff6347", - turquoise: "40e0d0", - violet: "ee82ee", - violetred: "d02090", - wheat: "f5deb3", - white: "ffffff", - whitesmoke: "f5f5f5", - yellow: "ffff00", - yellowgreen: "9acd32" - }; - for (var key in simple_colors) { - if (color_string == key) { - color_string = simple_colors[key]; - } - } - // emd of simple type-in colors - // array of color definition objects - var color_defs = [ { - re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/, - example: [ "rgb(123, 234, 45)", "rgb(255,234,245)" ], - process: function(bits) { - return [ parseInt(bits[1]), parseInt(bits[2]), parseInt(bits[3]) ]; - } - }, { - re: /^(\w{2})(\w{2})(\w{2})$/, - example: [ "#00ff00", "336699" ], - process: function(bits) { - return [ parseInt(bits[1], 16), parseInt(bits[2], 16), parseInt(bits[3], 16) ]; - } - }, { - re: /^(\w{1})(\w{1})(\w{1})$/, - example: [ "#fb0", "f0f" ], - process: function(bits) { - return [ parseInt(bits[1] + bits[1], 16), parseInt(bits[2] + bits[2], 16), parseInt(bits[3] + bits[3], 16) ]; - } - } ]; - // search through the definitions to find a match - for (var i = 0; i < color_defs.length; i++) { - var re = color_defs[i].re; - var processor = color_defs[i].process; - var bits = re.exec(color_string); - if (bits) { - channels = processor(bits); - this.r = channels[0]; - this.g = channels[1]; - this.b = channels[2]; - this.ok = true; - } - } - // validate/cleanup values - this.r = this.r < 0 || isNaN(this.r) ? 0 : this.r > 255 ? 255 : this.r; - this.g = this.g < 0 || isNaN(this.g) ? 0 : this.g > 255 ? 255 : this.g; - this.b = this.b < 0 || isNaN(this.b) ? 0 : this.b > 255 ? 255 : this.b; - // some getters - this.toRGB = function() { - return "rgb(" + this.r + ", " + this.g + ", " + this.b + ")"; - }; - this.toHex = function() { - var r = this.r.toString(16); - var g = this.g.toString(16); - var b = this.b.toString(16); - if (r.length == 1) r = "0" + r; - if (g.length == 1) g = "0" + g; - if (b.length == 1) b = "0" + b; - return "#" + r + g + b; - }; - // help - this.getHelpXML = function() { - var examples = new Array(); - // add regexps - for (var i = 0; i < color_defs.length; i++) { - var example = color_defs[i].example; - for (var j = 0; j < example.length; j++) { - examples[examples.length] = example[j]; - } - } - // add type-in colors - for (var sc in simple_colors) { - examples[examples.length] = sc; - } - var xml = document.createElement("ul"); - xml.setAttribute("id", "rgbcolor-examples"); - for (var i = 0; i < examples.length; i++) { - try { - var list_item = document.createElement("li"); - var list_color = new RGBColor(examples[i]); - var example_div = document.createElement("div"); - example_div.style.cssText = "margin: 3px; " + "border: 1px solid black; " + "background:" + list_color.toHex() + "; " + "color:" + list_color.toHex(); - example_div.appendChild(document.createTextNode("test")); - var list_item_value = document.createTextNode(" " + examples[i] + " -> " + list_color.toRGB() + " -> " + list_color.toHex()); - list_item.appendChild(example_div); - list_item.appendChild(list_item_value); - xml.appendChild(list_item); - } catch (e) {} - } - return xml; - }; - } - /* - - StackBlur - a fast almost Gaussian Blur For Canvas - - Version: 0.5 - Author: Mario Klingemann - Contact: mario@quasimondo.com - Website: http://www.quasimondo.com/StackBlurForCanvas - Twitter: @quasimondo - - In case you find this class useful - especially in commercial projects - - I am not totally unhappy for a small donation to my PayPal account - mario@quasimondo.de - - Or support me on flattr: - https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript - - Copyright (c) 2010 Mario Klingemann - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - */ - var mul_table = [ 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259 ]; - var shg_table = [ 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 ]; - function stackBlurImage(imageID, canvasID, radius, blurAlphaChannel) { - var img = document.getElementById(imageID); - var w = img.naturalWidth; - var h = img.naturalHeight; - var canvas = document.getElementById(canvasID); - canvas.style.width = w + "px"; - canvas.style.height = h + "px"; - canvas.width = w; - canvas.height = h; - var context = canvas.getContext("2d"); - context.clearRect(0, 0, w, h); - context.drawImage(img, 0, 0); - if (isNaN(radius) || radius < 1) return; - if (blurAlphaChannel) stackBlurCanvasRGBA(canvasID, 0, 0, w, h, radius); else stackBlurCanvasRGB(canvasID, 0, 0, w, h, radius); - } - function stackBlurCanvasRGBA(id, top_x, top_y, width, height, radius) { - if (isNaN(radius) || radius < 1) return; - radius |= 0; - var canvas = document.getElementById(id); - var context = canvas.getContext("2d"); - var imageData; - try { - try { - imageData = context.getImageData(top_x, top_y, width, height); - } catch (e) { - // NOTE: this part is supposedly only needed if you want to work with local files - // so it might be okay to remove the whole try/catch block and just use - // imageData = context.getImageData( top_x, top_y, width, height ); - try { - netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); - imageData = context.getImageData(top_x, top_y, width, height); - } catch (e) { - alert("Cannot access local image"); - throw new Error("unable to access local image data: " + e); - return; - } - } - } catch (e) { - alert("Cannot access image"); - throw new Error("unable to access image data: " + e); - } - var pixels = imageData.data; - var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs; - var div = radius + radius + 1; - var w4 = width << 2; - var widthMinus1 = width - 1; - var heightMinus1 = height - 1; - var radiusPlus1 = radius + 1; - var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2; - var stackStart = new BlurStack(); - var stack = stackStart; - for (i = 1; i < div; i++) { - stack = stack.next = new BlurStack(); - if (i == radiusPlus1) var stackEnd = stack; - } - stack.next = stackStart; - var stackIn = null; - var stackOut = null; - yw = yi = 0; - var mul_sum = mul_table[radius]; - var shg_sum = shg_table[radius]; - for (y = 0; y < height; y++) { - r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0; - r_out_sum = radiusPlus1 * (pr = pixels[yi]); - g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]); - b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]); - a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]); - r_sum += sumFactor * pr; - g_sum += sumFactor * pg; - b_sum += sumFactor * pb; - a_sum += sumFactor * pa; - stack = stackStart; - for (i = 0; i < radiusPlus1; i++) { - stack.r = pr; - stack.g = pg; - stack.b = pb; - stack.a = pa; - stack = stack.next; - } - for (i = 1; i < radiusPlus1; i++) { - p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2); - r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i); - g_sum += (stack.g = pg = pixels[p + 1]) * rbs; - b_sum += (stack.b = pb = pixels[p + 2]) * rbs; - a_sum += (stack.a = pa = pixels[p + 3]) * rbs; - r_in_sum += pr; - g_in_sum += pg; - b_in_sum += pb; - a_in_sum += pa; - stack = stack.next; - } - stackIn = stackStart; - stackOut = stackEnd; - for (x = 0; x < width; x++) { - pixels[yi + 3] = pa = a_sum * mul_sum >> shg_sum; - if (pa != 0) { - pa = 255 / pa; - pixels[yi] = (r_sum * mul_sum >> shg_sum) * pa; - pixels[yi + 1] = (g_sum * mul_sum >> shg_sum) * pa; - pixels[yi + 2] = (b_sum * mul_sum >> shg_sum) * pa; - } else { - pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0; - } - r_sum -= r_out_sum; - g_sum -= g_out_sum; - b_sum -= b_out_sum; - a_sum -= a_out_sum; - r_out_sum -= stackIn.r; - g_out_sum -= stackIn.g; - b_out_sum -= stackIn.b; - a_out_sum -= stackIn.a; - p = yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1) << 2; - r_in_sum += stackIn.r = pixels[p]; - g_in_sum += stackIn.g = pixels[p + 1]; - b_in_sum += stackIn.b = pixels[p + 2]; - a_in_sum += stackIn.a = pixels[p + 3]; - r_sum += r_in_sum; - g_sum += g_in_sum; - b_sum += b_in_sum; - a_sum += a_in_sum; - stackIn = stackIn.next; - r_out_sum += pr = stackOut.r; - g_out_sum += pg = stackOut.g; - b_out_sum += pb = stackOut.b; - a_out_sum += pa = stackOut.a; - r_in_sum -= pr; - g_in_sum -= pg; - b_in_sum -= pb; - a_in_sum -= pa; - stackOut = stackOut.next; - yi += 4; - } - yw += width; - } - for (x = 0; x < width; x++) { - g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0; - yi = x << 2; - r_out_sum = radiusPlus1 * (pr = pixels[yi]); - g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]); - b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]); - a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]); - r_sum += sumFactor * pr; - g_sum += sumFactor * pg; - b_sum += sumFactor * pb; - a_sum += sumFactor * pa; - stack = stackStart; - for (i = 0; i < radiusPlus1; i++) { - stack.r = pr; - stack.g = pg; - stack.b = pb; - stack.a = pa; - stack = stack.next; - } - yp = width; - for (i = 1; i <= radius; i++) { - yi = yp + x << 2; - r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i); - g_sum += (stack.g = pg = pixels[yi + 1]) * rbs; - b_sum += (stack.b = pb = pixels[yi + 2]) * rbs; - a_sum += (stack.a = pa = pixels[yi + 3]) * rbs; - r_in_sum += pr; - g_in_sum += pg; - b_in_sum += pb; - a_in_sum += pa; - stack = stack.next; - if (i < heightMinus1) { - yp += width; - } - } - yi = x; - stackIn = stackStart; - stackOut = stackEnd; - for (y = 0; y < height; y++) { - p = yi << 2; - pixels[p + 3] = pa = a_sum * mul_sum >> shg_sum; - if (pa > 0) { - pa = 255 / pa; - pixels[p] = (r_sum * mul_sum >> shg_sum) * pa; - pixels[p + 1] = (g_sum * mul_sum >> shg_sum) * pa; - pixels[p + 2] = (b_sum * mul_sum >> shg_sum) * pa; - } else { - pixels[p] = pixels[p + 1] = pixels[p + 2] = 0; - } - r_sum -= r_out_sum; - g_sum -= g_out_sum; - b_sum -= b_out_sum; - a_sum -= a_out_sum; - r_out_sum -= stackIn.r; - g_out_sum -= stackIn.g; - b_out_sum -= stackIn.b; - a_out_sum -= stackIn.a; - p = x + ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width << 2; - r_sum += r_in_sum += stackIn.r = pixels[p]; - g_sum += g_in_sum += stackIn.g = pixels[p + 1]; - b_sum += b_in_sum += stackIn.b = pixels[p + 2]; - a_sum += a_in_sum += stackIn.a = pixels[p + 3]; - stackIn = stackIn.next; - r_out_sum += pr = stackOut.r; - g_out_sum += pg = stackOut.g; - b_out_sum += pb = stackOut.b; - a_out_sum += pa = stackOut.a; - r_in_sum -= pr; - g_in_sum -= pg; - b_in_sum -= pb; - a_in_sum -= pa; - stackOut = stackOut.next; - yi += width; - } - } - context.putImageData(imageData, top_x, top_y); - } - function stackBlurCanvasRGB(id, top_x, top_y, width, height, radius) { - if (isNaN(radius) || radius < 1) return; - radius |= 0; - var canvas = document.getElementById(id); - var context = canvas.getContext("2d"); - var imageData; - try { - try { - imageData = context.getImageData(top_x, top_y, width, height); - } catch (e) { - // NOTE: this part is supposedly only needed if you want to work with local files - // so it might be okay to remove the whole try/catch block and just use - // imageData = context.getImageData( top_x, top_y, width, height ); - try { - netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); - imageData = context.getImageData(top_x, top_y, width, height); - } catch (e) { - alert("Cannot access local image"); - throw new Error("unable to access local image data: " + e); - return; - } - } - } catch (e) { - alert("Cannot access image"); - throw new Error("unable to access image data: " + e); - } - var pixels = imageData.data; - var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, r_out_sum, g_out_sum, b_out_sum, r_in_sum, g_in_sum, b_in_sum, pr, pg, pb, rbs; - var div = radius + radius + 1; - var w4 = width << 2; - var widthMinus1 = width - 1; - var heightMinus1 = height - 1; - var radiusPlus1 = radius + 1; - var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2; - var stackStart = new BlurStack(); - var stack = stackStart; - for (i = 1; i < div; i++) { - stack = stack.next = new BlurStack(); - if (i == radiusPlus1) var stackEnd = stack; - } - stack.next = stackStart; - var stackIn = null; - var stackOut = null; - yw = yi = 0; - var mul_sum = mul_table[radius]; - var shg_sum = shg_table[radius]; - for (y = 0; y < height; y++) { - r_in_sum = g_in_sum = b_in_sum = r_sum = g_sum = b_sum = 0; - r_out_sum = radiusPlus1 * (pr = pixels[yi]); - g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]); - b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]); - r_sum += sumFactor * pr; - g_sum += sumFactor * pg; - b_sum += sumFactor * pb; - stack = stackStart; - for (i = 0; i < radiusPlus1; i++) { - stack.r = pr; - stack.g = pg; - stack.b = pb; - stack = stack.next; - } - for (i = 1; i < radiusPlus1; i++) { - p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2); - r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i); - g_sum += (stack.g = pg = pixels[p + 1]) * rbs; - b_sum += (stack.b = pb = pixels[p + 2]) * rbs; - r_in_sum += pr; - g_in_sum += pg; - b_in_sum += pb; - stack = stack.next; - } - stackIn = stackStart; - stackOut = stackEnd; - for (x = 0; x < width; x++) { - pixels[yi] = r_sum * mul_sum >> shg_sum; - pixels[yi + 1] = g_sum * mul_sum >> shg_sum; - pixels[yi + 2] = b_sum * mul_sum >> shg_sum; - r_sum -= r_out_sum; - g_sum -= g_out_sum; - b_sum -= b_out_sum; - r_out_sum -= stackIn.r; - g_out_sum -= stackIn.g; - b_out_sum -= stackIn.b; - p = yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1) << 2; - r_in_sum += stackIn.r = pixels[p]; - g_in_sum += stackIn.g = pixels[p + 1]; - b_in_sum += stackIn.b = pixels[p + 2]; - r_sum += r_in_sum; - g_sum += g_in_sum; - b_sum += b_in_sum; - stackIn = stackIn.next; - r_out_sum += pr = stackOut.r; - g_out_sum += pg = stackOut.g; - b_out_sum += pb = stackOut.b; - r_in_sum -= pr; - g_in_sum -= pg; - b_in_sum -= pb; - stackOut = stackOut.next; - yi += 4; - } - yw += width; - } - for (x = 0; x < width; x++) { - g_in_sum = b_in_sum = r_in_sum = g_sum = b_sum = r_sum = 0; - yi = x << 2; - r_out_sum = radiusPlus1 * (pr = pixels[yi]); - g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]); - b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]); - r_sum += sumFactor * pr; - g_sum += sumFactor * pg; - b_sum += sumFactor * pb; - stack = stackStart; - for (i = 0; i < radiusPlus1; i++) { - stack.r = pr; - stack.g = pg; - stack.b = pb; - stack = stack.next; - } - yp = width; - for (i = 1; i <= radius; i++) { - yi = yp + x << 2; - r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i); - g_sum += (stack.g = pg = pixels[yi + 1]) * rbs; - b_sum += (stack.b = pb = pixels[yi + 2]) * rbs; - r_in_sum += pr; - g_in_sum += pg; - b_in_sum += pb; - stack = stack.next; - if (i < heightMinus1) { - yp += width; - } - } - yi = x; - stackIn = stackStart; - stackOut = stackEnd; - for (y = 0; y < height; y++) { - p = yi << 2; - pixels[p] = r_sum * mul_sum >> shg_sum; - pixels[p + 1] = g_sum * mul_sum >> shg_sum; - pixels[p + 2] = b_sum * mul_sum >> shg_sum; - r_sum -= r_out_sum; - g_sum -= g_out_sum; - b_sum -= b_out_sum; - r_out_sum -= stackIn.r; - g_out_sum -= stackIn.g; - b_out_sum -= stackIn.b; - p = x + ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width << 2; - r_sum += r_in_sum += stackIn.r = pixels[p]; - g_sum += g_in_sum += stackIn.g = pixels[p + 1]; - b_sum += b_in_sum += stackIn.b = pixels[p + 2]; - stackIn = stackIn.next; - r_out_sum += pr = stackOut.r; - g_out_sum += pg = stackOut.g; - b_out_sum += pb = stackOut.b; - r_in_sum -= pr; - g_in_sum -= pg; - b_in_sum -= pb; - stackOut = stackOut.next; - yi += width; - } - } - context.putImageData(imageData, top_x, top_y); - } - function BlurStack() { - this.r = 0; - this.g = 0; - this.b = 0; - this.a = 0; - this.next = null; - } - /* - * canvg.js - Javascript SVG parser and renderer on Canvas - * MIT Licensed - * Gabe Lerner (gabelerner@gmail.com) - * http://code.google.com/p/canvg/ - * - * Requires: rgbcolor.js - http://www.phpied.com/rgb-color-parser-in-javascript/ - */ - (function() { - // canvg(target, s) - // empty parameters: replace all 'svg' elements on page with 'canvas' elements - // target: canvas element or the id of a canvas element - // s: svg string, url to svg file, or xml document - // opts: optional hash of options - // ignoreMouse: true => ignore mouse events - // ignoreAnimation: true => ignore animations - // ignoreDimensions: true => does not try to resize canvas - // ignoreClear: true => does not clear canvas - // offsetX: int => draws at a x offset - // offsetY: int => draws at a y offset - // scaleWidth: int => scales horizontally to width - // scaleHeight: int => scales vertically to height - // renderCallback: function => will call the function after the first render is completed - // forceRedraw: function => will call the function on every frame, if it returns true, will redraw - this.canvg = function(target, s, opts) { - // no parameters - if (target == null && s == null && opts == null) { - var svgTags = document.getElementsByTagName("svg"); - for (var i = 0; i < svgTags.length; i++) { - var svgTag = svgTags[i]; - var c = document.createElement("canvas"); - c.width = svgTag.clientWidth; - c.height = svgTag.clientHeight; - svgTag.parentNode.insertBefore(c, svgTag); - svgTag.parentNode.removeChild(svgTag); - var div = document.createElement("div"); - div.appendChild(svgTag); - canvg(c, div.innerHTML); - } - return; - } - opts = opts || {}; - if (typeof target == "string") { - target = document.getElementById(target); - } - // store class on canvas - if (target.svg != null) target.svg.stop(); - var svg = build(); - // on i.e. 8 for flash canvas, we can't assign the property so check for it - if (!(target.childNodes.length == 1 && target.childNodes[0].nodeName == "OBJECT")) target.svg = svg; - svg.opts = opts; - var ctx = target.getContext("2d"); - if (typeof s.documentElement != "undefined") { - // load from xml doc - svg.loadXmlDoc(ctx, s); - } else if (s.substr(0, 1) == "<") { - // load from xml string - svg.loadXml(ctx, s); - } else { - // load from url - svg.load(ctx, s); - } - }; - function build() { - var svg = {}; - svg.FRAMERATE = 30; - svg.MAX_VIRTUAL_PIXELS = 3e4; - // globals - svg.init = function(ctx) { - var uniqueId = 0; - svg.UniqueId = function() { - uniqueId++; - return "canvg" + uniqueId; - }; - svg.Definitions = {}; - svg.Styles = {}; - svg.Animations = []; - svg.Images = []; - svg.ctx = ctx; - svg.ViewPort = new function() { - this.viewPorts = []; - this.Clear = function() { - this.viewPorts = []; - }; - this.SetCurrent = function(width, height) { - this.viewPorts.push({ - width: width, - height: height - }); - }; - this.RemoveCurrent = function() { - this.viewPorts.pop(); - }; - this.Current = function() { - return this.viewPorts[this.viewPorts.length - 1]; - }; - this.width = function() { - return this.Current().width; - }; - this.height = function() { - return this.Current().height; - }; - this.ComputeSize = function(d) { - if (d != null && typeof d == "number") return d; - if (d == "x") return this.width(); - if (d == "y") return this.height(); - return Math.sqrt(Math.pow(this.width(), 2) + Math.pow(this.height(), 2)) / Math.sqrt(2); - }; - }(); - }; - svg.init(); - // images loaded - svg.ImagesLoaded = function() { - for (var i = 0; i < svg.Images.length; i++) { - if (!svg.Images[i].loaded) return false; - } - return true; - }; - // trim - svg.trim = function(s) { - return s.replace(/^\s+|\s+$/g, ""); - }; - // compress spaces - svg.compressSpaces = function(s) { - return s.replace(/[\s\r\t\n]+/gm, " "); - }; - // ajax - svg.ajax = function(url) { - var AJAX; - if (window.XMLHttpRequest) { - AJAX = new XMLHttpRequest(); - } else { - AJAX = new ActiveXObject("Microsoft.XMLHTTP"); - } - if (AJAX) { - AJAX.open("GET", url, false); - AJAX.send(null); - return AJAX.responseText; - } - return null; - }; - // parse xml - svg.parseXml = function(xml) { - if (window.DOMParser) { - var parser = new DOMParser(); - return parser.parseFromString(xml, "text/xml"); - } else { - xml = xml.replace(/]*>/, ""); - var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); - xmlDoc.async = "false"; - xmlDoc.loadXML(xml); - return xmlDoc; - } - }; - svg.Property = function(name, value) { - this.name = name; - this.value = value; - }; - svg.Property.prototype.getValue = function() { - return this.value; - }; - svg.Property.prototype.hasValue = function() { - return this.value != null && this.value !== ""; - }; - // return the numerical value of the property - svg.Property.prototype.numValue = function() { - if (!this.hasValue()) return 0; - var n = parseFloat(this.value); - if ((this.value + "").match(/%$/)) { - n = n / 100; - } - return n; - }; - svg.Property.prototype.valueOrDefault = function(def) { - if (this.hasValue()) return this.value; - return def; - }; - svg.Property.prototype.numValueOrDefault = function(def) { - if (this.hasValue()) return this.numValue(); - return def; - }; - // color extensions - // augment the current color value with the opacity - svg.Property.prototype.addOpacity = function(opacity) { - var newValue = this.value; - if (opacity != null && opacity != "" && typeof this.value == "string") { - // can only add opacity to colors, not patterns - var color = new RGBColor(this.value); - if (color.ok) { - newValue = "rgba(" + color.r + ", " + color.g + ", " + color.b + ", " + opacity + ")"; - } - } - return new svg.Property(this.name, newValue); - }; - // definition extensions - // get the definition from the definitions table - svg.Property.prototype.getDefinition = function() { - var name = this.value.match(/#([^\)'"]+)/); - if (name) { - name = name[1]; - } - if (!name) { - name = this.value; - } - return svg.Definitions[name]; - }; - svg.Property.prototype.isUrlDefinition = function() { - return this.value.indexOf("url(") == 0; - }; - svg.Property.prototype.getFillStyleDefinition = function(e, opacityProp) { - var def = this.getDefinition(); - // gradient - if (def != null && def.createGradient) { - return def.createGradient(svg.ctx, e, opacityProp); - } - // pattern - if (def != null && def.createPattern) { - if (def.getHrefAttribute().hasValue()) { - var pt = def.attribute("patternTransform"); - def = def.getHrefAttribute().getDefinition(); - if (pt.hasValue()) { - def.attribute("patternTransform", true).value = pt.value; - } - } - return def.createPattern(svg.ctx, e); - } - return null; - }; - // length extensions - svg.Property.prototype.getDPI = function(viewPort) { - return 96; - }; - svg.Property.prototype.getEM = function(viewPort) { - var em = 12; - var fontSize = new svg.Property("fontSize", svg.Font.Parse(svg.ctx.font).fontSize); - if (fontSize.hasValue()) em = fontSize.toPixels(viewPort); - return em; - }; - svg.Property.prototype.getUnits = function() { - var s = this.value + ""; - return s.replace(/[0-9\.\-]/g, ""); - }; - // get the length as pixels - svg.Property.prototype.toPixels = function(viewPort, processPercent) { - if (!this.hasValue()) return 0; - var s = this.value + ""; - if (s.match(/em$/)) return this.numValue() * this.getEM(viewPort); - if (s.match(/ex$/)) return this.numValue() * this.getEM(viewPort) / 2; - if (s.match(/px$/)) return this.numValue(); - if (s.match(/pt$/)) return this.numValue() * this.getDPI(viewPort) * (1 / 72); - if (s.match(/pc$/)) return this.numValue() * 15; - if (s.match(/cm$/)) return this.numValue() * this.getDPI(viewPort) / 2.54; - if (s.match(/mm$/)) return this.numValue() * this.getDPI(viewPort) / 25.4; - if (s.match(/in$/)) return this.numValue() * this.getDPI(viewPort); - if (s.match(/%$/)) return this.numValue() * svg.ViewPort.ComputeSize(viewPort); - var n = this.numValue(); - if (processPercent && n < 1) return n * svg.ViewPort.ComputeSize(viewPort); - return n; - }; - // time extensions - // get the time as milliseconds - svg.Property.prototype.toMilliseconds = function() { - if (!this.hasValue()) return 0; - var s = this.value + ""; - if (s.match(/s$/)) return this.numValue() * 1e3; - if (s.match(/ms$/)) return this.numValue(); - return this.numValue(); - }; - // angle extensions - // get the angle as radians - svg.Property.prototype.toRadians = function() { - if (!this.hasValue()) return 0; - var s = this.value + ""; - if (s.match(/deg$/)) return this.numValue() * (Math.PI / 180); - if (s.match(/grad$/)) return this.numValue() * (Math.PI / 200); - if (s.match(/rad$/)) return this.numValue(); - return this.numValue() * (Math.PI / 180); - }; - // fonts - svg.Font = new function() { - this.Styles = "normal|italic|oblique|inherit"; - this.Variants = "normal|small-caps|inherit"; - this.Weights = "normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit"; - this.CreateFont = function(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) { - var f = inherit != null ? this.Parse(inherit) : this.CreateFont("", "", "", "", "", svg.ctx.font); - return { - fontFamily: fontFamily || f.fontFamily, - fontSize: fontSize || f.fontSize, - fontStyle: fontStyle || f.fontStyle, - fontWeight: fontWeight || f.fontWeight, - fontVariant: fontVariant || f.fontVariant, - toString: function() { - return [ this.fontStyle, this.fontVariant, this.fontWeight, this.fontSize, this.fontFamily ].join(" "); - } - }; - }; - var that = this; - this.Parse = function(s) { - var f = {}; - var d = svg.trim(svg.compressSpaces(s || "")).split(" "); - var set = { - fontSize: false, - fontStyle: false, - fontWeight: false, - fontVariant: false - }; - var ff = ""; - for (var i = 0; i < d.length; i++) { - if (!set.fontStyle && that.Styles.indexOf(d[i]) != -1) { - if (d[i] != "inherit") f.fontStyle = d[i]; - set.fontStyle = true; - } else if (!set.fontVariant && that.Variants.indexOf(d[i]) != -1) { - if (d[i] != "inherit") f.fontVariant = d[i]; - set.fontStyle = set.fontVariant = true; - } else if (!set.fontWeight && that.Weights.indexOf(d[i]) != -1) { - if (d[i] != "inherit") f.fontWeight = d[i]; - set.fontStyle = set.fontVariant = set.fontWeight = true; - } else if (!set.fontSize) { - if (d[i] != "inherit") f.fontSize = d[i].split("/")[0]; - set.fontStyle = set.fontVariant = set.fontWeight = set.fontSize = true; - } else { - if (d[i] != "inherit") ff += d[i]; - } - } - if (ff != "") f.fontFamily = ff; - return f; - }; - }(); - // points and paths - svg.ToNumberArray = function(s) { - var a = svg.trim(svg.compressSpaces((s || "").replace(/,/g, " "))).split(" "); - for (var i = 0; i < a.length; i++) { - a[i] = parseFloat(a[i]); - } - return a; - }; - svg.Point = function(x, y) { - this.x = x; - this.y = y; - }; - svg.Point.prototype.angleTo = function(p) { - return Math.atan2(p.y - this.y, p.x - this.x); - }; - svg.Point.prototype.applyTransform = function(v) { - var xp = this.x * v[0] + this.y * v[2] + v[4]; - var yp = this.x * v[1] + this.y * v[3] + v[5]; - this.x = xp; - this.y = yp; - }; - svg.CreatePoint = function(s) { - var a = svg.ToNumberArray(s); - return new svg.Point(a[0], a[1]); - }; - svg.CreatePath = function(s) { - var a = svg.ToNumberArray(s); - var path = []; - for (var i = 0; i < a.length; i += 2) { - path.push(new svg.Point(a[i], a[i + 1])); - } - return path; - }; - // bounding box - svg.BoundingBox = function(x1, y1, x2, y2) { - // pass in initial points if you want - this.x1 = Number.NaN; - this.y1 = Number.NaN; - this.x2 = Number.NaN; - this.y2 = Number.NaN; - this.x = function() { - return this.x1; - }; - this.y = function() { - return this.y1; - }; - this.width = function() { - return this.x2 - this.x1; - }; - this.height = function() { - return this.y2 - this.y1; - }; - this.addPoint = function(x, y) { - if (x != null) { - if (isNaN(this.x1) || isNaN(this.x2)) { - this.x1 = x; - this.x2 = x; - } - if (x < this.x1) this.x1 = x; - if (x > this.x2) this.x2 = x; - } - if (y != null) { - if (isNaN(this.y1) || isNaN(this.y2)) { - this.y1 = y; - this.y2 = y; - } - if (y < this.y1) this.y1 = y; - if (y > this.y2) this.y2 = y; - } - }; - this.addX = function(x) { - this.addPoint(x, null); - }; - this.addY = function(y) { - this.addPoint(null, y); - }; - this.addBoundingBox = function(bb) { - this.addPoint(bb.x1, bb.y1); - this.addPoint(bb.x2, bb.y2); - }; - this.addQuadraticCurve = function(p0x, p0y, p1x, p1y, p2x, p2y) { - var cp1x = p0x + 2 / 3 * (p1x - p0x); - // CP1 = QP0 + 2/3 *(QP1-QP0) - var cp1y = p0y + 2 / 3 * (p1y - p0y); - // CP1 = QP0 + 2/3 *(QP1-QP0) - var cp2x = cp1x + 1 / 3 * (p2x - p0x); - // CP2 = CP1 + 1/3 *(QP2-QP0) - var cp2y = cp1y + 1 / 3 * (p2y - p0y); - // CP2 = CP1 + 1/3 *(QP2-QP0) - this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y); - }; - this.addBezierCurve = function(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) { - // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html - var p0 = [ p0x, p0y ], p1 = [ p1x, p1y ], p2 = [ p2x, p2y ], p3 = [ p3x, p3y ]; - this.addPoint(p0[0], p0[1]); - this.addPoint(p3[0], p3[1]); - for (i = 0; i <= 1; i++) { - var f = function(t) { - return Math.pow(1 - t, 3) * p0[i] + 3 * Math.pow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * Math.pow(t, 2) * p2[i] + Math.pow(t, 3) * p3[i]; - }; - var b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i]; - var a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i]; - var c = 3 * p1[i] - 3 * p0[i]; - if (a == 0) { - if (b == 0) continue; - var t = -c / b; - if (0 < t && t < 1) { - if (i == 0) this.addX(f(t)); - if (i == 1) this.addY(f(t)); - } - continue; - } - var b2ac = Math.pow(b, 2) - 4 * c * a; - if (b2ac < 0) continue; - var t1 = (-b + Math.sqrt(b2ac)) / (2 * a); - if (0 < t1 && t1 < 1) { - if (i == 0) this.addX(f(t1)); - if (i == 1) this.addY(f(t1)); - } - var t2 = (-b - Math.sqrt(b2ac)) / (2 * a); - if (0 < t2 && t2 < 1) { - if (i == 0) this.addX(f(t2)); - if (i == 1) this.addY(f(t2)); - } - } - }; - this.isPointInBox = function(x, y) { - return this.x1 <= x && x <= this.x2 && this.y1 <= y && y <= this.y2; - }; - this.addPoint(x1, y1); - this.addPoint(x2, y2); - }; - // transforms - svg.Transform = function(v) { - var that = this; - this.Type = {}; - // translate - this.Type.translate = function(s) { - this.p = svg.CreatePoint(s); - this.apply = function(ctx) { - ctx.translate(this.p.x || 0, this.p.y || 0); - }; - this.unapply = function(ctx) { - ctx.translate(-1 * this.p.x || 0, -1 * this.p.y || 0); - }; - this.applyToPoint = function(p) { - p.applyTransform([ 1, 0, 0, 1, this.p.x || 0, this.p.y || 0 ]); - }; - }; - // rotate - this.Type.rotate = function(s) { - var a = svg.ToNumberArray(s); - this.angle = new svg.Property("angle", a[0]); - this.cx = a[1] || 0; - this.cy = a[2] || 0; - this.apply = function(ctx) { - ctx.translate(this.cx, this.cy); - ctx.rotate(this.angle.toRadians()); - ctx.translate(-this.cx, -this.cy); - }; - this.unapply = function(ctx) { - ctx.translate(this.cx, this.cy); - ctx.rotate(-1 * this.angle.toRadians()); - ctx.translate(-this.cx, -this.cy); - }; - this.applyToPoint = function(p) { - var a = this.angle.toRadians(); - p.applyTransform([ 1, 0, 0, 1, this.p.x || 0, this.p.y || 0 ]); - p.applyTransform([ Math.cos(a), Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0 ]); - p.applyTransform([ 1, 0, 0, 1, -this.p.x || 0, -this.p.y || 0 ]); - }; - }; - this.Type.scale = function(s) { - this.p = svg.CreatePoint(s); - this.apply = function(ctx) { - ctx.scale(this.p.x || 1, this.p.y || this.p.x || 1); - }; - this.unapply = function(ctx) { - ctx.scale(1 / this.p.x || 1, 1 / this.p.y || this.p.x || 1); - }; - this.applyToPoint = function(p) { - p.applyTransform([ this.p.x || 0, 0, 0, this.p.y || 0, 0, 0 ]); - }; - }; - this.Type.matrix = function(s) { - this.m = svg.ToNumberArray(s); - this.apply = function(ctx) { - ctx.transform(this.m[0], this.m[1], this.m[2], this.m[3], this.m[4], this.m[5]); - }; - this.applyToPoint = function(p) { - p.applyTransform(this.m); - }; - }; - this.Type.SkewBase = function(s) { - this.base = that.Type.matrix; - this.base(s); - this.angle = new svg.Property("angle", s); - }; - this.Type.SkewBase.prototype = new this.Type.matrix(); - this.Type.skewX = function(s) { - this.base = that.Type.SkewBase; - this.base(s); - this.m = [ 1, 0, Math.tan(this.angle.toRadians()), 1, 0, 0 ]; - }; - this.Type.skewX.prototype = new this.Type.SkewBase(); - this.Type.skewY = function(s) { - this.base = that.Type.SkewBase; - this.base(s); - this.m = [ 1, Math.tan(this.angle.toRadians()), 0, 1, 0, 0 ]; - }; - this.Type.skewY.prototype = new this.Type.SkewBase(); - this.transforms = []; - this.apply = function(ctx) { - for (var i = 0; i < this.transforms.length; i++) { - this.transforms[i].apply(ctx); - } - }; - this.unapply = function(ctx) { - for (var i = this.transforms.length - 1; i >= 0; i--) { - this.transforms[i].unapply(ctx); - } - }; - this.applyToPoint = function(p) { - for (var i = 0; i < this.transforms.length; i++) { - this.transforms[i].applyToPoint(p); - } - }; - var data = svg.trim(svg.compressSpaces(v)).replace(/\)(\s?,\s?)/g, ") ").split(/\s(?=[a-z])/); - for (var i = 0; i < data.length; i++) { - var type = svg.trim(data[i].split("(")[0]); - var s = data[i].split("(")[1].replace(")", ""); - var transform = new this.Type[type](s); - transform.type = type; - this.transforms.push(transform); - } - }; - // aspect ratio - svg.AspectRatio = function(ctx, aspectRatio, width, desiredWidth, height, desiredHeight, minX, minY, refX, refY) { - // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute - aspectRatio = svg.compressSpaces(aspectRatio); - aspectRatio = aspectRatio.replace(/^defer\s/, ""); - // ignore defer - var align = aspectRatio.split(" ")[0] || "xMidYMid"; - var meetOrSlice = aspectRatio.split(" ")[1] || "meet"; - // calculate scale - var scaleX = width / desiredWidth; - var scaleY = height / desiredHeight; - var scaleMin = Math.min(scaleX, scaleY); - var scaleMax = Math.max(scaleX, scaleY); - if (meetOrSlice == "meet") { - desiredWidth *= scaleMin; - desiredHeight *= scaleMin; - } - if (meetOrSlice == "slice") { - desiredWidth *= scaleMax; - desiredHeight *= scaleMax; - } - refX = new svg.Property("refX", refX); - refY = new svg.Property("refY", refY); - if (refX.hasValue() && refY.hasValue()) { - ctx.translate(-scaleMin * refX.toPixels("x"), -scaleMin * refY.toPixels("y")); - } else { - // align - if (align.match(/^xMid/) && (meetOrSlice == "meet" && scaleMin == scaleY || meetOrSlice == "slice" && scaleMax == scaleY)) ctx.translate(width / 2 - desiredWidth / 2, 0); - if (align.match(/YMid$/) && (meetOrSlice == "meet" && scaleMin == scaleX || meetOrSlice == "slice" && scaleMax == scaleX)) ctx.translate(0, height / 2 - desiredHeight / 2); - if (align.match(/^xMax/) && (meetOrSlice == "meet" && scaleMin == scaleY || meetOrSlice == "slice" && scaleMax == scaleY)) ctx.translate(width - desiredWidth, 0); - if (align.match(/YMax$/) && (meetOrSlice == "meet" && scaleMin == scaleX || meetOrSlice == "slice" && scaleMax == scaleX)) ctx.translate(0, height - desiredHeight); - } - // scale - if (align == "none") ctx.scale(scaleX, scaleY); else if (meetOrSlice == "meet") ctx.scale(scaleMin, scaleMin); else if (meetOrSlice == "slice") ctx.scale(scaleMax, scaleMax); - // translate - ctx.translate(minX == null ? 0 : -minX, minY == null ? 0 : -minY); - }; - // elements - svg.Element = {}; - svg.EmptyProperty = new svg.Property("EMPTY", ""); - svg.Element.ElementBase = function(node) { - this.attributes = {}; - this.styles = {}; - this.children = []; - // get or create attribute - this.attribute = function(name, createIfNotExists) { - var a = this.attributes[name]; - if (a != null) return a; - if (createIfNotExists == true) { - a = new svg.Property(name, ""); - this.attributes[name] = a; - } - return a || svg.EmptyProperty; - }; - this.getHrefAttribute = function() { - for (var a in this.attributes) { - if (a.match(/:href$/)) { - return this.attributes[a]; - } - } - return svg.EmptyProperty; - }; - // get or create style, crawls up node tree - this.style = function(name, createIfNotExists) { - var s = this.styles[name]; - if (s != null) return s; - var a = this.attribute(name); - if (a != null && a.hasValue()) { - this.styles[name] = a; - // move up to me to cache - return a; - } - var p = this.parent; - if (p != null) { - var ps = p.style(name); - if (ps != null && ps.hasValue()) { - return ps; - } - } - if (createIfNotExists == true) { - s = new svg.Property(name, ""); - this.styles[name] = s; - } - return s || svg.EmptyProperty; - }; - // base render - this.render = function(ctx) { - // don't render display=none - if (this.style("display").value == "none") return; - // don't render visibility=hidden - if (this.attribute("visibility").value == "hidden") return; - ctx.save(); - if (this.attribute("mask").hasValue()) { - // mask - var mask = this.attribute("mask").getDefinition(); - if (mask != null) mask.apply(ctx, this); - } else if (this.style("filter").hasValue()) { - // filter - var filter = this.style("filter").getDefinition(); - if (filter != null) filter.apply(ctx, this); - } else { - this.setContext(ctx); - this.renderChildren(ctx); - this.clearContext(ctx); - } - ctx.restore(); - }; - // base set context - this.setContext = function(ctx) {}; - // base clear context - this.clearContext = function(ctx) {}; - // base render children - this.renderChildren = function(ctx) { - for (var i = 0; i < this.children.length; i++) { - this.children[i].render(ctx); - } - }; - this.addChild = function(childNode, create) { - var child = childNode; - if (create) child = svg.CreateElement(childNode); - child.parent = this; - this.children.push(child); - }; - if (node != null && node.nodeType == 1) { - //ELEMENT_NODE - // add children - for (var i = 0; i < node.childNodes.length; i++) { - var childNode = node.childNodes[i]; - if (childNode.nodeType == 1) this.addChild(childNode, true); - //ELEMENT_NODE - if (this.captureTextNodes && childNode.nodeType == 3) { - var text = childNode.nodeValue || childNode.text || ""; - if (svg.trim(svg.compressSpaces(text)) != "") { - this.addChild(new svg.Element.tspan(childNode), false); - } - } - } - // add attributes - for (var i = 0; i < node.attributes.length; i++) { - var attribute = node.attributes[i]; - this.attributes[attribute.nodeName] = new svg.Property(attribute.nodeName, attribute.nodeValue); - } - // add tag styles - var styles = svg.Styles[node.nodeName]; - if (styles != null) { - for (var name in styles) { - this.styles[name] = styles[name]; - } - } - // add class styles - if (this.attribute("class").hasValue()) { - var classes = svg.compressSpaces(this.attribute("class").value).split(" "); - for (var j = 0; j < classes.length; j++) { - styles = svg.Styles["." + classes[j]]; - if (styles != null) { - for (var name in styles) { - this.styles[name] = styles[name]; - } - } - styles = svg.Styles[node.nodeName + "." + classes[j]]; - if (styles != null) { - for (var name in styles) { - this.styles[name] = styles[name]; - } - } - } - } - // add id styles - if (this.attribute("id").hasValue()) { - var styles = svg.Styles["#" + this.attribute("id").value]; - if (styles != null) { - for (var name in styles) { - this.styles[name] = styles[name]; - } - } - } - // add inline styles - if (this.attribute("style").hasValue()) { - var styles = this.attribute("style").value.split(";"); - for (var i = 0; i < styles.length; i++) { - if (svg.trim(styles[i]) != "") { - var style = styles[i].split(":"); - var name = svg.trim(style[0]); - var value = svg.trim(style[1]); - this.styles[name] = new svg.Property(name, value); - } - } - } - // add id - if (this.attribute("id").hasValue()) { - if (svg.Definitions[this.attribute("id").value] == null) { - svg.Definitions[this.attribute("id").value] = this; - } - } - } - }; - svg.Element.RenderedElementBase = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - this.setContext = function(ctx) { - // fill - if (this.style("fill").isUrlDefinition()) { - var fs = this.style("fill").getFillStyleDefinition(this, this.style("fill-opacity")); - if (fs != null) ctx.fillStyle = fs; - } else if (this.style("fill").hasValue()) { - var fillStyle = this.style("fill"); - if (fillStyle.value == "currentColor") fillStyle.value = this.style("color").value; - ctx.fillStyle = fillStyle.value == "none" ? "rgba(0,0,0,0)" : fillStyle.value; - } - if (this.style("fill-opacity").hasValue()) { - var fillStyle = new svg.Property("fill", ctx.fillStyle); - fillStyle = fillStyle.addOpacity(this.style("fill-opacity").value); - ctx.fillStyle = fillStyle.value; - } - // stroke - if (this.style("stroke").isUrlDefinition()) { - var fs = this.style("stroke").getFillStyleDefinition(this, this.style("stroke-opacity")); - if (fs != null) ctx.strokeStyle = fs; - } else if (this.style("stroke").hasValue()) { - var strokeStyle = this.style("stroke"); - if (strokeStyle.value == "currentColor") strokeStyle.value = this.style("color").value; - ctx.strokeStyle = strokeStyle.value == "none" ? "rgba(0,0,0,0)" : strokeStyle.value; - } - if (this.style("stroke-opacity").hasValue()) { - var strokeStyle = new svg.Property("stroke", ctx.strokeStyle); - strokeStyle = strokeStyle.addOpacity(this.style("stroke-opacity").value); - ctx.strokeStyle = strokeStyle.value; - } - if (this.style("stroke-width").hasValue()) { - var newLineWidth = this.style("stroke-width").toPixels(); - ctx.lineWidth = newLineWidth == 0 ? .001 : newLineWidth; - } - if (this.style("stroke-linecap").hasValue()) ctx.lineCap = this.style("stroke-linecap").value; - if (this.style("stroke-linejoin").hasValue()) ctx.lineJoin = this.style("stroke-linejoin").value; - if (this.style("stroke-miterlimit").hasValue()) ctx.miterLimit = this.style("stroke-miterlimit").value; - if (this.style("stroke-dasharray").hasValue()) { - var gaps = svg.ToNumberArray(this.style("stroke-dasharray").value); - if (typeof ctx.setLineDash != "undefined") { - ctx.setLineDash(gaps); - } else if (typeof ctx.webkitLineDash != "undefined") { - ctx.webkitLineDash = gaps; - } else if (typeof ctx.mozDash != "undefined") { - ctx.mozDash = gaps; - } - var offset = this.style("stroke-dashoffset").numValueOrDefault(1); - if (typeof ctx.lineDashOffset != "undefined") { - ctx.lineDashOffset = offset; - } else if (typeof ctx.webkitLineDashOffset != "undefined") { - ctx.webkitLineDashOffset = offset; - } else if (typeof ctx.mozDashOffset != "undefined") { - ctx.mozDashOffset = offset; - } - } - // font - if (typeof ctx.font != "undefined") { - ctx.font = svg.Font.CreateFont(this.style("font-style").value, this.style("font-variant").value, this.style("font-weight").value, this.style("font-size").hasValue() ? this.style("font-size").toPixels() + "px" : "", this.style("font-family").value).toString(); - } - // transform - if (this.attribute("transform").hasValue()) { - var transform = new svg.Transform(this.attribute("transform").value); - transform.apply(ctx); - } - // clip - if (this.style("clip-path").hasValue()) { - var clip = this.style("clip-path").getDefinition(); - if (clip != null) clip.apply(ctx); - } - // opacity - if (this.style("opacity").hasValue()) { - ctx.globalAlpha = this.style("opacity").numValue(); - } - }; - }; - svg.Element.RenderedElementBase.prototype = new svg.Element.ElementBase(); - svg.Element.PathElementBase = function(node) { - this.base = svg.Element.RenderedElementBase; - this.base(node); - this.path = function(ctx) { - if (ctx != null) ctx.beginPath(); - return new svg.BoundingBox(); - }; - this.renderChildren = function(ctx) { - this.path(ctx); - svg.Mouse.checkPath(this, ctx); - if (ctx.fillStyle != "") { - if (this.attribute("fill-rule").hasValue()) { - ctx.fill(this.attribute("fill-rule").value); - } else { - ctx.fill(); - } - } - if (ctx.strokeStyle != "") ctx.stroke(); - var markers = this.getMarkers(); - if (markers != null) { - if (this.style("marker-start").isUrlDefinition()) { - var marker = this.style("marker-start").getDefinition(); - marker.render(ctx, markers[0][0], markers[0][1]); - } - if (this.style("marker-mid").isUrlDefinition()) { - var marker = this.style("marker-mid").getDefinition(); - for (var i = 1; i < markers.length - 1; i++) { - marker.render(ctx, markers[i][0], markers[i][1]); - } - } - if (this.style("marker-end").isUrlDefinition()) { - var marker = this.style("marker-end").getDefinition(); - marker.render(ctx, markers[markers.length - 1][0], markers[markers.length - 1][1]); - } - } - }; - this.getBoundingBox = function() { - return this.path(); - }; - this.getMarkers = function() { - return null; - }; - }; - svg.Element.PathElementBase.prototype = new svg.Element.RenderedElementBase(); - // svg element - svg.Element.svg = function(node) { - this.base = svg.Element.RenderedElementBase; - this.base(node); - this.baseClearContext = this.clearContext; - this.clearContext = function(ctx) { - this.baseClearContext(ctx); - svg.ViewPort.RemoveCurrent(); - }; - this.baseSetContext = this.setContext; - this.setContext = function(ctx) { - // initial values - ctx.strokeStyle = "rgba(0,0,0,0)"; - ctx.lineCap = "butt"; - ctx.lineJoin = "miter"; - ctx.miterLimit = 4; - this.baseSetContext(ctx); - // create new view port - if (!this.attribute("x").hasValue()) this.attribute("x", true).value = 0; - if (!this.attribute("y").hasValue()) this.attribute("y", true).value = 0; - ctx.translate(this.attribute("x").toPixels("x"), this.attribute("y").toPixels("y")); - var width = svg.ViewPort.width(); - var height = svg.ViewPort.height(); - if (!this.attribute("width").hasValue()) this.attribute("width", true).value = "100%"; - if (!this.attribute("height").hasValue()) this.attribute("height", true).value = "100%"; - if (typeof this.root == "undefined") { - width = this.attribute("width").toPixels("x"); - height = this.attribute("height").toPixels("y"); - var x = 0; - var y = 0; - if (this.attribute("refX").hasValue() && this.attribute("refY").hasValue()) { - x = -this.attribute("refX").toPixels("x"); - y = -this.attribute("refY").toPixels("y"); - } - ctx.beginPath(); - ctx.moveTo(x, y); - ctx.lineTo(width, y); - ctx.lineTo(width, height); - ctx.lineTo(x, height); - ctx.closePath(); - ctx.clip(); - } - svg.ViewPort.SetCurrent(width, height); - // viewbox - if (this.attribute("viewBox").hasValue()) { - var viewBox = svg.ToNumberArray(this.attribute("viewBox").value); - var minX = viewBox[0]; - var minY = viewBox[1]; - width = viewBox[2]; - height = viewBox[3]; - svg.AspectRatio(ctx, this.attribute("preserveAspectRatio").value, svg.ViewPort.width(), width, svg.ViewPort.height(), height, minX, minY, this.attribute("refX").value, this.attribute("refY").value); - svg.ViewPort.RemoveCurrent(); - svg.ViewPort.SetCurrent(viewBox[2], viewBox[3]); - } - }; - }; - svg.Element.svg.prototype = new svg.Element.RenderedElementBase(); - // rect element - svg.Element.rect = function(node) { - this.base = svg.Element.PathElementBase; - this.base(node); - this.path = function(ctx) { - var x = this.attribute("x").toPixels("x"); - var y = this.attribute("y").toPixels("y"); - var width = this.attribute("width").toPixels("x"); - var height = this.attribute("height").toPixels("y"); - var rx = this.attribute("rx").toPixels("x"); - var ry = this.attribute("ry").toPixels("y"); - if (this.attribute("rx").hasValue() && !this.attribute("ry").hasValue()) ry = rx; - if (this.attribute("ry").hasValue() && !this.attribute("rx").hasValue()) rx = ry; - rx = Math.min(rx, width / 2); - ry = Math.min(ry, height / 2); - if (ctx != null) { - ctx.beginPath(); - ctx.moveTo(x + rx, y); - ctx.lineTo(x + width - rx, y); - ctx.quadraticCurveTo(x + width, y, x + width, y + ry); - ctx.lineTo(x + width, y + height - ry); - ctx.quadraticCurveTo(x + width, y + height, x + width - rx, y + height); - ctx.lineTo(x + rx, y + height); - ctx.quadraticCurveTo(x, y + height, x, y + height - ry); - ctx.lineTo(x, y + ry); - ctx.quadraticCurveTo(x, y, x + rx, y); - ctx.closePath(); - } - return new svg.BoundingBox(x, y, x + width, y + height); - }; - }; - svg.Element.rect.prototype = new svg.Element.PathElementBase(); - // circle element - svg.Element.circle = function(node) { - this.base = svg.Element.PathElementBase; - this.base(node); - this.path = function(ctx) { - var cx = this.attribute("cx").toPixels("x"); - var cy = this.attribute("cy").toPixels("y"); - var r = this.attribute("r").toPixels(); - if (ctx != null) { - ctx.beginPath(); - ctx.arc(cx, cy, r, 0, Math.PI * 2, true); - ctx.closePath(); - } - return new svg.BoundingBox(cx - r, cy - r, cx + r, cy + r); - }; - }; - svg.Element.circle.prototype = new svg.Element.PathElementBase(); - // ellipse element - svg.Element.ellipse = function(node) { - this.base = svg.Element.PathElementBase; - this.base(node); - this.path = function(ctx) { - var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3); - var rx = this.attribute("rx").toPixels("x"); - var ry = this.attribute("ry").toPixels("y"); - var cx = this.attribute("cx").toPixels("x"); - var cy = this.attribute("cy").toPixels("y"); - if (ctx != null) { - ctx.beginPath(); - ctx.moveTo(cx, cy - ry); - ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy); - ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry); - ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy); - ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry); - ctx.closePath(); - } - return new svg.BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry); - }; - }; - svg.Element.ellipse.prototype = new svg.Element.PathElementBase(); - // line element - svg.Element.line = function(node) { - this.base = svg.Element.PathElementBase; - this.base(node); - this.getPoints = function() { - return [ new svg.Point(this.attribute("x1").toPixels("x"), this.attribute("y1").toPixels("y")), new svg.Point(this.attribute("x2").toPixels("x"), this.attribute("y2").toPixels("y")) ]; - }; - this.path = function(ctx) { - var points = this.getPoints(); - if (ctx != null) { - ctx.beginPath(); - ctx.moveTo(points[0].x, points[0].y); - ctx.lineTo(points[1].x, points[1].y); - } - return new svg.BoundingBox(points[0].x, points[0].y, points[1].x, points[1].y); - }; - this.getMarkers = function() { - var points = this.getPoints(); - var a = points[0].angleTo(points[1]); - return [ [ points[0], a ], [ points[1], a ] ]; - }; - }; - svg.Element.line.prototype = new svg.Element.PathElementBase(); - // polyline element - svg.Element.polyline = function(node) { - this.base = svg.Element.PathElementBase; - this.base(node); - this.points = svg.CreatePath(this.attribute("points").value); - this.path = function(ctx) { - var bb = new svg.BoundingBox(this.points[0].x, this.points[0].y); - if (ctx != null) { - ctx.beginPath(); - ctx.moveTo(this.points[0].x, this.points[0].y); - } - for (var i = 1; i < this.points.length; i++) { - bb.addPoint(this.points[i].x, this.points[i].y); - if (ctx != null) ctx.lineTo(this.points[i].x, this.points[i].y); - } - return bb; - }; - this.getMarkers = function() { - var markers = []; - for (var i = 0; i < this.points.length - 1; i++) { - markers.push([ this.points[i], this.points[i].angleTo(this.points[i + 1]) ]); - } - markers.push([ this.points[this.points.length - 1], markers[markers.length - 1][1] ]); - return markers; - }; - }; - svg.Element.polyline.prototype = new svg.Element.PathElementBase(); - // polygon element - svg.Element.polygon = function(node) { - this.base = svg.Element.polyline; - this.base(node); - this.basePath = this.path; - this.path = function(ctx) { - var bb = this.basePath(ctx); - if (ctx != null) { - ctx.lineTo(this.points[0].x, this.points[0].y); - ctx.closePath(); - } - return bb; - }; - }; - svg.Element.polygon.prototype = new svg.Element.polyline(); - // path element - svg.Element.path = function(node) { - this.base = svg.Element.PathElementBase; - this.base(node); - var d = this.attribute("d").value; - // TODO: convert to real lexer based on http://www.w3.org/TR/SVG11/paths.html#PathDataBNF - d = d.replace(/,/gm, " "); - // get rid of all commas - d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm, "$1 $2"); - // separate commands from commands - d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm, "$1 $2"); - // separate commands from commands - d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([^\s])/gm, "$1 $2"); - // separate commands from points - d = d.replace(/([^\s])([MmZzLlHhVvCcSsQqTtAa])/gm, "$1 $2"); - // separate commands from points - d = d.replace(/([0-9])([+\-])/gm, "$1 $2"); - // separate digits when no comma - d = d.replace(/(\.[0-9]*)(\.)/gm, "$1 $2"); - // separate digits when no comma - d = d.replace(/([Aa](\s+[0-9]+){3})\s+([01])\s*([01])/gm, "$1 $3 $4 "); - // shorthand elliptical arc path syntax - d = svg.compressSpaces(d); - // compress multiple spaces - d = svg.trim(d); - this.PathParser = new function(d) { - this.tokens = d.split(" "); - this.reset = function() { - this.i = -1; - this.command = ""; - this.previousCommand = ""; - this.start = new svg.Point(0, 0); - this.control = new svg.Point(0, 0); - this.current = new svg.Point(0, 0); - this.points = []; - this.angles = []; - }; - this.isEnd = function() { - return this.i >= this.tokens.length - 1; - }; - this.isCommandOrEnd = function() { - if (this.isEnd()) return true; - return this.tokens[this.i + 1].match(/^[A-Za-z]$/) != null; - }; - this.isRelativeCommand = function() { - switch (this.command) { - case "m": - case "l": - case "h": - case "v": - case "c": - case "s": - case "q": - case "t": - case "a": - case "z": - return true; - break; - } - return false; - }; - this.getToken = function() { - this.i++; - return this.tokens[this.i]; - }; - this.getScalar = function() { - return parseFloat(this.getToken()); - }; - this.nextCommand = function() { - this.previousCommand = this.command; - this.command = this.getToken(); - }; - this.getPoint = function() { - var p = new svg.Point(this.getScalar(), this.getScalar()); - return this.makeAbsolute(p); - }; - this.getAsControlPoint = function() { - var p = this.getPoint(); - this.control = p; - return p; - }; - this.getAsCurrentPoint = function() { - var p = this.getPoint(); - this.current = p; - return p; - }; - this.getReflectedControlPoint = function() { - if (this.previousCommand.toLowerCase() != "c" && this.previousCommand.toLowerCase() != "s" && this.previousCommand.toLowerCase() != "q" && this.previousCommand.toLowerCase() != "t") { - return this.current; - } - // reflect point - var p = new svg.Point(2 * this.current.x - this.control.x, 2 * this.current.y - this.control.y); - return p; - }; - this.makeAbsolute = function(p) { - if (this.isRelativeCommand()) { - p.x += this.current.x; - p.y += this.current.y; - } - return p; - }; - this.addMarker = function(p, from, priorTo) { - // if the last angle isn't filled in because we didn't have this point yet ... - if (priorTo != null && this.angles.length > 0 && this.angles[this.angles.length - 1] == null) { - this.angles[this.angles.length - 1] = this.points[this.points.length - 1].angleTo(priorTo); - } - this.addMarkerAngle(p, from == null ? null : from.angleTo(p)); - }; - this.addMarkerAngle = function(p, a) { - this.points.push(p); - this.angles.push(a); - }; - this.getMarkerPoints = function() { - return this.points; - }; - this.getMarkerAngles = function() { - for (var i = 0; i < this.angles.length; i++) { - if (this.angles[i] == null) { - for (var j = i + 1; j < this.angles.length; j++) { - if (this.angles[j] != null) { - this.angles[i] = this.angles[j]; - break; - } - } - } - } - return this.angles; - }; - }(d); - this.path = function(ctx) { - var pp = this.PathParser; - pp.reset(); - var bb = new svg.BoundingBox(); - if (ctx != null) ctx.beginPath(); - while (!pp.isEnd()) { - pp.nextCommand(); - switch (pp.command) { - case "M": - case "m": - var p = pp.getAsCurrentPoint(); - pp.addMarker(p); - bb.addPoint(p.x, p.y); - if (ctx != null) ctx.moveTo(p.x, p.y); - pp.start = pp.current; - while (!pp.isCommandOrEnd()) { - var p = pp.getAsCurrentPoint(); - pp.addMarker(p, pp.start); - bb.addPoint(p.x, p.y); - if (ctx != null) ctx.lineTo(p.x, p.y); - } - break; - - case "L": - case "l": - while (!pp.isCommandOrEnd()) { - var c = pp.current; - var p = pp.getAsCurrentPoint(); - pp.addMarker(p, c); - bb.addPoint(p.x, p.y); - if (ctx != null) ctx.lineTo(p.x, p.y); - } - break; - - case "H": - case "h": - while (!pp.isCommandOrEnd()) { - var newP = new svg.Point((pp.isRelativeCommand() ? pp.current.x : 0) + pp.getScalar(), pp.current.y); - pp.addMarker(newP, pp.current); - pp.current = newP; - bb.addPoint(pp.current.x, pp.current.y); - if (ctx != null) ctx.lineTo(pp.current.x, pp.current.y); - } - break; - - case "V": - case "v": - while (!pp.isCommandOrEnd()) { - var newP = new svg.Point(pp.current.x, (pp.isRelativeCommand() ? pp.current.y : 0) + pp.getScalar()); - pp.addMarker(newP, pp.current); - pp.current = newP; - bb.addPoint(pp.current.x, pp.current.y); - if (ctx != null) ctx.lineTo(pp.current.x, pp.current.y); - } - break; - - case "C": - case "c": - while (!pp.isCommandOrEnd()) { - var curr = pp.current; - var p1 = pp.getPoint(); - var cntrl = pp.getAsControlPoint(); - var cp = pp.getAsCurrentPoint(); - pp.addMarker(cp, cntrl, p1); - bb.addBezierCurve(curr.x, curr.y, p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y); - if (ctx != null) ctx.bezierCurveTo(p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y); - } - break; - - case "S": - case "s": - while (!pp.isCommandOrEnd()) { - var curr = pp.current; - var p1 = pp.getReflectedControlPoint(); - var cntrl = pp.getAsControlPoint(); - var cp = pp.getAsCurrentPoint(); - pp.addMarker(cp, cntrl, p1); - bb.addBezierCurve(curr.x, curr.y, p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y); - if (ctx != null) ctx.bezierCurveTo(p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y); - } - break; - - case "Q": - case "q": - while (!pp.isCommandOrEnd()) { - var curr = pp.current; - var cntrl = pp.getAsControlPoint(); - var cp = pp.getAsCurrentPoint(); - pp.addMarker(cp, cntrl, cntrl); - bb.addQuadraticCurve(curr.x, curr.y, cntrl.x, cntrl.y, cp.x, cp.y); - if (ctx != null) ctx.quadraticCurveTo(cntrl.x, cntrl.y, cp.x, cp.y); - } - break; - - case "T": - case "t": - while (!pp.isCommandOrEnd()) { - var curr = pp.current; - var cntrl = pp.getReflectedControlPoint(); - pp.control = cntrl; - var cp = pp.getAsCurrentPoint(); - pp.addMarker(cp, cntrl, cntrl); - bb.addQuadraticCurve(curr.x, curr.y, cntrl.x, cntrl.y, cp.x, cp.y); - if (ctx != null) ctx.quadraticCurveTo(cntrl.x, cntrl.y, cp.x, cp.y); - } - break; - - case "A": - case "a": - while (!pp.isCommandOrEnd()) { - var curr = pp.current; - var rx = pp.getScalar(); - var ry = pp.getScalar(); - var xAxisRotation = pp.getScalar() * (Math.PI / 180); - var largeArcFlag = pp.getScalar(); - var sweepFlag = pp.getScalar(); - var cp = pp.getAsCurrentPoint(); - // Conversion from endpoint to center parameterization - // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes - // x1', y1' - var currp = new svg.Point(Math.cos(xAxisRotation) * (curr.x - cp.x) / 2 + Math.sin(xAxisRotation) * (curr.y - cp.y) / 2, -Math.sin(xAxisRotation) * (curr.x - cp.x) / 2 + Math.cos(xAxisRotation) * (curr.y - cp.y) / 2); - // adjust radii - var l = Math.pow(currp.x, 2) / Math.pow(rx, 2) + Math.pow(currp.y, 2) / Math.pow(ry, 2); - if (l > 1) { - rx *= Math.sqrt(l); - ry *= Math.sqrt(l); - } - // cx', cy' - var s = (largeArcFlag == sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rx, 2) * Math.pow(ry, 2) - Math.pow(rx, 2) * Math.pow(currp.y, 2) - Math.pow(ry, 2) * Math.pow(currp.x, 2)) / (Math.pow(rx, 2) * Math.pow(currp.y, 2) + Math.pow(ry, 2) * Math.pow(currp.x, 2))); - if (isNaN(s)) s = 0; - var cpp = new svg.Point(s * rx * currp.y / ry, s * -ry * currp.x / rx); - // cx, cy - var centp = new svg.Point((curr.x + cp.x) / 2 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (curr.y + cp.y) / 2 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); - // vector magnitude - var m = function(v) { - return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2)); - }; - // ratio between two vectors - var r = function(u, v) { - return (u[0] * v[0] + u[1] * v[1]) / (m(u) * m(v)); - }; - // angle between two vectors - var a = function(u, v) { - return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(r(u, v)); - }; - // initial angle - var a1 = a([ 1, 0 ], [ (currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry ]); - // angle delta - var u = [ (currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry ]; - var v = [ (-currp.x - cpp.x) / rx, (-currp.y - cpp.y) / ry ]; - var ad = a(u, v); - if (r(u, v) <= -1) ad = Math.PI; - if (r(u, v) >= 1) ad = 0; - // for markers - var dir = 1 - sweepFlag ? 1 : -1; - var ah = a1 + dir * (ad / 2); - var halfWay = new svg.Point(centp.x + rx * Math.cos(ah), centp.y + ry * Math.sin(ah)); - pp.addMarkerAngle(halfWay, ah - dir * Math.PI / 2); - pp.addMarkerAngle(cp, ah - dir * Math.PI); - bb.addPoint(cp.x, cp.y); - // TODO: this is too naive, make it better - if (ctx != null) { - var r = rx > ry ? rx : ry; - var sx = rx > ry ? 1 : rx / ry; - var sy = rx > ry ? ry / rx : 1; - ctx.translate(centp.x, centp.y); - ctx.rotate(xAxisRotation); - ctx.scale(sx, sy); - ctx.arc(0, 0, r, a1, a1 + ad, 1 - sweepFlag); - ctx.scale(1 / sx, 1 / sy); - ctx.rotate(-xAxisRotation); - ctx.translate(-centp.x, -centp.y); - } - } - break; - - case "Z": - case "z": - if (ctx != null) ctx.closePath(); - pp.current = pp.start; - } - } - return bb; - }; - this.getMarkers = function() { - var points = this.PathParser.getMarkerPoints(); - var angles = this.PathParser.getMarkerAngles(); - var markers = []; - for (var i = 0; i < points.length; i++) { - markers.push([ points[i], angles[i] ]); - } - return markers; - }; - }; - svg.Element.path.prototype = new svg.Element.PathElementBase(); - // pattern element - svg.Element.pattern = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - this.createPattern = function(ctx, element) { - var width = this.attribute("width").toPixels("x", true); - var height = this.attribute("height").toPixels("y", true); - // render me using a temporary svg element - var tempSvg = new svg.Element.svg(); - tempSvg.attributes["viewBox"] = new svg.Property("viewBox", this.attribute("viewBox").value); - tempSvg.attributes["width"] = new svg.Property("width", width + "px"); - tempSvg.attributes["height"] = new svg.Property("height", height + "px"); - tempSvg.attributes["transform"] = new svg.Property("transform", this.attribute("patternTransform").value); - tempSvg.children = this.children; - var c = document.createElement("canvas"); - c.width = width; - c.height = height; - var cctx = c.getContext("2d"); - if (this.attribute("x").hasValue() && this.attribute("y").hasValue()) { - cctx.translate(this.attribute("x").toPixels("x", true), this.attribute("y").toPixels("y", true)); - } - // render 3x3 grid so when we transform there's no white space on edges - for (var x = -1; x <= 1; x++) { - for (var y = -1; y <= 1; y++) { - cctx.save(); - cctx.translate(x * c.width, y * c.height); - tempSvg.render(cctx); - cctx.restore(); - } - } - var pattern = ctx.createPattern(c, "repeat"); - return pattern; - }; - }; - svg.Element.pattern.prototype = new svg.Element.ElementBase(); - // marker element - svg.Element.marker = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - this.baseRender = this.render; - this.render = function(ctx, point, angle) { - ctx.translate(point.x, point.y); - if (this.attribute("orient").valueOrDefault("auto") == "auto") ctx.rotate(angle); - if (this.attribute("markerUnits").valueOrDefault("strokeWidth") == "strokeWidth") ctx.scale(ctx.lineWidth, ctx.lineWidth); - ctx.save(); - // render me using a temporary svg element - var tempSvg = new svg.Element.svg(); - tempSvg.attributes["viewBox"] = new svg.Property("viewBox", this.attribute("viewBox").value); - tempSvg.attributes["refX"] = new svg.Property("refX", this.attribute("refX").value); - tempSvg.attributes["refY"] = new svg.Property("refY", this.attribute("refY").value); - tempSvg.attributes["width"] = new svg.Property("width", this.attribute("markerWidth").value); - tempSvg.attributes["height"] = new svg.Property("height", this.attribute("markerHeight").value); - tempSvg.attributes["fill"] = new svg.Property("fill", this.attribute("fill").valueOrDefault("black")); - tempSvg.attributes["stroke"] = new svg.Property("stroke", this.attribute("stroke").valueOrDefault("none")); - tempSvg.children = this.children; - tempSvg.render(ctx); - ctx.restore(); - if (this.attribute("markerUnits").valueOrDefault("strokeWidth") == "strokeWidth") ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth); - if (this.attribute("orient").valueOrDefault("auto") == "auto") ctx.rotate(-angle); - ctx.translate(-point.x, -point.y); - }; - }; - svg.Element.marker.prototype = new svg.Element.ElementBase(); - // definitions element - svg.Element.defs = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - this.render = function(ctx) {}; - }; - svg.Element.defs.prototype = new svg.Element.ElementBase(); - // base for gradients - svg.Element.GradientBase = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - this.gradientUnits = this.attribute("gradientUnits").valueOrDefault("objectBoundingBox"); - this.stops = []; - for (var i = 0; i < this.children.length; i++) { - var child = this.children[i]; - if (child.type == "stop") this.stops.push(child); - } - this.getGradient = function() {}; - this.createGradient = function(ctx, element, parentOpacityProp) { - var stopsContainer = this; - if (this.getHrefAttribute().hasValue()) { - stopsContainer = this.getHrefAttribute().getDefinition(); - } - var addParentOpacity = function(color) { - if (parentOpacityProp.hasValue()) { - var p = new svg.Property("color", color); - return p.addOpacity(parentOpacityProp.value).value; - } - return color; - }; - var g = this.getGradient(ctx, element); - if (g == null) return addParentOpacity(stopsContainer.stops[stopsContainer.stops.length - 1].color); - for (var i = 0; i < stopsContainer.stops.length; i++) { - g.addColorStop(stopsContainer.stops[i].offset, addParentOpacity(stopsContainer.stops[i].color)); - } - if (this.attribute("gradientTransform").hasValue()) { - // render as transformed pattern on temporary canvas - var rootView = svg.ViewPort.viewPorts[0]; - var rect = new svg.Element.rect(); - rect.attributes["x"] = new svg.Property("x", -svg.MAX_VIRTUAL_PIXELS / 3); - rect.attributes["y"] = new svg.Property("y", -svg.MAX_VIRTUAL_PIXELS / 3); - rect.attributes["width"] = new svg.Property("width", svg.MAX_VIRTUAL_PIXELS); - rect.attributes["height"] = new svg.Property("height", svg.MAX_VIRTUAL_PIXELS); - var group = new svg.Element.g(); - group.attributes["transform"] = new svg.Property("transform", this.attribute("gradientTransform").value); - group.children = [ rect ]; - var tempSvg = new svg.Element.svg(); - tempSvg.attributes["x"] = new svg.Property("x", 0); - tempSvg.attributes["y"] = new svg.Property("y", 0); - tempSvg.attributes["width"] = new svg.Property("width", rootView.width); - tempSvg.attributes["height"] = new svg.Property("height", rootView.height); - tempSvg.children = [ group ]; - var c = document.createElement("canvas"); - c.width = rootView.width; - c.height = rootView.height; - var tempCtx = c.getContext("2d"); - tempCtx.fillStyle = g; - tempSvg.render(tempCtx); - return tempCtx.createPattern(c, "no-repeat"); - } - return g; - }; - }; - svg.Element.GradientBase.prototype = new svg.Element.ElementBase(); - // linear gradient element - svg.Element.linearGradient = function(node) { - this.base = svg.Element.GradientBase; - this.base(node); - this.getGradient = function(ctx, element) { - var bb = element.getBoundingBox(); - if (!this.attribute("x1").hasValue() && !this.attribute("y1").hasValue() && !this.attribute("x2").hasValue() && !this.attribute("y2").hasValue()) { - this.attribute("x1", true).value = 0; - this.attribute("y1", true).value = 0; - this.attribute("x2", true).value = 1; - this.attribute("y2", true).value = 0; - } - var x1 = this.gradientUnits == "objectBoundingBox" ? bb.x() + bb.width() * this.attribute("x1").numValue() : this.attribute("x1").toPixels("x"); - var y1 = this.gradientUnits == "objectBoundingBox" ? bb.y() + bb.height() * this.attribute("y1").numValue() : this.attribute("y1").toPixels("y"); - var x2 = this.gradientUnits == "objectBoundingBox" ? bb.x() + bb.width() * this.attribute("x2").numValue() : this.attribute("x2").toPixels("x"); - var y2 = this.gradientUnits == "objectBoundingBox" ? bb.y() + bb.height() * this.attribute("y2").numValue() : this.attribute("y2").toPixels("y"); - if (x1 == x2 && y1 == y2) return null; - return ctx.createLinearGradient(x1, y1, x2, y2); - }; - }; - svg.Element.linearGradient.prototype = new svg.Element.GradientBase(); - // radial gradient element - svg.Element.radialGradient = function(node) { - this.base = svg.Element.GradientBase; - this.base(node); - this.getGradient = function(ctx, element) { - var bb = element.getBoundingBox(); - if (!this.attribute("cx").hasValue()) this.attribute("cx", true).value = "50%"; - if (!this.attribute("cy").hasValue()) this.attribute("cy", true).value = "50%"; - if (!this.attribute("r").hasValue()) this.attribute("r", true).value = "50%"; - var cx = this.gradientUnits == "objectBoundingBox" ? bb.x() + bb.width() * this.attribute("cx").numValue() : this.attribute("cx").toPixels("x"); - var cy = this.gradientUnits == "objectBoundingBox" ? bb.y() + bb.height() * this.attribute("cy").numValue() : this.attribute("cy").toPixels("y"); - var fx = cx; - var fy = cy; - if (this.attribute("fx").hasValue()) { - fx = this.gradientUnits == "objectBoundingBox" ? bb.x() + bb.width() * this.attribute("fx").numValue() : this.attribute("fx").toPixels("x"); - } - if (this.attribute("fy").hasValue()) { - fy = this.gradientUnits == "objectBoundingBox" ? bb.y() + bb.height() * this.attribute("fy").numValue() : this.attribute("fy").toPixels("y"); - } - var r = this.gradientUnits == "objectBoundingBox" ? (bb.width() + bb.height()) / 2 * this.attribute("r").numValue() : this.attribute("r").toPixels(); - return ctx.createRadialGradient(fx, fy, 0, cx, cy, r); - }; - }; - svg.Element.radialGradient.prototype = new svg.Element.GradientBase(); - // gradient stop element - svg.Element.stop = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - this.offset = this.attribute("offset").numValue(); - if (this.offset < 0) this.offset = 0; - if (this.offset > 1) this.offset = 1; - var stopColor = this.style("stop-color"); - if (this.style("stop-opacity").hasValue()) stopColor = stopColor.addOpacity(this.style("stop-opacity").value); - this.color = stopColor.value; - }; - svg.Element.stop.prototype = new svg.Element.ElementBase(); - // animation base element - svg.Element.AnimateBase = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - svg.Animations.push(this); - this.duration = 0; - this.begin = this.attribute("begin").toMilliseconds(); - this.maxDuration = this.begin + this.attribute("dur").toMilliseconds(); - this.getProperty = function() { - var attributeType = this.attribute("attributeType").value; - var attributeName = this.attribute("attributeName").value; - if (attributeType == "CSS") { - return this.parent.style(attributeName, true); - } - return this.parent.attribute(attributeName, true); - }; - this.initialValue = null; - this.initialUnits = ""; - this.removed = false; - this.calcValue = function() { - // OVERRIDE ME! - return ""; - }; - this.update = function(delta) { - // set initial value - if (this.initialValue == null) { - this.initialValue = this.getProperty().value; - this.initialUnits = this.getProperty().getUnits(); - } - // if we're past the end time - if (this.duration > this.maxDuration) { - // loop for indefinitely repeating animations - if (this.attribute("repeatCount").value == "indefinite" || this.attribute("repeatDur").value == "indefinite") { - this.duration = 0; - } else if (this.attribute("fill").valueOrDefault("remove") == "remove" && !this.removed) { - this.removed = true; - this.getProperty().value = this.initialValue; - return true; - } else { - return false; - } - } - this.duration = this.duration + delta; - // if we're past the begin time - var updated = false; - if (this.begin < this.duration) { - var newValue = this.calcValue(); - // tween - if (this.attribute("type").hasValue()) { - // for transform, etc. - var type = this.attribute("type").value; - newValue = type + "(" + newValue + ")"; - } - this.getProperty().value = newValue; - updated = true; - } - return updated; - }; - this.from = this.attribute("from"); - this.to = this.attribute("to"); - this.values = this.attribute("values"); - if (this.values.hasValue()) this.values.value = this.values.value.split(";"); - // fraction of duration we've covered - this.progress = function() { - var ret = { - progress: (this.duration - this.begin) / (this.maxDuration - this.begin) - }; - if (this.values.hasValue()) { - var p = ret.progress * (this.values.value.length - 1); - var lb = Math.floor(p), ub = Math.ceil(p); - ret.from = new svg.Property("from", parseFloat(this.values.value[lb])); - ret.to = new svg.Property("to", parseFloat(this.values.value[ub])); - ret.progress = (p - lb) / (ub - lb); - } else { - ret.from = this.from; - ret.to = this.to; - } - return ret; - }; - }; - svg.Element.AnimateBase.prototype = new svg.Element.ElementBase(); - // animate element - svg.Element.animate = function(node) { - this.base = svg.Element.AnimateBase; - this.base(node); - this.calcValue = function() { - var p = this.progress(); - // tween value linearly - var newValue = p.from.numValue() + (p.to.numValue() - p.from.numValue()) * p.progress; - return newValue + this.initialUnits; - }; - }; - svg.Element.animate.prototype = new svg.Element.AnimateBase(); - // animate color element - svg.Element.animateColor = function(node) { - this.base = svg.Element.AnimateBase; - this.base(node); - this.calcValue = function() { - var p = this.progress(); - var from = new RGBColor(p.from.value); - var to = new RGBColor(p.to.value); - if (from.ok && to.ok) { - // tween color linearly - var r = from.r + (to.r - from.r) * p.progress; - var g = from.g + (to.g - from.g) * p.progress; - var b = from.b + (to.b - from.b) * p.progress; - return "rgb(" + parseInt(r, 10) + "," + parseInt(g, 10) + "," + parseInt(b, 10) + ")"; - } - return this.attribute("from").value; - }; - }; - svg.Element.animateColor.prototype = new svg.Element.AnimateBase(); - // animate transform element - svg.Element.animateTransform = function(node) { - this.base = svg.Element.AnimateBase; - this.base(node); - this.calcValue = function() { - var p = this.progress(); - // tween value linearly - var from = svg.ToNumberArray(p.from.value); - var to = svg.ToNumberArray(p.to.value); - var newValue = ""; - for (var i = 0; i < from.length; i++) { - newValue += from[i] + (to[i] - from[i]) * p.progress + " "; - } - return newValue; - }; - }; - svg.Element.animateTransform.prototype = new svg.Element.animate(); - // font element - svg.Element.font = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - this.horizAdvX = this.attribute("horiz-adv-x").numValue(); - this.isRTL = false; - this.isArabic = false; - this.fontFace = null; - this.missingGlyph = null; - this.glyphs = []; - for (var i = 0; i < this.children.length; i++) { - var child = this.children[i]; - if (child.type == "font-face") { - this.fontFace = child; - if (child.style("font-family").hasValue()) { - svg.Definitions[child.style("font-family").value] = this; - } - } else if (child.type == "missing-glyph") this.missingGlyph = child; else if (child.type == "glyph") { - if (child.arabicForm != "") { - this.isRTL = true; - this.isArabic = true; - if (typeof this.glyphs[child.unicode] == "undefined") this.glyphs[child.unicode] = []; - this.glyphs[child.unicode][child.arabicForm] = child; - } else { - this.glyphs[child.unicode] = child; - } - } - } - }; - svg.Element.font.prototype = new svg.Element.ElementBase(); - // font-face element - svg.Element.fontface = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - this.ascent = this.attribute("ascent").value; - this.descent = this.attribute("descent").value; - this.unitsPerEm = this.attribute("units-per-em").numValue(); - }; - svg.Element.fontface.prototype = new svg.Element.ElementBase(); - // missing-glyph element - svg.Element.missingglyph = function(node) { - this.base = svg.Element.path; - this.base(node); - this.horizAdvX = 0; - }; - svg.Element.missingglyph.prototype = new svg.Element.path(); - // glyph element - svg.Element.glyph = function(node) { - this.base = svg.Element.path; - this.base(node); - this.horizAdvX = this.attribute("horiz-adv-x").numValue(); - this.unicode = this.attribute("unicode").value; - this.arabicForm = this.attribute("arabic-form").value; - }; - svg.Element.glyph.prototype = new svg.Element.path(); - // text element - svg.Element.text = function(node) { - this.captureTextNodes = true; - this.base = svg.Element.RenderedElementBase; - this.base(node); - this.baseSetContext = this.setContext; - this.setContext = function(ctx) { - this.baseSetContext(ctx); - if (this.style("dominant-baseline").hasValue()) ctx.textBaseline = this.style("dominant-baseline").value; - if (this.style("alignment-baseline").hasValue()) ctx.textBaseline = this.style("alignment-baseline").value; - }; - this.getBoundingBox = function() { - // TODO: implement - return new svg.BoundingBox(this.attribute("x").toPixels("x"), this.attribute("y").toPixels("y"), 0, 0); - }; - this.renderChildren = function(ctx) { - this.x = this.attribute("x").toPixels("x"); - this.y = this.attribute("y").toPixels("y"); - this.x += this.getAnchorDelta(ctx, this, 0); - for (var i = 0; i < this.children.length; i++) { - this.renderChild(ctx, this, i); - } - }; - this.getAnchorDelta = function(ctx, parent, startI) { - var textAnchor = this.style("text-anchor").valueOrDefault("start"); - if (textAnchor != "start") { - var width = 0; - for (var i = startI; i < parent.children.length; i++) { - var child = parent.children[i]; - if (i > startI && child.attribute("x").hasValue()) break; - // new group - width += child.measureTextRecursive(ctx); - } - return -1 * (textAnchor == "end" ? width : width / 2); - } - return 0; - }; - this.renderChild = function(ctx, parent, i) { - var child = parent.children[i]; - if (child.attribute("x").hasValue()) { - child.x = child.attribute("x").toPixels("x") + this.getAnchorDelta(ctx, parent, i); - } else { - if (this.attribute("dx").hasValue()) this.x += this.attribute("dx").toPixels("x"); - if (child.attribute("dx").hasValue()) this.x += child.attribute("dx").toPixels("x"); - child.x = this.x; - } - this.x = child.x + child.measureText(ctx); - if (child.attribute("y").hasValue()) { - child.y = child.attribute("y").toPixels("y"); - } else { - if (this.attribute("dy").hasValue()) this.y += this.attribute("dy").toPixels("y"); - if (child.attribute("dy").hasValue()) this.y += child.attribute("dy").toPixels("y"); - child.y = this.y; - } - this.y = child.y; - child.render(ctx); - for (var i = 0; i < child.children.length; i++) { - this.renderChild(ctx, child, i); - } - }; - }; - svg.Element.text.prototype = new svg.Element.RenderedElementBase(); - // text base - svg.Element.TextElementBase = function(node) { - this.base = svg.Element.RenderedElementBase; - this.base(node); - this.getGlyph = function(font, text, i) { - var c = text[i]; - var glyph = null; - if (font.isArabic) { - var arabicForm = "isolated"; - if ((i == 0 || text[i - 1] == " ") && i < text.length - 2 && text[i + 1] != " ") arabicForm = "terminal"; - if (i > 0 && text[i - 1] != " " && i < text.length - 2 && text[i + 1] != " ") arabicForm = "medial"; - if (i > 0 && text[i - 1] != " " && (i == text.length - 1 || text[i + 1] == " ")) arabicForm = "initial"; - if (typeof font.glyphs[c] != "undefined") { - glyph = font.glyphs[c][arabicForm]; - if (glyph == null && font.glyphs[c].type == "glyph") glyph = font.glyphs[c]; - } - } else { - glyph = font.glyphs[c]; - } - if (glyph == null) glyph = font.missingGlyph; - return glyph; - }; - this.renderChildren = function(ctx) { - var customFont = this.parent.style("font-family").getDefinition(); - if (customFont != null) { - var fontSize = this.parent.style("font-size").numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize); - var fontStyle = this.parent.style("font-style").valueOrDefault(svg.Font.Parse(svg.ctx.font).fontStyle); - var text = this.getText(); - if (customFont.isRTL) text = text.split("").reverse().join(""); - var dx = svg.ToNumberArray(this.parent.attribute("dx").value); - for (var i = 0; i < text.length; i++) { - var glyph = this.getGlyph(customFont, text, i); - var scale = fontSize / customFont.fontFace.unitsPerEm; - ctx.translate(this.x, this.y); - ctx.scale(scale, -scale); - var lw = ctx.lineWidth; - ctx.lineWidth = ctx.lineWidth * customFont.fontFace.unitsPerEm / fontSize; - if (fontStyle == "italic") ctx.transform(1, 0, .4, 1, 0, 0); - glyph.render(ctx); - if (fontStyle == "italic") ctx.transform(1, 0, -.4, 1, 0, 0); - ctx.lineWidth = lw; - ctx.scale(1 / scale, -1 / scale); - ctx.translate(-this.x, -this.y); - this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / customFont.fontFace.unitsPerEm; - if (typeof dx[i] != "undefined" && !isNaN(dx[i])) { - this.x += dx[i]; - } - } - return; - } - if (ctx.fillStyle != "") ctx.fillText(svg.compressSpaces(this.getText()), this.x, this.y); - if (ctx.strokeStyle != "") ctx.strokeText(svg.compressSpaces(this.getText()), this.x, this.y); - }; - this.getText = function() {}; - this.measureTextRecursive = function(ctx) { - var width = this.measureText(ctx); - for (var i = 0; i < this.children.length; i++) { - width += this.children[i].measureTextRecursive(ctx); - } - return width; - }; - this.measureText = function(ctx) { - var customFont = this.parent.style("font-family").getDefinition(); - if (customFont != null) { - var fontSize = this.parent.style("font-size").numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize); - var measure = 0; - var text = this.getText(); - if (customFont.isRTL) text = text.split("").reverse().join(""); - var dx = svg.ToNumberArray(this.parent.attribute("dx").value); - for (var i = 0; i < text.length; i++) { - var glyph = this.getGlyph(customFont, text, i); - measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm; - if (typeof dx[i] != "undefined" && !isNaN(dx[i])) { - measure += dx[i]; - } - } - return measure; - } - var textToMeasure = svg.compressSpaces(this.getText()); - if (!ctx.measureText) return textToMeasure.length * 10; - ctx.save(); - this.setContext(ctx); - var width = ctx.measureText(textToMeasure).width; - ctx.restore(); - return width; - }; - }; - svg.Element.TextElementBase.prototype = new svg.Element.RenderedElementBase(); - // tspan - svg.Element.tspan = function(node) { - this.captureTextNodes = true; - this.base = svg.Element.TextElementBase; - this.base(node); - this.text = node.nodeValue || node.text || ""; - this.getText = function() { - return this.text; - }; - }; - svg.Element.tspan.prototype = new svg.Element.TextElementBase(); - // tref - svg.Element.tref = function(node) { - this.base = svg.Element.TextElementBase; - this.base(node); - this.getText = function() { - var element = this.getHrefAttribute().getDefinition(); - if (element != null) return element.children[0].getText(); - }; - }; - svg.Element.tref.prototype = new svg.Element.TextElementBase(); - // a element - svg.Element.a = function(node) { - this.base = svg.Element.TextElementBase; - this.base(node); - this.hasText = true; - for (var i = 0; i < node.childNodes.length; i++) { - if (node.childNodes[i].nodeType != 3) this.hasText = false; - } - // this might contain text - this.text = this.hasText ? node.childNodes[0].nodeValue : ""; - this.getText = function() { - return this.text; - }; - this.baseRenderChildren = this.renderChildren; - this.renderChildren = function(ctx) { - if (this.hasText) { - // render as text element - this.baseRenderChildren(ctx); - var fontSize = new svg.Property("fontSize", svg.Font.Parse(svg.ctx.font).fontSize); - svg.Mouse.checkBoundingBox(this, new svg.BoundingBox(this.x, this.y - fontSize.toPixels("y"), this.x + this.measureText(ctx), this.y)); - } else { - // render as temporary group - var g = new svg.Element.g(); - g.children = this.children; - g.parent = this; - g.render(ctx); - } - }; - this.onclick = function() { - window.open(this.getHrefAttribute().value); - }; - this.onmousemove = function() { - svg.ctx.canvas.style.cursor = "pointer"; - }; - }; - svg.Element.a.prototype = new svg.Element.TextElementBase(); - // image element - svg.Element.image = function(node) { - this.base = svg.Element.RenderedElementBase; - this.base(node); - var href = this.getHrefAttribute().value; - var isSvg = href.match(/\.svg$/); - svg.Images.push(this); - this.loaded = false; - if (!isSvg) { - this.img = document.createElement("img"); - var self = this; - this.img.onload = function() { - self.loaded = true; - }; - this.img.onerror = function() { - if (typeof console != "undefined") { - console.log('ERROR: image "' + href + '" not found'); - self.loaded = true; - } - }; - this.img.src = href; - } else { - this.img = svg.ajax(href); - this.loaded = true; - } - this.renderChildren = function(ctx) { - var x = this.attribute("x").toPixels("x"); - var y = this.attribute("y").toPixels("y"); - var width = this.attribute("width").toPixels("x"); - var height = this.attribute("height").toPixels("y"); - if (width == 0 || height == 0) return; - ctx.save(); - if (isSvg) { - ctx.drawSvg(this.img, x, y, width, height); - } else { - ctx.translate(x, y); - svg.AspectRatio(ctx, this.attribute("preserveAspectRatio").value, width, this.img.width, height, this.img.height, 0, 0); - ctx.drawImage(this.img, 0, 0); - } - ctx.restore(); - }; - this.getBoundingBox = function() { - var x = this.attribute("x").toPixels("x"); - var y = this.attribute("y").toPixels("y"); - var width = this.attribute("width").toPixels("x"); - var height = this.attribute("height").toPixels("y"); - return new svg.BoundingBox(x, y, x + width, y + height); - }; - }; - svg.Element.image.prototype = new svg.Element.RenderedElementBase(); - // group element - svg.Element.g = function(node) { - this.base = svg.Element.RenderedElementBase; - this.base(node); - this.getBoundingBox = function() { - var bb = new svg.BoundingBox(); - for (var i = 0; i < this.children.length; i++) { - bb.addBoundingBox(this.children[i].getBoundingBox()); - } - return bb; - }; - }; - svg.Element.g.prototype = new svg.Element.RenderedElementBase(); - // symbol element - svg.Element.symbol = function(node) { - this.base = svg.Element.RenderedElementBase; - this.base(node); - this.baseSetContext = this.setContext; - this.setContext = function(ctx) { - this.baseSetContext(ctx); - // viewbox - if (this.attribute("viewBox").hasValue()) { - var viewBox = svg.ToNumberArray(this.attribute("viewBox").value); - var minX = viewBox[0]; - var minY = viewBox[1]; - width = viewBox[2]; - height = viewBox[3]; - svg.AspectRatio(ctx, this.attribute("preserveAspectRatio").value, this.attribute("width").toPixels("x"), width, this.attribute("height").toPixels("y"), height, minX, minY); - svg.ViewPort.SetCurrent(viewBox[2], viewBox[3]); - } - }; - }; - svg.Element.symbol.prototype = new svg.Element.RenderedElementBase(); - // style element - svg.Element.style = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - // text, or spaces then CDATA - var css = ""; - for (var i = 0; i < node.childNodes.length; i++) { - css += node.childNodes[i].nodeValue; - } - css = css.replace(/(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm, ""); - // remove comments - css = svg.compressSpaces(css); - // replace whitespace - var cssDefs = css.split("}"); - for (var i = 0; i < cssDefs.length; i++) { - if (svg.trim(cssDefs[i]) != "") { - var cssDef = cssDefs[i].split("{"); - var cssClasses = cssDef[0].split(","); - var cssProps = cssDef[1].split(";"); - for (var j = 0; j < cssClasses.length; j++) { - var cssClass = svg.trim(cssClasses[j]); - if (cssClass != "") { - var props = {}; - for (var k = 0; k < cssProps.length; k++) { - var prop = cssProps[k].indexOf(":"); - var name = cssProps[k].substr(0, prop); - var value = cssProps[k].substr(prop + 1, cssProps[k].length - prop); - if (name != null && value != null) { - props[svg.trim(name)] = new svg.Property(svg.trim(name), svg.trim(value)); - } - } - svg.Styles[cssClass] = props; - if (cssClass == "@font-face") { - var fontFamily = props["font-family"].value.replace(/"/g, ""); - var srcs = props["src"].value.split(","); - for (var s = 0; s < srcs.length; s++) { - if (srcs[s].indexOf('format("svg")') > 0) { - var urlStart = srcs[s].indexOf("url"); - var urlEnd = srcs[s].indexOf(")", urlStart); - var url = srcs[s].substr(urlStart + 5, urlEnd - urlStart - 6); - var doc = svg.parseXml(svg.ajax(url)); - var fonts = doc.getElementsByTagName("font"); - for (var f = 0; f < fonts.length; f++) { - var font = svg.CreateElement(fonts[f]); - svg.Definitions[fontFamily] = font; - } - } - } - } - } - } - } - } - }; - svg.Element.style.prototype = new svg.Element.ElementBase(); - // use element - svg.Element.use = function(node) { - this.base = svg.Element.RenderedElementBase; - this.base(node); - this.baseSetContext = this.setContext; - this.setContext = function(ctx) { - this.baseSetContext(ctx); - if (this.attribute("x").hasValue()) ctx.translate(this.attribute("x").toPixels("x"), 0); - if (this.attribute("y").hasValue()) ctx.translate(0, this.attribute("y").toPixels("y")); - }; - this.getDefinition = function() { - var element = this.getHrefAttribute().getDefinition(); - if (this.attribute("width").hasValue()) element.attribute("width", true).value = this.attribute("width").value; - if (this.attribute("height").hasValue()) element.attribute("height", true).value = this.attribute("height").value; - return element; - }; - this.path = function(ctx) { - var element = this.getDefinition(); - if (element != null) element.path(ctx); - }; - this.getBoundingBox = function() { - var element = this.getDefinition(); - if (element != null) return element.getBoundingBox(); - }; - this.renderChildren = function(ctx) { - var element = this.getDefinition(); - if (element != null) { - // temporarily detach from parent and render - var oldParent = element.parent; - element.parent = null; - element.render(ctx); - element.parent = oldParent; - } - }; - }; - svg.Element.use.prototype = new svg.Element.RenderedElementBase(); - // mask element - svg.Element.mask = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - this.apply = function(ctx, element) { - // render as temp svg - var x = this.attribute("x").toPixels("x"); - var y = this.attribute("y").toPixels("y"); - var width = this.attribute("width").toPixels("x"); - var height = this.attribute("height").toPixels("y"); - if (width == 0 && height == 0) { - var bb = new svg.BoundingBox(); - for (var i = 0; i < this.children.length; i++) { - bb.addBoundingBox(this.children[i].getBoundingBox()); - } - var x = Math.floor(bb.x1); - var y = Math.floor(bb.y1); - var width = Math.floor(bb.width()); - var height = Math.floor(bb.height()); - } - // temporarily remove mask to avoid recursion - var mask = element.attribute("mask").value; - element.attribute("mask").value = ""; - var cMask = document.createElement("canvas"); - cMask.width = x + width; - cMask.height = y + height; - var maskCtx = cMask.getContext("2d"); - this.renderChildren(maskCtx); - var c = document.createElement("canvas"); - c.width = x + width; - c.height = y + height; - var tempCtx = c.getContext("2d"); - element.render(tempCtx); - tempCtx.globalCompositeOperation = "destination-in"; - tempCtx.fillStyle = maskCtx.createPattern(cMask, "no-repeat"); - tempCtx.fillRect(0, 0, x + width, y + height); - ctx.fillStyle = tempCtx.createPattern(c, "no-repeat"); - ctx.fillRect(0, 0, x + width, y + height); - // reassign mask - element.attribute("mask").value = mask; - }; - this.render = function(ctx) {}; - }; - svg.Element.mask.prototype = new svg.Element.ElementBase(); - // clip element - svg.Element.clipPath = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - this.apply = function(ctx) { - for (var i = 0; i < this.children.length; i++) { - var child = this.children[i]; - if (typeof child.path != "undefined") { - var transform = null; - if (child.attribute("transform").hasValue()) { - transform = new svg.Transform(child.attribute("transform").value); - transform.apply(ctx); - } - child.path(ctx); - ctx.clip(); - if (transform) { - transform.unapply(ctx); - } - } - } - }; - this.render = function(ctx) {}; - }; - svg.Element.clipPath.prototype = new svg.Element.ElementBase(); - // filters - svg.Element.filter = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - this.apply = function(ctx, element) { - // render as temp svg - var bb = element.getBoundingBox(); - var x = Math.floor(bb.x1); - var y = Math.floor(bb.y1); - var width = Math.floor(bb.width()); - var height = Math.floor(bb.height()); - // temporarily remove filter to avoid recursion - var filter = element.style("filter").value; - element.style("filter").value = ""; - var px = 0, py = 0; - for (var i = 0; i < this.children.length; i++) { - var efd = this.children[i].extraFilterDistance || 0; - px = Math.max(px, efd); - py = Math.max(py, efd); - } - var c = document.createElement("canvas"); - c.width = width + 2 * px; - c.height = height + 2 * py; - var tempCtx = c.getContext("2d"); - tempCtx.translate(-x + px, -y + py); - element.render(tempCtx); - // apply filters - for (var i = 0; i < this.children.length; i++) { - this.children[i].apply(tempCtx, 0, 0, width + 2 * px, height + 2 * py); - } - // render on me - ctx.drawImage(c, 0, 0, width + 2 * px, height + 2 * py, x - px, y - py, width + 2 * px, height + 2 * py); - // reassign filter - element.style("filter", true).value = filter; - }; - this.render = function(ctx) {}; - }; - svg.Element.filter.prototype = new svg.Element.ElementBase(); - svg.Element.feMorphology = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - this.apply = function(ctx, x, y, width, height) {}; - }; - svg.Element.feMorphology.prototype = new svg.Element.ElementBase(); - svg.Element.feColorMatrix = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - function imGet(img, x, y, width, height, rgba) { - return img[y * width * 4 + x * 4 + rgba]; - } - function imSet(img, x, y, width, height, rgba, val) { - img[y * width * 4 + x * 4 + rgba] = val; - } - this.apply = function(ctx, x, y, width, height) { - // only supporting grayscale for now per Issue 195, need to extend to all matrix - // assuming x==0 && y==0 for now - var srcData = ctx.getImageData(0, 0, width, height); - for (var y = 0; y < height; y++) { - for (var x = 0; x < width; x++) { - var r = imGet(srcData.data, x, y, width, height, 0); - var g = imGet(srcData.data, x, y, width, height, 1); - var b = imGet(srcData.data, x, y, width, height, 2); - var gray = (r + g + b) / 3; - imSet(srcData.data, x, y, width, height, 0, gray); - imSet(srcData.data, x, y, width, height, 1, gray); - imSet(srcData.data, x, y, width, height, 2, gray); - } - } - ctx.clearRect(0, 0, width, height); - ctx.putImageData(srcData, 0, 0); - }; - }; - svg.Element.feColorMatrix.prototype = new svg.Element.ElementBase(); - svg.Element.feGaussianBlur = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - this.blurRadius = Math.floor(this.attribute("stdDeviation").numValue()); - this.extraFilterDistance = this.blurRadius; - this.apply = function(ctx, x, y, width, height) { - if (typeof stackBlurCanvasRGBA == "undefined") { - if (typeof console != "undefined") { - console.log("ERROR: StackBlur.js must be included for blur to work"); - } - return; - } - // StackBlur requires canvas be on document - ctx.canvas.id = svg.UniqueId(); - ctx.canvas.style.display = "none"; - document.body.appendChild(ctx.canvas); - stackBlurCanvasRGBA(ctx.canvas.id, x, y, width, height, this.blurRadius); - document.body.removeChild(ctx.canvas); - }; - }; - svg.Element.feGaussianBlur.prototype = new svg.Element.ElementBase(); - // title element, do nothing - svg.Element.title = function(node) {}; - svg.Element.title.prototype = new svg.Element.ElementBase(); - // desc element, do nothing - svg.Element.desc = function(node) {}; - svg.Element.desc.prototype = new svg.Element.ElementBase(); - svg.Element.MISSING = function(node) { - if (typeof console != "undefined") { - console.log("ERROR: Element '" + node.nodeName + "' not yet implemented."); - } - }; - svg.Element.MISSING.prototype = new svg.Element.ElementBase(); - // element factory - svg.CreateElement = function(node) { - var className = node.nodeName.replace(/^[^:]+:/, ""); - // remove namespace - className = className.replace(/\-/g, ""); - // remove dashes - var e = null; - if (typeof svg.Element[className] != "undefined") { - e = new svg.Element[className](node); - } else { - e = new svg.Element.MISSING(node); - } - e.type = node.nodeName; - return e; - }; - // load from url - svg.load = function(ctx, url) { - svg.loadXml(ctx, svg.ajax(url)); - }; - // load from xml - svg.loadXml = function(ctx, xml) { - svg.loadXmlDoc(ctx, svg.parseXml(xml)); - }; - svg.loadXmlDoc = function(ctx, dom) { - svg.init(ctx); - var mapXY = function(p) { - var e = ctx.canvas; - while (e) { - p.x -= e.offsetLeft; - p.y -= e.offsetTop; - e = e.offsetParent; - } - if (window.scrollX) p.x += window.scrollX; - if (window.scrollY) p.y += window.scrollY; - return p; - }; - // bind mouse - if (svg.opts["ignoreMouse"] != true) { - ctx.canvas.onclick = function(e) { - var p = mapXY(new svg.Point(e != null ? e.clientX : event.clientX, e != null ? e.clientY : event.clientY)); - svg.Mouse.onclick(p.x, p.y); - }; - ctx.canvas.onmousemove = function(e) { - var p = mapXY(new svg.Point(e != null ? e.clientX : event.clientX, e != null ? e.clientY : event.clientY)); - svg.Mouse.onmousemove(p.x, p.y); - }; - } - var e = svg.CreateElement(dom.documentElement); - e.root = true; - // render loop - var isFirstRender = true; - var draw = function() { - svg.ViewPort.Clear(); - if (ctx.canvas.parentNode) svg.ViewPort.SetCurrent(ctx.canvas.parentNode.clientWidth, ctx.canvas.parentNode.clientHeight); - if (svg.opts["ignoreDimensions"] != true) { - // set canvas size - if (e.style("width").hasValue()) { - ctx.canvas.width = e.style("width").toPixels("x"); - ctx.canvas.style.width = ctx.canvas.width + "px"; - } - if (e.style("height").hasValue()) { - ctx.canvas.height = e.style("height").toPixels("y"); - ctx.canvas.style.height = ctx.canvas.height + "px"; - } - } - var cWidth = ctx.canvas.clientWidth || ctx.canvas.width; - var cHeight = ctx.canvas.clientHeight || ctx.canvas.height; - if (svg.opts["ignoreDimensions"] == true && e.style("width").hasValue() && e.style("height").hasValue()) { - cWidth = e.style("width").toPixels("x"); - cHeight = e.style("height").toPixels("y"); - } - svg.ViewPort.SetCurrent(cWidth, cHeight); - if (svg.opts["offsetX"] != null) e.attribute("x", true).value = svg.opts["offsetX"]; - if (svg.opts["offsetY"] != null) e.attribute("y", true).value = svg.opts["offsetY"]; - if (svg.opts["scaleWidth"] != null && svg.opts["scaleHeight"] != null) { - var xRatio = 1, yRatio = 1, viewBox = svg.ToNumberArray(e.attribute("viewBox").value); - if (e.attribute("width").hasValue()) xRatio = e.attribute("width").toPixels("x") / svg.opts["scaleWidth"]; else if (!isNaN(viewBox[2])) xRatio = viewBox[2] / svg.opts["scaleWidth"]; - if (e.attribute("height").hasValue()) yRatio = e.attribute("height").toPixels("y") / svg.opts["scaleHeight"]; else if (!isNaN(viewBox[3])) yRatio = viewBox[3] / svg.opts["scaleHeight"]; - e.attribute("width", true).value = svg.opts["scaleWidth"]; - e.attribute("height", true).value = svg.opts["scaleHeight"]; - e.attribute("viewBox", true).value = "0 0 " + cWidth * xRatio + " " + cHeight * yRatio; - e.attribute("preserveAspectRatio", true).value = "none"; - } - // clear and render - if (svg.opts["ignoreClear"] != true) { - ctx.clearRect(0, 0, cWidth, cHeight); - } - e.render(ctx); - if (isFirstRender) { - isFirstRender = false; - if (typeof svg.opts["renderCallback"] == "function") svg.opts["renderCallback"](dom); - } - }; - var waitingForImages = true; - if (svg.ImagesLoaded()) { - waitingForImages = false; - draw(); - } - svg.intervalID = setInterval(function() { - var needUpdate = false; - if (waitingForImages && svg.ImagesLoaded()) { - waitingForImages = false; - needUpdate = true; - } - // need update from mouse events? - if (svg.opts["ignoreMouse"] != true) { - needUpdate = needUpdate | svg.Mouse.hasEvents(); - } - // need update from animations? - if (svg.opts["ignoreAnimation"] != true) { - for (var i = 0; i < svg.Animations.length; i++) { - needUpdate = needUpdate | svg.Animations[i].update(1e3 / svg.FRAMERATE); - } - } - // need update from redraw? - if (typeof svg.opts["forceRedraw"] == "function") { - if (svg.opts["forceRedraw"]() == true) needUpdate = true; - } - // render if needed - if (needUpdate) { - draw(); - svg.Mouse.runEvents(); - } - }, 1e3 / svg.FRAMERATE); - }; - svg.stop = function() { - if (svg.intervalID) { - clearInterval(svg.intervalID); - } - }; - svg.Mouse = new function() { - this.events = []; - this.hasEvents = function() { - return this.events.length != 0; - }; - this.onclick = function(x, y) { - this.events.push({ - type: "onclick", - x: x, - y: y, - run: function(e) { - if (e.onclick) e.onclick(); - } - }); - }; - this.onmousemove = function(x, y) { - this.events.push({ - type: "onmousemove", - x: x, - y: y, - run: function(e) { - if (e.onmousemove) e.onmousemove(); - } - }); - }; - this.eventElements = []; - this.checkPath = function(element, ctx) { - for (var i = 0; i < this.events.length; i++) { - var e = this.events[i]; - if (ctx.isPointInPath && ctx.isPointInPath(e.x, e.y)) this.eventElements[i] = element; - } - }; - this.checkBoundingBox = function(element, bb) { - for (var i = 0; i < this.events.length; i++) { - var e = this.events[i]; - if (bb.isPointInBox(e.x, e.y)) this.eventElements[i] = element; - } - }; - this.runEvents = function() { - svg.ctx.canvas.style.cursor = ""; - for (var i = 0; i < this.events.length; i++) { - var e = this.events[i]; - var element = this.eventElements[i]; - while (element) { - e.run(element); - element = element.parent; - } - } - // done running, clear - this.events = []; - this.eventElements = []; - }; - }(); - return svg; - } - })(); - if (typeof CanvasRenderingContext2D != "undefined") { - CanvasRenderingContext2D.prototype.drawSvg = function(s, dx, dy, dw, dh) { - canvg(this.canvas, s, { - ignoreMouse: true, - ignoreAnimation: true, - ignoreDimensions: true, - ignoreClear: true, - offsetX: dx, - offsetY: dy, - scaleWidth: dw, - scaleHeight: dh - }); - }; - } - return canvg; - } -}; - -/*! - * 输出转换器,提供输出支持 - */ -_p[1] = { - value: function(require) { - var kity = _p.r(34), canvg = _p.r(0); - return kity.createClass("Output", { - constructor: function(formula) { - this.formula = formula; - }, - toJPG: function(cb) { - toImage(this.formula, "image/jpeg", cb); - }, - toPNG: function(cb) { - toImage(this.formula, "image/png", cb); - } - }); - function toImage(formula, type, cb) { - var rectSpace = formula.container.getRenderBox(); - return getBase64DataURL(formula.node.ownerDocument, { - width: rectSpace.width, - height: rectSpace.height, - content: getSVGContent(formula.node) - }, type, cb); - } - function getBase64DataURL(doc, data, type, cb) { - var canvas = null, args = arguments, ctx = null; - if (true) { - drawToCanvas.apply(null, args); - } else { - canvas = getImageCanvas(doc, data.width, data.height, type); - ctx = canvas.getContext("2d"); - var image = new Image(); - image.onload = function() { - try { - ctx.drawImage(image, 0, 0); - cb(canvas.toDataURL(type)); - } catch (e) { - drawToCanvas.apply(null, args); - } - }; - image.src = getSVGDataURL(data.content); - } - } - function getSVGContent(svgNode) { - var tmp = svgNode.ownerDocument.createElement("div"), start = [ '' ]; - tmp.appendChild(svgNode.cloneNode(true)); - return tmp.innerHTML.replace(/]+?>/i, start.join("")).replace(/ /g, ""); - } - function getSVGDataURL(data) { - return "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(data))); - } - function getImageCanvas(doc, width, height, type) { - var canvas = doc.createElement("canvas"), ctx = canvas.getContext("2d"); - canvas.width = width; - canvas.height = height; - if (type !== "image/png") { - ctx.fillStyle = "white"; - ctx.fillRect(0, 0, canvas.width, canvas.height); - } - return canvas; - } - function drawToCanvas(doc, data, type, cb) { - var canvas = getImageCanvas(doc, data.width, data.height, type); - canvas.style.cssText = "position: absolute; top: 0; left: 100000px; z-index: -1;"; - window.setTimeout(function() { - doc.body.appendChild(canvas); - canvg(canvas, data.content); - doc.body.removeChild(canvas); - cb(canvas.toDataURL(type)); - }, 0); - } - } -}; - -/*! - * 所有字符的列表 - */ -_p[2] = { - value: function() { - return [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "ȷ", "ı", "α", "β", "γ", "δ", "ε", "ζ", "η", "θ", "ι", "κ", "λ", "μ", "ν", "ξ", "ο", "π", "ρ", "ς", "σ", "τ", "υ", "φ", "χ", "ψ", "ω", "ϑ", "ϕ", "ϖ", "Ϟ", "Ϝ", "ϵ", "ϱ", "Ϲ", "ℜ", "ℵ", "ℑ", "℧", "ℶ", "ℷ", "ℸ", "ð", "ℏ", "⅁", "ℎ", "∂", "℘", "⅌", "Ⅎ", "∁", "ℓ", "Ⓢ", "(", ")", "Γ", "Δ", "Ε", "Ζ", "Η", "Θ", "Ι", "Κ", "Λ", "Μ", "Ν", "Ξ", "Ο", "Π", "Ρ", "Σ", "Τ", "Υ", "Φ", "Χ", "Ψ", "Ω", "Α", "Β", "#", "!", "$", "%", "&", "∠", "′", "‵", "★", "◆", "■", "▲", "▼", "⊤", "⊥", "♣", "♠", "♢", "♡", "∃", "∄", "♭", "♮", "♯", "∀", "∞", "∡", "∇", "¬", "∢", "√", "△", "▽", "∅", "ø", "◇", "◀", "▸", "[", "]", "{", "}", "〈", "〉", "ϰ", ",", ".", "/", ":", ";", "?", "\\", "⋮", "⋯", "⋰", "…", "@", """, "'", "|", "^", "`", "“", "_", "*", "+", "-", "∐", "⊼", "⊻", "◯", "⊡", "⊟", "⊞", "⊠", "•", "∩", "∪", "⋒", "⋓", "⋐", "⋑", "·", "▪", "◦", "⊛", "⊚", "⊖", "⊙", "⊝", "⊕", "⊗", "⊘", "±", "∓", "⋏", "⋎", "†", "‡", "⋄", "÷", "⋇", "∔", "⌭", "⋗", "⋖", "⋉", "⋊", "⋋", "⋌", "⊓", "⊔", "⊑", "⊒", "⊏", "⊐", "⋆", "×", "⊳", "⊲", "⊵", "⊴", "⊎", "∨", "∧", "≀", "<", "=", ">", "≈", "≇", "≍", "≒", "≓", "≊", "∽", "≁", "≂", "≃", "⋍", "≏", "≎", "≗", "≅", "⋞", "⋟", "≐", "≑", "≖", "⪖", "⪕", "≡", "≥", "≤", "≦", "≧", "⩾", "⩽", "≫", "≪", "≨", "≩", "⋘", "⋙", "⪇", "⪈", "⪉", "⪊", "⋧", "⋦", "⪆", "⪅", "⋛", "⋚", "⪋", "⪌", "≷", "≶", "≳", "≲", "⌮", "⌯", "≯", "≱", "≰", "≮", "⌱", "⌰", "⌲", "⌳", "≬", "⊀", "⊁", "⋠", "⋡", "≺", "≻", "≼", "≽", "≾", "≿", "⊂", "⊃", "⊈", "⊉", "⊆", "⊇", "⊊", "⊋", "⪷", "⪸", "⪯", "⪰", "⪹", "⪺", "⪵", "⪶", "⋨", "⋩", "∼", "≜", "↶", "↷", "↺", "↻", "↾", "↿", "⇂", "⇃", "⇄", "⇆", "⇈", "⇊", "⇋", "⇌", "⇍", "⇎", "⇏", "⇐", "⇑", "⇒", "⇓", "⇔", "⇕", "⇚", "⇛", "⇝", "↫", "↬", "↭", "↮", "←", "↑", "→", "↓", "↔", "↕", "↖", "↗", "↘", "↙", "↞", "↠", "↢", "↣", "↰", "↱", "⊢", "⊣", "⊨", "⊩", "⊪", "⊭", "⊯", "⊸", "⊺", "⋔", "⋪", "⋫", "⋬", "⋭", "⌈", "⌉", "⌊", "⌋", "⫋", "⫌", "⫅", "⫆", "∈", "∋", "∝", "∤", "∦", "∴", "∵", "∍", "⋈", "⌢", "⌣", "∣", "∥", "⏐", "⏑", "⏒", "⏓", "⫇", "⫈", "⊮", "⊬", "⫉", "⏔", "⏕", "⏖", "⏗", "⇇", "⇉", "↼", "↽", "⇀", "⇁", "↚", "↛", "⟵", "⟶", "⟷", "⟹", "⟸", "⟺", "≢", "≠", "∉" ]; - } -}; - -/*! - * 字符配置 - */ -_p[3] = { - value: function() { - return { - // 默认字体 - defaultFont: "KF AMS MAIN" - }; - } -}; - -/*! - * 工厂方法,创建兼容各浏览器的text实现 - */ -_p[4] = { - value: function(require) { - var kity = _p.r(34), divNode = document.createElement("div"), NAMESPACE = "http://www.w3.org/XML/1998/namespace"; - function createText(content) { - var text = new kity.Text(); - // Non-IE - if ("innerHTML" in text.node) { - text.node.setAttributeNS(NAMESPACE, "xml:space", "preserve"); - } else { - if (content.indexOf(" ") != -1) { - content = convertContent(content); - } - } - text.setContent(content); - return text; - } - /** - * 构建节点来转换内容 - */ - function convertContent(content) { - divNode.innerHTML = '' + content.replace(/\s/gi, " ") + ""; - return divNode.firstChild.firstChild.textContent; - } - return { - create: function(content) { - return createText(content); - } - }; - } -}; - -/** - * 文本 - */ -_p[5] = { - value: function(require) { - var kity = _p.r(34), FONT_CONF = _p.r(47).font, FontManager = _p.r(25), TextFactory = _p.r(4); - return kity.createClass("Text", { - base: _p.r(46), - constructor: function(content, fontFamily) { - this.callBase(); - this.fontFamily = fontFamily; - this.fontSize = 50; - this.content = content || ""; - // 移除多余的节点 - this.box.remove(); - this.translationContent = this.translation(this.content); - this.contentShape = new kity.Group(); - this.contentNode = this.createContent(); - this.contentShape.addShape(this.contentNode); - this.addShape(this.contentShape); - }, - createContent: function() { - var contentNode = TextFactory.create(this.translationContent); - contentNode.setAttr({ - "font-family": this.fontFamily, - "font-size": 50, - x: 0, - y: FONT_CONF.offset - }); - return contentNode; - }, - setFamily: function(fontFamily) { - this.fontFamily = fontFamily; - this.contentNode.setAttr("font-family", fontFamily); - }, - setFontSize: function(fontSize) { - this.fontSize = fontSize; - this.contentNode.setAttr("font-size", fontSize + "px"); - this.contentNode.setAttr("y", fontSize / 50 * FONT_CONF.offset); - }, - getBaseHeight: function() { - var chars = this.contentShape.getItems(), currentChar = null, index = 0, height = 0; - while (currentChar = chars[index]) { - height = Math.max(height, currentChar.getHeight()); - index++; - } - return height; - }, - translation: function(content) { - var fontFamily = this.fontFamily; - // 首先特殊处理掉两个相连的"`"符号 - return content.replace(/``/g, "“").replace(/\\([a-zA-Z,]+)\\/g, function(match, input) { - if (input === ",") { - return " "; - } - var data = FontManager.getCharacterValue(input, fontFamily); - if (!data) { - return ""; - } - return data; - }); - } - }); - } -}; - -/** - * 定义公式中各种对象的类型 - */ -_p[6] = { - value: function() { - return { - UNKNOWN: -1, - EXP: 0, - COMPOUND_EXP: 1, - OP: 2 - }; - } -}; - -/** - * 定义公式中上下标的类型 - */ -_p[7] = { - value: function() { - return { - SIDE: "side", - FOLLOW: "follow" - }; - } -}; - -/** - * 下标表达式 - */ -_p[8] = { - value: function(require) { - var kity = _p.r(34); - return kity.createClass("SubscriptExpression", { - base: _p.r(17), - constructor: function(operand, subscript) { - this.callBase(operand, null, subscript); - this.setFlag("Subscript"); - } - }); - } -}; - -/** - * 上标表达式 - */ -_p[9] = { - value: function(require) { - var kity = _p.r(34); - return kity.createClass("SuperscriptExpression", { - base: _p.r(17), - constructor: function(operand, superscript) { - this.callBase(operand, superscript, null); - this.setFlag("Superscript"); - } - }); - } -}; - -/** - * 二元操作表达式 - */ -_p[10] = { - value: function(require) { - var kity = _p.r(34); - return kity.createClass("BinaryExpression", { - base: _p.r(19), - constructor: function(firstOperand, lastOperand) { - this.callBase(); - this.setFirstOperand(firstOperand); - this.setLastOperand(lastOperand); - }, - setFirstOperand: function(operand) { - return this.setOperand(operand, 0); - }, - getFirstOperand: function() { - return this.getOperand(0); - }, - setLastOperand: function(operand) { - return this.setOperand(operand, 1); - }, - getLastOperand: function() { - return this.getOperand(1); - } - }); - } -}; - -/** - * 自动增长括号表达式 - */ -_p[11] = { - value: function(require) { - var kity = _p.r(34), BracketsOperator = _p.r(35); - return kity.createClass("BracketsExpression", { - base: _p.r(19), - /** - * 构造函数调用方式: - * new Constructor( 左括号, 右括号, 表达式 ) - * 或者 - * new Constructor( 括号, 表达式 ), 该构造函数转换成上面的构造函数,是: new Constructor( 括号, 括号, 表达式 ) - * @param left 左括号 - * @param right 右括号 - * @param exp 表达式 - */ - constructor: function(left, right, exp) { - this.callBase(); - this.setFlag("Brackets"); - // 参数整理 - if (arguments.length === 2) { - exp = right; - right = left; - } - this.leftSymbol = left; - this.rightSymbol = right; - this.setOperator(new BracketsOperator()); - this.setOperand(exp, 0); - }, - getLeftSymbol: function() { - return this.leftSymbol; - }, - getRightSymbol: function() { - return this.rightSymbol; - } - }); - } -}; - -/** - * 组合表达式 - * 可以组合多个表达式 - */ -_p[12] = { - value: function(require) { - var kity = _p.r(34), FONT_CONF = _p.r(47).font, CombinationOperator = _p.r(36); - return kity.createClass("CombinationExpression", { - base: _p.r(19), - constructor: function() { - this.callBase(); - this.setFlag("Combination"); - this.setOperator(new CombinationOperator()); - kity.Utils.each(arguments, function(operand, index) { - this.setOperand(operand, index); - }, this); - }, - getRenderBox: function(refer) { - var rectBox = this.callBase(refer); - if (this.getOperands().length === 0) { - rectBox.height = FONT_CONF.spaceHeight; - } - return rectBox; - }, - getBaseline: function(refer) { - var maxBaseline = 0, operands = this.getOperands(); - if (operands.length === 0) { - return this.callBase(refer); - } - kity.Utils.each(operands, function(operand) { - maxBaseline = Math.max(operand.getBaseline(refer), maxBaseline); - }); - return maxBaseline; - }, - getMeanline: function(refer) { - var minMeanline = 1e7, operands = this.getOperands(); - if (operands.length === 0) { - return this.callBase(refer); - } - kity.Utils.each(operands, function(operand) { - minMeanline = Math.min(operand.getMeanline(refer), minMeanline); - }); - return minMeanline; - } - }); - } -}; - -/** - * 分数表达式 - */ -_p[13] = { - value: function(require) { - var kity = _p.r(34), FractionOperator = _p.r(38); - return kity.createClass("FractionExpression", { - base: _p.r(10), - constructor: function(upOperand, downOperand) { - this.callBase(upOperand, downOperand); - this.setFlag("Fraction"); - this.setOperator(new FractionOperator()); - }, - /*------- 重写分数结构的baseline和mealine计算方式 */ - getBaseline: function(refer) { - var downOperand = this.getOperand(1), rectBox = downOperand.getRenderBox(refer); - return rectBox.y + downOperand.getBaselineProportion() * rectBox.height; - }, - getMeanline: function(refer) { - var upOperand = this.getOperand(0), rectBox = upOperand.getRenderBox(refer); - return upOperand.getMeanlineProportion() * rectBox.height; - } - }); - } -}; - -/** - * 函数表达式 - */ -_p[14] = { - value: function(require) { - var kity = _p.r(34), FUNC_CONF = _p.r(47).func, FunctionOperator = _p.r(39); - return kity.createClass("FunctionExpression", { - base: _p.r(19), - /** - * function表达式构造函数 - * @param funcName function名称 - * @param expr 函数表达式 - * @param sup 上标 - * @param sub 下标 - */ - constructor: function(funcName, expr, sup, sub) { - this.callBase(); - this.setFlag("Func"); - this.funcName = funcName; - this.setOperator(new FunctionOperator(funcName)); - this.setExpr(expr); - this.setSuperscript(sup); - this.setSubscript(sub); - }, - // 当前函数应用的script位置是否是在侧面 - isSideScript: function() { - return !FUNC_CONF["ud-script"][this.funcName]; - }, - setExpr: function(expr) { - return this.setOperand(expr, 0); - }, - setSuperscript: function(sub) { - return this.setOperand(sub, 1); - }, - setSubscript: function(sub) { - return this.setOperand(sub, 2); - } - }); - } -}; - -/** - * 积分表达式 - */ -_p[15] = { - value: function(require) { - var kity = _p.r(34), IntegrationOperator = _p.r(40), IntegrationExpression = kity.createClass("IntegrationExpression", { - base: _p.r(19), - /** - * 构造积分表达式 - * @param integrand 被积函数 - * @param supOperand 上限 - * @param subOperand 下限 - */ - constructor: function(integrand, superscript, subscript) { - this.callBase(); - this.setFlag("Integration"); - this.setOperator(new IntegrationOperator()); - this.setIntegrand(integrand); - this.setSuperscript(superscript); - this.setSubscript(subscript); - }, - setType: function(type) { - this.getOperator().setType(type); - return this; - }, - resetType: function() { - this.getOperator().resetType(); - return this; - }, - setIntegrand: function(integrand) { - this.setOperand(integrand, 0); - }, - setSuperscript: function(sup) { - this.setOperand(sup, 1); - }, - setSubscript: function(sub) { - this.setOperand(sub, 2); - } - }); - return IntegrationExpression; - } -}; - -/** - * 方根表达式 - */ -_p[16] = { - value: function(require) { - var kity = _p.r(34), RadicalOperator = _p.r(42); - return kity.createClass("RadicalExpression", { - base: _p.r(10), - /** - * 构造开方表达式 - * @param radicand 被开方数 - * @param exponent 指数 - */ - constructor: function(radicand, exponent) { - this.callBase(radicand, exponent); - this.setFlag("Radicand"); - this.setOperator(new RadicalOperator()); - }, - setRadicand: function(operand) { - return this.setFirstOperand(operand); - }, - getRadicand: function() { - return this.getFirstOperand(); - }, - setExponent: function(operand) { - return this.setLastOperand(operand); - }, - getExponent: function() { - return this.getLastOperand(); - } - }); - } -}; - -/** - * 上标表达式 - */ -_p[17] = { - value: function(require) { - var kity = _p.r(34), ScriptOperator = _p.r(43); - return kity.createClass("ScriptExpression", { - base: _p.r(19), - constructor: function(operand, superscript, subscript) { - this.callBase(); - this.setFlag("Script"); - this.setOperator(new ScriptOperator()); - this.setOpd(operand); - this.setSuperscript(superscript); - this.setSubscript(subscript); - }, - setOpd: function(operand) { - this.setOperand(operand, 0); - }, - setSuperscript: function(sup) { - this.setOperand(sup, 1); - }, - setSubscript: function(sub) { - this.setOperand(sub, 2); - } - }); - } -}; - -/** - * 求和表达式 - */ -_p[18] = { - value: function(require) { - var kity = _p.r(34), SummationOperator = _p.r(44); - return kity.createClass("SummationExpression", { - base: _p.r(19), - /** - * 构造求和表达式 - * @param expr 求和表达式 - * @param upOperand 上标 - * @param downOperand 下标 - */ - constructor: function(expr, superscript, subscript) { - this.callBase(); - this.setFlag("Summation"); - this.setOperator(new SummationOperator()); - this.setExpr(expr); - this.setSuperscript(superscript); - this.setSubscript(subscript); - }, - setExpr: function(expr) { - this.setOperand(expr, 0); - }, - setSuperscript: function(sup) { - this.setOperand(sup, 1); - }, - setSubscript: function(sub) { - this.setOperand(sub, 2); - } - }); - } -}; - -/** - * 复合表达式 - * @abstract - */ -_p[19] = { - value: function(require) { - var kity = _p.r(34), GTYPE = _p.r(6), Expression = _p.r(21); - return kity.createClass("CompoundExpression", { - base: _p.r(21), - constructor: function() { - this.callBase(); - this.type = GTYPE.COMPOUND_EXP; - this.operands = []; - this.operator = null; - this.operatorBox = new kity.Group(); - this.operatorBox.setAttr("data-type", "kf-editor-exp-op-box"); - this.operandBox = new kity.Group(); - this.operandBox.setAttr("data-type", "kf-editor-exp-operand-box"); - this.setChildren(0, this.operatorBox); - this.setChildren(1, this.operandBox); - }, - // 操作符存储在第1位置 - setOperator: function(operator) { - if (operator === undefined) { - return this; - } - if (this.operator) { - this.operator.remove(); - } - this.operatorBox.addShape(operator); - this.operator = operator; - this.operator.setParentExpression(this); - // 表达式关联到操作符 - operator.expression = this; - return this; - }, - getOperator: function() { - return this.operator; - }, - // 操作数存储位置是从1开始 - setOperand: function(operand, index, isWrap) { - // 不包装操作数 - if (isWrap === false) { - this.operands[index] = operand; - return this; - } - operand = Expression.wrap(operand); - if (this.operands[index]) { - this.operands[index].remove(); - } - this.operands[index] = operand; - this.operandBox.addShape(operand); - return this; - }, - getOperand: function(index) { - return this.operands[index]; - }, - getOperands: function() { - return this.operands; - }, - addedCall: function() { - this.operator.applyOperand.apply(this.operator, this.operands); - return this; - } - }); - } -}; - -/** - * 空表达式 - * 该表达式主要用途是用于站位 - */ -_p[20] = { - value: function(require) { - var kity = _p.r(34), FONT_CONF = _p.r(47).font, Expression = _p.r(21), EmptyExpression = kity.createClass("EmptyExpression", { - base: Expression, - constructor: function() { - this.callBase(); - this.setFlag("Empty"); - }, - getRenderBox: function() { - return { - width: 0, - height: FONT_CONF.spaceHeight, - x: 0, - y: 0 - }; - } - }); - EmptyExpression.isEmpty = function(target) { - return target instanceof EmptyExpression; - }; - // 注册打包函数 - Expression.registerWrap("empty", function(operand) { - if (operand === null || operand === undefined) { - return new EmptyExpression(); - } - }); - return EmptyExpression; - } -}; - -/** - * 基础表达式, 该类是表达式和操作数的高层抽象 - * @abstract - */ -_p[21] = { - value: function(require) { - var kity = _p.r(34), GTYPE = _p.r(6), FONT_CONF = _p.r(47).font, // 打包函数列表 - WRAP_FN = [], // 注册的打包函数的名称与其在注册器列表中的索引之间的对应关系 - WRAP_FN_INDEX = {}, Expression = kity.createClass("Expression", { - base: _p.r(46), - constructor: function() { - this.callBase(); - this.type = GTYPE.EXP; - // 表达式的上下偏移 - this._offset = { - top: 0, - bottom: 0 - }; - this.children = []; - this.box.fill("transparent").setAttr("data-type", "kf-editor-exp-box"); - this.box.setAttr("data-type", "kf-editor-exp-bg-box"); - this.expContent = new kity.Group(); - this.expContent.setAttr("data-type", "kf-editor-exp-content-box"); - this.addShape(this.expContent); - }, - getChildren: function() { - return this.children; - }, - getChild: function(index) { - return this.children[index] || null; - }, - getTopOffset: function() { - return this._offset.top; - }, - getBottomOffset: function() { - return this._offset.bottom; - }, - getOffset: function() { - return this._offset; - }, - setTopOffset: function(val) { - this._offset.top = val; - }, - setBottomOffset: function(val) { - this._offset.bottom = val; - }, - setOffset: function(top, bottom) { - this._offset.top = top; - this._offset.bottom = bottom; - }, - setFlag: function(flag) { - this.setAttr("data-flag", flag || "Expression"); - }, - setChildren: function(index, exp) { - // 首先清理掉之前的表达式 - if (this.children[index]) { - this.children[index].remove(); - } - this.children[index] = exp; - this.expContent.addShape(exp); - }, - getBaselineProportion: function() { - return FONT_CONF.baselinePosition; - }, - getMeanlineProportion: function() { - return FONT_CONF.meanlinePosition; - }, - getBaseline: function(refer) { - // 上偏移3px - return this.getRenderBox(refer).height * FONT_CONF.baselinePosition - 3; - }, - getMeanline: function(refer) { - // 上偏移1px - return this.getRenderBox(refer).height * FONT_CONF.meanlinePosition - 1; - }, - getAscenderline: function() { - return this.getFixRenderBox().height * FONT_CONF.ascenderPosition; - }, - getDescenderline: function() { - return this.getFixRenderBox().height * FONT_CONF.descenderPosition; - }, - translateElement: function(x, y) { - this.expContent.translate(x, y); - }, - expand: function(width, height) { - var renderBox = this.getFixRenderBox(); - this.setBoxSize(renderBox.width + width, renderBox.height + height); - }, - getBaseWidth: function() { - return this.getWidth(); - }, - getBaseHeight: function() { - return this.getHeight(); - }, - updateBoxSize: function() { - var renderBox = this.expContent.getFixRenderBox(); - this.setBoxSize(renderBox.width, renderBox.height); - }, - getBox: function() { - return this.box; - } - }); - // 表达式自动打包 - kity.Utils.extend(Expression, { - registerWrap: function(name, fn) { - WRAP_FN_INDEX[name] = WRAP_FN.length; - WRAP_FN.push(fn); - }, - revokeWrap: function(name) { - var fn = null; - if (name in WRAP_FN_INDEX) { - fn = WRAP_FN[WRAP_FN_INDEX[name]]; - WRAP_FN[WRAP_FN_INDEX[name]] = null; - delete WRAP_FN_INDEX[name]; - } - return fn; - }, - // 打包函数 - wrap: function(operand) { - var result; - kity.Utils.each(WRAP_FN, function(fn) { - if (!fn) { - return; - } - result = fn(operand); - if (result) { - return false; - } - }); - return result; - } - }); - return Expression; - } -}; - -/** - * Text表达式 - */ -_p[22] = { - value: function(require) { - var Text = _p.r(5), kity = _p.r(34), FONT_CONF = _p.r(3), Expression = _p.r(21), TextExpression = kity.createClass("TextExpression", { - base: _p.r(21), - constructor: function(content, fontFamily) { - this.callBase(); - this.fontFamily = fontFamily || FONT_CONF.defaultFont; - this.setFlag("Text"); - this.content = content + ""; - this.textContent = new Text(this.content, this.fontFamily); - this.setChildren(0, this.textContent); - this.setChildren(1, new kity.Rect(0, 0, 0, 0).fill("transparent")); - }, - setFamily: function(fontFamily) { - this.textContent.setFamily(fontFamily); - }, - setFontSize: function(fontSize) { - this.textContent.setFontSize(fontSize); - }, - addedCall: function() { - var box = this.textContent.getFixRenderBox(); - this.getChild(1).setSize(box.width, box.height); - this.updateBoxSize(); - return this; - } - }); - // 注册文本表达式的打包函数 - Expression.registerWrap("text", function(operand) { - var operandType = typeof operand; - if (operandType === "number" || operandType === "string") { - operand = new TextExpression(operand); - } - return operand; - }); - return TextExpression; - } -}; - -/*! - * 字体信息检测模板,用于检测浏览器的字体信息 - */ -_p[23] = { - value: function() { - return [ '', 'x', "" ]; - } -}; - -/*! - * 字体安装器 - */ -_p[24] = { - value: function(require) { - var kity = _p.r(34), FontManager = _p.r(25), $ = _p.r(33), FONT_CONF = _p.r(47).font, CHAR_LIST = _p.r(2), NODE_LIST = []; - return kity.createClass("FontInstaller", { - constructor: function(doc, resource) { - this.callBase(); - this.resource = resource || "../src/resource/"; - this.doc = doc; - }, - // 挂载字体 - mount: function(callback) { - var fontList = FontManager.getFontList(), count = 0, _self = this; - kity.Utils.each(fontList, function(fontInfo) { - count++; - fontInfo.meta.src = _self.resource + fontInfo.meta.src; - _self.createFontStyle(fontInfo); - preload(_self.doc, fontInfo, function() { - count--; - if (count === 0) { - complete(_self.doc, callback); - } - }); - }); - }, - createFontStyle: function(fontInfo) { - var stylesheet = this.doc.createElement("style"), tpl = '@font-face{\nfont-family: "${fontFamily}";\nsrc: url("${src}");\n}'; - stylesheet.setAttribute("type", "text/css"); - stylesheet.innerHTML = tpl.replace("${fontFamily}", fontInfo.meta.fontFamily).replace("${src}", fontInfo.meta.src); - this.doc.head.appendChild(stylesheet); - } - }); - function preload(doc, fontInfo, callback) { - $.get(fontInfo.meta.src, function(data, state) { - if (state === "success") { - applyFonts(doc, fontInfo); - } - callback(); - }); - } - function complete(doc, callback) { - window.setTimeout(function() { - initFontSystemInfo(doc); - removeTmpNode(); - callback(); - }, 100); - } - function applyFonts(doc, fontInfo) { - var node = document.createElement("div"), fontFamily = fontInfo.meta.fontFamily; - node.style.cssText = "position: absolute; top: -10000px; left: -100000px;"; - node.style.fontFamily = fontFamily; - node.innerHTML = CHAR_LIST.join(""); - doc.body.appendChild(node); - NODE_LIST.push(node); - } - /** - * 计算字体系统信息 - */ - function initFontSystemInfo(doc) { - var tmpNode = doc.createElement("div"); - tmpNode.style.cssText = "position: absolute; top: 0; left: -100000px;"; - tmpNode.innerHTML = _p.r(23).join(""); - doc.body.appendChild(tmpNode); - var rectBox = tmpNode.getElementsByTagName("text")[0].getBBox(); - // text实际占用空间 - FONT_CONF.spaceHeight = rectBox.height; - // text顶部空间 - FONT_CONF.topSpace = -rectBox.y - FONT_CONF.baseline; - FONT_CONF.bottomSpace = FONT_CONF.spaceHeight - FONT_CONF.topSpace - FONT_CONF.baseHeight; - // text偏移值 - FONT_CONF.offset = FONT_CONF.baseline + FONT_CONF.topSpace; - // baseline比例 - FONT_CONF.baselinePosition = (FONT_CONF.topSpace + FONT_CONF.baseline) / FONT_CONF.spaceHeight; - // meanline比例 - FONT_CONF.meanlinePosition = (FONT_CONF.topSpace + FONT_CONF.meanline) / FONT_CONF.spaceHeight; - // 上下延伸性比例 - FONT_CONF.ascenderPosition = FONT_CONF.topSpace / FONT_CONF.spaceHeight; - FONT_CONF.descenderPosition = (FONT_CONF.topSpace + FONT_CONF.baseHeight) / FONT_CONF.spaceHeight; - doc.body.removeChild(tmpNode); - } - function removeTmpNode() { - kity.Utils.each(NODE_LIST, function(node) { - node.parentNode.removeChild(node); - }); - NODE_LIST = []; - } - } -}; - -/*! - * 字体管理器 - */ -_p[25] = { - value: function(require) { - var FONT_LIST = {}, kity = _p.r(34), CONF = _p.r(47).font.list; - // init - (function() { - kity.Utils.each(CONF, function(fontData) { - FONT_LIST[fontData.meta.fontFamily] = fontData; - }); - })(); - return { - getFontList: function() { - return FONT_LIST; - }, - getCharacterValue: function(key, fontFamily) { - if (!FONT_LIST[fontFamily]) { - return null; - } - return FONT_LIST[fontFamily].map[key] || null; - } - }; - } -}; - -/*! - * 双线字体 - */ -_p[26] = { - value: function() { - return { - meta: { - fontFamily: "KF AMS BB", - src: "KF_AMS_BB.woff" - } - }; - } -}; - -/*! - * 手写体 - */ -_p[27] = { - value: function() { - return { - meta: { - fontFamily: "KF AMS CAL", - src: "KF_AMS_CAL.woff" - } - }; - } -}; - -/*! - * 花体 - */ -_p[28] = { - value: function() { - return { - meta: { - fontFamily: "KF AMS FRAK", - src: "KF_AMS_FRAK.woff" - } - }; - } -}; - -/*! - * 字体主文件 - */ -_p[29] = { - value: function() { - return { - meta: { - fontFamily: "KF AMS MAIN", - src: "KF_AMS_MAIN.woff" - }, - map: { - // char - Alpha: "Α", - Beta: "Β", - Gamma: "Γ", - Delta: "Δ", - Epsilon: "Ε", - Zeta: "Ζ", - Eta: "Η", - Theta: "Θ", - Iota: "Ι", - Kappa: "Κ", - Lambda: "Λ", - Mu: "Μ", - Nu: "Ν", - Xi: "Ξ", - Omicron: "Ο", - Pi: "Π", - Rho: "Ρ", - Sigma: "Σ", - Tau: "Τ", - Upsilon: "Υ", - Phi: "Φ", - Chi: "Χ", - Psi: "Ψ", - Omega: "Ω", - alpha: "α", - beta: "β", - gamma: "γ", - delta: "δ", - epsilon: "ε", - zeta: "ζ", - eta: "η", - theta: "θ", - iota: "ι", - kappa: "κ", - lambda: "λ", - mu: "μ", - nu: "ν", - xi: "ξ", - omicron: "ο", - pi: "π", - rho: "ρ", - sigma: "σ", - tau: "τ", - upsilon: "υ", - phi: "φ", - varkappa: "ϰ", - chi: "χ", - psi: "ψ", - omega: "ω", - digamma: "Ϝ", - varepsilon: "ϵ", - varrho: "ϱ", - varphi: "ϕ", - vartheta: "ϑ", - varpi: "ϖ", - varsigma: "Ϲ", - aleph: "ℵ", - beth: "ℶ", - daleth: "ℸ", - gimel: "ℷ", - eth: "ð", - hbar: "ℎ", - hslash: "ℏ", - mho: "℧", - partial: "∂", - wp: "℘", - Game: "⅁", - Bbbk: "⅌", - Finv: "Ⅎ", - Im: "ℑ", - Re: "ℜ", - complement: "∁", - ell: "ℓ", - circledS: "Ⓢ", - imath: "ı", - jmath: "ȷ", - // symbol - doublecap: "⋒", - Cap: "⋒", - doublecup: "⋓", - Cup: "⋓", - ast: "*", - divideontimes: "⋇", - rightthreetimes: "⋌", - leftthreetimes: "⋋", - cdot: "·", - odot: "⊙", - dotplus: "∔", - rtimes: "⋊", - ltimes: "⋉", - centerdot: "▪", - doublebarwedge: "⌭", - setminus: "⒁", - amalg: "∐", - circ: "◦", - bigcirc: "◯", - gtrdot: "⋗", - lessdot: "⋖", - smallsetminus: "⒅", - circledast: "⊛", - circledcirc: "⊚", - sqcap: "⊓", - sqcup: "⊔", - barwedge: "⊼", - circleddash: "⊝", - star: "⋆", - bigtriangledown: "▽", - bigtriangleup: "△", - cup: "∪", - cap: "∩", - times: "×", - mp: "∓", - pm: "±", - triangleleft: "⊲", - triangleright: "⊳", - boxdot: "⊡", - curlyvee: "⋏", - curlywedge: "⋎", - boxminus: "⊟", - boxtimes: "⊠", - ominus: "⊖", - oplus: "⊕", - oslash: "⊘", - otimes: "⊗", - uplus: "⊎", - boxplus: "⊞", - dagger: "†", - ddagger: "‡", - vee: "∨", - lor: "∨", - veebar: "⊻", - bullet: "•", - diamond: "⋄", - wedge: "∧", - land: "∧", - div: "÷", - wr: "≀", - geqq: "≧", - lll: "⋘", - llless: "⋘", - ggg: "⋙", - gggtr: "⋙", - preccurlyeq: "≼", - geqslant: "⩾", - lnapprox: "⪉", - preceq: "⪯", - gg: "≫", - lneq: "⪇", - precnapprox: "⪹", - approx: "≈", - lneqq: "≨", - precneqq: "⪵", - approxeq: "≊", - gnapprox: "⪊", - lnsim: "⋦", - precnsim: "⋨", - asymp: "≍", - gneq: "⪈", - lvertneqq: "⌮", - precsim: "≾", - backsim: "∽", - gneqq: "≩", - ncong: "≇", - risingdotseq: "≓", - backsimeq: "⋍", - gnsim: "⋧", - sim: "∼", - simeq: "≃", - bumpeq: "≏", - gtrapprox: "⪆", - ngeq: "≱", - Bumpeq: "≎", - gtreqless: "⋛", - ngeqq: "⌱", - succ: "≻", - circeq: "≗", - gtreqqless: "⪌", - ngeqslant: "⌳", - succapprox: "⪸", - cong: "≅", - gtrless: "≷", - ngtr: "≯", - succcurlyeq: "≽", - curlyeqprec: "⋞", - gtrsim: "≳", - nleq: "≰", - succeq: "⪰", - curlyeqsucc: "⋟", - gvertneqq: "⌯", - neq: "≠", - ne: "≠", - nequiv: "≢", - nleqq: "⌰", - succnapprox: "⪺", - doteq: "≐", - leq: "≤", - le: "≤", - nleqslant: "⌲", - succneqq: "⪶", - doteqdot: "≑", - Doteq: "≑", - leqq: "≦", - nless: "≮", - succnsim: "⋩", - leqslant: "⩽", - nprec: "⊀", - succsim: "≿", - eqsim: "≂", - lessapprox: "⪅", - npreceq: "⋠", - eqslantgtr: "⪖", - lesseqgtr: "⋚", - nsim: "≁", - eqslantless: "⪕", - lesseqqgtr: "⪋", - nsucc: "⊁", - triangleq: "≜", - eqcirc: "≖", - equiv: "≡", - lessgtr: "≶", - nsucceq: "⋡", - fallingdotseq: "≒", - lesssim: "≲", - prec: "≺", - geq: "≥", - ge: "≥", - ll: "≪", - precapprox: "⪷", - // arrows - uparrow: "↑", - downarrow: "↓", - updownarrow: "↕", - Uparrow: "⇑", - Downarrow: "⇓", - Updownarrow: "⇕", - circlearrowleft: "↺", - circlearrowright: "↻", - curvearrowleft: "↶", - curvearrowright: "↷", - downdownarrows: "⇊", - downharpoonleft: "⇃", - downharpoonright: "⇂", - leftarrow: "←", - gets: "←", - Leftarrow: "⇐", - leftarrowtail: "↢", - leftharpoondown: "↽", - leftharpoonup: "↼", - leftleftarrows: "⇇", - leftrightarrow: "↔", - Leftrightarrow: "⇔", - leftrightarrows: "⇄", - leftrightharpoons: "⇋", - leftrightsquigarrow: "↭", - Lleftarrow: "⇚", - looparrowleft: "↫", - looparrowright: "↬", - multimap: "⊸", - nLeftarrow: "⇍", - nRightarrow: "⇏", - nLeftrightarrow: "⇎", - nearrow: "↗", - nleftarrow: "↚", - nleftrightarrow: "↮", - nrightarrow: "↛", - nwarrow: "↖", - rightarrow: "→", - to: "→", - Rightarrow: "⇒", - rightarrowtail: "↣", - rightharpoondown: "⇁", - rightharpoonup: "⇀", - rightleftarrows: "⇆", - rightleftharpoons: "⇌", - rightrightarrows: "⇉", - rightsquigarrow: "⇝", - Rrightarrow: "⇛", - searrow: "↘", - swarrow: "↙", - twoheadleftarrow: "↞", - twoheadrightarrow: "↠", - upharpoonleft: "↿", - upharpoonright: "↾", - restriction: "↾", - upuparrows: "⇈", - Lsh: "↰", - Rsh: "↱", - longleftarrow: "⟵", - longrightarrow: "⟶", - Longleftarrow: "⟸", - Longrightarrow: "⟹", - implies: "⟹", - longleftrightarrow: "⟷", - Longleftrightarrow: "⟺", - // relation - backepsilon: "∍", - because: "∵", - therefore: "∴", - between: "≬", - blacktriangleleft: "◀", - blacktriangleright: "▸", - dashv: "⊣", - bowtie: "⋈", - frown: "⌢", - "in": "∈", - notin: "∉", - mid: "∣", - parallel: "∥", - models: "⊨", - ni: "∋", - owns: "∋", - nmid: "∤", - nparallel: "∦", - nshortmid: "⏒", - nshortparallel: "⏓", - nsubseteq: "⊈", - nsubseteqq: "⫇", - nsupseteq: "⊉", - nsupseteqq: "⫈", - ntriangleleft: "⋪", - ntrianglelefteq: "⋬", - ntriangleright: "⋫", - ntrianglerighteq: "⋭", - nvdash: "⊬", - nVdash: "⊮", - nvDash: "⊭", - nVDash: "⊯", - perp: "⊥", - pitchfork: "⋔", - propto: "∝", - shortmid: "⏐", - shortparallel: "⏑", - smile: "⌣", - sqsubset: "⊏", - sqsubseteq: "⊑", - sqsupset: "⊐", - sqsupseteq: "⊒", - subset: "⊂", - Subset: "⋐", - subseteq: "⊆", - subseteqq: "⫅", - subsetneq: "⊊", - subsetneqq: "⫋", - supset: "⊃", - Supset: "⋑", - supseteq: "⊇", - supseteqq: "⫆", - supsetneq: "⊋", - supsetneqq: "⫌", - trianglelefteq: "⊴", - trianglerighteq: "⊵", - varpropto: "⫉", - varsubsetneq: "⏔", - varsubsetneqq: "⏖", - varsupsetneq: "⏕", - varsupsetneqq: "⏗", - vdash: "⊢", - Vdash: "⊩", - vDash: "⊨", - Vvdash: "⊪", - vert: "|", - Vert: "ǁ", - "|": "ǁ", - "{": "{", - "}": "}", - backslash: "\\", - langle: "〈", - rangle: "〉", - lceil: "⌈", - rceil: "⌉", - lbrace: "{", - rbrace: "}", - lfloor: "⌊", - rfloor: "⌋", - cdots: "⋯", - ddots: "⋰", - vdots: "⋮", - dots: "…", - ldots: "…", - "#": "#", - bot: "⊥", - angle: "∠", - backprime: "‵", - bigstar: "★", - blacklozenge: "◆", - blacksquare: "■", - blacktriangle: "▲", - blacktriangledown: "▼", - clubsuit: "♣", - diagdown: "⒁", - diagup: "⒂", - diamondsuit: "♢", - emptyset: "ø", - exists: "∃", - flat: "♭", - forall: "∀", - heartsuit: "♡", - infty: "∞", - lozenge: "◇", - measuredangle: "∡", - nabla: "∇", - natural: "♮", - neg: "¬", - lnot: "¬", - nexists: "∄", - prime: "′", - sharp: "♯", - spadesuit: "♠", - sphericalangle: "∢", - surd: "√", - top: "⊤", - varnothing: "∅", - triangle: "△", - triangledown: "▽" - } - }; - } -}; - -/*! - * 罗马字体 - */ -_p[30] = { - value: function() { - return { - meta: { - fontFamily: "KF AMS ROMAN", - src: "KF_AMS_ROMAN.woff" - } - }; - } -}; - -/** - * 公式对象,表达式容器 - */ -_p[31] = { - value: function(require) { - var kity = _p.r(34), GTYPE = _p.r(6), FontManager = _p.r(25), FontInstaller = _p.r(24), DEFAULT_OPTIONS = { - fontsize: 50, - autoresize: true, - padding: [ 0 ] - }, Output = _p.r(1), EXPRESSION_INTERVAL = 10, ExpressionWrap = kity.createClass("ExpressionWrap", { - constructor: function(exp, config) { - this.wrap = new kity.Group(); - this.bg = new kity.Rect(0, 0, 0, 0).fill("transparent"); - this.exp = exp; - this.config = config; - this.wrap.setAttr("data-type", "kf-exp-wrap"); - this.bg.setAttr("data-type", "kf-exp-wrap-bg"); - this.wrap.addShape(this.bg); - this.wrap.addShape(this.exp); - }, - getWrapShape: function() { - return this.wrap; - }, - getExpression: function() { - return this.exp; - }, - getBackground: function() { - return this.bg; - }, - resize: function() { - var padding = this.config.padding, expBox = this.exp.getFixRenderBox(); - if (padding.length === 1) { - padding[1] = padding[0]; - } - this.bg.setSize(padding[1] * 2 + expBox.width, padding[0] * 2 + expBox.height); - this.exp.translate(padding[1], padding[0]); - } - }), Formula = kity.createClass("Formula", { - base: _p.r(32), - constructor: function(container, config) { - this.callBase(container); - this.expressions = []; - this.fontInstaller = new FontInstaller(this); - this.config = kity.Utils.extend({}, DEFAULT_OPTIONS, config); - this.initEnvironment(); - this.initInnerFont(); - }, - getContentContainer: function() { - return this.container; - }, - initEnvironment: function() { - this.zoom = this.config.fontsize / 50; - if ("width" in this.config) { - this.setWidth(this.config.width); - } - if ("height" in this.config) { - this.setHeight(this.config.height); - } - this.node.setAttribute("font-size", DEFAULT_OPTIONS.fontsize); - }, - initInnerFont: function() { - var fontList = FontManager.getFontList(), _self = this; - kity.Utils.each(fontList, function(fontInfo) { - createFontStyle(fontInfo); - }); - function createFontStyle(fontInfo) { - var stylesheet = _self.doc.createElement("style"), tpl = '@font-face{font-family: "${fontFamily}";font-style: normal;src: url("${src}") format("woff");}'; - stylesheet.setAttribute("type", "text/css"); - stylesheet.innerHTML = tpl.replace("${fontFamily}", fontInfo.meta.fontFamily).replace("${src}", fontInfo.meta.src); - _self.resourceNode.appendChild(stylesheet); - } - }, - insertExpression: function(expression, index) { - var expWrap = this.wrap(expression); - // clear zoom - this.container.clearTransform(); - this.expressions.splice(index, 0, expWrap.getWrapShape()); - this.addShape(expWrap.getWrapShape()); - notifyExpression.call(this, expWrap.getExpression()); - expWrap.resize(); - correctOffset.call(this); - this.resetZoom(); - this.config.autoresize && this.resize(); - }, - appendExpression: function(expression) { - this.insertExpression(expression, this.expressions.length); - }, - resize: function() { - var renderBox = this.container.getRenderBox("paper"); - this.node.setAttribute("width", renderBox.width); - this.node.setAttribute("height", renderBox.height); - }, - resetZoom: function() { - var zoomLevel = this.zoom / this.getBaseZoom(); - if (zoomLevel !== 0) { - this.container.scale(zoomLevel); - } - }, - wrap: function(exp) { - return new ExpressionWrap(exp, this.config); - }, - clear: function() { - this.callBase(); - this.expressions = []; - }, - clearExpressions: function() { - kity.Utils.each(this.expressions, function(exp) { - exp.remove(); - }); - this.expressions = []; - }, - toJPG: function(cb) { - new Output(this).toJPG(cb); - }, - toPNG: function(cb) { - new Output(this).toPNG(cb); - } - }); - kity.Utils.extend(Formula, { - registerFont: function(fontData) { - FontManager.registerFont(fontData); - } - }); - // 调整表达式之间的偏移 - function correctOffset() { - var exprOffset = 0; - kity.Utils.each(this.expressions, function(expr) { - var box = null; - if (!expr) { - return; - } - expr.setMatrix(new kity.Matrix(1, 0, 0, 1, 0, 0)); - box = expr.getFixRenderBox(); - expr.translate(0 - box.x, exprOffset); - exprOffset += box.height + EXPRESSION_INTERVAL; - }); - return this; - } - // 通知表达式已接入到paper - function notifyExpression(expression) { - var len = 0; - if (!expression) { - return; - } - if (expression.getType() === GTYPE.EXP) { - for (var i = 0, len = expression.getChildren().length; i < len; i++) { - notifyExpression(expression.getChild(i)); - } - } else if (expression.getType() === GTYPE.COMPOUND_EXP) { - // 操作数处理 - for (var i = 0, len = expression.getOperands().length; i < len; i++) { - notifyExpression(expression.getOperand(i)); - } - // 处理操作符 - notifyExpression(expression.getOperator()); - } - expression.addedCall && expression.addedCall(); - } - return Formula; - } -}; - -/** - * 公式专用paper - */ -_p[32] = { - value: function(require) { - var kity = _p.r(34); - return kity.createClass("FPaper", { - base: kity.Paper, - constructor: function(container) { - this.callBase(container); - this.doc = container.ownerDocument; - this.container = new kity.Group(); - this.container.setAttr("data-type", "kf-container"); - this.background = new kity.Group(); - this.background.setAttr("data-type", "kf-bg"); - this.baseZoom = 1; - this.zoom = 1; - this.base("addShape", this.background); - this.base("addShape", this.container); - }, - getZoom: function() { - return this.zoom; - }, - getBaseZoom: function() { - return this.baseZoom; - }, - addShape: function(shape, pos) { - return this.container.addShape(shape, pos); - }, - getBackground: function() { - return this.background; - }, - removeShape: function(pos) { - return this.container.removeShape(pos); - }, - clear: function() { - return this.container.clear(); - } - }); - } -}; - -/** - * jquery - */ -_p[33] = { - value: function() { - if (!window.jQuery) { - throw new Error("Missing jQuery"); - } - return window.jQuery; - } -}; - -/** - * kity库封包 - */ -_p[34] = { - value: function() { - if (!window.kity) { - throw new Error("Missing Kity Graphic Lib"); - } - return window.kity; - } -}; - -/** - * 小括号操作符:() - */ -_p[35] = { - value: function(require) { - var kity = _p.r(34), Text = _p.r(5); - return kity.createClass("BracketsOperator", { - base: _p.r(41), - constructor: function() { - this.callBase("Brackets"); - }, - applyOperand: function(exp) { - generate.call(this, exp); - } - }); - function generate(exp) { - var left = this.getParentExpression().getLeftSymbol(), right = this.getParentExpression().getRightSymbol(), fontSize = exp.getFixRenderBox().height, group = new kity.Group(), offset = 0, leftOp = new Text(left, "KF AMS MAIN").fill("black"), rightOp = new Text(right, "KF AMS MAIN").fill("black"); - leftOp.setFontSize(fontSize); - rightOp.setFontSize(fontSize); - this.addOperatorShape(group.addShape(leftOp).addShape(rightOp)); - offset += leftOp.getFixRenderBox().width; - exp.translate(offset, 0); - offset += exp.getFixRenderBox().width; - rightOp.translate(offset, 0); - } - } -}; - -/** - * 组合操作符 - * 操作多个表达式组合在一起 - */ -_p[36] = { - value: function(require) { - var kity = _p.r(34); - return kity.createClass("CombinationOperator", { - base: _p.r(41), - constructor: function() { - this.callBase("Combination"); - }, - applyOperand: function() { - // 偏移量 - var offsetX = 0, // 操作数 - operands = arguments, // 操作对象最大高度 - maxHeight = 0, // 垂直距离最大偏移 - maxOffsetTop = 0, maxOffsetBottom = 0, cached = [], // 偏移集合 - offsets = []; - kity.Utils.each(operands, function(operand) { - var box = operand.getFixRenderBox(), offsetY = operand.getOffset(); - box.height -= offsetY.top + offsetY.bottom; - cached.push(box); - offsets.push(offsetY); - maxOffsetTop = Math.max(offsetY.top, maxOffsetTop); - maxOffsetBottom = Math.max(offsetY.bottom, maxOffsetBottom); - maxHeight = Math.max(box.height, maxHeight); - }); - kity.Utils.each(operands, function(operand, index) { - var box = cached[index]; - operand.translate(offsetX - box.x, (maxHeight - (box.y + box.height)) / 2 + maxOffsetBottom - offsets[index].bottom); - offsetX += box.width; - }); - this.parentExpression.setOffset(maxOffsetTop, maxOffsetBottom); - this.parentExpression.updateBoxSize(); - } - }); - } -}; - -/*! - * 上下标控制器 - */ -_p[37] = { - value: function(require) { - var kity = _p.r(34), EmptyExpression = _p.r(20), defaultOptions = { - subOffset: 0, - supOffset: 0, - // 上下标的默认缩放值 - zoom: .66 - }; - return kity.createClass("ScriptController", { - constructor: function(opObj, target, sup, sub, options) { - this.observer = opObj.getParentExpression(); - this.target = target; - this.sup = sup; - this.sub = sub; - this.options = kity.Utils.extend({}, defaultOptions, options); - }, - // 上下标记 - applyUpDown: function() { - var target = this.target, sup = this.sup, sub = this.sub, options = this.options; - sup.scale(options.zoom); - sub.scale(options.zoom); - var targetBox = target.getFixRenderBox(); - if (EmptyExpression.isEmpty(sup) && EmptyExpression.isEmpty(sub)) { - return { - width: targetBox.width, - height: targetBox.height, - top: 0, - bottom: 0 - }; - } else { - // 上标 - if (!EmptyExpression.isEmpty(sup) && EmptyExpression.isEmpty(sub)) { - return this.applyUp(target, sup); - } else if (EmptyExpression.isEmpty(sup) && !EmptyExpression.isEmpty(sub)) { - return this.applyDown(target, sub); - } else { - return this.applyUpDownScript(target, sup, sub); - } - } - }, - /** - * 返回应用上下标后的空间占用情况,其中的key各自的意义是: - * top: 上空间偏移 - * bottom: 下空间偏移 - * width: 当前整个图形的实际占用空间的width - * height: 当前整个图形的实际占用空间的height - * @returns {*} - */ - applySide: function() { - var target = this.target, sup = this.sup, sub = this.sub; - if (EmptyExpression.isEmpty(sup) && EmptyExpression.isEmpty(sub)) { - var targetRectBox = target.getRenderBox(this.observer); - return { - width: targetRectBox.width, - height: targetRectBox.height, - top: 0, - bottom: 0 - }; - } else { - // 下标处理 - if (EmptyExpression.isEmpty(sup) && !EmptyExpression.isEmpty(sub)) { - return this.applySideSub(target, sub); - } else if (!EmptyExpression.isEmpty(sup) && EmptyExpression.isEmpty(sub)) { - return this.applySideSuper(target, sup); - } else { - return this.applySideScript(target, sup, sub); - } - } - }, - applySideSuper: function(target, sup) { - sup.scale(this.options.zoom); - var targetRectBox = target.getRenderBox(this.observer), supRectBox = sup.getRenderBox(this.observer), targetMeanline = target.getMeanline(this.observer), supBaseline = sup.getBaseline(this.observer), positionline = targetMeanline, diff = supBaseline - positionline, space = { - top: 0, - bottom: 0, - width: targetRectBox.width + supRectBox.width, - height: targetRectBox.height - }; - sup.translate(targetRectBox.width, 0); - if (this.options.supOffset) { - sup.translate(this.options.supOffset, 0); - } - if (diff > 0) { - target.translate(0, diff); - space.bottom = diff; - space.height += diff; - } else { - sup.translate(0, -diff); - } - return space; - }, - applySideSub: function(target, sub) { - sub.scale(this.options.zoom); - var targetRectBox = target.getRenderBox(this.observer), subRectBox = sub.getRenderBox(this.observer), subOffset = sub.getOffset(), targetBaseline = target.getBaseline(this.observer), // 下标定位线 - subPosition = (subRectBox.height + subOffset.top + subOffset.bottom) / 2, diff = targetRectBox.height - targetBaseline - subPosition, space = { - top: 0, - bottom: 0, - width: targetRectBox.width + subRectBox.width, - height: targetRectBox.height - }; - // 定位下标位置 - sub.translate(targetRectBox.width, subOffset.top + targetBaseline - subPosition); - if (this.options.subOffset) { - sub.translate(this.options.subOffset, 0); - } - if (diff < 0) { - space.top = -diff; - space.height -= diff; - } - return space; - }, - applySideScript: function(target, sup, sub) { - sup.scale(this.options.zoom); - sub.scale(this.options.zoom); - var targetRectBox = target.getRenderBox(this.observer), subRectBox = sub.getRenderBox(this.observer), supRectBox = sup.getRenderBox(this.observer), targetMeanline = target.getMeanline(this.observer), targetBaseline = target.getBaseline(this.observer), supBaseline = sup.getBaseline(this.observer), // 上下标都存在时, 下标的定位以上伸线为准 - subAscenderline = sub.getAscenderline(this.observer), supPosition = targetMeanline, subPosition = targetMeanline + (targetBaseline - targetMeanline) * 2 / 3, topDiff = supPosition - supBaseline, bottomDiff = targetRectBox.height - subPosition - (subRectBox.height - subAscenderline), space = { - top: 0, - bottom: 0, - width: targetRectBox.width + Math.max(subRectBox.width, supRectBox.width), - height: targetRectBox.height - }; - sup.translate(targetRectBox.width, topDiff); - sub.translate(targetRectBox.width, subPosition - subAscenderline); - if (this.options.supOffset) { - sup.translate(this.options.supOffset, 0); - } - if (this.options.subOffset) { - sub.translate(this.options.subOffset, 0); - } - // 定位纠正 - if (topDiff > 0) { - if (bottomDiff < 0) { - targetRectBox.height -= bottomDiff; - space.top = -bottomDiff; - } - } else { - target.translate(0, -topDiff); - sup.translate(0, -topDiff); - sub.translate(0, -topDiff); - space.height -= topDiff; - if (bottomDiff > 0) { - space.bottom = -topDiff; - } else { - space.height -= bottomDiff; - // 比较上下偏移, 获取正确的偏移值 - topDiff = -topDiff; - bottomDiff = -bottomDiff; - if (topDiff > bottomDiff) { - space.bottom = topDiff - bottomDiff; - } else { - space.top = bottomDiff - topDiff; - } - } - } - return space; - }, - applyUp: function(target, sup) { - var supBox = sup.getFixRenderBox(), targetBox = target.getFixRenderBox(), space = { - width: Math.max(targetBox.width, supBox.width), - height: supBox.height + targetBox.height, - top: 0, - bottom: supBox.height - }; - sup.translate((space.width - supBox.width) / 2, 0); - target.translate((space.width - targetBox.width) / 2, supBox.height); - return space; - }, - applyDown: function(target, sub) { - var subBox = sub.getFixRenderBox(), targetBox = target.getFixRenderBox(), space = { - width: Math.max(targetBox.width, subBox.width), - height: subBox.height + targetBox.height, - top: subBox.height, - bottom: 0 - }; - sub.translate((space.width - subBox.width) / 2, targetBox.height); - target.translate((space.width - targetBox.width) / 2, 0); - return space; - }, - applyUpDownScript: function(target, sup, sub) { - var supBox = sup.getFixRenderBox(), subBox = sub.getFixRenderBox(), targetBox = target.getFixRenderBox(), space = { - width: Math.max(targetBox.width, supBox.width, subBox.width), - height: supBox.height + subBox.height + targetBox.height, - top: 0, - bottom: 0 - }; - sup.translate((space.width - supBox.width) / 2, 0); - target.translate((space.width - targetBox.width) / 2, supBox.height); - sub.translate((space.width - subBox.width) / 2, supBox.height + targetBox.height); - return space; - } - }); - } -}; - -/** - * 分数操作符 - */ -_p[38] = { - value: function(require) { - var kity = _p.r(34), ZOOM = _p.r(47).zoom; - return kity.createClass("FractionOperator", { - base: _p.r(41), - constructor: function() { - this.callBase("Fraction"); - }, - applyOperand: function(upOperand, downOperand) { - upOperand.scale(ZOOM); - downOperand.scale(ZOOM); - var upWidth = Math.ceil(upOperand.getWidth()), downWidth = Math.ceil(downOperand.getWidth()), upHeight = Math.ceil(upOperand.getHeight()), downHeight = Math.ceil(downOperand.getHeight()), // 分数线overflow值 - overflow = 3, // 整体padding - padding = 1, maxWidth = Math.max(upWidth, downWidth), maxHeight = Math.max(upHeight, downHeight), operatorShape = generateOperator(maxWidth, overflow); - this.addOperatorShape(operatorShape); - upOperand.translate((maxWidth - upWidth) / 2 + overflow, 0); - operatorShape.translate(0, upHeight + 1); - // 下部不需要偏移 - downOperand.translate((maxWidth - downWidth) / 2 + overflow, upHeight + operatorShape.getHeight() + 1 * 2); - this.parentExpression.setOffset(maxHeight - upHeight, maxHeight - downHeight); - this.parentExpression.expand(padding * 2, padding * 2); - this.parentExpression.translateElement(padding, padding); - } - }); - function generateOperator(width, overflow) { - return new kity.Rect(width + overflow * 2, 1).fill("black"); - } - } -}; - -/** - * 函数操作符 - */ -_p[39] = { - value: function(require) { - var kity = _p.r(34), Text = _p.r(5), ScriptController = _p.r(37); - return kity.createClass("FunctionOperator", { - base: _p.r(41), - constructor: function(funcName) { - this.callBase("Function: " + funcName); - this.funcName = funcName; - }, - /* - * 积分操作符应用操作数 - * @param expr 函数表达式 - * @param sup 上限 - * @param sub 下限 - */ - applyOperand: function(expr, sup, sub) { - var opShape = generateOperator.call(this), expBox = expr.getFixRenderBox(), scriptHanlder = this.parentExpression.isSideScript() ? "applySide" : "applyUpDown", space = new ScriptController(this, opShape, sup, sub, { - zoom: .5 - })[scriptHanlder](), padding = 5, diff = (space.height + space.top + space.bottom - expBox.height) / 2; - // 应用偏移, 使图形在正确的位置上 - opShape.translate(0, space.top); - sup.translate(0, space.top); - sub.translate(0, space.top); - if (diff >= 0) { - expr.translate(space.width + padding, diff); - } else { - diff = -diff; - opShape.translate(0, diff); - sup.translate(0, diff); - sub.translate(0, diff); - expr.translate(space.width + padding, 0); - } - // 只扩展左边, 不扩展右边, 所以padding不 *2 - this.parentExpression.expand(padding, padding * 2); - this.parentExpression.translateElement(padding, padding); - } - }); - /* 返回操作符对象 */ - function generateOperator() { - var opShape = new Text(this.funcName, "KF AMS ROMAN"); - this.addOperatorShape(opShape); - // 为操作符图形创建baseline和meanline方法 - opShape.getBaseline = function() { - return opShape.getFixRenderBox().height; - }; - opShape.getMeanline = function() { - return 0; - }; - return opShape; - } - } -}; - -/** - * 积分操作符:∫ - */ -_p[40] = { - value: function(require) { - var kity = _p.r(34), ScriptController = _p.r(37); - return kity.createClass("IntegrationOperator", { - base: _p.r(41), - constructor: function(type) { - this.callBase("Integration"); - // 默认是普通单重积分 - this.opType = type || 1; - }, - setType: function(type) { - this.opType = type | 0; - }, - // 重置类型 - resetType: function() { - this.opType = 1; - }, - applyOperand: function(exp, sup, sub) { - var opShape = this.getOperatorShape(), padding = 3, expBox = exp.getFixRenderBox(), space = new ScriptController(this, opShape, sup, sub, { - supOffset: 3, - subOffset: -15 - }).applySide(), diff = (space.height + space.top - expBox.height) / 2; - opShape.translate(0, space.top); - sup.translate(0, space.top); - sub.translate(0, space.top); - if (diff >= 0) { - exp.translate(space.width + padding, diff); - } else { - diff = -diff; - opShape.translate(0, diff); - sup.translate(0, diff); - sub.translate(0, diff); - exp.translate(space.width + padding, 0); - } - this.parentExpression.expand(padding, padding * 2); - this.parentExpression.translateElement(padding, padding); - }, - getOperatorShape: function() { - var pathData = "M1.318,48.226c0,0,0.044,0.066,0.134,0.134c0.292,0.313,0.626,0.447,1.006,0.447c0.246,0.022,0.358-0.044,0.604-0.268 c0.782-0.782,1.497-2.838,2.324-6.727c0.514-2.369,0.938-4.693,1.586-8.448C8.559,24.068,9.9,17.878,11.978,9.52 c0.917-3.553,1.922-7.576,3.866-8.983C16.247,0.246,16.739,0,17.274,0c1.564,0,2.503,1.162,2.592,2.57 c0,0.827-0.424,1.386-1.273,1.386c-0.671,0-1.229-0.514-1.229-1.251c0-0.805,0.514-1.095,1.185-1.274 c0.022,0-0.291-0.29-0.425-0.379c-0.201-0.134-0.514-0.224-0.737-0.224c-0.067,0-0.112,0-0.157,0.022 c-0.469,0.134-0.983,0.939-1.453,2.234c-0.537,1.475-0.961,3.174-1.631,6.548c-0.424,2.101-0.693,3.464-1.229,6.727 c-1.608,9.185-2.949,15.487-5.006,23.756c-0.514,2.034-0.849,3.24-1.207,4.335c-0.559,1.698-1.162,2.95-1.811,3.799 c-0.514,0.715-1.385,1.408-2.436,1.408c-1.363,0-2.391-1.185-2.458-2.592c0-0.804,0.447-1.363,1.273-1.363 c0.671,0,1.229,0.514,1.229,1.251C2.503,47.757,1.989,48.047,1.318,48.226z", group = new kity.Group(), opGroup = new kity.Group(), opShape = new kity.Path(pathData).fill("black"), opBox = new kity.Rect(0, 0, 0, 0).fill("transparent"), tmpShape = null; - opGroup.addShape(opShape); - group.addShape(opBox); - group.addShape(opGroup); - this.addOperatorShape(group); - for (var i = 1; i < this.opType; i++) { - tmpShape = new kity.Use(opShape).translate(opShape.getWidth() / 2 * i, 0); - opGroup.addShape(tmpShape); - } - opGroup.scale(1.6); - tmpShape = null; - // 为操作符图形创建baseline和meanline方法 - group.getBaseline = function() { - return opGroup.getFixRenderBox().height; - }; - group.getMeanline = function() { - return 10; - }; - return group; - } - }); - } -}; - -/** - * 操作符抽象类 - * @abstract - */ -_p[41] = { - value: function(require) { - var kity = _p.r(34), GTYPE = _p.r(6); - return kity.createClass("Operator", { - base: _p.r(46), - constructor: function(operatorName) { - this.callBase(); - this.type = GTYPE.OP; - // 该操作符所属的表达式 - this.parentExpression = null; - // 操作符名称 - this.operatorName = operatorName; - // 操作符图形 - this.operatorShape = new kity.Group(); - this.addShape(this.operatorShape); - }, - applyOperand: function() { - throw new Error("applyOperand is abstract"); - }, - setParentExpression: function(exp) { - this.parentExpression = exp; - }, - getParentExpression: function() { - return this.parentExpression; - }, - clearParentExpression: function() { - this.parentExpression = null; - }, - // 提供给具体实现类附加其绘制的操作符图形的接口 - addOperatorShape: function(shpae) { - return this.operatorShape.addShape(shpae); - }, - getOperatorShape: function() { - return this.operatorShape; - } - }); - } -}; - -/** - * 开方操作符 - */ -_p[42] = { - value: function(require) { - var kity = _p.r(34), // 符号图形属性 - // 线条宽度 - SHAPE_DATA_WIDTH = 1, // 计算公式 - radians = 2 * Math.PI / 360, sin15 = Math.sin(15 * radians), cos15 = Math.cos(15 * radians), tan15 = Math.tan(15 * radians); - return kity.createClass("RadicalOperator", { - base: _p.r(41), - constructor: function() { - this.callBase("Radical"); - }, - applyOperand: function(radicand, exponent) { - generateOperator.call(this, radicand, exponent); - } - }); - // 根据给定的操作数生成操作符的pathData - // radicand 表示被开方数 - // exponent 表示指数 - function generateOperator(radicand, exponent) { - var decoration = generateDecoration(radicand), vLine = generateVLine(radicand), padding = 5, hLine = generateHLine(radicand); - this.addOperatorShape(decoration); - this.addOperatorShape(vLine); - this.addOperatorShape(hLine); - adjustmentPosition.call(this, mergeShape(decoration, vLine, hLine), this.operatorShape, radicand, exponent); - this.parentExpression.expand(0, padding * 2); - this.parentExpression.translateElement(0, padding); - } - // 生成根号中的左边装饰部分 - function generateDecoration(radicand) { - var shape = new kity.Path(), // 命名为a以便于精简表达式 - a = SHAPE_DATA_WIDTH, h = radicand.getHeight() / 3, drawer = shape.getDrawer(); - // 根号尾部左上角开始 - drawer.moveTo(0, cos15 * a * 6); - drawer.lineBy(sin15 * a, cos15 * a); - drawer.lineBy(cos15 * a * 3, -sin15 * a * 3); - drawer.lineBy(tan15 * h, h); - drawer.lineBy(sin15 * a * 3, -cos15 * a * 3); - drawer.lineBy(-sin15 * h, -h); - drawer.close(); - return shape.fill("black"); - } - // 根据操作数生成根号的竖直线部分 - function generateVLine(operand) { - var shape = new kity.Path(), // * 0.9 是为了在视觉上使斜线部分不至于太高 - h = operand.getHeight() * .9, drawer = shape.getDrawer(); - drawer.moveTo(tan15 * h, 0); - drawer.lineTo(0, h); - drawer.lineBy(sin15 * SHAPE_DATA_WIDTH * 3, cos15 * SHAPE_DATA_WIDTH * 3); - drawer.lineBy(tan15 * h + sin15 * SHAPE_DATA_WIDTH * 3, -(h + 3 * SHAPE_DATA_WIDTH * cos15)); - drawer.close(); - return shape.fill("black"); - } - // 根据操作数生成根号的水平线部分 - function generateHLine(operand) { - // 表达式宽度 - var w = operand.getWidth() + 2 * SHAPE_DATA_WIDTH; - return new kity.Rect(w, 2 * SHAPE_DATA_WIDTH).fill("black"); - } - // 合并根号的各个部分, 并返回根号的关键点位置数据 - function mergeShape(decoration, vLine, hLine) { - var decoBox = decoration.getFixRenderBox(), vLineBox = vLine.getFixRenderBox(); - vLine.translate(decoBox.width - sin15 * SHAPE_DATA_WIDTH * 3, 0); - decoration.translate(0, vLineBox.height - decoBox.height); - vLineBox = vLine.getFixRenderBox(); - hLine.translate(vLineBox.x + vLineBox.width - SHAPE_DATA_WIDTH / cos15, 0); - // 返回关键点数据 - return { - x: vLineBox.x + vLineBox.width - SHAPE_DATA_WIDTH / cos15, - y: 0 - }; - } - // 调整整个根号表达式的各个部分: 位置、操作符、被开方数、指数 - function adjustmentPosition(position, operator, radicand, exponent) { - var exponentBox = null, opOffset = { - x: 0, - y: 0 - }, opBox = operator.getFixRenderBox(); - exponent.scale(.66); - exponentBox = exponent.getFixRenderBox(); - if (exponentBox.width > 0 && exponentBox.height > 0) { - opOffset.y = exponentBox.height - opBox.height / 2; - // 指数不超出根号, 则移动指数 - if (opOffset.y < 0) { - exponent.translate(0, -opOffset.y); - opOffset.y = 0; - } - opOffset.x = exponentBox.width + opBox.height / 2 * tan15 - position.x; - } - operator.translate(opOffset.x, opOffset.y); - radicand.translate(opOffset.x + position.x + SHAPE_DATA_WIDTH, opOffset.y + 2 * SHAPE_DATA_WIDTH); - } - } -}; - -/** - * 上下标操作符 - */ -_p[43] = { - value: function(require) { - var kity = _p.r(34), ScriptController = _p.r(37); - return kity.createClass("ScriptOperator", { - base: _p.r(41), - constructor: function(operatorName) { - this.callBase(operatorName || "Script"); - }, - applyOperand: function(operand, sup, sub) { - var padding = 1, parent = this.parentExpression, space = new ScriptController(this, operand, sup, sub).applySide(); - this.getOperatorShape(); - space && parent.setOffset(space.top, space.bottom); - parent.expand(4, padding * 2); - parent.translateElement(2, padding); - } - }); - } -}; - -/** - * 求和操作符:∑ - */ -_p[44] = { - value: function(require) { - var kity = _p.r(34), ScriptController = _p.r(37); - return kity.createClass("SummationOperator", { - base: _p.r(41), - constructor: function() { - this.callBase("Summation"); - this.displayType = "equation"; - }, - applyOperand: function(expr, sup, sub) { - var opShape = this.getOperatorShape(), expBox = expr.getFixRenderBox(), padding = 0, space = new ScriptController(this, opShape, sup, sub).applyUpDown(), diff = (space.height - space.top - space.bottom - expBox.height) / 2; - if (diff >= 0) { - expr.translate(space.width + padding, diff + space.bottom); - } else { - diff = -diff; - opShape.translate(0, diff); - sup.translate(0, diff); - sub.translate(0, diff); - expr.translate(space.width + padding, space.bottom); - } - this.parentExpression.setOffset(space.top, space.bottom); - this.parentExpression.expand(padding, padding * 2); - this.parentExpression.translateElement(padding, padding); - }, - getOperatorShape: function() { - var pathData = "M0.672,33.603c-0.432,0-0.648,0-0.648-0.264c0-0.024,0-0.144,0.24-0.432l12.433-14.569L0,0.96c0-0.264,0-0.72,0.024-0.792 C0.096,0.024,0.12,0,0.672,0h28.371l2.904,6.745h-0.6C30.531,4.8,28.898,3.72,28.298,3.336c-1.896-1.2-3.984-1.608-5.28-1.8 c-0.216-0.048-2.4-0.384-5.617-0.384H4.248l11.185,15.289c0.168,0.24,0.168,0.312,0.168,0.36c0,0.12-0.048,0.192-0.216,0.384 L3.168,31.515h14.474c4.608,0,6.96-0.624,7.464-0.744c2.76-0.72,5.305-2.352,6.241-4.848h0.6l-2.904,7.681H0.672z", operatorShape = new kity.Path(pathData).fill("black"), opBgShape = new kity.Rect(0, 0, 0, 0).fill("transparent"), group = new kity.Group(), opRenderBox = null; - group.addShape(opBgShape); - group.addShape(operatorShape); - operatorShape.scale(1.6); - this.addOperatorShape(group); - opRenderBox = operatorShape.getFixRenderBox(); - if (this.displayType === "inline") { - operatorShape.translate(5, 15); - opBgShape.setSize(opRenderBox.width + 10, opRenderBox.height + 25); - } else { - operatorShape.translate(2, 5); - opBgShape.setSize(opRenderBox.width + 4, opRenderBox.height + 8); - } - return group; - } - }); - } -}; - -/*! - * 资源管理器 - * 负责管理资源的加载,并在资源ready之后提供Formula构造器 - */ -_p[45] = { - value: function(require) { - var kity = _p.r(34), cbList = [], RES_CONF = _p.r(47).resource, FontInstall = _p.r(24), Formula = _p.r(31), // 资源管理器就绪状态 - __readyState = false, // 资源管理器是否已启动 - inited = false; - return { - // 初始化 - ready: function(cb, options) { - if (!inited) { - inited = true; - init(options); - } - if (__readyState) { - window.setTimeout(function() { - cb(Formula); - }, 0); - } else { - cbList.push(cb); - } - } - }; - /** - * 资源初始化 - */ - function init(options) { - options = kity.Utils.extend({}, RES_CONF, options); - if (!/^(https?:)?\/\//.test(options.path)) { - options.path = getFullPath(options.path); - } - new FontInstall(document, options.path).mount(complete); - } - function complete() { - kity.Utils.each(cbList, function(cb) { - cb(Formula); - }); - } - function getFullPath(path) { - var pathname = location.pathname.split("/"), pathPart; - pathname.length -= 1; - pathname = pathname.join("/") + "/"; - pathPart = [ location.protocol, "//", location.host, pathname, path.replace(/^\//, "") ]; - return pathPart.join(""); - } - } -}; - -/*! - * 所有符号的基类 - * @abstract - */ -_p[46] = { - value: function(require) { - var kity = _p.r(34), GTYPE = _p.r(6); - return kity.createClass("SignGroup", { - base: kity.Group, - constructor: function() { - this.callBase(); - this.box = new kity.Rect(0, 0, 0, 0); - this.type = GTYPE.UNKNOWN; - this.addShape(this.box); - this.zoom = 1; - }, - setZoom: function(zoom) { - this.zoom = zoom; - }, - getZoom: function() { - return this.zoom; - }, - setBoxSize: function(w, h) { - return this.box.setSize(w, h); - }, - setBoxWidth: function(w) { - return this.box.setWidth(w); - }, - setBoxHeight: function(h) { - return this.box.setHeight(h); - }, - getType: function() { - return this.type; - }, - getBaseHeight: function() { - return this.getHeight(); - }, - getBaseWidth: function() { - return this.getWidth(); - }, - addedCall: function() {} - }); - } -}; - -/*! - * 系统项目配置文件. - */ -_p[47] = { - value: function(require) { - return { - zoom: .66, - font: { - meanline: Math.round(380 / 1e3 * 50), - baseline: Math.round(800 / 1e3 * 50), - baseHeight: 50, - // 系统字体列表 - list: [ _p.r(29), _p.r(27), _p.r(28), _p.r(26), _p.r(30) ] - }, - /*------------------------- 资源配置*/ - resource: { - path: "src/resource/" - }, - // 函数相关配置 - func: { - // 上下标在函数名上下两侧的函数列表 - "ud-script": { - lim: true - } - } - }; - } -}; - -/*! - * 启动代码 - */ -_p[48] = { - value: function(require) { - window.kf = { - // base - ResourceManager: _p.r(45), - Operator: _p.r(41), - // expression - Expression: _p.r(21), - CompoundExpression: _p.r(19), - TextExpression: _p.r(22), - EmptyExpression: _p.r(20), - CombinationExpression: _p.r(12), - FunctionExpression: _p.r(14), - FractionExpression: _p.r(13), - IntegrationExpression: _p.r(15), - RadicalExpression: _p.r(16), - ScriptExpression: _p.r(17), - SuperscriptExpression: _p.r(9), - SubscriptExpression: _p.r(8), - SummationExpression: _p.r(18), - // Brackets expressoin - BracketsExpression: _p.r(11) - }; - } -}; - -var moduleMapping = { - "kf.start": 48 -}; - -function use(name) { - _p.r([ moduleMapping[name] ]); -} -/** - * 模块暴露 - */ - -( function ( global ) { - - var oldGetRenderBox = kity.Shape.getRenderBox; - - kity.extendClass(kity.Shape, { - getFixRenderBox: function () { - return this.getRenderBox( this.container.container ); - }, - - getTranslate: function () { - return this.transform.translate; - } - }); - - // build环境中才含有use - try { - use( 'kf.start' ); - } catch ( e ) { - } - -} )( this ); -})(); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kityformula-editor.all.min.js b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kityformula-editor.all.min.js deleted file mode 100644 index 332ca58..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kityformula-editor.all.min.js +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * ==================================================== - * Kity Formula Editor - v1.0.0 - 2014-09-03 - * https://github.com/kitygraph/formula - * GitHub: https://github.com/kitygraph/formula.git - * Copyright (c) 2014 Baidu Kity Group; Licensed MIT - * ==================================================== - */ -!function(){function a(a){b.r([c[a]])}var b={r:function(a){if(b[a].inited)return b[a].value;if("function"!=typeof b[a].value)return b[a].inited=!0,b[a].value;var c={exports:{}},d=b[a].value(null,c.exports,c);if(b[a].inited=!0,b[a].value=d,void 0!==d)return d;for(var e in c.exports)if(c.exports.hasOwnProperty(e))return b[a].inited=!0,b[a].value=c.exports,c.exports}};b[0]={value:function(){function a(d,e,f,g){return g=0|g,g>b?f:(g++,c.each(f,function(b,f){d?!b||"object"!=typeof b&&"function"!=typeof b?e[f]=b:(e[f]=e[f]||(c.isArray(b)?[]:{}),e[f]=a(d,e[f],b,g)):e[f]=b}),e)}var b=10,c={extend:function(b,d){var e=!1;if("boolean"==typeof b?(e=b,b=d,d=[].splice.call(arguments,2)):d=[].splice.call(arguments,1),!b)throw new Error("Utils: extend, target can not be empty");return c.each(d,function(c){(c&&"object"==typeof c||"function"==typeof c)&&a(e,b,c)}),b},contains:function(a,b){return a.contains?a.contains(b):a.compareDocumentPosition?!!(16&a.compareDocumentPosition(b)):void 0},getRect:function(a){return a.getBoundingClientRect()},isArray:function(a){return a&&"[object Array]"==={}.toString.call(a)},isString:function(a){return"string"==typeof a},proxy:function(a,b){return function(){return a.apply(b,arguments)}},each:function(a,b){if(a)if("length"in a&&"number"==typeof a.length)for(var c=0,d=a.length;d>c&&b.call(null,a[c],c,a)!==!1;c++);else for(var e in a)if(a.hasOwnProperty(e)&&b.call(null,a[e],e,a)===!1)break}};return c}},b[1]={value:function(){var a=b.r(20);return a.createClass("Component",{constructor:function(){}})}},b[2]={value:function(){function a(){return++d}var c={},d=0,e=!0,f=b.r(3),g=b.r(0),h=function(a){var b=a.type,d=a.target,f=this.__kfe_eid,h=/^(?:before|after)/.test(b),j=c[f][b];return h||(i.trigger(d,"before"+b),e!==!1)?(g.each(j,function(b){return b&&b.call(d,a)===!1?e=!1:void 0}),void(h||i.trigger(d,"after"+b))):(e=!0,!1)},i={addEvent:function(b,d,e){var f=!0,g=null;b.__kfe_eid||(f=!1,b.__kfe_eid=a(),c[b.__kfe_eid]={}),g=c[b.__kfe_eid],g[d]||(f=!1,g[d]=[]),g[d].push(e),f||b.addEventListener(d,h,!1)},trigger:function(a,b,c){c=c||f.createEvent(b,c),a.dispatchEvent(c)}};return i}},b[3]={value:function(){return{createEvent:function(a){var b=document.createEvent("Event");return b.initEvent(a,!0,!0),b}}}},b[4]={value:function(){var a={},c=b.r(0);return c.extend(a,c,b.r(2)),a}},b[5]={value:function(){var a=b.r(20),c=b.r(8),d=a.createClass("ControllerComponent",{constructor:function(a){this.kfEditor=a,this.components={},this.initComponents()},initComponents:function(){this.components.listener=new c(this,this.kfEditor)}});return d}},b[6]={value:function(){var a={32:"\\,","s+219":"\\{","s+221":"\\}",220:"\\backslash","s+51":"\\#","s+52":"\\$","s+53":"\\%","s+54":"\\^","s+55":"\\&","s+189":"\\_","s+192":"\\~"};return{getReplaceString:function(b){return a[b]||null}}}},b[7]={value:function(){var a=b.r(20),c=b.r(4),d=b.r(6),e={LEFT:37,RIGHT:39,DELETE:8,INPUT:229};return a.createClass("InputComponent",{constructor:function(a,b){this.parentComponent=a,this.kfEditor=b,this.inputBox=this.createInputBox(),this.initServices(),this.initCommands(),this.initEvent()},initServices:function(){this.kfEditor.registerService("control.update.input",this,{updateInput:this.updateInput}),this.kfEditor.registerService("control.insert.string",this,{insertStr:this.insertStr})},initCommands:function(){this.kfEditor.registerCommand("focus",this,this.focus)},createInputBox:function(){var a=this.kfEditor.getContainer(),b=this.kfEditor.getDocument().createElement("input");return b.className="kf-editor-input-box",b.type="text",b.isTrusted=!1,a.appendChild(b),b},focus:function(){var a=null;this.inputBox.focus(),this.kfEditor.requestService("syntax.has.cursor.info")||(a=this.kfEditor.requestService("syntax.get.root.group.info"),this.kfEditor.requestService("syntax.update.record.cursor",{groupId:a.id,startOffset:0,endOffset:a.content.length}),this.kfEditor.requestService("control.update.input")),this.kfEditor.requestService("control.reselect")},setUntrusted:function(){this.inputBox.isTrusted=!1},setTrusted:function(){this.inputBox.isTrusted=!0},updateInput:function(){var a=this.kfEditor.requestService("syntax.serialization");this.setUntrusted(),this.inputBox.value=a.str,this.inputBox.selectionStart=a.startOffset,this.inputBox.selectionEnd=a.endOffset,this.inputBox.focus(),this.setTrusted()},insertStr:function(a){var b=this.kfEditor.requestService("syntax.serialization"),c=b.str;c=c.substring(0,b.startOffset)+" "+a+" "+c.substring(b.endOffset),this.restruct(c),this.updateInput(),this.kfEditor.requestService("ui.update.canvas.view")},initEvent:function(){var a=this;c.addEvent(this.inputBox,"keydown",function(b){var c=!1;if(b.ctrlKey)return void a.processUserCtrl(b);switch(b.keyCode){case e.INPUT:return;case e.LEFT:b.preventDefault(),a.leftMove(),c=!0;break;case e.RIGHT:b.preventDefault(),a.rightMove(),c=!0;break;case e.DELETE:b.preventDefault(),a.delete(),c=!0}c&&a.kfEditor.requestService("ui.update.canvas.view"),a.pretreatmentInput(b)||b.preventDefault()}),c.addEvent(this.inputBox,"input",function(){a.processingInput()}),c.addEvent(this.inputBox,"blur",function(){a.kfEditor.requestService("ui.toolbar.disable"),a.kfEditor.requestService("ui.toolbar.close"),a.kfEditor.requestService("control.cursor.hide"),a.kfEditor.requestService("render.clear.select")}),c.addEvent(this.inputBox,"focus",function(){a.kfEditor.requestService("ui.toolbar.enable"),this.isTrusted&&a.kfEditor.requestService("control.reselect")}),c.addEvent(this.inputBox,"paste",function(a){a.preventDefault()})},hasRootplaceholder:function(){return this.kfEditor.requestService("syntax.has.root.placeholder")},leftMove:function(){this.hasRootplaceholder()||(this.kfEditor.requestService("syntax.cursor.move.left"),this.update())},rightMove:function(){this.hasRootplaceholder()||(this.kfEditor.requestService("syntax.cursor.move.right"),this.update())},"delete":function(){var a=null;this.hasRootplaceholder()||(a=this.kfEditor.requestService("syntax.delete.group"),a?(this.updateInput(),this.processingInput()):(this.updateInput(),this.kfEditor.requestService("control.reselect")))},processUserCtrl:function(a){switch(a.preventDefault(),a.keyCode){case 65:this.kfEditor.requestService("control.select.all");break;case 83:this.kfEditor.requestService("print.image")}},pretreatmentInput:function(a){var b=this.getKeyCode(a),c=d.getReplaceString(b);return null===c?!0:(this.insertStr(c),!1)},getKeyCode:function(a){return(a.shiftKey?"s+":"")+a.keyCode},processingInput:function(){this.restruct(this.inputBox.value),this.kfEditor.requestService("ui.update.canvas.view")},restruct:function(a){this.kfEditor.requestService("render.draw",a),this.kfEditor.requestService("control.reselect")},update:function(){this.updateInput(),this.kfEditor.requestService("control.reselect")}})}},b[8]={value:function(){var a=b.r(20),c=b.r(9),d=b.r(7),e=b.r(10);return a.createClass("MoveComponent",{constructor:function(a,b){this.parentComponent=a,this.kfEditor=b,this.components={},this.initComponents()},initComponents:function(){this.components.location=new c(this,this.kfEditor),this.components.selection=new e(this,this.kfEditor),this.components.input=new d(this,this.kfEditor)}})}},b[9]={value:function(){function a(a){return a.getBoundingClientRect()}var c=b.r(20);return c.createClass("LocationComponent",{constructor:function(a,b){this.parentComponent=a,this.kfEditor=b,this.paper=this.getPaper(),this.cursorShape=this.createCursor(),this.initServices(),this.initEvent()},getPaper:function(){return this.kfEditor.requestService("render.get.paper")},initServices:function(){this.kfEditor.registerService("control.cursor.relocation",this,{relocationCursor:this.updateCursor}),this.kfEditor.registerService("control.cursor.hide",this,{hideCursor:this.hideCursor}),this.kfEditor.registerService("control.reselect",this,{reselect:this.reselect}),this.kfEditor.registerService("control.get.cursor.location",this,{getCursorLocation:this.getCursorLocation})},createCursor:function(){var a=new c.Rect(1,0,0,0).fill("black");return a.setAttr("style","display: none"),this.paper.addShape(a),a},initEvent:function(){var a=this.kfEditor.request("ui.canvas.container.event"),b=this;a.on("mousedown",function(a){a.preventDefault(),b.updateCursorInfo(a),b.kfEditor.requestService("control.update.input"),b.reselect()})},updateCursorInfo:function(a){var b=null,c=null,d=-1;return this.kfEditor.requestService("syntax.has.root.placeholder")?(this.kfEditor.requestService("syntax.update.record.cursor",{groupId:this.kfEditor.requestService("syntax.get.root.group.info").id,startOffset:0,endOffset:1}),!1):(b=this.kfEditor.requestService("position.get.wrap",a.target),b&&this.kfEditor.requestService("syntax.is.placeholder.node",b.id)?(c=this.kfEditor.requestService("position.get.group.info",b),void this.kfEditor.requestService("syntax.update.record.cursor",c.group.id,c.index,c.index+1)):(c=this.kfEditor.requestService("position.get.group",a.target),null===c&&(c=this.kfEditor.requestService("syntax.get.root.group.info")),d=this.getIndex(a.clientX,c),void this.kfEditor.requestService("syntax.update.record.cursor",c.id,d)))},hideCursor:function(){this.cursorShape.setAttr("style","display: none")},reselect:function(){var a=this.kfEditor.requestService("syntax.get.record.cursor"),b=null;return this.hideCursor(),this.kfEditor.requestService("syntax.is.select.placeholder")?(b=this.kfEditor.requestService("syntax.get.group.content",a.groupId),void this.kfEditor.requestService("render.select.group",b.content[a.startOffset].id)):void(a.startOffset===a.endOffset?(this.updateCursor(),this.kfEditor.requestService("render.tint.current.cursor")):this.kfEditor.requestService("render.select.current.cursor"))},updateCursor:function(){var b=this.kfEditor.requestService("syntax.get.record.cursor");if(b.startOffset!==b.endOffset)return void this.hideCursor();var c=this.kfEditor.requestService("syntax.get.group.content",b.groupId),d=0===b.endOffset,e=d?0:b.endOffset-1,f=c.content[e],g=a(this.paper.container.node),h=0,i=a(f),j=this.cursorShape.getTransform(this.cursorShape),k=this.kfEditor.requestService("render.get.canvas.zoom"),l=this.paper.getZoom();this.cursorShape.setHeight(i.height/k/l),h=d?i.left-2:i.left+i.width-2,h-=g.left,j.m.e=Math.floor(h/k/l)+.5,j.m.f=(i.top-g.top)/k/l,this.cursorShape.setMatrix(j),this.cursorShape.setAttr("style","display: block")},getCursorLocation:function(){var a=this.cursorShape.getRenderBox("paper");return{x:a.x,y:a.y}},getIndex:function(b,c){for(var d=-1,e=c.content,f=null,g=e.length-1,h=null;g>=0;g--)if(d=g,h=e[g],f=a(h),f.leftthis.startPoint.x,e={},f=null,g=!1,h=this.startGroup,i=null,j=this.getGroupInof(b,a);j.groupInfo.id===h.groupInfo.id?(e={groupId:j.groupInfo.id,startOffset:h.offset,endOffset:j.offset},this.startGroupIsPlaceholder&&(d?e.startOffset===e.endOffset&&(e.endOffset+=1):e.startOffset+=1)):c.contains(h.groupInfo.groupObj,j.groupInfo.groupObj)?e={groupId:h.groupInfo.id,startOffset:h.offset,endOffset:this.getIndex(h.groupInfo.groupObj,a,b)}:c.contains(j.groupInfo.groupObj,h.groupInfo.groupObj)?(e={groupId:j.groupInfo.id,startOffset:this.kfEditor.requestService("position.get.index",j.groupInfo.groupObj,h.groupInfo.groupObj),endOffset:j.offset},d||(e.startOffset+=1)):(f=this.getCommunityGroup(h.groupInfo,j.groupInfo),f.startOffset===f.endOffset?f.endOffset+=1:(i=f.group.content[f.endOffset],g=this.kfEditor.requestService("position.get.area",i,b),g&&(f.endOffset+=1),d||(f.startOffset+=1)),e={groupId:f.group.id,startOffset:f.startOffset,endOffset:f.endOffset}),this.kfEditor.requestService("syntax.update.record.cursor",e.groupId,e.startOffset,e.endOffset),this.kfEditor.requestService("control.reselect")},updateSelectionByTarget:function(a){var b=this.kfEditor.requestService("position.get.parent.group",a),c=null,d={};if(null!==b){if(this.kfEditor.requestService("syntax.is.root.node",b.id))return void this.selectAll();this.kfEditor.requestService("syntax.is.virtual.node",b.id)?(c=this.kfEditor.requestService("position.get.group.info",b.groupObj),d={groupId:c.group.id,startOffset:c.index,endOffset:c.index+1}):d={groupId:b.id,startOffset:0,endOffset:b.content.length},this.kfEditor.requestService("syntax.update.record.cursor",d),this.kfEditor.requestService("control.reselect"),this.kfEditor.requestService("control.update.input")}},selectAll:function(){var a=this.kfEditor.requestService("syntax.get.root.group.info"),b={groupId:a.id,startOffset:0,endOffset:a.content.length};this.kfEditor.requestService("syntax.update.record.cursor",b),this.kfEditor.requestService("control.reselect"),this.kfEditor.requestService("control.update.input")},getGroupInof:function(a,b){var c=this.kfEditor.requestService("position.get.group",b);null===c&&(c=this.kfEditor.requestService("syntax.get.root.group.info"));var d=this.kfEditor.requestService("position.get.location.info",a,c);return{groupInfo:c,offset:d}},getIndex:function(a,b,d){var e=this.kfEditor.requestService("position.get.index",a,b),f=this.kfEditor.requestService("syntax.get.group.content",a.id),g=f.content[e],h=c.getRect(g);return h.left+h.width/2k;k++)i=b.operand[k],h(b)?e(a,k,b,i):f(a,k,b,i);return b}function c(){return q+ ++s}function d(a,b){a.isResetId?b.attr["data-root"]="true":b.attr["data-type"]=r.VIRTUAL}function e(b,c,d,e){"brackets"===d.name&&2>c||("function"!==d.name||0!==c)&&(d.attr["data-type"]=r.VIRTUAL,e?"string"==typeof e?(d.operand[c]=j(b),d.operand[c].operand[0]=e):i(e)?(d.operand[c]=j(b),d.operand[c].operand[0]=a(b,e,d.operand[c])):d.operand[c]=a(b,e,d):d.operand[c]=e)}function f(b,c,d,e){d.attr["data-type"]=r.GROUP,d.operand[c]=e&&"string"!=typeof e?"text"===e.name?e:a(b,e,d):e}function g(a){var b=1;if(a.length>3)return!1;for(var c=0,d=a.length;d>c;c++)a[c]!==m&&a[c]&&"placeholder"===a[c].name&&b--;return!b}function h(a){return!!n[a.name]}function i(a){return"placeholder"===a.name}function j(a){return{name:p,attr:{"data-type":r.GROUP,id:a.getGroupId()},operand:[]}}var k=b.r(19).Parser,l=b.r(20),m=b.r(29).cursorCharacter,n=b.r(22),o=b.r(29).rootPlaceholder.content,p="combination",q="_kf_editor_",r=b.r(11),s=0,t=l.createClass("Parser",{constructor:function(a){this.kfEditor=a,this.callBase(),this.kfParser=k.use("latex"),this.initKFormulExtension(),this.pid=c(),this.groupRecord=0,this.tree=null,this.isResetId=!0,this.initServices()},parse:function(b,c){var d=null;return this.isResetId=!!c,this.isResetId&&this.resetGroupId(),d=this.kfParser.parse(b),a(this,d.tree),d},serialization:function(a){return this.kfParser.serialization(a)},initServices:function(){this.kfEditor.registerService("parser.parse",this,{parse:this.parse}),this.kfEditor.registerService("parser.latex.serialization",this,{serialization:this.serialization})},getKFParser:function(){return this.kfParser},initKFormulExtension:function(){b.r(17).ext(this)},resetGroupId:function(){this.groupRecord=0},getGroupId:function(){return this.pid+"_"+ ++this.groupRecord}});return t}},b[22]={value:function(){return{radical:!0,fraction:!0,summation:!0,integration:!0,placeholder:!0,script:!0,superscript:!0,subscript:!0,brackets:!0,"function":!0}}},b[23]={value:function(){function a(b,c,d){var e=null;return b.ownerSVGElement?(b=b.parentNode,e=b.tagName.toLowerCase(),b&&"body"!==e&&"svg"!==e?"kf-editor-group"===b.getAttribute("data-type")?b:c&&"kf-editor-virtual-group"===b.getAttribute("data-type")?b:d&&null!==b.getAttribute("data-flag")?b:a(b,c,d):null):null}var c=b.r(20),d=b.r(4),e=c.createClass("PositionComponenet",{constructor:function(a){this.kfEditor=a,this.initServices()},initServices:function(){this.kfEditor.registerService("position.get.group",this,{getGroupByTarget:this.getGroupByTarget}),this.kfEditor.registerService("position.get.index",this,{getIndexByTargetInGroup:this.getIndexByTargetInGroup}),this.kfEditor.registerService("position.get.location.info",this,{getLocationInfo:this.getLocationInfo}),this.kfEditor.registerService("position.get.parent.group",this,{getParentGroupByTarget:this.getParentGroupByTarget}),this.kfEditor.registerService("position.get.wrap",this,{getWrap:this.getWrap}),this.kfEditor.registerService("position.get.area",this,{getAreaByCursorInGroup:this.getAreaByCursorInGroup}),this.kfEditor.registerService("position.get.group.info",this,{getGroupInfoByNode:this.getGroupInfoByNode}),this.kfEditor.registerService("position.get.parent.info",this,{getParentInfoByNode:this.getParentInfoByNode})},getGroupByTarget:function(b){var c=a(b,!1,!1);return c?this.kfEditor.requestService("syntax.get.group.content",c.id):null},getIndexByTargetInGroup:function(a,b){var e=this.kfEditor.requestService("syntax.get.group.content",a.id),f=-1;return c.Utils.each(e.content,function(a,c){return f=c,d.contains(a,b)?!1:void 0}),f},getAreaByCursorInGroup:function(a,b){var c=d.getRect(a);return c.left+c.width/2=0;g--)if(c=g,h=e[g],f=d.getRect(h),f.leftg&&(c.index=g,!d.contains(f.content[g],b));g++);return c.group=f,c},getParentInfoByNode:function(b){var c=a(b,!0,!1);return c=this.kfEditor.requestService("syntax.get.group.content",c.id),{group:c,index:c.content.indexOf(b)}}});return e}},b[24]={value:function(){var a=b.r(20);return a.createClass("Printer",{constructor:function(a){this.kfEditor=a,this.initServices(),this.initCommands()},initServices:function(){this.kfEditor.registerService("print.image",this,{printImage:this.printImage})},initCommands:function(){this.kfEditor.registerCommand("get.image.data",this,this.getImageData)},printImage:function(){var a=this.kfEditor.requestService("render.get.paper");this._formatCanvas(),a.toPNG(function(a){document.body.innerHTML=''}),this._restoreCanvas()},getImageData:function(a){var b=this.kfEditor.requestService("render.get.canvas"),c=this.kfEditor.requestService("render.get.paper");this._formatCanvas(),c.toPNG(function(c){a({width:b.width,height:b.height,img:c})}),this._restoreCanvas()},_formatCanvas:function(){var a=this.kfEditor.requestService("render.get.canvas"),b=a.container.getRenderBox();a.node.setAttribute("width",b.width),a.node.setAttribute("height",b.height),this.kfEditor.requestService("render.clear.canvas.transform"),this.kfEditor.requestService("control.cursor.hide"),this.kfEditor.requestService("render.clear.select")},_restoreCanvas:function(){var a=this.kfEditor.requestService("render.get.canvas");a.node.setAttribute("width","100%"),a.node.setAttribute("height","100%"),this.kfEditor.requestService("render.revert.canvas.transform"),this.kfEditor.requestService("control.cursor.relocation"),this.kfEditor.requestService("render.reselect")}})}},b[25]={value:function(){var a=b.r(20),c=b.r(19).Assembly,d={autoresize:!1,fontsize:50,padding:[20,50]},e=a.createClass("RenderComponent",{base:b.r(1),constructor:function(b,c){this.callBase(),this.options=a.Utils.extend({},d,c),this.kfEditor=b,this.assembly=null,this.formula=null,this.relDisabled=!1,this.canvasZoom=1,this.record={select:{},cursor:{},canvas:{}},this.initCanvas(),this.initServices(),this.initCommands()},initCanvas:function(){var a=this.kfEditor.requestService("ui.get.canvas.container"),b=this.kfEditor.getFormulaClass();this.assembly=new c(new b(a,this.options)),this.formula=this.assembly.formula,this.setCanvasToCenter()},setCanvasOffset:function(a,b){var c=this.formula.getViewBox();b=void 0!==b?b:-c.height/2,this.formula.setViewBox(a,b,c.width,c.height)},setCanvasToCenter:function(){var a=this.formula.getViewBox();this.formula.setViewBox(-a.width/2,-a.height/2,a.width,a.height)},initServices:function(){this.kfEditor.registerService("render.get.canvas",this,{getCanvas:this.getCanvas}),this.kfEditor.registerService("render.get.content.size",this,{getContentSize:this.getContentSize}),this.kfEditor.registerService("render.clear.canvas.transform",this,{clearCanvasOffset:this.clearCanvasTransform}),this.kfEditor.registerService("render.set.canvas.offset",this,{setCanvasOffset:this.setCanvasOffset}),this.kfEditor.registerService("render.set.canvas.to.center",this,{setCanvasToCenter:this.setCanvasToCenter}),this.kfEditor.registerService("render.revert.canvas.transform",this,{revertCanvasTransform:this.revertCanvasTransform}),this.kfEditor.registerService("render.relocation",this,{relocation:this.relocation}),this.kfEditor.registerService("render.disable.relocation",this,{disableRelocation:this.disableRelocation}),this.kfEditor.registerService("render.enable.relocation",this,{enableRelocation:this.enableRelocation}),this.kfEditor.registerService("render.select.group.content",this,{selectGroupContent:this.selectGroupContent}),this.kfEditor.registerService("render.select.group",this,{selectGroup:this.selectGroup}),this.kfEditor.registerService("render.select.group.all",this,{selectAllGroup:this.selectAllGroup}),this.kfEditor.registerService("render.tint.current.cursor",this,{tintCurrentGroup:this.tintCurrentGroup}),this.kfEditor.registerService("render.select.current.cursor",this,{selectCurrentCursor:this.selectCurrentCursor}),this.kfEditor.registerService("render.reselect",this,{reselect:this.reselect}),this.kfEditor.registerService("render.clear.select",this,{clearSelect:this.clearSelect}),this.kfEditor.registerService("render.set.canvas.zoom",this,{setCanvasZoom:this.setCanvasZoom}),this.kfEditor.registerService("render.get.canvas.zoom",this,{getCanvasZoom:this.getCanvasZoom}),this.kfEditor.registerService("render.get.paper.offset",this,{getPaperOffset:this.getPaperOffset}),this.kfEditor.registerService("render.draw",this,{render:this.render}),this.kfEditor.registerService("render.insert.string",this,{insertString:this.insertString}),this.kfEditor.registerService("render.insert.group",this,{insertGroup:this.insertGroup}),this.kfEditor.registerService("render.get.paper",this,{getPaper:this.getPaper})},initCommands:function(){this.kfEditor.registerCommand("render",this,function(a){this.render(a),this.kfEditor.requestService("ui.update.canvas.view")}),this.kfEditor.registerCommand("getPaper",this,this.getPaper)},relocation:function(){this.relDisabled?this.relocationToLeft():this.relocationToCenter()},relocationToCenter:function(){var a=this.formula.container.getRenderBox();this.formula.container.setTranslate(-a.width/2,-a.height/2),this.setCanvasToCenter()},relocationToLeft:function(){var a=this.formula.container.getRenderBox();this.formula.container.setTranslate(0,-a.height/2),this.setCanvasOffset(0)},selectGroup:function(a){var b=this.kfEditor.requestService("syntax.get.group.object",a);this.clearSelect(),b.node.getAttribute("data-root")||(this.record.select.lastSelect=b,b.select())},selectGroupContent:function(a){null!==a.groupObj.getAttribute("data-placeholder")&&(a={id:a.content[0].id});var b=this.kfEditor.requestService("syntax.get.group.object",a.id);this.clearSelect(),this.record.select.lastSelect=b,b.node.getAttribute("data-root")||b.select()},selectAllGroup:function(a){null!==a.groupObj.getAttribute("data-placeholder")&&(a={id:a.content[0].id});var b=this.kfEditor.requestService("syntax.get.group.object",a.id);this.clearSelect(),this.record.select.lastSelect=b,b.selectAll()},selectCurrentCursor:function(){var a=this.kfEditor.requestService("syntax.get.record.cursor"),b=this.kfEditor.requestService("syntax.get.group.object",a.groupId),c=null,d=-1,e=0,f=Math.min(a.startOffset,a.endOffset),g=Math.max(a.startOffset,a.endOffset);this.clearSelect(),this.record.select.lastSelect=b;for(var h=f,i=g;i>h;h++)c=b.getOperand(h).getRenderBox(b),-1==d&&(d=c.x),e+=c.width;b.setBoxWidth(e),b.selectAll(),b.getBox().setTranslate(d,0)},tintCurrentGroup:function(){var a=this.kfEditor.requestService("syntax.get.record.cursor").groupId,b=this.kfEditor.requestService("syntax.get.group.object",a),c=this.kfEditor.requestService("syntax.is.placeholder.node",a);this.clearSelect(),b.node.getAttribute("data-root")||(c&&(b=this.kfEditor.requestService("syntax.get.group.object",b.operands[0].node.id)),this.record.select.lastSelect=b,b.select())},reselect:function(){var a=this.kfEditor.requestService("syntax.get.record.cursor"),b=null;b=this.kfEditor.requestService("syntax.get.group.object",a.groupId),this.clearSelect(),this.record.select.lastSelect=b,b.node.getAttribute("data-root")||b.select() -},clearSelect:function(){var a=null,b=this.record.select.lastSelect;b&&b.node.ownerSVGElement&&(b.unselect(),a=b.getRenderBox(b),b.setBoxWidth(a.width),b.getBox().setTranslate(0,0))},getPaper:function(){return this.formula},render:function(a){var b=this.kfEditor.requestService("parser.parse",a,!0),c=this.assembly.regenerateBy(b);this.kfEditor.requestService("syntax.update.objtree",c)},enableRelocation:function(){this.relDisabled=!1},disableRelocation:function(){this.relDisabled=!0},setCanvasZoom:function(a){var b=this.formula.getViewPort();this.canvasZoom=a,b.zoom=a,this.formula.setViewPort(b)},getCanvas:function(){return this.formula},getContentSize:function(){return this.formula.container.getRenderBox()},clearCanvasTransform:function(){var a=this.record.canvas;a.viewBox=this.formula.getViewBox(),a.contentOffset=this.formula.container.getTranslate(),this.setCanvasToCenter(),this.formula.node.removeAttribute("viewBox"),this.formula.container.setTranslate(0,0)},revertCanvasTransform:function(){var a=this.record.canvas,b=a.viewBox;return b?(this.formula.setViewBox(b.x,b.y,b.width,b.height),this.formula.container.setTranslate(a.contentOffset),a.viewBox=null,void(a.contentOffset=null)):!1},getCanvasZoom:function(){return this.canvasZoom}});return e}},b[26]={value:function(){var a=b.r(20);return a.createClass("DeleteComponent",{constructor:function(a,b){this.parentComponent=a,this.kfEditor=b},deleteGroup:function(){var a=this.parentComponent.getCursorRecord(),b=this.parentComponent.getObjectTree(),c=b.mapping[a.groupId].strGroup;return a.startOffset!==a.endOffset?this.parentComponent.isSelectPlaceholder()?this.parentComponent.isRootTree(c)?!1:(a=this.selectParentContainer(a.groupId),this.parentComponent.updateCursor(a),!1):this.deleteSelection(c,a):0===a.startOffset?this.parentComponent.isRootTree(c)?!1:(a=this.selectParentContainer(a.groupId),this.parentComponent.updateCursor(a),!1):c.operand.length>1?(a=this.deletePrevGroup(c,a),this.parentComponent.updateCursor(a),a.startOffset===a.endOffset?!0:!1):(a.startOffset=0,a.endOffset=1,c.operand[0].attr&&this.parentComponent.isGroupNode(c.operand[0].attr.id)?(this.parentComponent.updateCursor(a),!1):(c.operand[0]={name:"placeholder",operand:[]},this.parentComponent.updateCursor(a),!0))},deletePrevGroup:function(a,b){var c=b.startOffset-1,d=a.operand[c];return this.parentComponent.isLeafTree(d)?(a.operand.splice(c,1),b.startOffset-=1,b.endOffset-=1):b.startOffset-=1,b},deleteSelection:function(a,b){return 0===b.startOffset&&b.endOffset===a.operand.length?(a.operand.length=1,a.operand[0]={name:"placeholder",operand:[]},b.endOffset=1):(a.operand.splice(b.startOffset,b.endOffset-b.startOffset),b.endOffset=b.startOffset),this.parentComponent.updateCursor(b),!0},selectParentContainer:function(a){var b=this.parentComponent.getGroupObject(a).node,c=this.kfEditor.requestService("position.get.group",b),d=this.kfEditor.requestService("position.get.index",c.groupObj,b);return{groupId:c.id,startOffset:d,endOffset:d+1}}})}},b[27]={value:function(){function a(a){var b=null,c=this.parentComponent,f=null;return f=c.getGroupContent(a.groupId),c.isSelectPlaceholder()?e(this,f.content[a.startOffset],p.LEFT):(a.startOffset===a.endOffset?a.startOffset>0?(b=f.content[a.startOffset-1],l(b)?a=d(this,b,p.LEFT):(a.startOffset-=1,m(b)||(a.endOffset=a.startOffset))):a=e(this,f.groupObj,p.LEFT):(a.startOffset=Math.min(a.startOffset,a.endOffset),a.endOffset=a.startOffset),a)}function c(a){var b=null,c=this.parentComponent,f=null;return f=c.getGroupContent(a.groupId),c.isSelectPlaceholder()?e(this,f.content[a.startOffset],p.RIGHT):(a.startOffset===a.endOffset?a.startOffset1)return{groupId:d.group.id,startOffset:0,endOffset:0};d=c.requestService("position.get.parent.info",d.group.groupObj)}return k(d.group.groupObj)?{groupId:d.group.id,startOffset:d.index,endOffset:d.index}:(b=d.group.content[d.index-1],l(b)?k(b)?f(a,b):f(a,b):n(b)?g(a,b):{groupId:d.group.id,startOffset:d.index,endOffset:d.index})}function h(a,b){var c=a.parentComponent,d=null,e=null;if(l(b)){if(d=c.getGroupContent(b.id),e=d.content[0],k(b))return k(e)?h(a,e):m(e)?{groupId:b.id,startOffset:0,endOffset:1}:{groupId:b.id,startOffset:0,endOffset:0};for(;!k(e)&&!m(e)&&!n(e);)d=c.getGroupContent(e.id),e=d.content[0];return m(e)?{groupId:e.id,startOffset:0,endOffset:0}:n(e)?i(a,e):h(a,e)}return null}function i(a,b){var c=a.kfEditor,d=a.parentComponent,e=null,f=null;if(j(b))return null;for(e=c.requestService("position.get.parent.info",b);e.index===e.group.content.length-1;){if(j(e.group.groupObj))return{groupId:e.group.id,startOffset:e.group.content.length,endOffset:e.group.content.length};if(k(e.group.groupObj)&&e.group.content.length>1)return{groupId:e.group.id,startOffset:e.group.content.length,endOffset:e.group.content.length};e=c.requestService("position.get.parent.info",e.group.groupObj)}return b=e.group.content[e.index+1],n(b)?i(a,b):k(b)?(f=d.getGroupContent(b.id),d.isPlaceholder(f.content[0].id)?{groupId:b.id,startOffset:0,endOffset:1}:{groupId:b.id,startOffset:0,endOffset:0}):{groupId:e.group.id,startOffset:e.index+1,endOffset:e.index+1}}function j(a){return!!a.getAttribute("data-root")}function k(a){return"kf-editor-group"===a.getAttribute("data-type")}function l(a){var b=a.getAttribute("data-type");return"kf-editor-group"===b||"kf-editor-virtual-group"===b}function m(a){return"Placeholder"===a.getAttribute("data-flag")}function n(a){return"Empty"===a.getAttribute("data-flag")}var o=b.r(20),p={LEFT:"left",RIGHT:"right"};return o.createClass("MoveComponent",{constructor:function(a,b){this.parentComponent=a,this.kfEditor=b},leftMove:function(){var b=this.parentComponent.getCursorRecord();b=a.call(this,b),b&&this.parentComponent.updateCursor(b)},rightMove:function(){var a=this.parentComponent.getCursorRecord();a=c.call(this,a),a&&this.parentComponent.updateCursor(a)}})}},b[28]={value:function(){var a=b.r(20),c=b.r(27),d=b.r(26),e=b.r(29).cursorCharacter,f=b.r(11),g=a.createClass("SyntaxComponenet",{constructor:function(a){this.kfEditor=a,this.record={cursor:{group:null,startOffset:-1,endOffset:-1}},this.components={},this.objTree=null,this.initComponents(),this.initServices(),this.initCommands()},initComponents:function(){this.components.move=new c(this,this.kfEditor),this.components.delete=new d(this,this.kfEditor)},initServices:function(){this.kfEditor.registerService("syntax.update.objtree",this,{updateObjTree:this.updateObjTree}),this.kfEditor.registerService("syntax.get.objtree",this,{getObjectTree:this.getObjectTree}),this.kfEditor.registerService("syntax.get.group.object",this,{getGroupObject:this.getGroupObject}),this.kfEditor.registerService("syntax.is.root.node",this,{isRootNode:this.isRootNode}),this.kfEditor.registerService("syntax.is.group.node",this,{isGroupNode:this.isGroupNode}),this.kfEditor.registerService("syntax.is.virtual.node",this,{isVirtualNode:this.isVirtualNode}),this.kfEditor.registerService("syntax.is.placeholder.node",this,{isPlaceholder:this.isPlaceholder}),this.kfEditor.registerService("syntax.is.select.placeholder",this,{isSelectPlaceholder:this.isSelectPlaceholder}),this.kfEditor.registerService("syntax.has.root.placeholder",this,{hasRootplaceholder:this.hasRootplaceholder}),this.kfEditor.registerService("syntax.valid.brackets",this,{isBrackets:this.isBrackets}),this.kfEditor.registerService("syntax.get.group.content",this,{getGroupContent:this.getGroupContent}),this.kfEditor.registerService("syntax.get.root.group.info",this,{getRootGroupInfo:this.getRootGroupInfo}),this.kfEditor.registerService("syntax.get.root",this,{getRootObject:this.getRootObject}),this.kfEditor.registerService("syntax.update.record.cursor",this,{updateCursor:this.updateCursor}),this.kfEditor.registerService("syntax.update.selection",this,{updateSelection:this.updateSelection}),this.kfEditor.registerService("syntax.get.record.cursor",this,{getCursorRecord:this.getCursorRecord}),this.kfEditor.registerService("syntax.has.cursor.info",this,{hasCursorInfo:this.hasCursorInfo}),this.kfEditor.registerService("syntax.serialization",this,{serialization:this.serialization}),this.kfEditor.registerService("syntax.cursor.move.left",this,{leftMove:this.leftMove}),this.kfEditor.registerService("syntax.cursor.move.right",this,{rightMove:this.rightMove}),this.kfEditor.registerService("syntax.delete.group",this,{deleteGroup:this.deleteGroup})},initCommands:function(){this.kfEditor.registerCommand("get.source",this,this.getSource),this.kfEditor.registerCommand("content.is.empty",this,this.isEmpty)},updateObjTree:function(a){var b=a.select;b&&b.groupId&&this.updateCursor(b.groupId,b.startOffset,b.endOffset),this.objTree=a},hasCursorInfo:function(){return null!==this.record.cursor.group},isRootNode:function(a){return this.objTree.mapping.root.strGroup.attr.id===a},isGroupNode:function(a){var b=this.objTree.mapping[a].strGroup.attr["data-type"];return b===f.GROUP||b===f.VIRTUAL},isVirtualNode:function(a){return this.objTree.mapping[a].strGroup.attr["data-type"]===f.VIRTUAL},isPlaceholder:function(a){var b=this.objTree.mapping[a];return b?(b=b.objGroup.node,"Placeholder"===b.getAttribute("data-flag")):!1},isBrackets:function(a){return!!this.objTree.mapping[a].objGroup.node.getAttribute("data-brackets")},hasRootplaceholder:function(){return"placeholder"===this.objTree.mapping.root.strGroup.operand[0].name},isSelectPlaceholder:function(){var a=this.record.cursor,b=null;return a.endOffset-a.startOffset!==1?!1:(b=this.getGroupContent(a.groupId),this.isPlaceholder(b.content[a.startOffset].id)?!0:!1)},isLeafTree:function(a){return"string"==typeof a},isRootTree:function(a){return a.attr&&a.attr["data-root"]},getObjectTree:function(){return this.objTree},getGroupObject:function(a){return this.objTree.mapping[a].objGroup||null},getCursorRecord:function(){return a.Utils.extend({},this.record.cursor)||null},getGroupContent:function(b){var c=this.objTree.mapping[b],d=[],e=c.objGroup.operands,f=e.length-1,g="rtl"!==c.strGroup.traversal;return a.Utils.each(e,function(a,b){g?d.push(a.node):d[f-b]=a.node}),{id:b,traversal:c.strGroup.traversal||"ltr",groupObj:c.objGroup.node,content:d}},getRootObject:function(){return this.objTree.mapping.root.objGroup},getRootGroupInfo:function(){var a=this.objTree.mapping.root.strGroup.attr.id;return this.getGroupContent(a)},updateSelection:function(a){var b=this.objTree.mapping[a.id],c=b.strGroup,d=null,f=null,g=null,h=-1,i=-1;if(d=a,f=b,"combination"===c.name)this.record.cursor={groupId:d.id,startOffset:0,endOffset:c.operand.length},c.operand.unshift(e),c.operand.push(e);else{for(;"combination"!==f.strGroup.name||1===d.content;)a=d,b=f,d=this.kfEditor.requestService("position.get.parent.group",b.objGroup.node),f=this.objTree.mapping[d.id];var j=[].indexOf.call(d.content,a.groupObj);this.record.cursor={groupId:d.id,startOffset:j,endOffset:j+1},f.strGroup.operand.splice(j+1,0,e),f.strGroup.operand.splice(j,0,e)}return g=this.kfEditor.requestService("parser.latex.serialization",this.objTree.parsedTree),h=g.indexOf(e),g=g.replace(e,""),i=g.indexOf(e),f.strGroup.operand.splice(this.record.cursor.startOffset,1),f.strGroup.operand.splice(this.record.cursor.endOffset,1),{str:g,startOffset:h,endOffset:i}},getSource:function(){return this.serialization().str.replace(e,"").replace(e,"")},isEmpty:function(){return this.hasRootplaceholder()},serialization:function(){var a=this.record.cursor,b=this.objTree.mapping[a.groupId],c=b.strGroup,d=null,f=-1,g=-1;return f=Math.min(a.endOffset,a.startOffset),g=Math.max(a.endOffset,a.startOffset),c.operand.splice(g,0,e),c.operand.splice(f,0,e),g+=1,d=this.kfEditor.requestService("parser.latex.serialization",this.objTree.parsedTree),c.operand.splice(g,1),c.operand.splice(f,1),f=d.indexOf(e),a.startOffset===a.endOffset&&(d=d.replace(e,"")),g=d.lastIndexOf(e),{str:d,startOffset:f,endOffset:g}},updateCursor:function(a,b,c){var d=null;1===arguments.length&&(c=a.endOffset,b=a.startOffset,a=a.groupId),void 0===c&&(c=b),b>c&&(d=c,c=b,b=d),this.record.cursor={groupId:a,startOffset:b,endOffset:c}},leftMove:function(){this.components.move.leftMove()},rightMove:function(){this.components.move.rightMove()},deleteGroup:function(){return this.components.delete.deleteGroup()},insertSubtree:function(a){var b=this.record.cursor,c=0,d=0,e=null,f=0;this.isPlaceholder(b.groupId)?this.replaceTree(a):(c=Math.min(b.startOffset,b.endOffset),d=Math.max(b.startOffset,b.endOffset),f=d-c,e=this.objTree.mapping[b.groupId].strGroup,e.operand.splice(c,f,a),b.startOffset+=1,b.endOffset=b.startOffset)},replaceTree:function(a){var b=this.record.cursor,c=this.objTree.mapping[b.groupId].objGroup.node,d=this.kfEditor.requestService("position.get.parent.info",c),e=this.objTree.mapping[d.group.id].strGroup;e.operand[d.index]=a,b.groupId=d.group.id,b.startOffset=d.index+1,b.endOffset=d.index+1}});return g}},b[29]={value:function(){return{cursorCharacter:"\uf155",rootPlaceholder:{color:"#666",content:"\u5728\u6b64\u5904\u952e\u5165\u516c\u5f0f",fontsize:16},scrollbar:{padding:5,step:150}}}},b[30]={value:function(){return{"\\pm":{x:5,y:0},"\\infty":{x:42,y:0},"=":{x:79,y:0},"\\sim":{x:116,y:0},"\\times":{x:153,y:0},"\\div":{x:190,y:0},"!":{x:227,y:0},"<":{x:264,y:0},"\\ll":{x:301,y:0},">":{x:338,y:0},"\\gg":{x:375,y:0},"\\leq":{x:412,y:0},"\\geq":{x:449,y:0},"\\mp":{x:486,y:0},"\\cong":{x:523,y:0},"\\equiv":{x:560,y:0},"\\propto":{x:597,y:0},"\\approx":{x:634,y:0},"\\forall":{x:671,y:0},"\\partial":{x:708,y:0},"\\surd":{x:745,y:0},"\\cup":{x:782,y:0},"\\cap":{x:819,y:0},"\\varnothing":{x:856,y:0},"%":{x:893,y:0},"\\circ":{x:930,y:0},"\\exists":{x:967,y:0},"\\nexists":{x:1004,y:0},"\\in":{x:1041,y:0},"\\ni":{x:1078,y:0},"\\gets":{x:5,y:37},"\\uparrow":{x:42,y:37},"\\to":{x:79,y:37},"\\downarrow":{x:116,y:37},"\\leftrightarrow":{x:153,y:37},"\\therefore":{x:190,y:37},"\\because":{x:227,y:37},"+":{x:264,y:37},"-":{x:301,y:37},"\\neg":{x:338,y:37},"\\ast":{x:375,y:37},"\\cdot":{x:412,y:37},"\\vdots":{x:449,y:37},"\\ddots":{x:486,y:37},"\\aleph":{x:523,y:37},"\\beth":{x:560,y:37},"\\blacksquare":{x:597,y:37},"\\alpha":{x:634,y:37},"\\beta":{x:671,y:37},"\\gamma":{x:708,y:37},"\\delta":{x:745,y:37},"\\epsilon":{x:782,y:37},"\\zeta":{x:819,y:37},"\\eta":{x:856,y:37},"\\theta":{x:893,y:37},"\\iota":{x:930,y:37},"\\kappa":{x:967,y:37},"\\lambda":{x:1004,y:37},"\\mu":{x:1041,y:37},"\\nu":{x:1078,y:37},"\\xi":{x:5,y:74},"\\omicron":{x:42,y:74},"\\pi":{x:79,y:74},"\\rho":{x:116,y:74},"\\sigma":{x:153,y:74},"\\tau":{x:190,y:74},"\\upsilon":{x:227,y:74},"\\phi":{x:264,y:74},"\\chi":{x:301,y:74},"\\psi":{x:338,y:74},"\\omega":{x:375,y:74},"\\Alpha":{x:412,y:74},"\\Beta":{x:449,y:74},"\\Gamma":{x:486,y:74},"\\Delta":{x:523,y:74},"\\Epsilon":{x:560,y:74},"\\Zeta":{x:597,y:74},"\\Eta":{x:634,y:74},"\\Theta":{x:671,y:74},"\\Iota":{x:708,y:74},"\\Kappa":{x:745,y:74},"\\Lambda":{x:782,y:74},"\\Mu":{x:819,y:74},"\\Nu":{x:856,y:74},"\\Xi":{x:893,y:74},"\\Omicron":{x:930,y:74},"\\Pi":{x:967,y:74},"\\Rho":{x:1004,y:74},"\\Sigma":{x:1041,y:74},"\\Tau":{x:1078,y:74},"\\Upsilon":{x:5,y:111},"\\Phi":{x:42,y:111},"\\Chi":{x:79,y:111},"\\Psi":{x:116,y:111},"\\Omega":{x:153,y:111},"\\digamma":{x:190,y:111},"\\varepsilon":{x:227,y:111},"\\varkappa":{x:264,y:111},"\\varphi":{x:301,y:111},"\\varpi":{x:338,y:111},"\\varrho":{x:375,y:111},"\\varsigma":{x:412,y:111},"\\vartheta":{x:449,y:111},"\\neq":{x:486,y:111},"\\nless":{x:523,y:111},"\\ngtr":{x:560,y:111},"\\nleq":{x:597,y:111},"\\ngeq":{x:634,y:111},"\\nsim":{x:671,y:111},"\\lneqq":{x:708,y:111},"\\gneqq":{x:745,y:111},"\\nprec":{x:782,y:111},"\\nsucc":{x:819,y:111},"\\notin":{x:856,y:111},"\\nsubseteq":{x:893,y:111},"\\nsupseteq":{x:930,y:111},"\\subsetneq":{x:967,y:111},"\\supsetneq":{x:1004,y:111},"\\lnsim":{x:1041,y:111},"\\gnsim":{x:1078,y:111},"\\precnsim":{x:5,y:148},"\\succnsim":{x:42,y:148},"\\ntriangleleft":{x:79,y:148},"\\ntriangleright":{x:116,y:148},"\\ntrianglelefteq":{x:153,y:148},"\\ntrianglerighteq":{x:190,y:148},"\\nmid":{x:227,y:148},"\\nparallel":{x:264,y:148},"\\nvdash":{x:301,y:148},"\\nVdash":{x:338,y:148},"\\nvDash":{x:375,y:148},"\\nVDash":{x:412,y:148},"\\daleth":{x:449,y:148},"\\gimel":{x:486,y:148},"\\complement":{x:523,y:148},"\\ell":{x:560,y:148},"\\eth":{x:597,y:148},"\\hbar":{x:634,y:148},"\\hslash":{x:671,y:148},"\\mho":{x:708,y:148},"\\wp":{x:745,y:148},"\\circledS":{x:782,y:148},"\\Bbbk":{x:819,y:148},"\\Finv":{x:856,y:148},"\\Game":{x:893,y:148},"\\Im":{x:930,y:148},"\\Re":{x:967,y:148},"\\updownarrow":{x:1004,y:148},"\\Leftarrow":{x:1041,y:148},"\\Rightarrow":{x:1078,y:148},"\\Uparrow":{x:5,y:185},"\\Downarrow":{x:42,y:185},"\\Leftrightarrow":{x:79,y:185},"\\Updownarrow":{x:116,y:185},"\\longleftarrow":{x:153,y:185},"\\longrightarrow":{x:190,y:185},"\\longleftrightarrow":{x:227,y:185},"\\Longleftarrow":{x:264,y:185},"\\Longrightarrow":{x:301,y:185},"\\Longleftrightarrow":{x:338,y:185},"\\nearrow":{x:375,y:185},"\\nwarrow":{x:412,y:185},"\\searrow":{x:449,y:185},"\\swarrow":{x:486,y:185},"\\nleftarrow":{x:523,y:185},"\\nrightarrow":{x:560,y:185},"\\nLeftarrow":{x:597,y:185},"\\nRightarrow":{x:634,y:185},"\\nLeftrightarrow":{x:671,y:185},"\\leftharpoonup":{x:708,y:185},"\\leftharpoondown":{x:745,y:185},"\\rightharpoonup":{x:782,y:185},"\\rightharpoondown":{x:819,y:185},"\\upharpoonleft":{x:856,y:185},"\\upharpoonright":{x:893,y:185},"\\downharpoonleft":{x:930,y:185},"\\downharpoonright":{x:967,y:185},"\\leftrightharpoons":{x:1004,y:185},"\\rightleftharpoons":{x:1041,y:185},"\\leftleftarrows":{x:1078,y:185},"\\rightrightarrows":{x:5,y:222},"\\upuparrows":{x:42,y:222},"\\downdownarrows":{x:79,y:222},"\\leftrightarrows":{x:116,y:222},"\\rightleftarrows":{x:153,y:222},"\\looparrowleft":{x:190,y:222},"\\looparrowright":{x:227,y:222},"\\leftarrowtail":{x:264,y:222},"\\rightarrowtail":{x:301,y:222},"\\Lsh":{x:338,y:222},"\\Rsh":{x:375,y:222},"\\Lleftarrow":{x:412,y:222},"\\Rrightarrow":{x:449,y:222},"\\curvearrowleft":{x:486,y:222},"\\curvearrowright":{x:523,y:222},"\\circlearrowleft":{x:560,y:222},"\\circlearrowright":{x:597,y:222},"\\multimap":{x:634,y:222},"\\leftrightsquigarrow":{x:671,y:222},"\\twoheadleftarrow":{x:708,y:222},"\\twoheadrightarrow":{x:745,y:222},"\\rightsquigarrow":{x:782,y:222},"\\mathcal{A}":{x:819,y:222},"\\mathcal{B}":{x:856,y:222},"\\mathcal{C}":{x:893,y:222},"\\mathcal{D}":{x:930,y:222},"\\mathcal{E}":{x:967,y:222},"\\mathcal{F}":{x:1004,y:222},"\\mathcal{G}":{x:1041,y:222},"\\mathcal{H}":{x:1078,y:222},"\\mathcal{I}":{x:5,y:259},"\\mathcal{J}":{x:42,y:259},"\\mathcal{K}":{x:79,y:259},"\\mathcal{L}":{x:116,y:259},"\\mathcal{M}":{x:153,y:259},"\\mathcal{N}":{x:190,y:259},"\\mathcal{O}":{x:227,y:259},"\\mathcal{P}":{x:264,y:259},"\\mathcal{Q}":{x:301,y:259},"\\mathcal{R}":{x:338,y:259},"\\mathcal{S}":{x:375,y:259},"\\mathcal{T}":{x:412,y:259},"\\mathcal{U}":{x:449,y:259},"\\mathcal{V}":{x:486,y:259},"\\mathcal{W}":{x:523,y:259},"\\mathcal{X}":{x:560,y:259},"\\mathcal{Y}":{x:597,y:259},"\\mathcal{Z}":{x:634,y:259},"\\mathfrak{A}":{x:671,y:259},"\\mathfrak{B}":{x:708,y:259},"\\mathfrak{C}":{x:745,y:259},"\\mathfrak{D}":{x:782,y:259},"\\mathfrak{E}":{x:819,y:259},"\\mathfrak{F}":{x:856,y:259},"\\mathfrak{G}":{x:893,y:259},"\\mathfrak{H}":{x:930,y:259},"\\mathfrak{I}":{x:967,y:259},"\\mathfrak{J}":{x:1004,y:259},"\\mathfrak{K}":{x:1041,y:259},"\\mathfrak{L}":{x:1078,y:259},"\\mathfrak{M}":{x:5,y:296},"\\mathfrak{N}":{x:42,y:296},"\\mathfrak{O}":{x:79,y:296},"\\mathfrak{P}":{x:116,y:296},"\\mathfrak{Q}":{x:153,y:296},"\\mathfrak{R}":{x:190,y:296},"\\mathfrak{S}":{x:227,y:296},"\\mathfrak{T}":{x:264,y:296},"\\mathfrak{U}":{x:301,y:296},"\\mathfrak{V}":{x:338,y:296},"\\mathfrak{W}":{x:375,y:296},"\\mathfrak{X}":{x:412,y:296},"\\mathfrak{Y}":{x:449,y:296},"\\mathfrak{Z}":{x:486,y:296},"\\mathfrak{a}":{x:523,y:296},"\\mathfrak{b}":{x:560,y:296},"\\mathfrak{c}":{x:597,y:296},"\\mathfrak{d}":{x:634,y:296},"\\mathfrak{e}":{x:671,y:296},"\\mathfrak{f}":{x:708,y:296},"\\mathfrak{g}":{x:745,y:296},"\\mathfrak{h}":{x:782,y:296},"\\mathfrak{i}":{x:819,y:296},"\\mathfrak{j}":{x:856,y:296},"\\mathfrak{k}":{x:893,y:296},"\\mathfrak{l}":{x:930,y:296},"\\mathfrak{m}":{x:967,y:296},"\\mathfrak{n}":{x:1004,y:296},"\\mathfrak{o}":{x:1041,y:296},"\\mathfrak{p}":{x:1078,y:296},"\\mathfrak{q}":{x:5,y:333},"\\mathfrak{r}":{x:42,y:333},"\\mathfrak{s}":{x:79,y:333},"\\mathfrak{t}":{x:116,y:333},"\\mathfrak{u}":{x:153,y:333},"\\mathfrak{v}":{x:190,y:333},"\\mathfrak{w}":{x:227,y:333},"\\mathfrak{x}":{x:264,y:333},"\\mathfrak{y}":{x:301,y:333},"\\mathfrak{z}":{x:338,y:333},"\\mathbb{A}":{x:375,y:333},"\\mathbb{B}":{x:412,y:333},"\\mathbb{C}":{x:449,y:333},"\\mathbb{D}":{x:486,y:333},"\\mathbb{E}":{x:523,y:333},"\\mathbb{F}":{x:560,y:333},"\\mathbb{G}":{x:597,y:333},"\\mathbb{H}":{x:634,y:333},"\\mathbb{I}":{x:671,y:333},"\\mathbb{J}":{x:708,y:333},"\\mathbb{K}":{x:745,y:333},"\\mathbb{L}":{x:782,y:333},"\\mathbb{M}":{x:819,y:333},"\\mathbb{N}":{x:856,y:333},"\\mathbb{O}":{x:893,y:333},"\\mathbb{P}":{x:930,y:333},"\\mathbb{Q}":{x:967,y:333},"\\mathbb{R}":{x:1004,y:333},"\\mathbb{S}":{x:1041,y:333},"\\mathbb{T}":{x:1078,y:333},"\\mathbb{U}":{x:5,y:370},"\\mathbb{V}":{x:42,y:370},"\\mathbb{W}":{x:79,y:370},"\\mathbb{X}":{x:116,y:370},"\\mathbb{Y}":{x:153,y:370},"\\mathbb{Z}":{x:190,y:370},"\\mathrm{A}":{x:227,y:370},"\\mathrm{B}":{x:264,y:370},"\\mathrm{C}":{x:301,y:370},"\\mathrm{D}":{x:338,y:370},"\\mathrm{E}":{x:375,y:370},"\\mathrm{F}":{x:412,y:370},"\\mathrm{G}":{x:449,y:370},"\\mathrm{H}":{x:486,y:370},"\\mathrm{I}":{x:523,y:370},"\\mathrm{J}":{x:560,y:370},"\\mathrm{K}":{x:597,y:370},"\\mathrm{L}":{x:634,y:370},"\\mathrm{M}":{x:671,y:370},"\\mathrm{N}":{x:708,y:370},"\\mathrm{O}":{x:745,y:370},"\\mathrm{P}":{x:782,y:370},"\\mathrm{Q}":{x:819,y:370},"\\mathrm{R}":{x:856,y:370},"\\mathrm{S}":{x:893,y:370},"\\mathrm{T}":{x:930,y:370},"\\mathrm{U}":{x:967,y:370},"\\mathrm{V}":{x:1004,y:370},"\\mathrm{W}":{x:1041,y:370},"\\mathrm{X}":{x:1078,y:370},"\\mathrm{Y}":{x:5,y:407},"\\mathrm{Z}":{x:42,y:407},"\\mathrm{a}":{x:79,y:407},"\\mathrm{b}":{x:116,y:407},"\\mathrm{c}":{x:153,y:407},"\\mathrm{d}":{x:190,y:407},"\\mathrm{e}":{x:227,y:407},"\\mathrm{f}":{x:264,y:407},"\\mathrm{g}":{x:301,y:407},"\\mathrm{h}":{x:338,y:407},"\\mathrm{i}":{x:375,y:407},"\\mathrm{j}":{x:412,y:407},"\\mathrm{k}":{x:449,y:407},"\\mathrm{l}":{x:486,y:407},"\\mathrm{m}":{x:523,y:407},"\\mathrm{n}":{x:560,y:407},"\\mathrm{o}":{x:597,y:407},"\\mathrm{p}":{x:634,y:407},"\\mathrm{q}":{x:671,y:407},"\\mathrm{r}":{x:708,y:407},"\\mathrm{s}":{x:745,y:407},"\\mathrm{t}":{x:782,y:407},"\\mathrm{u}":{x:819,y:407},"\\mathrm{v}":{x:856,y:407},"\\mathrm{w}":{x:893,y:407},"\\mathrm{x}":{x:930,y:407},"\\mathrm{y}":{x:967,y:407},"\\mathrm{z}":{x:1004,y:407}}}},b[31]={value:function(){var a=b.r(4),c=b.r(20),d={min:1,max:2},e=c.createClass("ScrollZoomController",{constructor:function(b,c,e,f){this.kfEditor=c,this.target=e,this.zoom=1,this.step=.05,this.options=a.extend({},d,f),this.initEvent()},initEvent:function(){var b=this.kfEditor,c=this,d=this.options.min,e=this.options.max,f=this.step;a.addEvent(this.target,"mousewheel",function(a){a.preventDefault(),a.wheelDelta<0?c.zoom-=c.zoom*f:c.zoom+=c.zoom*f,c.zoom=Math.max(c.zoom,d),c.zoom=Math.min(c.zoom,e),b.requestService("render.set.canvas.zoom",c.zoom)})}});return e}},b[32]={value:function(){return{VIEW_STATE:{NO_OVERFLOW:0,OVERFLOW:1},scrollbar:{step:50,thumbMinSize:50}}}},b[33]={value:function(){return{"x=\\frac {-b\\pm\\sqrt {b^2-4ac}}{2a}":{pos:{x:0,y:0},size:{width:310,height:73}},"{\\placeholder/\\placeholder}":{pos:{x:315,y:0},size:{width:56,height:75}},"\\frac \\placeholder\\placeholder":{pos:{x:376,y:0},size:{width:56,height:75}},"a^2+b^2=c^2":{pos:{x:437,y:0},size:{width:310,height:73}},"{\\left(x+a\\right)}^2=\\sum^n_{k=0}{\\left(^n_k\\right)x^ka^{n-k}}":{pos:{x:752,y:0},size:{width:310,height:73}},"\\frac {dy}{dx}":{pos:{x:1067,y:0},size:{width:56,height:75}},"\\frac {\\Delta y}{\\Delta x}":{pos:{x:1128,y:0},size:{width:56,height:75}},"\\frac {\\delta y}{\\delta x}":{pos:{x:1189,y:0},size:{width:56,height:75}},"\\frac \\pi 2":{pos:{x:1250,y:0},size:{width:56,height:75}},"\\placeholder^\\placeholder":{pos:{x:1311,y:0},size:{width:56,height:75}},"\\placeholder^\\placeholder_\\placeholder":{pos:{x:1372,y:0},size:{width:56,height:75}},"\\placeholder_\\placeholder":{pos:{x:1433,y:0},size:{width:56,height:75}},"{^\\placeholder_\\placeholder\\placeholder}":{pos:{x:1494,y:0},size:{width:56,height:75}},"e^{-i\\omega t}":{pos:{x:1555,y:0},size:{width:56,height:75}},"x^2":{pos:{x:1616,y:0},size:{width:56,height:75}},"{}^n_1Y":{pos:{x:1677,y:0},size:{width:56,height:75}},"\\sqrt \\placeholder":{pos:{x:1738,y:0},size:{width:56,height:75}},"\\sqrt [\\placeholder] \\placeholder":{pos:{x:1799,y:0},size:{width:56,height:75}},"\\sqrt [2] \\placeholder":{pos:{x:1860,y:0},size:{width:56,height:75}},"\\sqrt [3] \\placeholder":{pos:{x:1921,y:0},size:{width:56,height:75}},"\\frac {-b\\pm\\sqrt{b^2-4ac}}{2a}":{pos:{x:1982,y:0},size:{width:137,height:75}},"\\sqrt {a^2+b^2}":{pos:{x:2124,y:0},size:{width:137,height:75}},"\\int \\placeholder":{pos:{x:2266,y:0},size:{width:56,height:75}},"\\int^\\placeholder_\\placeholder\\placeholder":{pos:{x:2327,y:0},size:{width:56,height:75}},"\\iint\\placeholder":{pos:{x:2388,y:0},size:{width:56,height:75}},"\\iint^\\placeholder_\\placeholder\\placeholder":{pos:{x:2449,y:0},size:{width:56,height:75}},"\\iiint\\placeholder":{pos:{x:2510,y:0},size:{width:56,height:75}},"\\iiint^\\placeholder_\\placeholder\\placeholder":{pos:{x:2571,y:0},size:{width:56,height:75}},"\\sum\\placeholder":{pos:{x:2632,y:0},size:{width:56,height:75}},"\\sum^\\placeholder_\\placeholder\\placeholder":{pos:{x:2693,y:0},size:{width:56,height:75}},"\\sum_\\placeholder\\placeholder":{pos:{x:2754,y:0},size:{width:56,height:75}},"\\left(\\placeholder\\right)":{pos:{x:2815,y:0},size:{width:56,height:75}},"\\left[\\placeholder\\right]":{pos:{x:2876,y:0},size:{width:56,height:75}},"\\left\\{\\placeholder\\right\\}":{pos:{x:2937,y:0},size:{width:56,height:75}},"\\left|\\placeholder\\right|":{pos:{x:2998,y:0},size:{width:56,height:75}},"\\sin\\placeholder":{pos:{x:3059,y:0},size:{width:56,height:75}},"\\cos\\placeholder":{pos:{x:3120,y:0},size:{width:56,height:75}},"\\tan\\placeholder":{pos:{x:3181,y:0},size:{width:56,height:75}},"\\csc\\placeholder":{pos:{x:3242,y:0},size:{width:56,height:75}},"\\sec\\placeholder":{pos:{x:3303,y:0},size:{width:56,height:75}},"\\cot\\placeholder":{pos:{x:3364,y:0},size:{width:56,height:75}},"\\sin\\theta":{pos:{x:3425,y:0},size:{width:56,height:75}},"\\cos{2x}":{pos:{x:3486,y:0},size:{width:56,height:75}},"\\tan\\theta=\\frac {\\sin\\theta}{\\cos\\theta}":{pos:{x:3547,y:0},size:{width:137,height:75}}}}},b[34]={value:function(){function a(a){var b=[],c=a.path,d=a.values;return e.Utils.each(d,function(a){var d=a,e=a;"string"!=typeof a?(d=a.img,e=a.key):e="\\"+a,b.push({item:{show:""+c+d.toLowerCase()+".png",val:e}})}),b}var c=b.r(41),d=b.r(40),e=b.r(20),f=[{type:c.DRAPDOWN_BOX,options:{button:{label:"\u9884\u8bbe
                                      ",className:"yushe-btn",icon:"assets/images/toolbar/button/fx.png",iconSize:{w:40}},box:{width:367,group:[{title:"\u9884\u8bbe\u516c\u5f0f",items:[{title:"\u9884\u8bbe\u516c\u5f0f",content:[{label:"\u4e8c\u6b21\u516c\u5f0f",item:{show:"assets/images/toolbar/ys/1.png",val:"x=\\frac {-b\\pm\\sqrt {b^2-4ac}}{2a}"}},{label:"\u4e8c\u9879\u5f0f\u5b9a\u7406",item:{show:"assets/images/toolbar/ys/2.png",val:"{\\left(x+a\\right)}^2=\\sum^n_{k=0}{\\left(^n_k\\right)x^ka^{n-k}}"}},{label:"\u52fe\u80a1\u5b9a\u7406",item:{show:"assets/images/toolbar/ys/3.png",val:"a^2+b^2=c^2"}}]}]}]}}},{type:c.DELIMITER},{type:c.AREA,options:{box:{fixOffset:!0,width:527,type:d.OVERLAP,group:[{title:"\u57fa\u7840\u6570\u5b66",items:[]},{title:"\u5e0c\u814a\u5b57\u6bcd",items:[]},{title:"\u6c42\u53cd\u5173\u7cfb\u8fd0\u7b97\u7b26",items:[]},{title:"\u5b57\u6bcd\u7c7b\u7b26\u53f7",items:[]},{title:"\u7bad\u5934",items:[]},{title:"\u624b\u5199\u4f53",items:[]}]}}},{type:c.DELIMITER},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u5206\u6570
                                      ",icon:"assets/images/toolbar/button/frac.png"},box:{width:332,group:[{title:"\u5206\u6570",items:[{title:"\u5206\u6570",content:[{item:{show:"assets/images/toolbar/frac/1.png",val:"\\frac \\placeholder\\placeholder"}},{item:{show:"assets/images/toolbar/frac/2.png",val:"{\\placeholder/\\placeholder}"}}]},{title:"\u5e38\u7528\u5206\u6570",content:[{item:{show:"assets/images/toolbar/frac/c1.png",val:"\\frac {dy}{dx}"}},{item:{show:"assets/images/toolbar/frac/c2.png",val:"\\frac {\\Delta y}{\\Delta x}"}},{item:{show:"assets/images/toolbar/frac/c4.png",val:"\\frac {\\delta y}{\\delta x}"}},{item:{show:"assets/images/toolbar/frac/c5.png",val:"\\frac \\pi 2"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u4e0a\u4e0b\u6807
                                      ",icon:"assets/images/toolbar/button/script.png"},box:{width:332,group:[{title:"\u4e0a\u6807\u548c\u4e0b\u6807",items:[{title:"\u4e0a\u6807\u548c\u4e0b\u6807",content:[{item:{show:"assets/images/toolbar/script/1.png",val:"\\placeholder^\\placeholder"}},{item:{show:"assets/images/toolbar/script/2.png",val:"\\placeholder_\\placeholder"}},{item:{show:"assets/images/toolbar/script/3.png",val:"\\placeholder^\\placeholder_\\placeholder"}},{item:{show:"assets/images/toolbar/script/4.png",val:"{^\\placeholder_\\placeholder\\placeholder}"}}]},{title:"\u5e38\u7528\u7684\u4e0a\u6807\u548c\u4e0b\u6807",content:[{item:{show:"assets/images/toolbar/script/c1.png",val:"e^{-i\\omega t}"}},{item:{show:"assets/images/toolbar/script/c2.png",val:"x^2"}},{item:{show:"assets/images/toolbar/script/c3.png",val:"{}^n_1Y"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u6839\u5f0f
                                      ",icon:"assets/images/toolbar/button/sqrt.png"},box:{width:342,group:[{title:"\u6839\u5f0f",items:[{title:"\u6839\u5f0f",content:[{item:{show:"assets/images/toolbar/sqrt/1.png",val:"\\sqrt \\placeholder"}},{item:{show:"assets/images/toolbar/sqrt/2.png",val:"\\sqrt [\\placeholder] \\placeholder"}},{item:{show:"assets/images/toolbar/sqrt/3.png",val:"\\sqrt [2] \\placeholder"}},{item:{show:"assets/images/toolbar/sqrt/4.png",val:"\\sqrt [3] \\placeholder"}}]},{title:"\u5e38\u7528\u6839\u5f0f",content:[{item:{show:"assets/images/toolbar/sqrt/c1.png",val:"\\frac {-b\\pm\\sqrt{b^2-4ac}}{2a}"}},{item:{show:"assets/images/toolbar/sqrt/c2.png",val:"\\sqrt {a^2+b^2}"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u79ef\u5206
                                      ",icon:"assets/images/toolbar/button/int.png"},box:{width:332,group:[{title:"\u79ef\u5206",items:[{title:"\u79ef\u5206",content:[{item:{show:"assets/images/toolbar/int/1.png",val:"\\int \\placeholder"}},{item:{show:"assets/images/toolbar/int/2.png",val:"\\int^\\placeholder_\\placeholder\\placeholder"}},{item:{show:"assets/images/toolbar/int/3.png",val:"\\iint\\placeholder"}},{item:{show:"assets/images/toolbar/int/4.png",val:"\\iint^\\placeholder_\\placeholder\\placeholder"}},{item:{show:"assets/images/toolbar/int/5.png",val:"\\iiint\\placeholder"}},{item:{show:"assets/images/toolbar/int/6.png",val:"\\iiint^\\placeholder_\\placeholder\\placeholder"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u5927\u578b
                                      \u8fd0\u7b97\u7b26",icon:"assets/images/toolbar/button/sum.png"},box:{width:332,group:[{title:"\u6c42\u548c",items:[{title:"\u6c42\u548c",content:[{item:{show:"assets/images/toolbar/large/1.png",val:"\\sum\\placeholder"}},{item:{show:"assets/images/toolbar/large/2.png",val:"\\sum^\\placeholder_\\placeholder\\placeholder"}},{item:{show:"assets/images/toolbar/large/3.png",val:"\\sum_\\placeholder\\placeholder"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u62ec\u53f7
                                      ",icon:"assets/images/toolbar/button/brackets.png"},box:{width:332,group:[{title:"\u65b9\u62ec\u53f7",items:[{title:"\u65b9\u62ec\u53f7",content:[{item:{show:"assets/images/toolbar/brackets/1.png",val:"\\left(\\placeholder\\right)"}},{item:{show:"assets/images/toolbar/brackets/2.png",val:"\\left[\\placeholder\\right]"}},{item:{show:"assets/images/toolbar/brackets/3.png",val:"\\left\\{\\placeholder\\right\\}"}},{item:{show:"assets/images/toolbar/brackets/4.png",val:"\\left|\\placeholder\\right|"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u51fd\u6570
                                      ",icon:"assets/images/toolbar/button/sin.png"},box:{width:340,group:[{title:"\u51fd\u6570",items:[{title:"\u4e09\u89d2\u51fd\u6570",content:[{item:{show:"assets/images/toolbar/func/1.png",val:"\\sin\\placeholder"}},{item:{show:"assets/images/toolbar/func/2.png",val:"\\cos\\placeholder"}},{item:{show:"assets/images/toolbar/func/3.png",val:"\\tan\\placeholder"}},{item:{show:"assets/images/toolbar/func/4.png",val:"\\csc\\placeholder"}},{item:{show:"assets/images/toolbar/func/5.png",val:"\\sec\\placeholder"}},{item:{show:"assets/images/toolbar/func/6.png",val:"\\cot\\placeholder"}}]},{title:"\u5e38\u7528\u51fd\u6570",content:[{item:{show:"assets/images/toolbar/func/c1.png",val:"\\sin\\theta"}},{item:{show:"assets/images/toolbar/func/c2.png",val:"\\sin{2x}"}},{item:{show:"assets/images/toolbar/func/c3.png",val:"\\tan\\theta=\\frac {\\sin\\theta}{\\cos\\theta}"}}]}]}]}}}]; -return function(){var b=["pm","infty",{key:"=",img:"eq"},"sim","times","div",{key:"!",img:"tanhao"},{key:"<",img:"lt"},"ll",{key:">",img:"gt"},"gg","leq","geq","mp","cong","equiv","propto","approx","forall","partial","surd","cup","cap","varnothing",{key:"%",img:"baifenhao"},"circ","exists","nexists","in","ni","gets","uparrow","to","downarrow","leftrightarrow","therefore","because",{key:"+",img:"plus"},{key:"-",img:"minus"},"neg","ast","cdot","vdots","ddots","aleph","beth","blacksquare"],c=f[2].options.box.group[0].items;c.push({title:"\u57fa\u7840\u6570\u5b66",content:a({path:"assets/images/toolbar/char/math/",values:b})})}(),function(){var b=[{title:"\u5c0f\u5199",values:["alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigma","tau","upsilon","phi","chi","psi","omega"]},{title:"\u5927\u5199",values:["Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega"]},{title:"\u53d8\u4f53",values:["digamma","varepsilon","varkappa","varphi","varpi","varrho","varsigma","vartheta"]}],c=f[2].options.box.group[1].items;c.push({title:b[0].title,content:a({path:"assets/images/toolbar/char/greek/lower/",values:b[0].values})}),c.push({title:b[1].title,content:a({path:"assets/images/toolbar/char/greek/upper/",values:b[1].values})}),c.push({title:b[2].title,content:a({path:"assets/images/toolbar/char/greek/misc/",values:b[2].values})})}(),function(){var b=[{title:"\u6c42\u53cd\u5173\u7cfb\u8fd0\u7b97\u7b26",values:["neq","nless","ngtr","nleq","ngeq","nsim","lneqq","gneqq","nprec","nsucc","notin","nsubseteq","nsupseteq","subsetneq","supsetneq","lnsim","gnsim","precnsim","succnsim","ntriangleleft","ntriangleright","ntrianglelefteq","ntrianglerighteq","nmid","nparallel","nvdash",{key:"\\nVdash",img:"nvdash-1"},{key:"\\nvDash",img:"nvdash-2"},{key:"\\nVDash",img:"nvdash-3"},"nexists"]}],c=f[2].options.box.group[2].items;c.push({title:b[0].title,content:a({path:"assets/images/toolbar/char/not/",values:b[0].values})})}(),function(){var b=["aleph","beth","daleth","gimel","complement","ell","eth","hbar","hslash","mho","partial","wp","circledS","Bbbk","Finv","Game","Im","Re"],c=f[2].options.box.group[3].items;c.push({title:"\u5b57\u6bcd\u7c7b\u7b26\u53f7",content:a({path:"assets/images/toolbar/alphabetic/",values:b})})}(),function(){var b=["gets","to","uparrow","downarrow","leftrightarrow","updownarrow",{key:"\\Leftarrow",img:"u-leftarrow"},{key:"\\Rightarrow",img:"u-rightarrow"},{key:"\\Uparrow",img:"u-uparrow"},{key:"\\Downarrow",img:"u-downarrow"},{key:"\\Leftrightarrow",img:"u-leftrightarrow"},{key:"\\Updownarrow",img:"u-updownarrow"},"longleftarrow","longrightarrow","longleftrightarrow",{key:"\\Longleftarrow",img:"u-longleftarrow"},{key:"\\Longrightarrow",img:"u-longrightarrow"},{key:"\\Longleftrightarrow",img:"u-longleftrightarrow"},"nearrow","nwarrow","searrow","swarrow","nleftarrow","nrightarrow",{key:"\\nLeftarrow",img:"u-nleftarrow"},{key:"\\nRightarrow",img:"u-nrightarrow"},{key:"\\nLeftrightarrow",img:"u-nleftrightarrow"},"leftharpoonup","leftharpoondown","rightharpoonup","rightharpoondown","upharpoonleft","upharpoonright","downharpoonleft","downharpoonright","leftrightharpoons","rightleftharpoons","leftleftarrows","rightrightarrows","upuparrows","downdownarrows","leftrightarrows","rightleftarrows","looparrowleft","looparrowright","leftarrowtail","rightarrowtail",{key:"\\Lsh",img:"u-lsh"},{key:"\\Rsh",img:"u-rsh"},{key:"\\Lleftarrow",img:"u-lleftarrow"},{key:"\\Rrightarrow",img:"u-rrightarrow"},"curvearrowleft","curvearrowright","circlearrowleft","circlearrowright","multimap","leftrightsquigarrow","twoheadleftarrow","twoheadrightarrow","rightsquigarrow"],c=f[2].options.box.group[4].items;c.push({title:"\u7bad\u5934",content:a({path:"assets/images/toolbar/arrow/",values:b})})}(),function(){var b=[{title:"\u624b\u5199\u4f53",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]},{title:"\u82b1\u4f53",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]},{title:"\u53cc\u7ebf",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]},{title:"\u7f57\u9a6c",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]}],c=f[2].options.box.group[5].items;e.Utils.each(b[0].values,function(a,c){b[0].values[c]={key:"\\mathcal{"+a+"}",img:a.toLowerCase()}}),e.Utils.each(b[1].values,function(a,c){b[1].values[c]={key:"\\mathfrak{"+a+"}",img:a.replace(/[A-Z]/,function(a){return"u"+a.toLowerCase()})}}),e.Utils.each(b[2].values,function(a,c){b[2].values[c]={key:"\\mathbb{"+a+"}",img:a.toLowerCase()}}),e.Utils.each(b[3].values,function(a,c){b[3].values[c]={key:"\\mathrm{"+a+"}",img:a.replace(/[A-Z]/,function(a){return"u"+a.toLowerCase()})}}),c.push({title:b[0].title,content:a({path:"assets/images/toolbar/char/cal/",values:b[0].values})}),c.push({title:b[1].title,content:a({path:"assets/images/toolbar/char/frak/",values:b[1].values})}),c.push({title:b[2].title,content:a({path:"assets/images/toolbar/char/bb/",values:b[2].values})}),c.push({title:b[3].title,content:a({path:"assets/images/toolbar/char/rm/",values:b[3].values})})}(),window.iconConfig=f,f}},b[35]={value:function(){function a(a,b){var c=[];return g.Utils.each(a,function(a){a.length>1&&(a="\\"+a),c.push({key:a,img:b,pos:e[a]})}),c}var c=b.r(41),d=b.r(40),e=b.r(30),f=b.r(33),g=b.r(20),h=[{type:c.DRAPDOWN_BOX,options:{button:{label:"\u9884\u8bbe
                                      ",className:"yushe-btn",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:0,y:0},iconSize:{w:40}},box:{width:367,group:[{title:"\u9884\u8bbe\u516c\u5f0f",items:[{title:"\u9884\u8bbe\u516c\u5f0f",content:[{label:"\u4e8c\u6b21\u516c\u5f0f",item:{val:"x=\\frac {-b\\pm\\sqrt {b^2-4ac}}{2a}"}},{label:"\u4e8c\u9879\u5f0f\u5b9a\u7406",item:{val:"{\\left(x+a\\right)}^2=\\sum^n_{k=0}{\\left(^n_k\\right)x^ka^{n-k}}"}},{label:"\u52fe\u80a1\u5b9a\u7406",item:{val:"a^2+b^2=c^2"}}]}]}]}}},{type:c.DELIMITER},{type:c.AREA,options:{box:{fixOffset:!0,width:527,type:d.OVERLAP,group:[{title:"\u57fa\u7840\u6570\u5b66",items:[]},{title:"\u5e0c\u814a\u5b57\u6bcd",items:[]},{title:"\u6c42\u53cd\u5173\u7cfb\u8fd0\u7b97\u7b26",items:[]},{title:"\u5b57\u6bcd\u7c7b\u7b26\u53f7",items:[]},{title:"\u7bad\u5934",items:[]},{title:"\u624b\u5199\u4f53",items:[]}]}}},{type:c.DELIMITER},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u5206\u6570
                                      ",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:45,y:0}},box:{width:332,group:[{title:"\u5206\u6570",items:[{title:"\u5206\u6570",content:[{item:{val:"\\frac \\placeholder\\placeholder"}},{item:{val:"{\\placeholder/\\placeholder}"}}]},{title:"\u5e38\u7528\u5206\u6570",content:[{item:{val:"\\frac {dy}{dx}"}},{item:{val:"\\frac {\\Delta y}{\\Delta x}"}},{item:{val:"\\frac {\\delta y}{\\delta x}"}},{item:{val:"\\frac \\pi 2"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u4e0a\u4e0b\u6807
                                      ",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:82,y:0}},box:{width:332,group:[{title:"\u4e0a\u6807\u548c\u4e0b\u6807",items:[{title:"\u4e0a\u6807\u548c\u4e0b\u6807",content:[{item:{val:"\\placeholder^\\placeholder"}},{item:{val:"\\placeholder_\\placeholder"}},{item:{val:"\\placeholder^\\placeholder_\\placeholder"}},{item:{val:"{^\\placeholder_\\placeholder\\placeholder}"}}]},{title:"\u5e38\u7528\u7684\u4e0a\u6807\u548c\u4e0b\u6807",content:[{item:{val:"e^{-i\\omega t}"}},{item:{val:"x^2"}},{item:{val:"{}^n_1Y"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u6839\u5f0f
                                      ",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:119,y:0}},box:{width:342,group:[{title:"\u6839\u5f0f",items:[{title:"\u6839\u5f0f",content:[{item:{val:"\\sqrt \\placeholder"}},{item:{val:"\\sqrt [\\placeholder] \\placeholder"}},{item:{val:"\\sqrt [2] \\placeholder"}},{item:{val:"\\sqrt [3] \\placeholder"}}]},{title:"\u5e38\u7528\u6839\u5f0f",content:[{item:{val:"\\frac {-b\\pm\\sqrt{b^2-4ac}}{2a}"}},{item:{val:"\\sqrt {a^2+b^2}"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u79ef\u5206
                                      ",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:156,y:0}},box:{width:332,group:[{title:"\u79ef\u5206",items:[{title:"\u79ef\u5206",content:[{item:{val:"\\int \\placeholder"}},{item:{val:"\\int^\\placeholder_\\placeholder\\placeholder"}},{item:{val:"\\iint\\placeholder"}},{item:{val:"\\iint^\\placeholder_\\placeholder\\placeholder"}},{item:{val:"\\iiint\\placeholder"}},{item:{val:"\\iiint^\\placeholder_\\placeholder\\placeholder"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u5927\u578b
                                      \u8fd0\u7b97\u7b26",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:193,y:0}},box:{width:332,group:[{title:"\u6c42\u548c",items:[{title:"\u6c42\u548c",content:[{item:{val:"\\sum\\placeholder"}},{item:{val:"\\sum^\\placeholder_\\placeholder\\placeholder"}},{item:{val:"\\sum_\\placeholder\\placeholder"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u62ec\u53f7
                                      ",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:230,y:0}},box:{width:332,group:[{title:"\u65b9\u62ec\u53f7",items:[{title:"\u65b9\u62ec\u53f7",content:[{item:{val:"\\left(\\placeholder\\right)"}},{item:{val:"\\left[\\placeholder\\right]"}},{item:{val:"\\left\\{\\placeholder\\right\\}"}},{item:{val:"\\left|\\placeholder\\right|"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u51fd\u6570
                                      ",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:267,y:0}},box:{width:340,group:[{title:"\u51fd\u6570",items:[{title:"\u4e09\u89d2\u51fd\u6570",content:[{item:{val:"\\sin\\placeholder"}},{item:{val:"\\cos\\placeholder"}},{item:{val:"\\tan\\placeholder"}},{item:{val:"\\csc\\placeholder"}},{item:{val:"\\sec\\placeholder"}},{item:{val:"\\cot\\placeholder"}}]},{title:"\u5e38\u7528\u51fd\u6570",content:[{item:{val:"\\sin\\theta"}},{item:{val:"\\cos{2x}"}},{item:{val:"\\tan\\theta=\\frac {\\sin\\theta}{\\cos\\theta}"}}]}]}]}}}];return function(){var a=[],b="kityformula/assets/images/toolbar/other.png",d=[];g.Utils.each(h,function(b){b.type!==c.DELIMITER&&(b=b.options.box.group,a=a.concat(b))}),g.Utils.each(a,function(a){a=a.items;for(var b=0,c=a.length;c>b;b++)d=d.concat(a[b].content)}),g.Utils.each(d,function(a){var c=f[a.item.val];c&&(a.item.img=b,a.item.pos=c.pos,a.item.size=c.size)})}(),function(){var b=["pm","infty","=","sim","times","div","!","<","ll",">","gg","leq","geq","mp","cong","equiv","propto","approx","forall","partial","surd","cup","cap","varnothing","%","circ","exists","nexists","in","ni","gets","uparrow","to","downarrow","leftrightarrow","therefore","because","+","-","neg","ast","cdot","vdots","aleph","beth","blacksquare"],c=h[2].options.box.group[0].items;c.push({title:"\u57fa\u7840\u6570\u5b66",content:a(b,"kityformula/assets/images/toolbar/char.png")})}(),function(){var b=[{title:"\u5c0f\u5199",values:["alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigma","tau","upsilon","phi","chi","psi","omega"]},{title:"\u5927\u5199",values:["Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega"]},{title:"\u53d8\u4f53",values:["digamma","varepsilon","varkappa","varphi","varpi","varrho","varsigma","vartheta"]}],c=h[2].options.box.group[1].items;c.push({title:b[0].title,content:a(b[0].values,"kityformula/assets/images/toolbar/char.png")}),c.push({title:b[1].title,content:a(b[1].values,"kityformula/assets/images/toolbar/char.png")}),c.push({title:b[2].title,content:a(b[2].values,"kityformula/assets/images/toolbar/char.png")})}(),function(){var b=[{title:"\u6c42\u53cd\u5173\u7cfb\u8fd0\u7b97\u7b26",values:["neq","nless","ngtr","nleq","ngeq","nsim","lneqq","gneqq","nprec","nsucc","notin","nsubseteq","nsupseteq","subsetneq","supsetneq","lnsim","gnsim","precnsim","succnsim","ntriangleleft","ntriangleright","ntrianglelefteq","ntrianglerighteq","nmid","nparallel","nvdash","nVdash","nvDash","nVDash","nexists"]}],c=h[2].options.box.group[2].items;c.push({title:b[0].title,content:a(b[0].values,"kityformula/assets/images/toolbar/char.png")})}(),function(){var b=["aleph","beth","daleth","gimel","complement","ell","eth","hbar","hslash","mho","partial","wp","circledS","Bbbk","Finv","Game","Im","Re"],c=h[2].options.box.group[3].items;c.push({title:"\u5b57\u6bcd\u7c7b\u7b26\u53f7",content:a(b,"kityformula/assets/images/toolbar/char.png")})}(),function(){var b=["gets","to","uparrow","downarrow","leftrightarrow","updownarrow","Leftarrow","Rightarrow","Uparrow","Downarrow","Leftrightarrow","Updownarrow","longleftarrow","longrightarrow","longleftrightarrow","Longleftarrow","Longrightarrow","Longleftrightarrow","nearrow","nwarrow","searrow","swarrow","nleftarrow","nrightarrow","nLeftarrow","nRightarrow","nLeftrightarrow","leftharpoonup","leftharpoondown","rightharpoonup","rightharpoondown","upharpoonleft","upharpoonright","downharpoonleft","downharpoonright","leftrightharpoons","rightleftharpoons","leftleftarrows","rightrightarrows","upuparrows","downdownarrows","leftrightarrows","rightleftarrows","looparrowleft","looparrowright","leftarrowtail","rightarrowtail","Lsh","Rsh","Lleftarrow","Rrightarrow","curvearrowleft","curvearrowright","circlearrowleft","circlearrowright","multimap","leftrightsquigarrow","twoheadleftarrow","twoheadrightarrow","rightsquigarrow"],c=h[2].options.box.group[4].items;c.push({title:"\u7bad\u5934",content:a(b,"kityformula/assets/images/toolbar/char.png")})}(),function(){var b=[{title:"\u624b\u5199\u4f53",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]},{title:"\u82b1\u4f53",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]},{title:"\u53cc\u7ebf",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]},{title:"\u7f57\u9a6c",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]}],c=h[2].options.box.group[5].items;g.Utils.each(b[0].values,function(a,c){b[0].values[c]="mathcal{"+a+"}"}),g.Utils.each(b[1].values,function(a,c){b[1].values[c]="mathfrak{"+a+"}"}),g.Utils.each(b[2].values,function(a,c){b[2].values[c]="mathbb{"+a+"}"}),g.Utils.each(b[3].values,function(a,c){b[3].values[c]="mathrm{"+a+"}"}),c.push({title:b[0].title,content:a(b[0].values,"kityformula/assets/images/toolbar/char.png")}),c.push({title:b[1].title,content:a(b[1].values,"kityformula/assets/images/toolbar/char.png")}),c.push({title:b[2].title,content:a(b[2].values,"kityformula/assets/images/toolbar/char.png")}),c.push({title:b[3].title,content:a(b[3].values,"kityformula/assets/images/toolbar/char.png")})}(),h}},b[36]={value:function(){function a(a,b,f){switch(a){case i.DRAPDOWN_BOX:return c(b,f);case i.DELIMITER:return d(b);case i.AREA:return e(b,f)}}function c(a,b){return new g.DrapdownBox(a,b)}function d(a){return new g.Delimiter(a)}function e(a,b){return new g.Area(a,b)}var f=b.r(20),g=b.r(48),h=b.r(47),i=b.r(41),j=f.createClass("Tollbar",{constructor:function(a,b,c){this.kfEditor=b,this.uiComponent=a,this.elementList=c,this.elements=[],this.initToolbarElements(),this.initServices(),this.initEvent()},initServices:function(){this.kfEditor.registerService("ui.toolbar.disable",this,{disableToolbar:this.disableToolbar}),this.kfEditor.registerService("ui.toolbar.enable",this,{enableToolbar:this.enableToolbar}),this.kfEditor.registerService("ui.toolbar.close",this,{closeToolbar:this.closeToolbar})},initEvent:function(){var a=this;h.on(this.uiComponent.toolbarContainer,"mousedown",function(a){a.preventDefault()}),h.on(this.uiComponent.toolbarContainer,"mousewheel",function(a){a.preventDefault()}),h.on(this.kfEditor.getContainer(),"mousedown",function(){a.notify("closeAll")}),h.subscribe("data.select",function(b){a.insertSource(b)})},insertSource:function(a){this.kfEditor.requestService("control.insert.string",a)},disableToolbar:function(){f.Utils.each(this.elements,function(a){a.disable&&a.disable()})},enableToolbar:function(){f.Utils.each(this.elements,function(a){a.enable&&a.enable()})},getContainer:function(){return this.kfEditor.requestService("ui.get.canvas.container")},closeToolbar:function(){this.closeElement()},notify:function(a){switch(a){case"closeAll":case"closeOther":return void this.closeElement(arguments[1])}},closeElement:function(a){f.Utils.each(this.elements,function(b){b!=a&&b.hide&&b.hide()})},initToolbarElements:function(){var b=this.elements,c=this.uiComponent.toolbarContainer.ownerDocument,d=this;f.Utils.each(this.elementList,function(e){var f=a(e.type,c,e.options);b.push(f),d.appendElement(f)})},appendElement:function(a){a.setToolbar(this),a.attachTo(this.uiComponent.toolbarContainer)}});return j}},b[37]={value:function(){var a=b.r(20),c="kf-editor-ui-",d=66,e=b.r(47),f=b.r(38),g=a.createClass("Area",{constructor:function(a,b){this.options=b,this.doc=a,this.toolbar=null,this.disabled=!0,this.panelIndex=0,this.maxPanelIndex=0,this.currentItemCount=0,this.lineMaxCount=9,this.element=this.createArea(),this.container=this.createContainer(),this.panel=this.createPanel(),this.buttonContainer=this.createButtonContainer(),this.button=this.createButton(),this.mountPoint=this.createMountPoint(),this.moveDownButton=this.createMoveDownButton(),this.moveUpButton=this.createMoveUpButton(),this.boxObject=this.createBox(),this.mergeElement(),this.mount(),this.setListener(),this.initEvent()},initEvent:function(){var a=this;e.on(this.button,"mousedown",function(b){b.preventDefault(),b.stopPropagation(),1!==b.which||a.disabled||(a.showMount(),a.toolbar.notify("closeOther",a))}),e.on(this.moveDownButton,"mousedown",function(b){b.preventDefault(),b.stopPropagation(),1!==b.which||a.disabled||(a.nextPanel(),a.toolbar.notify("closeOther",a))}),e.on(this.moveUpButton,"mousedown",function(b){b.preventDefault(),b.stopPropagation(),1!==b.which||a.disabled||(a.prevPanel(),a.toolbar.notify("closeOther",a))}),e.delegate(this.container,".kf-editor-ui-area-item","mousedown",function(b){b.preventDefault(),1!==b.which||a.disabled||e.publish("data.select",this.getAttribute("data-value"))}),this.boxObject.initEvent()},disable:function(){this.disabled=!0,this.boxObject.disable(),e.getClassList(this.element).remove(c+"enabled")},enable:function(){this.disabled=!1,this.boxObject.enable(),e.getClassList(this.element).add(c+"enabled")},setListener:function(){var a=this;this.boxObject.setSelectHandler(function(b){e.publish("data.select",b),a.hide()}),this.boxObject.setChangeHandler(function(){a.updateContent()})},createArea:function(){var a=e.ele(this.doc,"div",{className:c+"area"});return"width"in this.options&&(a.style.width=this.options.width+"px"),a},checkMaxPanelIndex:function(){this.maxPanelIndex=Math.ceil(this.currentItemCount/this.lineMaxCount/2)},updateContent:function(){var b=this.boxObject.getOverlapContent(),d=0,e=null,f=0,g=0,h=this.lineMaxCount,i=[];this.panel.innerHTML="",a.Utils.each(b,function(b){var j=b.content;a.Utils.each(j,function(a){f=Math.floor(d/h),g=d%h,d++,e="top: "+(33*f+5)+"px; left: "+(32*g+5)+"px;",i.push('
                                      ')})}),this.currentItemCount=d,this.panelIndex=0,this.panel.style.top=0,this.panel.innerHTML=i.join(""),this.checkMaxPanelIndex(),this.updatePanelButtonState()},mount:function(){this.boxObject.mountTo(this.mountPoint)},showMount:function(){this.mountPoint.style.display="block",this.boxObject.updateSize()},hideMount:function(){this.mountPoint.style.display="none"},hide:function(){this.hideMount(),this.boxObject.hide()},createButton:function(){return e.ele(this.doc,"div",{className:c+"area-button"})},createMoveDownButton:function(){return e.ele(this.doc,"div",{className:c+"movedown-button",content:""})},createMoveUpButton:function(){return e.ele(this.doc,"div",{className:c+"moveup-button",content:""})},createMountPoint:function(){return e.ele(this.doc,"div",{className:c+"area-mount"})},createBox:function(){return new f(this.doc,this.options.box)},createContainer:function(){return e.ele(this.doc,"div",{className:c+"area-container"})},createPanel:function(){return e.ele(this.doc,"div",{className:c+"area-panel"})},createButtonContainer:function(){return e.ele(this.doc,"div",{className:c+"area-button-container"})},mergeElement:function(){this.buttonContainer.appendChild(this.moveUpButton),this.buttonContainer.appendChild(this.moveDownButton),this.buttonContainer.appendChild(this.button),this.container.appendChild(this.panel),this.element.appendChild(this.container),this.element.appendChild(this.buttonContainer),this.element.appendChild(this.mountPoint)},disablePanelUp:function(){this.disabledUp=!0,e.getClassList(this.moveUpButton).add("kf-editor-ui-disabled")},enablePanelUp:function(){this.disabledUp=!1,e.getClassList(this.moveUpButton).remove("kf-editor-ui-disabled")},disablePanelDown:function(){this.disabledDown=!0,e.getClassList(this.moveDownButton).add("kf-editor-ui-disabled")},enablePanelDown:function(){this.disabledDown=!1,e.getClassList(this.moveDownButton).remove("kf-editor-ui-disabled")},updatePanelButtonState:function(){0===this.panelIndex?this.disablePanelUp():this.enablePanelUp(),this.panelIndex+1>=this.maxPanelIndex?this.disablePanelDown():this.enablePanelDown()},nextPanel:function(){this.disabledDown||this.panelIndex+1>=this.maxPanelIndex||(this.panelIndex++,this.panel.style.top=-this.panelIndex*d+"px",this.updatePanelButtonState())},prevPanel:function(){this.disabledUp||0!==this.panelIndex&&(this.panelIndex--,this.panel.style.top=-this.panelIndex*d+"px",this.updatePanelButtonState())},setToolbar:function(a){this.toolbar=a,this.boxObject.setToolbar(a)},attachTo:function(a){a.appendChild(this.element),this.updateContent(),this.updatePanelButtonState()}});return g}},b[38]={value:function(){function a(a,b,c){var d=[];return h.Utils.each(b,function(b){d.push(new q(c,a,b))}),d}function c(a){return j.ele(a,"div",{className:i+"overlap-container"})}function d(a,b){return new m(a,{className:"overlap-button",label:"",fixOffset:b.fixOffset})}function e(a,b){return new n(a,b)}function f(a){return a.getBoundingClientRect()}function g(a){var b="background: url( "+a.img+" ) no-repeat ";return b+=-a.pos.x+"px ",b+=-a.pos.y+"px;",b+=" width: "+a.size.width+"px;",b+=" height: "+a.size.height+"px;"}var h=b.r(20),i="kf-editor-ui-",j=b.r(47),k=b.r(40),l=b.r(42),m=b.r(39),n=b.r(45),o=20,p=h.createClass("Box",{constructor:function(a,b){this.options=b,this.toolbar=null,this.options.type=this.options.type||k.DETACHED,this.doc=a,this.itemPanels=null,this.overlapButtonObject=null,this.overlapIndex=-1,this.element=this.createBox(),this.groupContainer=this.createGroupContainer(),this.itemGroups=this.createItemGroup(),this.mergeElement()},createBox:function(){var a=j.ele(this.doc,"div",{className:i+"box"});return"width"in this.options&&(a.style.width=this.options.width+"px"),a},setToolbar:function(a){this.toolbar=a,this.overlapButtonObject&&this.overlapButtonObject.setToolbar(a)},updateSize:function(){var a=j.getRectBox(this.toolbar.getContainer()),b=30,c=j.getRectBox(this.element);if(this.options.type===k.DETACHED){if(c.bottom<=a.bottom)return void(this.element.scrollTop=0);this.element.style.height=c.height-(c.bottom-a.bottom+b)+"px"}else{var d=this.getCurrentItemPanel(),e=null;if(d.scrollTop=0,c.bottom<=a.bottom)return;e=f(d),d.style.height=a.bottom-e.top-b+"px"}},initEvent:function(){var a="."+i+"box-item",b=this;j.delegate(this.groupContainer,a,"mousedown",function(a){a.preventDefault(),1===a.which&&b.onselectHandler&&b.onselectHandler(this.getAttribute("data-value"))}),j.on(this.element,"mousedown",function(a){a.stopPropagation(),a.preventDefault()}),j.on(this.element,"mousewheel",function(a){a.preventDefault(),a.stopPropagation(),b.scroll(a.originalEvent.wheelDelta)})},getNode:function(){return this.element},setSelectHandler:function(a){this.onselectHandler=a},scroll:function(a){0>a?this.scrollDown():(this.scrollUp(),this.element.scrollTop-=20)},scrollDown:function(){this.options.type===k.DETACHED?this.element.scrollTop+=o:this.getCurrentItemPanel().scrollTop+=o},scrollUp:function(){this.options.type===k.DETACHED?this.element.scrollTop-=o:this.getCurrentItemPanel().scrollTop-=o},setChangeHandler:function(a){this.onchangeHandler=a},onchangeHandler:function(){},createGroupContainer:function(){return j.ele(this.doc,"div",{className:i+"box-container"})},getPositionInfo:function(){return j.getRectBox(this.element)},createItemGroup:function(){var a=this.createGroup();switch(this.options.type){case k.DETACHED:return a.items[0];case k.OVERLAP:return this.createOverlapGroup(a)}return null},enable:function(){this.overlapButtonObject&&this.overlapButtonObject.enable()},disable:function(){this.overlapButtonObject&&this.overlapButtonObject.disable()},hide:function(){this.overlapButtonObject&&this.overlapButtonObject.hideMount()},getOverlapContent:function(){return this.options.type!==k.OVERLAP?null:this.options.group[this.overlapIndex].items},createOverlapGroup:function(a){var b=a.title,f=this,g=c(this.doc),k=d(this.doc,{fixOffset:this.options.fixOffset}),l=e(this.doc,{width:150,items:b}),m=j.ele(this.doc,"div",{className:i+"wrap-group"});return this.overlapButtonObject=k,k.mount(l),k.initEvent(),l.initEvent(),h.Utils.each(a.items,function(b,c){var d=m.cloneNode(!1);h.Utils.each(b,function(a){d.appendChild(a)}),a.items[c]=d}),this.itemPanels=a.items,l.setSelectHandler(function(c,d){f.overlapIndex=c,k.setLabel(b[c]),k.hideMount(),a.items[d].style.display="none",a.items[c].style.display="block",c!==d&&f.updateSize(),f.onchangeHandler(c)}),g.appendChild(k.getNode()),h.Utils.each(a.items,function(a,b){b>0&&(a.style.display="none"),g.appendChild(a)}),l.select(0),[g]},getCurrentItemPanel:function(){return this.itemPanels[this.overlapIndex]},getGroupList:function(){var a=[];return h.Utils.each(this.options.group,function(b){a.push(b.title)}),{width:150,items:a}},createGroup:function(){var b=this.doc,c=[],d={title:[],items:[]},e=null,f=null,g=k.DETACHED===this.options.type?l.BIG:l.SMALL,m=null;return e=j.ele(this.doc,"div",{className:i+"box-group"}),m=e.cloneNode(!1),m.className=i+"box-group-item-container",h.Utils.each(this.options.group,function(k){d.title.push(k.title||""),c=[],h.Utils.each(k.items,function(d){e=e.cloneNode(!1),m=m.cloneNode(!1),f=j.ele(b,"div",{className:i+"box-group-title",content:d.title}),e.appendChild(f),e.appendChild(m),h.Utils.each(a(b,d.content,g),function(a){a.appendTo(m)}),c.push(e)}),d.items.push(c)}),d},mergeElement:function(){var a=this.groupContainer;this.element.appendChild(a),h.Utils.each(this.itemGroups,function(b){a.appendChild(b)})},mountTo:function(a){a.appendChild(this.element)},appendTo:function(a){a.appendChild(this.element)}}),q=h.createClass("BoxItem",{constructor:function(a,b,c){this.type=a,this.doc=b,this.options=c,this.element=this.createItem(),this.labelNode=this.createLabel(),this.contentNode=this.createContent(),this.mergeElement()},getNode:function(){return this.element},createItem:function(){var a=j.ele(this.doc,"div",{className:i+"box-item"});return a},createLabel:function(){var a=null;if("label"in this.options)return a=j.ele(this.doc,"div",{className:i+"box-item-label",content:this.options.label})},getContent:function(){},createContent:function(){switch(this.type){case l.BIG:return this.createBigContent();case l.SMALL:return this.createSmallContent()}},createBigContent:function(){var a=this.doc,b=j.ele(a,"div",{className:i+"box-item-content"}),c=i+"box-item-val",d=this.options.item,e=null,f=g(d);return e=j.ele(a,"div",{className:c}),e.innerHTML='
                                      ',this.element.setAttribute("data-value",d.val),b.appendChild(e),b},createSmallContent:function(){var a=this.doc,b=j.ele(a,"div",{className:i+"box-item-content"}),c=i+"box-item-val",d=this.options,e=null;return e=j.ele(a,"div",{className:c}),e.style.background="url( "+d.img+" )",e.style.backgroundPosition=-d.pos.x+"px "+-d.pos.y+"px",this.element.setAttribute("data-value",d.key),b.appendChild(e),b},mergeElement:function(){this.labelNode&&this.element.appendChild(this.labelNode),this.element.appendChild(this.contentNode)},appendTo:function(a){a.appendChild(this.element)}});return p}},b[39]={value:function(){function a(a){var b="url( "+a.src+" ) no-repeat ";return b+=-a.x+"px ",b+=-a.y+"px"}var c=b.r(20),d="kf-editor-ui-",e=7,f={iconSize:{w:32,h:32}},g=b.r(47),h=c.createClass("Button",{constructor:function(a,b){this.options=c.Utils.extend({},f,b),this.eventState=!1,this.toolbar=null,this.displayState=!1,this.fixOffset=b.fixOffset||!1,this.doc=a,this.element=this.createButton(),this.disabled=!0,this.mountElement=null,this.icon=this.createIcon(),this.label=this.createLabel(),this.sign=this.createSign(),this.mountPoint=this.createMountPoint(),this.mergeElement()},initEvent:function(){var a=this;this.eventState||(this.eventState=!0,g.on(this.element,"mousedown",function(b){b.preventDefault(),b.stopPropagation(),1===b.which&&(a.disabled||(a.toggleSelect(),a.toggleMountElement()))}))},setToolbar:function(a){this.toolbar=a},toggleMountElement:function(){this.displayState?this.hideMount():this.showMount()},setLabel:function(a){var b="";this.sign&&(b='
                                      '),this.label.innerHTML=a+b},toggleSelect:function(){g.getClassList(this.element).toggle(d+"button-in")},unselect:function(){g.getClassList(this.element).remove(d+"button-in")},select:function(){g.getClassList(this.element).add(d+"button-in")},show:function(){this.select(),this.showMount()},hide:function(){this.unselect(),this.hideMount()},showMount:function(){if(this.displayState=!0,this.mountPoint.style.display="block",this.fixOffset){var a=this.element.getBoundingClientRect();this.mountElement.setOffset(a.left+e,a.bottom)}var b=this.toolbar.getContainer(),c=null,d=g.getRectBox(b),f=this.mountElement.getPositionInfo();f.right>d.right&&(c=g.getRectBox(this.element),this.mountPoint.style.left=c.right-f.right-1+"px"),this.mountElement.updateSize&&this.mountElement.updateSize()},hideMount:function(){this.displayState=!1,this.mountPoint.style.display="none"},getNode:function(){return this.element},mount:function(a){this.mountElement=a,a.mountTo(this.mountPoint)},createButton:function(){var a=g.ele(this.doc,"div",{className:d+"button"});return this.options.className&&(a.className+=" "+d+this.options.className),a},createIcon:function(){if(!this.options.icon)return null;var b=g.ele(this.doc,"div",{className:d+"button-icon"});return"string"==typeof this.options.icon?b.style.backgroundImage="url("+this.options.icon+") no-repeat":b.style.background=a(this.options.icon),this.options.iconSize.w&&(b.style.width=this.options.iconSize.w+"px"),this.options.iconSize.h&&(b.style.height=this.options.iconSize.h+"px"),b},createLabel:function(){var a=g.ele(this.doc,"div",{className:d+"button-label",content:this.options.label});return a},createSign:function(){return this.options.sign===!1?null:g.ele(this.doc,"div",{className:d+"button-sign"})},createMountPoint:function(){return g.ele(this.doc,"div",{className:d+"button-mount-point"})},disable:function(){this.disabled=!0,g.getClassList(this.element).remove(d+"enabled") -},enable:function(){this.disabled=!1,g.getClassList(this.element).add(d+"enabled")},mergeElement:function(){this.icon&&this.element.appendChild(this.icon),this.element.appendChild(this.label),this.sign&&this.label.appendChild(this.sign),this.element.appendChild(this.mountPoint)}});return h}},b[40]={value:function(){return{DETACHED:1,OVERLAP:2}}},b[41]={value:function(){return{DRAPDOWN_BOX:1,AREA:2,DELIMITER:3}}},b[42]={value:function(){return{BIG:1,SMALL:2}}},b[43]={value:function(){var a=b.r(20),c="kf-editor-ui-",d=b.r(47),e=a.createClass("Delimiter",{constructor:function(a){this.doc=a,this.element=this.createDilimiter()},setToolbar:function(){},createDilimiter:function(){var a=d.ele(this.doc,"div",{className:c+"delimiter"});return a.appendChild(d.ele(this.doc,"div",{className:c+"delimiter-line"})),a},attachTo:function(a){a.appendChild(this.element)}});return e}},b[44]={value:function(){var a=b.r(20),c=b.r(47),d=b.r(39),e=b.r(38),f=a.createClass("DrapdownBox",{constructor:function(a,b){this.options=b,this.toolbar=null,this.doc=a,this.buttonElement=this.createButton(),this.element=this.buttonElement.getNode(),this.boxElement=this.createBox(),this.buttonElement.mount(this.boxElement),this.initEvent()},initEvent:function(){var a=this;c.on(this.element,"mousedown",function(b){b.preventDefault(),b.stopPropagation(),a.toolbar.notify("closeOther",a)}),this.buttonElement.initEvent(),this.boxElement.initEvent(),this.boxElement.setSelectHandler(function(b){c.publish("data.select",b),a.buttonElement.hide()})},disable:function(){this.buttonElement.disable()},enable:function(){this.buttonElement.enable()},setToolbar:function(a){this.toolbar=a,this.buttonElement.setToolbar(a),this.boxElement.setToolbar(a)},createButton:function(){return new d(this.doc,this.options.button)},show:function(){this.buttonElement.show()},hide:function(){this.buttonElement.hide()},createBox:function(){return new e(this.doc,this.options.box)},attachTo:function(a){a.appendChild(this.element)}});return f}},b[45]={value:function(){var a=b.r(20),c="kf-editor-ui-",d=b.r(47),e=a.createClass("List",{constructor:function(a,b){this.options=b,this.doc=a,this.onselectHandler=null,this.currentSelect=-1,this.element=this.createBox(),this.itemGroups=this.createItems(),this.mergeElement()},onselectHandler:function(){},setSelectHandler:function(a){this.onselectHandler=a},createBox:function(){var a=d.ele(this.doc,"div",{className:c+"list"}),b=d.ele(this.doc,"div",{className:c+"list-bg"});return"width"in this.options&&(a.style.width=this.options.width+"px"),a.appendChild(b),a},select:function(a){var b=this.currentSelect;-1===b&&(b=a),this.unselect(b),this.currentSelect=a,d.getClassList(this.itemGroups.items[a]).add(c+"list-item-select"),this.onselectHandler(a,b)},unselect:function(a){d.getClassList(this.itemGroups.items[a]).remove(c+"list-item-select")},setOffset:function(a,b){this.element.style.left=a+"px",this.element.style.top=b+"px"},initEvent:function(){var a="."+c+"list-item",b=this;d.delegate(this.itemGroups.container,a,"mousedown",function(a){a.preventDefault(),1===a.which&&b.select(this.getAttribute("data-index"))}),d.on(this.element,"mousedown",function(a){a.stopPropagation(),a.preventDefault()})},getPositionInfo:function(){return d.getRectBox(this.element)},createItems:function(){var b=this.doc,e=null,f=null,g=null,h=[],i=null;return e=d.ele(this.doc,"div",{className:c+"list-item"}),i=e.cloneNode(!1),i.className=c+"list-item-container",a.Utils.each(this.options.items,function(a,j){f=e.cloneNode(!1),g=e.cloneNode(!1),g.className=c+"list-item-icon",f.appendChild(g),f.appendChild(d.ele(b,"text",a)),f.setAttribute("data-index",j),h.push(f),i.appendChild(f)}),{container:i,items:h}},mergeElement:function(){this.element.appendChild(this.itemGroups.container)},mountTo:function(a){a.appendChild(this.element)}});return e}},b[46]={value:function(){function a(a,b,c){var d=a.createElement(b),e='
                                      ';return d.className=r+c,"thumb"===c&&(c=r+c,d.innerHTML=e.replace("$1",c+"-left").replace("$2",c+"-right")),d}function c(a){return a.getBoundingClientRect()}function d(a){q.addEvent(a,"mousedown",function(a){a.preventDefault()})}function d(a){q.addEvent(a.container,"mousedown",function(a){a.preventDefault()})}function e(a){q.addEvent(a.widgets.track,"mousedown",function(b){h(this,a,b)})}function f(a){q.addEvent(a.widgets.leftButton,"mousedown",function(){j(a,-p.step)}),q.addEvent(a.widgets.rightButton,"mousedown",function(){j(a,p.step)})}function g(a){var b=!1,c=0,d=0,e=a.values.trackWidth;q.addEvent(a.widgets.thumb,"mousedown",function(e){e.preventDefault(),e.stopPropagation(),b=!0,c=e.clientX,d=a.thumbLocationX}),q.addEvent(a.container.ownerDocument,"mouseup",function(){b=!1,c=0,d=0}),q.addEvent(a.container.ownerDocument,"mousemove",function(f){if(b){var g=f.clientX-c,h=d+g,j=a.values.thumbWidth;0>h?h=0:h+j>e&&(h=e-j),i(a,h)}})}function h(a,b,d){var e=c(a),f=b.values,g=f.viewWidth/(f.contentWidth-f.viewWidth)*f.trackWidth,h=d.clientX-e.left;h>f.offset?f.offset+g>f.trackWidth?k(b,f.trackWidth):k(b,f.offset+g):f.offset-g<0?k(b,0):k(b,f.offset-g)}function i(a,b){var c=a.values,d=c.trackWidth-c.thumbWidth,e=Math.floor(b/d*c.trackWidth);a.updateOffset(e),a.thumbLocationX=b,a.widgets.thumb.style.left=b+"px"}function j(a,b){var c=a.leftOverflow+b;0>c?c=0:c>a.values.scrollWidth&&(c=a.values.scrollWidth),m(a,c)}function k(a,b){var c=a.values,d=b/c.trackWidth,e=c.trackWidth-c.thumbWidth,f=0;f=Math.floor(d*e),0>b&&(b=0,f=0),a.updateOffset(b),a.widgets.thumb.style.left=f+"px",a.thumbLocationX=f}function l(a,b){var c=a.values,d=0,e=0;d=b/(c.contentWidth-c.viewWidth),e=Math.floor(d*c.trackWidth),k(a,e)}function m(a,b){var c=a.values,d=b/(c.contentWidth-c.viewWidth);k(a,d*c.trackWidth)}var n=b.r(20),o=b.r(32).scrollbar,p=b.r(29).scrollbar,q=b.r(4),r="kf-editor-ui-";return n.createClass("Scrollbar",{constructor:function(a,b){this.uiComponent=a,this.kfEditor=b,this.widgets=null,this.container=this.uiComponent.scrollbarContainer,this.state=!1,this.values={offset:0,left:0,viewWidth:0,contentWidth:0,trackWidth:0,thumbWidth:0,scrollWidth:0},this.thumbLocationX=0,this.leftOverflow=0,this.rightOverflow=0,this.isExpand=!0,this.initWidget(),this.mountWidget(),this.initSize(),this.hide(),this.initServices(),this.initEvent(),this.updateHandler=function(){}},initWidget:function(){var b=this.container.ownerDocument;this.widgets={leftButton:a(b,"div","left-button"),rightButton:a(b,"div","right-button"),track:a(b,"div","track"),thumb:a(b,"div","thumb"),thumbBody:a(b,"div","thumb-body")}},initSize:function(){var a=c(this.widgets.leftButton).width,b=c(this.widgets.rightButton).width;this.values.viewWidth=c(this.container).width,this.values.trackWidth=this.values.viewWidth-a-b,this.widgets.track.style.width=this.values.trackWidth+"px"},initServices:function(){this.kfEditor.registerService("ui.show.scrollbar",this,{showScrollbar:this.show}),this.kfEditor.registerService("ui.hide.scrollbar",this,{hideScrollbar:this.hide}),this.kfEditor.registerService("ui.update.scrollbar",this,{updateScrollbar:this.update}),this.kfEditor.registerService("ui.set.scrollbar.update.handler",this,{setUpdateHandler:this.setUpdateHandler}),this.kfEditor.registerService("ui.relocation.scrollbar",this,{relocation:this.relocation})},initEvent:function(){d(this),e(this),g(this),f(this)},mountWidget:function(){var a=this.widgets,b=this.container;for(var c in a)a.hasOwnProperty(c)&&b.appendChild(a[c]);a.thumb.appendChild(a.thumbBody),a.track.appendChild(a.thumb)},show:function(){this.state=!0,this.container.style.display="block"},hide:function(){this.state=!1,this.container.style.display="none"},update:function(a){var b=this.values.trackWidth,c=0;return this.isExpand=a>this.values.contentWidth,this.values.contentWidth=a,this.values.scrollWidth=a-this.values.viewWidth,b>=a?void this.hide():(c=Math.max(Math.ceil(b*b/a),o.thumbMinSize),this.values.thumbWidth=c,this.widgets.thumb.style.width=c+"px",void(this.widgets.thumbBody.style.width=c-10+"px"))},setUpdateHandler:function(a){this.updateHandler=a},updateOffset:function(a){var b=this.values;b.offset=a,b.left=a/b.trackWidth,this.leftOverflow=b.left*(b.contentWidth-b.viewWidth),this.rightOverflow=b.contentWidth-b.viewWidth-this.leftOverflow,this.updateHandler(b.left,b.offset,b)},relocation:function(){var a=this.kfEditor.requestService("control.get.cursor.location"),b=p.padding,c=this.values.contentWidth,d=this.values.viewWidth,e=this.values.left*(c-d),f=0;a.xe+d?(a.x+=b,a.x>c&&(a.x=c),f=a.x-d,l(this,f)):this.isExpand?m(this,this.leftOverflow):m(this,c-d-this.rightOverflow)}})}},b[47]={value:function(){function a(a){this.node=a,this.classes=a.className.replace(/^\s+|\s+$/g,"").split(/\s+/)}var c=b.r(14),d=b.r(20),e={},f={ele:function(a,b,c){var d=null;return"text"===b?a.createTextNode(c):(d=a.createElement(b),c.className&&(d.className=c.className),c.content&&(d.innerHTML=c.content),d)},getRectBox:function(a){return a.getBoundingClientRect()},on:function(a,b,d){return c(a).on(b,d),this},delegate:function(a,b,d,e){return c(a).delegate(b,d,e),this},publish:function(a,b){var c=e[a];c&&(b=[].slice.call(arguments,1),d.Utils.each(c,function(a){a.apply(null,b)}))},subscribe:function(a,b){e[a]||(e[a]=[]),e[a].push(b)},getClassList:function(b){return b.classList||new a(b)}};return a.prototype={constructor:a,contains:function(a){return-1!==this.classes.indexOf(a)},add:function(a){return-1==this.classes.indexOf(a)&&this.classes.push(a),this._update(),this},remove:function(a){var b=this.classes.indexOf(a);return-1!==b&&(this.classes.splice(b,1),this._update()),this},toggle:function(a){var b=this.contains(a)?"remove":"add";return this[b](a)},_update:function(){this.node.className=this.classes.join(" ")}},f}},b[48]={value:function(){return{DrapdownBox:b.r(44),Delimiter:b.r(43),Area:b.r(37)}}},b[49]={value:function(){function a(a){return h.ele(a,"div",{className:"kf-editor-toolbar"})}function c(a){return h.ele(a,"div",{className:"kf-editor-inner-toolbar"})}function d(a){var b=a.createElement("div");return b.className="kf-editor-edit-area",b.style.width="80%",b.style.height="800px",b}function e(a){var b=a.createElement("div");return b.className="kf-editor-canvas-container",b}function f(a){var b=a.createElement("div");return b.className="kf-editor-edit-scrollbar",b}var g=b.r(20),h=b.r(47),i=b.r(4),j=b.r(32).VIEW_STATE,k=b.r(46),l=b.r(36),m=(b.r(31),b.r(35)),n=g.createClass("UIComponent",{constructor:function(b,g){var h=null;this.options=g,this.container=b.getContainer(),h=this.container.ownerDocument,this.components={},this.canvasRect=null,this.viewState=j.NO_OVERFLOW,this.kfEditor=b,this.toolbarWrap=a(h),this.toolbarContainer=c(h),this.editArea=d(h),this.canvasContainer=e(h),this.scrollbarContainer=f(h),this.toolbarWrap.appendChild(this.toolbarContainer),this.container.appendChild(this.toolbarWrap),this.editArea.appendChild(this.canvasContainer),this.container.appendChild(this.editArea),this.container.appendChild(this.scrollbarContainer),this.initComponents(),this.initServices(),this.initEvent(),this.updateContainerSize(this.container,this.toolbarWrap,this.editArea,this.canvasContainer),this.initScrollEvent()},initComponents:function(){this.components.toolbar=new l(this,this.kfEditor,m),this.components.scrollbar=new k(this,this.kfEditor)},updateContainerSize:function(a,b,c){var d=a.getBoundingClientRect(),e=b.getBoundingClientRect();c.style.width=d.width+"px",c.style.height=d.bottom-e.bottom+"px"},initServices:function(){this.kfEditor.registerService("ui.get.canvas.container",this,{getCanvasContainer:this.getCanvasContainer}),this.kfEditor.registerService("ui.update.canvas.view",this,{updateCanvasView:this.updateCanvasView}),this.kfEditor.registerService("ui.canvas.container.event",this,{on:this.addEvent,off:this.removeEvent,trigger:this.trigger,fire:this.trigger})},initEvent:function(){},initScrollEvent:function(){var a=this;this.kfEditor.requestService("ui.set.scrollbar.update.handler",function(b,c,d){c=Math.floor(b*(d.contentWidth-d.viewWidth)),a.kfEditor.requestService("render.set.canvas.offset",c)})},getCanvasContainer:function(){return this.canvasContainer},addEvent:function(a,b){i.addEvent(this.canvasContainer,a,b)},removeEvent:function(){},trigger:function(a){i.trigger(this.canvasContainer,a)},updateCanvasView:function(){var a=this.kfEditor.requestService("render.get.canvas"),b=a.getContentContainer(),c=null;null===this.canvasRect&&(this.canvasRect=this.canvasContainer.getBoundingClientRect()),c=b.getRenderBox("paper"),c.width>this.canvasRect.width?(this.viewState===j.NO_OVERFLOW&&(this.toggleViewState(),this.kfEditor.requestService("ui.show.scrollbar"),this.kfEditor.requestService("render.disable.relocation")),this.kfEditor.requestService("render.relocation"),this.kfEditor.requestService("ui.update.scrollbar",c.width),this.kfEditor.requestService("ui.relocation.scrollbar")):(this.viewState===j.OVERFLOW&&(this.toggleViewState(),this.kfEditor.requestService("ui.hide.scrollbar"),this.kfEditor.requestService("render.enable.relocation")),this.kfEditor.requestService("render.relocation"))},toggleViewState:function(){this.viewState=this.viewState===j.NO_OVERFLOW?j.OVERFLOW:j.NO_OVERFLOW}});return n}},b[50]={value:function(){var a=b.r(12),c=b.r(13);a.registerComponents("ui",b.r(49)),a.registerComponents("parser",b.r(21)),a.registerComponents("render",b.r(25)),a.registerComponents("position",b.r(23)),a.registerComponents("syntax",b.r(28)),a.registerComponents("control",b.r(5)),a.registerComponents("print",b.r(24)),kf.EditorFactory=c}};var c={"kf.start":50};!function(){try{a("kf.start")}catch(b){}}(this)}(); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kitygraph.all.js b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kitygraph.all.js deleted file mode 100644 index 153d6e1..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kitygraph.all.js +++ /dev/null @@ -1,8572 +0,0 @@ -/*! - * ==================================================== - * kity - v2.0.5 - 2015-11-12 - * https://github.com/fex-team/kity - * GitHub: https://github.com/fex-team/kity.git - * Copyright (c) 2015 Baidu FEX; Licensed BSD - * ==================================================== - */ - -(function () { -var _p = { - r: function(index) { - if (_p[index].inited) { - return _p[index].value; - } - if (typeof _p[index].value === "function") { - var module = { - exports: {} - }, returnValue = _p[index].value(null, module.exports, module); - _p[index].inited = true; - _p[index].value = returnValue; - if (returnValue !== undefined) { - return returnValue; - } else { - for (var key in module.exports) { - if (module.exports.hasOwnProperty(key)) { - _p[index].inited = true; - _p[index].value = module.exports; - return module.exports; - } - } - } - } else { - _p[index].inited = true; - return _p[index].value; - } - } -}; - -//src/animate/animator.js -/** - * @fileOverview - * - * 提供基本的动画支持 - */ -_p[0] = { - value: function(require) { - function parseTime(str) { - var value = parseFloat(str, 10); - if (/ms/.test(str)) { - return value; - } - if (/s/.test(str)) { - return value * 1e3; - } - if (/min/.test(str)) { - return value * 60 * 1e3; - } - return value; - } - var Timeline = _p.r(8); - var easingTable = _p.r(1); - /** - * @class kity.Animator - * @catalog animate - * @description 表示一个动画启动器,可以作用于不同的对象进行动画 - */ - var Animator = _p.r(11).createClass("Animator", { - /** - * @constructor - * @for kity.Animator - * @catalog animate - * - * @grammar new kity.Animator(beginValue, finishValue, setter) - * @grammar new kity.Animator(option) - * - * @param {any} beginValue|opt.beginValue - * 动画的起始值,允许的类型有数字、数组、字面量、kity.Point、kity.Vector、kity.Box、kity.Matrix - * - * @param {any} finishValue|opt.beginValue - * 动画的结束值,类型应于起始值相同 - * - * @param {Function} setter|opt.setter - * 值的使用函数,接受三个参数: function(target, value, timeline) - * target {object} 动画的目标 - * value {any} 动画的当前值 - * timeline {kity.Timeline} 动画当前的时间线对象 - */ - constructor: function(beginValue, finishValue, setter) { - if (arguments.length == 1) { - var opt = arguments[0]; - this.beginValue = opt.beginValue; - this.finishValue = opt.finishValue; - this.setter = opt.setter; - } else { - this.beginValue = beginValue; - this.finishValue = finishValue; - this.setter = setter; - } - }, - /** - * @method start() - * @for kity.Animator - * @description 使用当前的动画器启动在指定目标上启动动画 - * - * @grammar start(target, duration, easing, delay, callback) => {kity.Timeline} - * @grammar start(target, option) => {kity.Timeline} - * - * @param {object} target - * 启动动画的目标 - * - * @param {Number|String} duration|option.duration - * [Optional] 动画的持续时间,如 300、"300ms"、"1.5min" - * - * @param {String|Function} easing|option.easing - * [Optional] 动画使用的缓动函数,如 "ease"、"linear"、"swing" - * - * @param {Number|String} delay|option.delay - * [Optional] 动画的播放延迟时间 - * - * @param {Function} callback|option.callback - * [Optional] 动画结束后的回调函数 - * - * @example - * - * ```js - * var turnRed = new kity.Animator( - * new kity.Color('yellow'), - * new kity.Color('red'), - * function(target, value) { - * target.fill(value); - * }); - * - * turnRed.start(rect, 300, 'ease', function() { - * console.log('I am red!'); - * }); - * ``` - */ - start: function(target, duration, easing, delay, callback) { - if (arguments.length === 2 && typeof duration == "object") { - easing = duration.easing; - delay = duration.delay; - callback = duration.callback; - duration = duration.duration; - } - if (arguments.length === 4 && typeof delay == "function") { - callback = delay; - delay = 0; - } - var timeline = this.create(target, duration, easing, callback); - delay = parseTime(delay); - if (delay > 0) { - setTimeout(function() { - timeline.play(); - }, delay); - } else { - timeline.play(); - } - return timeline; - }, - /** - * @method create() - * @for kity.Animator - * @description 使用当前的动画器为指定目标创建时间线 - * - * @grammar create(target, duration, easing, callback) => {kity.Timeline} - * - * @param {object} target 要创建的时间线的目标 - * @param {Number|String} duration 要创建的时间线的长度,如 300、"5s"、"0.5min" - * @param {String|Function} easing 要创建的时间线的缓动函数,如 'ease'、'linear'、'swing' - * @param {Function} callback 时间线播放结束之后的回调函数 - * - * @example - * - * ```js - * var expand = new kity.Animator({ - * beginValue: function(target) { - * return target.getBox(); - * }, - * finishValue: function(target) { - * return target.getBox().expand(100, 100, 100, 100); - * }, - * setter: function(target, value) { - * target.setBox(value) - * } - * }); - * - * var timeline = expand.create(rect, 300); - * timeline.repeat(3).play(); - * ``` - */ - create: function(target, duration, easing, callback) { - var timeline; - duration = duration && parseTime(duration) || Animator.DEFAULT_DURATION; - easing = easing || Animator.DEFAULT_EASING; - if (typeof easing == "string") { - easing = easingTable[easing]; - } - timeline = new Timeline(this, target, duration, easing); - if (typeof callback == "function") { - timeline.on("finish", callback); - } - return timeline; - }, - /** - * @method reverse() - * @for kity.Animator - * @grammar reverse() => {kity.Animator} - * @description 创建一个与当前动画器相反的动画器 - * - * @example - * - * ```js - * var turnYellow = turnRed.reverse(); - * ``` - */ - reverse: function() { - return new Animator(this.finishValue, this.beginValue, this.setter); - } - }); - Animator.DEFAULT_DURATION = 300; - Animator.DEFAULT_EASING = "linear"; - var Shape = _p.r(60); - _p.r(11).extendClass(Shape, { - /** - * @method animate() - * @for kity.Shape - * @description 在图形上播放使用指定的动画器播放动画,如果图形当前有动画正在播放,则会加入播放队列 - * - * @grammar animate(animator, duration, easing, delay, callback) - * - * @param {object} animator 播放动画使用的动画器 - * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" - * @param {Number|String} delay 动画播放前的延时 - * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' - * @param {Function} callback 播放结束之后的回调函数 - * - * @example - * - * ```js - * rect.animate(turnRed, 300); // turnRect 是一个动画器 - * rect.animate(expand, 500); // turnRect 播放结束后播放 expand - * ``` - */ - animate: function(animator, duration, easing, delay, callback) { - var queue = this._KityAnimateQueue = this._KityAnimateQueue || []; - var timeline = animator.create(this, duration, easing, callback); - function dequeue() { - queue.shift(); - if (queue.length) { - setTimeout(queue[0].t.play.bind(queue[0].t), queue[0].d); - } - } - timeline.on("finish", dequeue); - queue.push({ - t: timeline, - d: delay - }); - if (queue.length == 1) { - setTimeout(timeline.play.bind(timeline), delay); - } - return this; - }, - /** - * @method timeline() - * @for kity.Shape - * @description 获得当前正在播放的动画的时间线 - * - * @grammar timeline() => {kity.Timeline} - * - * @example - * - * ```js - * rect.timeline().repeat(2); - * ``` - */ - timeline: function() { - return this._KityAnimateQueue[0].t; - }, - /** - * @method stop() - * @for kity.Shape - * @description 停止当前正在播放的动画 - * - * @grammar stop() => {this} - * - * @example - * - * ```js - * rect.stop(); // 停止 rect 上的动画 - * ``` - */ - stop: function() { - var queue = this._KityAnimateQueue; - if (queue) { - while (queue.length) { - queue.shift().t.stop(); - } - } - return this; - } - }); - return Animator; - } -}; - -//src/animate/easing.js -/** - * Kity Animate Easing modified from jQuery Easing - * Author: techird - * Changes: - * 1. make easing functions standalone - * 2. remove the 'x' parameter - */ -/* ============================================================ - * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ - * - * Open source under the BSD License. - * - * Copyright © 2008 George McGinley Smith - * All rights reserved. - * https://raw.github.com/danro/jquery-easing/master/LICENSE - * ======================================================== */ -_p[1] = { - value: function(require, exports, module) { - var easings = { - // t: current_time, b: begin_value, c: change_value, d: duration - linear: function(t, b, c, d) { - return c * (t / d) + b; - }, - swing: function(t, b, c, d) { - return easings.easeOutQuad(t, b, c, d); - }, - ease: function(t, b, c, d) { - return easings.easeInOutCubic(t, b, c, d); - }, - easeInQuad: function(t, b, c, d) { - return c * (t /= d) * t + b; - }, - easeOutQuad: function(t, b, c, d) { - return -c * (t /= d) * (t - 2) + b; - }, - easeInOutQuad: function(t, b, c, d) { - if ((t /= d / 2) < 1) return c / 2 * t * t + b; - return -c / 2 * (--t * (t - 2) - 1) + b; - }, - easeInCubic: function(t, b, c, d) { - return c * (t /= d) * t * t + b; - }, - easeOutCubic: function(t, b, c, d) { - return c * ((t = t / d - 1) * t * t + 1) + b; - }, - easeInOutCubic: function(t, b, c, d) { - if ((t /= d / 2) < 1) return c / 2 * t * t * t + b; - return c / 2 * ((t -= 2) * t * t + 2) + b; - }, - easeInQuart: function(t, b, c, d) { - return c * (t /= d) * t * t * t + b; - }, - easeOutQuart: function(t, b, c, d) { - return -c * ((t = t / d - 1) * t * t * t - 1) + b; - }, - easeInOutQuart: function(t, b, c, d) { - if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b; - return -c / 2 * ((t -= 2) * t * t * t - 2) + b; - }, - easeInQuint: function(t, b, c, d) { - return c * (t /= d) * t * t * t * t + b; - }, - easeOutQuint: function(t, b, c, d) { - return c * ((t = t / d - 1) * t * t * t * t + 1) + b; - }, - easeInOutQuint: function(t, b, c, d) { - if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b; - return c / 2 * ((t -= 2) * t * t * t * t + 2) + b; - }, - easeInSine: function(t, b, c, d) { - return -c * Math.cos(t / d * (Math.PI / 2)) + c + b; - }, - easeOutSine: function(t, b, c, d) { - return c * Math.sin(t / d * (Math.PI / 2)) + b; - }, - easeInOutSine: function(t, b, c, d) { - return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b; - }, - easeInExpo: function(t, b, c, d) { - return t === 0 ? b : c * Math.pow(2, 10 * (t / d - 1)) + b; - }, - easeOutExpo: function(t, b, c, d) { - return t == d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b; - }, - easeInOutExpo: function(t, b, c, d) { - if (t === 0) return b; - if (t == d) return b + c; - if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b; - return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b; - }, - easeInCirc: function(t, b, c, d) { - return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b; - }, - easeOutCirc: function(t, b, c, d) { - return c * Math.sqrt(1 - (t = t / d - 1) * t) + b; - }, - easeInOutCirc: function(t, b, c, d) { - if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b; - return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b; - }, - easeInElastic: function(t, b, c, d) { - var s = 1.70158; - var p = 0; - var a = c; - if (t === 0) return b; - if ((t /= d) == 1) return b + c; - if (!p) p = d * .3; - if (a < Math.abs(c)) { - a = c; - s = p / 4; - } else s = p / (2 * Math.PI) * Math.asin(c / a); - return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; - }, - easeOutElastic: function(t, b, c, d) { - var s = 1.70158; - var p = 0; - var a = c; - if (t === 0) return b; - if ((t /= d) == 1) return b + c; - if (!p) p = d * .3; - if (a < Math.abs(c)) { - a = c; - s = p / 4; - } else s = p / (2 * Math.PI) * Math.asin(c / a); - return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b; - }, - easeInOutElastic: function(t, b, c, d) { - var s = 1.70158; - var p = 0; - var a = c; - if (t === 0) return b; - if ((t /= d / 2) == 2) return b + c; - if (!p) p = d * (.3 * 1.5); - if (a < Math.abs(c)) { - a = c; - var s = p / 4; - } else var s = p / (2 * Math.PI) * Math.asin(c / a); - if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; - return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b; - }, - easeInBack: function(t, b, c, d, s) { - if (s == undefined) s = 1.70158; - return c * (t /= d) * t * ((s + 1) * t - s) + b; - }, - easeOutBack: function(t, b, c, d, s) { - if (s == undefined) s = 1.70158; - return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b; - }, - easeInOutBack: function(t, b, c, d, s) { - if (s == undefined) s = 1.70158; - if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= 1.525) + 1) * t - s)) + b; - return c / 2 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b; - }, - easeInBounce: function(t, b, c, d) { - return c - easings.easeOutBounce(d - t, 0, c, d) + b; - }, - easeOutBounce: function(t, b, c, d) { - if ((t /= d) < 1 / 2.75) { - return c * (7.5625 * t * t) + b; - } else if (t < 2 / 2.75) { - return c * (7.5625 * (t -= 1.5 / 2.75) * t + .75) + b; - } else if (t < 2.5 / 2.75) { - return c * (7.5625 * (t -= 2.25 / 2.75) * t + .9375) + b; - } else { - return c * (7.5625 * (t -= 2.625 / 2.75) * t + .984375) + b; - } - }, - easeInOutBounce: function(t, b, c, d) { - if (t < d / 2) return easings.easeInBounce(t * 2, 0, c, d) * .5 + b; - return easings.easeOutBounce(t * 2 - d, 0, c, d) * .5 + c * .5 + b; - } - }; - return easings; - } -}; - -/* - * - * TERMS OF USE - EASING EQUATIONS - * - * Open source under the BSD License. - * - * Copyright © 2001 Robert Penner - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * Neither the name of the author nor the names of contributors may be used to endorse - * or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ -//src/animate/frame.js -/** - * @fileOverview - * - * 提供动画帧的基本支持 - */ -_p[2] = { - value: function(require, exports) { - // 原生动画帧方法 polyfill - var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function(fn) { - return setTimeout(fn, 1e3 / 60); - }; - var cancelAnimationFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.msCancelAnimationFrame || window.clearTimeout; - // 上一个请求的原生动画帧 id - var frameRequestId; - // 等待执行的帧动作的集合,这些帧的方法将在下个原生动画帧同步执行 - var pendingFrames = []; - /** - * 添加一个帧到等待集合中 - * - * 如果添加的帧是序列的第一个,至少有一个帧需要被执行,则会请求一个原生动画帧来执行 - */ - function pushFrame(frame) { - if (pendingFrames.push(frame) === 1) { - frameRequestId = requestAnimationFrame(executePendingFrames); - } - } - /** - * 执行所有等待帧 - */ - function executePendingFrames() { - var frames = pendingFrames; - pendingFrames = []; - while (frames.length) { - executeFrame(frames.pop()); - } - frameRequestId = 0; - } - /** - * @method kity.requestFrame - * @catalog animate - * @grammar kity.requestFrame(action) => {frame} - * @description 请求一个帧,执行指定的动作。动作回调提供一些有用的信息 - * - * @param {Function} action - * - * 要执行的动作,该动作回调有一个参数 frame,其中: - * - * frame.time {Number} - * 动作执行时的时间戳(ms) - * - * frame.index {Number} - * 当前执行的帧的编号(首帧为 0) - * - * frame.dur {Number} - * 上一帧至当前帧经过的时间,单位 ms - * - * frame.elapsed {Number} - * 从首帧开始到当前帧经过的时间,单位 ms - * - * frame.action {Number} - * 指向当前的帧处理函数 - * - * frame.next() - * 表示下一帧继续执行。如果不调用该方法,将不会执行下一帧。 - * - * @example - * - * ```js - * kity.requestFrame(function(frame) { - * console.log('平均帧率:' + frame.elapsed / (frame.index + 1)); - * - * // 更新或渲染动作 - * - * frame.next(); //继续执行下一帧 - * }); - * ``` - */ - function requestFrame(action) { - var frame = initFrame(action); - pushFrame(frame); - return frame; - } - /** - * @method kity.releaseFrame - * @catalog animate - * @grammar kity.releaseFrame(frame) - * @description 释放一个已经请求过的帧,如果该帧在等待集合里,将移除,下个动画帧不会执行释放的帧 - * - * @param {frame} frame 使用 kity.requestFrame() 返回的帧 - * - * @example - * - * ```js - * var frame = kity.requestFrame(function() {....}); - * kity.releaseFrame(frame); - * ``` - */ - function releaseFrame(frame) { - var index = pendingFrames.indexOf(frame); - if (~index) { - pendingFrames.splice(index, 1); - } - if (pendingFrames.length === 0) { - cancelAnimationFrame(frameRequestId); - } - } - /** - * 初始化一个帧,主要用于后续计算 - */ - function initFrame(action) { - var frame = { - index: 0, - time: +new Date(), - elapsed: 0, - action: action, - next: function() { - pushFrame(frame); - } - }; - return frame; - } - /** - * 执行一个帧动作 - */ - function executeFrame(frame) { - // 当前帧时间错 - var time = +new Date(); - // 当上一帧到当前帧经过的时间 - var dur = time - frame.time; - // - // http://stackoverflow.com/questions/13133434/requestanimationframe-detect-stop - // 浏览器最小化或切换标签,requestAnimationFrame 不会执行。 - // 检测时间超过 200 ms(频率小于 5Hz ) 判定为计时器暂停,重置为一帧长度 - // - if (dur > 200) { - dur = 1e3 / 60; - } - frame.dur = dur; - frame.elapsed += dur; - frame.time = time; - frame.action.call(null, frame); - frame.index++; - } - // 暴露 - exports.requestFrame = requestFrame; - exports.releaseFrame = releaseFrame; - } -}; - -//src/animate/motionanimator.js -/** - * @fileOverview - * - * 路径动画器,可以让一个物体沿着某个轨迹运动 - */ -_p[3] = { - value: function(require) { - var Animator = _p.r(0); - var g = _p.r(34); - var Path = _p.r(46); - var Shape = _p.r(60); - /** - * @class kity.MotionAnimator - * @catalog animate - * @base kity.Animator - * @description 路径动画器,可以让一个物体沿着某个轨迹运动 - * - * @example - * - * ```js - * var motionAnimator = new MotionAnimator('M0,0C100,0,100,0,100,100L200,200'); - * motionAnimator.start(rect, 3000); - * ``` - */ - var MotionAnimator = _p.r(11).createClass("MotionAnimator", { - base: Animator, - /** - * @constructor - * @for kity.MotionAnimator - * @grammar new kity.MotionAnimator(path, doRotate) - * @param {kity.Path|String|PathSegment} path 运动的轨迹,或者是 kity.Path 对象 - * @param {boolean} doRotate 是否让运动的目标沿着路径的切线方向旋转 - */ - constructor: function(path, doRotate) { - var me = this; - this.callBase({ - beginValue: 0, - finishValue: 1, - setter: function(target, value) { - var path = me.motionPath instanceof Path ? me.motionPath.getPathData() : me.motionPath; - var point = g.pointAtPath(path, value); - target.setTranslate(point.x, point.y); - if (this.doRotate) target.setRotate(point.tan.getAngle()); - } - }); - /** - * @property doRotate - * @for kity.MotionAnimator - * @type {boolean} - * @description 是否让运动的目标沿着路径的切线方向旋转 - * - * @example - * - * ```js - * motionAnimator.doRotate = true; // 目标沿着切线方向旋转 - * ``` - */ - this.doRotate = doRotate; - /** - * @property motionPath - * @for kity.MotionAnimator - * @type {kity.Path|String|PathSegment} - * @description 运动沿着的路径,可以在动画过程中更新 - */ - this.motionPath = path; - } - }); - _p.r(11).extendClass(Shape, { - /** - * @method motion() - * @catalog animate - * @for kity.Shape - * @description 让图形沿着指定的路径运动 - * - * @grammar motion(path, duration, easing, delay, callback) => this - * - * @param {kity.Path|String|PathSegment} path 运动的轨迹,或者是 kity.Path 对象 - * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" - * @param {Number|String} delay 动画播放前的延时 - * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' - * @param {Function} callback 播放结束之后的回调函数 - */ - motion: function(path, duration, easing, delay, callback) { - return this.animate(new MotionAnimator(path), duration, easing, delay, callback); - } - }); - return MotionAnimator; - } -}; - -//src/animate/opacityanimator.js -/** - * @fileOverview - * - * 透明度动画器,让图形动画过度到指定的透明度。 - */ -_p[4] = { - value: function(require) { - var Animator = _p.r(0); - /** - * @class kity.OpacityAnimator - * @catalog animate - * @base kity.Animator - * @description 透明度动画器,让图形动画过度到指定的透明度 - */ - var OpacityAnimator = _p.r(11).createClass("OpacityAnimator", { - base: Animator, - /** - * @constructor - * @for kity.OpacityAnimator - * @grammar new kity.OpacityAnimator(opacity) - * - * @param {Number} opacity 目标透明度,取值范围 0 - 1 - */ - constructor: function(opacity) { - this.callBase({ - beginValue: function(target) { - return target.getOpacity(); - }, - finishValue: opacity, - setter: function(target, value) { - target.setOpacity(value); - } - }); - } - }); - var Shape = _p.r(60); - _p.r(11).extendClass(Shape, { - /** - * @method fxOpacity() - * @catalog animate - * @for kity.Shape - * @description 让图形的透明度以动画的形式过渡到指定的值 - * - * @grammar fxOpacity(opacity, duration, easing, delay, callback) => {this} - * - * @param {Number} opacity 动画的目标透明度 - * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" - * @param {Number|String} delay 动画播放前的延时 - * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' - * @param {Function} callback 播放结束之后的回调函数 - */ - fxOpacity: function(opacity, duration, easing, delay, callback) { - return this.animate(new OpacityAnimator(opacity), duration, easing, delay, callback); - }, - /** - * @method fadeTo() - * @catalog animate - * @for kity.Shape - * @description 让图形的透明度以动画的形式过渡到指定的值 - * - * @grammar fadeTo(opacity, duration, easing, delay, callback) => {this} - * - * @param {Number} opacity 动画的目标透明度 - * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" - * @param {Number|String} delay 动画播放前的延时 - * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' - * @param {Function} callback 播放结束之后的回调函数 - */ - fadeTo: function() { - return this.fxOpacity.apply(this, arguments); - }, - /** - * @method fadeIn() - * @catalog animate - * @for kity.Shape - * @description 让图形淡入 - * - * @grammar fadeIn(duration, easing, delay, callback) => {this} - * - * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" - * @param {Number|String} delay 动画播放前的延时 - * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' - * @param {Function} callback 播放结束之后的回调函数 - */ - fadeIn: function() { - return this.fxOpacity.apply(this, [ 1 ].concat([].slice.call(arguments))); - }, - /** - * @method fadeOut() - * @catalog animate - * @for kity.Shape - * @description 让图形淡出 - * - * @grammar fadeIn(duration, easing, delay, callback) => {this} - * - * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" - * @param {Number|String} delay 动画播放前的延时 - * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' - * @param {Function} callback 播放结束之后的回调函数 - */ - fadeOut: function() { - return this.fxOpacity.apply(this, [ 0 ].concat([].slice.call(arguments))); - } - }); - return OpacityAnimator; - } -}; - -//src/animate/pathanimator.js -/** - * @fileOverview - * - * 路径补间动画器,让图形从一个形状变为另一个形状 - */ -_p[5] = { - value: function(require) { - var Animator = _p.r(0); - var g = _p.r(34); - /** - * @catalog animate - * - * @class kity.PathAnimator - * @base kity.Animator - * @description 路径补间动画器,让图形从一个形状变为另一个形状 - * - * @example - * - * ```js - * var path = new kity.Path('M0,0L0,100'); - * var pa = new kity.PathAnimator('M0,0C100,0,100,0,100,100'); - * pa.start(path, 300); - * ``` - */ - var PathAnimator = _p.r(11).createClass("OpacityAnimator", { - base: Animator, - /** - * @constructor - * @for kity.PathAnimator - * - * @grammar new kity.Path.Animator(path) - * - * @param {String|PathSegment} path 目标形状的路径数据 - * - */ - constructor: function(path) { - this.callBase({ - beginValue: function(target) { - this.beginPath = target.getPathData(); - return 0; - }, - finishValue: 1, - setter: function(target, value) { - target.setPathData(g.pathTween(this.beginPath, path, value)); - } - }); - } - }); - var Path = _p.r(46); - _p.r(11).extendClass(Path, { - /** - * @catalog animate - * - * @method fxPath() - * @for kity.Shape - * @description 以动画的形式把路径变换为新路径 - * - * @grammar fxPath(path, duration, easing, delay, callback) => {this} - * - * @param {String|PathSegment} path 要变换新路径 - * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" - * @param {Number|String} delay 动画播放前的延时 - * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' - * @param {Function} callback 播放结束之后的回调函数 - */ - fxPath: function(path, duration, easing, delay, callback) { - return this.animate(new PathAnimator(path), duration, easing, delay, callback); - } - }); - return PathAnimator; - } -}; - -//src/animate/rotateanimator.js -/** - * @fileOverview - * - * 提供支持目标旋转的动画器 - */ -_p[6] = { - value: function(require) { - var Animator = _p.r(0); - /** - * @class kity.RotateAnimator - * @base Animator - * @description 提供支持目标旋转的动画器 - */ - var RotateAnimator = _p.r(11).createClass("RotateAnimator", { - base: Animator, - /** - * @constructor - * @for kity.RotateAnimator - * - * @grammar new kity.RotateAnimator(deg, ax, ay) - * - * @param {Number} deg 要旋转的角度 - */ - constructor: function(deg) { - this.callBase({ - beginValue: 0, - finishValue: deg, - setter: function(target, value, timeline) { - var delta = timeline.getDelta(); - target.rotate(delta, ax, ay); - } - }); - } - }); - var Shape = _p.r(60); - _p.r(11).extendClass(Shape, { - /** - * @method fxRotate() - * @for kity.Shape - * @description 让目标以动画旋转指定的角度 - * - * @grammar fxRotate(deg, duration, easing, delay) => {this} - * - * @param {Number} deg 要旋转的角度 - * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" - * @param {Number|String} delay 动画播放前的延时 - * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' - * @param {Function} callback 播放结束之后的回调函数 - */ - fxRotate: function(deg, duration, easing, delay, callback) { - return this.animate(new RotateAnimator(deg), duration, easing, delay, callback); - } - }); - return RotateAnimator; - } -}; - -//src/animate/scaleanimator.js -/** - * @fileOverview - * - * 提供支持目标缩放的动画器 - */ -_p[7] = { - value: function(require) { - var Animator = _p.r(0); - /** - * @class kity.ScaleAnimator - * @base kity.Animator - * @description 提供支持目标缩放的动画器 - */ - var ScaleAnimator = _p.r(11).createClass("ScaleAnimator", { - base: Animator, - /** - * @constructor - * @for kity.ScaleAnimator - * - * @grammar new kity.ScaleAnimator(sx, sy) - * @param {Number} sx x 轴的缩放比例 - * @param {Number} sy y 轴的缩放比例 - */ - constructor: function(sx, sy) { - this.callBase({ - beginValue: 0, - finishValue: 1, - setter: function(target, value, timeline) { - var delta = timeline.getDelta(); - var kx = Math.pow(sx, delta); - var ky = Math.pow(sy, delta); - target.scale(ky, kx); - } - }); - } - }); - var Shape = _p.r(60); - _p.r(11).extendClass(Shape, { - /** - * @method fxScale - * @for kity.Shape - * @description 动画缩放当前的图形 - * - * @grammar fxScale(sx, sy, duration, easing, delay, callback) => {this} - * - * @param {Number} sx x 轴的缩放比例 - * @param {Number} sy y 轴的缩放比例 - * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" - * @param {Number|String} delay 动画播放前的延时 - * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' - * @param {Function} callback 播放结束之后的回调函数 - */ - fxScale: function(sx, sy, duration, easing, delay, callback) { - return this.animate(new ScaleAnimator(sx, sy), duration, easing, delay, callback); - } - }); - return ScaleAnimator; - } -}; - -//src/animate/timeline.js -/** - * @fileOverview - * - * 动画时间线的实现 - */ -_p[8] = { - value: function(require) { - var EventHandler = _p.r(33); - var utils = _p.r(12); - var frame = _p.r(2); - function getPercentValue(b, f, p) { - return utils.paralle(b, f, function(b, f) { - return b + (f - b) * p; - }); - } - function getDelta(v1, v2) { - return utils.paralle(v1, v2, function(v1, v2) { - return v2 - v1; - }); - } - function TimelineEvent(timeline, type, param) { - this.timeline = timeline; - this.target = timeline.target; - this.type = type; - for (var name in param) { - if (param.hasOwnProperty(name)) { - this[name] = param[name]; - } - } - } - /** - * @class kity.Timeline - * @catalog animate - * @mixins EventHandler - * @description 动画时间线 - */ - var Timeline = _p.r(11).createClass("Timeline", { - mixins: [ EventHandler ], - /** - * @constructor - * @for kity.Timeline - * @private - * @description 时间线应该由动画器进行构造,不应手动创建 - * - */ - constructor: function(animator, target, duration, easing) { - this.callMixin(); - this.target = target; - this.time = 0; - this.duration = duration; - this.easing = easing; - this.animator = animator; - this.beginValue = animator.beginValue; - this.finishValue = animator.finishValue; - this.setter = animator.setter; - this.status = "ready"; - }, - /** - * @private - * - * 让时间线进入下一帧 - */ - nextFrame: function(frame) { - if (this.status != "playing") { - return; - } - this.time += frame.dur; - this.setValue(this.getValue()); - if (this.time >= this.duration) { - this.timeUp(); - } - frame.next(); - }, - /** - * @method getPlayTime() - * @for kity.Timeline - * @grammar getPlayTime() => {Number} - * @description 获得当前播放的时间,取值区间为 [0, duration] - */ - getPlayTime: function() { - return this.rollbacking ? this.duration - this.time : this.time; - }, - /** - * @method getTimeProportion() - * @for kity.Timeline - * @grammar getTimeProportion() => {Number} - * @description 获得当前播放时间的比例,取值区间为 [0, 1] - */ - getTimeProportion: function() { - return this.getPlayTime() / this.duration; - }, - /** - * @method getValueProportion() - * @for kity.Timeline - * @grammar getValueProportion() => {Number} - * @description 获得当前播放时间对应值的比例,取值区间为 [0, 1];该值实际上是时间比例值经过缓动函数计算之后的值。 - */ - getValueProportion: function() { - return this.easing(this.getPlayTime(), 0, 1, this.duration); - }, - /** - * @method getValue() - * @for kity.Timeline - * @grammar getValue() => {any} - * @description 返回当前播放时间对应的值。 - */ - getValue: function() { - var b = this.beginValue; - var f = this.finishValue; - var p = this.getValueProportion(); - return getPercentValue(b, f, p); - }, - /** - * @private - * - * 把值通过动画器的 setter 设置到目标上 - */ - setValue: function(value) { - this.lastValue = this.currentValue; - this.currentValue = value; - this.setter.call(this.target, this.target, value, this); - }, - /** - * @method getDelta() - * @for kity.Timeline - * @grammar getDelta() => {any} - * @description 返回当前值和上一帧的值的差值 - */ - getDelta: function() { - this.lastValue = this.lastValue === undefined ? this.beginValue : this.lastValue; - return getDelta(this.lastValue, this.currentValue); - }, - /** - * @method play() - * @for kity.Timeline - * @grammar play() => {this} - * @description 让时间线播放,如果时间线还没开始,或者已停止、已结束,则重头播放;如果是已暂停,从暂停的位置继续播放 - */ - play: function() { - var lastStatus = this.status; - this.status = "playing"; - switch (lastStatus) { - case "ready": - if (utils.isFunction(this.beginValue)) { - this.beginValue = this.beginValue.call(this.target, this.target); - } - if (utils.isFunction(this.finishValue)) { - this.finishValue = this.finishValue.call(this.target, this.target); - } - this.time = 0; - this.setValue(this.beginValue); - this.frame = frame.requestFrame(this.nextFrame.bind(this)); - break; - - case "finished": - case "stoped": - this.time = 0; - this.frame = frame.requestFrame(this.nextFrame.bind(this)); - break; - - case "paused": - this.frame.next(); - } - /** - * @event play - * @for kity.Timeline - * @description 在时间线播放后触发 - * - * @param {String} event.lastStatus - * 表示播放前的上一个状态,可能取值为 'ready'、'finished'、'stoped'、'paused' - */ - this.fire("play", new TimelineEvent(this, "play", { - lastStatus: lastStatus - })); - return this; - }, - /** - * @method pause() - * @for kity.Timeline - * @description 暂停当前的时间线 - * - * @grammar pause() => {this} - */ - pause: function() { - this.status = "paused"; - /** - * @event pause - * @for kity.Timeline - * @description 暂停事件,在时间线暂停时触发 - */ - this.fire("pause", new TimelineEvent(this, "pause")); - frame.releaseFrame(this.frame); - return this; - }, - /** - * @method stop() - * @for kity.Timeline - * @description 停止当前时间线 - * - * @grammar stop() => {this} - */ - stop: function() { - this.status = "stoped"; - this.setValue(this.finishValue); - this.rollbacking = false; - /** - * @event stop - * @for kity.Timeline - * @description 停止时间,在时间线停止时触发 - */ - this.fire("stop", new TimelineEvent(this, "stop")); - frame.releaseFrame(this.frame); - return this; - }, - /** - * @private - * - * 播放结束之后的处理 - */ - timeUp: function() { - if (this.repeatOption) { - this.time = 0; - if (this.rollback) { - if (this.rollbacking) { - this.decreaseRepeat(); - this.rollbacking = false; - } else { - this.rollbacking = true; - /** - * @event rollback - * @for kity.Timeline - * @description 回滚事件,在时间线回滚播放开始的时候触发 - */ - this.fire("rollback", new TimelineEvent(this, "rollback")); - } - } else { - this.decreaseRepeat(); - } - if (!this.repeatOption) { - this.finish(); - } else { - /** - * @event repeat - * @for kity.Timeline - * @description 循环事件,在时间线循环播放开始的时候触发 - */ - this.fire("repeat", new TimelineEvent(this, "repeat")); - } - } else { - this.finish(); - } - }, - /** - * @private - * - * 决定播放结束的处理 - */ - finish: function() { - this.setValue(this.finishValue); - this.status = "finished"; - /** - * @event finish - * @for kity.Timeline - * @description 结束事件,在时间线播放结束后触发(包括重复和回滚都结束) - */ - this.fire("finish", new TimelineEvent(this, "finish")); - frame.releaseFrame(this.frame); - }, - /** - * @private - * - * 循环次数递减 - */ - decreaseRepeat: function() { - if (this.repeatOption !== true) { - this.repeatOption--; - } - }, - /** - * @method repeat() - * @for kity.Timeline - * @description 设置时间线的重复选项 - * - * @grammar repeat(repeat, rollback) => {this} - * - * @param {Number|Boolean} repeat - * 是否重复播放,设置为 true 无限循环播放,设置数值则循环指定的次数 - * @param {Boolean} rollback - * 指示是否要回滚播放。 - * 如果设置为真,一次事件到 duration 则一个来回算一次循环次数,否则播放完成一次算一次循环次数 - * - */ - repeat: function(repeat, rollback) { - this.repeatOption = repeat; - this.rollback = rollback; - return this; - } - }); - Timeline.requestFrame = frame.requestFrame; - Timeline.releaseFrame = frame.releaseFrame; - return Timeline; - } -}; - -//src/animate/translateanimator.js -/** - * @fileOverview - * - * 提供让图形移动的动画器 - */ -_p[9] = { - value: function(require) { - var Animator = _p.r(0); - /** - * @class kity.TranslateAnimator - * @base kity.Animator - * @description 提供让图形移动的动画器 - */ - var TranslateAnimator = _p.r(11).createClass("TranslateAnimator", { - base: Animator, - /** - * @constructor - * @for kity.TranslateAnimator - * @grammar new kity.TranslateAnimator(x, y) - * @param {Number} x x 方向上需要移动的距离 - * @param {Number} y y 方向上需要移动的距离 - */ - constructor: function(x, y) { - this.callBase({ - x: 0, - y: 0 - }, { - x: x, - y: y - }, function(target, value, timeline) { - var delta = timeline.getDelta(); - target.translate(delta.x, delta.y); - }); - } - }); - var Shape = _p.r(60); - _p.r(11).extendClass(Shape, { - /** - * @method fxTranslate() - * @for kity.Shape - * @description 让目标以动画平移指定的距离 - * - * @grammar fxTranslate(x, y, duration, easing, delay, callback) => {this} - * - * @param {Number} x x 方向上需要移动的距离 - * @param {Number} y y 方向上需要移动的距离 - * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" - * @param {Number|String} delay 动画播放前的延时 - * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' - * @param {Function} callback 播放结束之后的回调函数 - */ - fxTranslate: function(x, y, duration, easing, delay, callback) { - return this.animate(new TranslateAnimator(x, y), duration, easing, delay, callback); - } - }); - return TranslateAnimator; - } -}; - -//src/core/browser.js -/** - * @fileOverview - * - * 提供浏览器判断的一些字段 - */ -_p[10] = { - value: function() { - /** - * @class kity.Browser - * @catalog core - * @static - * @description 提供浏览器信息 - */ - var browser = function() { - var agent = navigator.userAgent.toLowerCase(), opera = window.opera, browser; - // 浏览器对象 - browser = { - /** - * @property platform - * @description 获取浏览器所在系统,"Win"->Windows;"Mac"->Mac;"Lux"->Linux - * @type {String} - */ - platform: function(navigator) { - var _p = { - win32: "Win", - macintel: "Mac" - }; - return _p[navigator.platform.toLowerCase()] || "Lux"; - }(navigator), - /** - * 猎豹,区分两种不同内核 - */ - lb: function(agent) { - if (~agent.indexOf("lbbrowser")) { - return ~agent.indexOf("msie") ? "ie" : "chrome"; - } - return false; - }(agent), - /** - * 搜狗 - */ - sg: /se[\s\S]+metasr/.test(agent), - /** - * 百度 - */ - bd: !!~agent.indexOf("bidubrowser"), - /** - * edge浏览器 - */ - edge: !!~agent.indexOf("edge"), - /** - * chrome初始化为false - * @type {Boolean} - */ - chrome: false, - /** - * @property opera - * @for kity.Browser - * @description 判断是否为 Opera 浏览器 - * @type {boolean} - */ - opera: !!opera && opera.version, - /** - * @property webkit - * @for kity.Browser - * @description 判断是否为 Webkit 内核的浏览器 - * @type {boolean} - */ - webkit: agent.indexOf(" applewebkit/") > -1, - /** - * @property mac - * @for kity.Browser - * @description 判断是否为 Mac 下的浏览器 - * @type {boolean} - */ - mac: agent.indexOf("macintosh") > -1 - }; - /** - * @property ie - * @for kity.Browser - * @description 判断是否为 IE 浏览器 - * @type {boolean} - */ - browser.ie = !browser.lb && /(msie\s|trident.*rv:)([\w.]+)/.test(agent); - browser.gecko = navigator.product == "Gecko" && !browser.webkit && !browser.opera && !browser.ie; - var version = 0; - // Internet Explorer 6.0+ - if (browser.ie) { - version = (agent.match(/(msie\s|trident.*rv:)([\w.]+)/)[2] || 0) * 1; - browser.ie11Compat = document.documentMode == 11; - browser.ie9Compat = document.documentMode == 9; - } - // Gecko. - if (browser.gecko) { - var geckoRelease = agent.match(/rv:([\d\.]+)/); - if (geckoRelease) { - geckoRelease = geckoRelease[1].split("."); - version = geckoRelease[0] * 1e4 + (geckoRelease[1] || 0) * 100 + (geckoRelease[2] || 0) * 1; - } - } - // 排除其他chrome内核的浏览器的干扰 - if (/chrome\/(\d+\.\d)/i.test(agent) && !browser.bd && !browser.opera && !browser.lb && !browser.sg && !browser.edge) { - /** - * @property chrome - * @for kity.Browser - * @description 判断是否为 Chrome 浏览器 - * @type {boolean} - */ - browser.chrome = +RegExp["$1"]; - } - if (/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(agent) && !/chrome/i.test(agent)) { - browser.safari = +(RegExp["$1"] || RegExp["$2"]); - } - // Opera 9.50+ - if (browser.opera) version = parseFloat(opera.version()); - // WebKit 522+ (Safari 3+) - if (browser.webkit) version = parseFloat(agent.match(/ applewebkit\/(\d+)/)[1]); - // 搜狗版本号无从得知 - // 猎豹版本号无从得知 - // 百度 - if (browser.bd) version = parseFloat(agent.match(/bidubrowser\/(\d+)/)[1]); - // Opera 9.50+ - if (browser.opera) version = parseFloat(agent.match(/opr\/(\d+)/)[1]); - // edge - if (browser.edge) version = parseFloat(agent.match(/edge\/(\d+)/)[1]); - /** - * @property version - * @for kity.Browser - * @description 获取当前浏览器的版本 - * @type {Number} - */ - browser.version = version; - browser.isCompatible = !browser.mobile && (browser.ie && version >= 6 || browser.gecko && version >= 10801 || browser.opera && version >= 9.5 || browser.air && version >= 1 || browser.webkit && version >= 522 || false); - return browser; - }(); - return browser; - } -}; - -//src/core/class.js -/** - * @fileOverview - * - * 提供 Kity 的 OOP 支持 - */ -_p[11] = { - value: function(require, exports) { - /** - * @class kity.Class - * @catalog core - * @description 所有 kity 类的基类 - * @abstract - */ - function Class() {} - exports.Class = Class; - Class.__KityClassName = "Class"; - /** - * @method base() - * @for kity.Class - * @protected - * @grammar base(name, args...) => {any} - * @description 调用父类指定名称的函数 - * @param {string} name 函数的名称 - * @param {parameter} args... 传递给父类函数的参数 - * - * @example - * - * ```js - * var Person = kity.createClass('Person', { - * toString: function() { - * return 'I am a person'; - * } - * }); - * - * var Male = kity.createClass('Male', { - * base: Person, - * - * toString: function() { - * return 'I am a man'; - * }, - * - * speak: function() { - * return this.base('toString') + ',' + this.toString(); - * } - * }) - * ``` - */ - Class.prototype.base = function(name) { - var caller = arguments.callee.caller; - var method = caller.__KityMethodClass.__KityBaseClass.prototype[name]; - return method.apply(this, Array.prototype.slice.call(arguments, 1)); - }; - /** - * @method callBase() - * @for kity.Class - * @protected - * @grammar callBase(args...) => {any} - * @description 调用父类同名函数 - * @param {parameter} args... 传递到父类同名函数的参数 - * - * @example - * - * ```js - * var Animal = kity.createClass('Animal', { - * constructor: function(name) { - * this.name = name; - * }, - * toString: function() { - * return 'I am an animal name ' + this.name; - * } - * }); - * - * var Dog = kity.createClass('Dog', { - * constructor: function(name) { - * this.callBase(name); - * }, - * toString: function() { - * return this.callBase() + ', a dog'; - * } - * }); - * - * var dog = new Dog('Dummy'); - * console.log(dog.toString()); // "I am an animal name Dummy, a dog"; - * ``` - */ - Class.prototype.callBase = function() { - var caller = arguments.callee.caller; - var method = caller.__KityMethodClass.__KityBaseClass.prototype[caller.__KityMethodName]; - return method.apply(this, arguments); - }; - Class.prototype.mixin = function(name) { - var caller = arguments.callee.caller; - var mixins = caller.__KityMethodClass.__KityMixins; - if (!mixins) { - return this; - } - var method = mixins[name]; - return method.apply(this, Array.prototype.slice.call(arguments, 1)); - }; - Class.prototype.callMixin = function() { - var caller = arguments.callee.caller; - var methodName = caller.__KityMethodName; - var mixins = caller.__KityMethodClass.__KityMixins; - if (!mixins) { - return this; - } - var method = mixins[methodName]; - if (methodName == "constructor") { - for (var i = 0, l = method.length; i < l; i++) { - method[i].call(this); - } - return this; - } else { - return method.apply(this, arguments); - } - }; - /** - * @method pipe() - * @for kity.Class - * @grammar pipe() => {this} - * @description 以当前对象为上线文以及管道函数的第一个参数,执行一个管道函数 - * @param {Function} fn 进行管道操作的函数 - * - * @example - * - * ```js - * var rect = new kity.Rect().pipe(function() { - * this.setWidth(500); - * this.setHeight(300); - * }); - * ``` - */ - Class.prototype.pipe = function(fn) { - if (typeof fn == "function") { - fn.call(this, this); - } - return this; - }; - /** - * @method getType() - * @for kity.Class - * @grammar getType() => {string} - * @description 获得对象的类型 - * - * @example - * - * ```js - * var rect = new kity.Rect(); - * var circle = new kity.Circle(); - * - * console.log(rect.getType()); // "Rect" - * console.log(rect.getType()); // "Circle" - * ``` - */ - Class.prototype.getType = function() { - return this.__KityClassName; - }; - /** - * @method getClass() - * @for kity.Class - * @grammar getClass() => {Class} - * @description 获得对象的类 - * - * @example - * - * ```js - * var rect = new kity.Rect(); - * - * console.log(rect.getClass() === kity.Rect); // true - * console.log(rect instanceof kity.Rect); // true - * ``` - */ - Class.prototype.getClass = function() { - return this.constructor; - }; - // 检查基类是否调用了父类的构造函数 - // 该检查是弱检查,假如调用的代码被注释了,同样能检查成功(这个特性可用于知道建议调用,但是出于某些原因不想调用的情况) - function checkBaseConstructorCall(targetClass, classname) { - var code = targetClass.toString(); - if (!/this\.callBase/.test(code)) { - throw new Error(classname + " : 类构造函数没有调用父类的构造函数!为了安全,请调用父类的构造函数"); - } - } - var KITY_INHERIT_FLAG = "__KITY_INHERIT_FLAG_" + +new Date(); - function inherit(constructor, BaseClass, classname) { - var KityClass = eval("(function " + classname + "( __inherit__flag ) {" + "if( __inherit__flag != KITY_INHERIT_FLAG ) {" + "KityClass.__KityConstructor.apply(this, arguments);" + "}" + "this.__KityClassName = KityClass.__KityClassName;" + "})"); - KityClass.__KityConstructor = constructor; - KityClass.prototype = new BaseClass(KITY_INHERIT_FLAG); - for (var methodName in BaseClass.prototype) { - if (BaseClass.prototype.hasOwnProperty(methodName) && methodName.indexOf("__Kity") !== 0) { - KityClass.prototype[methodName] = BaseClass.prototype[methodName]; - } - } - KityClass.prototype.constructor = KityClass; - return KityClass; - } - function mixin(NewClass, mixins) { - if (false === mixins instanceof Array) { - return NewClass; - } - var i, length = mixins.length, proto, method; - NewClass.__KityMixins = { - constructor: [] - }; - for (i = 0; i < length; i++) { - proto = mixins[i].prototype; - for (method in proto) { - if (false === proto.hasOwnProperty(method) || method.indexOf("__Kity") === 0) { - continue; - } - if (method === "constructor") { - // constructor 特殊处理 - NewClass.__KityMixins.constructor.push(proto[method]); - } else { - NewClass.prototype[method] = NewClass.__KityMixins[method] = proto[method]; - } - } - } - return NewClass; - } - function extend(BaseClass, extension) { - if (extension.__KityClassName) { - extension = extension.prototype; - } - for (var methodName in extension) { - if (extension.hasOwnProperty(methodName) && methodName.indexOf("__Kity") && methodName != "constructor") { - var method = BaseClass.prototype[methodName] = extension[methodName]; - method.__KityMethodClass = BaseClass; - method.__KityMethodName = methodName; - } - } - return BaseClass; - } - /** - * @method kity.createClass() - * @grammar kity.createClass(classname, defines) => {Class} - * @description 创建一个类 - * @param {string} classname 类名,用于调试的时候查看,可选 - * @param {object} defines 类定义 - * defines.base {Class} - * 定义的类的基类,如果不配置,则表示基类为 kity.Class - * defines.mixins {Class[]} - * 定义的类要融合的类列表 - * defines.constructor {Function} - * 定义类的构造函数,如果父类显式定义了构造函数,需要在构造函数中使用 callBase() 方法调用父类的构造函数 - * defines.* {Function} - * 定义类的其它函数 - * - * @example 创建一个类 - * - * ```js - * var Animal = kity.createClass('Animal', { - * constructor: function(name) { - * this.name = name; - * }, - * toString: function() { - * return this.name; - * } - * }); - * - * var a = new Animal('kity'); - * console.log(a.toString()); // "kity" - * ``` - * - * @example 继承一个类 - * - * ```js - * var Cat = kity.createClass('Cat', { - * base: Animal, - * constructor: function(name, color) { - * // 调用父类构造函数 - * this.callBase(name); - * }, - * toString: function() { - * return 'A ' + this.color + ' cat, ' + this.callBase(); - * } - * }); - * - * var cat = new Cat('kity', 'black'); - * console.log(cat.toString()); // "A black cat, kity" - * ``` - * - * @example 混合类的能力 - * ```js - * var Walkable = kity.createClass('Walkable', { - * constructor: function() { - * this.speed = 'fast'; - * }, - * walk: function() { - * console.log('I am walking ' + this.speed); - * } - * }); - * - * var Dog = kity.createClass('Dog', { - * base: Animal, - * mixins: [Walkable], - * constructor: function(name) { - * this.callBase(name); - * this.callMixins(); - * } - * }); - * - * var dog = new Dog('doggy'); - * console.log(dog.toString() + ' say:'); - * dog.walk(); - * ``` - */ - exports.createClass = function(classname, defines) { - var constructor, NewClass, BaseClass; - if (arguments.length === 1) { - defines = arguments[0]; - classname = "AnonymousClass"; - } - BaseClass = defines.base || Class; - if (defines.hasOwnProperty("constructor")) { - constructor = defines.constructor; - if (BaseClass != Class) { - checkBaseConstructorCall(constructor, classname); - } - } else { - constructor = function() { - this.callBase.apply(this, arguments); - this.callMixin.apply(this, arguments); - }; - } - NewClass = inherit(constructor, BaseClass, classname); - NewClass = mixin(NewClass, defines.mixins); - NewClass.__KityClassName = constructor.__KityClassName = classname; - NewClass.__KityBaseClass = constructor.__KityBaseClass = BaseClass; - NewClass.__KityMethodName = constructor.__KityMethodName = "constructor"; - NewClass.__KityMethodClass = constructor.__KityMethodClass = NewClass; - // 下面这些不需要拷贝到原型链上 - delete defines.mixins; - delete defines.constructor; - delete defines.base; - NewClass = extend(NewClass, defines); - return NewClass; - }; - /** - * @method kity.extendClass() - * @grammar kity.extendClass(clazz, extension) => {Class} - * @description 拓展一个已有的类 - * - * @example - * - * ```js - * kity.extendClass(Dog, { - * spark: function() { - * console.log('wao wao wao!'); - * } - * }); - * - * new Dog().spark(); // "wao wao wao!"; - * ``` - */ - exports.extendClass = extend; - } -}; - -//src/core/utils.js -/** - * @fileOverview - * - * 一些常用的工具方法 - */ -_p[12] = { - value: function() { - /** - * @class kity.Utils - * @catalog core - * @static - * @description 提供常用的工具方法 - */ - var utils = { - /** - * @method each() - * @for kity.Utils - * @grammar each(obj, interator, context) - * @param {Object|Array} obj 要迭代的对象或数组 - * @param {Function} iterator 迭代函数 - * @param {Any} context 迭代函数的上下文 - * - * @example 迭代数组 - * - * ```js - * kity.Utils.each([1, 2, 3, 4, 5], function(value, index, array) { - * console.log(value, index); - * }); - * // 1, 0 - * // 2, 1 - * // 3, 2 - * // 4, 3 - * // 5, 4 - * ``` - * - * @example 迭代对象 - * - * ```js - * var obj = { - * name: 'kity', - * version: '1.2.1' - * }; - * var param = []; - * kity.Utils.each(obj, function(value, key, obj) { - * param.push(key + '=' + value); - * }); - * console.log(param.join('&')); // "name=kity&version=1.2.1" - * ``` - */ - each: function each(obj, iterator, context) { - if (obj === null) { - return; - } - if (obj.length === +obj.length) { - for (var i = 0, l = obj.length; i < l; i++) { - if (iterator.call(context, obj[i], i, obj) === false) { - return false; - } - } - } else { - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - if (iterator.call(context, obj[key], key, obj) === false) { - return false; - } - } - } - } - }, - /** - * @method extend() - * @for kity.Utils - * @grammar extend(target, sources..., notCover) => {object} - * @description 把源对象的属性合并到目标对象上 - * @param {object} target 目标对象 - * @param {parameter} sources 源对象 - * @param {boolean} notCover 是否不要覆盖源对象已有的属性 - * - * @example - * - * ```js - * var a = { - * key1: 'a1', - * key2: 'a2' - * }; - * - * var b = { - * key2: 'b2', - * key3: 'b3' - * }; - * - * var c = { - * key4: 'c4' - * }; - * - * var d = kity.extend(a, b, c); - * - * console.log(d === a); // true - * console.log(a); // {key1: 'a1', key2: 'b2', key3: 'b3', key4: 'c4'} - * ``` - */ - extend: function extend(t) { - var a = arguments, notCover = this.isBoolean(a[a.length - 1]) ? a[a.length - 1] : false, len = this.isBoolean(a[a.length - 1]) ? a.length - 1 : a.length; - for (var i = 1; i < len; i++) { - var x = a[i]; - for (var k in x) { - if (!notCover || !t.hasOwnProperty(k)) { - t[k] = x[k]; - } - } - } - return t; - }, - /** - * @method deepExtend() - * @for kity.Utils - * @grammar deepExtend(target, sources..., notCover) - * @description 把源对象的属性合并到目标对象上,如果属性是对象,会递归合并 - * @param {object} target 目标对象 - * @param {parameter} sources 源对象 - * @param {boolean} notCover 是否不要覆盖源对象已有的属性 - */ - deepExtend: function(t, s) { - var a = arguments, notCover = this.isBoolean(a[a.length - 1]) ? a[a.length - 1] : false, len = this.isBoolean(a[a.length - 1]) ? a.length - 1 : a.length; - for (var i = 1; i < len; i++) { - var x = a[i]; - for (var k in x) { - if (!notCover || !t.hasOwnProperty(k)) { - if (this.isObject(t[k]) && this.isObject(x[k])) { - this.deepExtend(t[k], x[k], notCover); - } else { - t[k] = x[k]; - } - } - } - } - return t; - }, - /** - * @method clone() - * @for kity.Utils - * @grammar clone(obj) => {object} - * @description 返回一个对象的克隆副本(非深度复制) - * @param {object} obj 要克隆的对象 - * - * @example - * - * ```js - * var source = { - * key1: { - * key2: 'value2' - * }, - * key3: 'value3' - * }; - * - * var target = kity.Utils.clone(source); - * - * console.log(target === source); // false - * console.log(target.key1 === source.key1); // true - * console.log(target.key3 === source.key3); // true - * ``` - */ - clone: function clone(obj) { - var cloned = {}; - for (var m in obj) { - if (obj.hasOwnProperty(m)) { - cloned[m] = obj[m]; - } - } - return cloned; - }, - /** - * @method copy() - * @for kity.Utils - * @grammar copy(obj) => {object} - * @description 返回一个对象的拷贝副本(深度复制) - * @param {object} obj 要拷贝的对象 - * - * @example - * - * ```js - * var source = { - * key1: { - * key2: 'value2' - * }, - * key3: 'value3' - * }; - * - * var target = kity.Utils.copy(source); - * - * console.log(target === source); // false - * console.log(target.key1 === source.key1); // false - * console.log(target.key3 === source.key3); // true,因为是值类型 - * ``` - */ - copy: function copy(obj) { - if (typeof obj !== "object") return obj; - if (typeof obj === "function") return null; - return JSON.parse(JSON.stringify(obj)); - }, - queryPath: function(path, obj) { - var arr = path.split("."); - var i = 0, tmp = obj, l = arr.length; - while (i < l) { - if (arr[i] in tmp) { - tmp = tmp[arr[i]]; - i++; - if (i >= l || tmp === undefined) { - return tmp; - } - } else { - return undefined; - } - } - }, - getValue: function(value, defaultValue) { - return value !== undefined ? value : defaultValue; - }, - /** - * @method flatten() - * @for kity.Utils - * @grammar flatten(arr) => {Array} - * @description 返回给定数组的扁平化版本 - * @param {Array} arr 要扁平化的数组 - * - * @example - * - * ```js - * var flattened = kity.Utils.flatten([[1, 2], [2, 3], [[4, 5], [6, 7]]]); - * console.log(flattened); // [1, 2, 3, 4, 5, 6, 7]; - * ``` - */ - flatten: function flatten(arr) { - var result = [], length = arr.length, i; - for (i = 0; i < length; i++) { - if (arr[i] instanceof Array) { - result = result.concat(utils.flatten(arr[i])); - } else { - result.push(arr[i]); - } - } - return result; - }, - /** - * @method paralle() - * @for kity.Utils - * @grammar paralle() => {Any} - * - * @description 平行地对 v1 和 v2 进行指定的操作 - * - * 如果 v1 是数字,那么直接进行 op 操作 - * 如果 v1 是对象,那么返回一个对象,其元素是 v1 和 v2 同键值的每个元素平行地进行 op 操作的结果 - * 如果 v1 是数组,那么返回一个数组,其元素是 v1 和 v2 同索引的每个元素平行地进行 op 操作的结果 - * - * @param {Number|Object|Array} v1 第一个操作数 - * @param {Number|Object|Array} v2 第二个操作数 - * @param {Function} op 操作函数 - * - * - * - * @example - * - * ```js - * var a = { - * value1: 1, - * value2: 2, - * value3: [3, 4, 5] - * }; - * - * var b = { - * value1: 2, - * value2: 3, - * value3: [4, 5, 6] - * }; - * - * var c = kity.Utils.paralle(a, b, function(v1, v2) { - * return v1 + v2; - * }); - * - * console.log(c.value1); // 3 - * console.log(c.value2); // 5 - * console.log(c.value3); // [7, 9, 11] - * - * ``` - */ - paralle: function paralle(v1, v2, op) { - var Class, field, index, name, value; - // 数组 - if (v1 instanceof Array) { - value = []; - for (index = 0; index < v1.length; index++) { - value.push(utils.paralle(v1[index], v2[index], op)); - } - return value; - } - // 对象 - if (v1 instanceof Object) { - // 如果值是一个支持原始表示的实例,获取其原始表示 - Class = v1.getClass && v1.getClass(); - if (Class && Class.parse) { - v1 = v1.valueOf(); - v2 = v2.valueOf(); - value = utils.paralle(v1, v2, op); - value = Class.parse(value); - } else { - value = {}; - for (name in v1) { - if (v1.hasOwnProperty(name) && v2.hasOwnProperty(name)) { - value[name] = utils.paralle(v1[name], v2[name], op); - } - } - } - return value; - } - // 是否数字 - if (false === isNaN(parseFloat(v1))) { - return op(v1, v2); - } - return value; - }, - /** - * 创建 op 操作的一个平行化版本 - */ - parallelize: function parallelize(op) { - return function(v1, v2) { - return utils.paralle(v1, v2, op); - }; - } - }; - /** - * @method isString() - * @for kity.Utils - * @grammar isString(unknown) => {boolean} - * @description 判断一个值是否为字符串类型 - * @param {any} unknown 要判断的值 - */ - /** - * @method isFunction() - * @for kity.Utils - * @grammar isFunction(unknown) => {boolean} - * @description 判断一个值是否为函数类型 - * @param {any} unknown 要判断的值 - */ - /** - * @method isArray() - * @for kity.Utils - * @grammar isArray(unknown) => {boolean} - * @description 判断一个值是否为数组类型 - * @param {any} unknown 要判断的值 - */ - /** - * @method isNumber() - * @for kity.Utils - * @grammar isNumber(unknown) => {boolean} - * @description 判断一个值是否为数字类型 - * @param {any} unknown 要判断的值 - */ - /** - * @method isRegExp() - * @for kity.Utils - * @grammar isRegExp(unknown) => {boolean} - * @description 判断一个值是否为正则表达式类型 - * @param {any} unknown 要判断的值 - */ - /** - * @method isObject() - * @for kity.Utils - * @grammar isObject(unknown) => {boolean} - * @description 判断一个值是否为对象类型 - * @param {any} unknown 要判断的值 - */ - /** - * @method isBoolean() - * @for kity.Utils - * @grammar isBoolean(unknown) => {boolean} - * @description 判断一个值是否为布尔类型 - * @param {any} unknown 要判断的值 - */ - utils.each([ "String", "Function", "Array", "Number", "RegExp", "Object", "Boolean" ], function(v) { - utils["is" + v] = function typeCheck(obj) { - return Object.prototype.toString.apply(obj) == "[object " + v + "]"; - }; - }); - return utils; - } -}; - -//src/filter/effect/colormatrixeffect.js -/** - * 颜色矩阵运算效果封装 - */ -_p[13] = { - value: function(require, exports, module) { - var Effect = _p.r(16), Utils = _p.r(12); - var ColorMatrixEffect = _p.r(11).createClass("ColorMatrixEffect", { - base: Effect, - constructor: function(type, input) { - this.callBase(Effect.NAME_COLOR_MATRIX); - this.set("type", Utils.getValue(type, ColorMatrixEffect.TYPE_MATRIX)); - this.set("in", Utils.getValue(input, Effect.INPUT_SOURCE_GRAPHIC)); - } - }); - Utils.extend(ColorMatrixEffect, { - // 类型常量 - TYPE_MATRIX: "matrix", - TYPE_SATURATE: "saturate", - TYPE_HUE_ROTATE: "hueRotate", - TYPE_LUMINANCE_TO_ALPHA: "luminanceToAlpha", - // 矩阵常量 - MATRIX_ORIGINAL: "10000010000010000010".split("").join(" "), - MATRIX_EMPTY: "00000000000000000000".split("").join(" ") - }); - return ColorMatrixEffect; - } -}; - -//src/filter/effect/compositeeffect.js -/** - * 高斯模糊效果封装 - */ -_p[14] = { - value: function(require, exports, module) { - var Effect = _p.r(16), Utils = _p.r(12); - var CompositeEffect = _p.r(11).createClass("CompositeEffect", { - base: Effect, - constructor: function(operator, input, input2) { - this.callBase(Effect.NAME_COMPOSITE); - this.set("operator", Utils.getValue(operator, CompositeEffect.OPERATOR_OVER)); - if (input) { - this.set("in", input); - } - if (input2) { - this.set("in2", input2); - } - } - }); - Utils.extend(CompositeEffect, { - // operator 常量 - OPERATOR_OVER: "over", - OPERATOR_IN: "in", - OPERATOR_OUT: "out", - OPERATOR_ATOP: "atop", - OPERATOR_XOR: "xor", - OPERATOR_ARITHMETIC: "arithmetic" - }); - return CompositeEffect; - } -}; - -//src/filter/effect/convolvematrixeffect.js -/** - * 像素级别的矩阵卷积运算效果封装 - */ -_p[15] = { - value: function(require, exports, module) { - var Effect = _p.r(16), Utils = _p.r(12); - var ConvolveMatrixEffect = _p.r(11).createClass("ConvolveMatrixEffect", { - base: Effect, - constructor: function(edgeMode, input) { - this.callBase(Effect.NAME_CONVOLVE_MATRIX); - this.set("edgeMode", Utils.getValue(edgeMode, ConvolveMatrixEffect.MODE_DUPLICATE)); - this.set("in", Utils.getValue(input, Effect.INPUT_SOURCE_GRAPHIC)); - } - }); - Utils.extend(ConvolveMatrixEffect, { - MODE_DUPLICATE: "duplicate", - MODE_WRAP: "wrap", - MODE_NONE: "none" - }); - return ConvolveMatrixEffect; - } -}; - -//src/filter/effect/effect.js -/* - * 效果类 - * 该类型的对象不存储任何内部属性, 所有操作都是针对该类对象所维护的节点进行的 - */ -_p[16] = { - value: function(require, exports, module) { - var svg = _p.r(67), Effect = _p.r(11).createClass("Effect", { - constructor: function(type) { - this.node = svg.createNode(type); - }, - getId: function() { - return this.node.id; - }, - setId: function(id) { - this.node.id = id; - return this; - }, - set: function(key, value) { - this.node.setAttribute(key, value); - return this; - }, - get: function(key) { - return this.node.getAttribute(key); - }, - getNode: function() { - return this.node; - }, - // 返回该效果的result - toString: function() { - return this.node.getAttribute("result") || ""; - } - }); - _p.r(12).extend(Effect, { - // 特效名称常量 - NAME_GAUSSIAN_BLUR: "feGaussianBlur", - NAME_OFFSET: "feOffset", - NAME_COMPOSITE: "feComposite", - NAME_COLOR_MATRIX: "feColorMatrix", - NAME_CONVOLVE_MATRIX: "feConvolveMatrix", - // 输入常量 - INPUT_SOURCE_GRAPHIC: "SourceGraphic", - INPUT_SOURCE_ALPHA: "SourceAlpha", - INPUT_BACKGROUND_IMAGE: "BackgroundImage", - INPUT_BACKGROUND_ALPHA: "BackgroundAlpha", - INPUT_FILL_PAINT: "FillPaint", - INPUT_STROKE_PAINT: "StrokePaint" - }); - return Effect; - } -}; - -//src/filter/effect/gaussianblureffect.js -/** - * 高斯模糊效果封装 - */ -_p[17] = { - value: function(require, exports, module) { - var Effect = _p.r(16), Utils = _p.r(12); - return _p.r(11).createClass("GaussianblurEffect", { - base: Effect, - constructor: function(stdDeviation, input) { - this.callBase(Effect.NAME_GAUSSIAN_BLUR); - this.set("stdDeviation", Utils.getValue(stdDeviation, 1)); - this.set("in", Utils.getValue(input, Effect.INPUT_SOURCE_GRAPHIC)); - } - }); - } -}; - -//src/filter/effect/offseteffect.js -/** - * 偏移效果封装 - */ -_p[18] = { - value: function(require, exports, module) { - var Effect = _p.r(16), Utils = _p.r(12); - return _p.r(11).createClass("OffsetEffect", { - base: Effect, - constructor: function(dx, dy, input) { - this.callBase(Effect.NAME_OFFSET); - this.set("dx", Utils.getValue(dx, 0)); - this.set("dy", Utils.getValue(dy, 0)); - this.set("in", Utils.getValue(input, Effect.INPUT_SOURCE_GRAPHIC)); - } - }); - } -}; - -//src/filter/effectcontainer.js -/* - * Effect所用的container - */ -_p[19] = { - value: function(require) { - return _p.r(11).createClass("EffectContainer", { - base: _p.r(29), - addEffect: function(point, pos) { - return this.addItem.apply(this, arguments); - }, - prependEffect: function() { - return this.prependItem.apply(this, arguments); - }, - appendEffect: function() { - return this.appendItem.apply(this, arguments); - }, - removeEffect: function(pos) { - return this.removeItem.apply(this, arguments); - }, - addEffects: function() { - return this.addItems.apply(this, arguments); - }, - setEffects: function() { - return this.setItems.apply(this, arguments); - }, - getEffect: function() { - return this.getItem.apply(this, arguments); - }, - getEffects: function() { - return this.getItems.apply(this, arguments); - }, - getFirstEffect: function() { - return this.getFirstItem.apply(this, arguments); - }, - getLastEffect: function() { - return this.getLastItem.apply(this, arguments); - }, - handleAdd: function(effectItem, pos) { - var count = this.getEffects().length, nextEffectItem = this.getItem(pos + 1); - // 最后一个节点, 直接追加 - if (count === pos + 1) { - this.node.appendChild(effectItem.getNode()); - return; - } - this.node.insertBefore(effectItem.getNode(), nextEffectItem.getNode()); - } - }); - } -}; - -//src/filter/filter.js -/** - * Filter 基类 - */ -_p[20] = { - value: function(require, exports, module) { - var svg = _p.r(67); - var Class = _p.r(11); - var Filter = Class.createClass("Filter", { - mixins: [ _p.r(19) ], - constructor: function(x, y, width, height) { - this.node = svg.createNode("filter"); - if (x !== undefined) { - this.set("x", x); - } - if (y !== undefined) { - this.set("y", y); - } - if (width !== undefined) { - this.set("width", width); - } - if (height !== undefined) { - this.set("height", height); - } - }, - getId: function() { - return this.id; - }, - setId: function(id) { - this.node.id = id; - return this; - }, - set: function(key, value) { - this.node.setAttribute(key, value); - return this; - }, - get: function(key) { - return this.node.getAttribute(key); - }, - getNode: function() { - return this.node; - } - }); - var Shape = _p.r(60); - Class.extendClass(Shape, { - applyFilter: function(filter) { - var filterId = filter.get("id"); - if (filterId) { - this.node.setAttribute("filter", "url(#" + filterId + ")"); - } - return this; - } - }); - return Filter; - } -}; - -//src/filter/gaussianblurfilter.js -/* - * 高斯模糊滤镜 - */ -_p[21] = { - value: function(require, exports, module) { - var GaussianblurEffect = _p.r(17); - return _p.r(11).createClass("GaussianblurFilter", { - base: _p.r(20), - constructor: function(stdDeviation) { - this.callBase(); - this.addEffect(new GaussianblurEffect(stdDeviation)); - } - }); - } -}; - -//src/filter/projectionfilter.js -/* - * 投影滤镜 - */ -_p[22] = { - value: function(require, exports, module) { - var GaussianblurEffect = _p.r(17), Effect = _p.r(16), ColorMatrixEffect = _p.r(13), Color = _p.r(28), Utils = _p.r(12), CompositeEffect = _p.r(14), OffsetEffect = _p.r(18); - return _p.r(11).createClass("ProjectionFilter", { - base: _p.r(20), - constructor: function(stdDeviation, dx, dy) { - this.callBase(); - this.gaussianblurEffect = new GaussianblurEffect(stdDeviation, Effect.INPUT_SOURCE_ALPHA); - this.gaussianblurEffect.set("result", "gaussianblur"); - this.addEffect(this.gaussianblurEffect); - this.offsetEffect = new OffsetEffect(dx, dy, this.gaussianblurEffect); - this.offsetEffect.set("result", "offsetBlur"); - this.addEffect(this.offsetEffect); - this.colorMatrixEffect = new ColorMatrixEffect(ColorMatrixEffect.TYPE_MATRIX, this.offsetEffect); - this.colorMatrixEffect.set("values", ColorMatrixEffect.MATRIX_ORIGINAL); - this.colorMatrixEffect.set("result", "colorOffsetBlur"); - this.addEffect(this.colorMatrixEffect); - this.compositeEffect = new CompositeEffect(CompositeEffect.OPERATOR_OVER, Effect.INPUT_SOURCE_GRAPHIC, this.colorMatrixEffect); - this.addEffect(this.compositeEffect); - }, - // 设置投影颜色 - setColor: function(color) { - var matrix = null, originMatrix = null, colorValue = []; - if (Utils.isString(color)) { - color = Color.parse(color); - } - if (!color) { - return this; - } - matrix = ColorMatrixEffect.MATRIX_EMPTY.split(" "); - colorValue.push(color.get("r")); - colorValue.push(color.get("g")); - colorValue.push(color.get("b")); - // rgb 分量更改 - for (var i = 0, len = colorValue.length; i < len; i++) { - matrix[i * 5 + 3] = colorValue[i] / 255; - } - // alpha 分量更改 - matrix[18] = color.get("a"); - this.colorMatrixEffect.set("values", matrix.join(" ")); - return this; - }, - // 设置投影透明度 - setOpacity: function(opacity) { - var matrix = this.colorMatrixEffect.get("values").split(" "); - matrix[18] = opacity; - this.colorMatrixEffect.set("values", matrix.join(" ")); - return this; - }, - // 设置阴影偏移量 - setOffset: function(dx, dy) { - this.setOffsetX(dx); - this.setOffsetY(dy); - }, - setOffsetX: function(dx) { - this.offsetEffect.set("dx", dx); - }, - setOffsetY: function(dy) { - this.offsetEffect.set("dy", dy); - }, - setDeviation: function(deviation) { - this.gaussianblurEffect.set("stdDeviation", deviation); - } - }); - } -}; - -//src/graphic/bezier.js -/** - * @fileOverview - * - * 贝塞尔曲线 - */ -_p[23] = { - value: function(require, exports, module) { - /** - * @class kity.Bezier - * @mixins kity.PointContainer - * @base kity.Path - * @description 绘制和使用贝塞尔曲线。贝塞尔曲线作为一个贝塞尔点的容器,任何贝塞尔点的改变都会更改贝塞尔曲线的外观 - */ - return _p.r(11).createClass("Bezier", { - mixins: [ _p.r(51) ], - base: _p.r(46), - /** - * @constructor - * @for kity.Bezier - * - * @grammar new kity.Bezier(bezierPoints) - * - * @param {kity.BezierPoints[]} bezierPoints 贝塞尔点集合,每个元素应该是 {kity.BezierPoint} 类型 - * - * @example - * - * ```js - * var bezier = new kity.Bezier([ - * new kity.BezierPoint(0, 0).setForward(100, 0), - * new kity.BezierPoint(100, 100).setBackward(100, 0) - * ]); - * ``` - */ - constructor: function(bezierPoints) { - this.callBase(); - bezierPoints = bezierPoints || []; - this.changeable = true; - this.setBezierPoints(bezierPoints); - }, - /** - * @method getBezierPoints() - * @for kity.Bezier - * @description 返回当前贝塞尔曲线的贝塞尔点集合 - * - * @grammar getBezierPoints() => {kity.BezierPoints[]} - * - */ - getBezierPoints: function() { - return this.getPoints(); - }, - /** - * @method setBezierPoints() - * @for kity.Bezier - * @description 设置当前贝塞尔曲线的贝塞尔点集合 - * - * @grammar setBeizerPoints(bezierPoints) => {this} - * - * @param {kity.BezierPoint[]} bezierPoints 贝塞尔点集合 - */ - setBezierPoints: function(bezierPoints) { - return this.setPoints(bezierPoints); - }, - //当点集合发生变化时采取的动作 - onContainerChanged: function() { - if (this.changeable) { - this.update(); - } - }, - update: function() { - var drawer = null, bezierPoints = this.getBezierPoints(); - //单独的一个点不画任何图形 - if (bezierPoints.length < 2) { - return; - } - drawer = this.getDrawer(); - drawer.clear(); - var vertex = bezierPoints[0].getVertex(), forward = null, backward = null; - drawer.moveTo(vertex.x, vertex.y); - for (var i = 1, len = bezierPoints.length; i < len; i++) { - vertex = bezierPoints[i].getVertex(); - backward = bezierPoints[i].getBackward(); - forward = bezierPoints[i - 1].getForward(); - drawer.bezierTo(forward.x, forward.y, backward.x, backward.y, vertex.x, vertex.y); - } - return this; - } - }); - } -}; - -//src/graphic/bezierpoint.js -/** - * @fileOverview - * - * 表示一个贝塞尔点 - */ -_p[24] = { - value: function(require, exports, module) { - var ShapePoint = _p.r(63); - var Vector = _p.r(73); - /** - * @class kity.BezierPoint - * - * @description 表示一个贝塞尔点 - * 一个贝塞尔点由顶点坐标(曲线经过的点)、前方控制点、后方控制点表示 - */ - var BezierPoint = _p.r(11).createClass("BezierPoint", { - /** - * @constructor - * @for kity.BezierPoint - * - * @description 创建一个具有默认顶点坐标的贝塞尔点,两个控制点的坐标和顶点一致 - * - * @param {Number} x 顶点的 x 坐标 - * @param {Number} y 顶点的 y 坐标 - * @param {Boolean} isSmooth 指示当前贝塞尔点是否光滑,光滑会约束顶点和两个控制点共线 - */ - constructor: function(x, y, isSmooth) { - //顶点 - this.vertex = new ShapePoint(x, y); - //控制点 - this.forward = new ShapePoint(x, y); - this.backward = new ShapePoint(x, y); - //是否平滑 - this.setSmooth(isSmooth === undefined || isSmooth); - this.setSymReflaction(true); - }, - /** - * @method clone() - * @for kity.BezierPoint - * @description 返回贝塞尔点的一份拷贝 - * - * @grammar clone() => {kity.BezierPoint} - */ - clone: function() { - var newPoint = new BezierPoint(), tmp = null; - tmp = this.getVertex(); - newPoint.setVertex(tmp.x, tmp.y); - tmp = this.getForward(); - newPoint.setForward(tmp.x, tmp.y); - tmp = this.getBackward(); - newPoint.setBackward(tmp.x, tmp.y); - newPoint.setSymReflaction(this.isSymReflaction); - newPoint.setSmooth(this.isSmooth()); - return newPoint; - }, - /** - * @method setVertex() - * @for kity.BezierPoint - * @description 设置贝塞尔点的顶点坐标,注意,控制点的坐标不会跟着变化。希望控制点的坐标跟着变化,请用 moveTo() 方法 - * - * @grammar setVertex(x, y) => {this} - * - * @param {Number} x 顶点的 x 坐标 - * @param {Number} y 顶点的 y 坐标 - */ - setVertex: function(x, y) { - this.vertex.setPoint(x, y); - this.update(); - return this; - }, - /** - * @method moveTo() - * @for kity.BezierPoint - * @description 同步移动整个贝塞尔点,使顶点的移动到指定的坐标中。控制点的位置相对顶点坐标固定。 - * - * @grammar moveTo() => {this} - * - * @param {Number} x 顶点的目标 x 坐标 - * @param {Number} y 顶点的目标 y 坐标 - * - */ - moveTo: function(x, y) { - var oldForward = this.forward.getPoint(), oldBackward = this.backward.getPoint(), oldVertex = this.vertex.getPoint(), //移动距离 - distance = { - left: x - oldVertex.x, - top: y - oldVertex.y - }; - // 更新 - this.forward.setPoint(oldForward.x + distance.left, oldForward.y + distance.top); - this.backward.setPoint(oldBackward.x + distance.left, oldBackward.y + distance.top); - this.vertex.setPoint(x, y); - this.update(); - }, - /** - * @method setForward() - * @for kity.BezierPoint - * @description 设置前方控制点的位置,如果贝塞尔点光滑,后方控制点会跟着联动 - * - * @grammar setForward(x, y) => {this} - * - * @param {Number} x 前方控制点的 x 坐标 - * @param {Number} y 前方控制点的 y 坐标 - */ - setForward: function(x, y) { - this.forward.setPoint(x, y); - //更新后置点 - if (this.smooth) { - this.updateAnother(this.forward, this.backward); - } - this.update(); - this.lastControlPointSet = this.forward; - return this; - }, - /** - * @method setBackward() - * @for kity.BezierPoint - * @description 设置后方控制点的位置,如果贝塞尔点光滑,前方控制点会跟着联动 - * - * @grammar setBackward(x, y) => {this} - * - * @param {Number} x 后方控制点的 x 坐标 - * @param {Number} y 后方控制点的 y 坐标 - */ - setBackward: function(x, y) { - this.backward.setPoint(x, y); - //更新前置点 - if (this.smooth) { - this.updateAnother(this.backward, this.forward); - } - this.update(); - this.lastControlPointSet = this.backward; - return this; - }, - /** - * @method setSymReflaction() - * @for kity.BezierPoint - * @description 设定是否镜像两个控制点的位置 - * - * @grammar setSymReflaction(value) => {this} - * - * @param {boolean} value 如果设置为 true,且贝塞尔点光滑,两个控制点离顶点的距离相等 - */ - setSymReflaction: function(value) { - this.symReflaction = value; - if (this.smooth) this.setSmooth(true); - return this; - }, - /** - * @method isSymReflaction() - * @for kity.BezierPoint - * @description 当前贝塞尔点的两个控制点是否被镜像约束 - * - * @grammar isSymReflaction() => {boolean} - */ - isSymReflaction: function() { - return this.symReflaction; - }, - /** - * @private - * - * 根据前方控制点或后方控制点更新另一方 - */ - updateAnother: function(p, q) { - var v = this.getVertex(), pv = Vector.fromPoints(p.getPoint(), v), vq = Vector.fromPoints(v, q.getPoint()); - vq = pv.normalize(this.isSymReflaction() ? pv.length() : vq.length()); - q.setPoint(v.x + vq.x, v.y + vq.y); - return this; - }, - /** - * @method setSmooth() - * @for kity.BezierPoint - * @description 设置贝塞尔点是否光滑,光滑会约束顶点和两个控制点共线 - * - * @param {Boolean} isSmooth 设置为 true 让贝塞尔点光滑 - */ - setSmooth: function(isSmooth) { - var lc; - this.smooth = !!isSmooth; - if (this.smooth && (lc = this.lastControlPointSet)) { - this.updateAnother(lc, lc == this.forward ? this.backward : this.forward); - } - return this; - }, - /** - * @method isSmooth() - * @for kity.BezierPoint - * @description 判断贝塞尔点是否光滑 - * - * @grammar isSmooth() => {boolean} - */ - isSmooth: function() { - return this.smooth; - }, - /** - * @method getVertex() - * @for kity.BezierPoint - * @description 获得当前贝塞尔点的顶点 - * - * @grammar getVertex() => {kity.ShapePoint} - */ - getVertex: function() { - return this.vertex.getPoint(); - }, - /** - * @method getForward() - * @for kity.BezierPoint - * @description 获得当前贝塞尔点的前方控制点 - * - * @grammar getForward() => {kity.ShapePoint} - */ - getForward: function() { - return this.forward.getPoint(); - }, - /** - * @method getBackward() - * @for kity.BezierPoint - * @description 获得当前贝塞尔点的后方控制点 - * - * @grammar getBackward() => {kity.ShapePoint} - */ - getBackward: function() { - return this.backward.getPoint(); - }, - /** - * @private - * - * 联动更新相关的贝塞尔曲线 - */ - update: function() { - if (!this.container) { - return this; - } - //新增参数 this, 把当前引起变化的点传递过去, 以便有需要的地方可以获取到引起变化的源 - if (this.container.update) this.container.update(this); - } - }); - return BezierPoint; - } -}; - -//src/graphic/box.js -/** - * @fileOverview - * - * 表示一个矩形区域 - */ -_p[25] = { - value: function(require, exports, module) { - /** - * @class kity.Box - * @description 表示一个矩形区域 - */ - var Box = _p.r(11).createClass("Box", { - /** - * @constructor - * @for kity.Box - * - * @grammar new kity.Box(x, y, width, height) - * @grammar new kity.Box(box) - * - * @param {Number} x|box.x 矩形区域的 x 坐标 - * @param {Number} y|box.y 矩形区域的 y 坐标 - * @param {Number} width|box.width 矩形区域的宽度 - * @param {Number} height|box.height 矩形区域的高度 - * - * @example - * - * ```js - * var box = new kity.Box(10, 20, 50, 50); - * var box2 = new kity.Box({x: 10, y: 20, width: 50, height: 50}); - * ``` - */ - constructor: function(x, y, width, height) { - var box = arguments[0]; - if (box && typeof box === "object") { - x = box.x; - y = box.y; - width = box.width; - height = box.height; - } - if (width < 0) { - x -= width = -width; - } - if (height < 0) { - y -= height = -height; - } - /** - * @property x - * @for kity.Box - * @type {Number} - * @readOnly - * @description 矩形区域的 x 坐标 - */ - this.x = x || 0; - /** - * @property y - * @for kity.Box - * @type {Number} - * @readOnly - * @description 矩形区域的 y 坐标 - */ - this.y = y || 0; - /** - * @property width - * @for kity.Box - * @type {Number} - * @readOnly - * @description 矩形区域的宽度 - */ - this.width = width || 0; - /** - * @property height - * @for kity.Box - * @type {Number} - * @readOnly - * @description 矩形区域的高度 - */ - this.height = height || 0; - /** - * @property left - * @for kity.Box - * @type {Number} - * @readOnly - * @description 矩形区域的最左侧坐标,等价于 x 的值 - */ - this.left = this.x; - /** - * @property right - * @for kity.Box - * @type {Number} - * @readOnly - * @description 矩形区域的最右侧坐标,等价于 x + width 的值 - */ - this.right = this.x + this.width; - /** - * @property top - * @for kity.Box - * @type {Number} - * @readOnly - * @description 矩形区域的最上侧坐标,等价于 y 的值 - */ - this.top = this.y; - /** - * @property bottom - * @for kity.Box - * @type {Number} - * @readOnly - * @description 矩形区域的最下侧坐标,等价于 y + height 的值 - */ - this.bottom = this.y + this.height; - /** - * @property cx - * @for kity.Box - * @type {Number} - * @readOnly - * @description 矩形区域的中心 x 坐标 - */ - this.cx = this.x + this.width / 2; - /** - * @property cy - * @for kity.Box - * @type {Number} - * @readOnly - * @description 矩形区域的中心 y 坐标 - */ - this.cy = this.y + this.height / 2; - }, - /** - * @method getRangeX() - * @for kity.Box - * @description 获得矩形区域的 x 值域 - * - * @grammar getRangeX() => {Number[]} - * - * @example - * - * var box = new kity.Box(10, 10, 30, 50); - * console.log(box.getRangeX()); // [10, 40] - */ - getRangeX: function() { - return [ this.left, this.right ]; - }, - /** - * @method getRangeY() - * @for kity.Box - * @description 获得矩形区域的 y 值域 - * - * @grammar getRangeY() => {Number[]} - * - * @example - * - * var box = new kity.Box(10, 10, 30, 50); - * console.log(box.getRangeY()); // [10, 60] - */ - getRangeY: function() { - return [ this.top, this.bottom ]; - }, - /** - * @method merge() - * @for kity.Box - * @description 把当前矩形区域和指定的矩形区域合并,返回一个新的矩形区域(即包含两个源矩形区域的最小矩形区域) - * - * @grammar merge(another) => {kity.Box} - * @param {kity.Box} another 要合并的矩形区域 - * - * @example - * - * ```js - * var box1 = new kity.Box(10, 10, 50, 50); - * var box2 = new kity.Box(30, 30, 50, 50); - * var box3 = box1.merge(box2); - * console.log(box3.valueOf()); // [10, 10, 70, 70] - * ``` - */ - merge: function(another) { - if (this.isEmpty()) { - return new Box(another.x, another.y, another.width, another.height); - } - var left = Math.min(this.left, another.left), right = Math.max(this.right, another.right), top = Math.min(this.top, another.top), bottom = Math.max(this.bottom, another.bottom); - return new Box(left, top, right - left, bottom - top); - }, - /** - * @method intersect() - * @for kity.Box - * @description 求当前矩形区域和指定的矩形区域重叠的矩形区域 - * - * @grammar intersect(another) => {kity.Box} - * @param {kity.Box} another 要求重叠的矩形区域 - * - * @example - * - * ```js - * var box1 = new kity.Box(10, 10, 50, 50); - * var box2 = new kity.Box(30, 30, 50, 50); - * var box3 = box1.intersect(box2); - * console.log(box3.valueOf()); // [30, 30, 20, 20] - * ``` - */ - intersect: function(another) { - if (!another instanceof Box) { - another = new Box(another); - } - var left = Math.max(this.left, another.left), right = Math.min(this.right, another.right), top = Math.max(this.top, another.top), bottom = Math.min(this.bottom, another.bottom); - if (left > right || top > bottom) return new Box(); - return new Box(left, top, right - left, bottom - top); - }, - /** - * @method expand() - * @for kity.Box - * @description 扩展(或收缩)当前的盒子,返回新的盒子 - * - * @param {Number} top - * 矩形区域的上边界往上扩展的值;如果是负数,则上边界往下收缩 - * - * @param {Number} right - * [Optional] 矩形区域的右边界往右拓展的值; - * 如果是负数,则右边界往左收缩; - * 如果不设置该值,使用和 top 同样的值。 - * - * @param {Number} bottom - * [Optional] 矩形区域的下边界往下拓展的值; - * 如果是负数,则下边界往上收缩; - * 如果不设置该值,使用和 top 同样的值。 - * - * @param {Number} left - * [Optional] 矩形区域的左边界往左拓展的值; - * 如果是负数,则左边界往右收缩; - * 如果不设置该值,使用和 right 同样的值。 - * - * @example - * - * ```js - * var box = new kity.Box(10, 10, 20, 20); - * var box1 = box.expand(10); // [0, 0, 40, 40] - * var box2 = box.expand(10, 20); // [0, -10, 40, 60] - * var box3 = box.expand(1, 2, 3, 4); // [9, 8, 24, 26] - * ``` - */ - expand: function(top, right, bottom, left) { - if (arguments.length < 1) { - return new Box(this); - } - if (arguments.length < 2) { - right = top; - } - if (arguments.length < 3) { - bottom = top; - } - if (arguments.length < 4) { - left = right; - } - var x = this.left - left, y = this.top - top, width = this.width + right, height = this.height + top; - return new Box(x, y, width, height); - }, - /** - * @method valueOf() - * @for kity.Box - * @description 返回当前盒子的数组表示 - * - * @grammar valueOf() => {Number[]} - * - * @example - * - * ```js - * var box = new kity.Box(0, 0, 200, 50); - * console.log(box.valueOf()); // [0, 0, 200, 50] - * ``` - */ - valueOf: function() { - return [ this.x, this.y, this.width, this.height ]; - }, - /** - * @method toString() - * @for kity.Box - * @description 返回当前盒子的字符串表示 - * - * @grammar toString() => {String} - * - * @example - * - * ```js - * var box = new kity.Box(0, 0, 200, 50); - * console.log(box.toString()); // "0 0 200 50" - */ - toString: function() { - return this.valueOf().join(" "); - }, - /** - * @method isEmpty() - * @for kity.Box - * @description 判断当前盒子是否具有尺寸(面积大 - * - * @grammar isEmpty() => {boolean} - * - * @example - * ```js - * var box = new kity.Box(0, 0, 0, 100000); - * console.log(box.isEmpty()); // true - * ``` - */ - isEmpty: function() { - return !this.width || !this.height; - } - }); - /** - * @method parse() - * @static - * @for kity.Box - * @description 解析一个字符串或数组为 kity.Box 对象 - * - * @grammar kity.Box.parse(any) => {kity.Box} - * - * @param {Number[]|String} any 要解析的字符串或数组 - * - * @example - * - * ```js - * console.log(kity.Box.parse('0 0 100 200')); - * console.log(kity.Box.parse([0, 0, 100, 200])); - * ``` - */ - Box.parse = function(any) { - if (typeof any == "string") { - return Box.parse(any.split(/[\s,]+/).map(parseFloat)); - } - if (any instanceof Array) { - return new Box(any[0], any[1], any[2], any[3]); - } - if ("x" in any) return new Box(any); - return null; - }; - return Box; - } -}; - -//src/graphic/circle.js -/** - * @fileOverview - * - * 绘制和使用圆形 - */ -_p[26] = { - value: function(require, exports, module) { - /** - * @class kity.Circle - * @base kity.Ellipse - * @description 表示一个圆形 - */ - return _p.r(11).createClass("Circle", { - base: _p.r(32), - /** - * @constructor - * @for kity.Circle - * - * @grammar new kity.Circle(radius, cx, cy) - * - * @param {Number} radius 半径 - * @param {Number} cx 圆心 x 坐标 - * @param {Number} cy 圆心 y 坐标 - */ - constructor: function(radius, cx, cy) { - this.callBase(radius, radius, cx, cy); - }, - /** - * @method - * @for kity.Circle - * @description 获取圆形的半径 - * - * @grammar getRadius() => {Number} - */ - getRadius: function() { - return this.getRadiusX(); - }, - /** - * @method - * @for kity.Circle - * @description 设置圆形的半径 - * - * @grammar setRadius() => {this} - * - * @param {Number} radius 半径大小 - */ - setRadius: function(radius) { - return this.callBase(radius, radius); - } - }); - } -}; - -//src/graphic/clip.js -/** - * @fileOverview - * - * 支持图形裁切 - */ -_p[27] = { - value: function(require, exports, module) { - var Class = _p.r(11); - var Shape = _p.r(60); - /** - * @class kity.Clip - * @base kity.Resource - * @mixins kity.ShapeContainer - * - * @description 创建图形裁切,用于裁切目标图形 - */ - var Clip = Class.createClass("Clip", { - base: Shape, - mixins: [ _p.r(61) ], - /** - * @constructor - * @for kity.Clip - * - * @grammar new kity.Clip(paper) - * - * @param {kity.Paper} paper 资源所属的文档 - * - * @example - * - * ```js - * var circle = paper.put(new kity.Circle(100).fill('yellow')); - * var clip = new kity.Clip(paper); - * clip.addShape(new kity.Circle(100, 50, 0)); - * clip.clip(circle); - * ``` - */ - constructor: function(paper) { - this.callBase("clipPath", paper); - }, - /** - * @method clip() - * @for kity.Clip - * @description 将裁切应用到指定的图形上,应用之后,目标图形将显示与裁切形状重合的部分 - * - * @grammar clip(shape) => {this} - * - * @param {kity.Shape} shape 要应用裁切的图形 - */ - clip: function(shape) { - shape.getNode().setAttribute("clip-path", this); - return this; - } - }); - Class.extendClass(Shape, { - /** - * @method clipWidth() - * @for kity.Shape - * - * @grammar clipWidth(clip) => {this} - * - * @param {kity.Clip|kity.Shape} clip 要用于裁切当前图形的图形; - * 如果 clip 本身是一个裁切对象(kity.Clip 类型),则直接裁切; - * 否则将创建新的裁切包含给定的图形,然后对当前图形进行裁切 - * - * @example - * - * ```js - * var circle = paper.put(new kity.Circle(100)); - * var rect = paper.put(new kity.Rect(100, 100, -100, 0)); - * - * circle.clipWidth(rect); - * ``` - */ - clipWith: function(clip) { - if (clip instanceof Shape) { - clip = new Clip(clip.getPaper()).addShape(clip); - } - clip.clip(this); - return this; - } - }); - return Clip; - } -}; - -//src/graphic/color.js -/** - * @fileOverview - * - * 提供颜色支持 - */ -_p[28] = { - value: function(require, exports, module) { - var Utils = _p.r(12), StandardColor = _p.r(64), ColorUtils = {}, /** - * @class kity.Color - * @description 表示一个颜色 - */ - Color = _p.r(11).createClass("Color", { - /** - * @constructor - * @for kity.Color - * - * @grammar new kity.Color(r, g, b) - * @grammar new kity.Color(r, g, b, a) - * @grammar new kity.Color(colorString) - * - * @param {Number} r 红色分量,取值 0 - 255 - * @param {Number} g 绿色分量,取值 0 - 255 - * @param {Number} b 蓝色分量,取值 0 - 255 - * @param {Number} a 透明度(可选),取值 0 - 100 - * @param {String} colorString 一个代表颜色的字符串,可以是: - * 熟知颜色表:如 'red', 'yellow' - * HEX 表示:如 '#368', '#123456' - * RGB 表示:如 'RGB(200, 200, 0)', 'RGBA(200, 200, 200, .5)' - * HSL 表示:如 'HSL(100, 60%, 80%)', 'HSLA(100, 60%, 80%, .5)' - */ - constructor: function() { - var colorValue = null; - //parse构造 - if (typeof arguments[0] === "string") { - colorValue = ColorUtils.parseToValue(arguments[0]); - //解析失败 - if (colorValue === null) { - colorValue = { - r: 0, - g: 0, - b: 0, - h: 0, - s: 0, - l: 0, - a: 1 - }; - } - } else { - colorValue = { - r: arguments[0] | 0, - g: arguments[1] | 0, - b: arguments[2] | 0, - //alpha 默认为1 - a: arguments[3] === undefined ? 1 : parseFloat(arguments[3]) - }; - colorValue = ColorUtils.overflowFormat(colorValue); - //获取hsl分量 - colorValue = Utils.extend(colorValue, ColorUtils.rgbValueToHslValue(colorValue)); - } - this._color = colorValue; - }, - /** - * @method set() - * @for kity.Color - * - * @description 设置当前颜色某个分量的值 - * - * @grammar set(name, value) => {this} - * - * @param {string} name 要设置的颜色通道的名称 - * r: 红色(Red),取值范围 [0, 255] - * g: 绿色(Green),取值范围 [0, 255] - * b: 蓝色(Blue),取值范围 [0, 255] - * a: 透明度(Alpha),取值范围 [0, 1] - * h: 色环角度(Hue),取值范围 [0, 359] - * s: 饱和度(Saturation),取值范围 [0, 100] - * l: 亮度(Lightness),取值范围 [0, 100] - * r、g、b 值和 h、s、l 值会联动修改 - * @param {number} value 要设置的值 - */ - set: function(name, value) { - var values = null; - //设置的值非法 - if (!Color._MAX_VALUE[name]) { - throw new Error("Color set(): Illegal parameter"); - } - if (name !== "a") { - value = Math.floor(value); - } - if (name == "h") { - value = (value + 360) % 360; - } - this._color[name] = Math.max(Color._MIN_VALUE[name], Math.min(Color._MAX_VALUE[name], value)); - if ("rgb".indexOf(name) !== -1) { - this._color = Utils.extend(this._color, ColorUtils.rgbValueToHslValue(this._color)); - } else if ("hsl".indexOf(name) !== -1) { - this._color = Utils.extend(this._color, ColorUtils.hslValueToRGBValue(this._color)); - } - return this; - }, - /** - * @method inc() - * - * @description 返回新的颜色,表示当前颜色增加指定通道的值之后的颜色 - * - * @grammar inc(name, value) => {this} - * - * @param {string} name 要增加的通道的名称,具体含义请查看 set 方法 - * @param {number} value 增量值 - */ - inc: function(name, value) { - value = this.get(name) + value; - if (name == "h") { - value = (value + 360) % 360; - } else { - value = Math.min(Color._MAX_VALUE[name], value); - value = Math.max(Color._MIN_VALUE[name], value); - } - return this.clone().set(name, value); - }, - /** - * @method dec() - * @for kity.Color - * - * @description 返回新的颜色,表示当前颜色减少指定通道的值之后的颜色 - * - * @grammar dec(name, value) => {this} - * - * @param {string} name 要减少值的通道的名称,具体含义请查看 set 方法 - * @param {number} value 减量值 - */ - dec: function(name, value) { - return this.inc(name, -value); - }, - /** - * @method clone() - * @for kity.Color - * - * @description 返回当前颜色的一个拷贝 - * - * @grammar clone() => {kity.Color} - */ - clone: function() { - return new Color(this.toRGBA()); - }, - /** - * @method get() - * @for kity.Color - * - * @description 返回当前颜色指定的分量 - * - * @grammar get() => {number} - */ - get: function(name) { - if (!Color._MAX_VALUE[name]) { - return null; - } - return this._color[name]; - }, - getValues: function() { - return Utils.clone(this._color); - }, - /** - * @method valueOf() - * @for kity.Color - * - * @description 返回当前颜色的一个字面量表示 - * - * @return {plain} 颜色字面量,其结构为: - * { - * r: 0, - * g: 0, - * b: 0, - * a: 0, - * h: 0, - * s: 0, - * l: 0 - * } - */ - valueOf: function() { - return this.getValues(); - }, - /** - * @method toRGB() - * @for kity.Color - * - * @description 返回当前颜色的 RGB 表示,如果颜色有透明度,将抛弃透明度属性(想要保留请使用 toRGBA())方法。 - * - * @grammar toRGB() => {string} - */ - toRGB: function() { - return ColorUtils.toString(this._color, "rgb"); - }, - /** - * @method toRGBA() - * @for kity.Color - * - * @description 返回当前颜色的 RGBA 表示 - * - * @grammar toRGBA() => {string} - */ - toRGBA: function() { - return ColorUtils.toString(this._color, "rgba"); - }, - /** - * @method toHEX() - * @for kity.Color - * - * @description 返回当前颜色的 HEX 表示,如果颜色有透明度,将抛弃透明度属性(想要保留请使用 toRGBA())方法。 - * - * @grammar toHEX() => {string} - */ - toHEX: function() { - return ColorUtils.toString(this._color, "hex"); - }, - /** - * @method toHSL() - * @for kity.Color - * - * @description 返回当前颜色的 HSL 表示,如果颜色有透明度,将抛弃透明度属性(想要保留请使用 toHSLA())方法。 - * - * @grammar toHSL() => {string} - */ - toHSL: function() { - return ColorUtils.toString(this._color, "hsl"); - }, - /** - * @method toHSLA() - * @for kity.Color - * - * @description 返回当前颜色的 HSLA 表示 - * - * @grammar toHSLA() => {string} - */ - toHSLA: function() { - return ColorUtils.toString(this._color, "hsla"); - }, - /** - * @method toString() - * @for kity.Color - * - * @description 返回当前颜色的 RGB 或 RGBA 表示,如果颜色有透明度,将使用 RGBA 形式,否则是 RGB 形式 - * @grammar toString() => {string} - */ - toString: function() { - if (this._color.a === 1) { - return this.toRGB(); - } - return this.toRGBA(); - } - }); - //Color 静态方法 - Utils.extend(Color, { - //各分量可表示的最大值 - _MAX_VALUE: { - r: 255, - g: 255, - b: 255, - h: 360, - s: 100, - l: 100, - a: 1 - }, - //各分量最小值 - _MIN_VALUE: { - r: 0, - g: 0, - b: 0, - h: 0, - s: 0, - l: 0, - a: 0 - }, - //分量常量 - R: "r", - G: "g", - B: "b", - H: "h", - S: "s", - L: "l", - A: "a", - /** - * @method parse() - * @static - * @for kity.Color - * - * @description 解析一个颜色字符串为 kity.Color 对象 - * - * @grammar kity.Color.parse(valStr) - * - * @param {string} valStr 一个代表颜色的字符串,可以是: - * 熟知颜色表:如 'red', 'yellow' - * HEX 表示:如 '#368', '#123456' - * RGB 表示:如 'RGB(200, 200, 0)', 'RGBA(200, 200, 200, .5)' - * HSL 表示:如 'HSL(100, 60%, 80%)', 'HSLA(100, 60%, 80%, .5)' - */ - parse: function(valStr) { - var rgbValue; - if (Utils.isString(valStr)) { - rgbValue = ColorUtils.parseToValue(valStr); - } - if (Utils.isObject(valStr) && "r" in valStr) { - rgbValue = valStr; - } - //解析失败, 返回一个默认color实例 - if (rgbValue === null) { - return new Color(); - } - return new Color(rgbValue.r, rgbValue.g, rgbValue.b, rgbValue.a); - }, - /** - * @method createHSL() - * @for kity.Color - * @static - * - * @description 创建一个 HSL 颜色 - * - * @grammar kity.Color.createHSL(h, s, l) => {kity.Color} - * - * @param {number} h 色环(Hue)分量值,取值范围 [0, 359] - * @param {number} s 饱和度(Saturation)分量值,取值范围 [0, 100] - * @param {number} l 亮度(Lighteness)分量值,取值范围 [0, 100] - */ - createHSL: function(h, s, l) { - return Color.createHSLA(h, s, l, 1); - }, - /** - * @method createHSLA() - * @for kity.Color - * @static - * - * @description 创建一个 HSLA 颜色 - * - * @grammar kity.Color.createHSLA(h, s, l, a) => {kity.Color} - * - * @param {number} h 色环(Hue)分量值,取值范围 [0, 359] - * @param {number} s 饱和度(Saturation)分量值,取值范围 [0, 100] - * @param {number} l 亮度(Lighteness)分量值,取值范围 [0, 100] - * @param {number} a 透明度(Alpha)分量值,取值范围 [0, 1] - */ - createHSLA: function(h, s, l, a) { - var colorValue = null; - s += "%"; - l += "%"; - colorValue = [ "hsla(" + h, s, l, a + ")" ]; - return Color.parse(colorValue.join(", ")); - }, - /** - * @method createRGB() - * @for kity.Color - * @static - * - * @description 创建一个 RGB 颜色 - * - * @grammar kity.Color.createRGB(r, g, b) => {kity.Color} - * - * @param {number} r 红色(Red)分量值,取值范围 [0, 255] - * @param {number} g 绿色(Green)分量值,取值范围 [0, 255] - * @param {number} b 蓝色(Blue)分量值,取值范围 [0, 255] - */ - createRGB: function(r, g, b) { - return Color.createRGBA(r, g, b, 1); - }, - /** - * @method createRGBA() - * @for kity.Color - * @static - * - * @description 创建一个 RGBA 颜色 - * - * @grammar kity.Color.createRGBA(r, g, b, a) => {kity.Color} - * - * @param {number} r 红色(Red)分量值,取值范围 [0, 255] - * @param {number} g 绿色(Green)分量值,取值范围 [0, 255] - * @param {number} b 蓝色(Blue)分量值,取值范围 [0, 255] - * @param {number} a 透明度(Alpha)分量值,取值范围 [0, 1] - */ - createRGBA: function(r, g, b, a) { - return new Color(r, g, b, a); - } - }); - //内部工具对象 - Utils.extend(ColorUtils, { - parseToValue: function(valStr) { - var rgbaValue = {}; - /* 优先检测在调色板中是否有对应的颜色 */ - valStr = StandardColor.EXTEND_STANDARD[valStr] || StandardColor.COLOR_STANDARD[valStr] || valStr; - /* 颜色转换 */ - //hex格式 - if (/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(valStr)) { - rgbaValue = ColorUtils.hexToValue(valStr); - } else if (/^(rgba?)/i.test(valStr)) { - rgbaValue = ColorUtils.rgbaToValue(valStr); - } else if (/^(hsla?)/i.test(valStr)) { - rgbaValue = ColorUtils.hslaToValue(valStr); - } else { - return null; - } - return ColorUtils.overflowFormat(rgbaValue); - }, - hexToValue: function(hexStr) { - var result = {}, keys = [ "r", "g", "b" ]; - if (/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(hexStr)) { - hexStr = RegExp.$1.split(""); - Utils.each(keys, function(key, index) { - if (hexStr.length === 3) { - result[key] = ColorUtils.toNumber(hexStr[index] + hexStr[index]); - } else { - result[key] = ColorUtils.toNumber(hexStr[index * 2] + hexStr[index * 2 + 1]); - } - }); - //转换出hsl值 - result = Utils.extend(result, ColorUtils.rgbValueToHslValue(result)); - result.a = 1; - return result; - } - return null; - }, - rgbaToValue: function(rgbaStr) { - var result = {}, hasAlpha = false, keys = [ "r", "g", "b" ]; - if (/^(rgba?)/i.test(rgbaStr)) { - hasAlpha = RegExp.$1.length === 4; - rgbaStr = rgbaStr.replace(/^rgba?/i, "").replace(/\s+/g, "").replace(/[^0-9,.]/g, "").split(","); - Utils.each(keys, function(key, index) { - result[key] = rgbaStr[index] | 0; - }); - //转换出hsl值 - result = Utils.extend(result, ColorUtils.rgbValueToHslValue(result)); - result.a = hasAlpha ? parseFloat(rgbaStr[3]) : 1; - return result; - } - return null; - }, - hslaToValue: function(hslaStr) { - var result = {}, hasAlpha = false; - if (/^(hsla?)/i.test(hslaStr)) { - hasAlpha = RegExp.$1.length === 4; - hslaStr = hslaStr.replace(/^hsla?/i, "").replace(/\s+/g, "").replace(/[^0-9,.]/g, "").split(","); - //记录hsl值 - result.h = hslaStr[0] | 0; - result.s = hslaStr[1] | 0; - result.l = hslaStr[2] | 0; - //转换出rgb值 - result = Utils.extend(result, ColorUtils.hslValueToRGBValue(result)); - //hsl值转换为rgb值 - result = ColorUtils.hslValueToRGBValue(result); - result.a = hasAlpha ? parseFloat(hslaStr[3]) : 1; - return result; - } - return null; - }, - //hsl值对象转换为rgb值对象 - hslValueToRGBValue: function(hslValue) { - function trans(v1, v2, vH) { - if (vH < 0) { - vH += 1; - } else if (vH > 1) { - vH -= 1; - } - if (6 * vH < 1) { - return v1 + (v2 - v1) * 6 * vH; - } else if (2 * vH < 1) { - return v2; - } else if (3 * vH < 2) { - return v1 + (v2 - v1) * ((2 / 3 - vH) * 6); - } - return v1; - } - var q = null, p = null, result = {}; - hslValue = Utils.extend({}, hslValue); - hslValue.h = hslValue.h / 360; - hslValue.s = hslValue.s / 100; - hslValue.l = hslValue.l / 100; - //分量计算 - if (hslValue.s === 0) { - result.r = result.g = result.b = hslValue.l; - } else { - if (hslValue.l < .5) { - q = hslValue.l * (1 + hslValue.s); - } else { - q = hslValue.l + hslValue.s - hslValue.l * hslValue.s; - } - p = 2 * hslValue.l - q; - result.r = trans(p, q, hslValue.h + 1 / 3); - result.g = trans(p, q, hslValue.h); - result.b = trans(p, q, hslValue.h - 1 / 3); - } - result.r = Math.min(Math.round(result.r * 255), 255); - result.g = Math.min(Math.round(result.g * 255), 255); - result.b = Math.min(Math.round(result.b * 255), 255); - return result; - }, - //rgb值对象转换为hsl值对象 - rgbValueToHslValue: function(rgbValue) { - var max = null, min = null, result = {}; - rgbValue = Utils.extend({}, rgbValue); - rgbValue.r = rgbValue.r / 255; - rgbValue.g = rgbValue.g / 255; - rgbValue.b = rgbValue.b / 255; - max = Math.max(rgbValue.r, rgbValue.g, rgbValue.b); - min = Math.min(rgbValue.r, rgbValue.g, rgbValue.b); - //h分量计算 - if (max === min) { - result.h = 0; - } else if (max === rgbValue.r) { - if (rgbValue.g >= rgbValue.b) { - result.h = 60 * (rgbValue.g - rgbValue.b) / (max - min); - } else { - result.h = 60 * (rgbValue.g - rgbValue.b) / (max - min) + 360; - } - } else if (max === rgbValue.g) { - result.h = 60 * (rgbValue.b - rgbValue.r) / (max - min) + 120; - } else if (max === rgbValue.b) { - result.h = 60 * (rgbValue.r - rgbValue.g) / (max - min) + 240; - } - //l分量计算 - result.l = (max + min) / 2; - //s分量计算 - if (result.l === 0 || max === min) { - result.s = 0; - } else if (result.l > 0 && result.l <= .5) { - result.s = (max - min) / (max + min); - } else { - result.s = (max - min) / (2 - max - min); - } - //格式化hsl结果 - result.h = Math.round(result.h); - result.s = Math.round(result.s * 100); - result.l = Math.round(result.l * 100); - return result; - }, - toString: function(colorValue, type) { - var vals = []; - colorValue = Utils.extend({}, colorValue); - if (type.indexOf("hsl") !== -1) { - colorValue.s += "%"; - colorValue.l += "%"; - } - if (type !== "hex") { - Utils.each(type.split(""), function(key) { - vals.push(colorValue[key]); - }); - return (type + "(" + vals.join(", ") + ")").toLowerCase(); - } else { - vals.push(ColorUtils.toHexValue(+colorValue.r)); - vals.push(ColorUtils.toHexValue(+colorValue.g)); - vals.push(ColorUtils.toHexValue(+colorValue.b)); - return ("#" + vals.join("")).toLowerCase(); - } - }, - //16进制的2个数字转化为10进制, 如果转化失败, 返回0 - toNumber: function(value) { - return Number("0x" + value) | 0; - }, - toHexValue: function(value) { - var result = value.toString(16); - return result.length === 1 ? "0" + result : result; - }, - //溢出控制 - overflowFormat: function(value) { - var tmpValue = Utils.extend({}, value), keys = "rgba"; - Utils.each(keys.split(""), function(key) { - if (!tmpValue.hasOwnProperty(key)) { - return; - } - //上溢出 - tmpValue[key] = Math.min(Color._MAX_VALUE[key], tmpValue[key]); - //下溢出 - tmpValue[key] = Math.max(Color._MIN_VALUE[key], tmpValue[key]); - }); - return tmpValue; - } - }); - return Color; - } -}; - -//src/graphic/container.js -_p[29] = { - value: function(require, exports, module) { - function itemRemove() { - this.container.removeItem(this); - return this; - } - return _p.r(11).createClass("Container", { - getItems: function() { - return this.items || (this.items = []); - }, - getItem: function(index) { - return this.getItems()[index]; - }, - getFirstItem: function() { - return this.getItem(0); - }, - getLastItem: function() { - return this.getItem(this.getItems().length - 1); - }, - indexOf: function(item) { - return this.getItems().indexOf(item); - }, - eachItem: function(fn) { - var items = this.getItems(), length = items.length, i; - for (i = 0; i < length; i++) { - fn.call(this, i, items[i]); - } - return this; - }, - addItem: function(item, pos, noEvent) { - var items = this.getItems(), length = items.length; - if (~items.indexOf(item)) { - return this; - } - if (!(pos >= 0 && pos < length)) { - pos = length; - } - items.splice(pos, 0, item); - if (typeof item === "object") { - item.container = this; - item.remove = itemRemove; - } - this.handleAdd(item, pos); - if (!noEvent) { - this.onContainerChanged("add", [ item ]); - } - return this; - }, - addItems: function(items) { - for (var i = 0, l = items.length; i < l; i++) { - this.addItem(items[i], -1, true); - } - this.onContainerChanged("add", items); - return this; - }, - setItems: function(items) { - return this.clear().addItems(items); - }, - appendItem: function(item) { - return this.addItem(item); - }, - prependItem: function(item) { - return this.addItem(item, 0); - }, - removeItem: function(pos, noEvent) { - if (typeof pos !== "number") { - return this.removeItem(this.indexOf(pos)); - } - var items = this.getItems(), length = items.length, item = items[pos]; - if (item === undefined) { - return this; - } - items.splice(pos, 1); - if (item.container) { - delete item.container; - } - if (item.remove) { - delete item.remove; - } - this.handleRemove(item, pos); - if (!noEvent) { - this.onContainerChanged("remove", [ item ]); - } - return this; - }, - clear: function() { - var removed = []; - var item; - while (item = this.getFirstItem()) { - removed.push(item); - this.removeItem(0, true); - } - this.onContainerChanged("remove", removed); - return this; - }, - onContainerChanged: function(type, items) {}, - handleAdd: function(item, index) {}, - handleRemove: function(item, index) {} - }); - } -}; - -//src/graphic/curve.js -/* - * 曲线 - * */ -_p[30] = { - value: function(require, exports, module) { - var Utils = _p.r(12), CurveUtil = { - /* - * 获取由两个以上的点组成的曲线的平移线 - * @param points 曲线上的点的集合, 集合中的点的数量必须大于2 - * @return 平移线数组 - */ - getCurvePanLines: function(points, smoothFactor) { - //计算原始点的中点坐标 - var centerPoints = CurveUtil.getCenterPoints(points), //注意:计算中点连线的中点坐标, 得出平移线 - panLines = CurveUtil.getPanLine(points.length, centerPoints); - //平移线移动到顶点 - return CurveUtil.getMovedPanLines(points, panLines, smoothFactor); - }, - /* - * 计算给定点集合的连线的中点 - * @param points - */ - getCenterPoints: function(points) { - var centerPoints = {}, key = null; - for (var i = 0, j = 0, len = points.length; i < len; i++) { - //j是下一个点的索引 - j = i === len - 1 ? 0 : i + 1; - key = i + "," + j; - //计算中点坐标 - centerPoints[key] = { - x: (points[i].x + points[j].y) / 2, - y: (points[i].x + points[j].y) / 2 - }; - } - return centerPoints; - }, - /* - * 对getCenterPoints()接口获取到的数据做处理, 计算出各个顶点对应的平移线数据 - * @param length 集合中点的个数 - * @param points 点集合, 该集合应该是getCenterPoints()接口返回的数据 - */ - getPanLine: function(length, points) { - var result = {}, //顶点索引 - pointIndex = null; - for (var i = 0, j; i < length; i++) { - var point1 = null, point2 = null; - //计算当前点 - j = (i + 1) % length; - //保存当前处理的顶点索引 - pointIndex = j; - point1 = points[i + "," + j]; - //计算下一个点 - i = j; - j = (i + 1) % length; - point2 = points[i + "," + j]; - result[pointIndex] = { - points: [ { - x: point1.x, - y: point1.y - }, { - x: point2.x, - y: point2.y - } ], - center: { - x: (point1.x + point2.x) / 2, - y: (point1.y + point2.y) / 2 - } - }; - //还原i值 - i = (pointIndex + length - 1) % length; - } - return result; - }, - /* - * 计算平移线移动到顶点后的位置 - * @param points 顶点集合 - * @param panLines 平移线集合 - */ - getMovedPanLines: function(points, panLines, smoothFactor) { - var result = {}; - Utils.each(points, function(point, index) { - //当前平移线 - var currentPanLine = panLines[index], //平移线中点 - center = currentPanLine.center, //移动距离 - distance = { - x: center.x - point.x, - y: center.y - point.y - }; - var currentResult = result[index] = { - points: [], - center: { - x: point.x, - y: point.y - } - }; - //计算控制点到顶点的距离, 并且应用平滑系数到距离上 - Utils.each(currentPanLine.points, function(controlPoint, index) { - var moved = { - x: controlPoint.x - distance.x, - y: controlPoint.y - distance.y - }; - var vertex = currentResult.center; - var dx = moved.x - vertex.x; - var dy = moved.y - vertex.y; - moved.x = vertex.x + smoothFactor * dx; - moved.y = vertex.y + smoothFactor * dy; - currentResult.points.push(moved); - }); - }); - return result; - } - }; - return _p.r(11).createClass("Curve", { - base: _p.r(46), - mixins: [ _p.r(51) ], - constructor: function(points, isColse) { - this.callBase(); - this.setPoints(points || []); - this.closeState = !!isColse; - this.changeable = true; - this.smoothFactor = 1; - this.update(); - }, - //当点集合发生变化时采取的动作 - onContainerChanged: function() { - if (this.changeable) { - this.update(); - } - }, - setSmoothFactor: function(factor) { - this.smoothFactor = factor < 0 ? 0 : factor; - this.update(); - return this; - }, - getSmoothFactor: function() { - return this.smoothFactor; - }, - update: function() { - var points = this.getPoints(), withControlPoints = null, drawer = this.getDrawer(), curPoint = null, curControlPoint = null, prevControlPoint = null; - drawer.clear(); - if (points.length === 0) { - return this; - } else { - drawer.moveTo(points[0]); - } - if (points.length === 1) { - return this; - } - if (points.length === 2) { - drawer.lineTo(points[1]); - return this; - } - //获取已转换过后的带控制点的所有点 - withControlPoints = CurveUtil.getCurvePanLines(points, this.getSmoothFactor()); - for (var i = 1, len = points.length; i < len; i++) { - //当前顶点 - curPoint = withControlPoints[i].center; - //当前控制点 - if (this.closeState || i != len - 1) { - curControlPoint = withControlPoints[i].points[0]; - } else { - //非闭合状态下最后一个点的处理 - curControlPoint = withControlPoints[i].center; - } - if (this.closeState || i != 1) { - prevControlPoint = withControlPoints[i - 1].points[1]; - } else { - //非闭合状态下第一个点的处理 - prevControlPoint = withControlPoints[i - 1].center; - } - drawer.bezierTo(prevControlPoint.x, prevControlPoint.y, curControlPoint.x, curControlPoint.y, curPoint.x, curPoint.y); - } - //处理闭合 - if (this.closeState) { - curPoint = withControlPoints[0].center; - curControlPoint = withControlPoints[0].points[0]; - prevControlPoint = withControlPoints[points.length - 1].points[1]; - drawer.bezierTo(prevControlPoint.x, prevControlPoint.y, curControlPoint.x, curControlPoint.y, curPoint.x, curPoint.y); - } - return this; - }, - close: function() { - this.closeState = true; - return this.update(); - }, - open: function() { - this.closeState = false; - return this.update(); - }, - isClose: function() { - return !!this.closeState; - } - }); - } -}; - -//src/graphic/data.js -_p[31] = { - value: function(require, exports, module) { - return _p.r(11).createClass("Data", { - constructor: function() { - this._data = {}; - }, - setData: function(name, value) { - this._data[name] = value; - return this; - }, - getData: function(name) { - return this._data[name]; - }, - removeData: function(name) { - delete this._data[name]; - return this; - } - }); - } -}; - -//src/graphic/ellipse.js -_p[32] = { - value: function(require, exports, module) { - var Utils = _p.r(12), Point = _p.r(50); - return _p.r(11).createClass("Ellipse", { - base: _p.r(46), - constructor: function(rx, ry, cx, cy) { - this.callBase(); - this.rx = rx || 0; - this.ry = ry || 0; - this.cx = cx || 0; - this.cy = cy || 0; - this.update(); - }, - update: function() { - var rx = this.rx, ry = this.ry, x1 = this.cx + rx, x2 = this.cx - rx, y = this.cy; - var drawer = this.getDrawer(); - drawer.clear(); - drawer.moveTo(x1, y); - drawer.arcTo(rx, ry, 0, 1, 1, x2, y); - drawer.arcTo(rx, ry, 0, 1, 1, x1, y); - return this; - }, - getRadius: function() { - return { - x: this.rx, - y: this.ry - }; - }, - getRadiusX: function() { - return this.rx; - }, - getRadiusY: function() { - return this.ry; - }, - getCenter: function() { - return new Point(this.cx, this.cy); - }, - getCenterX: function() { - return this.cx; - }, - getCenterY: function() { - return this.cy; - }, - setRadius: function(rx, ry) { - this.rx = rx; - this.ry = ry; - return this.update(); - }, - setRadiusX: function(rx) { - this.rx = rx; - return this.update(); - }, - setRadiusY: function(ry) { - this.ry = ry; - return this.update(); - }, - setCenter: function(cx, cy) { - if (arguments.length == 1) { - var p = Point.parse(arguments[0]); - cx = p.x; - cy = p.y; - } - this.cx = cx; - this.cy = cy; - return this.update(); - }, - setCenterX: function(cx) { - this.cx = cx; - return this.update(); - }, - setCenterY: function(cy) { - this.cy = cy; - return this.update(); - } - }); - } -}; - -//src/graphic/eventhandler.js -/* - * kity event 实现 - */ -_p[33] = { - value: function(require, exports, module) { - // polyfill - (function() { - function CustomEvent(event, params) { - params = params || { - bubbles: false, - cancelable: false, - detail: undefined - }; - var evt = document.createEvent("CustomEvent"); - evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); - return evt; - } - CustomEvent.prototype = window.Event.prototype; - window.CustomEvent = CustomEvent; - })(); - var Utils = _p.r(12), ShapeEvent = _p.r(62); - // 内部处理器缓存 - var INNER_HANDLER_CACHE = {}, // 用户处理器缓存 - USER_HANDLER_CACHE = {}, guid = 0; - // 添加事件统一入口 - function _addEvent(type, handler, isOnce) { - isOnce = !!isOnce; - if (Utils.isString(type)) { - type = type.match(/\S+/g); - } - Utils.each(type, function(currentType) { - listen.call(this, this.node, currentType, handler, isOnce); - }, this); - return this; - } - // 移除事件统一入口 - function _removeEvent(type, handler) { - var userHandlerList = null, eventId = this._EVNET_UID, isRemoveAll = handler === undefined; - userHandlerList = USER_HANDLER_CACHE[eventId][type]; - //移除指定的监听器 - if (!isRemoveAll) { - isRemoveAll = true; - Utils.each(userHandlerList, function removeKityEvent(fn, index) { - if (fn === handler) { - // 不能结束, 需要查找完整个list, 避免丢失移除多次绑定同一个处理器的情况 - delete userHandlerList[index]; - } else { - isRemoveAll = false; - } - }); - } - //删除所有监听器 - if (isRemoveAll) { - deleteDomEvent(this.node, type, INNER_HANDLER_CACHE[eventId][type]); - delete USER_HANDLER_CACHE[eventId][type]; - delete INNER_HANDLER_CACHE[eventId][type]; - } - return this; - } - // 执行绑定, 该方法context为shape或者mixin了eventhandler的对象 - function listen(node, type, handler, isOnce) { - var eid = this._EVNET_UID, targetObject = this; - // 初始化内部监听器 - if (!INNER_HANDLER_CACHE[eid]) { - INNER_HANDLER_CACHE[eid] = {}; - } - if (!INNER_HANDLER_CACHE[eid][type]) { - // 内部监听器 - INNER_HANDLER_CACHE[eid][type] = function kityEventHandler(e) { - e = new ShapeEvent(e || window.event); - Utils.each(USER_HANDLER_CACHE[eid][type], function executeKityEvent(fn) { - var result; - if (fn) { - result = fn.call(targetObject, e); - //once 绑定, 执行完后删除 - if (isOnce) { - targetObject.off(type, fn); - } - } - // 如果用户handler里return了false, 则该节点上的此后的同类型事件将不再执行 - return result; - }, targetObject); - }; - } - // 初始化用户监听器列表 - if (!USER_HANDLER_CACHE[eid]) { - USER_HANDLER_CACHE[eid] = {}; - } - if (!USER_HANDLER_CACHE[eid][type]) { - USER_HANDLER_CACHE[eid][type] = [ handler ]; - // 绑定对应类型的事件 - // dom对象利用dom event进行处理, 非dom对象, 由消息分发机制处理 - if (!!node && "on" + type in node) { - bindDomEvent(node, type, INNER_HANDLER_CACHE[eid][type]); - } - } else { - USER_HANDLER_CACHE[eid][type].push(handler); - } - } - // 绑定dom事件 - function bindDomEvent(node, type, handler) { - if (node.addEventListener) { - node.addEventListener(type, handler, false); - } else { - node.attachEvent("on" + type, handler); - } - } - // 删除dom事件 - function deleteDomEvent(node, type, handler) { - if (node.removeEventListener) { - node.removeEventListener(type, handler, false); - } else { - node.detachEvent(type, handler); - } - } - // 触发dom事件 - function triggerDomEvent(node, type, params) { - var event = new CustomEvent(type, { - bubbles: true, - cancelable: true - }); - event._kityParam = params; - node.dispatchEvent(event); - } - // 发送消息 - function sendMessage(messageObj, type, msg) { - var event = null, handler = null; - var handlers = INNER_HANDLER_CACHE[messageObj._EVNET_UID]; - if (!handlers) return; - handler = handlers[type]; - if (!handler) { - return; - } - event = Utils.extend({ - type: type, - target: messageObj - }, msg || {}); - handler.call(messageObj, event); - } - // 对外接口 - return _p.r(11).createClass("EventHandler", { - constructor: function() { - this._EVNET_UID = ++guid; - }, - addEventListener: function(type, handler) { - return _addEvent.call(this, type, handler, false); - }, - addOnceEventListener: function(type, handler) { - return _addEvent.call(this, type, handler, true); - }, - removeEventListener: function(type, handler) { - return _removeEvent.call(this, type, handler); - }, - on: function(type, handler) { - return this.addEventListener.apply(this, arguments); - }, - once: function(type, handler) { - return this.addOnceEventListener.apply(this, arguments); - }, - off: function() { - return this.removeEventListener.apply(this, arguments); - }, - fire: function(type, params) { - return this.trigger.apply(this, arguments); - }, - trigger: function(type, params) { - sendMessage(this, type, params); - return this; - } - }); - } -}; - -//src/graphic/geometry.js -_p[34] = { - value: function(require) { - var utils = _p.r(12); - var Point = _p.r(50); - var Vector = _p.r(73); - var Matrix = _p.r(43); - var g = {}; - var pathCommand = /([achlmrqstvz])[\s,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\s]*,?\s*)+)/gi, pathValues = /(-?\d*\.?\d*(?:e[\-+]?\d+)?)\s*,?\s*/gi, paramCounts = { - a: 7, - c: 6, - h: 1, - l: 2, - m: 2, - q: 4, - s: 4, - t: 2, - v: 1, - z: 0 - }; - function pathClone(path) { - var result, i, j, segment, segmentCopy; - result = []; - for (i = 0; i < path.length; i++) { - segment = path[i]; - result.push(segmentCopy = []); - for (j = 0; j < segment.length; j++) { - segmentCopy.push(segment[j]); - } - } - if (path.isUniform) result.isUniform = true; - if (path.isAbsolute) result.isAbsolute = true; - if (path.isCurve) result.isCurve = true; - return result; - } - // 缓存函数 - // from raphael.js - function cacher(f, scope, postprocessor) { - function repush(array, item) { - for (var i = 0, ii = array.length; i < ii; i++) if (array[i] === item) { - return array.push(array.splice(i, 1)[0]); - } - } - function newf() { - var arg = Array.prototype.slice.call(arguments, 0), args = arg.join("␀"), cache = newf.cache = newf.cache || {}, count = newf.count = newf.count || []; - if (cache.hasOwnProperty(args)) { - repush(count, args); - return postprocessor ? postprocessor(cache[args]) : cache[args]; - } - if (count.length >= 1e3) { - delete cache[count.shift()]; - } - count.push(args); - cache[args] = f.apply(scope, arg); - return postprocessor ? postprocessor(cache[args]) : cache[args]; - } - return newf; - } - /** - * - * kity.g.pathToString(pathSegment) - * - * 返回表示 PathSegment 的字符串 - * - * @param {Array} pathSegment - * 要表示的 Path Segment - * - * @return {String} 表示该 Path 的字符串 - * - * @example - * - * var pathSegment = [['M', 0, 0], ['L', 10, 10]] - * var pathString = kity.g.pathToString(pathSegment); - * // 返回 'M0,0L10,10' - */ - g.pathToString = function(pathSegment) { - pathSegment = pathSegment || this; - if (typeof pathSegment == "string") return pathSegment; - if (pathSegment instanceof Array) { - pathSegment = utils.flatten(pathSegment); - return pathSegment.join(",").replace(/,?([achlmqrstvxz]),?/gi, "$1"); - } - }; - /** - * kity.g.parsePathString(pathString) - * - * 解析 Path 字符串成 PathSegment - * - * @copyright rapheal.js - * - * @example - * - * var seg = kity.g.parsePathString('M10,12l21-23-21.5,11z'); - * // 返回: [['M', 10, 12], ['l', 21, -23], ['l', -21.5, 11], ['z']] - * - * @param {String} pathString Path 字符串 - * @return {Array} - */ - g.parsePathString = cacher(function(pathString) { - var data = []; - pathString.replace(pathCommand, function(a, b, c) { - var params = [], name = b.toLowerCase(); - c.replace(pathValues, function(a, b) { - if (b) params.push(+b); - }); - if (name == "m" && params.length > 2) { - data.push([ b ].concat(params.splice(0, 2))); - name = "l"; - b = b == "m" ? "l" : "L"; - } - if (name == "r") { - data.push([ b ].concat(params)); - } else { - while (params.length >= paramCounts[name]) { - data.push([ b ].concat(params.splice(0, paramCounts[name]))); - if (!paramCounts[name]) { - break; - } - } - } - }); - data.isUniform = true; - data.toString = g.pathToString; - return data; - }); - /** - * kity.g.pathToAbsolute(path) - * - * 把路径转换为绝对路径的形式 - * - * @param {Array|String} path - * 要转换的 path 路径或者数组 - * - * @return {Array} - * 转换后的 Path Segment - * - * @example - * - * var path = 'M10,10l50,50'; - * var absPath = kity.g.pathToAbsolute(path); - * // 返回 [['M', 10, 10], ['L', 60, 60]] - */ - g.pathToAbsolute = cacher(function(path) { - var pathArray = path.isUniform ? path : g.parsePathString(g.pathToString(path)); - var res = [], x = 0, y = 0, mx = 0, my = 0, start = 0; - var r, pa, i, j, k, ii, jj, kk; - if (pathArray[0][0] == "M") { - x = +pathArray[0][1]; - y = +pathArray[0][2]; - mx = x; - my = y; - start++; - res[0] = [ "M", x, y ]; - } - for (r, pa, i = start, ii = pathArray.length; i < ii; i++) { - res.push(r = []); - pa = pathArray[i]; - if (pa[0] != pa[0].toUpperCase()) { - r[0] = pa[0].toUpperCase(); - switch (r[0]) { - case "A": - r[1] = pa[1]; - r[2] = pa[2]; - r[3] = pa[3]; - r[4] = pa[4]; - r[5] = pa[5]; - r[6] = +(pa[6] + x); - r[7] = +(pa[7] + y); - break; - - case "V": - r[1] = +pa[1] + y; - break; - - case "H": - r[1] = +pa[1] + x; - break; - - case "M": - mx = +pa[1] + x; - my = +pa[2] + y; - break; - - default: - for (j = 1, jj = pa.length; j < jj; j++) { - r[j] = +pa[j] + (j % 2 ? x : y); - } - } - } else { - for (k = 0, kk = pa.length; k < kk; k++) { - r[k] = pa[k]; - } - } - switch (r[0]) { - case "Z": - x = mx; - y = my; - break; - - case "H": - x = r[1]; - break; - - case "V": - y = r[1]; - break; - - case "M": - mx = r[r.length - 2]; - my = r[r.length - 1]; - break; - - default: - x = r[r.length - 2]; - y = r[r.length - 1]; - } - } - res.isUniform = true; - res.isAbsolute = true; - res.toString = g.pathToString; - return res; - }); - // 把圆弧绘制的曲线转化为对应的三次贝塞尔形式 - function a2c(x1, y1, rx, ry, angle, laf, sf, x2, y2, recursive) { - // copy from raphael.js - // for more information of where this math came from visit: - // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes - var math = Math, PI = math.PI, abs = Math.abs, _120 = PI * 120 / 180, rad = PI / 180 * (+angle || 0), res = [], xy, rotate = function(x, y, rad) { - var X = x * math.cos(rad) - y * math.sin(rad), Y = x * math.sin(rad) + y * math.cos(rad); - return { - x: X, - y: Y - }; - }; - var cos, sin, h, x, y, rx2, ry2, k, cx, cy, f1, f2, df, f2old, x2old, y2old, c1, s1, c2, s2, t, hx, hy, m1, m2, m3, m4, newres, i, ii; - if (!recursive) { - xy = rotate(x1, y1, -rad); - x1 = xy.x; - y1 = xy.y; - xy = rotate(x2, y2, -rad); - x2 = xy.x; - y2 = xy.y; - cos = math.cos(PI / 180 * angle); - sin = math.sin(PI / 180 * angle); - x = (x1 - x2) / 2; - y = (y1 - y2) / 2; - h = x * x / (rx * rx) + y * y / (ry * ry); - if (h > 1) { - h = math.sqrt(h); - rx = h * rx; - ry = h * ry; - } - rx2 = rx * rx; - ry2 = ry * ry; - k = (laf == sf ? -1 : 1) * math.sqrt(abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x))); - cx = k * rx * y / ry + (x1 + x2) / 2; - cy = k * -ry * x / rx + (y1 + y2) / 2; - f1 = math.asin(((y1 - cy) / ry).toFixed(9)); - f2 = math.asin(((y2 - cy) / ry).toFixed(9)); - f1 = x1 < cx ? PI - f1 : f1; - f2 = x2 < cx ? PI - f2 : f2; - if (f1 < 0) f1 = PI * 2 + f1; - if (f2 < 0) f2 = PI * 2 + f2; - if (sf && f1 > f2) { - f1 = f1 - PI * 2; - } - if (!sf && f2 > f1) { - f2 = f2 - PI * 2; - } - } else { - f1 = recursive[0]; - f2 = recursive[1]; - cx = recursive[2]; - cy = recursive[3]; - } - df = f2 - f1; - if (abs(df) > _120) { - f2old = f2; - x2old = x2; - y2old = y2; - f2 = f1 + _120 * (sf && f2 > f1 ? 1 : -1); - x2 = cx + rx * math.cos(f2); - y2 = cy + ry * math.sin(f2); - res = a2c(x2, y2, rx, ry, angle, 0, sf, x2old, y2old, [ f2, f2old, cx, cy ]); - } - df = f2 - f1; - c1 = math.cos(f1); - s1 = math.sin(f1); - c2 = math.cos(f2); - s2 = math.sin(f2); - t = math.tan(df / 4); - hx = 4 / 3 * rx * t; - hy = 4 / 3 * ry * t; - m1 = [ x1, y1 ]; - m2 = [ x1 + hx * s1, y1 - hy * c1 ]; - m3 = [ x2 + hx * s2, y2 - hy * c2 ]; - m4 = [ x2, y2 ]; - m2[0] = 2 * m1[0] - m2[0]; - m2[1] = 2 * m1[1] - m2[1]; - if (recursive) { - return [ m2, m3, m4 ].concat(res); - } else { - res = [ m2, m3, m4 ].concat(res).join().split(","); - newres = []; - for (i = 0, ii = res.length; i < ii; i++) { - newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x; - } - return newres; - } - } - // 把二次贝塞尔曲线参数转化为三次贝塞尔曲线参数 - function q2c(x1, y1, ax, ay, x2, y2) { - // copy from raphael.js - var _13 = 1 / 3, _23 = 2 / 3; - return [ _13 * x1 + _23 * ax, _13 * y1 + _23 * ay, _13 * x2 + _23 * ax, _13 * y2 + _23 * ay, x2, y2 ]; - } - /** - * kity.g.pathToCurve(path) - * - * 把路径转换为贝塞尔路径 - * - * @param {Array|String} path - * 要转换的 path 路径或数组 - * - * @return {Array} - * 转换后的 PathSegment,每一段都是 'C' - */ - g.pathToCurve = cacher(function(path) { - var i, j, command, param; - var initPoint, currentPoint, endPoint, shouldClose, lastControlPoint, aussumedControlPoint; - var controlPoint1, controlPoint2; - var res = []; - // 处理的路径要求是一个绝对路径 - if (!path.isAbsolute) path = g.pathToAbsolute(path); - for (i = 0; i < path.length; i++) { - command = path[i][0]; - param = path[i].slice(1); - // 画笔移动 - if (command == "M") { - initPoint = lastControlPoint = currentPoint = param; - res.push(path[i]); - continue; - } - // 路径闭合 - if (command == "Z") { - shouldClose = true; - command = "L"; - param = initPoint; - } - // 绘制命令的目的位置 - endPoint = param.slice(param.length - 2); - // 对 'H' 命令的修正 - if (command == "H") { - endPoint = [ param[0], currentPoint[1] ]; - command = "L"; - } - // 对 'V' 命令的修正 - if (command == "V") { - endPoint = [ currentPoint[0], param[0] ]; - command = "L"; - } - // 对 'S' 命令求出隐含的控制点位置 - if (command == "S" || command == "T") { - // 隐含控制点是上一个控制点关于当前位置的镜像 - aussumedControlPoint = [ currentPoint[0] + (currentPoint[0] - lastControlPoint[0]), currentPoint[1] + (currentPoint[1] - lastControlPoint[1]) ]; - } - // 针对不同的命令求控制点 - switch (command) { - case "L": - controlPoint1 = currentPoint; - controlPoint2 = endPoint; - break; - - case "C": - controlPoint1 = param.slice(0, 2); - controlPoint2 = param.slice(2, 4); - break; - - case "S": - controlPoint1 = aussumedControlPoint.slice(); - controlPoint2 = param.slice(0, 2); - break; - - case "Q": - lastControlPoint = param.slice(0, 2); - param = q2c.apply(null, currentPoint.concat(param)); - controlPoint1 = param.slice(0, 2); - controlPoint2 = param.slice(2, 4); - break; - - case "T": - param = q2c.apply(null, currentPoint.concat(aussumedControlPoint).concat(param)); - controlPoint1 = param.slice(0, 2); - controlPoint2 = param.slice(2, 4); - break; - - case "A": - param = a2c.apply(null, currentPoint.concat(param)); - j = 0; - while (j in param) { - controlPoint1 = param.slice(j, j + 2); - controlPoint2 = param.slice(j + 2, j + 4); - endPoint = param.slice(j + 4, j + 6); - // 写入当前一段曲线 - res.push([ "C" ].concat(controlPoint1).concat(controlPoint2).concat(endPoint)); - j += 6; - } - break; - } - if (command != "A") { - // 写入当前一段曲线 - res.push([ "C" ].concat(controlPoint1).concat(controlPoint2).concat(endPoint)); - } - // 为下次循环准备当前位置 - currentPoint = endPoint; - // 二次贝塞尔曲线自己已经记录了上个控制点的位置,其它的记录控制点 2 的位置 - if (command != "Q") { - lastControlPoint = controlPoint2; - } - if (shouldClose) { - res.push([ "Z" ]); - shouldClose = false; - } - } - res.isUniform = true; - res.isAbsolute = true; - res.isCurve = true; - res.toString = g.pathToString; - return res; - }); - /** - * 将贝塞尔曲线切成两部分 - * - * @see http://stackoverflow.com/questions/18655135/divide-bezier-curve-into-two-equal-halves - */ - function cutBezier(bezierArray, t) { - function __(t) { - return function(p, q) { - return p + t * (q - p); - }; - } - var _ = __(t || .5), ba = bezierArray, ax = ba[0], ay = ba[1], bx = ba[2], by = ba[3], cx = ba[4], cy = ba[5], dx = ba[6], dy = ba[7], ex = _(ax, bx), ey = _(ay, by), fx = _(bx, cx), fy = _(by, cy), gx = _(cx, dx), gy = _(cy, dy), hx = _(ex, fx), hy = _(ey, fy), jx = _(fx, gx), jy = _(fy, gy), kx = _(hx, jx), ky = _(hy, jy); - return [ [ ax, ay, ex, ey, hx, hy, kx, ky ], [ kx, ky, jx, jy, gx, gy, dx, dy ] ]; - } - /** - * kity.g.cutBezier(bezierArray, t) - * - * 在指定位置把贝塞尔曲线切割为两部分 - * - * @param {Array} bezierArray - * 表示贝塞尔曲线的一个数组 [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y] - * p1 和 p2 是贝塞尔曲线的起点和终点,c1 和 c2 是两个控制点 - * - * @param {Number} t - * 切割的位置(0 到 1) - * - * @return {Array} - * 切割的两个贝塞尔曲线:[ - * [p1x1, p1y1, c1x1, c1y1, c2x1, c2y1, p2x1, p2y1], - * [p1x2, p1y2, c1x2, c1y2, c2x2, c2y2, p2x2, p2y2] - * ] - * - */ - g.cutBezier = cacher(cutBezier); - /** - * 求一段贝塞尔曲线的子段 - * - * @param {Array} bezierArray - * 长度为 8 的数组,表示 [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y] - * - * @param {Number} t - * 子段的结束位置(0 到 1) - * - * @param {Number} t0 - * 字段的开始位置(0 到 t),可不传,默认为 0 - * - * @return {Array} - * 长度为 8 的数组,表示给定贝塞尔曲线的子段 - */ - g.subBezier = function(bezierArray, t, t0) { - var b2t = cutBezier(bezierArray, t)[0]; - return t0 ? cutBezier(b2t, t0 / t)[1] : b2t; - }; - /** - * 求贝塞尔曲线上的一个点 - * - * @param {Array} bezierArray - * 长度为 8 的数组,表示 [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y] - * - * @param {Number} t - * 所求点的开始位置(0 到 1) - * - * @return {Point} p - * p.x: x 坐标 - * p.y: y 坐标 - * p.tan: 在 t 处的切线方向(类型为 kity.Vector,模为 1) - */ - g.pointAtBezier = function(bezierArray, t) { - var b2t = cutBezier(bezierArray, t)[0]; - var p = Point.parse(b2t.slice(6)), c = Point.parse(b2t.slice(4, 2)), v = Vector.fromPoints(c, p); - if (t === 0) { - p.tan = g.pointAtBezier(bezierArray, .01).tan; - } else { - p.tan = v.normalize(); - } - return p; - }; - /** - * 求贝塞尔曲线的长度 - * - * @param {Array} bezierArray - * 长度为 8 的数组,表示 [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y] - * - * @param {Number} tolerate - * 允许的误差,默认是 0.1 - * - * @return {Number} 贝塞尔曲线的长度 - */ - g.bezierLength = cacher(function bezierLength(bezierArray) { - // 表示(c[0]*t^4 + c[1]*t^3 + c[2]*t^2 + c[3]*t^1 + c[4])^(1/2)的函数 - function f(x) { - var m = c0 * Math.pow(x, 4) + c1 * Math.pow(x, 3) + c2 * Math.pow(x, 2) + c3 * x + c4; - if (m < 0) { - m = 0; - } - return Math.pow(m, .5); - } - // 用Newton-Cotes型求积公式 - var arr = bezierArray; - // 三次贝塞尔曲线函数求导后,求出对应的方程系数,用cx[],cy[]表示x`(t)和y`(t)的系数 - var cx0, cx1, cx2; - var cy0, cy1, cy2; - // 用c[]表示x`(t)^2 + y`(t)^2的结果的系数 - var c0, c1, c2, c3, c4; - // 求x`(t) 和 y`(t)的系数 - cx0 = -3 * arr[0] + 9 * arr[2] - 9 * arr[4] + 3 * arr[6]; - cx1 = 6 * arr[0] - 12 * arr[2] + 6 * arr[4]; - cx2 = -3 * arr[0] + 3 * arr[2]; - cy0 = -3 * arr[1] + 9 * arr[3] - 9 * arr[5] + 3 * arr[7]; - cy1 = 6 * arr[1] - 12 * arr[3] + 6 * arr[5]; - cy2 = -3 * arr[1] + 3 * arr[3]; - // 求x`(t)^2 + y`(t)^2的结果的系数 c[] - c0 = Math.pow(cx0, 2) + Math.pow(cy0, 2); - c1 = 2 * (cx0 * cx1 + cy0 * cy1); - c2 = 2 * (cx0 * cx2 + cy0 * cy2) + Math.pow(cx1, 2) + Math.pow(cy1, 2); - c3 = 2 * (cx1 * cx2 + cy1 * cy2); - c4 = Math.pow(cx2, 2) + Math.pow(cy2, 2); - // 用cotes积分公式求值 - return (f(0) + f(1) + 4 * (f(.125) + f(.375) + f(.625) + f(.875)) + 2 * (f(.25) + f(.5) + f(.75))) / 24; - }); - // 计算一个 pathSegment 中每一段的在整体中所占的长度范围,以及总长度 - // 方法要求每一段都是贝塞尔曲线 - var getBezierPathSegmentRanges = cacher(function(pathSegment) { - var i, ii, segment, position, bezierLength, segmentRanges, totalLength; - segmentRanges = []; - // 总长度 - totalLength = 0; - for (i = 0, ii = pathSegment.length; i < ii; i++) { - segment = pathSegment[i]; - if (segment[0] == "M") { - position = segment.slice(1); - segmentRanges.push(null); - continue; - } - if (segment[0] == "Z") { - segmentRanges.push(null); - continue; - } - bezierLength = g.bezierLength(position.concat(segment.slice(1))); - segmentRanges.push([ totalLength, totalLength + bezierLength ]); - totalLength += bezierLength; - // 迭代当前位置 - position = segment.slice(4); - } - segmentRanges.totalLength = totalLength; - return segmentRanges; - }); - /** - * 求一段路径的子路径 - * - * @param {Array|String} path - * 原路径 - * - * @param {Number} t1 - * 要求的子路径的结束位置(0 到 1) - * - * @param {Number} t0 - * 要求的子路径的开始位置(0 到 t1),可不传,默认为 0 - * - * @return {Array} - * 子路径的 PathSegment - */ - g.subPath = function(path, t1, t0) { - var dt; - t0 = t0 || 0; - dt = t1 - t0; - dt = dt - (dt | 0); - t0 = t0 - (t0 | 0); - t1 = t0 + dt; - if (t1 > 1) { - return g.subPath(path, 1, t0).concat(g.subPath(path, t1 - 1)); - } - if (!path.isCurve) { - path = g.pathToCurve(path); - } - // path 每一段在整体中的长度区间 - var segmentRanges = getBezierPathSegmentRanges(path); - // path 总长度 - var totalLength = segmentRanges.totalLength; - // t1 和 t0 位置命中的长度位置 - var t1Length = totalLength * t1, t0Length = totalLength * (t0 || 0); - // 产生的子路径 - var subPath = []; - // 迭代变量,a 是一段的长度区间左值,b 是右值,d 是区间长度 - var i, ii, a, b, d; - var position; - var bezier, subBezier, stared; - for (i = 0, ii = path.length; i < ii; i++) { - if (path[i][0] == "M") { - position = path[i].slice(1); - if (stared) { - subPath.push(path[i].slice()); - } - continue; - } - if (path[i][0] == "Z") { - // subpath 路径不闭合 - continue; - } - a = segmentRanges[i][0]; - b = segmentRanges[i][1]; - d = b - a; - bezier = position.concat(path[i].slice(1)); - if (t0Length > b) { - // t0 和 t1 都右溢出 - // ----------------------------------- - // t0 t1 - // |________| - // - // 需要跳过当前块 - position = bezier.slice(bezier.length - 2); - continue; - } else if (t0Length >= a) { - // 命中 t0;t1 可能命中或右溢出 - // ----------------------------------- - // t0 t1 - // |______|__| - // - // or: |_|____|__| - // - // 取当前块 t0 到 t1 的部分 - subBezier = g.subBezier(bezier, Math.min((t1Length - a) / d, 1), (t0Length - a) / d); - stared = true; - position = subBezier.slice(0, 2); - subPath.push([ "M" ].concat(subBezier.slice(0, 2))); - subPath.push([ "C" ].concat(subBezier.slice(2))); - } else if (t1Length >= b) { - // t0 左溢出;t1 右溢出,整个块是需要的 - // ----------------------------------- - // t0 t1 - // |_________| - // - // 此时取整个块 - subPath.push(path[i].slice()); - } else if (t1Length >= a) { - // t0 左溢出;t1 命中,取当前块 t1 之前的部分 - // ----------------------------------- - // t0 t1 - // |__|______| - // 取当前块 t1 之前的部分 - subBezier = g.subBezier(bezier, (t1Length - a) / d); - subPath.push([ "C" ].concat(subBezier.slice(2))); - stared = false; - } else { - // 没有可以再要的了 - break; - } - position = bezier.slice(bezier.length - 2); - } - subPath.isAbsolute = true; - subPath.isCurve = true; - subPath.isUniform = true; - subPath.toString = g.pathToString; - return subPath; - }; - /** - * 求路径上的一个点 - * - * @param {Array|String} path - * 要求点的路径 - * - * @param {Number} t - * 要求的点的位置(0 到 1) - * - * @return {Point} p - * p.x: x 坐标 - * p.y: y 坐标 - * p.tan: 在 t 处的切线方向(类型为 kity.Vector,模为 1) - */ - g.pointAtPath = function(path, t) { - if (!path.isCurve) { - path = g.pathToCurve(path); - } - var subPath = g.subPath(path, t); - var lastCurve = subPath[subPath.length - 1][0] == "Z" ? subPath[subPath.length - 2] : subPath[subPath.length - 1]; - // 跳过 'C' 命令,只留参数 - lastCurve = lastCurve.slice(1); - var p = Point.parse(lastCurve.slice(4)), c = Point.parse(lastCurve.slice(2, 4)); - p.tan = Vector.fromPoints(c, p).normalize(); - return p; - }; - /** - * 求一段路径的长度 - * - * @param {string|Array} path - * 要求的路径 - * - * @return {Number} - * 路径的长度 - */ - g.pathLength = cacher(function(path) { - if (!path.isCurve) { - path = g.pathToCurve(path); - } - // path 每一段在整体中的长度区间 - var segmentRanges = getBezierPathSegmentRanges(path); - return segmentRanges.totalLength; - }); - /** - * 求一段路径的关键点 - * - * @param {string|Array} path - * 要求的路径 - * - * @return {Array} - * 关键点的集合 - */ - g.pathKeyPoints = cacher(function(path) { - var i, ii, command, keyPoints; - if (!path.isCurve) { - path = g.pathToCurve(path); - } - keyPoints = []; - for (i = 0, ii = path.length; i < ii; i++) { - if (path[i][0] == "z") continue; - keyPoints.push(path[i].slice(path[i].length - 2)); - } - return keyPoints; - }); - // 对比两个路径的关键位置,在合适的位置切割合适的路径,使得两个路径的段数一致 - // TODO: 使用插值算法,使对应点更合理 - var alignCurve = cacher(function(path1, path2) { - if (!path1.isCurve) path1 = g.pathToCurve(path1); - if (!path2.isCurve) path2 = g.pathToCurve(path2); - var p1 = pathClone(path1); - var p2 = pathClone(path2); - p1.i = 0; - p2.i = 0; - p1.o = p2; - p2.o = p1; - function command(p, i) { - return p[i || p.i] && p[i || p.i][0]; - } - function param(p, i) { - return p[i || p.i] && p[i || p.i].slice(1); - } - function point(p, i) { - var _param = param(p, i); - return _param && _param.slice(-2); - } - function fixZ(p) { - if (command(p) == "Z") { - p.splice(p.i, 1); - return true; - } - return false; - } - function fixM(p) { - if (command(p) == "M") { - p.o.splice(p.o.i, 0, [ "M" ].concat(point(p.o, p.o.i - 1))); - p.i++; - p.o.i++; - return true; - } - return false; - } - function fill(p) { - var lastPoint; - var i = 1; - while (!lastPoint) { - lastPoint = point(p, p.length - i++); - } - p.o.i = p.i; - while (p.length < p.o.length) { - if (fixZ(p.o)) continue; - if (fixM(p.o)) continue; - p.push([ "C" ].concat(lastPoint).concat(lastPoint).concat(lastPoint)); - p.i++; - p.o.i++; - } - } - while (p1.i < p1.length && p2.i < p2.length) { - if (fixZ(p1) || fixZ(p2)) continue; - if (command(p1) == command(p2)) { - p1.i++; - p2.i++; - continue; - } - if (fixM(p1) || fixM(p2)) continue; - p1.i++; - p2.i++; - } - if (p1.i == p1.length) fill(p1); - if (p2.i == p2.length) fill(p2); - delete p1.i; - delete p1.o; - delete p2.i; - delete p2.o; - return [ p1, p2 ]; - }); - g.alignCurve = alignCurve; - /** - * 获得两个路径的补间结果 - * - * @param {string|Array} path1 - * 补间起始路径 - * - * @param {string|Array} path2 - * 补间结束路径 - * - * @param {Number} t - * 补间比例,0 返回跟 path1 等效的结果;1 返回跟 path2 等效的结果 - * - * @return {PathSegment} - * 补间的结果 - */ - g.pathTween = function(path1, path2, t) { - if (t === 0) return path1; - if (t === 1) return path2; - var aligned = alignCurve(path1, path2); - var result = [], seg, i, j; - path1 = aligned[0]; - path2 = aligned[1]; - for (i = 0; i < path1.length; i++) { - result.push(seg = []); - seg.push(path1[i][0]); - for (j = 1; j < path1[i].length; j++) { - seg.push(path1[i][j] + t * (path2[i][j] - path1[i][j])); - } - } - result.isUniform = result.isCurve = result.isAbsolute = true; - return result; - }; - /** - * 变换指定的路径 - * - * @param {String|Array} path - * 需要变换的路径 - * - * @param {kity.Matrix} matrix - * 使用的变换矩阵 - * - * @return {Array} - * 变换后的路径 - */ - g.transformPath = cacher(function(path, matrix) { - var i, ii, j, result, seg, pair; - if (!path.isCurve) { - path = g.pathToCurve(path); - } - result = []; - for (i = 0, ii = path.length; i < ii; i++) { - result.push(seg = [ path[i][0] ]); - for (j = 1; j < path[i].length; j += 2) { - pair = path[i].slice(j, j + 2); - pair = matrix.transformPoint(Point.parse(pair)); - result.push(pair); - } - } - return result; - }); - // entend - _p.r(11).extendClass(Matrix, { - transformPath: function(path) { - return g.transformPath(path, this); - } - }); - return g; - } -}; - -//src/graphic/gradient.js -_p[35] = { - value: function(require, exports, module) { - var svg = _p.r(67); - var Resource = _p.r(58); - var Color = _p.r(28); - return _p.r(11).createClass("GradientBrush", { - base: Resource, - constructor: function(gradientNodeType, paper) { - this.callBase(gradientNodeType, paper); - this.stops = []; - }, - addStop: function(offset, color, opacity) { - var gstop = svg.createNode("stop"); - if (!(color instanceof Color)) { - color = Color.parse(color); - } - if (opacity === undefined) { - opacity = color.get("a"); - } - gstop.setAttribute("offset", offset); - gstop.setAttribute("stop-color", color.toRGB()); - if (opacity < 1) { - gstop.setAttribute("stop-opacity", opacity); - } - this.node.appendChild(gstop); - return this; - } - }); - } -}; - -//src/graphic/group.js -_p[36] = { - value: function(require, exports, module) { - var ShapeContainer = _p.r(61); - return _p.r(11).createClass("Group", { - mixins: [ ShapeContainer ], - base: _p.r(60), - constructor: function Group() { - this.callBase("g"); - } - }); - } -}; - -//src/graphic/hyperlink.js -_p[37] = { - value: function(require, exports, module) { - var ShapeContainer = _p.r(61); - return _p.r(11).createClass("HyperLink", { - mixins: [ ShapeContainer ], - base: _p.r(60), - constructor: function(url) { - this.callBase("a"); - this.setHref(url); - }, - setHref: function(href) { - this.node.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", href); - return this; - }, - getHref: function() { - return this.node.getAttributeNS("xlink:href"); - }, - setTarget: function(target) { - this.node.setAttribute("target", target); - return this; - }, - getTarget: function() { - return this.node.getAttribute("target"); - } - }); - } -}; - -//src/graphic/image.js -_p[38] = { - value: function(require, exports, module) { - return _p.r(11).createClass("Image", { - base: _p.r(60), - constructor: function(url, width, height, x, y) { - this.callBase("image"); - this.url = url; - this.width = width || 0; - this.height = height || 0; - this.x = x || 0; - this.y = y || 0; - this.update(); - }, - update: function() { - this.node.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", this.url); - this.node.setAttribute("x", this.x); - this.node.setAttribute("y", this.y); - this.node.setAttribute("width", this.width); - this.node.setAttribute("height", this.height); - return this; - }, - setUrl: function(url) { - this.url = url === "" ? null : url; - return this.update(); - }, - getUrl: function() { - return this.url; - }, - setWidth: function(width) { - this.width = width; - return this.update(); - }, - getWidth: function() { - return this.width; - }, - setHeight: function(height) { - this.height = height; - return this.update(); - }, - getHeight: function() { - return this.height; - }, - setX: function(x) { - this.x = x; - return this.update(); - }, - getX: function() { - return this.x; - }, - setY: function(y) { - this.y = y; - return this.update(); - }, - getY: function() { - return this.y; - } - }); - } -}; - -//src/graphic/line.js -_p[39] = { - value: function(require, exports, module) { - return _p.r(11).createClass("Line", { - base: _p.r(46), - constructor: function(x1, y1, x2, y2) { - this.callBase(); - this.point1 = { - x: x1 || 0, - y: y1 || 0 - }; - this.point2 = { - x: x2 || 0, - y: y2 || 0 - }; - this.update(); - }, - setPoint1: function(x, y) { - this.point1.x = x; - this.point1.y = y; - return this.update(); - }, - setPoint2: function(x, y) { - this.point2.x = x; - this.point2.y = y; - return this.update(); - }, - getPoint1: function() { - return { - x: this.point1.x, - y: this.point1.y - }; - }, - getPoint2: function() { - return { - x: this.point2.x, - y: this.point2.y - }; - }, - update: function() { - var drawer = this.getDrawer(); - drawer.clear(); - drawer.moveTo(this.point1.x, this.point1.y); - drawer.lineTo(this.point2.x, this.point2.y); - return this; - } - }); - } -}; - -//src/graphic/lineargradient.js -_p[40] = { - value: function(require, exports, module) { - var svg = _p.r(67); - var Gradient = _p.r(35); - return _p.r(11).createClass("LinearGradientBrush", { - base: Gradient, - constructor: function(paper) { - this.callBase("linearGradient", paper); - this.setStartPosition(0, 0); - this.setEndPosition(1, 0); - }, - setStartPosition: function(px, py) { - this.node.setAttribute("x1", px); - this.node.setAttribute("y1", py); - return this; - }, - setEndPosition: function(px, py) { - this.node.setAttribute("x2", px); - this.node.setAttribute("y2", py); - return this; - }, - getStartPosition: function() { - return { - x: +this.node.getAttribute("x1"), - y: +this.node.getAttribute("y1") - }; - }, - getEndPosition: function() { - return { - x: +this.node.getAttribute("x2"), - y: +this.node.getAttribute("y2") - }; - } - }); - } -}; - -//src/graphic/marker.js -_p[41] = { - value: function(require, exports, module) { - var Point = _p.r(50); - var Marker = _p.r(11).createClass("Marker", { - base: _p.r(58), - mixins: [ _p.r(61), _p.r(75) ], - constructor: function() { - this.callBase("marker"); - this.setOrient("auto"); - }, - setRef: function(x, y) { - if (arguments.length === 1) { - y = x.y; - x = x.x; - } - this.node.setAttribute("refX", x); - this.node.setAttribute("refY", y); - return this; - }, - getRef: function() { - return new Point(+this.node.getAttribute("refX"), +this.node.getAttribute("refY")); - }, - setWidth: function(width) { - this.node.setAttribute("markerWidth", this.width = width); - return this; - }, - setOrient: function(orient) { - this.node.setAttribute("orient", this.orient = orient); - return this; - }, - getOrient: function() { - return this.orient; - }, - getWidth: function() { - return +this.width; - }, - setHeight: function(height) { - this.node.setAttribute("markerHeight", this.height = height); - return this; - }, - getHeight: function() { - return +this.height; - } - }); - var Path = _p.r(46); - _p.r(11).extendClass(Path, { - setMarker: function(marker, pos) { - pos = pos || "end"; - if (!marker) { - this.node.removeAttribute("marker-" + pos); - } else { - this.node.setAttribute("marker-" + pos, marker.toString()); - } - return this; - } - }); - return Marker; - } -}; - -//src/graphic/mask.js -/** - * 蒙板 - */ -_p[42] = { - value: function(require, exports, module) { - var Class = _p.r(11); - var Shape = _p.r(60); - var Mask = Class.createClass("Mask", { - base: Shape, - mixins: [ _p.r(61) ], - constructor: function() { - this.callBase("mask"); - }, - mask: function(shape) { - shape.getNode().setAttribute("mask", "url(#" + this.getId() + ")"); - return this; - } - }); - Class.extendClass(Shape, { - maskWith: function(mask) { - mask.mask(this); - return this; - } - }); - return Mask; - } -}; - -//src/graphic/matrix.js -_p[43] = { - value: function(require, exports, module) { - var utils = _p.r(12); - var Box = _p.r(25); - var mPattern = /matrix\s*\((.+)\)/i; - var Point = _p.r(50); - // 注意,合并的结果是先执行m2,再执行m1的结果 - function mergeMatrixData(m2, m1) { - return { - a: m1.a * m2.a + m1.c * m2.b, - b: m1.b * m2.a + m1.d * m2.b, - c: m1.a * m2.c + m1.c * m2.d, - d: m1.b * m2.c + m1.d * m2.d, - e: m1.a * m2.e + m1.c * m2.f + m1.e, - f: m1.b * m2.e + m1.d * m2.f + m1.f - }; - } - function d2r(deg) { - return deg * Math.PI / 180; - } - var Matrix = _p.r(11).createClass("Matrix", { - constructor: function() { - if (arguments.length) { - this.setMatrix.apply(this, arguments); - } else { - this.setMatrix(1, 0, 0, 1, 0, 0); - } - }, - translate: function(x, y) { - this.m = mergeMatrixData(this.m, { - a: 1, - c: 0, - e: x, - b: 0, - d: 1, - f: y - }); - return this; - }, - rotate: function(deg) { - var rad = d2r(deg); - var sin = Math.sin(rad), cos = Math.cos(rad); - this.m = mergeMatrixData(this.m, { - a: cos, - c: -sin, - e: 0, - b: sin, - d: cos, - f: 0 - }); - return this; - }, - scale: function(sx, sy) { - if (sy === undefined) { - sy = sx; - } - this.m = mergeMatrixData(this.m, { - a: sx, - c: 0, - e: 0, - b: 0, - d: sy, - f: 0 - }); - return this; - }, - skew: function(degX, degY) { - if (degY === undefined) { - degY = degX; - } - var tx = Math.tan(d2r(degX)), ty = Math.tan(d2r(degY)); - this.m = mergeMatrixData(this.m, { - a: 1, - c: tx, - e: 0, - b: ty, - d: 1, - f: 0 - }); - return this; - }, - /** - * 获得反转矩阵 - * - * 这是我解方程算出来的 - */ - inverse: function() { - var m = this.m, a = m.a, b = m.b, c = m.c, d = m.d, e = m.e, f = m.f, k, aa, bb, cc, dd, ee, ff; - k = a * d - b * c; - aa = d / k; - bb = -b / k; - cc = -c / k; - dd = a / k; - ee = (c * f - e * d) / k; - ff = (b * e - a * f) / k; - return new Matrix(aa, bb, cc, dd, ee, ff); - }, - setMatrix: function(a, b, c, d, e, f) { - if (arguments.length === 1) { - this.m = utils.clone(arguments[0]); - } else { - this.m = { - a: a, - b: b, - c: c, - d: d, - e: e, - f: f - }; - } - return this; - }, - getMatrix: function() { - return utils.clone(this.m); - }, - getTranslate: function() { - var m = this.m; - return { - x: m.e / m.a, - y: m.f / m.d - }; - }, - mergeMatrix: function(matrix) { - return new Matrix(mergeMatrixData(this.m, matrix.m)); - }, - merge: function(matrix) { - return this.mergeMatrix(matrix); - }, - toString: function() { - return this.valueOf().join(" "); - }, - valueOf: function() { - var m = this.m; - return [ m.a, m.b, m.c, m.d, m.e, m.f ]; - }, - equals: function(matrix) { - var m1 = this.m, m2 = matrix.m; - return m1.a == m2.a && m1.b == m2.b && m1.c == m2.c && m1.d == m2.d && m1.e == m2.e && m1.f == m2.f; - }, - transformPoint: function() { - return Matrix.transformPoint.apply(null, [].slice.call(arguments).concat([ this.m ])); - }, - transformBox: function(box) { - return Matrix.transformBox(box, this.m); - }, - clone: function() { - return new Matrix(this.m); - } - }); - Matrix.parse = function(str) { - var match; - var f = parseFloat; - if (str instanceof Array) { - return new Matrix({ - a: str[0], - b: str[1], - c: str[2], - d: str[3], - e: str[4], - f: str[5] - }); - } - if (match = mPattern.exec(str)) { - var values = match[1].split(","); - if (values.length != 6) { - values = match[1].split(" "); - } - return new Matrix({ - a: f(values[0]), - b: f(values[1]), - c: f(values[2]), - d: f(values[3]), - e: f(values[4]), - f: f(values[5]) - }); - } - return new Matrix(); - }; - Matrix.transformPoint = function(x, y, m) { - if (arguments.length === 2) { - m = y; - y = x.y; - x = x.x; - } - return new Point(m.a * x + m.c * y + m.e, m.b * x + m.d * y + m.f); - }; - Matrix.transformBox = function(box, matrix) { - var xMin = Number.MAX_VALUE, xMax = -Number.MAX_VALUE, yMin = Number.MAX_VALUE, yMax = -Number.MAX_VALUE; - var bps = [ [ box.x, box.y ], [ box.x + box.width, box.y ], [ box.x, box.y + box.height ], [ box.x + box.width, box.y + box.height ] ]; - var bp, rp, rps = []; - while (bp = bps.pop()) { - rp = Matrix.transformPoint(bp[0], bp[1], matrix); - rps.push(rp); - xMin = Math.min(xMin, rp.x); - xMax = Math.max(xMax, rp.x); - yMin = Math.min(yMin, rp.y); - yMax = Math.max(yMax, rp.y); - } - box = new Box({ - x: xMin, - y: yMin, - width: xMax - xMin, - height: yMax - yMin - }); - utils.extend(box, { - closurePoints: rps - }); - return box; - }; - // 获得从 node 到 refer 的变换矩阵 - Matrix.getCTM = function(target, refer) { - var ctm = { - a: 1, - b: 0, - c: 0, - d: 1, - e: 0, - f: 0 - }; - var node = target.shapeNode || target.node; - refer = refer || "parent"; - /** - * 由于新版chrome(dev 48.0)移除了getTransformToElement这个方法可能导致报错,这里做兼容处理 - * @Date 2015-11-12 - * @Editor Naixor - */ - function getTransformToElement(target, source) { - var matrix; - try { - matrix = source.getScreenCTM().inverse(); - } catch (e) { - throw new Error("Can not inverse source element' ctm."); - } - return matrix.multiply(target.getScreenCTM()); - } - // 根据参照坐标系选区的不一样,返回不同的结果 - switch (refer) { - case "screen": - // 以浏览器屏幕为参照坐标系 - ctm = node.getScreenCTM(); - break; - - case "doc": - case "paper": - // 以文档(Paper)为参照坐标系 - ctm = node.getCTM(); - break; - - case "view": - case "top": - // 以顶层绘图容器(视野)为参照坐标系 - if (target.getPaper()) { - ctm = node.getTransformToElement !== undefined ? node.getTransformToElement(target.getPaper().shapeNode) : getTransformToElement(node, target.getPaper().shapeNode); - } - break; - - case "parent": - // 以父容器为参照坐标系 - if (target.node.parentNode) { - ctm = node.getTransformToElement !== undefined ? node.getTransformToElement(target.node.parentNode) : getTransformToElement(node, target.node.parentNode); - } - break; - - default: - // 其他情况,指定参照物 - if (refer.node) { - ctm = node.getTransformToElement !== undefined ? node.getTransformToElement(refer.shapeNode || refer.node) : getTransformToElement(node, refer.shapeNode || refer.node); - } - } - return ctm ? new Matrix(ctm.a, ctm.b, ctm.c, ctm.d, ctm.e, ctm.f) : new Matrix(); - }; - return Matrix; - } -}; - -//src/graphic/palette.js -/** - * 调色板 - */ -_p[44] = { - value: function(require, exports, module) { - //标准color - var StandardColor = _p.r(64), Color = _p.r(28), Utils = _p.r(12); - var Palette = _p.r(11).createClass("Palette", { - constructor: function() { - this.color = {}; - }, - /* - * 获取颜色名称所对应的颜色值的Color对象 - * @param name 需要获取的颜色名称 - * @return 对应颜色名称的color对象, 如果未找到对应的名称, 则返回null - */ - get: function(name) { - var colorValue = this.color[name] || StandardColor.EXTEND_STANDARD[name] || StandardColor.COLOR_STANDARD[name] || ""; - if (colorValue) { - return new Color(colorValue); - } - return null; - }, - /* - * 获取给定名称的颜色的hex值表示 - * @param name 需要获取的颜色名称 - * @return 如果找到对应的名称, 则返回该名称所对应的hex格式的值, 否则, 返回一个空字符串 - */ - getColorValue: function(name) { - return this.color[name] || StandardColor.EXTEND_STANDARD[name] || StandardColor.COLOR_STANDARD[name] || ""; - }, - /* - * 向调色板实例添加自己独有的颜色名称,对已存在的颜色名称, 将会覆盖掉 - * @param name 新添加的颜色名称 - * @param value 新添加的颜色名称所对应的值, 可以是一个合法的颜色字符串或者是一个color对象 - * @return 新添加的颜色的值 - */ - add: function(name, value) { - if (typeof value === "string") { - this.color[name] = new Color(value).toRGBA(); - } else { - this.color[name] = value.toRGBA(); - } - return value; - }, - /* - * 删除调色板实例上用户自己添加的颜色, 该方法不能删除内置的颜色 - * @param name 需要删除的颜色名称 - * @return 删除是否成功的bool值 - */ - remove: function(name) { - if (this.color.hasOwnProperty(name)) { - delete this.color[name]; - return true; - } - return false; - } - }); - Utils.extend(Palette, { - getColor: function(name) { - var colorValue = StandardColor.EXTEND_STANDARD[name] || StandardColor.COLOR_STANDARD[name]; - if (colorValue) { - return new Color(colorValue); - } - return null; - }, - /* - * 通过给定的名字获取标准的颜色值表示, 返回的值以hex的方式提供 - * @param name 需要获取的标准颜色名称 - * @return 名字所对应的颜色值的hex表示, 如果未找到对应名称的值, 则返回一个空字符串 - */ - getColorValue: function(name) { - return StandardColor.EXTEND_STANDARD[name] || StandardColor.COLOR_STANDARD[name] || ""; - }, - /* - * 向调色板添加颜色名称,新添加的颜色对所有的调色板对象都可见 - * 对已存在的颜色名称, 将会覆盖掉 - * @param name 新添加的颜色名称 - * @param value 新添加的颜色名称所对于的值, 应该是一个hex格式的颜色字符串, 如: ”#ff0000“ - * @return 新添加的颜色的值 - */ - addColor: function(name, value) { - if (typeof value === "string") { - StandardColor.EXTEND_STANDARD[name] = new Color(value).toRGBA(); - } else { - StandardColor.EXTEND_STANDARD[name] = value.toRGBA(); - } - return value; - }, - /* - * 删除用户自己添加的颜色, 该方法不能删除内置的颜色, 该方法不会影响调色板实例自由的颜色 - * @param name 需要删除的颜色名称 - * @return 删除是否成功的bool值 - */ - removeColor: function(name) { - if (StandardColor.EXTEND_STANDARD.hasOwnProperty(name)) { - delete StandardColor.EXTEND_STANDARD[name]; - return true; - } - return false; - } - }); - return Palette; - } -}; - -//src/graphic/paper.js -_p[45] = { - value: function(require, exports, module) { - var Class = _p.r(11); - var utils = _p.r(12); - var svg = _p.r(67); - var Container = _p.r(29); - var ShapeContainer = _p.r(61); - var ViewBox = _p.r(75); - var EventHandler = _p.r(33); - var Styled = _p.r(66); - var Matrix = _p.r(43); - var Paper = Class.createClass("Paper", { - mixins: [ ShapeContainer, EventHandler, Styled, ViewBox ], - constructor: function(container) { - this.callBase(); - this.node = this.createSVGNode(); - this.node.paper = this; - this.node.appendChild(this.resourceNode = svg.createNode("defs")); - this.node.appendChild(this.shapeNode = svg.createNode("g")); - this.resources = new Container(); - this.setWidth("100%").setHeight("100%"); - if (container) { - this.renderTo(container); - } - this.callMixin(); - }, - renderTo: function(container) { - if (utils.isString(container)) { - container = document.getElementById(container); - } - this.container = container; - container.appendChild(this.node); - }, - createSVGNode: function() { - var node = svg.createNode("svg"); - node.setAttribute("xmlns", "http://www.w3.org/2000/svg"); - node.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"); - node.setAttribute("version", "1.1"); - return node; - }, - getNode: function() { - return this.node; - }, - getContainer: function() { - return this.container; - }, - getWidth: function() { - return this.node.clientWidth; - }, - setWidth: function(width) { - this.node.setAttribute("width", width); - return this; - }, - getHeight: function() { - return this.node.clientHeight; - }, - setHeight: function(height) { - this.node.setAttribute("height", height); - return this; - }, - setViewPort: function(cx, cy, zoom) { - var viewport, box; - if (arguments.length == 1) { - viewport = arguments[0]; - cx = viewport.center.x; - cy = viewport.center.y; - zoom = viewport.zoom; - } - zoom = zoom || 1; - box = this.getViewBox(); - var matrix = new Matrix(); - var dx = box.x + box.width / 2 - cx, dy = box.y + box.height / 2 - cy; - matrix.translate(-cx, -cy); - matrix.scale(zoom); - matrix.translate(cx, cy); - matrix.translate(dx, dy); - this.shapeNode.setAttribute("transform", "matrix(" + matrix + ")"); - this.viewport = { - center: { - x: cx, - y: cy - }, - offset: { - x: dx, - y: dy - }, - zoom: zoom - }; - return this; - }, - getViewPort: function() { - if (!this.viewport) { - var box = this.getViewBox(); - return { - zoom: 1, - center: { - x: box.x + box.width / 2, - y: box.y + box.height / 2 - }, - offset: { - x: 0, - y: 0 - } - }; - } - return this.viewport; - }, - getViewPortMatrix: function() { - return Matrix.parse(this.shapeNode.getAttribute("transform")); - }, - getViewPortTransform: function() { - var m = this.shapeNode.getCTM(); - return new Matrix(m.a, m.b, m.c, m.d, m.e, m.f); - }, - getTransform: function() { - return this.getViewPortTransform().reverse(); - }, - addResource: function(resource) { - this.resources.appendItem(resource); - if (resource.node) { - this.resourceNode.appendChild(resource.node); - } - return this; - }, - removeResource: function(resource) { - if (resource.remove) { - resource.remove(); - } - if (resource.node) { - this.resourceNode.removeChild(resource.node); - } - return this; - }, - getPaper: function() { - return this; - } - }); - var Shape = _p.r(60); - Class.extendClass(Shape, { - getPaper: function() { - var parent = this.container; - while (parent && parent instanceof Paper === false) { - parent = parent.container; - } - return parent; - }, - isAttached: function() { - return !!this.getPaper(); - }, - whenPaperReady: function(fn) { - var me = this; - function check() { - var paper = me.getPaper(); - if (paper && fn) { - fn.call(me, paper); - } - return paper; - } - if (!check()) { - this.on("add treeadd", function listen() { - if (check()) { - me.off("add", listen); - me.off("treeadd", listen); - } - }); - } - return this; - } - }); - return Paper; - } -}; - -//src/graphic/path.js -_p[46] = { - value: function(require, exports, module) { - var Utils = _p.r(12); - var createClass = _p.r(11).createClass; - var Shape = _p.r(60); - var svg = _p.r(67); - var g = _p.r(34); - var slice = Array.prototype.slice, flatten = Utils.flatten; - var PathDrawer = createClass("PathDrawer", { - constructor: function(path) { - this.segment = []; - this.path = path; - this.__clear = false; - }, - getPath: function() { - return this.path; - }, - redraw: function() { - this._transation = this._transation || []; - return this.clear(); - }, - done: function() { - var transation = this._transation; - this._transation = null; - this.push(transation); - return this; - }, - clear: function() { - if (this._transation) { - this._transation = []; - } else { - this.path.setPathData("M 0 0"); - } - this._clear = true; - return this; - }, - push: function() { - var segment = slice.call(arguments); - var originData; - if (this._transation) { - this._transation.push(segment); - return this; - } - if (this._clear) { - originData = ""; - this._clear = false; - } else { - originData = this.path.getPathData(); - } - originData = originData || ""; - this.path.setPathData(originData + g.pathToString(segment)); - return this; - }, - moveTo: function(x, y) { - return this.push("M", slice.call(arguments)); - }, - moveBy: function(dx, dy) { - return this.push("m", slice.call(arguments)); - }, - lineTo: function(x, y) { - return this.push("L", slice.call(arguments)); - }, - lineBy: function(dx, dy) { - return this.push("l", slice.call(arguments)); - }, - arcTo: function(rx, ry, xr, laf, sf, x, y) { - return this.push("A", slice.call(arguments)); - }, - arcBy: function(rx, ry, xr, laf, sf, dx, dy) { - return this.push("a", arguments); - }, - carcTo: function(r, laf, sf, x, y) { - return this.push("A", [ r, r, 0 ].concat(slice.call(arguments, 1))); - }, - carcBy: function(r, laf, sf, dx, dy) { - return this.push("a", [ r, r, 0 ].concat(slice.call(arguments, 1))); - }, - bezierTo: function(x1, y1, x2, y2, x, y) { - return this.push("C", slice.call(arguments)); - }, - bezierBy: function(dx1, dy1, dx2, dy2, dx, dy) { - return this.push("c", slice.call(arguments)); - }, - close: function() { - return this.push("z"); - } - }); - return createClass("Path", { - base: Shape, - constructor: function(data) { - this.callBase("path"); - if (data) { - this.setPathData(data); - } - this.node.setAttribute("fill", svg.defaults.fill); - this.node.setAttribute("stroke", svg.defaults.stroke); - }, - setPathData: function(data) { - data = data || "M0,0"; - this.pathdata = g.pathToString(data); - this.node.setAttribute("d", this.pathdata); - this.trigger("shapeupdate", { - type: "pathdata" - }); - return this; - }, - getPathData: function() { - return this.pathdata || ""; - }, - getDrawer: function() { - return new PathDrawer(this); - }, - isClosed: function() { - var data = this.getPathData(); - return !!~data.indexOf("z") || !!~data.indexOf("Z"); - } - }); - } -}; - -//src/graphic/pattern.js -_p[47] = { - value: function(require, exports, module) { - var Resource = _p.r(58); - var ShapeContainer = _p.r(61); - var svg = _p.r(67); - return _p.r(11).createClass("PatternBrush", { - base: Resource, - mixins: [ ShapeContainer ], - constructor: function(paper) { - this.callBase("pattern", paper); - this.node.setAttribute("patternUnits", "userSpaceOnUse"); - }, - setX: function(x) { - this.x = x; - this.node.setAttribute("x", x); - return this; - }, - setY: function(y) { - this.y = y; - this.node.setAttribute("y", y); - return this; - }, - setWidth: function(width) { - this.width = width; - this.node.setAttribute("width", width); - return this; - }, - setHeight: function(height) { - this.height = height; - this.node.setAttribute("height", height); - return this; - }, - getWidth: function() { - return this.width; - }, - getHeight: function() { - return this.height; - } - }); - } -}; - -//src/graphic/pen.js -_p[48] = { - value: function(require, exports, module) { - var Color = _p.r(28); - return _p.r(11).createClass("Pen", { - constructor: function(brush, width) { - this.brush = brush; - this.width = width || 1; - this.linecap = null; - this.linejoin = null; - this.dashArray = null; - this.opacity = 1; - }, - getBrush: function() { - return this.brush; - }, - setBrush: function(brush) { - this.brush = brush; - return this; - }, - setColor: function(color) { - return this.setBrush(color); - }, - getColor: function() { - return this.brush instanceof Color ? this.brush : null; - }, - getWidth: function() { - return this.width; - }, - setWidth: function(width) { - this.width = width; - return this; - }, - getOpacity: function() { - return this.opacity; - }, - setOpacity: function(opacity) { - this.opacity = opacity; - }, - getLineCap: function() { - return this.linecap; - }, - setLineCap: function(linecap) { - this.linecap = linecap; - return this; - }, - getLineJoin: function() { - return this.linejoin; - }, - setLineJoin: function(linejoin) { - this.linejoin = linejoin; - return this; - }, - getDashArray: function() { - return this.dashArray; - }, - setDashArray: function(dashArray) { - this.dashArray = dashArray; - return this; - }, - stroke: function(shape) { - var node = shape.node; - node.setAttribute("stroke", this.brush.toString()); - node.setAttribute("stroke-width", this.getWidth()); - if (this.getOpacity() < 1) { - node.setAttribute("stroke-opacity", this.getOpacity()); - } - if (this.getLineCap()) { - node.setAttribute("stroke-linecap", this.getLineCap()); - } - if (this.getLineJoin()) { - node.setAttribute("stroke-linejoin", this.getLineJoin()); - } - if (this.getDashArray()) { - node.setAttribute("stroke-dasharray", this.getDashArray()); - } - } - }); - } -}; - -//src/graphic/pie.js -_p[49] = { - value: function(require, exports, module) { - return _p.r(11).createClass({ - base: _p.r(68), - constructor: function(radius, angle, angleOffset) { - this.callBase([ 0, radius ], angle, angleOffset); - }, - getRadius: function() { - return this.getSectionArray()[1]; - }, - setRadius: function(radius) { - this.setSectionArray([ 0, radius ]); - } - }); - } -}; - -//src/graphic/point.js -/* - * 点对象抽象 - */ -_p[50] = { - value: function(require, exports, module) { - /** - * @class kity.Point - * @description 表示一个点 - */ - var Point = _p.r(11).createClass("Point", { - /** - * @constructor - * @for kity.Point - * @description 指定默认的 x 和 y 创建一个点 - * - * @param {Number} x 点的 x 坐标 - * @param {Number} y 点的 y 坐标 - */ - constructor: function(x, y) { - /** - * @property - * @for kity.Point - * @description 表示点的 x 坐标 - * @type {Number} - */ - this.x = x || 0; - /** - * @property - * @for kity.Point - * @description 表示点的 y 坐标 - * @type {Number} - */ - this.y = y || 0; - }, - offset: function(dx, dy) { - if (arguments.length == 1) { - dy = dx.y; - dx = dx.x; - } - return new Point(this.x + dx, this.y + dy); - }, - valueOf: function() { - return [ this.x, this.y ]; - }, - toString: function() { - return this.valueOf().join(" "); - }, - spof: function() { - return new Point((this.x | 0) + .5, (this.y | 0) + .5); - }, - round: function() { - return new Point(this.x | 0, this.y | 0); - }, - isOrigin: function() { - return this.x === 0 && this.y === 0; - } - }); - /** - * @static - * @method fromPolar() - * @for kity.Point - * @grammar kity.Point.fromPolar(radius, angle, unit) => kity.Point - * @param {Number} radius 极坐标中的半径 - * @param {Number} angle 极坐标中的角度 - * @param {String} unit 角度使用的单位,默认为 'deg' (角度),可以取值为 'rad',表示传入的是弧度值 - */ - Point.fromPolar = function(radius, angle, unit) { - if (unit != "rad") { - // deg to rad - angle = angle / 180 * Math.PI; - } - return new Point(radius * Math.cos(angle), radius * Math.sin(angle)); - }; - Point.parse = function(unknown) { - if (!unknown) return new Point(); - if (unknown instanceof Point) { - return unknown; - } - if (typeof unknown == "string") { - return Point.parse(unknown.split(/\s*[\s,]\s*/)); - } - if ("0" in unknown && "1" in unknown) { - return new Point(unknown[0], unknown[1]); - } - }; - return Point; - } -}; - -//src/graphic/pointcontainer.js -/** - * 点集合容器 - */ -_p[51] = { - value: function(require, exports, module) { - return _p.r(11).createClass("PointContainer", { - base: _p.r(29), - constructor: function() { - this.callBase(); - }, - addPoint: function(point, pos) { - return this.addItem.apply(this, arguments); - }, - prependPoint: function() { - return this.prependItem.apply(this, arguments); - }, - appendPoint: function() { - return this.appendItem.apply(this, arguments); - }, - removePoint: function(pos) { - return this.removeItem.apply(this, arguments); - }, - addPoints: function() { - return this.addItems.apply(this, arguments); - }, - setPoints: function() { - return this.setItems.apply(this, arguments); - }, - getPoint: function() { - return this.getItem.apply(this, arguments); - }, - getPoints: function() { - return this.getItems.apply(this, arguments); - }, - getFirstPoint: function() { - return this.getFirstItem.apply(this, arguments); - }, - getLastPoint: function() { - return this.getLastItem.apply(this, arguments); - } - }); - } -}; - -//src/graphic/poly.js -/* - * 通过点来决定图形的公共父类 - */ -_p[52] = { - value: function(require, exports, module) { - var Utils = _p.r(12); - return _p.r(11).createClass("Poly", { - base: _p.r(46), - mixins: [ _p.r(51) ], - constructor: function(points, closeable) { - this.callBase(); - //是否可闭合 - this.closeable = !!closeable; - this.setPoints(points || []); - this.changeable = true; - this.update(); - }, - //当点集合发生变化时采取的动作 - onContainerChanged: function() { - if (this.changeable) { - this.update(); - } - }, - update: function() { - var drawer = this.getDrawer(), points = this.getPoints(); - drawer.clear(); - if (!points.length) { - return this; - } - drawer.moveTo(points[0]); - for (var i = 1, point, len = points.length; i < len; i++) { - point = points[i]; - drawer.lineTo(point); - } - if (this.closeable && points.length > 2) { - drawer.close(); - } - return this; - } - }); - } -}; - -//src/graphic/polygon.js -_p[53] = { - value: function(require, exports, module) { - return _p.r(11).createClass("Polygon", { - base: _p.r(52), - constructor: function(points) { - this.callBase(points, true); - } - }); - } -}; - -//src/graphic/polyline.js -_p[54] = { - value: function(require, exports, module) { - return _p.r(11).createClass("Polyline", { - base: _p.r(52), - constructor: function(points) { - this.callBase(points); - } - }); - } -}; - -//src/graphic/radialgradient.js -_p[55] = { - value: function(require, exports, module) { - var Gradient = _p.r(35); - return _p.r(11).createClass("RadialGradientBrush", { - base: Gradient, - constructor: function(paper) { - this.callBase("radialGradient", paper); - this.setCenter(.5, .5); - this.setFocal(.5, .5); - this.setRadius(.5); - }, - setCenter: function(cx, cy) { - this.node.setAttribute("cx", cx); - this.node.setAttribute("cy", cy); - return this; - }, - getCenter: function() { - return { - x: +this.node.getAttribute("cx"), - y: +this.node.getAttribute("cy") - }; - }, - setFocal: function(fx, fy) { - this.node.setAttribute("fx", fx); - this.node.setAttribute("fy", fy); - return this; - }, - getFocal: function() { - return { - x: +this.node.getAttribute("fx"), - y: +this.node.getAttribute("fy") - }; - }, - setRadius: function(r) { - this.node.setAttribute("r", r); - return this; - }, - getRadius: function() { - return +this.node.getAttribute("r"); - } - }); - } -}; - -//src/graphic/rect.js -_p[56] = { - value: function(require, exports, module) { - var RectUtils = {}, Utils = _p.r(12), Point = _p.r(50), Box = _p.r(25); - Utils.extend(RectUtils, { - //根据传递进来的width、height和radius属性, - //获取最适合的radius值 - formatRadius: function(width, height, radius) { - var minValue = Math.floor(Math.min(width / 2, height / 2)); - return Math.min(minValue, radius); - } - }); - /** - * @class kity.Rect - * @description 表示一个矩形 - * @base kity.Path - */ - var Rect = _p.r(11).createClass("Rect", { - base: _p.r(46), - /** - * @constructor - * @for kity.Rect - * @grammar new kity.Rect(width, height, x, y, radius) - * @param {Number} width 矩形的初始化宽度 - * @param {Number} height 矩形的初始化高度 - * @param {Number} x 矩形的初始化 x 坐标 - * @param {Number} y 矩形的初始化 y 坐标 - * @param {Number} radius 矩形的初始化圆角大小 - */ - constructor: function(width, height, x, y, radius) { - this.callBase(); - this.x = x || 0; - this.y = y || 0; - this.width = width || 0; - this.height = height || 0; - this.radius = RectUtils.formatRadius(this.width, this.height, radius || 0); - this.update(); - }, - update: function() { - var x = this.x, y = this.y, w = this.width, h = this.height, r = this.radius; - var drawer = this.getDrawer().redraw(); - if (!r) { - // 直角 - drawer.push("M", x, y); - drawer.push("h", w); - drawer.push("v", h); - drawer.push("h", -w); - drawer.push("z"); - } else { - //圆角 - w -= 2 * r; - h -= 2 * r; - drawer.push("M", x + r, y); - drawer.push("h", w); - drawer.push("a", r, r, 0, 0, 1, r, r); - drawer.push("v", h); - drawer.push("a", r, r, 0, 0, 1, -r, r); - drawer.push("h", -w); - drawer.push("a", r, r, 0, 0, 1, -r, -r); - drawer.push("v", -h); - drawer.push("a", r, r, 0, 0, 1, r, -r); - drawer.push("z"); - } - drawer.done(); - return this; - }, - /** - * @method setWidth - * @for kity.Rect - * @grammar setWidth(width) => kity.Rect - * @description 设置矩形的宽度,设置后返回矩形实例本身 - * @param {Number} width 宽度值 - * - * @example - * ```js - * rect.setWidth(300); - * ``` - */ - setWidth: function(width) { - this.width = width; - return this.update(); - }, - /** - * @method setHeight - * @for kity.Rect - * @grammar setHeight(height) => kity.Rect - * @description 设置矩形的高度,设置后返回矩形实例本身 - * @param {Number} height 高度值 - * - * @example - * ```js - * rect.setHeight(200); - * ``` - */ - setHeight: function(height) { - this.height = height; - return this.update(); - }, - /** - * @method setSize - * @for kity.Rect - * @grammar setSize(width, height) => kity.Rect - * @description 设置矩形的尺寸,设置后返回矩形本身 - * @param {Number} width 矩形的宽度值 - * @param {Number} height 矩形的高度值 - * - * @example - * ```js - * rect.setSize(300, 200); - * ``` - */ - setSize: function(width, height) { - this.width = width; - this.height = height; - return this.update(); - }, - /** - * @method setBox - * @for kity.Rect - * @grammar setBox(box) => kity.Rect - * @description 使用一个 kity 的盒子数据, - * @param {kity.Box} box 盒子数据 - */ - setBox: function(box) { - this.x = box.x; - this.y = box.y; - this.width = box.width; - this.height = box.height; - return this.update(); - }, - getBox: function() { - return new Box(this.x, this.y, this.width, this.height); - }, - getRadius: function() { - return this.radius; - }, - setRadius: function(radius) { - this.radius = RectUtils.formatRadius(this.width, this.height, radius || 0); - return this.update(); - }, - getPosition: function() { - return new Point(this.x, this.y); - }, - setPosition: function(x, y) { - if (arguments.length == 1) { - var p = Point.parse(arguments[0]); - y = p.y; - x = p.x; - } - this.x = x; - this.y = y; - return this.update(); - }, - getWidth: function() { - return this.width; - }, - getHeight: function() { - return this.height; - }, - getPositionX: function() { - return this.x; - }, - getPositionY: function() { - return this.y; - }, - setPositionX: function(x) { - this.x = x; - return this.update(); - }, - setPositionY: function(y) { - this.y = y; - return this.update(); - } - }); - return Rect; - } -}; - -//src/graphic/regularpolygon.js -_p[57] = { - value: function(require, exports, module) { - var Point = _p.r(50); - return _p.r(11).createClass("RegularPolygon", { - base: _p.r(46), - constructor: function(side, radius, x, y) { - this.callBase(); - this.radius = radius || 0; - this.side = Math.max(side || 3, 3); - if (arguments.length > 2) { - if (arguments.length == 3) { - y = x.y; - x = x.x; - } - } - this.center = new Point(x, y); - this.draw(); - }, - getSide: function() { - return this.side; - }, - setSide: function(side) { - this.side = side; - return this.draw(); - }, - getRadius: function() { - return this.radius; - }, - setRadius: function(radius) { - this.radius = radius; - return this.draw(); - }, - draw: function() { - var radius = this.radius, side = this.side, step = Math.PI * 2 / side, drawer = this.getDrawer(), i; - drawer.clear(); - drawer.moveTo(Point.fromPolar(radius, Math.PI / 2, "rad").offset(this.center)); - for (i = 0; i <= side; i++) { - drawer.lineTo(Point.fromPolar(radius, step * i + Math.PI / 2, "rad").offset(this.center)); - } - drawer.close(); - return this; - } - }); - } -}; - -//src/graphic/resource.js -/** - * @fileOverview - * - * 资源节点基类 - * - * @author: techird - * @copyright: Baidu FEX, 2014 - */ -_p[58] = { - value: function(require, exports, module) { - var svg = _p.r(67); - return _p.r(11).createClass("Resource", { - constructor: function(nodeType, paper) { - this.callBase(); - this.node = svg.createNode(nodeType); - if (paper) { - paper.addResource(this); - } - }, - toString: function() { - return "url(#" + this.node.id + ")"; - } - }); - } -}; - -//src/graphic/ring.js -_p[59] = { - value: function(require, exports, module) { - return _p.r(11).createClass({ - base: _p.r(68), - constructor: function(innerRadius, outerRadius) { - this.callBase([ innerRadius, outerRadius ], 360, 0); - }, - getInnerRadius: function() { - return this.getSectionArray()[0]; - }, - getOuterRadius: function() { - return this.getSectionArray()[1]; - }, - setInnerRadius: function(value) { - this.setSectionArray([ value, this.getOuterRadius() ]); - }, - setOuterRadius: function(value) { - this.setSectionArray([ this.getInnerRadius(), value ]); - } - }); - } -}; - -//src/graphic/shape.js -_p[60] = { - value: function(require, exports, module) { - var svg = _p.r(67); - var utils = _p.r(12); - var EventHandler = _p.r(33); - var Styled = _p.r(66); - var Data = _p.r(31); - var Matrix = _p.r(43); - var Pen = _p.r(48); - var slice = Array.prototype.slice; - var Box = _p.r(25); - var Shape = _p.r(11).createClass("Shape", { - mixins: [ EventHandler, Styled, Data ], - constructor: function Shape(tagName) { - this.node = svg.createNode(tagName); - this.node.shape = this; - this.transform = { - translate: null, - rotate: null, - scale: null, - matrix: null - }; - this.callMixin(); - }, - getId: function() { - return this.node.id; - }, - setId: function(id) { - this.node.id = id; - return this; - }, - getNode: function() { - return this.node; - }, - getBoundaryBox: function() { - var box; - try { - box = this.node.getBBox(); - } catch (e) { - box = { - x: this.node.clientLeft, - y: this.node.clientTop, - width: this.node.clientWidth, - height: this.node.clientHeight - }; - } - return new Box(box); - }, - getRenderBox: function(refer) { - var box = this.getBoundaryBox(); - var matrix = this.getTransform(refer); - return matrix.transformBox(box); - }, - getWidth: function() { - return this.getRenderBox().width; - }, - getHeight: function() { - return this.getRenderBox().height; - }, - getSize: function() { - var box = this.getRenderBox(); - delete box.x; - delete box.y; - return box; - }, - setOpacity: function(value) { - this.node.setAttribute("opacity", value); - return this; - }, - getOpacity: function() { - var opacity = this.node.getAttribute("opacity"); - return opacity ? +opacity : 1; - }, - setVisible: function(value) { - if (value) { - this.node.removeAttribute("display"); - } else { - this.node.setAttribute("display", "none"); - } - return this; - }, - getVisible: function() { - this.node.getAttribute("display"); - }, - hasAncestor: function(node) { - var parent = this.container; - while (parent) { - if (parent === node) { - return true; - } - parent = parent.container; - } - return false; - }, - getTransform: function(refer) { - return Matrix.getCTM(this, refer); - }, - clearTransform: function() { - this.node.removeAttribute("transform"); - this.transform = { - translate: null, - rotate: null, - scale: null, - matrix: null - }; - this.trigger("shapeupdate", { - type: "transform" - }); - return this; - }, - _applyTransform: function() { - var t = this.transform, result = []; - if (t.translate) { - result.push([ "translate(", t.translate, ")" ]); - } - if (t.rotate) { - result.push([ "rotate(", t.rotate, ")" ]); - } - if (t.scale) { - result.push([ "scale(", t.scale, ")" ]); - } - if (t.matrix) { - result.push([ "matrix(", t.matrix, ")" ]); - } - this.node.setAttribute("transform", utils.flatten(result).join(" ")); - return this; - }, - setMatrix: function(m) { - this.transform.matrix = m; - return this._applyTransform(); - }, - setTranslate: function(t) { - this.transform.translate = t !== null && slice.call(arguments) || null; - return this._applyTransform(); - }, - setRotate: function(r) { - this.transform.rotate = r !== null && slice.call(arguments) || null; - return this._applyTransform(); - }, - setScale: function(s) { - this.transform.scale = s !== null && slice.call(arguments) || null; - return this._applyTransform(); - }, - translate: function(dx, dy) { - var m = this.transform.matrix || new Matrix(); - if (dy === undefined) { - dy = 0; - } - this.transform.matrix = m.translate(dx, dy); - return this._applyTransform(); - }, - rotate: function(deg) { - var m = this.transform.matrix || new Matrix(); - this.transform.matrix = m.rotate(deg); - return this._applyTransform(); - }, - scale: function(sx, sy) { - var m = this.transform.matrix || new Matrix(); - if (sy === undefined) { - sy = sx; - } - this.transform.matrix = m.scale(sx, sy); - return this._applyTransform(); - }, - skew: function(sx, sy) { - var m = this.transform.matrix || new Matrix(); - if (sy === undefined) { - sy = sx; - } - this.transform.matrix = m.skew(sx, sy); - return this._applyTransform(); - }, - stroke: function(pen, width) { - if (pen && pen.stroke) { - pen.stroke(this); - } else if (pen) { - // 字符串或重写了 toString 的对象 - this.node.setAttribute("stroke", pen.toString()); - if (width) { - this.node.setAttribute("stroke-width", width); - } - } else if (pen === null) { - this.node.removeAttribute("stroe"); - } - return this; - }, - fill: function(brush) { - // 字符串或重写了 toString 的对象 - if (brush) { - this.node.setAttribute("fill", brush.toString()); - } - if (brush === null) { - this.node.removeAttribute("fill"); - } - return this; - }, - setAttr: function(a, v) { - var me = this; - if (utils.isObject(a)) { - utils.each(a, function(val, key) { - me.setAttr(key, val); - }); - } - if (v === undefined || v === null || v === "") { - this.node.removeAttribute(a); - } else { - this.node.setAttribute(a, v); - } - return this; - }, - getAttr: function(a) { - return this.node.getAttribute(a); - } - }); - return Shape; - } -}; - -//src/graphic/shapecontainer.js -_p[61] = { - value: function(require, exports, module) { - var Container = _p.r(29); - var utils = _p.r(12); - var ShapeContainer = _p.r(11).createClass("ShapeContainer", { - base: Container, - isShapeContainer: true, - /* private */ - handleAdd: function(shape, index) { - var parent = this.getShapeNode(); - parent.insertBefore(shape.node, parent.childNodes[index] || null); - shape.trigger("add", { - container: this - }); - if (shape.notifyTreeModification) { - shape.notifyTreeModification("treeadd", this); - } - }, - /* private */ - handleRemove: function(shape, index) { - var parent = this.getShapeNode(); - parent.removeChild(shape.node); - shape.trigger("remove", { - container: this - }); - if (shape.notifyTreeModification) { - shape.notifyTreeModification("treeremove", this); - } - }, - /* private */ - notifyTreeModification: function(type, container) { - this.eachItem(function(index, shape) { - if (shape.notifyTreeModification) { - shape.notifyTreeModification(type, container); - } - shape.trigger(type, { - container: container - }); - }); - }, - /* public */ - getShape: function(index) { - return this.getItem(index); - }, - /* public */ - addShape: function(shape, index) { - return this.addItem(shape, index); - }, - put: function(shape) { - this.addShape(shape); - return shape; - }, - appendShape: function(shape) { - return this.addShape(shape); - }, - prependShape: function(shape) { - return this.addShape(shape, 0); - }, - replaceShape: function(replacer, origin) { - var index = this.indexOf(origin); - if (index === -1) { - return; - } - this.removeShape(index); - this.addShape(replacer, index); - return this; - }, - addShapeBefore: function(shape, refer) { - var index = this.indexOf(refer); - return this.addShape(shape, index); - }, - addShapeAfter: function(shape, refer) { - var index = this.indexOf(refer); - return this.addShape(shape, index === -1 ? undefined : index + 1); - }, - /* public */ - addShapes: function(shapes) { - return this.addItems(shapes); - }, - /* public */ - removeShape: function(index) { - return this.removeItem(index); - }, - getShapes: function() { - return this.getItems(); - }, - getShapesByType: function(name) { - var shapes = []; - function getShapes(shape) { - if (name.toLowerCase() == shape.getType().toLowerCase()) { - shapes.push(shape); - } - if (shape.isShapeContainer) { - utils.each(shape.getShapes(), function(n) { - getShapes(n); - }); - } - } - getShapes(this); - return shapes; - }, - /* public */ - getShapeById: function(id) { - return this.getShapeNode().getElementById(id).shape; - }, - arrangeShape: function(shape, index) { - return this.removeShape(shape).addShape(shape, index); - }, - /* protected */ - getShapeNode: function() { - return this.shapeNode || this.node; - } - }); - var Shape = _p.r(60); - _p.r(11).extendClass(Shape, { - bringTo: function(index) { - this.container.arrangeShape(this, index); - return this; - }, - bringFront: function() { - return this.bringTo(this.container.indexOf(this) + 1); - }, - bringBack: function() { - return this.bringTo(this.container.indexOf(this) - 1); - }, - bringTop: function() { - this.container.removeShape(this).addShape(this); - return this; - }, - bringRear: function() { - return this.bringTo(0); - }, - bringRefer: function(referShape, offset) { - if (referShape.container) { - if (this.remove) { - this.remove(); - } - referShape.container.addShape(this, referShape.container.indexOf(referShape) + (offset || 0)); - } - return this; - }, - bringAbove: function(referShape) { - return this.bringRefer(referShape); - }, - bringBelow: function(referShape) { - return this.bringRefer(referShape, 1); - }, - replaceBy: function(newShape) { - if (this.container) { - newShape.bringAbove(this); - this.remove(); - } - return this; - } - }); - return ShapeContainer; - } -}; - -//src/graphic/shapeevent.js -/* - * 图形事件包装类 - * */ -_p[62] = { - value: function(require, exprots, module) { - var Matrix = _p.r(43), Utils = _p.r(12), Point = _p.r(50); - return _p.r(11).createClass("ShapeEvent", { - constructor: function(event) { - var target = null; - // dom 事件封装对象 - if (!Utils.isObject(event.target)) { - this.type = event.type; - target = event.target; - // use标签有特殊属性, 需要区别对待 - if (target.correspondingUseElement) { - target = target.correspondingUseElement; - } - this.originEvent = event; - this.targetShape = target.shape || target.paper || event.currentTarget && (event.currentTarget.shape || event.currentTarget.paper); - if (event._kityParam) { - Utils.extend(this, event._kityParam); - } - } else { - Utils.extend(this, event); - } - }, - preventDefault: function() { - var evt = this.originEvent; - if (!evt) { - return true; - } - if (evt.preventDefault) { - evt.preventDefault(); - return evt.cancelable; - } else { - evt.returnValue = false; - return true; - } - }, - //当前鼠标事件在用户坐标系中点击的点的坐标位置 - getPosition: function(refer, touchIndex) { - if (!this.originEvent) { - return null; - } - var eventClient = this.originEvent.touches ? this.originEvent.touches[touchIndex || 0] : this.originEvent; - var target = this.targetShape; - var targetNode = target.shapeNode || target.node; - var pScreen = new Point(eventClient && eventClient.clientX || 0, eventClient && eventClient.clientY || 0); - var pTarget = Matrix.transformPoint(pScreen, targetNode.getScreenCTM().inverse()); - var pRefer = Matrix.getCTM(target, refer || "view").transformPoint(pTarget); - return pRefer; - }, - stopPropagation: function() { - var evt = this.originEvent; - if (!evt) { - return true; - } - if (evt.stopPropagation) { - evt.stopPropagation(); - } else { - evt.cancelBubble = false; - } - } - }); - } -}; - -//src/graphic/shapepoint.js -/* - * 图形上的点抽象 - */ -_p[63] = { - value: function(require, exports, module) { - return _p.r(11).createClass("ShapePoint", { - base: _p.r(50), - constructor: function(px, py) { - this.callBase(px, py); - }, - setX: function(x) { - return this.setPoint(x, this.y); - }, - setY: function(y) { - return this.setPoint(this.x, y); - }, - setPoint: function(x, y) { - this.x = x; - this.y = y; - this.update(); - return this; - }, - getPoint: function() { - return this; - }, - update: function() { - if (this.container && this.container.update) { - this.container.update(); - } - return this; - } - }); - } -}; - -//src/graphic/standardcolor.js -/** - * 标准颜色映射 - */ -_p[64] = { - value: { - COLOR_STANDARD: { - aliceblue: "#f0f8ff", - antiquewhite: "#faebd7", - aqua: "#00ffff", - aquamarine: "#7fffd4", - azure: "#f0ffff", - beige: "#f5f5dc", - bisque: "#ffe4c4", - black: "#000000", - blanchedalmond: "#ffebcd", - blue: "#0000ff", - blueviolet: "#8a2be2", - brown: "#a52a2a", - burlywood: "#deb887", - cadetblue: "#5f9ea0", - chartreuse: "#7fff00", - chocolate: "#d2691e", - coral: "#ff7f50", - cornflowerblue: "#6495ed", - cornsilk: "#fff8dc", - crimson: "#dc143c", - cyan: "#00ffff", - darkblue: "#00008b", - darkcyan: "#008b8b", - darkgoldenrod: "#b8860b", - darkgray: "#a9a9a9", - darkgreen: "#006400", - darkgrey: "#a9a9a9", - darkkhaki: "#bdb76b", - darkmagenta: "#8b008b", - darkolivegreen: "#556b2f", - darkorange: "#ff8c00", - darkorchid: "#9932cc", - darkred: "#8b0000", - darksalmon: "#e9967a", - darkseagreen: "#8fbc8f", - darkslateblue: "#483d8b", - darkslategray: "#2f4f4f", - darkslategrey: "#2f4f4f", - darkturquoise: "#00ced1", - darkviolet: "#9400d3", - deeppink: "#ff1493", - deepskyblue: "#00bfff", - dimgray: "#696969", - dimgrey: "#696969", - dodgerblue: "#1e90ff", - firebrick: "#b22222", - floralwhite: "#fffaf0", - forestgreen: "#228b22", - fuchsia: "#ff00ff", - gainsboro: "#dcdcdc", - ghostwhite: "#f8f8ff", - gold: "#ffd700", - goldenrod: "#daa520", - gray: "#808080", - green: "#008000", - greenyellow: "#adff2f", - grey: "#808080", - honeydew: "#f0fff0", - hotpink: "#ff69b4", - indianred: "#cd5c5c", - indigo: "#4b0082", - ivory: "#fffff0", - khaki: "#f0e68c", - lavender: "#e6e6fa", - lavenderblush: "#fff0f5", - lawngreen: "#7cfc00", - lemonchiffon: "#fffacd", - lightblue: "#add8e6", - lightcoral: "#f08080", - lightcyan: "#e0ffff", - lightgoldenrodyellow: "#fafad2", - lightgray: "#d3d3d3", - lightgreen: "#90ee90", - lightgrey: "#d3d3d3", - lightpink: "#ffb6c1", - lightsalmon: "#ffa07a", - lightseagreen: "#20b2aa", - lightskyblue: "#87cefa", - lightslategray: "#778899", - lightslategrey: "#778899", - lightsteelblue: "#b0c4de", - lightyellow: "#ffffe0", - lime: "#00ff00", - limegreen: "#32cd32", - linen: "#faf0e6", - magenta: "#ff00ff", - maroon: "#800000", - mediumaquamarine: "#66cdaa", - mediumblue: "#0000cd", - mediumorchid: "#ba55d3", - mediumpurple: "#9370db", - mediumseagreen: "#3cb371", - mediumslateblue: "#7b68ee", - mediumspringgreen: "#00fa9a", - mediumturquoise: "#48d1cc", - mediumvioletred: "#c71585", - midnightblue: "#191970", - mintcream: "#f5fffa", - mistyrose: "#ffe4e1", - moccasin: "#ffe4b5", - navajowhite: "#ffdead", - navy: "#000080", - oldlace: "#fdf5e6", - olive: "#808000", - olivedrab: "#6b8e23", - orange: "#ffa500", - orangered: "#ff4500", - orchid: "#da70d6", - palegoldenrod: "#eee8aa", - palegreen: "#98fb98", - paleturquoise: "#afeeee", - palevioletred: "#db7093", - papayawhip: "#ffefd5", - peachpuff: "#ffdab9", - peru: "#cd853f", - pink: "#ffc0cb", - plum: "#dda0dd", - powderblue: "#b0e0e6", - purple: "#800080", - red: "#ff0000", - rosybrown: "#bc8f8f", - royalblue: "#4169e1", - saddlebrown: "#8b4513", - salmon: "#fa8072", - sandybrown: "#f4a460", - seagreen: "#2e8b57", - seashell: "#fff5ee", - sienna: "#a0522d", - silver: "#c0c0c0", - skyblue: "#87ceeb", - slateblue: "#6a5acd", - slategray: "#708090", - slategrey: "#708090", - snow: "#fffafa", - springgreen: "#00ff7f", - steelblue: "#4682b4", - tan: "#d2b48c", - teal: "#008080", - thistle: "#d8bfd8", - tomato: "#ff6347", - turquoise: "#40e0d0", - violet: "#ee82ee", - wheat: "#f5deb3", - white: "#ffffff", - whitesmoke: "#f5f5f5", - yellow: "#ffff00" - }, - //标准扩展 - EXTEND_STANDARD: {} - } -}; - -//src/graphic/star.js -_p[65] = { - value: function(require, exports, module) { - /** - * @see http://www.jdawiseman.com/papers/easymath/surds_star_inner_radius.html - */ - var defaultRatioForStar = { - "3": .2, - // yy - "5": .38196601125, - "6": .57735026919, - "8": .541196100146, - "10": .726542528005, - "12": .707106781187 - }; - var Point = _p.r(50); - return _p.r(11).createClass("Star", { - base: _p.r(46), - constructor: function(vertex, radius, shrink, offset, angleOffset) { - this.callBase(); - this.vertex = vertex || 3; - this.radius = radius || 0; - this.shrink = shrink; - this.offset = offset || new Point(0, 0); - this.angleOffset = angleOffset || 0; - this.draw(); - }, - getVertex: function() { - return this.vertex; - }, - setVertex: function(value) { - this.vertex = value; - return this.draw(); - }, - getRadius: function() { - return this.radius; - }, - setRadius: function(value) { - this.radius = value; - return this.draw(); - }, - getShrink: function() { - return this.shrink; - }, - setShrink: function(value) { - this.shrink = value; - return this.draw(); - }, - getOffset: function() { - return this.offset; - }, - setOffset: function(value) { - this.offset = value; - return this.draw(); - }, - getAngleOffset: function() { - return this.angleOffset; - }, - setAngleOffset: function(value) { - this.angleOffset = value; - return this.draw(); - }, - draw: function() { - var innerRadius = this.radius, outerRadius = this.radius * (this.shrink || defaultRatioForStar[this.vertex] || .5), vertex = this.vertex, offset = this.offset, angleStart = 90, angleStep = 180 / vertex, angleOffset = this.angleOffset, drawer = this.getDrawer(), i, angle; - drawer.clear(); - drawer.moveTo(Point.fromPolar(outerRadius, angleStart)); - for (i = 1; i <= vertex * 2; i++) { - angle = angleStart + angleStep * i; - // 绘制内点 - if (i % 2) { - drawer.lineTo(Point.fromPolar(innerRadius, angle + angleOffset).offset(offset)); - } else { - drawer.lineTo(Point.fromPolar(outerRadius, angle)); - } - } - drawer.close(); - } - }); - } -}; - -//src/graphic/styled.js -_p[66] = { - value: function(require, exports, module) { - // polyfill for ie - var ClassList = _p.r(11).createClass("ClassList", { - constructor: function(node) { - this._node = node; - this._list = node.className.toString().split(" "); - }, - _update: function() { - this._node.className = this._list.join(" "); - }, - add: function(name) { - this._list.push(name); - this._update(); - }, - remove: function(name) { - var index = this._list.indexOf(name); - if (~index) { - this._list.splice(index, 1); - } - this._update(); - }, - contains: function(name) { - return !!~this._list.indexOf(name); - } - }); - function getClassList(node) { - if (!node.classList) { - node.classList = new ClassList(node); - } - return node.classList; - } - return _p.r(11).createClass("Styled", { - addClass: function(name) { - getClassList(this.node).add(name); - return this; - }, - removeClass: function(name) { - getClassList(this.node).remove(name); - return this; - }, - hasClass: function(name) { - return getClassList(this.node).contains(name); - }, - setStyle: function(styles) { - if (arguments.length == 2) { - this.node.style[arguments[0]] = arguments[1]; - return this; - } - for (var name in styles) { - if (styles.hasOwnProperty(name)) { - this.node.style[name] = styles[name]; - } - } - return this; - } - }); - } -}; - -//src/graphic/svg.js -_p[67] = { - value: function(require, exports, module) { - var doc = document; - var id = 0; - var svg = { - createNode: function(name) { - var node = doc.createElementNS(svg.ns, name); - node.id = "kity_" + name + "_" + id++; - return node; - }, - defaults: { - stroke: "none", - fill: "none" - }, - xlink: "http://www.w3.org/1999/xlink", - ns: "http://www.w3.org/2000/svg" - }; - return svg; - } -}; - -//src/graphic/sweep.js -_p[68] = { - value: function(require, exports, module) { - var Point = _p.r(50); - return _p.r(11).createClass("Sweep", { - base: _p.r(46), - constructor: function(sectionArray, angle, angleOffset) { - this.callBase(); - this.sectionArray = sectionArray || []; - this.angle = angle || 0; - this.angleOffset = angleOffset || 0; - this.draw(); - }, - getSectionArray: function() { - return this.sectionArray; - }, - setSectionArray: function(value) { - this.sectionArray = value; - return this.draw(); - }, - getAngle: function() { - return this.angle; - }, - setAngle: function(value) { - this.angle = value; - return this.draw(); - }, - getAngleOffset: function() { - return this.angleOffset; - }, - setAngleOffset: function(value) { - this.angleOffset = value; - return this.draw(); - }, - draw: function() { - var sectionArray = this.sectionArray, i; - for (i = 0; i < sectionArray.length; i += 2) { - this.drawSection(sectionArray[i], sectionArray[i + 1]); - } - return this; - }, - drawSection: function(from, to) { - var angleLength = this.angle && (this.angle % 360 ? this.angle % 360 : 360), angleStart = this.angleOffset, angleHalf = angleStart + angleLength / 2, angleEnd = angleStart + angleLength, sweepFlag = angleLength < 0 ? 0 : 1, drawer = this.getDrawer(); - drawer.redraw(); - if (angleLength === 0) { - drawer.done(); - return; - } - drawer.moveTo(Point.fromPolar(from, angleStart)); - drawer.lineTo(Point.fromPolar(to, angleStart)); - if (to) { - drawer.carcTo(to, 0, sweepFlag, Point.fromPolar(to, angleHalf)); - drawer.carcTo(to, 0, sweepFlag, Point.fromPolar(to, angleEnd)); - } - drawer.lineTo(Point.fromPolar(from, angleEnd)); - if (from) { - drawer.carcTo(from, 0, sweepFlag, Point.fromPolar(from, angleHalf)); - drawer.carcTo(from, 0, sweepFlag, Point.fromPolar(from, angleStart)); - } - drawer.close(); - drawer.done(); - } - }); - } -}; - -//src/graphic/text.js -_p[69] = { - value: function(require, exports, module) { - var TextContent = _p.r(70); - var ShapeContainer = _p.r(61); - var svg = _p.r(67); - var utils = _p.r(12); - var offsetHash = {}; - function getTextBoundOffset(text) { - var font = text._cachedFontHash; - if (offsetHash[font]) { - return offsetHash[font]; - } - var textContent = text.getContent(); - text.setContent("百度Fex"); - var bbox = text.getBoundaryBox(), y = text.getY(); - if (!bbox.height) return { - top: 0, - bottom: 0, - middle: 0 - }; - var topOffset = y - bbox.y + +text.node.getAttribute("dy"), bottomOffset = topOffset - bbox.height; - text.setContent(textContent); - return offsetHash[font] = { - top: topOffset, - bottom: bottomOffset, - middle: (topOffset + bottomOffset) / 2 - }; - } - return _p.r(11).createClass("Text", { - base: TextContent, - mixins: [ ShapeContainer ], - constructor: function(content) { - this.callBase("text"); - if (content !== undefined) { - this.setContent(content); - } - this._buildFontHash(); - }, - fixPosition: function() { - if (!this.__fixedPosition) { - this.setVerticalAlign(this.getVerticalAlign()); - } - }, - _buildFontHash: function() { - var style = window.getComputedStyle(this.node); - this._cachedFontHash = [ style.fontFamily, style.fontSize, style.fontStretch, style.fontStyle, style.fontVariant, style.fontWeight ].join("-"); - }, - _fontChanged: function(font) { - var last = this._lastFont; - var current = utils.extend({}, last, font); - if (!last) { - this._lastFont = font; - return true; - } - var changed = last.family != current.family || last.size != current.size || last.style != current.style || last.weight != current.weight; - this._lastFont = current; - return changed; - }, - setX: function(x) { - this.node.setAttribute("x", x); - return this; - }, - setPosition: function(x, y) { - return this.setX(x).setY(y); - }, - setY: function(y) { - this.node.setAttribute("y", y); - return this; - }, - getX: function() { - return +this.node.getAttribute("x") || 0; - }, - getY: function() { - return +this.node.getAttribute("y") || 0; - }, - setFont: function(font) { - this.callBase(font); - if (this._fontChanged(font)) { - this._buildFontHash(); - this.setVerticalAlign(this.getVerticalAlign()); - } - return this; - }, - setTextAnchor: function(anchor) { - this.node.setAttribute("text-anchor", anchor); - return this; - }, - getTextAnchor: function() { - return this.node.getAttribute("text-anchor") || "start"; - }, - // top/bottom/middle/baseline - setVerticalAlign: function(align) { - this.whenPaperReady(function() { - var dy; - switch (align) { - case "top": - dy = getTextBoundOffset(this).top; - break; - - case "bottom": - dy = getTextBoundOffset(this).bottom; - break; - - case "middle": - dy = getTextBoundOffset(this).middle; - break; - - default: - dy = 0; - } - if (dy) this.__fixedPosition = true; - this.node.setAttribute("dy", dy); - }); - this.verticalAlign = align; - return this; - }, - getVerticalAlign: function() { - return this.verticalAlign || "baseline"; - }, - setStartOffset: function(offset) { - // only for text path - if (this.shapeNode != this.node) { - this.shapeNode.setAttribute("startOffset", offset * 100 + "%"); - } - }, - addSpan: function(span) { - this.addShape(span); - return this; - }, - setPath: function(path) { - var textpath = this.shapeNode; - if (this.shapeNode == this.node) { - // 当前还不是 textpath - textpath = this.shapeNode = svg.createNode("textPath"); - while (this.node.firstChild) { - this.shapeNode.appendChild(this.node.firstChild); - } - this.node.appendChild(textpath); - } - textpath.setAttributeNS(svg.xlink, "xlink:href", "#" + path.node.id); - this.setTextAnchor(this.getTextAnchor()); - return this; - } - }); - } -}; - -//src/graphic/textcontent.js -_p[70] = { - value: function(require, exports, module) { - var Shape = _p.r(60); - return _p.r(11).createClass("TextContent", { - base: Shape, - constructor: function(nodeType) { - // call shape constructor - this.callBase(nodeType); - this.shapeNode = this.shapeNode || this.node; - this.shapeNode.setAttribute("text-rendering", "geometricPrecision"); - }, - clearContent: function() { - while (this.shapeNode.firstChild) { - this.shapeNode.removeChild(this.shapeNode.firstChild); - } - return this; - }, - setContent: function(content) { - this.shapeNode.textContent = content; - return this; - }, - getContent: function() { - return this.shapeNode.textContent; - }, - appendContent: function(content) { - this.shapeNode.textContent += content; - return this; - }, - setSize: function(value) { - return this.setFontSize(value); - }, - setFontSize: function(value) { - return this.setFont({ - size: value - }); - }, - setFontFamily: function(value) { - return this.setFont({ - family: value - }); - }, - setFontBold: function(bold) { - return this.setFont({ - weight: bold ? "bold" : "normal" - }); - }, - setFontItalic: function(italic) { - return this.setFont({ - style: italic ? "italic" : "normal" - }); - }, - setFont: function(font) { - var node = this.node; - [ "family", "size", "weight", "style" ].forEach(function(section) { - if (font[section] === null) { - node.removeAttribute("font-" + section); - } else if (font[section]) { - node.setAttribute("font-" + section, font[section]); - } - }); - return this; - }, - getExtentOfChar: function(index) { - return this.node.getExtentOfChar(index); - }, - getRotationOfChar: function(index) { - return this.node.getRotationOfChar(index); - }, - getCharNumAtPosition: function(x, y) { - return this.node.getCharNumAtPosition(this.node.viewportElement.createSVGPoint(x, y)); - } - }); - } -}; - -//src/graphic/textspan.js -_p[71] = { - value: function(require, exports, module) { - var TextContent = _p.r(70); - var Styled = _p.r(66); - return _p.r(11).createClass("TextSpan", { - base: TextContent, - mixins: [ Styled ], - constructor: function(content) { - this.callBase("tspan"); - this.setContent(content); - } - }); - } -}; - -//src/graphic/use.js -/* - * USE 功能 - */ -_p[72] = { - value: function(require, exports, module) { - var Svg = _p.r(67); - var Class = _p.r(11); - var Use = Class.createClass("Use", { - base: _p.r(60), - constructor: function(shape) { - this.callBase("use"); - this.ref(shape); - }, - ref: function(shape) { - if (!shape) { - this.node.removeAttributeNS(Svg.xlink, "xlink:href"); - return this; - } - var shapeId = shape.getId(); - if (shapeId) { - this.node.setAttributeNS(Svg.xlink, "xlink:href", "#" + shapeId); - } - // by techird - // 作为 Use 的图形,如果没有 fill 和 stroke,移除默认的 'none' 值,用于 Use 覆盖 - if (shape.node.getAttribute("fill") === "none") { - shape.node.removeAttribute("fill"); - } - if (shape.node.getAttribute("stroke") === "none") { - shape.node.removeAttribute("stroke"); - } - return this; - } - }); - var Shape = _p.r(60); - Class.extendClass(Shape, { - // fast-use - use: function() { - return new Use(this); - } - }); - return Use; - } -}; - -//src/graphic/vector.js -_p[73] = { - value: function(require, exports, module) { - var Point = _p.r(50); - var Matrix = _p.r(43); - var Vector = _p.r(11).createClass("Vector", { - base: Point, - constructor: function(x, y) { - this.callBase(x, y); - }, - square: function() { - return this.x * this.x + this.y * this.y; - }, - length: function() { - return Math.sqrt(this.square()); - }, - add: function(q) { - return new Vector(this.x + q.x, this.y + q.y); - }, - minus: function(q) { - return new Vector(this.x - q.x, this.y - q.y); - }, - dot: function(q) { - return this.x * q.x + this.y * q.y; - }, - project: function(q) { - return q.multipy(this.dot(q) / q.square()); - }, - normalize: function(length) { - if (length === undefined) { - length = 1; - } - return this.multipy(length / this.length()); - }, - multipy: function(scale) { - return new Vector(this.x * scale, this.y * scale); - }, - rotate: function(angle, unit) { - if (unit == "rad") { - angle = angle / Math.PI * 180; - } - var p = new Matrix().rotate(angle).transformPoint(this); - return new Vector(p.x, p.y); - }, - vertical: function() { - return new Vector(this.y, -this.x); - }, - reverse: function() { - return this.multipy(-1); - }, - getAngle: function() { - var length = this.length(); - if (length === 0) return 0; - var rad = Math.acos(this.x / length); - var sign = this.y > 0 ? 1 : -1; - return sign * 180 * rad / Math.PI; - } - }); - Vector.fromPoints = function(p1, p2) { - return new Vector(p2.x - p1.x, p2.y - p1.y); - }; - Vector.fromPolar = function() { - var p = Point.fromPolar.apply(Point, arguments); - return new Vector(p.x, p.y); - }; - _p.r(11).extendClass(Point, { - asVector: function() { - return new Vector(this.x, this.y); - } - }); - return Vector; - } -}; - -//src/graphic/view.js -_p[74] = { - value: function(require, exports, module) { - var ShapeContainer = _p.r(61); - var ViewBox = _p.r(75); - return _p.r(11).createClass("View", { - mixins: [ ShapeContainer, ViewBox ], - base: _p.r(74), - constructor: function() { - this.callBase("view"); - } - }); - } -}; - -//src/graphic/viewbox.js -_p[75] = { - value: function(require, exports, module) { - return _p.r(11).createClass("ViewBox", { - getViewBox: function() { - var attr = this.node.getAttribute("viewBox"); - if (attr === null) { - // firefox: - // 1. viewBox 没有设置过的时候获得的是 null - // 2. svg 标签没有指定绝对大小的时候 clientWidth 和 clientHeigt 为 0,需要在父容器上查找 - // TODO: 第 2 条取得的不准确(假如有 padding 之类的) - return { - x: 0, - y: 0, - width: this.node.clientWidth || this.node.parentNode.clientWidth, - height: this.node.clientHeight || this.node.parentNode.clientHeight - }; - } else { - attr = attr.split(" "); - return { - x: +attr[0], - y: +attr[1], - width: +attr[2], - height: +attr[3] - }; - } - }, - setViewBox: function(x, y, width, height) { - this.node.setAttribute("viewBox", [ x, y, width, height ].join(" ")); - return this; - } - }); - } -}; - -//src/kity.js -/** - * @fileOverview kity 暴露的方法或对象 - */ -_p[76] = { - value: function(require, exports, module) { - var kity = {}, utils = _p.r(12); - kity.version = "2.0.0"; - utils.extend(kity, { - // core - createClass: _p.r(11).createClass, - extendClass: _p.r(11).extendClass, - Utils: utils, - Browser: _p.r(10), - // shape - Box: _p.r(25), - Bezier: _p.r(23), - BezierPoint: _p.r(24), - Circle: _p.r(26), - Clip: _p.r(27), - Color: _p.r(28), - Container: _p.r(29), - Curve: _p.r(30), - Ellipse: _p.r(32), - Group: _p.r(36), - Gradient: _p.r(35), - HyperLink: _p.r(37), - Image: _p.r(38), - Line: _p.r(39), - LinearGradient: _p.r(40), - Mask: _p.r(42), - Matrix: _p.r(43), - Marker: _p.r(41), - Palette: _p.r(44), - Paper: _p.r(45), - Path: _p.r(46), - Pattern: _p.r(47), - Pen: _p.r(48), - Point: _p.r(50), - PointContainer: _p.r(51), - Polygon: _p.r(53), - Polyline: _p.r(54), - Pie: _p.r(49), - RadialGradient: _p.r(55), - Resource: _p.r(58), - Rect: _p.r(56), - RegularPolygon: _p.r(57), - Ring: _p.r(59), - Shape: _p.r(60), - ShapePoint: _p.r(63), - ShapeContainer: _p.r(61), - Sweep: _p.r(68), - Star: _p.r(65), - Text: _p.r(69), - TextSpan: _p.r(71), - Use: _p.r(72), - Vector: _p.r(73), - g: _p.r(34), - // animate - Animator: _p.r(0), - Easing: _p.r(1), - OpacityAnimator: _p.r(4), - RotateAnimator: _p.r(6), - ScaleAnimator: _p.r(7), - Timeline: _p.r(8), - TranslateAnimator: _p.r(9), - PathAnimator: _p.r(5), - MotionAnimator: _p.r(3), - requestFrame: _p.r(2).requestFrame, - releaseFrame: _p.r(2).releaseFrame, - // filter - Filter: _p.r(20), - GaussianblurFilter: _p.r(21), - ProjectionFilter: _p.r(22), - // effect - ColorMatrixEffect: _p.r(13), - CompositeEffect: _p.r(14), - ConvolveMatrixEffect: _p.r(15), - Effect: _p.r(16), - GaussianblurEffect: _p.r(17), - OffsetEffect: _p.r(18) - }); - return window.kity = kity; - } -}; - -var moduleMapping = { - kity: 76 -}; - -function use(name) { - _p.r([ moduleMapping[name] ]); -} -/* global use, inc: true */ - -/** - * 模块暴露 - */ -use('kity'); -})(); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/loading.gif b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/loading.gif deleted file mode 100644 index 5bb90fd6a49107a321c35b9cee4a7b810314b51f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1787 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 WKVS!lK#me95g4F$!-{Avfd2tyqRXcM diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_CAL.woff b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_CAL.woff deleted file mode 100644 index f433b03af6a9396146bc669df2a4f74c58b6e61a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5576 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 diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_FRAK.woff b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_FRAK.woff deleted file mode 100644 index 9c7e9d68e6d48f0e1d67c77d62af1d485cfbeff4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9956 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 HXaoEo5^4Yf diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_MAIN.woff b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_MAIN.woff deleted file mode 100644 index ed93f8e84f307c523934cfea59c18569ec257e4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52540 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 nW;8e`EH$yetlVMM`B/g; - var path2=/data-latex="(.*?)"/g; - - if(sel.search(path)==0){ - sel.replace(path2,function($0,$1){ - var param=encodeURIComponent($1); - openDialog(param); - return $0; - }); - }; - }); - - var openDialog = function(param) { - return editor.windowManager.openUrl({ - title: '插入公式', - size: 'large', - width: 785, - height: 475, - url:param?baseURL+"?c="+param:baseURL, - buttons: [ - { - type: 'cancel', - text: 'Close' - }, - { - type: 'custom', - text: 'Save', - name: 'save', - primary: true - }, - ], - onAction: function (api, details) { - switch (details.name) { - case 'save': - api.sendMessage("save"); - break; - default: - break; - }; - } - }); - }; - - - editor.ui.registry.addButton('kityformula-editor', { - text: '公式', - tooltip: '插入公式', - onAction: function() { - openDialog(); - } - }); - editor.ui.registry.addMenuItem('kityformula-editor', { - text: '公式', - onAction: function() { - openDialog(); - } - }); - return { - getMetadata: function() { - return { - name: "公式", - url: "http://hgcserver.gitee.io", - }; - } - }; -}); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/plugin.min.js deleted file mode 100644 index 9b74d60..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/plugin.min.js +++ /dev/null @@ -1,72 +0,0 @@ -tinymce.PluginManager.add('kityformula-editor', function(editor, url) { - - var baseURL = tinymce.baseURL+'/plugins/kityformula-editor/kityFormula.html'; - - editor.on('dblclick',function(){ - var sel=editor.selection.getContent(); - var path=/\/g; - var path2=/data-latex="(.*?)"/g; - - if(sel.search(path)==0){ - sel.replace(path2,function($0,$1){ - var param=encodeURIComponent($1); - openDialog(param); - return $0; - }); - }; - }); - - var openDialog = function(param) { - return editor.windowManager.openUrl({ - title: '插入公式', - size: 'large', - width: 785, - height: 475, - url:param?baseURL+"?c="+param:baseURL, - buttons: [ - { - type: 'cancel', - text: 'Close' - }, - { - type: 'custom', - text: 'Save', - name: 'save', - primary: true - }, - ], - onAction: function (api, details) { - switch (details.name) { - case 'save': - api.sendMessage("save"); - break; - default: - break; - }; - } - }); - }; - - - editor.ui.registry.addButton('kityformula-editor', { - text: '公式', - tooltip: '插入公式', - onAction: function() { - openDialog(); - } - }); - editor.ui.registry.addMenuItem('kityformula-editor', { - text: '公式', - onAction: function() { - openDialog(); - } - }); - return { - getMetadata: function() { - return { - name: "公式", - url: "http://hgcserver.gitee.io", - }; - } - }; -}); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/legacyoutput/plugin.js b/component/pear/module/tinymce/tinymce/plugins/legacyoutput/plugin.js deleted file mode 100644 index d96f337..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/legacyoutput/plugin.js +++ /dev/null @@ -1,199 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -(function () { - 'use strict'; - - var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); - - var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); - - var getFontSizeFormats = function (editor) { - return editor.getParam('fontsize_formats'); - }; - var setFontSizeFormats = function (editor, fontsize_formats) { - editor.settings.fontsize_formats = fontsize_formats; - }; - var getFontFormats = function (editor) { - return editor.getParam('font_formats'); - }; - var setFontFormats = function (editor, font_formats) { - editor.settings.font_formats = font_formats; - }; - var getFontSizeStyleValues = function (editor) { - return editor.getParam('font_size_style_values', 'xx-small,x-small,small,medium,large,x-large,xx-large'); - }; - var setInlineStyles = function (editor, inline_styles) { - editor.settings.inline_styles = inline_styles; - }; - - var overrideFormats = function (editor) { - var alignElements = 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table', fontSizes = global$1.explode(getFontSizeStyleValues(editor)), schema = editor.schema; - editor.formatter.register({ - alignleft: { - selector: alignElements, - attributes: { align: 'left' } - }, - aligncenter: { - selector: alignElements, - attributes: { align: 'center' } - }, - alignright: { - selector: alignElements, - attributes: { align: 'right' } - }, - alignjustify: { - selector: alignElements, - attributes: { align: 'justify' } - }, - bold: [ - { - inline: 'b', - remove: 'all', - preserve_attributes: [ - 'class', - 'style' - ] - }, - { - inline: 'strong', - remove: 'all', - preserve_attributes: [ - 'class', - 'style' - ] - }, - { - inline: 'span', - styles: { fontWeight: 'bold' } - } - ], - italic: [ - { - inline: 'i', - remove: 'all', - preserve_attributes: [ - 'class', - 'style' - ] - }, - { - inline: 'em', - remove: 'all', - preserve_attributes: [ - 'class', - 'style' - ] - }, - { - inline: 'span', - styles: { fontStyle: 'italic' } - } - ], - underline: [ - { - inline: 'u', - remove: 'all', - preserve_attributes: [ - 'class', - 'style' - ] - }, - { - inline: 'span', - styles: { textDecoration: 'underline' }, - exact: true - } - ], - strikethrough: [ - { - inline: 'strike', - remove: 'all', - preserve_attributes: [ - 'class', - 'style' - ] - }, - { - inline: 'span', - styles: { textDecoration: 'line-through' }, - exact: true - } - ], - fontname: { - inline: 'font', - toggle: false, - attributes: { face: '%value' } - }, - fontsize: { - inline: 'font', - toggle: false, - attributes: { - size: function (vars) { - return String(global$1.inArray(fontSizes, vars.value) + 1); - } - } - }, - forecolor: { - inline: 'font', - attributes: { color: '%value' }, - links: true, - remove_similar: true, - clear_child_styles: true - }, - hilitecolor: { - inline: 'font', - styles: { backgroundColor: '%value' }, - links: true, - remove_similar: true, - clear_child_styles: true - } - }); - global$1.each('b,i,u,strike'.split(','), function (name) { - schema.addValidElements(name + '[*]'); - }); - if (!schema.getElementRule('font')) { - schema.addValidElements('font[face|size|color|style]'); - } - global$1.each(alignElements.split(','), function (name) { - var rule = schema.getElementRule(name); - if (rule) { - if (!rule.attributes.align) { - rule.attributes.align = {}; - rule.attributesOrder.push('align'); - } - } - }); - }; - var overrideSettings = function (editor) { - var defaultFontsizeFormats = '8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7'; - var defaultFontsFormats = 'Andale Mono=andale mono,monospace;' + 'Arial=arial,helvetica,sans-serif;' + 'Arial Black=arial black,sans-serif;' + 'Book Antiqua=book antiqua,palatino,serif;' + 'Comic Sans MS=comic sans ms,sans-serif;' + 'Courier New=courier new,courier,monospace;' + 'Georgia=georgia,palatino,serif;' + 'Helvetica=helvetica,arial,sans-serif;' + 'Impact=impact,sans-serif;' + 'Symbol=symbol;' + 'Tahoma=tahoma,arial,helvetica,sans-serif;' + 'Terminal=terminal,monaco,monospace;' + 'Times New Roman=times new roman,times,serif;' + 'Trebuchet MS=trebuchet ms,geneva,sans-serif;' + 'Verdana=verdana,geneva,sans-serif;' + 'Webdings=webdings;' + 'Wingdings=wingdings,zapf dingbats'; - setInlineStyles(editor, false); - if (!getFontSizeFormats(editor)) { - setFontSizeFormats(editor, defaultFontsizeFormats); - } - if (!getFontFormats(editor)) { - setFontFormats(editor, defaultFontsFormats); - } - }; - var setup = function (editor) { - overrideSettings(editor); - editor.on('PreInit', function () { - return overrideFormats(editor); - }); - }; - - function Plugin () { - global.add('legacyoutput', function (editor) { - setup(editor); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/legacyoutput/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/legacyoutput/plugin.min.js deleted file mode 100644 index c2b04c1..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/legacyoutput/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Tools"),t=function(s){var e,t,i,a;t=!1,(e=s).settings.inline_styles=t,e.getParam("fontsize_formats")||(i="8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7",e.settings.fontsize_formats=i),e.getParam("font_formats")||(a="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",e.settings.font_formats=a),s.on("PreInit",function(){return e=s,t="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table",i=l.explode(e.getParam("font_size_style_values","xx-small,x-small,small,medium,large,x-large,xx-large")),a=e.schema,e.formatter.register({alignleft:{selector:t,attributes:{align:"left"}},aligncenter:{selector:t,attributes:{align:"center"}},alignright:{selector:t,attributes:{align:"right"}},alignjustify:{selector:t,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all",preserve_attributes:["class","style"]},{inline:"strong",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all",preserve_attributes:["class","style"]},{inline:"em",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",toggle:!1,attributes:{face:"%value"}},fontsize:{inline:"font",toggle:!1,attributes:{size:function(e){return String(l.inArray(i,e.value)+1)}}},forecolor:{inline:"font",attributes:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0}}),l.each("b,i,u,strike".split(","),function(e){a.addValidElements(e+"[*]")}),a.getElementRule("font")||a.addValidElements("font[face|size|color|style]"),void l.each(t.split(","),function(e){var t=a.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))});var e,t,i,a})};e.add("legacyoutput",function(e){t(e)})}(); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce/plugins/link/plugin.js b/component/pear/module/tinymce/tinymce/plugins/link/plugin.js deleted file mode 100644 index a5cc018..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/link/plugin.js +++ /dev/null @@ -1,1290 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -(function () { - 'use strict'; - - var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); - - var global$1 = tinymce.util.Tools.resolve('tinymce.util.VK'); - - var typeOf = function (x) { - var t = typeof x; - if (x === null) { - return 'null'; - } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { - return 'array'; - } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { - return 'string'; - } else { - return t; - } - }; - var isType = function (type) { - return function (value) { - return typeOf(value) === type; - }; - }; - var isSimpleType = function (type) { - return function (value) { - return typeof value === type; - }; - }; - var eq = function (t) { - return function (a) { - return t === a; - }; - }; - var isString = isType('string'); - var isArray = isType('array'); - var isNull = eq(null); - var isBoolean = isSimpleType('boolean'); - var isFunction = isSimpleType('function'); - - var assumeExternalTargets = function (editor) { - var externalTargets = editor.getParam('link_assume_external_targets', false); - if (isBoolean(externalTargets) && externalTargets) { - return 1; - } else if (isString(externalTargets) && (externalTargets === 'http' || externalTargets === 'https')) { - return externalTargets; - } - return 0; - }; - var hasContextToolbar = function (editor) { - return editor.getParam('link_context_toolbar', false, 'boolean'); - }; - var getLinkList = function (editor) { - return editor.getParam('link_list'); - }; - var getDefaultLinkTarget = function (editor) { - return editor.getParam('default_link_target'); - }; - var getTargetList = function (editor) { - return editor.getParam('target_list', true); - }; - var getRelList = function (editor) { - return editor.getParam('rel_list', [], 'array'); - }; - var getLinkClassList = function (editor) { - return editor.getParam('link_class_list', [], 'array'); - }; - var shouldShowLinkTitle = function (editor) { - return editor.getParam('link_title', true, 'boolean'); - }; - var allowUnsafeLinkTarget = function (editor) { - return editor.getParam('allow_unsafe_link_target', false, 'boolean'); - }; - var useQuickLink = function (editor) { - return editor.getParam('link_quicklink', false, 'boolean'); - }; - var getDefaultLinkProtocol = function (editor) { - return editor.getParam('link_default_protocol', 'http', 'string'); - }; - - var noop = function () { - }; - var constant = function (value) { - return function () { - return value; - }; - }; - var never = constant(false); - var always = constant(true); - - var none = function () { - return NONE; - }; - var NONE = function () { - var eq = function (o) { - return o.isNone(); - }; - var call = function (thunk) { - return thunk(); - }; - var id = function (n) { - return n; - }; - var me = { - fold: function (n, _s) { - return n(); - }, - is: never, - isSome: never, - isNone: always, - getOr: id, - getOrThunk: call, - getOrDie: function (msg) { - throw new Error(msg || 'error: getOrDie called on none.'); - }, - getOrNull: constant(null), - getOrUndefined: constant(undefined), - or: id, - orThunk: call, - map: none, - each: noop, - bind: none, - exists: never, - forall: always, - filter: none, - equals: eq, - equals_: eq, - toArray: function () { - return []; - }, - toString: constant('none()') - }; - return me; - }(); - var some = function (a) { - var constant_a = constant(a); - var self = function () { - return me; - }; - var bind = function (f) { - return f(a); - }; - var me = { - fold: function (n, s) { - return s(a); - }, - is: function (v) { - return a === v; - }, - isSome: always, - isNone: never, - getOr: constant_a, - getOrThunk: constant_a, - getOrDie: constant_a, - getOrNull: constant_a, - getOrUndefined: constant_a, - or: self, - orThunk: self, - map: function (f) { - return some(f(a)); - }, - each: function (f) { - f(a); - }, - bind: bind, - exists: bind, - forall: bind, - filter: function (f) { - return f(a) ? me : NONE; - }, - toArray: function () { - return [a]; - }, - toString: function () { - return 'some(' + a + ')'; - }, - equals: function (o) { - return o.is(a); - }, - equals_: function (o, elementEq) { - return o.fold(never, function (b) { - return elementEq(a, b); - }); - } - }; - return me; - }; - var from = function (value) { - return value === null || value === undefined ? NONE : some(value); - }; - var Optional = { - some: some, - none: none, - from: from - }; - - var nativeIndexOf = Array.prototype.indexOf; - var nativePush = Array.prototype.push; - var rawIndexOf = function (ts, t) { - return nativeIndexOf.call(ts, t); - }; - var contains = function (xs, x) { - return rawIndexOf(xs, x) > -1; - }; - var map = function (xs, f) { - var len = xs.length; - var r = new Array(len); - for (var i = 0; i < len; i++) { - var x = xs[i]; - r[i] = f(x, i); - } - return r; - }; - var each = function (xs, f) { - for (var i = 0, len = xs.length; i < len; i++) { - var x = xs[i]; - f(x, i); - } - }; - var foldl = function (xs, f, acc) { - each(xs, function (x) { - acc = f(acc, x); - }); - return acc; - }; - var flatten = function (xs) { - var r = []; - for (var i = 0, len = xs.length; i < len; ++i) { - if (!isArray(xs[i])) { - throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); - } - nativePush.apply(r, xs[i]); - } - return r; - }; - var bind = function (xs, f) { - return flatten(map(xs, f)); - }; - var findMap = function (arr, f) { - for (var i = 0; i < arr.length; i++) { - var r = f(arr[i], i); - if (r.isSome()) { - return r; - } - } - return Optional.none(); - }; - - var cat = function (arr) { - var r = []; - var push = function (x) { - r.push(x); - }; - for (var i = 0; i < arr.length; i++) { - arr[i].each(push); - } - return r; - }; - var someIf = function (b, a) { - return b ? Optional.some(a) : Optional.none(); - }; - - var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools'); - - var getValue = function (item) { - return isString(item.value) ? item.value : ''; - }; - var getText = function (item) { - if (isString(item.text)) { - return item.text; - } else if (isString(item.title)) { - return item.title; - } else { - return ''; - } - }; - var sanitizeList = function (list, extractValue) { - var out = []; - global$2.each(list, function (item) { - var text = getText(item); - if (item.menu !== undefined) { - var items = sanitizeList(item.menu, extractValue); - out.push({ - text: text, - items: items - }); - } else { - var value = extractValue(item); - out.push({ - text: text, - value: value - }); - } - }); - return out; - }; - var sanitizeWith = function (extracter) { - if (extracter === void 0) { - extracter = getValue; - } - return function (list) { - return Optional.from(list).map(function (list) { - return sanitizeList(list, extracter); - }); - }; - }; - var sanitize = function (list) { - return sanitizeWith(getValue)(list); - }; - var createUi = function (name, label) { - return function (items) { - return { - name: name, - type: 'listbox', - label: label, - items: items - }; - }; - }; - var ListOptions = { - sanitize: sanitize, - sanitizeWith: sanitizeWith, - createUi: createUi, - getValue: getValue - }; - - var __assign = function () { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - - var keys = Object.keys; - var hasOwnProperty = Object.hasOwnProperty; - var each$1 = function (obj, f) { - var props = keys(obj); - for (var k = 0, len = props.length; k < len; k++) { - var i = props[k]; - var x = obj[i]; - f(x, i); - } - }; - var objAcc = function (r) { - return function (x, i) { - r[i] = x; - }; - }; - var internalFilter = function (obj, pred, onTrue, onFalse) { - var r = {}; - each$1(obj, function (x, i) { - (pred(x, i) ? onTrue : onFalse)(x, i); - }); - return r; - }; - var filter = function (obj, pred) { - var t = {}; - internalFilter(obj, pred, objAcc(t), noop); - return t; - }; - var has = function (obj, key) { - return hasOwnProperty.call(obj, key); - }; - var hasNonNullableKey = function (obj, key) { - return has(obj, key) && obj[key] !== undefined && obj[key] !== null; - }; - - var global$3 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker'); - - var isAnchor = function (elm) { - return elm && elm.nodeName.toLowerCase() === 'a'; - }; - var isLink = function (elm) { - return isAnchor(elm) && !!getHref(elm); - }; - var collectNodesInRange = function (rng, predicate) { - if (rng.collapsed) { - return []; - } else { - var contents = rng.cloneContents(); - var walker = new global$3(contents.firstChild, contents); - var elements = []; - var current = contents.firstChild; - do { - if (predicate(current)) { - elements.push(current); - } - } while (current = walker.next()); - return elements; - } - }; - var hasProtocol = function (url) { - return /^\w+:/i.test(url); - }; - var getHref = function (elm) { - var href = elm.getAttribute('data-mce-href'); - return href ? href : elm.getAttribute('href'); - }; - var applyRelTargetRules = function (rel, isUnsafe) { - var rules = ['noopener']; - var rels = rel ? rel.split(/\s+/) : []; - var toString = function (rels) { - return global$2.trim(rels.sort().join(' ')); - }; - var addTargetRules = function (rels) { - rels = removeTargetRules(rels); - return rels.length > 0 ? rels.concat(rules) : rules; - }; - var removeTargetRules = function (rels) { - return rels.filter(function (val) { - return global$2.inArray(rules, val) === -1; - }); - }; - var newRels = isUnsafe ? addTargetRules(rels) : removeTargetRules(rels); - return newRels.length > 0 ? toString(newRels) : ''; - }; - var trimCaretContainers = function (text) { - return text.replace(/\uFEFF/g, ''); - }; - var getAnchorElement = function (editor, selectedElm) { - selectedElm = selectedElm || editor.selection.getNode(); - if (isImageFigure(selectedElm)) { - return editor.dom.select('a[href]', selectedElm)[0]; - } else { - return editor.dom.getParent(selectedElm, 'a[href]'); - } - }; - var getAnchorText = function (selection, anchorElm) { - var text = anchorElm ? anchorElm.innerText || anchorElm.textContent : selection.getContent({ format: 'text' }); - return trimCaretContainers(text); - }; - var hasLinks = function (elements) { - return global$2.grep(elements, isLink).length > 0; - }; - var hasLinksInSelection = function (rng) { - return collectNodesInRange(rng, isLink).length > 0; - }; - var isOnlyTextSelected = function (editor) { - var inlineTextElements = editor.schema.getTextInlineElements(); - var isElement = function (elm) { - return elm.nodeType === 1 && !isAnchor(elm) && !has(inlineTextElements, elm.nodeName.toLowerCase()); - }; - var elements = collectNodesInRange(editor.selection.getRng(), isElement); - return elements.length === 0; - }; - var isImageFigure = function (elm) { - return elm && elm.nodeName === 'FIGURE' && /\bimage\b/i.test(elm.className); - }; - var getLinkAttrs = function (data) { - return foldl([ - 'title', - 'rel', - 'class', - 'target' - ], function (acc, key) { - data[key].each(function (value) { - acc[key] = value.length > 0 ? value : null; - }); - return acc; - }, { href: data.href }); - }; - var handleExternalTargets = function (href, assumeExternalTargets) { - if ((assumeExternalTargets === 'http' || assumeExternalTargets === 'https') && !hasProtocol(href)) { - return assumeExternalTargets + '://' + href; - } - return href; - }; - var applyLinkOverrides = function (editor, linkAttrs) { - var newLinkAttrs = __assign({}, linkAttrs); - if (!(getRelList(editor).length > 0) && allowUnsafeLinkTarget(editor) === false) { - var newRel = applyRelTargetRules(newLinkAttrs.rel, newLinkAttrs.target === '_blank'); - newLinkAttrs.rel = newRel ? newRel : null; - } - if (Optional.from(newLinkAttrs.target).isNone() && getTargetList(editor) === false) { - newLinkAttrs.target = getDefaultLinkTarget(editor); - } - newLinkAttrs.href = handleExternalTargets(newLinkAttrs.href, assumeExternalTargets(editor)); - return newLinkAttrs; - }; - var updateLink = function (editor, anchorElm, text, linkAttrs) { - text.each(function (text) { - if (anchorElm.hasOwnProperty('innerText')) { - anchorElm.innerText = text; - } else { - anchorElm.textContent = text; - } - }); - editor.dom.setAttribs(anchorElm, linkAttrs); - editor.selection.select(anchorElm); - }; - var createLink = function (editor, selectedElm, text, linkAttrs) { - if (isImageFigure(selectedElm)) { - linkImageFigure(editor, selectedElm, linkAttrs); - } else { - text.fold(function () { - editor.execCommand('mceInsertLink', false, linkAttrs); - }, function (text) { - editor.insertContent(editor.dom.createHTML('a', linkAttrs, editor.dom.encode(text))); - }); - } - }; - var linkDomMutation = function (editor, attachState, data) { - var selectedElm = editor.selection.getNode(); - var anchorElm = getAnchorElement(editor, selectedElm); - var linkAttrs = applyLinkOverrides(editor, getLinkAttrs(data)); - editor.undoManager.transact(function () { - if (data.href === attachState.href) { - attachState.attach(); - } - if (anchorElm) { - editor.focus(); - updateLink(editor, anchorElm, data.text, linkAttrs); - } else { - createLink(editor, selectedElm, data.text, linkAttrs); - } - }); - }; - var unlinkSelection = function (editor) { - var dom = editor.dom, selection = editor.selection; - var bookmark = selection.getBookmark(); - var rng = selection.getRng().cloneRange(); - var startAnchorElm = dom.getParent(rng.startContainer, 'a[href]', editor.getBody()); - var endAnchorElm = dom.getParent(rng.endContainer, 'a[href]', editor.getBody()); - if (startAnchorElm) { - rng.setStartBefore(startAnchorElm); - } - if (endAnchorElm) { - rng.setEndAfter(endAnchorElm); - } - selection.setRng(rng); - editor.execCommand('unlink'); - selection.moveToBookmark(bookmark); - }; - var unlinkDomMutation = function (editor) { - editor.undoManager.transact(function () { - var node = editor.selection.getNode(); - if (isImageFigure(node)) { - unlinkImageFigure(editor, node); - } else { - unlinkSelection(editor); - } - editor.focus(); - }); - }; - var unwrapOptions = function (data) { - var cls = data.class, href = data.href, rel = data.rel, target = data.target, text = data.text, title = data.title; - return filter({ - class: cls.getOrNull(), - href: href, - rel: rel.getOrNull(), - target: target.getOrNull(), - text: text.getOrNull(), - title: title.getOrNull() - }, function (v, _k) { - return isNull(v) === false; - }); - }; - var link = function (editor, attachState, data) { - editor.hasPlugin('rtc', true) ? editor.execCommand('createlink', false, unwrapOptions(data)) : linkDomMutation(editor, attachState, data); - }; - var unlink = function (editor) { - editor.hasPlugin('rtc', true) ? editor.execCommand('unlink') : unlinkDomMutation(editor); - }; - var unlinkImageFigure = function (editor, fig) { - var img = editor.dom.select('img', fig)[0]; - if (img) { - var a = editor.dom.getParents(img, 'a[href]', fig)[0]; - if (a) { - a.parentNode.insertBefore(img, a); - editor.dom.remove(a); - } - } - }; - var linkImageFigure = function (editor, fig, attrs) { - var img = editor.dom.select('img', fig)[0]; - if (img) { - var a = editor.dom.create('a', attrs); - img.parentNode.insertBefore(a, img); - a.appendChild(img); - } - }; - - var isListGroup = function (item) { - return hasNonNullableKey(item, 'items'); - }; - var findTextByValue = function (value, catalog) { - return findMap(catalog, function (item) { - if (isListGroup(item)) { - return findTextByValue(value, item.items); - } else { - return someIf(item.value === value, item); - } - }); - }; - var getDelta = function (persistentText, fieldName, catalog, data) { - var value = data[fieldName]; - var hasPersistentText = persistentText.length > 0; - return value !== undefined ? findTextByValue(value, catalog).map(function (i) { - return { - url: { - value: i.value, - meta: { - text: hasPersistentText ? persistentText : i.text, - attach: noop - } - }, - text: hasPersistentText ? persistentText : i.text - }; - }) : Optional.none(); - }; - var findCatalog = function (catalogs, fieldName) { - if (fieldName === 'link') { - return catalogs.link; - } else if (fieldName === 'anchor') { - return catalogs.anchor; - } else { - return Optional.none(); - } - }; - var init = function (initialData, linkCatalog) { - var persistentData = { - text: initialData.text, - title: initialData.title - }; - var getTitleFromUrlChange = function (url) { - return someIf(persistentData.title.length <= 0, Optional.from(url.meta.title).getOr('')); - }; - var getTextFromUrlChange = function (url) { - return someIf(persistentData.text.length <= 0, Optional.from(url.meta.text).getOr(url.value)); - }; - var onUrlChange = function (data) { - var text = getTextFromUrlChange(data.url); - var title = getTitleFromUrlChange(data.url); - if (text.isSome() || title.isSome()) { - return Optional.some(__assign(__assign({}, text.map(function (text) { - return { text: text }; - }).getOr({})), title.map(function (title) { - return { title: title }; - }).getOr({}))); - } else { - return Optional.none(); - } - }; - var onCatalogChange = function (data, change) { - var catalog = findCatalog(linkCatalog, change.name).getOr([]); - return getDelta(persistentData.text, change.name, catalog, data); - }; - var onChange = function (getData, change) { - var name = change.name; - if (name === 'url') { - return onUrlChange(getData()); - } else if (contains([ - 'anchor', - 'link' - ], name)) { - return onCatalogChange(getData(), change); - } else if (name === 'text' || name === 'title') { - persistentData[name] = getData()[name]; - return Optional.none(); - } else { - return Optional.none(); - } - }; - return { onChange: onChange }; - }; - var DialogChanges = { - init: init, - getDelta: getDelta - }; - - var global$4 = tinymce.util.Tools.resolve('tinymce.util.Delay'); - - var global$5 = tinymce.util.Tools.resolve('tinymce.util.Promise'); - - var delayedConfirm = function (editor, message, callback) { - var rng = editor.selection.getRng(); - global$4.setEditorTimeout(editor, function () { - editor.windowManager.confirm(message, function (state) { - editor.selection.setRng(rng); - callback(state); - }); - }); - }; - var tryEmailTransform = function (data) { - var url = data.href; - var suggestMailTo = url.indexOf('@') > 0 && url.indexOf('/') === -1 && url.indexOf('mailto:') === -1; - return suggestMailTo ? Optional.some({ - message: 'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?', - preprocess: function (oldData) { - return __assign(__assign({}, oldData), { href: 'mailto:' + url }); - } - }) : Optional.none(); - }; - var tryProtocolTransform = function (assumeExternalTargets, defaultLinkProtocol) { - return function (data) { - var url = data.href; - var suggestProtocol = assumeExternalTargets === 1 && !hasProtocol(url) || assumeExternalTargets === 0 && /^\s*www(\.|\d\.)/i.test(url); - return suggestProtocol ? Optional.some({ - message: 'The URL you entered seems to be an external link. Do you want to add the required ' + defaultLinkProtocol + ':// prefix?', - preprocess: function (oldData) { - return __assign(__assign({}, oldData), { href: defaultLinkProtocol + '://' + url }); - } - }) : Optional.none(); - }; - }; - var preprocess = function (editor, data) { - return findMap([ - tryEmailTransform, - tryProtocolTransform(assumeExternalTargets(editor), getDefaultLinkProtocol(editor)) - ], function (f) { - return f(data); - }).fold(function () { - return global$5.resolve(data); - }, function (transform) { - return new global$5(function (callback) { - delayedConfirm(editor, transform.message, function (state) { - callback(state ? transform.preprocess(data) : data); - }); - }); - }); - }; - var DialogConfirms = { preprocess: preprocess }; - - var getAnchors = function (editor) { - var anchorNodes = editor.dom.select('a:not([href])'); - var anchors = bind(anchorNodes, function (anchor) { - var id = anchor.name || anchor.id; - return id ? [{ - text: id, - value: '#' + id - }] : []; - }); - return anchors.length > 0 ? Optional.some([{ - text: 'None', - value: '' - }].concat(anchors)) : Optional.none(); - }; - var AnchorListOptions = { getAnchors: getAnchors }; - - var getClasses = function (editor) { - var list = getLinkClassList(editor); - if (list.length > 0) { - return ListOptions.sanitize(list); - } - return Optional.none(); - }; - var ClassListOptions = { getClasses: getClasses }; - - var global$6 = tinymce.util.Tools.resolve('tinymce.util.XHR'); - - var parseJson = function (text) { - try { - return Optional.some(JSON.parse(text)); - } catch (err) { - return Optional.none(); - } - }; - var getLinks = function (editor) { - var extractor = function (item) { - return editor.convertURL(item.value || item.url, 'href'); - }; - var linkList = getLinkList(editor); - return new global$5(function (callback) { - if (isString(linkList)) { - global$6.send({ - url: linkList, - success: function (text) { - return callback(parseJson(text)); - }, - error: function (_) { - return callback(Optional.none()); - } - }); - } else if (isFunction(linkList)) { - linkList(function (output) { - return callback(Optional.some(output)); - }); - } else { - callback(Optional.from(linkList)); - } - }).then(function (optItems) { - return optItems.bind(ListOptions.sanitizeWith(extractor)).map(function (items) { - if (items.length > 0) { - var noneItem = [{ - text: 'None', - value: '' - }]; - return noneItem.concat(items); - } else { - return items; - } - }); - }); - }; - var LinkListOptions = { getLinks: getLinks }; - - var getRels = function (editor, initialTarget) { - var list = getRelList(editor); - if (list.length > 0) { - var isTargetBlank_1 = initialTarget.is('_blank'); - var enforceSafe = allowUnsafeLinkTarget(editor) === false; - var safeRelExtractor = function (item) { - return applyRelTargetRules(ListOptions.getValue(item), isTargetBlank_1); - }; - var sanitizer = enforceSafe ? ListOptions.sanitizeWith(safeRelExtractor) : ListOptions.sanitize; - return sanitizer(list); - } - return Optional.none(); - }; - var RelOptions = { getRels: getRels }; - - var fallbacks = [ - { - text: 'Current window', - value: '' - }, - { - text: 'New window', - value: '_blank' - } - ]; - var getTargets = function (editor) { - var list = getTargetList(editor); - if (isArray(list)) { - return ListOptions.sanitize(list).orThunk(function () { - return Optional.some(fallbacks); - }); - } else if (list === false) { - return Optional.none(); - } - return Optional.some(fallbacks); - }; - var TargetOptions = { getTargets: getTargets }; - - var nonEmptyAttr = function (dom, elem, name) { - var val = dom.getAttrib(elem, name); - return val !== null && val.length > 0 ? Optional.some(val) : Optional.none(); - }; - var extractFromAnchor = function (editor, anchor) { - var dom = editor.dom; - var onlyText = isOnlyTextSelected(editor); - var text = onlyText ? Optional.some(getAnchorText(editor.selection, anchor)) : Optional.none(); - var url = anchor ? Optional.some(dom.getAttrib(anchor, 'href')) : Optional.none(); - var target = anchor ? Optional.from(dom.getAttrib(anchor, 'target')) : Optional.none(); - var rel = nonEmptyAttr(dom, anchor, 'rel'); - var linkClass = nonEmptyAttr(dom, anchor, 'class'); - var title = nonEmptyAttr(dom, anchor, 'title'); - return { - url: url, - text: text, - title: title, - target: target, - rel: rel, - linkClass: linkClass - }; - }; - var collect = function (editor, linkNode) { - return LinkListOptions.getLinks(editor).then(function (links) { - var anchor = extractFromAnchor(editor, linkNode); - return { - anchor: anchor, - catalogs: { - targets: TargetOptions.getTargets(editor), - rels: RelOptions.getRels(editor, anchor.target), - classes: ClassListOptions.getClasses(editor), - anchor: AnchorListOptions.getAnchors(editor), - link: links - }, - optNode: Optional.from(linkNode), - flags: { titleEnabled: shouldShowLinkTitle(editor) } - }; - }); - }; - var DialogInfo = { collect: collect }; - - var handleSubmit = function (editor, info) { - return function (api) { - var data = api.getData(); - if (!data.url.value) { - unlink(editor); - api.close(); - return; - } - var getChangedValue = function (key) { - return Optional.from(data[key]).filter(function (value) { - return !info.anchor[key].is(value); - }); - }; - var changedData = { - href: data.url.value, - text: getChangedValue('text'), - target: getChangedValue('target'), - rel: getChangedValue('rel'), - class: getChangedValue('linkClass'), - title: getChangedValue('title') - }; - var attachState = { - href: data.url.value, - attach: data.url.meta !== undefined && data.url.meta.attach ? data.url.meta.attach : function () { - } - }; - DialogConfirms.preprocess(editor, changedData).then(function (pData) { - link(editor, attachState, pData); - }); - api.close(); - }; - }; - var collectData = function (editor) { - var anchorNode = getAnchorElement(editor); - return DialogInfo.collect(editor, anchorNode); - }; - var getInitialData = function (info, defaultTarget) { - var anchor = info.anchor; - var url = anchor.url.getOr(''); - return { - url: { - value: url, - meta: { original: { value: url } } - }, - text: anchor.text.getOr(''), - title: anchor.title.getOr(''), - anchor: url, - link: url, - rel: anchor.rel.getOr(''), - target: anchor.target.or(defaultTarget).getOr(''), - linkClass: anchor.linkClass.getOr('') - }; - }; - var makeDialog = function (settings, onSubmit, editor) { - var urlInput = [{ - name: 'url', - type: 'urlinput', - filetype: 'file', - label: 'URL' - }]; - var displayText = settings.anchor.text.map(function () { - return { - name: 'text', - type: 'input', - label: 'Text to display' - }; - }).toArray(); - var titleText = settings.flags.titleEnabled ? [{ - name: 'title', - type: 'input', - label: 'Title' - }] : []; - var defaultTarget = Optional.from(getDefaultLinkTarget(editor)); - var initialData = getInitialData(settings, defaultTarget); - var catalogs = settings.catalogs; - var dialogDelta = DialogChanges.init(initialData, catalogs); - var body = { - type: 'panel', - items: flatten([ - urlInput, - displayText, - titleText, - cat([ - catalogs.anchor.map(ListOptions.createUi('anchor', 'Anchors')), - catalogs.rels.map(ListOptions.createUi('rel', 'Rel')), - catalogs.targets.map(ListOptions.createUi('target', 'Open link in...')), - catalogs.link.map(ListOptions.createUi('link', 'Link list')), - catalogs.classes.map(ListOptions.createUi('linkClass', 'Class')) - ]) - ]) - }; - return { - title: 'Insert/Edit Link', - size: 'normal', - body: body, - buttons: [ - { - type: 'cancel', - name: 'cancel', - text: 'Cancel' - }, - { - type: 'submit', - name: 'save', - text: 'Save', - primary: true - } - ], - initialData: initialData, - onChange: function (api, _a) { - var name = _a.name; - dialogDelta.onChange(api.getData, { name: name }).each(function (newData) { - api.setData(newData); - }); - }, - onSubmit: onSubmit - }; - }; - var open = function (editor) { - var data = collectData(editor); - data.then(function (info) { - var onSubmit = handleSubmit(editor, info); - return makeDialog(info, onSubmit, editor); - }).then(function (spec) { - editor.windowManager.open(spec); - }); - }; - - var appendClickRemove = function (link, evt) { - document.body.appendChild(link); - link.dispatchEvent(evt); - document.body.removeChild(link); - }; - var open$1 = function (url) { - var link = document.createElement('a'); - link.target = '_blank'; - link.href = url; - link.rel = 'noreferrer noopener'; - var evt = document.createEvent('MouseEvents'); - evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); - appendClickRemove(link, evt); - }; - - var getLink = function (editor, elm) { - return editor.dom.getParent(elm, 'a[href]'); - }; - var getSelectedLink = function (editor) { - return getLink(editor, editor.selection.getStart()); - }; - var hasOnlyAltModifier = function (e) { - return e.altKey === true && e.shiftKey === false && e.ctrlKey === false && e.metaKey === false; - }; - var gotoLink = function (editor, a) { - if (a) { - var href = getHref(a); - if (/^#/.test(href)) { - var targetEl = editor.$(href); - if (targetEl.length) { - editor.selection.scrollIntoView(targetEl[0], true); - } - } else { - open$1(a.href); - } - } - }; - var openDialog = function (editor) { - return function () { - open(editor); - }; - }; - var gotoSelectedLink = function (editor) { - return function () { - gotoLink(editor, getSelectedLink(editor)); - }; - }; - var setupGotoLinks = function (editor) { - editor.on('click', function (e) { - var link = getLink(editor, e.target); - if (link && global$1.metaKeyPressed(e)) { - e.preventDefault(); - gotoLink(editor, link); - } - }); - editor.on('keydown', function (e) { - var link = getSelectedLink(editor); - if (link && e.keyCode === 13 && hasOnlyAltModifier(e)) { - e.preventDefault(); - gotoLink(editor, link); - } - }); - }; - var toggleState = function (editor, toggler) { - editor.on('NodeChange', toggler); - return function () { - return editor.off('NodeChange', toggler); - }; - }; - var toggleActiveState = function (editor) { - return function (api) { - return toggleState(editor, function () { - api.setActive(!editor.mode.isReadOnly() && getAnchorElement(editor, editor.selection.getNode()) !== null); - }); - }; - }; - var toggleEnabledState = function (editor) { - return function (api) { - var updateState = function () { - return api.setDisabled(getAnchorElement(editor, editor.selection.getNode()) === null); - }; - updateState(); - return toggleState(editor, updateState); - }; - }; - var toggleUnlinkState = function (editor) { - return function (api) { - var hasLinks$1 = function (parents) { - return hasLinks(parents) || hasLinksInSelection(editor.selection.getRng()); - }; - var parents = editor.dom.getParents(editor.selection.getStart()); - api.setDisabled(!hasLinks$1(parents)); - return toggleState(editor, function (e) { - return api.setDisabled(!hasLinks$1(e.parents)); - }); - }; - }; - - var register = function (editor) { - editor.addCommand('mceLink', function () { - if (useQuickLink(editor)) { - editor.fire('contexttoolbar-show', { toolbarKey: 'quicklink' }); - } else { - openDialog(editor)(); - } - }); - }; - - var setup = function (editor) { - editor.addShortcut('Meta+K', '', function () { - editor.execCommand('mceLink'); - }); - }; - - var setupButtons = function (editor) { - editor.ui.registry.addToggleButton('link', { - icon: 'link', - tooltip: 'Insert/edit link', - onAction: openDialog(editor), - onSetup: toggleActiveState(editor) - }); - editor.ui.registry.addButton('openlink', { - icon: 'new-tab', - tooltip: 'Open link', - onAction: gotoSelectedLink(editor), - onSetup: toggleEnabledState(editor) - }); - editor.ui.registry.addButton('unlink', { - icon: 'unlink', - tooltip: 'Remove link', - onAction: function () { - return unlink(editor); - }, - onSetup: toggleUnlinkState(editor) - }); - }; - var setupMenuItems = function (editor) { - editor.ui.registry.addMenuItem('openlink', { - text: 'Open link', - icon: 'new-tab', - onAction: gotoSelectedLink(editor), - onSetup: toggleEnabledState(editor) - }); - editor.ui.registry.addMenuItem('link', { - icon: 'link', - text: 'Link...', - shortcut: 'Meta+K', - onAction: openDialog(editor) - }); - editor.ui.registry.addMenuItem('unlink', { - icon: 'unlink', - text: 'Remove link', - onAction: function () { - return unlink(editor); - }, - onSetup: toggleUnlinkState(editor) - }); - }; - var setupContextMenu = function (editor) { - var inLink = 'link unlink openlink'; - var noLink = 'link'; - editor.ui.registry.addContextMenu('link', { - update: function (element) { - return hasLinks(editor.dom.getParents(element, 'a')) ? inLink : noLink; - } - }); - }; - var setupContextToolbars = function (editor) { - var collapseSelectionToEnd = function (editor) { - editor.selection.collapse(false); - }; - var onSetupLink = function (buttonApi) { - var node = editor.selection.getNode(); - buttonApi.setDisabled(!getAnchorElement(editor, node)); - return function () { - }; - }; - editor.ui.registry.addContextForm('quicklink', { - launch: { - type: 'contextformtogglebutton', - icon: 'link', - tooltip: 'Link', - onSetup: toggleActiveState(editor) - }, - label: 'Link', - predicate: function (node) { - return !!getAnchorElement(editor, node) && hasContextToolbar(editor); - }, - initValue: function () { - var elm = getAnchorElement(editor); - return !!elm ? getHref(elm) : ''; - }, - commands: [ - { - type: 'contextformtogglebutton', - icon: 'link', - tooltip: 'Link', - primary: true, - onSetup: function (buttonApi) { - var node = editor.selection.getNode(); - buttonApi.setActive(!!getAnchorElement(editor, node)); - return toggleActiveState(editor)(buttonApi); - }, - onAction: function (formApi) { - var anchor = getAnchorElement(editor); - var value = formApi.getValue(); - if (!anchor) { - var attachState = { - href: value, - attach: function () { - } - }; - var onlyText = isOnlyTextSelected(editor); - var text = onlyText ? Optional.some(getAnchorText(editor.selection, anchor)).filter(function (t) { - return t.length > 0; - }).or(Optional.from(value)) : Optional.none(); - link(editor, attachState, { - href: value, - text: text, - title: Optional.none(), - rel: Optional.none(), - target: Optional.none(), - class: Optional.none() - }); - formApi.hide(); - } else { - editor.undoManager.transact(function () { - editor.dom.setAttrib(anchor, 'href', value); - collapseSelectionToEnd(editor); - formApi.hide(); - }); - } - } - }, - { - type: 'contextformbutton', - icon: 'unlink', - tooltip: 'Remove link', - onSetup: onSetupLink, - onAction: function (formApi) { - unlink(editor); - formApi.hide(); - } - }, - { - type: 'contextformbutton', - icon: 'new-tab', - tooltip: 'Open link', - onSetup: onSetupLink, - onAction: function (formApi) { - gotoSelectedLink(editor)(); - formApi.hide(); - } - } - ] - }); - }; - - function Plugin () { - global.add('link', function (editor) { - setupButtons(editor); - setupMenuItems(editor); - setupContextMenu(editor); - setupContextToolbars(editor); - setupGotoLinks(editor); - register(editor); - setup(editor); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/link/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/link/plugin.min.js deleted file mode 100644 index bf45868..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/link/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var n,t,e,r,o=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=tinymce.util.Tools.resolve("tinymce.util.VK"),u=function(r){return function(t){return e=typeof(n=t),(null===n?"null":"object"==e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e)===r;var n,e}},a=function(n){return function(t){return typeof t===n}},l=u("string"),c=u("array"),f=function(t){return n===t},s=a("boolean"),m=a("function"),g=function(t){var n=t.getParam("link_assume_external_targets",!1);return s(n)&&n?1:!l(n)||"http"!==n&&"https"!==n?0:n},p=function(t){return t.getParam("default_link_target")},d=function(t){return t.getParam("target_list",!0)},h=function(t){return t.getParam("rel_list",[],"array")},v=function(t){return t.getParam("allow_unsafe_link_target",!1,"boolean")},y=function(){},k=function(t){return function(){return t}},x=k(!1),b=k(!(n=null)),O=function(){return w},w=(t=function(t){return t.isNone()},{fold:function(t,n){return t()},is:x,isSome:x,isNone:b,getOr:r=function(t){return t},getOrThunk:e=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:k(null),getOrUndefined:k(undefined),or:r,orThunk:e,map:O,each:y,bind:O,exists:x,forall:b,filter:O,equals:t,equals_:t,toArray:function(){return[]},toString:k("none()")}),C=function(e){var t=k(e),n=function(){return o},r=function(t){return t(e)},o={fold:function(t,n){return n(e)},is:function(t){return e===t},isSome:b,isNone:x,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:n,orThunk:n,map:function(t){return C(t(e))},each:function(t){t(e)},bind:r,exists:r,forall:r,filter:function(t){return t(e)?o:w},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(t){return t.is(e)},equals_:function(t,n){return t.fold(x,function(t){return n(e,t)})}};return o},N={some:C,none:O,from:function(t){return null===t||t===undefined?w:C(t)}},A=Array.prototype.indexOf,P=Array.prototype.push,T=function(t,n){return e=t,r=n,-1= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none(); - }; - var head = function (xs) { - return get(xs, 0); - }; - var last = function (xs) { - return get(xs, xs.length - 1); - }; - - var __assign = function () { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - - var cached = function (f) { - var called = false; - var r; - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - if (!called) { - called = true; - r = f.apply(null, args); - } - return r; - }; - }; - - var DeviceType = function (os, browser, userAgent, mediaMatch) { - var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true; - var isiPhone = os.isiOS() && !isiPad; - var isMobile = os.isiOS() || os.isAndroid(); - var isTouch = isMobile || mediaMatch('(pointer:coarse)'); - var isTablet = isiPad || !isiPhone && isMobile && mediaMatch('(min-device-width:768px)'); - var isPhone = isiPhone || isMobile && !isTablet; - var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false; - var isDesktop = !isPhone && !isTablet && !iOSwebview; - return { - isiPad: constant(isiPad), - isiPhone: constant(isiPhone), - isTablet: constant(isTablet), - isPhone: constant(isPhone), - isTouch: constant(isTouch), - isAndroid: os.isAndroid, - isiOS: os.isiOS, - isWebView: constant(iOSwebview), - isDesktop: constant(isDesktop) - }; - }; - - var firstMatch = function (regexes, s) { - for (var i = 0; i < regexes.length; i++) { - var x = regexes[i]; - if (x.test(s)) { - return x; - } - } - return undefined; - }; - var find$1 = function (regexes, agent) { - var r = firstMatch(regexes, agent); - if (!r) { - return { - major: 0, - minor: 0 - }; - } - var group = function (i) { - return Number(agent.replace(r, '$' + i)); - }; - return nu(group(1), group(2)); - }; - var detect = function (versionRegexes, agent) { - var cleanedAgent = String(agent).toLowerCase(); - if (versionRegexes.length === 0) { - return unknown(); - } - return find$1(versionRegexes, cleanedAgent); - }; - var unknown = function () { - return nu(0, 0); - }; - var nu = function (major, minor) { - return { - major: major, - minor: minor - }; - }; - var Version = { - nu: nu, - detect: detect, - unknown: unknown - }; - - var detect$1 = function (candidates, userAgent) { - var agent = String(userAgent).toLowerCase(); - return find(candidates, function (candidate) { - return candidate.search(agent); - }); - }; - var detectBrowser = function (browsers, userAgent) { - return detect$1(browsers, userAgent).map(function (browser) { - var version = Version.detect(browser.versionRegexes, userAgent); - return { - current: browser.name, - version: version - }; - }); - }; - var detectOs = function (oses, userAgent) { - return detect$1(oses, userAgent).map(function (os) { - var version = Version.detect(os.versionRegexes, userAgent); - return { - current: os.name, - version: version - }; - }); - }; - var UaString = { - detectBrowser: detectBrowser, - detectOs: detectOs - }; - - var contains = function (str, substr) { - return str.indexOf(substr) !== -1; - }; - - var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/; - var checkContains = function (target) { - return function (uastring) { - return contains(uastring, target); - }; - }; - var browsers = [ - { - name: 'Edge', - versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], - search: function (uastring) { - return contains(uastring, 'edge/') && contains(uastring, 'chrome') && contains(uastring, 'safari') && contains(uastring, 'applewebkit'); - } - }, - { - name: 'Chrome', - versionRegexes: [ - /.*?chrome\/([0-9]+)\.([0-9]+).*/, - normalVersionRegex - ], - search: function (uastring) { - return contains(uastring, 'chrome') && !contains(uastring, 'chromeframe'); - } - }, - { - name: 'IE', - versionRegexes: [ - /.*?msie\ ?([0-9]+)\.([0-9]+).*/, - /.*?rv:([0-9]+)\.([0-9]+).*/ - ], - search: function (uastring) { - return contains(uastring, 'msie') || contains(uastring, 'trident'); - } - }, - { - name: 'Opera', - versionRegexes: [ - normalVersionRegex, - /.*?opera\/([0-9]+)\.([0-9]+).*/ - ], - search: checkContains('opera') - }, - { - name: 'Firefox', - versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], - search: checkContains('firefox') - }, - { - name: 'Safari', - versionRegexes: [ - normalVersionRegex, - /.*?cpu os ([0-9]+)_([0-9]+).*/ - ], - search: function (uastring) { - return (contains(uastring, 'safari') || contains(uastring, 'mobile/')) && contains(uastring, 'applewebkit'); - } - } - ]; - var oses = [ - { - name: 'Windows', - search: checkContains('win'), - versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] - }, - { - name: 'iOS', - search: function (uastring) { - return contains(uastring, 'iphone') || contains(uastring, 'ipad'); - }, - versionRegexes: [ - /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, - /.*cpu os ([0-9]+)_([0-9]+).*/, - /.*cpu iphone os ([0-9]+)_([0-9]+).*/ - ] - }, - { - name: 'Android', - search: checkContains('android'), - versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] - }, - { - name: 'OSX', - search: checkContains('mac os x'), - versionRegexes: [/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/] - }, - { - name: 'Linux', - search: checkContains('linux'), - versionRegexes: [] - }, - { - name: 'Solaris', - search: checkContains('sunos'), - versionRegexes: [] - }, - { - name: 'FreeBSD', - search: checkContains('freebsd'), - versionRegexes: [] - }, - { - name: 'ChromeOS', - search: checkContains('cros'), - versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/] - } - ]; - var PlatformInfo = { - browsers: constant(browsers), - oses: constant(oses) - }; - - var edge = 'Edge'; - var chrome = 'Chrome'; - var ie = 'IE'; - var opera = 'Opera'; - var firefox = 'Firefox'; - var safari = 'Safari'; - var unknown$1 = function () { - return nu$1({ - current: undefined, - version: Version.unknown() - }); - }; - var nu$1 = function (info) { - var current = info.current; - var version = info.version; - var isBrowser = function (name) { - return function () { - return current === name; - }; - }; - return { - current: current, - version: version, - isEdge: isBrowser(edge), - isChrome: isBrowser(chrome), - isIE: isBrowser(ie), - isOpera: isBrowser(opera), - isFirefox: isBrowser(firefox), - isSafari: isBrowser(safari) - }; - }; - var Browser = { - unknown: unknown$1, - nu: nu$1, - edge: constant(edge), - chrome: constant(chrome), - ie: constant(ie), - opera: constant(opera), - firefox: constant(firefox), - safari: constant(safari) - }; - - var windows = 'Windows'; - var ios = 'iOS'; - var android = 'Android'; - var linux = 'Linux'; - var osx = 'OSX'; - var solaris = 'Solaris'; - var freebsd = 'FreeBSD'; - var chromeos = 'ChromeOS'; - var unknown$2 = function () { - return nu$2({ - current: undefined, - version: Version.unknown() - }); - }; - var nu$2 = function (info) { - var current = info.current; - var version = info.version; - var isOS = function (name) { - return function () { - return current === name; - }; - }; - return { - current: current, - version: version, - isWindows: isOS(windows), - isiOS: isOS(ios), - isAndroid: isOS(android), - isOSX: isOS(osx), - isLinux: isOS(linux), - isSolaris: isOS(solaris), - isFreeBSD: isOS(freebsd), - isChromeOS: isOS(chromeos) - }; - }; - var OperatingSystem = { - unknown: unknown$2, - nu: nu$2, - windows: constant(windows), - ios: constant(ios), - android: constant(android), - linux: constant(linux), - osx: constant(osx), - solaris: constant(solaris), - freebsd: constant(freebsd), - chromeos: constant(chromeos) - }; - - var detect$2 = function (userAgent, mediaMatch) { - var browsers = PlatformInfo.browsers(); - var oses = PlatformInfo.oses(); - var browser = UaString.detectBrowser(browsers, userAgent).fold(Browser.unknown, Browser.nu); - var os = UaString.detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu); - var deviceType = DeviceType(os, browser, userAgent, mediaMatch); - return { - browser: browser, - os: os, - deviceType: deviceType - }; - }; - var PlatformDetection = { detect: detect$2 }; - - var mediaMatch = function (query) { - return window.matchMedia(query).matches; - }; - var platform = cached(function () { - return PlatformDetection.detect(navigator.userAgent, mediaMatch); - }); - var detect$3 = function () { - return platform(); - }; - - var compareDocumentPosition = function (a, b, match) { - return (a.compareDocumentPosition(b) & match) !== 0; - }; - var documentPositionContainedBy = function (a, b) { - return compareDocumentPosition(a, b, Node.DOCUMENT_POSITION_CONTAINED_BY); - }; - - var ELEMENT = 1; - - var fromHtml = function (html, scope) { - var doc = scope || document; - var div = doc.createElement('div'); - div.innerHTML = html; - if (!div.hasChildNodes() || div.childNodes.length > 1) { - console.error('HTML does not have a single root node', html); - throw new Error('HTML must have a single root node'); - } - return fromDom(div.childNodes[0]); - }; - var fromTag = function (tag, scope) { - var doc = scope || document; - var node = doc.createElement(tag); - return fromDom(node); - }; - var fromText = function (text, scope) { - var doc = scope || document; - var node = doc.createTextNode(text); - return fromDom(node); - }; - var fromDom = function (node) { - if (node === null || node === undefined) { - throw new Error('Node cannot be null or undefined'); - } - return { dom: node }; - }; - var fromPoint = function (docElm, x, y) { - return Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom); - }; - var SugarElement = { - fromHtml: fromHtml, - fromTag: fromTag, - fromText: fromText, - fromDom: fromDom, - fromPoint: fromPoint - }; - - var is = function (element, selector) { - var dom = element.dom; - if (dom.nodeType !== ELEMENT) { - return false; - } else { - var elem = dom; - if (elem.matches !== undefined) { - return elem.matches(selector); - } else if (elem.msMatchesSelector !== undefined) { - return elem.msMatchesSelector(selector); - } else if (elem.webkitMatchesSelector !== undefined) { - return elem.webkitMatchesSelector(selector); - } else if (elem.mozMatchesSelector !== undefined) { - return elem.mozMatchesSelector(selector); - } else { - throw new Error('Browser lacks native selectors'); - } - } - }; - - var eq = function (e1, e2) { - return e1.dom === e2.dom; - }; - var regularContains = function (e1, e2) { - var d1 = e1.dom; - var d2 = e2.dom; - return d1 === d2 ? false : d1.contains(d2); - }; - var ieContains = function (e1, e2) { - return documentPositionContainedBy(e1.dom, e2.dom); - }; - var contains$1 = function (e1, e2) { - return detect$3().browser.isIE() ? ieContains(e1, e2) : regularContains(e1, e2); - }; - var is$1 = is; - - var global$1 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils'); - - var global$2 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker'); - - var global$3 = tinymce.util.Tools.resolve('tinymce.util.VK'); - - var keys = Object.keys; - var each$1 = function (obj, f) { - var props = keys(obj); - for (var k = 0, len = props.length; k < len; k++) { - var i = props[k]; - var x = obj[i]; - f(x, i); - } - }; - var objAcc = function (r) { - return function (x, i) { - r[i] = x; - }; - }; - var internalFilter = function (obj, pred, onTrue, onFalse) { - var r = {}; - each$1(obj, function (x, i) { - (pred(x, i) ? onTrue : onFalse)(x, i); - }); - return r; - }; - var filter$1 = function (obj, pred) { - var t = {}; - internalFilter(obj, pred, objAcc(t), noop); - return t; - }; - - var Global = typeof window !== 'undefined' ? window : Function('return this;')(); - - var name = function (element) { - var r = element.dom.nodeName; - return r.toLowerCase(); - }; - var type = function (element) { - return element.dom.nodeType; - }; - var isType$1 = function (t) { - return function (element) { - return type(element) === t; - }; - }; - var isElement = isType$1(ELEMENT); - - var rawSet = function (dom, key, value) { - if (isString(value) || isBoolean(value) || isNumber(value)) { - dom.setAttribute(key, value + ''); - } else { - console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom); - throw new Error('Attribute value was not simple'); - } - }; - var setAll = function (element, attrs) { - var dom = element.dom; - each$1(attrs, function (v, k) { - rawSet(dom, k, v); - }); - }; - var clone = function (element) { - return foldl(element.dom.attributes, function (acc, attr) { - acc[attr.name] = attr.value; - return acc; - }, {}); - }; - - var parent = function (element) { - return Optional.from(element.dom.parentNode).map(SugarElement.fromDom); - }; - var children = function (element) { - return map(element.dom.childNodes, SugarElement.fromDom); - }; - var child = function (element, index) { - var cs = element.dom.childNodes; - return Optional.from(cs[index]).map(SugarElement.fromDom); - }; - var firstChild = function (element) { - return child(element, 0); - }; - var lastChild = function (element) { - return child(element, element.dom.childNodes.length - 1); - }; - - var before = function (marker, element) { - var parent$1 = parent(marker); - parent$1.each(function (v) { - v.dom.insertBefore(element.dom, marker.dom); - }); - }; - var append = function (parent, element) { - parent.dom.appendChild(element.dom); - }; - - var before$1 = function (marker, elements) { - each(elements, function (x) { - before(marker, x); - }); - }; - var append$1 = function (parent, elements) { - each(elements, function (x) { - append(parent, x); - }); - }; - - var remove = function (element) { - var dom = element.dom; - if (dom.parentNode !== null) { - dom.parentNode.removeChild(dom); - } - }; - - var clone$1 = function (original, isDeep) { - return SugarElement.fromDom(original.dom.cloneNode(isDeep)); - }; - var deep = function (original) { - return clone$1(original, true); - }; - var shallowAs = function (original, tag) { - var nu = SugarElement.fromTag(tag); - var attributes = clone(original); - setAll(nu, attributes); - return nu; - }; - var mutate = function (original, tag) { - var nu = shallowAs(original, tag); - before(original, nu); - var children$1 = children(original); - append$1(nu, children$1); - remove(original); - return nu; - }; - - var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); - - var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools'); - - var matchNodeName = function (name) { - return function (node) { - return node && node.nodeName.toLowerCase() === name; - }; - }; - var matchNodeNames = function (regex) { - return function (node) { - return node && regex.test(node.nodeName); - }; - }; - var isTextNode = function (node) { - return node && node.nodeType === 3; - }; - var isListNode = matchNodeNames(/^(OL|UL|DL)$/); - var isOlUlNode = matchNodeNames(/^(OL|UL)$/); - var isOlNode = matchNodeName('ol'); - var isListItemNode = matchNodeNames(/^(LI|DT|DD)$/); - var isDlItemNode = matchNodeNames(/^(DT|DD)$/); - var isTableCellNode = matchNodeNames(/^(TH|TD)$/); - var isBr = matchNodeName('br'); - var isFirstChild = function (node) { - return node.parentNode.firstChild === node; - }; - var isTextBlock = function (editor, node) { - return node && !!editor.schema.getTextBlockElements()[node.nodeName]; - }; - var isBlock = function (node, blockElements) { - return node && node.nodeName in blockElements; - }; - var isBogusBr = function (dom, node) { - if (!isBr(node)) { - return false; - } - return dom.isBlock(node.nextSibling) && !isBr(node.previousSibling); - }; - var isEmpty = function (dom, elm, keepBookmarks) { - var empty = dom.isEmpty(elm); - if (keepBookmarks && dom.select('span[data-mce-type=bookmark]', elm).length > 0) { - return false; - } - return empty; - }; - var isChildOfBody = function (dom, elm) { - return dom.isChildOf(elm, dom.getRoot()); - }; - - var shouldIndentOnTab = function (editor) { - return editor.getParam('lists_indent_on_tab', true); - }; - var getForcedRootBlock = function (editor) { - var block = editor.getParam('forced_root_block', 'p'); - if (block === false) { - return ''; - } else if (block === true) { - return 'p'; - } else { - return block; - } - }; - var getForcedRootBlockAttrs = function (editor) { - return editor.getParam('forced_root_block_attrs', {}); - }; - - var createTextBlock = function (editor, contentNode) { - var dom = editor.dom; - var blockElements = editor.schema.getBlockElements(); - var fragment = dom.createFragment(); - var blockName = getForcedRootBlock(editor); - var node, textBlock, hasContentNode; - if (blockName) { - textBlock = dom.create(blockName); - if (textBlock.tagName === blockName.toUpperCase()) { - dom.setAttribs(textBlock, getForcedRootBlockAttrs(editor)); - } - if (!isBlock(contentNode.firstChild, blockElements)) { - fragment.appendChild(textBlock); - } - } - if (contentNode) { - while (node = contentNode.firstChild) { - var nodeName = node.nodeName; - if (!hasContentNode && (nodeName !== 'SPAN' || node.getAttribute('data-mce-type') !== 'bookmark')) { - hasContentNode = true; - } - if (isBlock(node, blockElements)) { - fragment.appendChild(node); - textBlock = null; - } else { - if (blockName) { - if (!textBlock) { - textBlock = dom.create(blockName); - fragment.appendChild(textBlock); - } - textBlock.appendChild(node); - } else { - fragment.appendChild(node); - } - } - } - } - if (!blockName) { - fragment.appendChild(dom.create('br')); - } else { - if (!hasContentNode) { - textBlock.appendChild(dom.create('br', { 'data-mce-bogus': '1' })); - } - } - return fragment; - }; - - var DOM = global$4.DOM; - var splitList = function (editor, ul, li) { - var removeAndKeepBookmarks = function (targetNode) { - global$5.each(bookmarks, function (node) { - targetNode.parentNode.insertBefore(node, li.parentNode); - }); - DOM.remove(targetNode); - }; - var bookmarks = DOM.select('span[data-mce-type="bookmark"]', ul); - var newBlock = createTextBlock(editor, li); - var tmpRng = DOM.createRng(); - tmpRng.setStartAfter(li); - tmpRng.setEndAfter(ul); - var fragment = tmpRng.extractContents(); - for (var node = fragment.firstChild; node; node = node.firstChild) { - if (node.nodeName === 'LI' && editor.dom.isEmpty(node)) { - DOM.remove(node); - break; - } - } - if (!editor.dom.isEmpty(fragment)) { - DOM.insertAfter(fragment, ul); - } - DOM.insertAfter(newBlock, ul); - if (isEmpty(editor.dom, li.parentNode)) { - removeAndKeepBookmarks(li.parentNode); - } - DOM.remove(li); - if (isEmpty(editor.dom, ul)) { - DOM.remove(ul); - } - }; - - var outdentDlItem = function (editor, item) { - if (is$1(item, 'dd')) { - mutate(item, 'dt'); - } else if (is$1(item, 'dt')) { - parent(item).each(function (dl) { - return splitList(editor, dl.dom, item.dom); - }); - } - }; - var indentDlItem = function (item) { - if (is$1(item, 'dt')) { - mutate(item, 'dd'); - } - }; - var dlIndentation = function (editor, indentation, dlItems) { - if (indentation === 'Indent') { - each(dlItems, indentDlItem); - } else { - each(dlItems, function (item) { - return outdentDlItem(editor, item); - }); - } - }; - - var getNormalizedPoint = function (container, offset) { - if (isTextNode(container)) { - return { - container: container, - offset: offset - }; - } - var node = global$1.getNode(container, offset); - if (isTextNode(node)) { - return { - container: node, - offset: offset >= container.childNodes.length ? node.data.length : 0 - }; - } else if (node.previousSibling && isTextNode(node.previousSibling)) { - return { - container: node.previousSibling, - offset: node.previousSibling.data.length - }; - } else if (node.nextSibling && isTextNode(node.nextSibling)) { - return { - container: node.nextSibling, - offset: 0 - }; - } - return { - container: container, - offset: offset - }; - }; - var normalizeRange = function (rng) { - var outRng = rng.cloneRange(); - var rangeStart = getNormalizedPoint(rng.startContainer, rng.startOffset); - outRng.setStart(rangeStart.container, rangeStart.offset); - var rangeEnd = getNormalizedPoint(rng.endContainer, rng.endOffset); - outRng.setEnd(rangeEnd.container, rangeEnd.offset); - return outRng; - }; - - var global$6 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery'); - - var getParentList = function (editor, node) { - var selectionStart = node || editor.selection.getStart(true); - return editor.dom.getParent(selectionStart, 'OL,UL,DL', getClosestListRootElm(editor, selectionStart)); - }; - var isParentListSelected = function (parentList, selectedBlocks) { - return parentList && selectedBlocks.length === 1 && selectedBlocks[0] === parentList; - }; - var findSubLists = function (parentList) { - return global$5.grep(parentList.querySelectorAll('ol,ul,dl'), function (elm) { - return isListNode(elm); - }); - }; - var getSelectedSubLists = function (editor) { - var parentList = getParentList(editor); - var selectedBlocks = editor.selection.getSelectedBlocks(); - if (isParentListSelected(parentList, selectedBlocks)) { - return findSubLists(parentList); - } else { - return global$5.grep(selectedBlocks, function (elm) { - return isListNode(elm) && parentList !== elm; - }); - } - }; - var findParentListItemsNodes = function (editor, elms) { - var listItemsElms = global$5.map(elms, function (elm) { - var parentLi = editor.dom.getParent(elm, 'li,dd,dt', getClosestListRootElm(editor, elm)); - return parentLi ? parentLi : elm; - }); - return global$6.unique(listItemsElms); - }; - var getSelectedListItems = function (editor) { - var selectedBlocks = editor.selection.getSelectedBlocks(); - return global$5.grep(findParentListItemsNodes(editor, selectedBlocks), function (block) { - return isListItemNode(block); - }); - }; - var getSelectedDlItems = function (editor) { - return filter(getSelectedListItems(editor), isDlItemNode); - }; - var getClosestListRootElm = function (editor, elm) { - var parentTableCell = editor.dom.getParents(elm, 'TD,TH'); - var root = parentTableCell.length > 0 ? parentTableCell[0] : editor.getBody(); - return root; - }; - var findLastParentListNode = function (editor, elm) { - var parentLists = editor.dom.getParents(elm, 'ol,ul', getClosestListRootElm(editor, elm)); - return last(parentLists); - }; - var getSelectedLists = function (editor) { - var firstList = findLastParentListNode(editor, editor.selection.getStart()); - var subsequentLists = filter(editor.selection.getSelectedBlocks(), isOlUlNode); - return firstList.toArray().concat(subsequentLists); - }; - var getSelectedListRoots = function (editor) { - var selectedLists = getSelectedLists(editor); - return getUniqueListRoots(editor, selectedLists); - }; - var getUniqueListRoots = function (editor, lists) { - var listRoots = map(lists, function (list) { - return findLastParentListNode(editor, list).getOr(list); - }); - return global$6.unique(listRoots); - }; - - var lift2 = function (oa, ob, f) { - return oa.isSome() && ob.isSome() ? Optional.some(f(oa.getOrDie(), ob.getOrDie())) : Optional.none(); - }; - - var fromElements = function (elements, scope) { - var doc = scope || document; - var fragment = doc.createDocumentFragment(); - each(elements, function (element) { - fragment.appendChild(element.dom); - }); - return SugarElement.fromDom(fragment); - }; - - var fireListEvent = function (editor, action, element) { - return editor.fire('ListMutation', { - action: action, - element: element - }); - }; - - var isSupported = function (dom) { - return dom.style !== undefined && isFunction(dom.style.getPropertyValue); - }; - - var internalSet = function (dom, property, value) { - if (!isString(value)) { - console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom); - throw new Error('CSS value must be a string: ' + value); - } - if (isSupported(dom)) { - dom.style.setProperty(property, value); - } - }; - var set = function (element, property, value) { - var dom = element.dom; - internalSet(dom, property, value); - }; - - var joinSegment = function (parent, child) { - append(parent.item, child.list); - }; - var joinSegments = function (segments) { - for (var i = 1; i < segments.length; i++) { - joinSegment(segments[i - 1], segments[i]); - } - }; - var appendSegments = function (head$1, tail) { - lift2(last(head$1), head(tail), joinSegment); - }; - var createSegment = function (scope, listType) { - var segment = { - list: SugarElement.fromTag(listType, scope), - item: SugarElement.fromTag('li', scope) - }; - append(segment.list, segment.item); - return segment; - }; - var createSegments = function (scope, entry, size) { - var segments = []; - for (var i = 0; i < size; i++) { - segments.push(createSegment(scope, entry.listType)); - } - return segments; - }; - var populateSegments = function (segments, entry) { - for (var i = 0; i < segments.length - 1; i++) { - set(segments[i].item, 'list-style-type', 'none'); - } - last(segments).each(function (segment) { - setAll(segment.list, entry.listAttributes); - setAll(segment.item, entry.itemAttributes); - append$1(segment.item, entry.content); - }); - }; - var normalizeSegment = function (segment, entry) { - if (name(segment.list) !== entry.listType) { - segment.list = mutate(segment.list, entry.listType); - } - setAll(segment.list, entry.listAttributes); - }; - var createItem = function (scope, attr, content) { - var item = SugarElement.fromTag('li', scope); - setAll(item, attr); - append$1(item, content); - return item; - }; - var appendItem = function (segment, item) { - append(segment.list, item); - segment.item = item; - }; - var writeShallow = function (scope, cast, entry) { - var newCast = cast.slice(0, entry.depth); - last(newCast).each(function (segment) { - var item = createItem(scope, entry.itemAttributes, entry.content); - appendItem(segment, item); - normalizeSegment(segment, entry); - }); - return newCast; - }; - var writeDeep = function (scope, cast, entry) { - var segments = createSegments(scope, entry, entry.depth - cast.length); - joinSegments(segments); - populateSegments(segments, entry); - appendSegments(cast, segments); - return cast.concat(segments); - }; - var composeList = function (scope, entries) { - var cast = foldl(entries, function (cast, entry) { - return entry.depth > cast.length ? writeDeep(scope, cast, entry) : writeShallow(scope, cast, entry); - }, []); - return head(cast).map(function (segment) { - return segment.list; - }); - }; - - var isList = function (el) { - return is$1(el, 'OL,UL'); - }; - var hasFirstChildList = function (el) { - return firstChild(el).map(isList).getOr(false); - }; - var hasLastChildList = function (el) { - return lastChild(el).map(isList).getOr(false); - }; - - var isIndented = function (entry) { - return entry.depth > 0; - }; - var isSelected = function (entry) { - return entry.isSelected; - }; - var cloneItemContent = function (li) { - var children$1 = children(li); - var content = hasLastChildList(li) ? children$1.slice(0, -1) : children$1; - return map(content, deep); - }; - var createEntry = function (li, depth, isSelected) { - return parent(li).filter(isElement).map(function (list) { - return { - depth: depth, - dirty: false, - isSelected: isSelected, - content: cloneItemContent(li), - itemAttributes: clone(li), - listAttributes: clone(list), - listType: name(list) - }; - }); - }; - - var indentEntry = function (indentation, entry) { - switch (indentation) { - case 'Indent': - entry.depth++; - break; - case 'Outdent': - entry.depth--; - break; - case 'Flatten': - entry.depth = 0; - } - entry.dirty = true; - }; - - var cloneListProperties = function (target, source) { - target.listType = source.listType; - target.listAttributes = __assign({}, source.listAttributes); - }; - var cleanListProperties = function (entry) { - entry.listAttributes = filter$1(entry.listAttributes, function (_value, key) { - return key !== 'start'; - }); - }; - var closestSiblingEntry = function (entries, start) { - var depth = entries[start].depth; - var matches = function (entry) { - return entry.depth === depth && !entry.dirty; - }; - var until = function (entry) { - return entry.depth < depth; - }; - return findUntil(reverse(entries.slice(0, start)), matches, until).orThunk(function () { - return findUntil(entries.slice(start + 1), matches, until); - }); - }; - var normalizeEntries = function (entries) { - each(entries, function (entry, i) { - closestSiblingEntry(entries, i).fold(function () { - if (entry.dirty) { - cleanListProperties(entry); - } - }, function (matchingEntry) { - return cloneListProperties(entry, matchingEntry); - }); - }); - return entries; - }; - - var Cell = function (initial) { - var value = initial; - var get = function () { - return value; - }; - var set = function (v) { - value = v; - }; - return { - get: get, - set: set - }; - }; - - var parseItem = function (depth, itemSelection, selectionState, item) { - return firstChild(item).filter(isList).fold(function () { - itemSelection.each(function (selection) { - if (eq(selection.start, item)) { - selectionState.set(true); - } - }); - var currentItemEntry = createEntry(item, depth, selectionState.get()); - itemSelection.each(function (selection) { - if (eq(selection.end, item)) { - selectionState.set(false); - } - }); - var childListEntries = lastChild(item).filter(isList).map(function (list) { - return parseList(depth, itemSelection, selectionState, list); - }).getOr([]); - return currentItemEntry.toArray().concat(childListEntries); - }, function (list) { - return parseList(depth, itemSelection, selectionState, list); - }); - }; - var parseList = function (depth, itemSelection, selectionState, list) { - return bind(children(list), function (element) { - var parser = isList(element) ? parseList : parseItem; - var newDepth = depth + 1; - return parser(newDepth, itemSelection, selectionState, element); - }); - }; - var parseLists = function (lists, itemSelection) { - var selectionState = Cell(false); - var initialDepth = 0; - return map(lists, function (list) { - return { - sourceList: list, - entries: parseList(initialDepth, itemSelection, selectionState, list) - }; - }); - }; - - var outdentedComposer = function (editor, entries) { - var normalizedEntries = normalizeEntries(entries); - return map(normalizedEntries, function (entry) { - var content = fromElements(entry.content); - return SugarElement.fromDom(createTextBlock(editor, content.dom)); - }); - }; - var indentedComposer = function (editor, entries) { - var normalizedEntries = normalizeEntries(entries); - return composeList(editor.contentDocument, normalizedEntries).toArray(); - }; - var composeEntries = function (editor, entries) { - return bind(groupBy(entries, isIndented), function (entries) { - var groupIsIndented = head(entries).map(isIndented).getOr(false); - return groupIsIndented ? indentedComposer(editor, entries) : outdentedComposer(editor, entries); - }); - }; - var indentSelectedEntries = function (entries, indentation) { - each(filter(entries, isSelected), function (entry) { - return indentEntry(indentation, entry); - }); - }; - var getItemSelection = function (editor) { - var selectedListItems = map(getSelectedListItems(editor), SugarElement.fromDom); - return lift2(find(selectedListItems, not(hasFirstChildList)), find(reverse(selectedListItems), not(hasFirstChildList)), function (start, end) { - return { - start: start, - end: end - }; - }); - }; - var listIndentation = function (editor, lists, indentation) { - var entrySets = parseLists(lists, getItemSelection(editor)); - each(entrySets, function (entrySet) { - indentSelectedEntries(entrySet.entries, indentation); - var composedLists = composeEntries(editor, entrySet.entries); - each(composedLists, function (composedList) { - fireListEvent(editor, indentation === 'Indent' ? 'IndentList' : 'OutdentList', composedList.dom); - }); - before$1(entrySet.sourceList, composedLists); - remove(entrySet.sourceList); - }); - }; - - var selectionIndentation = function (editor, indentation) { - var lists = map(getSelectedListRoots(editor), SugarElement.fromDom); - var dlItems = map(getSelectedDlItems(editor), SugarElement.fromDom); - var isHandled = false; - if (lists.length || dlItems.length) { - var bookmark = editor.selection.getBookmark(); - listIndentation(editor, lists, indentation); - dlIndentation(editor, indentation, dlItems); - editor.selection.moveToBookmark(bookmark); - editor.selection.setRng(normalizeRange(editor.selection.getRng())); - editor.nodeChanged(); - isHandled = true; - } - return isHandled; - }; - var indentListSelection = function (editor) { - return selectionIndentation(editor, 'Indent'); - }; - var outdentListSelection = function (editor) { - return selectionIndentation(editor, 'Outdent'); - }; - var flattenListSelection = function (editor) { - return selectionIndentation(editor, 'Flatten'); - }; - - var global$7 = tinymce.util.Tools.resolve('tinymce.dom.BookmarkManager'); - - var DOM$1 = global$4.DOM; - var createBookmark = function (rng) { - var bookmark = {}; - var setupEndPoint = function (start) { - var offsetNode, container, offset; - container = rng[start ? 'startContainer' : 'endContainer']; - offset = rng[start ? 'startOffset' : 'endOffset']; - if (container.nodeType === 1) { - offsetNode = DOM$1.create('span', { 'data-mce-type': 'bookmark' }); - if (container.hasChildNodes()) { - offset = Math.min(offset, container.childNodes.length - 1); - if (start) { - container.insertBefore(offsetNode, container.childNodes[offset]); - } else { - DOM$1.insertAfter(offsetNode, container.childNodes[offset]); - } - } else { - container.appendChild(offsetNode); - } - container = offsetNode; - offset = 0; - } - bookmark[start ? 'startContainer' : 'endContainer'] = container; - bookmark[start ? 'startOffset' : 'endOffset'] = offset; - }; - setupEndPoint(true); - if (!rng.collapsed) { - setupEndPoint(); - } - return bookmark; - }; - var resolveBookmark = function (bookmark) { - function restoreEndPoint(start) { - var container, offset, node; - var nodeIndex = function (container) { - var node = container.parentNode.firstChild, idx = 0; - while (node) { - if (node === container) { - return idx; - } - if (node.nodeType !== 1 || node.getAttribute('data-mce-type') !== 'bookmark') { - idx++; - } - node = node.nextSibling; - } - return -1; - }; - container = node = bookmark[start ? 'startContainer' : 'endContainer']; - offset = bookmark[start ? 'startOffset' : 'endOffset']; - if (!container) { - return; - } - if (container.nodeType === 1) { - offset = nodeIndex(container); - container = container.parentNode; - DOM$1.remove(node); - if (!container.hasChildNodes() && DOM$1.isBlock(container)) { - container.appendChild(DOM$1.create('br')); - } - } - bookmark[start ? 'startContainer' : 'endContainer'] = container; - bookmark[start ? 'startOffset' : 'endOffset'] = offset; - } - restoreEndPoint(true); - restoreEndPoint(); - var rng = DOM$1.createRng(); - rng.setStart(bookmark.startContainer, bookmark.startOffset); - if (bookmark.endContainer) { - rng.setEnd(bookmark.endContainer, bookmark.endOffset); - } - return normalizeRange(rng); - }; - - var listToggleActionFromListName = function (listName) { - switch (listName) { - case 'UL': - return 'ToggleUlList'; - case 'OL': - return 'ToggleOlList'; - case 'DL': - return 'ToggleDLList'; - } - }; - - var isCustomList = function (list) { - return /\btox\-/.test(list.className); - }; - var listState = function (editor, listName, activate) { - var nodeChangeHandler = function (e) { - var inList = findUntil(e.parents, isListNode, isTableCellNode).filter(function (list) { - return list.nodeName === listName && !isCustomList(list); - }).isSome(); - activate(inList); - }; - var parents = editor.dom.getParents(editor.selection.getNode()); - nodeChangeHandler({ parents: parents }); - editor.on('NodeChange', nodeChangeHandler); - return function () { - return editor.off('NodeChange', nodeChangeHandler); - }; - }; - - var updateListStyle = function (dom, el, detail) { - var type = detail['list-style-type'] ? detail['list-style-type'] : null; - dom.setStyle(el, 'list-style-type', type); - }; - var setAttribs = function (elm, attrs) { - global$5.each(attrs, function (value, key) { - elm.setAttribute(key, value); - }); - }; - var updateListAttrs = function (dom, el, detail) { - setAttribs(el, detail['list-attributes']); - global$5.each(dom.select('li', el), function (li) { - setAttribs(li, detail['list-item-attributes']); - }); - }; - var updateListWithDetails = function (dom, el, detail) { - updateListStyle(dom, el, detail); - updateListAttrs(dom, el, detail); - }; - var removeStyles = function (dom, element, styles) { - global$5.each(styles, function (style) { - var _a; - return dom.setStyle(element, (_a = {}, _a[style] = '', _a)); - }); - }; - var getEndPointNode = function (editor, rng, start, root) { - var container = rng[start ? 'startContainer' : 'endContainer']; - var offset = rng[start ? 'startOffset' : 'endOffset']; - if (container.nodeType === 1) { - container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container; - } - if (!start && isBr(container.nextSibling)) { - container = container.nextSibling; - } - while (container.parentNode !== root) { - if (isTextBlock(editor, container)) { - return container; - } - if (/^(TD|TH)$/.test(container.parentNode.nodeName)) { - return container; - } - container = container.parentNode; - } - return container; - }; - var getSelectedTextBlocks = function (editor, rng, root) { - var textBlocks = [], dom = editor.dom; - var startNode = getEndPointNode(editor, rng, true, root); - var endNode = getEndPointNode(editor, rng, false, root); - var block; - var siblings = []; - for (var node = startNode; node; node = node.nextSibling) { - siblings.push(node); - if (node === endNode) { - break; - } - } - global$5.each(siblings, function (node) { - if (isTextBlock(editor, node)) { - textBlocks.push(node); - block = null; - return; - } - if (dom.isBlock(node) || isBr(node)) { - if (isBr(node)) { - dom.remove(node); - } - block = null; - return; - } - var nextSibling = node.nextSibling; - if (global$7.isBookmarkNode(node)) { - if (isTextBlock(editor, nextSibling) || !nextSibling && node.parentNode === root) { - block = null; - return; - } - } - if (!block) { - block = dom.create('p'); - node.parentNode.insertBefore(block, node); - textBlocks.push(block); - } - block.appendChild(node); - }); - return textBlocks; - }; - var hasCompatibleStyle = function (dom, sib, detail) { - var sibStyle = dom.getStyle(sib, 'list-style-type'); - var detailStyle = detail ? detail['list-style-type'] : ''; - detailStyle = detailStyle === null ? '' : detailStyle; - return sibStyle === detailStyle; - }; - var applyList = function (editor, listName, detail) { - if (detail === void 0) { - detail = {}; - } - var rng = editor.selection.getRng(); - var listItemName = 'LI'; - var root = getClosestListRootElm(editor, editor.selection.getStart(true)); - var dom = editor.dom; - if (dom.getContentEditable(editor.selection.getNode()) === 'false') { - return; - } - listName = listName.toUpperCase(); - if (listName === 'DL') { - listItemName = 'DT'; - } - var bookmark = createBookmark(rng); - global$5.each(getSelectedTextBlocks(editor, rng, root), function (block) { - var listBlock; - var sibling = block.previousSibling; - if (sibling && isListNode(sibling) && sibling.nodeName === listName && hasCompatibleStyle(dom, sibling, detail)) { - listBlock = sibling; - block = dom.rename(block, listItemName); - sibling.appendChild(block); - } else { - listBlock = dom.create(listName); - block.parentNode.insertBefore(listBlock, block); - listBlock.appendChild(block); - block = dom.rename(block, listItemName); - } - removeStyles(dom, block, [ - 'margin', - 'margin-right', - 'margin-bottom', - 'margin-left', - 'margin-top', - 'padding', - 'padding-right', - 'padding-bottom', - 'padding-left', - 'padding-top' - ]); - updateListWithDetails(dom, listBlock, detail); - mergeWithAdjacentLists(editor.dom, listBlock); - }); - editor.selection.setRng(resolveBookmark(bookmark)); - }; - var isValidLists = function (list1, list2) { - return list1 && list2 && isListNode(list1) && list1.nodeName === list2.nodeName; - }; - var hasSameListStyle = function (dom, list1, list2) { - var targetStyle = dom.getStyle(list1, 'list-style-type', true); - var style = dom.getStyle(list2, 'list-style-type', true); - return targetStyle === style; - }; - var hasSameClasses = function (elm1, elm2) { - return elm1.className === elm2.className; - }; - var shouldMerge = function (dom, list1, list2) { - return isValidLists(list1, list2) && hasSameListStyle(dom, list1, list2) && hasSameClasses(list1, list2); - }; - var mergeWithAdjacentLists = function (dom, listBlock) { - var sibling, node; - sibling = listBlock.nextSibling; - if (shouldMerge(dom, listBlock, sibling)) { - while (node = sibling.firstChild) { - listBlock.appendChild(node); - } - dom.remove(sibling); - } - sibling = listBlock.previousSibling; - if (shouldMerge(dom, listBlock, sibling)) { - while (node = sibling.lastChild) { - listBlock.insertBefore(node, listBlock.firstChild); - } - dom.remove(sibling); - } - }; - var updateList = function (editor, list, listName, detail) { - if (list.nodeName !== listName) { - var newList = editor.dom.rename(list, listName); - updateListWithDetails(editor.dom, newList, detail); - fireListEvent(editor, listToggleActionFromListName(listName), newList); - } else { - updateListWithDetails(editor.dom, list, detail); - fireListEvent(editor, listToggleActionFromListName(listName), list); - } - }; - var toggleMultipleLists = function (editor, parentList, lists, listName, detail) { - if (parentList.nodeName === listName && !hasListStyleDetail(detail)) { - flattenListSelection(editor); - } else { - var bookmark = createBookmark(editor.selection.getRng(true)); - global$5.each([parentList].concat(lists), function (elm) { - updateList(editor, elm, listName, detail); - }); - editor.selection.setRng(resolveBookmark(bookmark)); - } - }; - var hasListStyleDetail = function (detail) { - return 'list-style-type' in detail; - }; - var toggleSingleList = function (editor, parentList, listName, detail) { - if (parentList === editor.getBody()) { - return; - } - if (parentList) { - if (parentList.nodeName === listName && !hasListStyleDetail(detail) && !isCustomList(parentList)) { - flattenListSelection(editor); - } else { - var bookmark = createBookmark(editor.selection.getRng(true)); - updateListWithDetails(editor.dom, parentList, detail); - var newList = editor.dom.rename(parentList, listName); - mergeWithAdjacentLists(editor.dom, newList); - editor.selection.setRng(resolveBookmark(bookmark)); - fireListEvent(editor, listToggleActionFromListName(listName), newList); - } - } else { - applyList(editor, listName, detail); - fireListEvent(editor, listToggleActionFromListName(listName), parentList); - } - }; - var toggleList = function (editor, listName, detail) { - var parentList = getParentList(editor); - var selectedSubLists = getSelectedSubLists(editor); - detail = detail ? detail : {}; - if (parentList && selectedSubLists.length > 0) { - toggleMultipleLists(editor, parentList, selectedSubLists, listName, detail); - } else { - toggleSingleList(editor, parentList, listName, detail); - } - }; - - var DOM$2 = global$4.DOM; - var normalizeList = function (dom, ul) { - var sibling; - var parentNode = ul.parentNode; - if (parentNode.nodeName === 'LI' && parentNode.firstChild === ul) { - sibling = parentNode.previousSibling; - if (sibling && sibling.nodeName === 'LI') { - sibling.appendChild(ul); - if (isEmpty(dom, parentNode)) { - DOM$2.remove(parentNode); - } - } else { - DOM$2.setStyle(parentNode, 'listStyleType', 'none'); - } - } - if (isListNode(parentNode)) { - sibling = parentNode.previousSibling; - if (sibling && sibling.nodeName === 'LI') { - sibling.appendChild(ul); - } - } - }; - var normalizeLists = function (dom, element) { - global$5.each(global$5.grep(dom.select('ol,ul', element)), function (ul) { - normalizeList(dom, ul); - }); - }; - - var findNextCaretContainer = function (editor, rng, isForward, root) { - var node = rng.startContainer; - var offset = rng.startOffset; - if (isTextNode(node) && (isForward ? offset < node.data.length : offset > 0)) { - return node; - } - var nonEmptyBlocks = editor.schema.getNonEmptyElements(); - if (node.nodeType === 1) { - node = global$1.getNode(node, offset); - } - var walker = new global$2(node, root); - if (isForward) { - if (isBogusBr(editor.dom, node)) { - walker.next(); - } - } - while (node = walker[isForward ? 'next' : 'prev2']()) { - if (node.nodeName === 'LI' && !node.hasChildNodes()) { - return node; - } - if (nonEmptyBlocks[node.nodeName]) { - return node; - } - if (isTextNode(node) && node.data.length > 0) { - return node; - } - } - }; - var hasOnlyOneBlockChild = function (dom, elm) { - var childNodes = elm.childNodes; - return childNodes.length === 1 && !isListNode(childNodes[0]) && dom.isBlock(childNodes[0]); - }; - var unwrapSingleBlockChild = function (dom, elm) { - if (hasOnlyOneBlockChild(dom, elm)) { - dom.remove(elm.firstChild, true); - } - }; - var moveChildren = function (dom, fromElm, toElm) { - var node; - var targetElm = hasOnlyOneBlockChild(dom, toElm) ? toElm.firstChild : toElm; - unwrapSingleBlockChild(dom, fromElm); - if (!isEmpty(dom, fromElm, true)) { - while (node = fromElm.firstChild) { - targetElm.appendChild(node); - } - } - }; - var mergeLiElements = function (dom, fromElm, toElm) { - var listNode; - var ul = fromElm.parentNode; - if (!isChildOfBody(dom, fromElm) || !isChildOfBody(dom, toElm)) { - return; - } - if (isListNode(toElm.lastChild)) { - listNode = toElm.lastChild; - } - if (ul === toElm.lastChild) { - if (isBr(ul.previousSibling)) { - dom.remove(ul.previousSibling); - } - } - var node = toElm.lastChild; - if (node && isBr(node) && fromElm.hasChildNodes()) { - dom.remove(node); - } - if (isEmpty(dom, toElm, true)) { - dom.$(toElm).empty(); - } - moveChildren(dom, fromElm, toElm); - if (listNode) { - toElm.appendChild(listNode); - } - var contains = contains$1(SugarElement.fromDom(toElm), SugarElement.fromDom(fromElm)); - var nestedLists = contains ? dom.getParents(fromElm, isListNode, toElm) : []; - dom.remove(fromElm); - each(nestedLists, function (list) { - if (isEmpty(dom, list) && list !== dom.getRoot()) { - dom.remove(list); - } - }); - }; - var mergeIntoEmptyLi = function (editor, fromLi, toLi) { - editor.dom.$(toLi).empty(); - mergeLiElements(editor.dom, fromLi, toLi); - editor.selection.setCursorLocation(toLi); - }; - var mergeForward = function (editor, rng, fromLi, toLi) { - var dom = editor.dom; - if (dom.isEmpty(toLi)) { - mergeIntoEmptyLi(editor, fromLi, toLi); - } else { - var bookmark = createBookmark(rng); - mergeLiElements(dom, fromLi, toLi); - editor.selection.setRng(resolveBookmark(bookmark)); - } - }; - var mergeBackward = function (editor, rng, fromLi, toLi) { - var bookmark = createBookmark(rng); - mergeLiElements(editor.dom, fromLi, toLi); - var resolvedBookmark = resolveBookmark(bookmark); - editor.selection.setRng(resolvedBookmark); - }; - var backspaceDeleteFromListToListCaret = function (editor, isForward) { - var dom = editor.dom, selection = editor.selection; - var selectionStartElm = selection.getStart(); - var root = getClosestListRootElm(editor, selectionStartElm); - var li = dom.getParent(selection.getStart(), 'LI', root); - if (li) { - var ul = li.parentNode; - if (ul === editor.getBody() && isEmpty(dom, ul)) { - return true; - } - var rng_1 = normalizeRange(selection.getRng()); - var otherLi_1 = dom.getParent(findNextCaretContainer(editor, rng_1, isForward, root), 'LI', root); - if (otherLi_1 && otherLi_1 !== li) { - editor.undoManager.transact(function () { - if (isForward) { - mergeForward(editor, rng_1, otherLi_1, li); - } else { - if (isFirstChild(li)) { - outdentListSelection(editor); - } else { - mergeBackward(editor, rng_1, li, otherLi_1); - } - } - }); - return true; - } else if (!otherLi_1) { - if (!isForward && rng_1.startOffset === 0 && rng_1.endOffset === 0) { - editor.undoManager.transact(function () { - flattenListSelection(editor); - }); - return true; - } - } - } - return false; - }; - var removeBlock = function (dom, block, root) { - var parentBlock = dom.getParent(block.parentNode, dom.isBlock, root); - dom.remove(block); - if (parentBlock && dom.isEmpty(parentBlock)) { - dom.remove(parentBlock); - } - }; - var backspaceDeleteIntoListCaret = function (editor, isForward) { - var dom = editor.dom; - var selectionStartElm = editor.selection.getStart(); - var root = getClosestListRootElm(editor, selectionStartElm); - var block = dom.getParent(selectionStartElm, dom.isBlock, root); - if (block && dom.isEmpty(block)) { - var rng = normalizeRange(editor.selection.getRng()); - var otherLi_2 = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root); - if (otherLi_2) { - editor.undoManager.transact(function () { - removeBlock(dom, block, root); - mergeWithAdjacentLists(dom, otherLi_2.parentNode); - editor.selection.select(otherLi_2, true); - editor.selection.collapse(isForward); - }); - return true; - } - } - return false; - }; - var backspaceDeleteCaret = function (editor, isForward) { - return backspaceDeleteFromListToListCaret(editor, isForward) || backspaceDeleteIntoListCaret(editor, isForward); - }; - var backspaceDeleteRange = function (editor) { - var selectionStartElm = editor.selection.getStart(); - var root = getClosestListRootElm(editor, selectionStartElm); - var startListParent = editor.dom.getParent(selectionStartElm, 'LI,DT,DD', root); - if (startListParent || getSelectedListItems(editor).length > 0) { - editor.undoManager.transact(function () { - editor.execCommand('Delete'); - normalizeLists(editor.dom, editor.getBody()); - }); - return true; - } - return false; - }; - var backspaceDelete = function (editor, isForward) { - return editor.selection.isCollapsed() ? backspaceDeleteCaret(editor, isForward) : backspaceDeleteRange(editor); - }; - var setup = function (editor) { - editor.on('keydown', function (e) { - if (e.keyCode === global$3.BACKSPACE) { - if (backspaceDelete(editor, false)) { - e.preventDefault(); - } - } else if (e.keyCode === global$3.DELETE) { - if (backspaceDelete(editor, true)) { - e.preventDefault(); - } - } - }); - }; - - var get$1 = function (editor) { - return { - backspaceDelete: function (isForward) { - backspaceDelete(editor, isForward); - } - }; - }; - - var open = function (editor) { - var dom = editor.dom; - var currentList = getParentList(editor); - if (!isOlNode(currentList)) { - return; - } - editor.windowManager.open({ - title: 'List Properties', - body: { - type: 'panel', - items: [{ - type: 'input', - name: 'start', - label: 'Start list at number', - inputMode: 'numeric' - }] - }, - initialData: { start: dom.getAttrib(currentList, 'start') || '1' }, - buttons: [ - { - type: 'cancel', - name: 'cancel', - text: 'Cancel' - }, - { - type: 'submit', - name: 'save', - text: 'Save', - primary: true - } - ], - onSubmit: function (api) { - var data = api.getData(); - editor.undoManager.transact(function () { - dom.setAttrib(getParentList(editor), 'start', data.start === '1' ? '' : data.start); - }); - api.close(); - } - }); - }; - - var queryListCommandState = function (editor, listName) { - return function () { - var parentList = editor.dom.getParent(editor.selection.getStart(), 'UL,OL,DL'); - return parentList && parentList.nodeName === listName; - }; - }; - var register = function (editor) { - editor.on('BeforeExecCommand', function (e) { - var cmd = e.command.toLowerCase(); - if (cmd === 'indent') { - indentListSelection(editor); - } else if (cmd === 'outdent') { - outdentListSelection(editor); - } - }); - editor.addCommand('InsertUnorderedList', function (ui, detail) { - toggleList(editor, 'UL', detail); - }); - editor.addCommand('InsertOrderedList', function (ui, detail) { - toggleList(editor, 'OL', detail); - }); - editor.addCommand('InsertDefinitionList', function (ui, detail) { - toggleList(editor, 'DL', detail); - }); - editor.addCommand('RemoveList', function () { - flattenListSelection(editor); - }); - editor.addCommand('mceListProps', function () { - open(editor); - }); - editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState(editor, 'UL')); - editor.addQueryStateHandler('InsertOrderedList', queryListCommandState(editor, 'OL')); - editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState(editor, 'DL')); - }; - - var setupTabKey = function (editor) { - editor.on('keydown', function (e) { - if (e.keyCode !== global$3.TAB || global$3.metaKeyPressed(e)) { - return; - } - editor.undoManager.transact(function () { - if (e.shiftKey ? outdentListSelection(editor) : indentListSelection(editor)) { - e.preventDefault(); - } - }); - }); - }; - var setup$1 = function (editor) { - if (shouldIndentOnTab(editor)) { - setupTabKey(editor); - } - setup(editor); - }; - - var register$1 = function (editor) { - var exec = function (command) { - return function () { - return editor.execCommand(command); - }; - }; - if (!editor.hasPlugin('advlist')) { - editor.ui.registry.addToggleButton('numlist', { - icon: 'ordered-list', - active: false, - tooltip: 'Numbered list', - onAction: exec('InsertOrderedList'), - onSetup: function (api) { - return listState(editor, 'OL', api.setActive); - } - }); - editor.ui.registry.addToggleButton('bullist', { - icon: 'unordered-list', - active: false, - tooltip: 'Bullet list', - onAction: exec('InsertUnorderedList'), - onSetup: function (api) { - return listState(editor, 'UL', api.setActive); - } - }); - } - }; - - var register$2 = function (editor) { - var listProperties = { - text: 'List properties...', - icon: 'ordered-list', - onAction: function () { - return open(editor); - }, - onSetup: function (api) { - return listState(editor, 'OL', function (active) { - return api.setDisabled(!active); - }); - } - }; - editor.ui.registry.addMenuItem('listprops', listProperties); - editor.ui.registry.addContextMenu('lists', { - update: function (node) { - var parentList = getParentList(editor, node); - return isOlNode(parentList) ? ['listprops'] : []; - } - }); - }; - - function Plugin () { - global.add('lists', function (editor) { - if (editor.hasPlugin('rtc', true) === false) { - setup$1(editor); - register(editor); - } - register$1(editor); - register$2(editor); - return get$1(editor); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/lists/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/lists/plugin.min.js deleted file mode 100644 index a6a7b66..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/lists/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var e,n,t,r,o,i,u,a=tinymce.util.Tools.resolve("tinymce.PluginManager"),s=function(){},y=function(e){return function(){return e}},c=function(n){return function(e){return!n(e)}},f=y(!1),d=y(!0),l=function(){return m},m=(e=function(e){return e.isNone()},{fold:function(e,n){return e()},is:f,isSome:f,isNone:d,getOr:t=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:y(null),getOrUndefined:y(undefined),or:t,orThunk:n,map:l,each:s,bind:l,exists:f,forall:d,filter:l,equals:e,equals_:e,toArray:function(){return[]},toString:y("none()")}),p=function(t){var e=y(t),n=function(){return o},r=function(e){return e(t)},o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:d,isNone:f,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:n,orThunk:n,map:function(e){return p(e(t))},each:function(e){e(t)},bind:r,exists:r,forall:r,filter:function(e){return e(t)?o:m},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(f,function(e){return n(t,e)})}};return o},g={some:p,none:l,from:function(e){return null===e||e===undefined?m:p(e)}},v=function(r){return function(e){return t=typeof(n=e),(null===n?"null":"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t)===r;var n,t}},h=function(n){return function(e){return typeof e===n}},S=v("string"),b=v("array"),C=h("boolean"),O=h("function"),N=h("number"),L=Array.prototype.slice,T=Array.prototype.push,D=function(e,n){for(var t=e.length,r=new Array(t),o=0;o=e.childNodes.length?t.data.length:0}:t.previousSibling&&je(t.previousSibling)?{container:t.previousSibling,offset:t.previousSibling.data.length}:t.nextSibling&&je(t.nextSibling)?{container:t.nextSibling,offset:0}:{container:e,offset:n}},un=function(e){var n=e.cloneRange(),t=on(e.startContainer,e.startOffset);n.setStart(t.container,t.offset);var r=on(e.endContainer,e.endOffset);return n.setEnd(r.container,r.offset),n},an=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),sn=function(e,n){var t=n||e.selection.getStart(!0);return e.dom.getParent(t,"OL,UL,DL",dn(e,t))},cn=function(e){var n,t,r,o=sn(e),i=e.selection.getSelectedBlocks();return r=i,(t=o)&&1===r.length&&r[0]===t?(n=o,Fe.grep(n.querySelectorAll("ol,ul,dl"),function(e){return qe(e)})):Fe.grep(i,function(e){return qe(e)&&o!==e})},fn=function(e){var t,n,r,o=e.selection.getSelectedBlocks();return Fe.grep((t=e,n=o,r=Fe.map(n,function(e){var n=t.dom.getParent(e,"li,dd,dt",dn(t,e));return n||e}),an.unique(r)),function(e){return We(e)})},dn=function(e,n){var t=e.dom.getParents(n,"TD,TH");return 0e.length?On:Cn)(t,e,n)},[]),R(r).map(function(e){return e.list}).toArray()},In=function(a,e,s){var n,t=En(e,(n=D(fn(a),le.fromDom),gn(E(n,c(Ln)),E(B(n),c(Ln)),function(e,n){return{start:e,end:n}})));k(t,function(e){var n,t;n=e.entries,t=s,k(w(n,Dn),function(e){return function(e,n){switch(e){case"Indent":n.depth++;break;case"Outdent":n.depth--;break;case"Flatten":n.depth=0}n.dirty=!0}(t,e),0});var r,o,i,u=(r=a,o=e.entries,P(function(e,n){if(0===e.length)return[];for(var t=n(e[0]),r=[],o=[],i=0,u=e.length;i 1) { - return protocolMatches[1] === 'www.' ? 'https://' : protocolMatches[1]; - } else { - return 'https://'; - } - }; - var getUrl = function (pattern, url) { - var protocol = getProtocol(url); - var match = pattern.regex.exec(url); - var newUrl = protocol + pattern.url; - var _loop_1 = function (i) { - newUrl = newUrl.replace('$' + i, function () { - return match[i] ? match[i] : ''; - }); - }; - for (var i = 0; i < match.length; i++) { - _loop_1(i); - } - return newUrl.replace(/\?$/, ''); - }; - var matchPattern = function (url) { - var patterns = urlPatterns.filter(function (pattern) { - return pattern.regex.test(url); - }); - if (patterns.length > 0) { - return global$1.extend({}, patterns[0], { url: getUrl(patterns[0], url) }); - } else { - return null; - } - }; - - var getIframeHtml = function (data) { - var allowFullscreen = data.allowFullscreen ? ' allowFullscreen="1"' : ''; - return ''; - }; - var getFlashHtml = function (data) { - var html = ''; - if (data.poster) { - html += ''; - } - html += ''; - return html; - }; - var getAudioHtml = function (data, audioTemplateCallback) { - if (audioTemplateCallback) { - return audioTemplateCallback(data); - } else { - return ''; - } - }; - var getVideoHtml = function (data, videoTemplateCallback) { - if (videoTemplateCallback) { - return videoTemplateCallback(data); - } else { - return ''; - } - }; - var getScriptHtml = function (data) { - return ''; - }; - var dataToHtml = function (editor, dataIn) { - var data = global$1.extend({}, dataIn); - if (!data.source) { - global$1.extend(data, htmlToData(getScripts(editor), data.embed)); - if (!data.source) { - return ''; - } - } - if (!data.altsource) { - data.altsource = ''; - } - if (!data.poster) { - data.poster = ''; - } - data.source = editor.convertURL(data.source, 'source'); - data.altsource = editor.convertURL(data.altsource, 'source'); - data.sourcemime = guess(data.source); - data.altsourcemime = guess(data.altsource); - data.poster = editor.convertURL(data.poster, 'poster'); - var pattern = matchPattern(data.source); - if (pattern) { - data.source = pattern.url; - data.type = pattern.type; - data.allowFullscreen = pattern.allowFullscreen; - data.width = data.width || String(pattern.w); - data.height = data.height || String(pattern.h); - } - if (data.embed) { - return updateHtml(data.embed, data, true); - } else { - var videoScript = getVideoScriptMatch(getScripts(editor), data.source); - if (videoScript) { - data.type = 'script'; - data.width = String(videoScript.width); - data.height = String(videoScript.height); - } - var audioTemplateCallback = getAudioTemplateCallback(editor); - var videoTemplateCallback = getVideoTemplateCallback(editor); - data.width = data.width || '300'; - data.height = data.height || '150'; - global$1.each(data, function (value, key) { - data[key] = editor.dom.encode('' + value); - }); - if (data.type === 'iframe') { - return getIframeHtml(data); - } else if (data.sourcemime === 'application/x-shockwave-flash') { - return getFlashHtml(data); - } else if (data.sourcemime.indexOf('audio') !== -1) { - return getAudioHtml(data, audioTemplateCallback); - } else if (data.type === 'script') { - return getScriptHtml(data); - } else { - return getVideoHtml(data, videoTemplateCallback); - } - } - }; - - var global$6 = tinymce.util.Tools.resolve('tinymce.util.Promise'); - - var cache = {}; - var embedPromise = function (data, dataToHtml, handler) { - return new global$6(function (res, rej) { - var wrappedResolve = function (response) { - if (response.html) { - cache[data.source] = response; - } - return res({ - url: data.source, - html: response.html ? response.html : dataToHtml(data) - }); - }; - if (cache[data.source]) { - wrappedResolve(cache[data.source]); - } else { - handler({ url: data.source }, wrappedResolve, rej); - } - }); - }; - var defaultPromise = function (data, dataToHtml) { - return new global$6(function (res) { - res({ - html: dataToHtml(data), - url: data.source - }); - }); - }; - var loadedData = function (editor) { - return function (data) { - return dataToHtml(editor, data); - }; - }; - var getEmbedHtml = function (editor, data) { - var embedHandler = getUrlResolver(editor); - return embedHandler ? embedPromise(data, loadedData(editor), embedHandler) : defaultPromise(data, loadedData(editor)); - }; - var isCached = function (url) { - return cache.hasOwnProperty(url); - }; - - var extractMeta = function (sourceInput, data) { - return get(data, sourceInput).bind(function (mainData) { - return get(mainData, 'meta'); - }); - }; - var getValue = function (data, metaData, sourceInput) { - return function (prop) { - var _a; - var getFromData = function () { - return get(data, prop); - }; - var getFromMetaData = function () { - return get(metaData, prop); - }; - var getNonEmptyValue = function (c) { - return get(c, 'value').bind(function (v) { - return v.length > 0 ? Optional.some(v) : Optional.none(); - }); - }; - var getFromValueFirst = function () { - return getFromData().bind(function (child) { - return isObject(child) ? getNonEmptyValue(child).orThunk(getFromMetaData) : getFromMetaData().orThunk(function () { - return Optional.from(child); - }); - }); - }; - var getFromMetaFirst = function () { - return getFromMetaData().orThunk(function () { - return getFromData().bind(function (child) { - return isObject(child) ? getNonEmptyValue(child) : Optional.from(child); - }); - }); - }; - return _a = {}, _a[prop] = (prop === sourceInput ? getFromValueFirst() : getFromMetaFirst()).getOr(''), _a; - }; - }; - var getDimensions = function (data, metaData) { - var dimensions = {}; - get(data, 'dimensions').each(function (dims) { - each([ - 'width', - 'height' - ], function (prop) { - get(metaData, prop).orThunk(function () { - return get(dims, prop); - }).each(function (value) { - return dimensions[prop] = value; - }); - }); - }); - return dimensions; - }; - var unwrap = function (data, sourceInput) { - var metaData = sourceInput ? extractMeta(sourceInput, data).getOr({}) : {}; - var get = getValue(data, metaData, sourceInput); - return __assign(__assign(__assign(__assign(__assign({}, get('source')), get('altsource')), get('poster')), get('embed')), getDimensions(data, metaData)); - }; - var wrap = function (data) { - var wrapped = __assign(__assign({}, data), { - source: { value: get(data, 'source').getOr('') }, - altsource: { value: get(data, 'altsource').getOr('') }, - poster: { value: get(data, 'poster').getOr('') } - }); - each([ - 'width', - 'height' - ], function (prop) { - get(data, prop).each(function (value) { - var dimensions = wrapped.dimensions || {}; - dimensions[prop] = value; - wrapped.dimensions = dimensions; - }); - }); - return wrapped; - }; - var handleError = function (editor) { - return function (error) { - var errorMessage = error && error.msg ? 'Media embed handler error: ' + error.msg : 'Media embed handler threw unknown error.'; - editor.notificationManager.open({ - type: 'error', - text: errorMessage - }); - }; - }; - var snippetToData = function (editor, embedSnippet) { - return htmlToData(getScripts(editor), embedSnippet); - }; - var isMediaElement = function (element) { - return element.getAttribute('data-mce-object') || element.getAttribute('data-ephox-embed-iri'); - }; - var getEditorData = function (editor) { - var element = editor.selection.getNode(); - var snippet = isMediaElement(element) ? editor.serializer.serialize(element, { selection: true }) : ''; - return __assign({ embed: snippet }, htmlToData(getScripts(editor), snippet)); - }; - var addEmbedHtml = function (api, editor) { - return function (response) { - if (isString(response.url) && response.url.trim().length > 0) { - var html = response.html; - var snippetData = snippetToData(editor, html); - var nuData = __assign(__assign({}, snippetData), { - source: response.url, - embed: html - }); - api.setData(wrap(nuData)); - } - }; - }; - var selectPlaceholder = function (editor, beforeObjects) { - var afterObjects = editor.dom.select('img[data-mce-object]'); - for (var i = 0; i < beforeObjects.length; i++) { - for (var y = afterObjects.length - 1; y >= 0; y--) { - if (beforeObjects[i] === afterObjects[y]) { - afterObjects.splice(y, 1); - } - } - } - editor.selection.select(afterObjects[0]); - }; - var handleInsert = function (editor, html) { - var beforeObjects = editor.dom.select('img[data-mce-object]'); - editor.insertContent(html); - selectPlaceholder(editor, beforeObjects); - editor.nodeChanged(); - }; - var submitForm = function (prevData, newData, editor) { - newData.embed = updateHtml(newData.embed, newData); - if (newData.embed && (prevData.source === newData.source || isCached(newData.source))) { - handleInsert(editor, newData.embed); - } else { - getEmbedHtml(editor, newData).then(function (response) { - handleInsert(editor, response.html); - }).catch(handleError(editor)); - } - }; - var showDialog = function (editor) { - var editorData = getEditorData(editor); - var currentData = Cell(editorData); - var initialData = wrap(editorData); - var handleSource = function (prevData, api) { - var serviceData = unwrap(api.getData(), 'source'); - if (prevData.source !== serviceData.source) { - addEmbedHtml(win, editor)({ - url: serviceData.source, - html: '' - }); - getEmbedHtml(editor, serviceData).then(addEmbedHtml(win, editor)).catch(handleError(editor)); - } - }; - var handleEmbed = function (api) { - var data = unwrap(api.getData()); - var dataFromEmbed = snippetToData(editor, data.embed); - api.setData(wrap(dataFromEmbed)); - }; - var handleUpdate = function (api, sourceInput) { - var data = unwrap(api.getData(), sourceInput); - var embed = dataToHtml(editor, data); - api.setData(wrap(__assign(__assign({}, data), { embed: embed }))); - }; - var mediaInput = [{ - name: 'source', - type: 'urlinput', - filetype: 'media', - label: 'Source' - }]; - var sizeInput = !hasDimensions(editor) ? [] : [{ - type: 'sizeinput', - name: 'dimensions', - label: 'Constrain proportions', - constrain: true - }]; - var generalTab = { - title: 'General', - name: 'general', - items: flatten([ - mediaInput, - sizeInput - ]) - }; - var embedTextarea = { - type: 'textarea', - name: 'embed', - label: 'Paste your embed code below:' - }; - var embedTab = { - title: 'Embed', - items: [embedTextarea] - }; - var advancedFormItems = []; - if (hasAltSource(editor)) { - advancedFormItems.push({ - name: 'altsource', - type: 'urlinput', - filetype: 'media', - label: 'Alternative source URL' - }); - } - if (hasPoster(editor)) { - advancedFormItems.push({ - name: 'poster', - type: 'urlinput', - filetype: 'image', - label: 'Media poster (Image URL)' - }); - } - var advancedTab = { - title: 'Advanced', - name: 'advanced', - items: advancedFormItems - }; - var tabs = [ - generalTab, - embedTab - ]; - if (advancedFormItems.length > 0) { - tabs.push(advancedTab); - } - var body = { - type: 'tabpanel', - tabs: tabs - }; - var win = editor.windowManager.open({ - title: 'Insert/Edit Media', - size: 'normal', - body: body, - buttons: [ - { - type: 'cancel', - name: 'cancel', - text: 'Cancel' - }, - { - type: 'submit', - name: 'save', - text: 'Save', - primary: true - } - ], - onSubmit: function (api) { - var serviceData = unwrap(api.getData()); - submitForm(currentData.get(), serviceData, editor); - api.close(); - }, - onChange: function (api, detail) { - switch (detail.name) { - case 'source': - handleSource(currentData.get(), api); - break; - case 'embed': - handleEmbed(api); - break; - case 'dimensions': - case 'altsource': - case 'poster': - handleUpdate(api, detail.name); - break; - } - currentData.set(unwrap(api.getData())); - }, - initialData: initialData - }); - }; - - var get$1 = function (editor) { - var showDialog$1 = function () { - showDialog(editor); - }; - return { showDialog: showDialog$1 }; - }; - - var register = function (editor) { - var showDialog$1 = function () { - showDialog(editor); - }; - editor.addCommand('mceMedia', showDialog$1); - }; - - var global$7 = tinymce.util.Tools.resolve('tinymce.html.Node'); - - var global$8 = tinymce.util.Tools.resolve('tinymce.Env'); - - var sanitize = function (editor, html) { - if (shouldFilterHtml(editor) === false) { - return html; - } - var writer = global$5(); - var blocked; - global$3({ - validate: false, - allow_conditional_comments: false, - comment: function (text) { - writer.comment(text); - }, - cdata: function (text) { - writer.cdata(text); - }, - text: function (text, raw) { - writer.text(text, raw); - }, - start: function (name, attrs, empty) { - blocked = true; - if (name === 'script' || name === 'noscript' || name === 'svg') { - return; - } - for (var i = attrs.length - 1; i >= 0; i--) { - var attrName = attrs[i].name; - if (attrName.indexOf('on') === 0) { - delete attrs.map[attrName]; - attrs.splice(i, 1); - } - if (attrName === 'style') { - attrs[i].value = editor.dom.serializeStyle(editor.dom.parseStyle(attrs[i].value), name); - } - } - writer.start(name, attrs, empty); - blocked = false; - }, - end: function (name) { - if (blocked) { - return; - } - writer.end(name); - } - }, global$4({})).parse(html); - return writer.getContent(); - }; - - var createPlaceholderNode = function (editor, node) { - var name = node.name; - var placeHolder = new global$7('img', 1); - placeHolder.shortEnded = true; - retainAttributesAndInnerHtml(editor, node, placeHolder); - placeHolder.attr({ - 'width': node.attr('width') || '300', - 'height': node.attr('height') || (name === 'audio' ? '30' : '150'), - 'style': node.attr('style'), - 'src': global$8.transparentSrc, - 'data-mce-object': name, - 'class': 'mce-object mce-object-' + name - }); - return placeHolder; - }; - var createPreviewIframeNode = function (editor, node) { - var name = node.name; - var previewWrapper = new global$7('span', 1); - previewWrapper.attr({ - 'contentEditable': 'false', - 'style': node.attr('style'), - 'data-mce-object': name, - 'class': 'mce-preview-object mce-object-' + name - }); - retainAttributesAndInnerHtml(editor, node, previewWrapper); - var previewNode = new global$7(name, 1); - previewNode.attr({ - src: node.attr('src'), - allowfullscreen: node.attr('allowfullscreen'), - style: node.attr('style'), - class: node.attr('class'), - width: node.attr('width'), - height: node.attr('height'), - frameborder: '0' - }); - var shimNode = new global$7('span', 1); - shimNode.attr('class', 'mce-shim'); - previewWrapper.append(previewNode); - previewWrapper.append(shimNode); - return previewWrapper; - }; - var retainAttributesAndInnerHtml = function (editor, sourceNode, targetNode) { - var attrName; - var attrValue; - var ai; - var attribs = sourceNode.attributes; - ai = attribs.length; - while (ai--) { - attrName = attribs[ai].name; - attrValue = attribs[ai].value; - if (attrName !== 'width' && attrName !== 'height' && attrName !== 'style') { - if (attrName === 'data' || attrName === 'src') { - attrValue = editor.convertURL(attrValue, attrName); - } - targetNode.attr('data-mce-p-' + attrName, attrValue); - } - } - var innerHtml = sourceNode.firstChild && sourceNode.firstChild.value; - if (innerHtml) { - targetNode.attr('data-mce-html', escape(sanitize(editor, innerHtml))); - targetNode.firstChild = null; - } - }; - var isPageEmbedWrapper = function (node) { - var nodeClass = node.attr('class'); - return nodeClass && /\btiny-pageembed\b/.test(nodeClass); - }; - var isWithinEmbedWrapper = function (node) { - while (node = node.parent) { - if (node.attr('data-ephox-embed-iri') || isPageEmbedWrapper(node)) { - return true; - } - } - return false; - }; - var placeHolderConverter = function (editor) { - return function (nodes) { - var i = nodes.length; - var node; - var videoScript; - while (i--) { - node = nodes[i]; - if (!node.parent) { - continue; - } - if (node.parent.attr('data-mce-object')) { - continue; - } - if (node.name === 'script') { - videoScript = getVideoScriptMatch(getScripts(editor), node.attr('src')); - if (!videoScript) { - continue; - } - } - if (videoScript) { - if (videoScript.width) { - node.attr('width', videoScript.width.toString()); - } - if (videoScript.height) { - node.attr('height', videoScript.height.toString()); - } - } - if (node.name === 'iframe' && hasLiveEmbeds(editor) && global$8.ceFalse) { - if (!isWithinEmbedWrapper(node)) { - node.replace(createPreviewIframeNode(editor, node)); - } - } else { - if (!isWithinEmbedWrapper(node)) { - node.replace(createPlaceholderNode(editor, node)); - } - } - } - }; - }; - - var setup = function (editor) { - editor.on('preInit', function () { - var specialElements = editor.schema.getSpecialElements(); - global$1.each('video audio iframe object'.split(' '), function (name) { - specialElements[name] = new RegExp(']*>', 'gi'); - }); - var boolAttrs = editor.schema.getBoolAttrs(); - global$1.each('webkitallowfullscreen mozallowfullscreen allowfullscreen'.split(' '), function (name) { - boolAttrs[name] = {}; - }); - editor.parser.addNodeFilter('iframe,video,audio,object,embed,script', placeHolderConverter(editor)); - editor.serializer.addAttributeFilter('data-mce-object', function (nodes, name) { - var i = nodes.length; - var node; - var realElm; - var ai; - var attribs; - var innerHtml; - var innerNode; - var realElmName; - var className; - while (i--) { - node = nodes[i]; - if (!node.parent) { - continue; - } - realElmName = node.attr(name); - realElm = new global$7(realElmName, 1); - if (realElmName !== 'audio' && realElmName !== 'script') { - className = node.attr('class'); - if (className && className.indexOf('mce-preview-object') !== -1) { - realElm.attr({ - width: node.firstChild.attr('width'), - height: node.firstChild.attr('height') - }); - } else { - realElm.attr({ - width: node.attr('width'), - height: node.attr('height') - }); - } - } - realElm.attr({ style: node.attr('style') }); - attribs = node.attributes; - ai = attribs.length; - while (ai--) { - var attrName = attribs[ai].name; - if (attrName.indexOf('data-mce-p-') === 0) { - realElm.attr(attrName.substr(11), attribs[ai].value); - } - } - if (realElmName === 'script') { - realElm.attr('type', 'text/javascript'); - } - innerHtml = node.attr('data-mce-html'); - if (innerHtml) { - innerNode = new global$7('#text', 3); - innerNode.raw = true; - innerNode.value = sanitize(editor, unescape(innerHtml)); - realElm.append(innerNode); - } - node.replace(realElm); - } - }); - }); - editor.on('SetContent', function () { - editor.$('span.mce-preview-object').each(function (index, elm) { - var $elm = editor.$(elm); - if ($elm.find('span.mce-shim').length === 0) { - $elm.append(''); - } - }); - }); - }; - - var setup$1 = function (editor) { - editor.on('ResolveName', function (e) { - var name; - if (e.target.nodeType === 1 && (name = e.target.getAttribute('data-mce-object'))) { - e.name = name; - } - }); - }; - - var setup$2 = function (editor) { - editor.on('click keyup touchend', function () { - var selectedNode = editor.selection.getNode(); - if (selectedNode && editor.dom.hasClass(selectedNode, 'mce-preview-object')) { - if (editor.dom.getAttrib(selectedNode, 'data-mce-selected')) { - selectedNode.setAttribute('data-mce-selected', '2'); - } - } - }); - editor.on('ObjectSelected', function (e) { - var objectType = e.target.getAttribute('data-mce-object'); - if (objectType === 'audio' || objectType === 'script') { - e.preventDefault(); - } - }); - editor.on('ObjectResized', function (e) { - var target = e.target; - var html; - if (target.getAttribute('data-mce-object')) { - html = target.getAttribute('data-mce-html'); - if (html) { - html = unescape(html); - target.setAttribute('data-mce-html', escape(updateHtml(html, { - width: String(e.width), - height: String(e.height) - }))); - } - } - }); - }; - - var stateSelectorAdapter = function (editor, selector) { - return function (buttonApi) { - return editor.selection.selectorChangedWithUnbind(selector.join(','), buttonApi.setActive).unbind; - }; - }; - var register$1 = function (editor) { - editor.ui.registry.addToggleButton('media', { - tooltip: 'Insert/edit media', - icon: 'embed', - onAction: function () { - editor.execCommand('mceMedia'); - }, - onSetup: stateSelectorAdapter(editor, [ - 'img[data-mce-object]', - 'span[data-mce-object]', - 'div[data-ephox-embed-iri]' - ]) - }); - editor.ui.registry.addMenuItem('media', { - icon: 'embed', - text: 'Media...', - onAction: function () { - editor.execCommand('mceMedia'); - } - }); - }; - - function Plugin () { - global.add('media', function (editor) { - register(editor); - register$1(editor); - setup$1(editor); - setup(editor); - setup$2(editor); - return get$1(editor); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/media/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/media/plugin.min.js deleted file mode 100644 index a540a82..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/media/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var e,t,r,n=tinymce.util.Tools.resolve("tinymce.PluginManager"),p=function(){return(p=Object.assign||function(e){for(var t,r=1,n=arguments.length;r"):"application/x-shockwave-flash"===n.sourcemime?(l='',s.poster&&(l+=''),l+=""):-1!==n.sourcemime.indexOf("audio")?(c=n,(u=h)?u(c):'"):"script"===n.type?' '; - var directionality = editor.getBody().dir; - var dirAttr = directionality ? ' dir="' + encode(directionality) + '"' : ''; - var previewHtml = '' + '' + '' + headHtml + '' + '' + editor.getContent() + preventClicksOnLinksScript + '' + ''; - return previewHtml; - }; - - var open = function (editor) { - var content = getPreviewHtml(editor); - var dataApi = editor.windowManager.open({ - title: 'Preview', - size: 'large', - body: { - type: 'panel', - items: [{ - name: 'preview', - type: 'iframe', - sandboxed: true - }] - }, - buttons: [{ - type: 'cancel', - name: 'close', - text: 'Close', - primary: true - }], - initialData: { preview: content } - }); - dataApi.focus('close'); - }; - - var register = function (editor) { - editor.addCommand('mcePreview', function () { - open(editor); - }); - }; - - var register$1 = function (editor) { - editor.ui.registry.addButton('preview', { - icon: 'preview', - tooltip: 'Preview', - onAction: function () { - return editor.execCommand('mcePreview'); - } - }); - editor.ui.registry.addMenuItem('preview', { - icon: 'preview', - text: 'Preview', - onAction: function () { - return editor.execCommand('mcePreview'); - } - }); - }; - - function Plugin () { - global.add('preview', function (editor) { - register(editor); - register$1(editor); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/preview/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/preview/plugin.min.js deleted file mode 100644 index 861aacf..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/preview/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=tinymce.util.Tools.resolve("tinymce.Env"),w=tinymce.util.Tools.resolve("tinymce.util.Tools"),i=function(e){var t=function(t){var n="",i=t.dom.encode,e=t.getParam("content_style","","string");n+='',e&&(n+='");var o=t.getParam("content_css_cors",!1,"boolean")?' crossorigin="anonymous"':"";w.each(t.contentCSS,function(e){n+='"});var r,a,c,s,d,m,l,y=-1===(s=(r=t).getParam("body_id","tinymce","string")).indexOf("=")?s:(c=(a=r).getParam("body_id","","hash"))[a.id]||c,u=-1===(l=(d=t).getParam("body_class","","string")).indexOf("=")?l:(m=d).getParam("body_class","","hash")[m.id]||"",v=' '; - var directionality = editor.getBody().dir; - var dirAttr = directionality ? ' dir="' + encode(directionality) + '"' : ''; - html = '' + '' + '' + '' + contentCssEntries_1 + preventClicksOnLinksScript + '' + '' + html + '' + ''; - } - return replaceTemplateValues(html, getPreviewReplaceValues(editor)); - }; - var open = function (editor, templateList) { - var createTemplates = function () { - if (!templateList || templateList.length === 0) { - var message = editor.translate('No templates defined.'); - editor.notificationManager.open({ - text: message, - type: 'info' - }); - return Optional.none(); - } - return Optional.from(global$1.map(templateList, function (template, index) { - var isUrlTemplate = function (t) { - return t.url !== undefined; - }; - return { - selected: index === 0, - text: template.title, - value: { - url: isUrlTemplate(template) ? Optional.from(template.url) : Optional.none(), - content: !isUrlTemplate(template) ? Optional.from(template.content) : Optional.none(), - description: template.description - } - }; - })); - }; - var createSelectBoxItems = function (templates) { - return map(templates, function (t) { - return { - text: t.text, - value: t.text - }; - }); - }; - var findTemplate = function (templates, templateTitle) { - return find(templates, function (t) { - return t.text === templateTitle; - }); - }; - var loadFailedAlert = function (api) { - editor.windowManager.alert('Could not load the specified template.', function () { - return api.focus('template'); - }); - }; - var getTemplateContent = function (t) { - return new global$4(function (resolve, reject) { - t.value.url.fold(function () { - return resolve(t.value.content.getOr('')); - }, function (url) { - return global$2.send({ - url: url, - success: function (html) { - resolve(html); - }, - error: function (e) { - reject(e); - } - }); - }); - }); - }; - var onChange = function (templates, updateDialog) { - return function (api, change) { - if (change.name === 'template') { - var newTemplateTitle = api.getData().template; - findTemplate(templates, newTemplateTitle).each(function (t) { - api.block('Loading...'); - getTemplateContent(t).then(function (previewHtml) { - updateDialog(api, t, previewHtml); - }).catch(function () { - updateDialog(api, t, ''); - api.disable('save'); - loadFailedAlert(api); - }); - }); - } - }; - }; - var onSubmit = function (templates) { - return function (api) { - var data = api.getData(); - findTemplate(templates, data.template).each(function (t) { - getTemplateContent(t).then(function (previewHtml) { - insertTemplate(editor, false, previewHtml); - api.close(); - }).catch(function () { - api.disable('save'); - loadFailedAlert(api); - }); - }); - }; - }; - var openDialog = function (templates) { - var selectBoxItems = createSelectBoxItems(templates); - var buildDialogSpec = function (bodyItems, initialData) { - return { - title: 'Insert Template', - size: 'large', - body: { - type: 'panel', - items: bodyItems - }, - initialData: initialData, - buttons: [ - { - type: 'cancel', - name: 'cancel', - text: 'Cancel' - }, - { - type: 'submit', - name: 'save', - text: 'Save', - primary: true - } - ], - onSubmit: onSubmit(templates), - onChange: onChange(templates, updateDialog) - }; - }; - var updateDialog = function (dialogApi, template, previewHtml) { - var content = getPreviewContent(editor, previewHtml); - var bodyItems = [ - { - type: 'selectbox', - name: 'template', - label: 'Templates', - items: selectBoxItems - }, - { - type: 'htmlpanel', - html: '

                                      ' + htmlEscape(template.value.description) + '

                                      ' - }, - { - label: 'Preview', - type: 'iframe', - name: 'preview', - sandboxed: false - } - ]; - var initialData = { - template: template.text, - preview: content - }; - dialogApi.unblock(); - dialogApi.redial(buildDialogSpec(bodyItems, initialData)); - dialogApi.focus('template'); - }; - var dialogApi = editor.windowManager.open(buildDialogSpec([], { - template: '', - preview: '' - })); - dialogApi.block('Loading...'); - getTemplateContent(templates[0]).then(function (previewHtml) { - updateDialog(dialogApi, templates[0], previewHtml); - }).catch(function () { - updateDialog(dialogApi, templates[0], ''); - dialogApi.disable('save'); - loadFailedAlert(dialogApi); - }); - }; - var optTemplates = createTemplates(); - optTemplates.each(openDialog); - }; - - var showDialog = function (editor) { - return function (templates) { - open(editor, templates); - }; - }; - var register$1 = function (editor) { - editor.ui.registry.addButton('template', { - icon: 'template', - tooltip: 'Insert template', - onAction: createTemplateList(editor, showDialog(editor)) - }); - editor.ui.registry.addMenuItem('template', { - icon: 'template', - text: 'Insert template...', - onAction: createTemplateList(editor, showDialog(editor)) - }); - }; - - function Plugin () { - global.add('template', function (editor) { - register$1(editor); - register(editor); - setup(editor); - }); - } - - Plugin(); - -}()); diff --git a/component/pear/module/tinymce/tinymce/plugins/template/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/template/plugin.min.js deleted file mode 100644 index d6bda48..0000000 --- a/component/pear/module/tinymce/tinymce/plugins/template/plugin.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - * - * Version: 5.6.2 (2020-12-08) - */ -!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(){},o=function(e){return function(){return e}};var n,r,a,c=o(!1),u=o(!0),_=tinymce.util.Tools.resolve("tinymce.util.Tools"),s=tinymce.util.Tools.resolve("tinymce.util.XHR"),i=function(e){return e.getParam("template_mdate_classes","mdate")},l=function(e){return e.getParam("template_replace_values")},f=function(e){return e.getParam("template_mdate_format",e.translate("%Y-%m-%d"))},m=function(e,t){if((e=""+e).length":">","&":"&","'":"'"},N=function(e){return e.replace(/["'<>&]/g,function(e){return(A(t=C,n=e)?O.from(t[n]):O.none()).getOr(e);var t,n})},I=function(M,t){var e=function(e){return function(e,t){for(var n=e.length,r=new Array(n),a=0;a")&&(o="",(c=r.getParam("content_style","","string"))&&(o+='"),u=r.getParam("content_css_cors",!1,"boolean")?' crossorigin="anonymous"':"",_.each(r.contentCSS,function(e){o+='"}),i=-1===(g=(p=r).getParam("body_class","","string")).indexOf("=")?g:(d=p).getParam("body_class","","hash")[d.id]||"",l=r.dom.encode,s=' - - \ No newline at end of file diff --git a/view/console/console1.html b/view/console/console1.html index 71e8ff9..281c686 100644 --- a/view/console/console1.html +++ b/view/console/console1.html @@ -1,512 +1 @@ - - - - - - 控制后台 - - - - - - - -
                                      -
                                      -
                                      -
                                      -
                                      今日访问
                                      -
                                      -
                                      -
                                      - 0 -
                                      -
                                      - - - - - - - - - - -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      提交次数
                                      -
                                      -
                                      -
                                      - 0 -
                                      -
                                      - - - - - - - - - - - - - -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      下载数量
                                      -
                                      -
                                      -
                                      - 0 -
                                      -
                                      - - - - - - - - - - -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      流量统计
                                      -
                                      -
                                      -
                                      - 0 -
                                      -
                                      - - - - - - - - - - - -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      动态
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -

                                      七彩枫叶 在 Pear Admin 专区 回答问题 -

                                      - 几秒前 -
                                      -
                                      -
                                      -
                                      -
                                      -

                                      简 在 Pear - Admin 专区 进行了 提问 -

                                      - 2天前 -
                                      -
                                      -
                                      -
                                      -
                                      -

                                      恒宇少年 将 Pear Admin 更新至 - 2.3.0 - 版本

                                      - 7天前 -
                                      -
                                      -
                                      -
                                      -
                                      -

                                      如花 在 Pear Admin 社区 发布了 建议

                                      - 7天前 -
                                      -
                                      -
                                      -
                                      -
                                      -

                                      就眠仪式 在 Pear Admin 社区 发布了 建议

                                      - 8天前 -
                                      -
                                      -
                                      -
                                      -
                                      -

                                      贤心 在 Pear Admin 专区 进行了 提问 -

                                      - 8天前 -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      更 新
                                      -
                                      -
                                        -
                                      • 优化代码格式2021-09-06 - 11:28
                                      • -
                                      • 新增消息组件2021-09-06 - 11:28
                                      • -
                                      • 移动端兼容2021-09-06 - 11:28
                                      • -
                                      • 系统布局优化2021-09-06 - 11:28
                                      • -
                                      • 兼容多系统菜单模式2021-09-06 - 11:28
                                      • -
                                      • 兼容多标签页切换2021-09-06 - 11:28
                                      • -
                                      • 扩展下拉组件2021-09-06 - 11:28
                                      • -
                                      • 扩展卡片样式2021-09-06 - 11:28
                                      • -
                                      -
                                      -
                                      -
                                      -
                                      - 链接 -
                                      -
                                      - 官 - 网 -
                                      - 下 载 -
                                      - 后 端 -
                                      -
                                      -
                                      -
                                      - 寄语 -
                                      -
                                      - 原想将澎湃的爱平平稳稳放置你手心,奈何我徒有一股蛮劲,只顾向你跑去,一个不稳跌的满身脏兮兮。试图爬起的我, - 心想你会不会笑我 " 献爱献的这样笨拙, 怎么不知避开爱里的埋伏 " -
                                      -
                                      -
                                      -
                                      -
                                      - - - - \ No newline at end of file +
                                      \ No newline at end of file diff --git a/view/console/console2.html b/view/console/console2.html index c181f3d..281c686 100644 --- a/view/console/console2.html +++ b/view/console/console2.html @@ -1,454 +1 @@ - - - - - - 数据分析 - - - - - - - -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      - 快捷菜单 -
                                      -
                                      -
                                      -
                                      -
                                      - -
                                      - 主页 -
                                      -
                                      -
                                      - -
                                      - 弹层 -
                                      -
                                      -
                                      - -
                                      - 聊天 -
                                      -
                                      -
                                      - -
                                      - 相机 -
                                      -
                                      -
                                      - -
                                      - 表单 -
                                      -
                                      -
                                      - -
                                      - 安全 -
                                      -
                                      -
                                      - -
                                      - 公告 -
                                      -
                                      -
                                      - -
                                      - 更多 -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      - 代办任务 -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      待审评论
                                      -
                                      21
                                      -
                                      -
                                      -
                                      -
                                      -
                                      待审帖子
                                      -
                                      32
                                      -
                                      -
                                      -
                                      -
                                      -
                                      待审文章
                                      -
                                      14
                                      -
                                      -
                                      -
                                      -
                                      -
                                      待审用户
                                      -
                                      63
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      - 使用记录 -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      留言板
                                      -
                                      -
                                        -
                                      • -

                                        要不要作为我的家人,搬来我家。

                                        - 12月25日 19:92 -
                                      • -
                                      • -

                                        快乐的时候不敢尽兴,频繁警戒自己保持清醒。

                                        - 4月30日 22:43 -
                                      • -
                                      • -

                                        夏天真的来了,尽管它还有些犹豫。

                                        - 4月30日 22:43 -
                                      • -
                                      • -

                                        看似不可达到的高度,只要坚持不懈就可能到达。

                                        - 4月30日 22:43 -
                                      • -
                                      • -

                                        当浑浊变成了一种常态,那么清白就成了一种罪过。

                                        - 4月30日 22:43 -
                                      • -
                                      • -

                                        那是一种内在的东西,他们到达不了,也无法触及!

                                        - 5月12日 01:25 -
                                      • - -
                                      • -

                                        希望是一个好东西,也许是最好的,好东西是不会消亡的!

                                        - 6月11日 15:33 -
                                      • -
                                      • -

                                        一切都在不可避免的走向庸俗。

                                        - 2月09日 13:40 -
                                      • -
                                      • -

                                        路上没有灯火的时候,就点亮自己的头颅。

                                        - 3月11日 12:30 -
                                      • - -
                                      • -

                                        我们应该不虚度一生,应该能够说:"我已经做了我能做的事。"

                                        - 4月30日 22:43 -
                                      • - -
                                      • -

                                        接近,是我对一切的态度,是我对一切态度的距离

                                        - 6月11日 15:33 -
                                      • -
                                      • -

                                        没有锚的船当然也可以航行,只是紧张充满你的一生。

                                        - 2月09日 13:40 -
                                      • -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      - - - - \ No newline at end of file +
                                      \ No newline at end of file -- Gitee From 6bafc8128429a9cab333e1b9f6451d1c360aa05c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sat, 24 Jun 2023 01:34:55 +0800 Subject: [PATCH 006/141] update --- admin/css/admin.dark.css | 57 +- admin/css/login.css | 1 + admin/css/overwrite.css | 7 + admin/css/variables.css | 2 + admin/data/message.json | 90 - admin/data/table.json | 132 -- component/pear/css/module/button.css | 169 -- component/pear/css/module/fullscreen.css | 22 - component/pear/css/module/label.css | 0 component/pear/css/module/layer.css | 324 --- component/pear/css/module/layout.css | 70 +- component/pear/css/module/link.css | 20 - component/pear/css/module/loading.css | 987 --------- component/pear/css/module/message.css | 133 -- .../pear/css/module/{frame.css => page.css} | 0 .../pear/css/module/{tab.css => tabPage.css} | 4 +- component/pear/css/module/toast.css | 1929 ---------------- component/pear/css/module/topBar.css | 5 - component/pear/css/pear.css | 23 +- component/pear/module/common.js | 114 - component/pear/module/convert.js | 27 - component/pear/module/core/admin.js | 20 +- component/pear/module/core/messageCenter.js | 127 -- component/pear/module/core/tabPage.js | 144 +- component/pear/module/count.js | 37 - component/pear/module/{ => extends}/popup.js | 6 +- component/pear/module/extends/toast.js | 1225 ----------- component/pear/module/extends/yaml.js | 224 +- component/pear/module/loading.js | 1930 ----------------- component/pear/module/theme.js | 23 +- component/pear/pear.js | 20 +- index.html | 2 + login.html | 2 +- view/result/error.html | 4 +- view/result/success.html | 4 +- 35 files changed, 280 insertions(+), 7604 deletions(-) create mode 100644 admin/css/overwrite.css delete mode 100644 admin/data/message.json delete mode 100644 admin/data/table.json delete mode 100644 component/pear/css/module/button.css delete mode 100644 component/pear/css/module/fullscreen.css delete mode 100644 component/pear/css/module/label.css delete mode 100644 component/pear/css/module/layer.css delete mode 100644 component/pear/css/module/link.css delete mode 100644 component/pear/css/module/loading.css delete mode 100644 component/pear/css/module/message.css rename component/pear/css/module/{frame.css => page.css} (100%) rename component/pear/css/module/{tab.css => tabPage.css} (98%) delete mode 100644 component/pear/css/module/toast.css delete mode 100644 component/pear/css/module/topBar.css delete mode 100644 component/pear/module/common.js delete mode 100644 component/pear/module/convert.js delete mode 100644 component/pear/module/core/messageCenter.js delete mode 100644 component/pear/module/count.js rename component/pear/module/{ => extends}/popup.js (84%) delete mode 100644 component/pear/module/extends/toast.js delete mode 100644 component/pear/module/loading.js diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 266bbdd..e38e629 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -20,7 +20,7 @@ /** side */ .pear-admin-dark .layui-side { - box-shadow: 0 3px 4px rgba(0, 0, 0, .6);; + box-shadow: 0 3px 4px rgba(0, 0, 0, .6) !important; } .pear-admin-dark .layui-logo { @@ -33,6 +33,22 @@ background-color: #141414 !important; } +.pear-admin-dark .layui-side .layui-side-scroll .layui-nav-tree .layui-nav-child { + background-color: rgba(0,0,0,.3)!important; +} + +.pear-admin-dark .layui-side .layui-side-scroll .layui-nav .layui-nav-item a, +.pear-admin-dark .layui-side .layui-side-scroll .layui-nav .layui-nav-item a > .layui-nav-more { + color: rgba(255,255,255,.7) !important; +} + +.pear-admin-dark .layui-side .layui-side-scroll .layui-nav .layui-nav-child dd.layui-this a, +.pear-admin-dark .layui-side .layui-side-scroll .layui-nav .layui-nav-itemed > a, +.pear-admin-dark .layui-side .layui-side-scroll .layui-nav .layui-nav-itemed > a > .layui-nav-more, +.pear-admin-dark .layui-side .layui-side-scroll .layui-nav .layui-nav-item > a:hover { + color: #ffffff !important; +} + /** body */ .pear-admin-dark .layui-body { background-color: #0a0a0a !important; @@ -50,11 +66,32 @@ background-color: #434343; } +.pear-admin-dark .layui-body .layui-tab .layui-nav-child.layui-anim { + border-color: #141414; + background-color: #141414 !important; +} + +.pear-admin-dark .layui-body .layui-tab .layui-nav-child.layui-anim a { + color: #ffffff; +} + +.pear-admin-dark .layui-body .layui-tab .layui-nav-child.layui-anim a:hover { + background-color: #0a0a0a; +} + /** layer */ .pear-admin-dark .layui-layer { background-color: #141414; } +.pear-admin-dark .layui-layer-msg { + border-color: #141414; +} + +.pear-admin-dark .layui-layer-msg .layui-layer-content { + color: #E5EAF3; +} + .pear-admin-dark .layui-layer .layui-layer-setwin > span, .pear-admin-dark .layui-layer .layui-layer-title { color: white; @@ -74,10 +111,28 @@ .pear-admin-dark .layui-input { background-color: transparent; color: #ffffff; + border-color: rgba(0, 0, 0, .30) !important; } /** switch */ .pear-admin-dark .layui-form-switch { border-color: #484849; background-color: rgba(255,255,255,.08); +} + +/** panel */ +.pear-admin-dark .layui-panel { + background-color: #1d1e1f !important; + border-color: #1d1e1f !important; +} + +/** menu */ +.pear-admin-dark .layui-menu { + background-color: #1d1e1f !important; +} + +.pear-admin-dark .layui-menu .layui-menu-body-title, +.pear-admin-dark .layui-menu .layui-menu-body-title:hover { + color: white; + background-color: #1d1e1f !important; } \ No newline at end of file diff --git a/admin/css/login.css b/admin/css/login.css index b461dee..fcabedd 100644 --- a/admin/css/login.css +++ b/admin/css/login.css @@ -10,6 +10,7 @@ height: 40px; line-height: 40px; font-size: 14px; + border-radius: 4px; } .layui-form-checked[lay-skin=primary] i { diff --git a/admin/css/overwrite.css b/admin/css/overwrite.css new file mode 100644 index 0000000..3d70461 --- /dev/null +++ b/admin/css/overwrite.css @@ -0,0 +1,7 @@ +.layui-dropdown { + border-radius: 4px; +} + +.layui-input { + border-radius: 4px; +} \ No newline at end of file diff --git a/admin/css/variables.css b/admin/css/variables.css index 0e6db41..97fd5cb 100644 --- a/admin/css/variables.css +++ b/admin/css/variables.css @@ -1,5 +1,7 @@ :root { --global-primary-color: #16baaa; + + --global-border-radius: 4px; } \ No newline at end of file diff --git a/admin/data/message.json b/admin/data/message.json deleted file mode 100644 index 7cf9263..0000000 --- a/admin/data/message.json +++ /dev/null @@ -1,90 +0,0 @@ -[{ - "id": 1, - "title": "通知", - "children": [{ - "id": 11, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", - "title": "你收到了 14 份新周报", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, { - "id": 12, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png", - "title": "曲妮妮 已通过第三轮面试", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, - { - "id": 11, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png", - "title": "可以区分多种通知类型", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, { - "id": 12, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png", - "title": "左侧图标用于区分不同的类型", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, - { - "id": 11, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", - "title": "内容不要超过两行字", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }] - }, - { - "id": 2, - "title": "消息", - "children": [{ - "id": 11, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", - "title": "你收到了 14 份新周报", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, { - "id": 12, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png", - "title": "曲妮妮 已通过第三轮面试", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, - { - "id": 11, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png", - "title": "可以区分多种通知类型", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, { - "id": 12, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png", - "title": "左侧图标用于区分不同的类型", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, - { - "id": 11, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", - "title": "内容不要超过两行字", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }] - }, - { - "id": 3, - "title": "代办", - "children": [] - } -] diff --git a/admin/data/table.json b/admin/data/table.json deleted file mode 100644 index 8f14886..0000000 --- a/admin/data/table.json +++ /dev/null @@ -1,132 +0,0 @@ -{ - "code": 0, - "msg": "...", - "count": 3, - "data": [{ - "userId": "1", - "username": "admin", - "password": "$2a$10$1K7E1.IYCrsoZVCb6utOo.5jENtfOzhdKWhc49t2lk.UQd7Oam4FG", - "salt": null, - "status": null, - "realName": "超级'管'理员", - "email": "854085'4@'qq.com", - "avatar": null, - "sex": "1", - "phone": "15543526531", - "enable": "1", - "login": "1", - "roleIds": null - }, { - "userId": "2", - "username": "854085467", - "password": null, - "salt": null, - "status": null, - "realName": "就\"眠\"仪式", - "email": null, - "avatar": null, - "sex": "1", - "phone": "1555324324234", - "enable": "1", - "login": "1", - "roleIds": null - }, { - "userId": "3", - "username": "970796069", - "password": null, - "salt": null, - "status": null, - "realName": "王二麻子", - "email": null, - "avatar": null, - "sex": "1", - "phone": "1555324324234", - "enable": "1", - "login": "1", - "roleIds": null - }, { - "userId": "4", - "username": "admin", - "password": "$2a$10$1K7E1.IYCrsoZVCb6utOo.5jENtfOzhdKWhc49t2lk.UQd7Oam4FG", - "salt": null, - "status": null, - "realName": "超级管理员", - "email": "8540854@qq.com", - "avatar": null, - "sex": "1", - "phone": "15543526531", - "enable": "1", - "login": "1", - "roleIds": null - }, { - "userId": "5", - "username": "854085467", - "password": null, - "salt": null, - "status": null, - "realName": "就眠仪式", - "email": null, - "avatar": null, - "sex": "1", - "phone": "1555324324234", - "enable": "1", - "login": "1", - "roleIds": null - }, { - "userId": "6", - "username": "970796069", - "password": null, - "salt": null, - "status": null, - "realName": "王二麻子", - "email": null, - "avatar": null, - "sex": "1", - "phone": "1555324324234", - "enable": "1", - "login": "1", - "roleIds": null - }, { - "userId": "7", - "username": "admin", - "password": "$2a$10$1K7E1.IYCrsoZVCb6utOo.5jENtfOzhdKWhc49t2lk.UQd7Oam4FG", - "salt": null, - "status": null, - "realName": "超级管理员", - "email": "8540854@qq.com", - "avatar": null, - "sex": "1", - "phone": "15543526531", - "enable": "1", - "login": "1", - "roleIds": null - }, { - "userId": "8", - "username": "854085467", - "password": null, - "salt": null, - "status": null, - "realName": "就眠仪式", - "email": null, - "avatar": null, - "sex": "1", - "phone": "1555324324234", - "enable": "1", - "login": "1", - "roleIds": null - }, { - "userId": "9", - "username": "970796069", - "password": null, - "salt": null, - "status": null, - "realName": "王二麻子", - "email": null, - "avatar": null, - "sex": "1", - "phone": "1555324324234", - "enable": "1", - "login": "1", - "roleIds": null - }] -} diff --git a/component/pear/css/module/button.css b/component/pear/css/module/button.css deleted file mode 100644 index fcc6ba3..0000000 --- a/component/pear/css/module/button.css +++ /dev/null @@ -1,169 +0,0 @@ -.pear-btn { - display: inline-block; - line-height: 38px; - white-space: nowrap; - cursor: pointer; - text-align: center; - box-sizing: border-box; - outline: none; - transition: 0.1s; - font-weight: 500; - padding: 0 18px; - height: 38px; - font-size: 14px; - background-color: white; - border: 1px solid #dcdfe6; - border-radius: 2px; -} - -.pear-btn i { - font-size: 13px; -} - -.pear-btn:hover { - opacity: .8; - filter: alpha(opacity=80); - color: #409eff; - background-color: #ECF5FF; -} - -.pear-btn-danger, -.pear-btn-warming, -.pear-btn-success, -.pear-btn-primary { - height: 37px; - line-height: 37px; - color: #fff !important -} - -/** Button 主题 */ -.pear-btn-primary { - border: 1px solid #2D8CF0; - background-color: #2D8CF0 !important; -} -.pear-btn-danger { - border: 1px solid #f56c6c; - background-color: #f56c6c !important; -} -.pear-btn-warming { - border: 1px solid #f6ad55; - background-color: #f6ad55 !important; -} -.pear-btn-success { - border: 1px solid #36b368; - background-color: #36b368 !important; -} - -.pear-btn[round] { - border-radius: 50px; -} - -.pear-btn-primary[plain] { - color: #409eff !important; - background: #ecf5ff 10% !important; -} - -.pear-btn-primary[plain]:hover { - color: #fff !important; - background-color: #2d8cf0!important -} - -.pear-btn-success[plain] { - color: #36b368 !important; - background: #f0f9eb !important; -} - -.pear-btn-success[plain]:hover { - color: white !important; - background-color: #36b368 !important -} - -.pear-btn-warming[plain] { - color: #e6a23c !important; - background: #fdf6ec !important; -} - -.pear-btn-warming[plain]:hover { - color: white !important; - background-color: #e6a23c !important -} - -.pear-btn-danger[plain] { - color: #f56c6c !important; - background: #fef0f0 !important; -} - -.pear-btn-danger[plain]:hover { - color: white !important; - background-color: #f56c6c !important -} - -/** Button Group */ -.pear-btn-group { - display: inline-block; - vertical-align: middle; -} - -.pear-btn-group .pear-btn { - float: left; - position: relative; - border-radius: 0px; - margin-left: 1px; - margin-right: 1px; -} - -.pear-btn-md { - height: 34px; - line-height: 34px; - padding: 0 10px; - font-size: 12.5px; -} - -.pear-btn-group .pear-btn:first-child { - border-top-left-radius: 4px !important; - border-bottom-left-radius: 4px !important; -} - -.pear-btn-group .pear-btn:last-child { - border-top-right-radius: 4px !important; - border-bottom-right-radius: 4px !important; -} - -.pear-btn-group .pear-btn[round]:first-child { - border-top-left-radius: 50px !important; - border-bottom-left-radius: 50px !important; -} - -.pear-btn-group .pear-btn[round]:last-child { - border-top-right-radius: 50px !important; - border-bottom-right-radius: 50px !important; -} - -/** Button Size*/ -.pear-btn-sm { - height: 32px; - line-height: 32px; - padding: 0 10px; - font-size: 12px; -} - -.pear-btn-xs { - height: 28px; - line-height: 28px; - padding: 0 8px; - font-size: 12px; -} - -.pear-btn-md { - height: 34px; - line-height: 34px; - padding: 0 10px; - font-size: 12.5px; -} - -.pear-btn-lg { - height: 44px; - line-height: 44px; - padding: 0 25px; - font-size: 16px; -} diff --git a/component/pear/css/module/fullscreen.css b/component/pear/css/module/fullscreen.css deleted file mode 100644 index 63f7775..0000000 --- a/component/pear/css/module/fullscreen.css +++ /dev/null @@ -1,22 +0,0 @@ -html:-moz-full-screen { - background: grey; -} -html:-webkit-full-screen { - background: grey; - width: 100%; - height: 100%; -} -html:fullscreen{ - background: grey; - width: 100% !important; - height: 100% !important; -} - -:not(:root):fullscreen::backdrop{ - background:whitesmoke; -} - -.pear-full-screen { - width: 100% !important; - height: 100% !important; -} \ No newline at end of file diff --git a/component/pear/css/module/label.css b/component/pear/css/module/label.css deleted file mode 100644 index e69de29..0000000 diff --git a/component/pear/css/module/layer.css b/component/pear/css/module/layer.css deleted file mode 100644 index 0ca669f..0000000 --- a/component/pear/css/module/layer.css +++ /dev/null @@ -1,324 +0,0 @@ -.layui-layer-msg { - border-color: transparent !important; - box-shadow: 2px 0 6px rgb(0 21 41 / 0.04) !important; -} - -/* 扩展动画开始 */ -.pear-drawer.layui-layer { - border-radius: 0 !important; - overflow: auto; -} - -.pear-drawer.layui-layer.position-absolute { - position: absolute !important; -} -.pear-drawer-anim, -.pear-drawer-anim.layui-anim { - -webkit-animation-duration: .3s; - animation-duration: .3s; - -webkit-animation-timing-function: cubic-bezier(0.7, 0.3, 0.1, 1); - animation-timing-function: cubic-bezier(0.7, 0.3, 0.1, 1); -} - -/* right to left */ -@keyframes layer-rl { - from { - -webkit-transform: translate3d(100%, 0, 0); - -ms-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - opacity: 1; - - } - - to { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@-webkit-keyframes layer-rl { - from { - -webkit-transform: translate3d(100%, 0, 0); - -ms-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - opacity: 1; - - } - - to { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.layer-anim-rl { - -webkit-animation-name: layer-rl; - animation-name: layer-rl; -} - -/* right to left close */ -@keyframes layer-rl-close { - from { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - -webkit-transform: translate3d(100%, 0, 0); - -ms-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -@-webkit-keyframes layer-rl-close { - from { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - - } - - to { - -webkit-transform: translate3d(100%, 0, 0); - -ms-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -.layer-anim-rl-close, -.layer-anim-rl.layer-anim-close { - -webkit-animation-name: layer-rl-close; - animation-name: layer-rl-close; -} - -/* left to right */ -@-webkit-keyframes layer-lr { - from { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1 - } - - to { - -webkit-transform: translate3d(-100%, 0, 0); - -ms-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - opacity: 1 - } -} - -@keyframes layer-lr { - from { - -webkit-transform: translate3d(-100%, 0, 0); - -ms-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - opacity: 1 - } - - to { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1 - } -} - -.layer-anim-lr { - -webkit-animation-name: layer-lr; - animation-name: layer-lr -} - -/* left to right close */ -@-webkit-keyframes layer-lr-close { - from { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - -webkit-transform: translate3d(-100%, 0, 0); - -ms-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -@keyframes layer-lr-close { - from { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - -webkit-transform: translate3d(-100%, 0, 0); - -ms-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -.layer-anim-lr-close, -.layer-anim-lr.layer-anim-close { - -webkit-animation-name: layer-lr-close; - animation-name: layer-lr-close -} - -/* top to bottom */ -@-webkit-keyframes layer-tb { - from { - -webkit-transform: translate3d(0, -100%, 0); - -ms-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - opacity: 1; - animation-timing-function: cubic-bezier(0.7, 0.3, 0.1, 1); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - animation-timing-function: cubic-bezier(0.7, 0.3, 0.1, 1); - } -} - -@keyframes layer-tb { - from { - -webkit-transform: translate3d(0, -100%, 0); - -ms-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - opacity: 1; - animation-timing-function: cubic-bezier(0.7, 0.3, 0.1, 1); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - animation-timing-function: cubic-bezier(0.7, 0.3, 0.1, 1); - } -} - -.layer-anim-tb { - -webkit-animation-name: layer-tb; - animation-name: layer-tb -} - -/* top to bottom close */ -@-webkit-keyframes layer-tb-close { - from { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - -webkit-transform: translate3d(0, -100%, 0); - -ms-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@keyframes layer-tb-close { - from { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - -webkit-transform: translate3d(0, -100%, 0); - -ms-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -.layer-anim-tb-close, -.layer-anim-tb.layer-anim-close { - -webkit-animation-name: layer-tb-close; - animation-name: layer-tb-close -} - -/* bottom to top */ -@-webkit-keyframes layer-bt { - from { - -webkit-transform: translate3d(0, 100%, 0); - -ms-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - opacity: 1 - } - - to { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1 - } -} - -@keyframes layer-bt { - from { - -webkit-transform: translate3d(0, 100%, 0); - -ms-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - opacity: 1 - } - - to { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1 - } -} - -.layer-anim-bt { - -webkit-animation-name: layer-bt; - animation-name: layer-bt -} - -/* bottom to top close */ -@-webkit-keyframes layer-bt-close { - from { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 100%, 0); - -ms-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@keyframes layer-bt-close { - from { - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - - } - - to { - -webkit-transform: translate3d(0, 100%, 0); - -ms-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - - } -} - -.layer-anim-bt-close, -.layer-anim-bt.layer-anim-close { - -webkit-animation-name: layer-bt-close; - animation-name: layer-bt-close -} - -/* 扩展动画结束 */ \ No newline at end of file diff --git a/component/pear/css/module/layout.css b/component/pear/css/module/layout.css index 6286b10..57914ce 100644 --- a/component/pear/css/module/layout.css +++ b/component/pear/css/module/layout.css @@ -1,9 +1,9 @@ .pear-container { padding: 10px; - margin: 0px; + margin: 0px; box-sizing: border-box; - background-color: transparent; - width: 100%; + background-color: transparent; + width: 100%; } body::-webkit-scrollbar { @@ -34,68 +34,6 @@ body::-webkit-scrollbar-corner { background: #f6f6f6; } -.mainBox::-webkit-scrollbar { - width: 0px; - height: 0px; -} - -.mainBox::-webkit-scrollbar { - width: 6px; - height: 6px; -} - -.mainBox::-webkit-scrollbar-track { - background: white; - border-radius: 2px; -} - -.mainBox::-webkit-scrollbar-thumb { - background: #E6E6E6; - border-radius: 2px; -} - -.mainBox::-webkit-scrollbar-thumb:hover { - background: #E6E6E6; -} - -.mainBox::-webkit-scrollbar-corner { - background: #f6f6f6; -} - -.mainBox { - width: 100%; - position: absolute; - top: 0px; - left: 0px; - bottom: 50px; - overflow: auto; -} - -.bottom { - width: 100%; - position: absolute; - bottom: 0px; - left: 0px; - height: 50px; - line-height: 50px; - background-color: #F8F8F8; - border-top: 1px solid #eee; -} - -.button-container { - position: absolute; - right: 15px; -} - -.main-container { - margin: 15px; -} - -.main-container .layui-form-item { - margin-bottom: 15px !important; - margin-top: 10px !important; -} - .pear-row::before, .pear-row::after { content: ""; @@ -1040,4 +978,4 @@ body::-webkit-scrollbar-corner { .pear-col-space30>* { padding: 15px -} +} \ No newline at end of file diff --git a/component/pear/css/module/link.css b/component/pear/css/module/link.css deleted file mode 100644 index 380351c..0000000 --- a/component/pear/css/module/link.css +++ /dev/null @@ -1,20 +0,0 @@ -.pear-link{ - font-size: 15px!important; -} - -.pear-link.pear-link-primary{ - color : #5FB878 ; -} - -.pear-link.pear-link-success{ - color : #5FB878 ; -} - -.pear-link .pear-link-warming{ - - -} - -.pear-link .pear-link-danger{ - -} \ No newline at end of file diff --git a/component/pear/css/module/loading.css b/component/pear/css/module/loading.css deleted file mode 100644 index 4abb57d..0000000 --- a/component/pear/css/module/loading.css +++ /dev/null @@ -1,987 +0,0 @@ -/*! -* Notiflix ('https://www.notiflix.com') -* Version: 2.0.0 -* Author: Furkan MT ('https://github.com/furcan') -* Copyright 2020 Notiflix, MIT Licence ('https://opensource.org/licenses/MIT') -*/ - -/* Notiflix: Notify wrap on */ -[id^=NotiflixNotifyWrap] { -position: fixed; -z-index:4001; -opacity:1; -right: 10px; -top: 10px; -width: 280px; -max-width:96%; -box-sizing:border-box; -background: transparent;} - -[id^=NotiflixNotifyWrap] * { -box-sizing:border-box;} -/* Notiflix: Notify wrap off */ - -/* Notiflix: Notify content on */ -[id^=NotiflixNotifyWrap] > div { --webkit-user-select: none; --moz-user-select: none; --ms-user-select: none; -user-select: none; -font-family: 'Quicksand', sans-serif; -width:100%; -display: inline-block; -position:relative; -margin:0 0 10px; -border-radius:5px; -background: #1e1e1e; -color: #fff; -padding: 10px 12px; -font-size: 14px; -line-height: 1.4;} - -[id^=NotiflixNotifyWrap] > div:last-child { -margin:0;} - -[id^=NotiflixNotifyWrap] > div.with-callback { -cursor:pointer;} - -[id^=NotiflixNotifyWrap] *::selection { -background:inherit;} - -[id^=NotiflixNotifyWrap] > div.with-icon { -padding: 8px;} - -[id^=NotiflixNotifyWrap] > div.click-to-close { -cursor: pointer;} - -[id^=NotiflixNotifyWrap] > div.with-close-button { -padding: 10px 30px 10px 12px;} -[id^=NotiflixNotifyWrap] > div.with-icon.with-close-button { -padding: 6px 30px 6px 6px;} - -[id^=NotiflixNotifyWrap] > div > span.the-message { -font-weight: 500; -font-family:inherit !important; -word-break: break-all; -word-break: break-word;} - -[id^=NotiflixNotifyWrap] > div > span.notify-close-button { -cursor:pointer; -transition:all .2s ease-in-out; -position: absolute; -right: 8px; -top: 0; -bottom:0; -margin:auto; -color:inherit; -width: 16px; -height: 16px;} -[id^=NotiflixNotifyWrap] > div > span.notify-close-button:hover { -transform:rotate(90deg);} -[id^=NotiflixNotifyWrap] > div > span.notify-close-button > svg { -position: absolute; -width: 16px; -height: 16px; -right: 0; -top: 0;} -/* Notiflix: Notify content off */ - -/* Notiflix: Notify icon on */ -[id^=NotiflixNotifyWrap] > div > .nmi { -position: absolute; -width: 40px; -height: 40px; -font-size: 30px; -line-height: 40px; -text-align: center; -left: 8px; -top: 0; -bottom: 0; -margin: auto; -border-radius: inherit;} - -[id^=NotiflixNotifyWrap] > div > .wfa.shadow { -color: inherit; -background: rgba(0, 0, 0, 0.15); -box-shadow: inset 0 0 34px rgba(0, 0, 0, 0.2); -text-shadow: 0 0 10px rgba(0, 0, 0, 0.3);} - -[id^=NotiflixNotifyWrap] > div > span.with-icon { -position: relative; -float: left; -width: calc(100% - 40px); -margin:0 0 0 40px; -padding:0 0 0 10px; -box-sizing: border-box;} -/* Notiflix: Notify icon off */ - -/* Notiflix: Notify rtl on */ -[id^=NotiflixNotifyWrap] > div.rtl-on > .nmi { -left:auto; -right:8px;} - -[id^=NotiflixNotifyWrap] > div.rtl-on > span.with-icon { -padding:0 10px 0 0; -margin:0 40px 0 0;} - -[id^=NotiflixNotifyWrap] > div.rtl-on > span.notify-close-button { -right: auto; -left: 8px;} - -[id^=NotiflixNotifyWrap] > div.with-icon.with-close-button.rtl-on { -padding: 6px 6px 6px 30px;} - -[id^=NotiflixNotifyWrap] > div.with-close-button.rtl-on { -padding: 10px 12px 10px 30px;} -/* Notiflix: Notify rtl off */ - -/* Notiflix: Notify animation => fade on */ -[id^=NotiflixNotifyOverlay].with-animation, -[id^=NotiflixNotifyWrap] > div.with-animation.nx-fade { -animation: notify-animation-fade .3s ease-in-out 0s normal; --webkit-animation: notify-animation-fade .3s ease-in-out 0s normal;} - -@keyframes notify-animation-fade { -0% {opacity:0;} -100% {opacity:1;} -} - -@-webkit-keyframes notify-animation-fade { -0% {opacity:0;} -100% {opacity:1;} -} -/* Notiflix: Notify animation => fade off */ - -/* Notiflix: Notify animation => zoom on */ -[id^=NotiflixNotifyWrap] > div.with-animation.nx-zoom { -animation: notify-animation-zoom .3s ease-in-out 0s normal; --webkit-animation: notify-animation-zoom .3s ease-in-out 0s normal;} - -@keyframes notify-animation-zoom { -0% {transform:scale(0);} -50% {transform:scale(1.05);} -100% {transform:scale(1);} -} - -@-webkit-keyframes notify-animation-zoom { -0% {transform:scale(0);} -50% {transform:scale(1.05);} -100% {transform:scale(1);} -} -/* Notiflix: Notify animation => zoom off */ - -/* Notiflix: Notify animation => from right on */ -[id^=NotiflixNotifyWrap] > div.with-animation.nx-from-right { -animation: notify-animation-from-right .3s ease-in-out 0s normal; --webkit-animation: notify-animation-from-right .3s ease-in-out 0s normal;} - -@keyframes notify-animation-from-right { -0% {right:-300px; opacity:0;} -50% {right:8px; opacity:1;} -100% {right:0px; opacity:1;} -} - -@-webkit-keyframes notify-animation-from-right { -0% {right:-300px; opacity:0;} -50% {right:8px; opacity:1;} -100% {right:0px; opacity:1;} -} -/* Notiflix: Notify animation => from right off */ - -/* Notiflix: Notify animation => from left on */ -[id^=NotiflixNotifyWrap] > div.with-animation.nx-from-left { -animation: notify-animation-from-left .3s ease-in-out 0s normal; --webkit-animation: notify-animation-from-left .3s ease-in-out 0s normal;} - -@keyframes notify-animation-from-left { -0% {left:-300px; opacity:0;} -50% {left:8px; opacity:1;} -100% {left:0px; opacity:1;} -} - -@-webkit-keyframes notify-animation-from-left { -0% {left:-300px; opacity:0;} -50% {left:8px; opacity:1;} -100% {left:0px; opacity:1;} -} -/* Notiflix: Notify animation => from left off */ - -/* Notiflix: Notify animation => from top on */ -[id^=NotiflixNotifyWrap] > div.with-animation.nx-from-top { -animation: notify-animation-from-top .3s ease-in-out 0s normal; --webkit-animation: notify-animation-from-top .3s ease-in-out 0s normal;} - -@keyframes notify-animation-from-top { -0% {top:-50px; opacity:0;} -50% {top:8px; opacity:1;} -100% {top:0px; opacity:1;} -} - -@-webkit-keyframes notify-animation-from-top { -0% {top:-50px; opacity:0;} -50% {top:8px; opacity:1;} -100% {top:0px; opacity:1;} -} -/* Notiflix: Notify animation => from top off */ - -/* Notiflix: Notify animation => from bottom on */ -[id^=NotiflixNotifyWrap] > div.with-animation.nx-from-bottom { -animation: notify-animation-from-bottom .3s ease-in-out 0s normal; --webkit-animation: notify-animation-from-bottom .3s ease-in-out 0s normal;} - -@keyframes notify-animation-from-bottom { -0% {bottom:-50px; opacity:0;} -50% {bottom:8px; opacity:1;} -100% {bottom:0px; opacity:1;} -} - -@-webkit-keyframes notify-animation-from-bottom { -0% {bottom:-50px; opacity:0;} -50% {bottom:8px; opacity:1;} -100% {bottom:0px; opacity:1;} -} -/* Notiflix: Notify animation => from bottom off */ - -/* Notiflix: Notify animation remove => fade on */ -[id^=NotiflixNotifyOverlay].with-animation.remove, -[id^=NotiflixNotifyWrap] > div.with-animation.nx-fade.remove { -opacity:0; -animation: notify-remove-fade .3s ease-in-out 0s normal; --webkit-animation: notify-remove-fade .3s ease-in-out 0s normal;} - -@keyframes notify-remove-fade { -0% {opacity:1;} -100% {opacity:0;} -} - -@-webkit-keyframes notify-remove-fade { -0% {opacity:1;} -100% {opacity:0;} -} -/* Notiflix: Notify animation remove => fade off */ - -/* Notiflix: Notify animation remove => zoom on */ -[id^=NotiflixNotifyWrap] > div.with-animation.nx-zoom.remove { -transform:scale(0); -animation: notify-remove-zoom .3s ease-in-out 0s normal; --webkit-animation: notify-remove-zoom .3s ease-in-out 0s normal;} - -@keyframes notify-remove-zoom { -0% {transform:scale(1);} -50% {transform:scale(1.05);} -100% {transform:scale(0);} -} - -@-webkit-keyframes notify-remove-zoom { -0% {transform:scale(1);} -50% {transform:scale(1.05);} -100% {transform:scale(0);} -} -/* Notiflix: Notify animation remove => zoom off */ - -/* Notiflix: Notify animation remove => from top on */ -[id^=NotiflixNotifyWrap] > div.with-animation.nx-from-top.remove { -opacity:0; -animation: notify-remove-to-top .3s ease-in-out 0s normal; --webkit-animation: notify-remove-to-top .3s ease-in-out 0s normal;} - -@keyframes notify-remove-to-top { -0% {top:0px; opacity:1;} -50% {top:8px; opacity:1;} -100% {top:-50px; opacity:0;} -} - -@-webkit-keyframes notify-remove-to-top { -0% {top:0px; opacity:1;} -50% {top:8px; opacity:1;} -100% {top:-50px; opacity:0;} -} -/* Notiflix: Notify animation remove => from top off */ - -/* Notiflix: Notify animation remove => from right on */ -[id^=NotiflixNotifyWrap] > div.with-animation.nx-from-right.remove { -opacity:0; -animation: notify-remove-to-right .3s ease-in-out 0s normal; --webkit-animation: notify-remove-to-right .3s ease-in-out 0s normal;} - -@keyframes notify-remove-to-right { -0% {right:0px; opacity:1;} -50% {right:8px; opacity:1;} -100% {right:-300px; opacity:0;} -} - -@-webkit-keyframes notify-remove-to-right { -0% {right:0px; opacity:1;} -50% {right:8px; opacity:1;} -100% {right:-300px; opacity:0;} -} -/* Notiflix: Notify animation remove => from right off */ - -/* Notiflix: Notify animation remove => from bottom on */ -[id^=NotiflixNotifyWrap] > div.with-animation.nx-from-bottom.remove { -opacity:0; -animation: notify-remove-to-bottom .3s ease-in-out 0s normal; --webkit-animation: notify-remove-to-bottom .3s ease-in-out 0s normal;} - -@keyframes notify-remove-to-bottom { -0% {bottom:0px; opacity:1;} -50% {bottom:8px; opacity:1;} -100% {bottom:-50px; opacity:0;} -} - -@-webkit-keyframes notify-remove-to-bottom { -0% {bottom:0px; opacity:1;} -50% {bottom:8px; opacity:1;} -100% {bottom:-50px; opacity:0;} -} -/* Notiflix: Notify animation remove => from bottom off */ - -/* Notiflix: Notify animation remove => from left on */ -[id^=NotiflixNotifyWrap] > div.with-animation.nx-from-left.remove { -opacity:0; -animation: notify-remove-to-left .3s ease-in-out 0s normal; --webkit-animation: notify-remove-to-left .3s ease-in-out 0s normal;} - -@keyframes notify-remove-to-left { -0% {left:0px; opacity:1;} -50% {left:8px; opacity:1;} -100% {left:-300px; opacity:0;} -} - -@-webkit-keyframes notify-remove-to-left { -0% {left:0px; opacity:1;} -50% {left:8px; opacity:1;} -100% {left:-300px; opacity:0;} -} -/* Notiflix: Notify animation remove => from left off */ - - -/* Notiflix: Report wrap on */ -[id^=NotiflixReportWrap] { -position: fixed; -z-index:4002; -width: 320px; -max-width:96%; -box-sizing:border-box; -font-family: "Quicksand", sans-serif; -left: 0; -right: 0; -top: 20px; -color:#1e1e1e; -border-radius: 25px; -background: transparent; -margin: auto;} - -[id^=NotiflixReportWrap] * { -box-sizing:border-box;} -/* Notiflix: Report wrap off */ - -/* Notiflix: Report content on */ -[id^=NotiflixReportWrap] > div[class*="-overlay"] { -width:100%; -height:100%; -left:0; -top:0; -background: rgba(255, 255, 255, .5); -position:fixed; -z-index:0;} - -[id^=NotiflixReportWrap] > div[class*="-content"] { -width:100%; -float:left; -border-radius: inherit; -padding:10px; -filter: drop-shadow(0 0 5px rgba(0,0,0,.1)); -border: 1px solid rgba(0,0,0,.03); -background: #f8f8f8; -position:relative; -z-index:1;} - -[id^=NotiflixReportWrap] > div[class*="-content"] > div[class$="-icon"] { --webkit-user-select: none; --moz-user-select: none; --ms-user-select: none; -user-select: none; -width:110px; -height:110px; -display:block; -margin:6px auto 12px;} - -[id^=NotiflixReportWrap] > div[class*="-content"] > div[class$="-icon"] svg { -min-width:100%; -max-width:100%; -height:auto;} - -[id^=NotiflixReportWrap] > * > h5 { -word-break: break-all; -word-break: break-word; -font-family:inherit !important; -font-size:16px; -font-weight:500; -line-height: 1.4; -margin: 0 0 10px; -padding: 0 0 10px; -border-bottom: 1px solid rgba(0, 0, 0, 0.1); -float: left; -width: 100%; -text-align: center;} - -[id^=NotiflixReportWrap] > * > p { -word-break: break-all; -word-break: break-word; -font-family:inherit !important; -font-size:13px; -line-height: 1.4; -float: left; -width: 100%; -padding:0 10px; -margin: 0 0 10px;} - -[id^=NotiflixReportWrap] a#NXReportButton { -word-break: break-all; -word-break: break-word; --webkit-user-select: none; --moz-user-select: none; --ms-user-select: none; -user-select: none; -font-family:inherit !important; -transition:all .25s ease-in-out; -cursor:pointer; -float: right; -padding: 7px 17px; -background: #32c682; -font-size:14px; -line-height: 1.4; -font-weight: 500; -border-radius: inherit !important; -color: #fff;} - -[id^=NotiflixReportWrap] a#NXReportButton:hover { -box-shadow:inset 0 -60px 5px -5px rgba(0, 0, 0, 0.25);} - -[id^=NotiflixReportWrap].rtl-on a#NXReportButton { -float:left;} -/* Notiflix: Report content off */ - -/* Notiflix: Report overlay animation => fade on */ -[id^=NotiflixReportWrap] > div[class*="-overlay"].with-animation { -animation: report-overlay-animation .3s ease-in-out 0s normal; --webkit-animation: report-overlay-animation .3s ease-in-out 0s normal;} - -@keyframes report-overlay-animation { -0% {opacity:0;} -100% {opacity:1;} -} - -@-webkit-keyframes report-overlay-animation { -0% {opacity:0;} -100% {opacity:1;} -} -/* Notiflix: Report overlay animation => fade off */ - -/* Notiflix: Report content animation => fade on */ -[id^=NotiflixReportWrap] > div[class*="-content"].with-animation.nx-fade { -animation: report-animation-fade .3s ease-in-out 0s normal; --webkit-animation: report-animation-fade .3s ease-in-out 0s normal;} - -@keyframes report-animation-fade { -0% {opacity:0;} -100% {opacity:1;} -} - -@-webkit-keyframes report-animation-fade { -0% {opacity:0;} -100% {opacity:1;} -} -/* Notiflix: Report content animation => fade off */ - -/* Notiflix: Report content animation => zoom on */ -[id^=NotiflixReportWrap] > div[class*="-content"].with-animation.nx-zoom { -animation: report-animation-zoom .3s ease-in-out 0s normal; --webkit-animation: report-animation-zoom .3s ease-in-out 0s normal;} - -@keyframes report-animation-zoom { -0% {opacity:0; transform:scale(0.5);} -50% {opacity:1; transform:scale(1.05);} -100% {opacity:1; transform:scale(1);} -} - -@-webkit-keyframes report-animation-zoom { -0% {opacity:0; transform:scale(0.5);} -50% {opacity:1; transform:scale(1.05);} -100% {opacity:1; transform:scale(1);} -} -/* Notiflix: Report content animation => zoom off */ - -/* Notiflix: Report overlay animation remove => fade on */ -[id^=NotiflixReportWrap].remove > div[class*="-overlay"].with-animation { -opacity:0; -animation: report-overlay-animation-remove .3s ease-in-out 0s normal; --webkit-animation: report-overlay-animation-remove .3s ease-in-out 0s normal;} - -@keyframes report-overlay-animation-remove { -0% {opacity:1;} -100% {opacity:0;} -} - -@-webkit-keyframes report-overlay-animation-remove { -0% {opacity:1;} -100% {opacity:0;} -} -/* Notiflix: Report overlay animation remove => fade off */ - -/* Notiflix: Report content animation remove => fade on */ -[id^=NotiflixReportWrap].remove > div[class*="-content"].with-animation.nx-fade { -opacity:0; -animation: report-animation-fade-remove .3s ease-in-out 0s normal; --webkit-animation: report-animation-fade-remove .3s ease-in-out 0s normal;} - -@keyframes report-animation-fade-remove { -0% {opacity:1;} -100% {opacity:0;} -} - -@-webkit-keyframes report-animation-fade-remove { -0% {opacity:1;} -100% {opacity:0;} -} -/* Notiflix: Report content animation remove => fade off */ - -/* Notiflix: Report content animation remove => zoom on */ -[id^=NotiflixReportWrap].remove > div[class*="-content"].with-animation.nx-zoom { -opacity:0; -animation: report-animation-zoom-remove .3s ease-in-out 0s normal; --webkit-animation: report-animation-zoom-remove .3s ease-in-out 0s normal;} - -@keyframes report-animation-zoom-remove { -0% {opacity:1; transform:scale(1);} -50% {opacity:0.5; transform:scale(1.05);} -100% {opacity:0; transform:scale(0);} -} - -@-webkit-keyframes report-animation-zoom-remove { -0% {opacity:1; transform:scale(1);} -50% {opacity:0.5; transform:scale(1.05);} -100% {opacity:0; transform:scale(0);} -} -/* Notiflix: Report content animation remove => zoom off */ - - -/* Notiflix: Confirm wrap on */ -[id^=NotiflixConfirmWrap] { -position: fixed; -z-index: 4003; -width: 300px; -max-width:98%; -left: 10px; -right: 10px; -top: 10px; -margin:auto; -text-align: center; -box-sizing:border-box; -background:transparent; -font-family: "Quicksand", sans-serif;} - -[id^=NotiflixConfirmWrap] * { -box-sizing:border-box;} -/* Notiflix: Confirm wrap off */ - -/* Notiflix: Confirm content on */ -[id^=NotiflixConfirmWrap] > div[class*="-overlay"] { -width:100%; -height:100%; -left:0; -top:0; -background: rgba(255, 255, 255, .5); -position:fixed; -z-index:0;} - -[id^=NotiflixConfirmWrap] > div[class*="-content"] { -width:100%; -float:left; -border-radius: 25px; -padding:10px; -margin:0; -filter: drop-shadow(0 0 5px rgba(0,0,0,.1)); -background: #f8f8f8; -color:#1e1e1e; -position:relative; -z-index:1;} - -[id^=NotiflixConfirmWrap] > div[class*="-content"] > div[class*="-head"] { -float:left; -width:100%;} - -[id^=NotiflixConfirmWrap] > div[class*="-content"] > div[class*="-head"] > h5 { -float:left; -width:100%; -margin:0; -padding:0 0 10px; -border-bottom:1px solid rgba(0,0,0,0.1); -color: #32c682; -font-family:inherit !important; -font-size:16px; -line-height:1.4; -font-weight:500;} - -[id^=NotiflixConfirmWrap] > div[class*="-content"] > div[class*="-head"] > p { -font-family:inherit !important; -margin: 15px 0 20px; -padding: 0 10px; -float:left; -width:100%; -font-size: 14px; -line-height: 1.4; -color: inherit;} - -[id^=NotiflixConfirmWrap] > div[class*="-content"] > div[class*="-buttons"] { --webkit-user-select: none; --moz-user-select: none; --ms-user-select: none; -user-select: none; -border-radius:inherit; -float:left; -width:100%;} - -[id^=NotiflixConfirmWrap] > div[class*="-content"] > div[class*="-buttons"] > a { -cursor:pointer; -font-family:inherit !important; -transition:all .25s ease-in-out; -float: left; -width: 48%; -padding: 9px 5px; -border-radius:inherit !important; -font-weight: 500; -font-size: 15px; -line-height: 1.4; -color:#f8f8f8;} - -[id^=NotiflixConfirmWrap] > div[class*="-content"] > div[class*="-buttons"] > a.confirm-button-ok { -margin:0 2% 0 0; -background:#32c682;} - -[id^=NotiflixConfirmWrap] > div[class*="-content"] > div[class*="-buttons"] > a.confirm-button-cancel { -margin:0 0 0 2%; -background:#a9a9a9;} - -[id^=NotiflixConfirmWrap] > div[class*="-content"] > div[class*="-buttons"] > a.full { -margin:0; -width:100%;} - -[id^=NotiflixConfirmWrap] > div[class*="-content"] > div[class*="-buttons"] > a:hover { -box-shadow:inset 0 -60px 5px -5px rgba(0, 0, 0, 0.25);} -/* Notiflix: Confirm content off */ - -/* Notiflix: Confirm rtl on */ -[id^=NotiflixConfirmWrap].rtl-on > div[class*="-content"] > div[class*="-buttons"], -[id^=NotiflixConfirmWrap].rtl-on > div[class*="-content"] > div[class*="-buttons"] > a { -transform:rotateY(180deg);} -/* Notiflix: Confirm rtl off */ - -/* Notiflix: Confirm overlay animation => fade on */ -[id^=NotiflixConfirmWrap] > div[class*="-overlay"].with-animation { -animation: confirm-overlay-animation .3s ease-in-out 0s normal; --webkit-animation: confirm-overlay-animation .3s ease-in-out 0s normal;} - -@keyframes confirm-overlay-animation { -0% {opacity:0;} -100% {opacity:1;} -} - -@-webkit-keyframes confirm-overlay-animation { -0% {opacity:0;} -100% {opacity:1;} -} -/* Notiflix: Confirm overlay animation => fade off */ - -/* Notiflix: Confirm overlay animation remove => fade on */ -[id^=NotiflixConfirmWrap].remove > div[class*="-overlay"].with-animation { -opacity:0; -animation: confirm-overlay-animation-remove .3s ease-in-out 0s normal; --webkit-animation: confirm-overlay-animation-remove .3s ease-in-out 0s normal;} - -@keyframes confirm-overlay-animation-remove { -0% {opacity:1;} -100% {opacity:0;} -} - -@-webkit-keyframes confirm-overlay-animation-remove { -0% {opacity:1;} -100% {opacity:0;} -} -/* Notiflix: Confirm overlay animation remove => fade off */ - -/* Notiflix: Confirm content animation => fade on */ -[id^=NotiflixConfirmWrap].with-animation.nx-fade > div[class*="-content"] { -animation: confirm-animation-fade .3s ease-in-out 0s normal; --webkit-animation: confirm-animation-fade .3s ease-in-out 0s normal;} - -@keyframes confirm-animation-fade { -0% {opacity:0;} -100% {opacity:1;} -} - -@-webkit-keyframes confirm-animation-fade { -0% {opacity:0;} -100% {opacity:1;} -} -/* Notiflix: Confirm content animation => fade off */ - -/* Notiflix: Confirm content animation => zoom on */ -[id^=NotiflixConfirmWrap].with-animation.nx-zoom > div[class*="-content"] { -animation: confirm-animation-zoom .3s ease-in-out 0s normal; --webkit-animation: confirm-animation-zoom .3s ease-in-out 0s normal;} - -@keyframes confirm-animation-zoom { -0% {opacity:0; transform:scale(0.5);} -50% {opacity:1; transform:scale(1.05);} -100% {opacity:1; transform:scale(1);} -} - -@-webkit-keyframes confirm-animation-zoom { -0% {opacity:0; transform:scale(0.5);} -50% {opacity:1; transform:scale(1.05);} -100% {opacity:1; transform:scale(1);} -} -/* Notiflix: Confirm content animation => zoom off */ - -/* Notiflix: Confirm content animation remove => fade on */ -[id^=NotiflixConfirmWrap].with-animation.nx-fade.remove > div[class*="-content"] { -opacity:0; -animation: confirm-animation-fade-remove .3s ease-in-out 0s normal; --webkit-animation: confirm-animation-fade-remove .3s ease-in-out 0s normal;} - -@keyframes confirm-animation-fade-remove { -0% {opacity:1;} -100% {opacity:0;} -} - -@-webkit-keyframes confirm-animation-fade-remove { -0% {opacity:1;} -100% {opacity:0;} -} -/* Notiflix: Confirm content animation remove => fade off */ - -/* Notiflix: Confirm content animation remove => zoom on */ -[id^=NotiflixConfirmWrap].with-animation.nx-zoom.remove > div[class*="-content"] { -opacity:0; -animation: confirm-animation-zoom-remove .3s ease-in-out 0s normal; --webkit-animation: confirm-animation-zoom-remove .3s ease-in-out 0s normal;} - -@keyframes confirm-animation-zoom-remove { -0% {opacity:1; transform:scale(1);} -50% {opacity:0.5; transform:scale(1.05);} -100% {opacity:0; transform:scale(0);} -} - -@-webkit-keyframes confirm-animation-zoom-remove { -0% {opacity:1; transform:scale(1);} -50% {opacity:0.5; transform:scale(1.05);} -100% {opacity:0; transform:scale(0);} -} -/* Notiflix: Confirm content animation remove => zoom off */ - - -/* Notiflix: Loading wrap on */ -[id^=NotiflixLoadingWrap] { --webkit-user-select: none; --moz-user-select: none; --ms-user-select: none; -user-select: none; -position: fixed; -z-index: 4000; -width: 100%; -height: 100%; -left: 0; -top: 0; -right:0; -bottom:0; -margin:auto; -text-align: center; -box-sizing:border-box; -background: white!important; -font-family: "Quicksand", sans-serif;} - -[id^=NotiflixLoadingWrap] * { -box-sizing:border-box;} - -[id^=NotiflixLoadingWrap].click-to-close { -cursor:pointer;} -/* Notiflix: Loading wrap off */ - -/* Notiflix: Loading content on */ -[id^=NotiflixLoadingWrap] > div[class*="-icon"] { -width:60px; -height:60px; -position:fixed; -background-color: white!important; -transition:top .2s ease-in-out; -left: 0; -top: 0; -right:0; -bottom:0; -margin:auto;} - -[id^=NotiflixLoadingWrap] > div[class*="-icon"] img, -[id^=NotiflixLoadingWrap] > div[class*="-icon"] svg { -max-width:unset; -max-height:unset; -width: 100%; -height: 100%; -position:absolute; -left: 0; -top: 0;} - -[id^=NotiflixLoadingWrap] > div[class*="-icon"].with-message { -top:-42px;} - -[id^=NotiflixLoadingWrap] > p { -position: fixed; -left: 0; -right: 0; -top: 42px; -bottom: 0; -margin: auto; -font-family: inherit !important; -font-weight: 500; -line-height: 1.4; -padding: 0 10px; -width: 100%; -font-size:15px; -height: 18px;} -/* Notiflix: Loading content off */ - -/* Notiflix: Loading animation => fade on */ -[id^=NotiflixLoadingWrap].with-animation { -animation: loading-animation-fade .3s ease-in-out 0s normal; --webkit-animation: loading-animation-fade .3s ease-in-out 0s normal;} - -@keyframes loading-animation-fade { -0% {opacity:0;} -100% {opacity:1;} -} - -@-webkit-keyframes loading-animation-fade { -0% {opacity:0;} -100% {opacity:1;} -} -/* Notiflix: Loading animation => fade off */ - -/* Notiflix: Loading animation remove => fade on */ -[id^=NotiflixLoadingWrap].with-animation.remove { -opacity:0; -animation: loading-animation-fade-remove .3s ease-in-out 0s normal; --webkit-animation: loading-animation-fade-remove .3s ease-in-out 0s normal;} - -@keyframes loading-animation-fade-remove { -0% {opacity:1;} -100% {opacity:0;} -} - -@-webkit-keyframes loading-animation-fade-remove { -0% {opacity:1;} -100% {opacity:0;} -} -/* Notiflix: Loading animation remove => fade off */ - -/* Notiflix: Loading animation new message => fade on */ -[id^=NotiflixLoadingWrap] > p.new { -animation: loading-new-message-fade .3s ease-in-out 0s normal; --webkit-animation: loading-new-message-fade .3s ease-in-out 0s normal;} - -@keyframes loading-new-message-fade { -0% {opacity:0;} -100% {opacity:1;} -} - -@-webkit-keyframes loading-new-message-fade { -0% {opacity:0;} -100% {opacity:1;} -} -/* Notiflix: Loading animation new message => fade off */ - - -/* Notiflix: Block wrap on */ -[id^=NotiflixBlockWrap] { --webkit-user-select: none; --moz-user-select: none; --ms-user-select: none; -user-select: none; -box-sizing: border-box; -position: absolute; -z-index: 1000; -font-family: "Quicksand", sans-serif; -background: rgba(255, 255, 255, 0.9); -text-align: center; -animation-duration: 400ms; -width: 100%; -height: 100%; -left: 0; -top: 0; -border-radius: inherit;} - -[id^=NotiflixBlockWrap] * { -box-sizing: border-box;} -/* Notiflix: Block wrap off */ - -/* Notiflix: Block content on */ -[id^=NotiflixBlockWrap] > span[class*="-icon"] { -width: 45px; -height: 45px; -position: absolute; -left: 0; -top: 0; -right: 0; -bottom: 0; -margin: auto;} - -[id^=NotiflixBlockWrap] > span[class*="-message"] { -position: absolute; -left: 0; -right: 0; -top: 50px; -bottom: 0; -margin: auto; -font-family: inherit !important; -font-weight: 500; -font-size: 14px; -line-height: 1.4; -padding: 0 10px; -width: 100%; -height: 20px; -overflow: hidden;} -/* Notiflix: Block content off */ - -/* Notiflix: Block animation => fade on */ -[id^=NotiflixBlockWrap].with-animation { -animation: block-animation-fade .3s ease-in-out 0s normal; --webkit-animation: block-animation-fade .3s ease-in-out 0s normal;} - -@keyframes block-animation-fade { -0% {opacity: 0;} -100% {opacity: 1;} -} - -@-webkit-keyframes block-animation-fade { -0% {opacity: 0;} -100% {opacity: 1;} -} -/* Notiflix: Block animation => fade off */ - -/* Notiflix: Block animation remove => fade on */ -[id^=NotiflixBlockWrap].with-animation.remove { -opacity: 0; -animation: block-animation-fade-remove .3s ease-in-out 0s normal; --webkit-animation: block-animation-fade-remove .3s ease-in-out 0s normal;} - -@keyframes block-animation-fade-remove { -0% {opacity: 1;} -100% {opacity: 0;} -} - -@-webkit-keyframes block-animation-fade-remove { -0% {opacity: 1;} -100% {opacity: 0;} -} -/* Notiflix: Block animation remove => fade off */ - diff --git a/component/pear/css/module/message.css b/component/pear/css/module/message.css deleted file mode 100644 index 0a61d09..0000000 --- a/component/pear/css/module/message.css +++ /dev/null @@ -1,133 +0,0 @@ -.pear-notice .layui-this { - color: #5FB878 !important; - font-weight: 500; -} - -.pear-notice { - box-shadow: 0 6px 16px -8px rgb(0 0 0 / 8%), 0 9px 28px 0 rgb(0 0 0 / 5%), 0 12px 48px 16px rgb(0 0 0 / 3%)!important; -} - -.pear-notice .layui-tab-title { - display: flex; - text-align: center; - border-right: 1px solid whitesmoke; -} - -.pear-notice .layui-tab-title li { - flex: 1; - text-align: center; - border-right: 1px solid whitesmoke; -} -/*排除最后一个 li 右边框*/ -.pear-notice .layui-tab-title li:last-child { - border-right: none; -} - -.pear-notice * { - color: dimgray !important; -} - -.pear-notice { - width: 360px !important; -} - -.pear-notice img { - margin-left: 8px; - width: 33px !important; - height: 33px !important; - border-radius: 50px; - margin-right: 15px; -} - -.pear-notice-item { - height: 45px !important; - line-height: 45px !important; - padding-right: 20px; - padding-left: 20px; - border-bottom: 1px solid whitesmoke; - padding-top: 10px; - padding-bottom: 15px; -} -.pear-notice-end { - float: right; - right: 10px; -} - -.pear-notice-item span{ - height: 40px; - line-height: 40px; -} - -/** 滚动条样式 */ -.pear-notice *::-webkit-scrollbar { - width: 0px; - height: 0px; -} - -.pear-notice *::-webkit-scrollbar-track { - background: white; - border-radius: 2px; -} - -.pear-notice *::-webkit-scrollbar-thumb { - background: #E6E6E6; - border-radius: 2px; -} - -.pear-notice *::-webkit-scrollbar-thumb:hover { - background: #E6E6E6; -} - -.pear-notice *::-webkit-scrollbar-corner { - background: #f6f6f6; -} -/** 增加 empty 样式 */ -.pear-empty { - font-size: 14px; - line-height: 1.5715; - min-height: 200px; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} -.pear-empty-normal { - margin: 32px 0; - color: #00000040; -} -.pear-empty-normal .pear-empty-image { - height: 40px; -} - -.pear-empty-image { - height: 100px; - margin-bottom: 8px; -} -.pear-empty-image svg { - height: 100%; - margin: auto; -} - -.pear-empty-img-simple-g { - stroke: #d9d9d9; -} -.pear-empty-img-default-g { - fill: #fff; -} -.pear-empty-img-simple-path { - fill: #fafafa; -} -.pear-empty-img-default-path-1 { - fill: #aeb8c2; -} -.pear-empty-img-default-path-2 { - fill: url(#linearGradient-1); -} -.pear-empty-img-default-path-3 { - fill: #f5f5f7; -} -.pear-empty-img-default-path-4, .pear-empty-img-default-path-5 { - fill: #dce0e6; -} - - diff --git a/component/pear/css/module/frame.css b/component/pear/css/module/page.css similarity index 100% rename from component/pear/css/module/frame.css rename to component/pear/css/module/page.css diff --git a/component/pear/css/module/tab.css b/component/pear/css/module/tabPage.css similarity index 98% rename from component/pear/css/module/tab.css rename to component/pear/css/module/tabPage.css index f8d3024..55feb01 100644 --- a/component/pear/css/module/tab.css +++ b/component/pear/css/module/tabPage.css @@ -14,9 +14,9 @@ } .pear-tab-menu{ - box-shadow: 0 2px 8px #f0f1f2!important; - border: 1px solid whitesmoke!important; + box-shadow: none; border-radius: 4px!important; + overflow: hidden; } .pear-tab-menu .item{ diff --git a/component/pear/css/module/toast.css b/component/pear/css/module/toast.css deleted file mode 100644 index 5472da5..0000000 --- a/component/pear/css/module/toast.css +++ /dev/null @@ -1,1929 +0,0 @@ -.iziToast-capsule { - font-size: 0; - height: 0; - width: 100%; - transform: translateZ(0); - backface-visibility: hidden; - transition: transform 0.5s cubic-bezier(0.25, 0.8, 0.25, 1), height 0.5s cubic-bezier(0.25, 0.8, 0.25, 1); -} - -.iziToast-capsule, .iziToast-capsule * { - box-sizing: border-box; -} - -.iziToast-overlay { - display: block; - position: fixed; - top: -100px; - left: 0; - right: 0; - bottom: -100px; - z-index: 19891100; -} - -.iziToast { - display: inline-block; - clear: both; - position: relative; - font-family: 'Lato', Tahoma, Arial; - font-size: 14px; - padding: 8px 45px 9px 0; - background: #fff; - border-color: #fff; - width: 100%; - pointer-events: all; - cursor: default; - transform: translateX(0); - -webkit-touch-callout: none /* iOS Safari */; - -webkit-user-select: none /* Chrome/Safari/Opera */; - -khtml-user-select: none /* Konqueror */; - -moz-user-select: none /* Firefox */; - -ms-user-select: none /* Internet Explorer/Edge */; - user-select: none; - min-height: 45px; - box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); - max-width: 90%; - margin: 5px 0; - border-radius: 4px; -} - -.iziToast > .iziToast-progressbar { - position: absolute; - left: 0; - bottom: 0; - width: 100%; - z-index: 1; - background: rgba(255, 255, 255, 0.5); -} - -.iziToast > .iziToast-progressbar > div { - height: 2px; - width: 100%; - background: #dddddd; - border-radius: 0 0 3px 3px; -} - -.iziToast.iziToast-theme-dark > .iziToast-progressbar > div { - background: #fff; -} - -.iziToast.iziToast-balloon:before { - content: ''; - position: absolute; - right: 8px; - left: auto; - width: 0px; - height: 0px; - top: 100%; - border-right: 0px solid transparent; - border-left: 15px solid transparent; - border-top: 10px solid #000; - border-top-color: inherit; - border-radius: 0; -} - -.iziToast.iziToast-balloon .iziToast-progressbar { - top: 0; - bottom: auto; -} - -.iziToast.iziToast-balloon > div { - border-radius: 0 0 0 3px; -} - -.iziToast > .iziToast-cover { - position: absolute; - left: 0; - top: 0; - bottom: 0; - height: 100%; - margin: 0; - background-size: 100%; - background-position: 50% 50%; - background-repeat: no-repeat; -} - -.iziToast > .iziToast-close { - position: absolute; - right: 0; - top: 0; - border: 0; - padding: 0; - opacity: 0.6; - width: 42px; - height: 100%; - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAJPAAACTwBcGfW0QAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAD3SURBVFiF1ZdtDoMgDEBfdi4PwAX8vLFn0qT7wxantojKupmQmCi8R4tSACpgjC2ICCUbEBa8ingjsU1AXRBeR8aLN64FiknswN8CYefBBDQ3whuFESy7WyQMeC0ipEI0A+0FeBvHUFN8xPaUhAH/iKoWsnXHGegy4J0yxialOfaHJAz4bhRzQzgDvdGnz4GbAonZbCQMuBm1K/kcFu8Mp1N2cFFpsxsMuJqqbIGExGl4loARajU1twskJLLhIsID7+tvUoDnIjTg5T9DPH9EBrz8rxjPzciAl9+O8SxI8CzJ8CxKFfh3ynK8Dyb8wNHM/XDqejx/AtNyPO87tNybAAAAAElFTkSuQmCC") no-repeat 50% 50%; - background-size: 8px; - cursor: pointer; - outline: none; -} - -.iziToast > .iziToast-close:hover { - opacity: 1; -} - -.iziToast > .iziToast-body { - position: relative; - padding: 0 0 0 10px; - height: auto; - min-height: 28px; - margin: 0 0 0 15px; - text-align: left; -} - -.iziToast > .iziToast-body:after { - content: ""; - display: table; - clear: both; -} - -.iziToast > .iziToast-body .iziToast-texts { - margin: 6px 0; - padding-right: 2px; - display: inline-block; - float: left; -} - -.iziToast > .iziToast-body .iziToast-inputs { - min-height: 19px; - float: left; - margin: 3px -2px; -} - -.iziToast > .iziToast-body .iziToast-inputs > input:not([type=checkbox]):not([type=radio]), -.iziToast > .iziToast-body .iziToast-inputs > select { - position: relative; - display: inline-block; - margin: 2px; - border-radius: 2px; - border: 0; - padding: 4px 7px; - font-size: 13px; - letter-spacing: 0.02em; - background: rgba(0, 0, 0, 0.1); - color: #000; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); - min-height: 26px; -} - -.iziToast > .iziToast-body .iziToast-inputs > input:not([type=checkbox]):not([type=radio]):focus, -.iziToast > .iziToast-body .iziToast-inputs > select:focus { - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.6); -} - -.iziToast > .iziToast-body .iziToast-buttons { - min-height: 17px; - float: left; - margin: 4px 0 0 0; -} - -.iziToast > .iziToast-body .iziToast-buttons > a, -.iziToast > .iziToast-body .iziToast-buttons > button, -.iziToast > .iziToast-body .iziToast-buttons > input:not([type=checkbox]):not([type=radio]) { - position: relative; - display: inline-block; - margin: 2px; - border-radius: 2px; - border: 0; - padding: 5px 10px; - font-size: 12px; - letter-spacing: 0.02em; - cursor: pointer; - background: rgba(0, 0, 0, 0.1); - color: #555; -} - -.iziToast > .iziToast-body .iziToast-buttons > a:hover, -.iziToast > .iziToast-body .iziToast-buttons > button:hover, -.iziToast > .iziToast-body .iziToast-buttons > input:not([type=checkbox]):not([type=radio]):hover { - background: rgba(0, 0, 0, 0.15); -} - -.iziToast > .iziToast-body .iziToast-buttons > a:focus, -.iziToast > .iziToast-body .iziToast-buttons > button:focus, -.iziToast > .iziToast-body .iziToast-buttons > input:not([type=checkbox]):not([type=radio]):focus { - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.6); -} - -.iziToast > .iziToast-body .iziToast-buttons > a:active, -.iziToast > .iziToast-body .iziToast-buttons > button:active, -.iziToast > .iziToast-body .iziToast-buttons > input:not([type=checkbox]):not([type=radio]):active { - top: 1px; -} - -.iziToast > .iziToast-body .iziToast-icon { - height: 100%; - position: absolute; - left: 0; - top: 50%; - display: table; - font-size: 23px; - line-height: 24px; - margin-top: -11px; - color: #000; - width: 24px; - height: 24px; -} - -.iziToast > .iziToast-body .iziToast-icon.ico-info { - background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTU1NzcxMTk5MzYwIiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEwODAzIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTUxMiAyOC40MTZjLTI2Ny40Njg4IDAtNDg0LjI0OTYgMjE2LjgzMi00ODQuMjQ5NiA0ODQuMjQ5NiAwIDI2Ny40MTc2IDIxNi44MzIgNDg0LjI0OTYgNDg0LjI0OTYgNDg0LjI0OTYgMjY3LjQxNzYgMCA0ODQuMzAwOC0yMTYuODMyIDQ4NC4zMDA4LTQ4NC4yNDk2Qzk5Ni4zMDA4IDI0NS4yNDggNzc5LjQxNzYgMjguNDE2IDUxMiAyOC40MTZ6TTQ1NS41MjY0IDI0NS4wOTQ0QzQ3MC4zMjMyIDIyOS44ODggNDkwLjcwMDggMjIxLjMzNzYgNTExLjc5NTIgMjIxLjY0NDhjMjEuMTk2OC0wLjIwNDggNDEuNzc5MiA4LjI0MzIgNTYuNTI0OCAyMy40NDk2IDE1LjAwMTYgMTQuNzk2OCAyMy4yOTYgMzUuMTIzMiAyMy4wOTEyIDU2LjExNTIgMC4yMDQ4IDIxLjE5NjgtOC4yOTQ0IDQxLjU3NDQtMjMuMzk4NCA1Ni4yMTc2LTE0LjY5NDQgMTQuNjk0NC0zNC43MTM2IDIzLjA0LTU1LjM5ODQgMjMuMDRMNTExLjc5NTIgMzgwLjQ2NzJjLTIwLjk5MiAwLjIwNDgtNDEuMzY5Ni04LjE0MDgtNTYuMDY0LTIzLjE0MjRDNDQwLjY3ODQgMzQyLjY4MTYgNDMyLjMzMjggMzIyLjMwNCA0MzIuNTM3NiAzMDEuMjA5NiA0MzIuMzMyOCAyODAuMjE3NiA0NDAuNjc4NCAyNTkuODkxMiA0NTUuNTI2NCAyNDUuMDk0NHpNNjI3LjYwOTYgNzY4LjE1MzZsMCAxMy40MTQ0IDAgMjIuMjIwOEwzOTYuMjg4IDgwMy43ODg4bDAtNTcuMTM5MiAyMS42MDY0LTAuNzY4YzEwLjI0LTAuNDYwOCAxNC41OTItMi43MTM2IDE2Ljk5ODQtNC43NjE2bDEuMjI4OC01LjQyNzJjMC45NzI4LTUuNTgwOCAxLjYzODQtMTQuNDM4NCAxLjU4NzItMjUuOTA3Mkw0MzcuNzA4OCA1MDcuOTA0YzAuMjU2LTE3Ljc2NjQtMi4zNTUyLTI5LjkwMDgtMy40ODE2LTMyLjU2MzJsMCAwTDQzMS42MTYgNDc0LjA2MDhDNDI4Ljg1MTIgNDczLjA4OCA0MjMuOTM2IDQ3Mi4wNjQgNDE3LjE3NzYgNDcxLjY1NDRMMzk2LjI4OCA0NzAuMzc0NCAzOTYuMjg4IDQxMy40OTEybDE4OS40OTEyIDAgMCAyOTYuMjk0NGMtMC4zMDcyIDE3LjcxNTIgMi40MDY0IDI5Ljc5ODQgMy40MzA0IDMyLjU2MzJsMC4wNTEyIDAgMi43MTM2IDEuMTc3NmMyLjgxNiAwLjk3MjggNy43ODI0IDEuOTk2OCAxNC42OTQ0IDIuMzU1MmwyMC44ODk2IDEuMjhMNjI3LjU1ODQgNzY4LjE1MzZ6IiBwLWlkPSIxMDgwNCIgZmlsbD0iIzQwOUVGRiI+PC9wYXRoPjwvc3ZnPg==") no-repeat 50% 50%; - background-size: 85%; -} - -.iziToast > .iziToast-body .iziToast-icon.ico-warning { - background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTU1NzcwODczNzUzIiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjUxMTgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNTEyLjAyMzI3MyAxMDI0Qzc5NC43NjM2MzYgMTAyNCAxMDI0IDc5NC43ODY5MDkgMTAyNCA1MTEuOTc2NzI3IDEwMjQgMjI5LjIzNjM2NCA3OTQuNzg2OTA5LTAuMDIzMjczIDUxMi4wMjMyNzMtMC4wMjMyNzNTMCAyMjkuMjEzMDkxIDAgNTExLjk3NjcyN0MwIDc5NC43ODY5MDkgMjI5LjIzNjM2NCAxMDI0IDUxMi4wMjMyNzMgMTAyNE00NjkuMzQxMDkxIDc2OGMwLTIzLjU1MiAxOC45MjA3MjctNDIuNjU4OTA5IDQyLjcwNTQ1NS00Mi42NTg5MDkgMjMuNTUyIDAgNDIuNjU4OTA5IDE4LjkyMDcyNyA0Mi42NTg5MDkgNDIuNjU4OTA5IDAgMjMuNTc1MjczLTE4LjkyMDcyNyA0Mi43MDU0NTUtNDIuNjU4OTA5IDQyLjcwNTQ1NUM0ODguNDcxMjczIDgxMC43MDU0NTUgNDY5LjM0MTA5MSA3OTEuNzM4MTgyIDQ2OS4zNDEwOTEgNzY4TTQ2OS4zNDEwOTEgMjU1LjgxMzgxOGMwLTIzLjQ1ODkwOSAxOC45MjA3MjctNDIuNDcyNzI3IDQyLjcwNTQ1NS00Mi40NzI3MjcgMjMuNTUyIDAgNDIuNjU4OTA5IDE5LjQzMjcyNyA0Mi42NTg5MDkgNDIuNDcyNzI3bDAgMzQxLjczNjcyN2MwIDIzLjQ1ODkwOS0xOC45MjA3MjcgNDIuNDcyNzI3LTQyLjY1ODkwOSA0Mi40NzI3MjctMjMuNTc1MjczIDAtNDIuNzA1NDU1LTE5LjQzMjcyNy00Mi43MDU0NTUtNDIuNDcyNzI3TDQ2OS4zNDEwOTEgMjU1LjgxMzgxOHoiIHAtaWQ9IjUxMTkiIGZpbGw9IiNmZjk5MDAiPjwvcGF0aD48L3N2Zz4=") no-repeat 50% 50%; - background-size: 85%; -} - -.iziToast > .iziToast-body .iziToast-icon.ico-error { - background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTU1NzcwNDI1NDkwIiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEyNjUiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNTExLjk5NjQxOCAyMy41MjA2OTNjLTI2OS43NjcwNSAwLTQ4OC40NTQ3NDggMjE4LjY4ODcyMS00ODguNDU0NzQ4IDQ4OC40NTQ3NDggMCAyNjkuNzY4MDczIDIxOC42ODg3MjEgNDg4LjQ1MzcyNCA0ODguNDU0NzQ4IDQ4OC40NTM3MjQgMjY5Ljc2NjAyNyAwIDQ4OC40NTQ3NDgtMjE4LjY4NTY1MSA0ODguNDU0NzQ4LTQ4OC40NTM3MjRDMTAwMC40NTExNjYgMjQyLjIwOTQxNCA3ODEuNzYyNDQ1IDIzLjUyMDY5MyA1MTEuOTk2NDE4IDIzLjUyMDY5M3pNNzY5LjMzNDM5MSA3MTUuMTU1OTU2bC01NC4xNTY0MzQgNTQuMTU2NDM0TDUxMS45OTY0MTggNTY2LjEyOTgyOCAzMDguODEzODU2IDc2OS4zMTIzOWwtNTQuMTU1NDExLTU0LjE1NjQzNEw0NTcuODQxMDA4IDUxMS45NzU0NDEgMjU0LjY1ODQ0NiAzMDguNzkyODc4bDU0LjE1NTQxMS01NC4xNTU0MTFMNTExLjk5NjQxOCA0NTcuODIwMDNsMjAzLjE4MjU2Mi0yMDMuMTgyNTYyIDU0LjE1NjQzNCA1NC4xNTU0MTFMNTY2LjE1MTgyOSA1MTEuOTc1NDQxIDc2OS4zMzQzOTEgNzE1LjE1NTk1NnoiIHAtaWQ9IjEyNjYiIGZpbGw9IiNGNTZDNkMiPjwvcGF0aD48L3N2Zz4=") no-repeat 50% 50%; - background-size: 80%; -} - -.iziToast > .iziToast-body .iziToast-icon.ico-success { - background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTU1NzcwNTI2MjA3IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjQ5NjUiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMTAyNCA1MTEuOTk5NTAyYzAgMjgyLjc3MDU1Ny0yMjkuMjI5OTQxIDUxMi4wMDA0OTgtNTExLjk5OTUwMiA1MTIuMDAwNDk4LTI4Mi43Njk1NjEgMC01MTIuMDAwNDk4LTIyOS4yMjk5NDEtNTEyLjAwMDQ5OC01MTIuMDAwNDk4IDAtMjgyLjc2ODU2NiAyMjkuMjMwOTM2LTUxMS45OTk1MDIgNTEyLjAwMDQ5OC01MTEuOTk5NTAyQzc5NC43NjkwNjQgMCAxMDI0IDIyOS4yMzA5MzYgMTAyNCA1MTEuOTk5NTAyek03OTYuNTc3MDgxIDM3OC4zMTc3MTNsLTQ4LjQ1OTA1MS00OC40NTkwNTEtMjk3LjA3ODM4NyAyOTcuMDc3MzkyTDI3Ny4yNjc4NTIgNDUzLjE2NTI1OGwtNDguNDU4MDU2IDQ4LjQ1ODA1NiAyMjIuMjI4ODUxIDIyMi4yMzA4NDJMNzk2LjU3NzA4MSAzNzguMzE3NzEzeiIgcC1pZD0iNDk2NiIgZmlsbD0iIzY3YzIzYSI+PC9wYXRoPjwvc3ZnPg==") no-repeat 50% 50%; - background-size: 85%; -} - -.iziToast > .iziToast-body .iziToast-icon.ico-question { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfhCQkUEhFovxTxAAAEDklEQVRo3s2ZTWgTQRTHf03ipTRUqghNSgsRjHgQrFUQC6JgD1Kak3gQUUoPqRdBglf1oBehBws9Cn4cGk+1SOmh2upBxAYVoeJHrR9tgq0i1Cq0lqYeks7MbpPdmU00/c8hm9n33v/t7Nt5M2+qMEWQI0QIibZKRrQpHvLL2KI2wnQzzBKrDm2RIeKEy01dTYKUI7G1ZRknQXV5yP10kTYgly1NF/5S6duZ8ES+1iZodyaocrjXxE0OFeifYYgp0mRIkwFChAkRJsIxGgrIP+I0n82fvZW5dc/zkss0O2o1c5mX6/TmaDWl77RFe5YkUW3tKEmyFv0lOvXJ/fTYnmCEFuMRbGHEZqVHLyT9DFjUJmkzJl9DG5MWWwM6Llif/gF1nukB6nhgGwUXdFrE+wiURA8QoM9i0zEWWpXQW+ZsyeRrOMuyEo5Fv4gmy4dXPvqcC+pH2VRYaMwy+OWG+iLGCgm0W0Kv9HdvR8ASjmKCXpuK/bxiV/76A/v5UdDIZuKcJGjrnec5KZ7wwsWFOp6xPX/9mt2sqDe7FO+Kf/fXHBPPDWpdXGhTpLvUG9VKwh1xMDDjkvu+cNDFBTk7ptX1QkKZ850m3duu6fcrWxwdaFFyREJ2j4vOpKP6Du6z4uJCv8sYJIVkCnJBGGZaBONO3roY2EqNrSfIPi7SKP4fdXyNUd6I6wbSAHEl33tFLe+FlSsusnK90A0+oEPcuufZgXnOi+u9LrKSJQZQw6LwqBnv2CKsfHORbFbyQhA6xN/pEuihSdj56Co7LWRjPiKie6gkB2LiKuUqK5kiPkLiz1QJ9K1cNXBAMoUCigNpQ9IqDtMI1HKA4/jyvUsaoSyZLA5kjOjDPFZen8Ql5TsvBskUgjciIPSX3QAXC86DT7VWvlEh/xZ+ij9BDVWJ0QL0SbZq6QaFxoLPcXPmBLveLCc4wXdDK6s+6/vwhCSniFLPXW0NJe5UB8zKCsviqpc7vGPVQFcyZbyPwGD+d5ZnxmNWlhG4xSBZZjivjIWHEQgoDkSMjMwTo54569JSE5IpA7EyJSMTyGTUAUFlO1ZKOtaHTMeL1PhYYFTcihmY2cQ5+ullj7EDkiVfVez2sCTz8yiv84djhg7IJVk81xFWJlPdfHBG0flkRC/zQFZ+DSllNtfDdUsOMCliyGX5uOzU3ZhIXFDof4m1gDuKbEx0t2YS25gVGpcMnr/I1kx3c6piB8P8ZoqEwfMX3ZyCXynJTmq/U7NUXqfUzCbWL1wqVKBQUeESzQYoUlW8TAcVL1RCxUu1G6BYXfFyfQ4VPbDI4T8d2WzgQ6sc/vmxnTsqfHCZQzUJxm1h5dxS5Tu6lQgTZ0ipqRVqSwzTbbLHMt+c19iO76tsx/cLZub+Ali+tYC93olEAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTA5LTA5VDIwOjE4OjE3KzAyOjAwjKtfjgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0wOS0wOVQyMDoxODoxNyswMjowMP325zIAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC") no-repeat 50% 50%; - background-size: 85%; -} - -.iziToast > .iziToast-body .iziToast-icon.ico-load { - background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTQ1NTUyMzAyOTE3IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjQyNDAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNTEyIDY0YzI0Ny4yIDAgNDQ4IDIwMC44IDQ0OCA0NDhoLTY0YzAtMjEyLTE3Mi0zODQtMzg0LTM4NFY2NHogbTAgODMyYy0yMTIgMC0zODQtMTcyLTM4NC0zODRINjRjMCAyNDcuMiAyMDAuOCA0NDggNDQ4IDQ0OHYtNjR6IiBwLWlkPSI0MjQxIiBmaWxsPSIjMUU5RkZGIj48L3BhdGg+PC9zdmc+') no-repeat 50% 50%; - background-size: 85%; - animation: rotating 1.2s linear infinite -} - -@keyframes rotating { - from { - transform: rotate(0) - } - to { - transform: rotate(360deg) - } -} - -.iziToast > .iziToast-body .iziToast-title { - padding: 0; - margin: 0 0 10px 0; - line-height: 16px; - font-size: 14px; - text-align: left; - float: left; - color: #303133; - white-space: normal; -} - -.iziToast > .iziToast-body .iziToast-message { - padding: 0; - margin: 0; - font-size: 14px; - line-height: 16px; - text-align: left; - float: left; - color: #606266; - white-space: normal; -} - -.iziToast.iziToast-animateInside .iziToast-title, -.iziToast.iziToast-animateInside .iziToast-message, -.iziToast.iziToast-animateInside .iziToast-icon, -.iziToast.iziToast-animateInside .iziToast-buttons-child, -.iziToast.iziToast-animateInside .iziToast-inputs-child { - opacity: 0; -} - -.iziToast-target { - position: relative; - width: 100%; - margin: 0 auto; -} - -.iziToast-target .iziToast-capsule { - overflow: hidden; -} - -.iziToast-target .iziToast-capsule:after { - visibility: hidden; - display: block; - font-size: 0; - content: " "; - clear: both; - height: 0; -} - -.iziToast-target .iziToast-capsule .iziToast { - width: 100%; - float: left; -} - -.iziToast-wrapper { - z-index: 19891101; - position: fixed; - width: 100%; - pointer-events: none; - display: flex; - flex-direction: column; -} - -.iziToast-wrapper .iziToast.iziToast-balloon:before { - border-right: 0 solid transparent; - border-left: 15px solid transparent; - border-top: 10px solid #000; - border-top-color: inherit; - right: 8px; - left: auto; -} - -.iziToast-wrapper-bottomLeft { - left: 0; - bottom: 0; - text-align: left; -} - -.iziToast-wrapper-bottomLeft .iziToast.iziToast-balloon:before { - border-right: 15px solid transparent; - border-left: 0 solid transparent; - right: auto; - left: 8px; -} - -.iziToast-wrapper-bottomRight { - right: 0; - bottom: 0; - text-align: right; -} - -.iziToast-wrapper-topLeft { - left: 0; - top: 0; - text-align: left; -} - -.iziToast-wrapper-topLeft .iziToast.iziToast-balloon:before { - border-right: 15px solid transparent; - border-left: 0 solid transparent; - right: auto; - left: 8px; -} - -.iziToast-wrapper-topRight { - top: 0; - right: 0; - text-align: right; -} - -.iziToast-wrapper-topCenter { - top: 0; - left: 0; - right: 0; - text-align: center; -} - -.iziToast-wrapper-bottomCenter { - bottom: 0; - left: 0; - right: 0; - text-align: center; -} - -.iziToast-wrapper-center { - top: 0; - bottom: 0; - left: 0; - right: 0; - text-align: center; - justify-content: center; - flex-flow: column; - align-items: center; -} - -.iziToast-rtl { - direction: rtl; - padding: 8px 0 9px 45px; - font-family: Tahoma, 'Lato', Arial; -} - -.iziToast-rtl .iziToast-cover { - left: auto; - right: 0; -} - -.iziToast-rtl .iziToast-close { - right: auto; - left: 0; -} - -.iziToast-rtl .iziToast-body { - padding: 0 10px 0 0; - margin: 0 16px 0 0; - text-align: right; -} - -.iziToast-rtl .iziToast-body .iziToast-buttons, -.iziToast-rtl .iziToast-body .iziToast-inputs, -.iziToast-rtl .iziToast-body .iziToast-texts, -.iziToast-rtl .iziToast-body .iziToast-title, -.iziToast-rtl .iziToast-body .iziToast-message { - float: right; - text-align: right; -} - -.iziToast-rtl .iziToast-body .iziToast-icon { - left: auto; - right: 0; -} - -@media only screen and (min-width: 568px) { - .iziToast-wrapper { - padding: 10px 15px; - } - - .iziToast { - width: auto; - } - - .iziToast:not(.iziToast-rtl) .iziToast-cover { - border-radius: 3px 0 0 3px; - } - - .iziToast.iziToast-rtl .iziToast-cover { - border-radius: 0 3px 3px 0; - } - - .iziToast.iziToast-color-dark:after { - box-shadow: inset 0 -10px 20px -10px rgba(255, 255, 255, 0.3), 0 10px 10px -5px rgba(0, 0, 0, 0.25); - } - - .iziToast.iziToast-balloon .iziToast-progressbar { - background: transparent; - } - - .iziToast.iziToast-balloon:after { - box-shadow: 0 10px 10px -5px rgba(0, 0, 0, 0.25), inset 0 10px 20px -5px rgba(0, 0, 0, 0.25); - } - - .iziToast-target .iziToast:after { - box-shadow: inset 0 -10px 20px -10px rgba(0, 0, 0, 0.2), inset 0 0 5px rgba(0, 0, 0, 0.1); - } -} - -.iziToast.iziToast-theme-dark { - background: #565c70; - border-color: #565c70; -} - -.iziToast.iziToast-theme-dark .iziToast-title { - color: #fff; -} - -.iziToast.iziToast-theme-dark .iziToast-message { - color: rgba(255, 255, 255, 0.9); - font-weight: 300; -} - -.iziToast.iziToast-theme-dark .iziToast-close { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfgCR4OIQIPSao6AAAAwElEQVRIx72VUQ6EIAwFmz2XB+AConhjzqTJ7JeGKhLYlyx/BGdoBVpjIpMJNjgIZDKTkQHYmYfwmR2AfAqGFBcO2QjXZCd24bEggvd1KBx+xlwoDpYmvnBUUy68DYXD77ESr8WDtYqvxRex7a8oHP4Wo1Mkt5I68Mc+qYqv1h5OsZmZsQ3gj/02h6cO/KEYx29hu3R+VTTwz6D3TymIP1E8RvEiiVdZfEzicxYLiljSxKIqlnW5seitTW6uYnv/Aqh4whX3mEUrAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA5LTMwVDE0OjMzOjAyKzAyOjAwl6RMVgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wOS0zMFQxNDozMzowMiswMjowMOb59OoAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC") no-repeat 50% 50%; - background-size: 8px; -} - -.iziToast.iziToast-theme-dark .iziToast-icon { - color: #fff; -} - -.iziToast.iziToast-theme-dark .iziToast-icon.ico-info { - background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTQxNjQ5NjA1MTc2IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjM1MzIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNODUxLjE3MTU1NiA3MTcuOTM3Nzc4YzMuMjQyNjY3IDExLjk0NjY2NyAyLjg0NDQ0NCAyNC40NjIyMjItMS40MjIyMjMgMzYuNDA4ODg5YTYyLjkxOTExMSA2Mi45MTkxMTEgMCAwIDEtMjEuOTU5MTExIDI5LjUyNTMzMyA2NS4yNTE1NTYgNjUuMjUxNTU2IDAgMCAxLTM4LjkxMiAxMi41MTU1NTZIMTc4LjExOTExMWE2NC44NTMzMzMgNjQuODUzMzMzIDAgMCAxLTM4Ljc5ODIyMi0xMi41NzI0NDUgNjIuMjM2NDQ0IDYyLjIzNjQ0NCAwIDAgMS0yMi4wMTYtMjkuNTI1MzMzIDYwLjY0MzU1NiA2MC42NDM1NTYgMCAwIDEtMS4zNjUzMzMtMzYuNDA4ODg5YzMuNTg0LTEzLjE0MTMzMyAxMS40MzQ2NjctMjQuNTc2IDIyLjY5ODY2Ni0zMy4xMDkzMzNsNTguNDgxNzc4LTQ0LjAzMmE0MC43MzI0NDQgNDAuNzMyNDQ0IDAgMCAwIDE2LjQ5Nzc3OC0zMi43MTExMTJ2LTIwMy4wOTMzMzNjMC0zNS4yMTQyMjIgNy4xNjgtNjkuNTE4MjIyIDIxLjIxOTU1NS0xMDEuNzE3MzMzIDEzLjY1MzMzMy0zMS4xNzUxMTEgMzMuMTA5MzMzLTU5LjE2NDQ0NCA1Ny44NTYtODMuMTE0NjY3QTI2OC44NTY4ODkgMjY4Ljg1Njg4OSAwIDAgMSA0MTQuNzIgMTUyLjA2NHYtMjguNTAxMzMzQzQxNC43MiA4Ni44MTI0NDQgNDQ1LjYxMDY2NyA1Ni44ODg4ODkgNDgzLjU1NTU1NiA1Ni44ODg4ODljMzcuOTQ0ODg5IDAgNjguODM1NTU2IDI5LjkyMzU1NiA2OC44MzU1NTUgNjYuNjczNzc4djI4LjUwMTMzM2MxMi4zNDQ4ODkgMy4xODU3NzggMjQuNDYyMjIyIDcuMTY4IDM2LjIzODIyMiAxMi4wMDM1NTZhMjY4LjY4NjIyMiAyNjguNjg2MjIyIDAgMCAxIDg1Ljc4ODQ0NSA1Ni4wMzU1NTVjMjQuNzQ2NjY3IDI0LjAwNzExMSA0NC4yMDI2NjcgNTEuOTM5NTU2IDU3Ljc5OTExMSA4My4wNTc3NzggMTQuMTA4NDQ0IDMyLjMxMjg4OSAyMS4yMTk1NTYgNjYuNTYgMjEuMjE5NTU1IDEwMS44MzExMTF2MjAzLjA5MzMzM2MwIDEyLjg1Njg4OSA2LjAzMDIyMiAyNC44NjA0NDQgMTYuNTU0NjY3IDMyLjcxMTExMWw1OC40ODE3NzggNDQuMDMyYzExLjIwNzExMSA4LjUzMzMzMyAxOS4wNTc3NzggMTkuOTExMTExIDIyLjc1NTU1NSAzMy4wNTI0NDV6TTM5OC4yMjIyMjIgODU2LjE3Nzc3OFY4NTMuMzMzMzMzaDE3MC42NjY2Njd2Mi44NDQ0NDVDNTY4Ljg4ODg4OSA5MzUuOTM2IDUzMC42MDI2NjcgOTY3LjExMTExMSA0ODMuNTU1NTU2IDk2Ny4xMTExMTFTMzk4LjIyMjIyMiA5MzUuOTM2IDM5OC4yMjIyMjIgODU2LjE3Nzc3OHoiIHAtaWQ9IjM1MzMiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48L3N2Zz4=") no-repeat 50% 50%; - background-size: 85%; -} - -.iziToast.iziToast-theme-dark .iziToast-icon.ico-warning { - background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTQxNjUxMTE1OTQ4IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjUgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjUwOTYiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTI4LjEyNSIgaGVpZ2h0PSIxMjgiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTk4NC4wMjI5NTAwMiA3NDYuODc1NDk3NUw2NDEuOTY0NjA3NTIgMTMwLjM4MDY1Yy0zMC40OTE4NDI1LTU0Ljg2MTUwMjUtNzcuOTMxMzE1LTg2LjMzNTY3MjUtMTMwLjE0MzUxLTg2LjMzNTY3MjUtNTIuMjkxNTc1IDAtOTkuNzQwOTcgMzEuNTEzODYtMTMwLjE0MzUxIDg2LjQzNDg5NzVMMzkuOTc2NDU1MDIgNzQ2LjgyNTg4NUM5Ljk2MDg5MjUyIDgwMC45NjMwNDUgNy45MTY4NTc1MiA4NTguMDE3NDIgMzQuMzUwMzk3NTIgOTAzLjM1MzMyMjVjMjYuNTEyOTIgNDUuNDc0ODE3NSA3Ny4xOTcwNSA3MS41NjEwNyAxMzkuMDczNzYgNzEuNTYxMDdoNjc3LjIyMDU0NzVjNjEuOTA2NDc3NSAwIDExMi41OTA2MDc1LTI2LjA4NjI1MjUgMTM5LjAxNDIyNS03MS40OTE2MTI1IDI2LjQ4MzE1MjUtNDUuMjc2MzY3NSAyNC40MjkxOTUtMTAyLjM0MDY2NS01LjYzNTk4LTE1Ni41NDcyODI1ek05MTEuNzU3MzgyNTIgODU3Ljk5NzU3NWMtOS44OTI3MzI1IDE2Ljk4NzMyLTMyLjE1ODgyMjUgMjYuNzMxMjE1LTYxLjExMjY3NzUgMjYuNzMxMjE1SDE3My40MjQxNTc1MmMtMjguOTQzOTMyNSAwLTUxLjIyOTg2NzUtOS43NjM3NC02MS4xNjIyOS0yNi43OTA3NS0xMC4wMjE3MjUtMTcuMTg1NzctNy42MTA1NTc1LTQxLjc0Mzk1NzUgNi41ODg1NC02Ny4zNzM3NzVsMzQxLjcxMTA1NS02MTYuMzY1ODU1YzE0LjA2MDE4MjUtMjUuMzkxNjc3NSAzMi43NTQxNzI1LTM5Ljk1NzkwNzUgNTEuMjU5NjM1LTM5Ljk1NzkwNzUgMTguNDk1NTQgMCAzNy4xOTk0NTI1IDE0LjU2NjIzIDUxLjMwOTI0NzUgMzkuOTM4MDYyNWwzNDIuMDI4NTc1IDYxNi40NDUyMzVjMTQuMjI4ODY1IDI1LjY0OTY2MjUgMTYuNjQwMDMyNSA1MC4xODgwMDUgNi41OTg0NjI1IDY3LjM3Mzc3NXoiIGZpbGw9IiNmZmZmZmYiIHAtaWQ9IjUwOTciPjwvcGF0aD48cGF0aCBkPSJNNTEyLjAxOTU0NzUyIDYzMC4yODYxMjI1YTQ1LjA4Nzg0IDQ1LjA4Nzg0IDAgMCAwIDQ1LjA5Nzc2MjUtNDUuMDA4NDZWMzc0LjY1Mjc1NWE0NS4wNzc5MTc1IDQ1LjA3NzkxNzUgMCAwIDAtNDUuMDk3NzYyNS00NS4wMDg0NiA0NS4wODc4NCA0NS4wODc4NCAwIDAgMC00NS4wOTc3NjI1IDQ1LjAwODQ2djIxMC42MTQ5ODVhNDUuMDg3ODQgNDUuMDg3ODQgMCAwIDAgNDUuMDk3NzYyNSA0NS4wMTgzODI1ek01MTIuMDE5NTQ3NTIgNjc1LjM3Mzk2MjVhNjAuMTcwMDQgNjAuMTcwMDQgMCAwIDAtNjAuMTMwMzUgNjAuMTMwMzVjMCAzMy4xNDExNSAyNi45MTk3NDI1IDYwLjEzMDM1IDYwLjEzMDM1IDYwLjEzMDM1IDMzLjE0MTE1IDAgNjAuMTMwMzUtMjYuOTE5NzQyNSA2MC4xMzAzNS02MC4xMzAzNSAwLTMzLjE0MTE1LTI2LjkxOTc0MjUtNjAuMTMwMzUtNjAuMTMwMzUtNjAuMTMwMzV6IiBmaWxsPSIjZmZmZmZmIiBwLWlkPSI1MDk4Ij48L3BhdGg+PC9zdmc+") no-repeat 50% 50%; - background-size: 85%; -} - -.iziToast.iziToast-theme-dark .iziToast-icon.ico-error { - background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTQxNjUxMzE1NTQ3IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjY4MDYiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNzcyLjI2NjY2NyA4ODMuMmMyNS42IDI1LjYgNjQgMjUuNiA4OS42IDAgMjUuNi0yNS42IDI1LjYtNjQgMC04OS42TDIzMC40IDE2Mi4xMzMzMzNjLTI1LjYtMjUuNi02NC0yNS42LTg5LjYgMC0yNS42IDI1LjYtMjUuNiA2NCAwIDg5LjZsNjMxLjQ2NjY2NyA2MzEuNDY2NjY3eiIgcC1pZD0iNjgwNyIgZmlsbD0iI2ZmZmZmZiI+PC9wYXRoPjxwYXRoIGQ9Ik04NjEuODY2NjY3IDI1MS43MzMzMzNjMjUuNi0yNS42IDI1LjYtNjQgMC04OS42LTI1LjYtMjUuNi02NC0yNS42LTg5LjYgMEwxNDAuOCA3OTMuNmMtMjUuNiAyNS42LTI1LjYgNjQgMCA4OS42czY0IDI1LjYgODkuNiAwbDYzMS40NjY2NjctNjMxLjQ2NjY2N3oiIHAtaWQ9IjY4MDgiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48L3N2Zz4=") no-repeat 50% 50%; - background-size: 80%; -} - -.iziToast.iziToast-theme-dark .iziToast-icon.ico-success { - background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTQxNjUxMjQyNTMxIiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjYwMjMiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNDA0LjI1MTQyOCA4MDkuNjEwN2MtMTEuNjY0MTAyIDAtMjMuMzI3MTc5LTQuNDQ4NzgyLTMyLjIyNTc2Ny0xMy4zNDczNjlMODMuOTgwMDk4IDUwOC4yMTk4MTVjLTE3Ljc5ODE5OS0xNy43OTcxNzUtMTcuNzk4MTk5LTQ2LjY1MzMzNSAwLTY0LjQ1MTUzM3M0Ni42NTMzMzUtMTcuNzk4MTk5IDY0LjQ1MTUzNCAwbDI4OC4wNDQ1MzkgMjg4LjA0MjQ5MWMxNy43OTgxOTkgMTcuNzk4MTk5IDE3Ljc5ODE5OSA0Ni42NTQzNTkgMCA2NC40NTI1NTgtOC44OTc1NjMgOC44OTg1ODctMjAuNTYxNjY1IDEzLjM0NzM2OS0zMi4yMjQ3NDMgMTMuMzQ3MzY5eiIgcC1pZD0iNjAyNCIgZmlsbD0iI2ZmZmZmZiI+PC9wYXRoPjxwYXRoIGQ9Ik00MDQuMjczOTUzIDgwOS42MTE3MjNjLTExLjY2NDEwMiAwLTIzLjMyNjE1NS00LjQ0OTgwNi0zMi4yMjU3NjYtMTMuMzQ4MzkyLTE3Ljc5ODE5OS0xNy43OTcxNzUtMTcuNzk5MjIyLTQ2LjY1MzMzNS0wLjAwMTAyNC02NC40NTE1MzRMODc2LjEwMTgxMyAyMjcuNzM1NjQ2YzE3Ljc5NjE1MS0xNy43OTgxOTkgNDYuNjUzMzM1LTE3Ljc5OTIyMiA2NC40NTE1MzMtMC4wMDEwMjQgMTcuNzk4MTk5IDE3Ljc5NzE3NSAxNy43OTkyMjIgNDYuNjUzMzM1IDAuMDAxMDI0IDY0LjQ1MTUzM0w0MzYuNTAwNzQ0IDc5Ni4yNjIzMDdjLTguODk4NTg3IDguODk4NTg3LTIwLjU2MjY4OSAxMy4zNDk0MTctMzIuMjI2NzkxIDEzLjM0OTQxNnoiIHAtaWQ9IjYwMjUiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48L3N2Zz4=") no-repeat 50% 50%; - background-size: 85%; -} - -.iziToast.iziToast-theme-dark .iziToast-icon.ico-question { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfhCQkUEg18vki+AAAETUlEQVRo3s1ZTWhbRxD+VlIuxsLFCYVIIQYVopBDoK5bKDWUBupDMNbJ5FBKg/FBziUQdE9yaC+FHBrwsdCfQ9RTGoLxwWl+DqHEojUFFydxnB9bInZDqOsErBrr6yGvs/ueX97bldTKo4Pe7puZb3Z33s7srIIjMY1jyCEjP6ImvyX8pF64arSHznKC06wzijY5xSKz7YbuYokV2lODsyyxqz3gSY6z6gCuqcpxJluFH+Z8U+D/0jyHoxFUBHgfvsGHIS9WMIUlVFFDFTUAGWSRQRY5HMeBEP6b+Ew9dh/7INd2jGeO59kfKdXP85zbIbfGQVf4sYC3N1hm3lo6zzIbPvk6x+zBk7wQGMEMB5xncIAzAS0XrFySSV72iS1yyBVcdA1x0afrsoUJgdFfY2+z8ADAXl7zz0KcwJiPfZKpVuABgClO+nRG+QIHDdfb4qlWwUXvKW4Z7vi6L4J9vg+vbfCeCeZH2RfOdMOc/HbCA4BvIW6EMQz7XK/ltd+hP+VzR9mgva2YSfyGI17fA7ynnocqeQNFfIJ0oHsdv6CC2+rXGBN6cQdveY3fcVRtmy/HDete+93zy8jA8zV7YkwYMrjHzRddRsCdiVCwwmh6wg9iTNC7Y9XIF1iS7kbUpsvvGEdPuTfSgAEjRpR096x0liPFD/Eqt2NMuBQzB2XhrACAApjFsuQFh9XdGAX70B3oSuNdnMVBaX+sopYxjwVpHFBVACyKTXNoktjD+6Ll8xhenS9MAAkAI/Lux2YNUOs4I413Ypg1SgEAu7kpFvWjaeJe0fJHDGe/cNaZBkekudw8PMA+0fMwlndZeAsJ5KR/qhUDUJCnSiyvRsolkJHGUgvjH8QXDgZopEzKMKDqCKrwEQ4C6MH7GEXC665buLJG8hlQc4LP4paxfJrOqYVYYY2UARfEIazTbgDg2dB98GebzJd54b8L/iWNdLyooeR6CHyZ+6xk0yKxkYg6nEVSUG4VJ9QJ9cxRCxO+9WiOyvgUeexXP1hLGH5nGuBWVtiSp4vqe3VP0UFWI9Wan4Er3v8q7jjPWVtm4FtcQQMrOKO2nOQCM5AyDMi56FDrKHA/1nyppS1ppBpYaE8wciEjGI2AaeM41kI4doDX4XiT3Qm1gevyruCgZg9P8xIv8m1nCzTKq6oiJ9xTMiZ505P5m8cdZ0CnZMVXHVljM7WMBzxpyDxygtdxoCEFTaMIWbZU85UvBjgUMYy0fBaAF8V1Lj9qWQ1aMZ5f4k9r+AGMSkMP1vZoZih6k6sicc5h/OFHM9vDqU/VIU7zJZdYYsKGH4g4nAJMGiXZRds1pVMoZ69RM5vfkbh0qkBhsnS2RLMLilQdL9MBHS9UAh0v1e6CYnXHy/WeeCcvLDwl/9OVze69tPKM+M+v7eJN6OzFpWdEF0ucDbhVNFXadnVrmJFlkVNGTS2M6pzmhMvltfPhnN2B63sVuL7fcNP3D1TSk2ihosPrAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTA5LTA5VDIwOjE4OjEzKzAyOjAweOR7nQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0wOS0wOVQyMDoxODoxMyswMjowMAm5wyEAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC") no-repeat 50% 50%; - background-size: 85%; -} - -.iziToast.iziToast-theme-dark .iziToast-buttons > a, -.iziToast.iziToast-theme-dark .iziToast-buttons > button, -.iziToast.iziToast-theme-dark .iziToast-buttons > input { - color: #fff; - background: rgba(255, 255, 255, 0.1); -} - -.iziToast.iziToast-theme-dark .iziToast-buttons > a:hover, -.iziToast.iziToast-theme-dark .iziToast-buttons > button:hover, -.iziToast.iziToast-theme-dark .iziToast-buttons > input:hover { - background: rgba(255, 255, 255, 0.2); -} - -.iziToast.iziToast-theme-dark .iziToast-buttons > a:focus, -.iziToast.iziToast-theme-dark .iziToast-buttons > button:focus, -.iziToast.iziToast-theme-dark .iziToast-buttons > input:focus { - box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.6); -} - -.iziToast.iziToast-theme-dark.iziToast-color-red { - background: #F56C6C; - border-color: #F56C6C; -} - -.iziToast.iziToast-theme-dark.iziToast-color-orange { - background: #E6A23C; - border-color: #E6A23C; -} - -.iziToast.iziToast-theme-dark.iziToast-color-yellow { - background: rgba(255, 249, 178, 0.9); - border-color: rgba(255, 249, 178, 0.9); -} - -.iziToast.iziToast-theme-dark.iziToast-color-blue { - background: #409EFF; - border-color: #409EFF; -} - -.iziToast.iziToast-theme-dark.iziToast-color-green { - background: #67C23A; - border-color: #67C23A; -} - -.iziToast.iziToast-layout2 .iziToast-body .iziToast-texts, -.iziToast.iziToast-layout2 .iziToast-body .iziToast-message { - width: 100%; -} - -.iziToast.iziToast-layout3 { - border-radius: 2px; -} - -.iziToast.iziToast-layout3::after { - display: none; -} - -.iziToast.revealIn, -.iziToast .revealIn { - -webkit-animation: iziT-revealIn 1s cubic-bezier(0.25, 1.6, 0.25, 1) both; - -moz-animation: iziT-revealIn 1s cubic-bezier(0.25, 1.6, 0.25, 1) both; - animation: iziT-revealIn 1s cubic-bezier(0.25, 1.6, 0.25, 1) both; -} - -.iziToast.slideIn, -.iziToast .slideIn { - -webkit-animation: iziT-slideIn 1s cubic-bezier(0.16, 0.81, 0.32, 1) both; - -moz-animation: iziT-slideIn 1s cubic-bezier(0.16, 0.81, 0.32, 1) both; - animation: iziT-slideIn 1s cubic-bezier(0.16, 0.81, 0.32, 1) both; -} - -.iziToast.bounceInLeft { - -webkit-animation: iziT-bounceInLeft 0.7s ease-in-out both; - animation: iziT-bounceInLeft 0.7s ease-in-out both; -} - -.iziToast.bounceInRight { - -webkit-animation: iziT-bounceInRight 0.85s ease-in-out both; - animation: iziT-bounceInRight 0.85s ease-in-out both; -} - -.iziToast.bounceInDown { - -webkit-animation: iziT-bounceInDown 0.7s ease-in-out both; - animation: iziT-bounceInDown 0.7s ease-in-out both; -} - -.iziToast.bounceInUp { - -webkit-animation: iziT-bounceInUp 0.7s ease-in-out both; - animation: iziT-bounceInUp 0.7s ease-in-out both; -} - -.iziToast.fadeIn, -.iziToast .fadeIn { - -webkit-animation: iziT-fadeIn 0.5s ease both; - animation: iziT-fadeIn 0.5s ease both; -} - -.iziToast.fadeInUp { - -webkit-animation: iziT-fadeInUp 0.7s ease both; - animation: iziT-fadeInUp 0.7s ease both; -} - -.iziToast.fadeInDown { - -webkit-animation: iziT-fadeInDown 0.7s ease both; - animation: iziT-fadeInDown 0.7s ease both; -} - -.iziToast.fadeInLeft { - -webkit-animation: iziT-fadeInLeft 0.85s cubic-bezier(0.25, 0.8, 0.25, 1) both; - animation: iziT-fadeInLeft 0.85s cubic-bezier(0.25, 0.8, 0.25, 1) both; -} - -.iziToast.fadeInRight { - -webkit-animation: iziT-fadeInRight 0.85s cubic-bezier(0.25, 0.8, 0.25, 1) both; - animation: iziT-fadeInRight 0.85s cubic-bezier(0.25, 0.8, 0.25, 1) both; -} - -.iziToast.flipInX { - -webkit-animation: iziT-flipInX 0.85s cubic-bezier(0.35, 0, 0.25, 1) both; - animation: iziT-flipInX 0.85s cubic-bezier(0.35, 0, 0.25, 1) both; -} - -.iziToast.fadeOut { - -webkit-animation: iziT-fadeOut 0.7s ease both; - animation: iziT-fadeOut 0.7s ease both; -} - -.iziToast.fadeOutDown { - -webkit-animation: iziT-fadeOutDown 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; - animation: iziT-fadeOutDown 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; -} - -.iziToast.fadeOutUp { - -webkit-animation: iziT-fadeOutUp 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; - animation: iziT-fadeOutUp 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; -} - -.iziToast.fadeOutLeft { - -webkit-animation: iziT-fadeOutLeft 0.5s ease both; - animation: iziT-fadeOutLeft 0.5s ease both; -} - -.iziToast.fadeOutRight { - -webkit-animation: iziT-fadeOutRight 0.5s ease both; - animation: iziT-fadeOutRight 0.5s ease both; -} - -.iziToast.flipOutX { - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation: iziT-flipOutX 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; - animation: iziT-flipOutX 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; -} - -.iziToast-overlay.fadeIn { - -webkit-animation: iziT-fadeIn 0.5s ease both; - animation: iziT-fadeIn 0.5s ease both; -} - -.iziToast-overlay.fadeOut { - -webkit-animation: iziT-fadeOut 0.7s ease both; - animation: iziT-fadeOut 0.7s ease both; -} - -@-webkit-keyframes iziT-revealIn { - 0% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 1); - } - 100% { - opacity: 1; - } -} - -@-moz-keyframes iziT-revealIn { - 0% { - opacity: 0; - -moz-transform: scale3d(0.3, 0.3, 1); - } - 100% { - opacity: 1; - } -} - -@-webkit-keyframes iziT-slideIn { - 0% { - opacity: 0; - -webkit-transform: translateX(50px); - } - 100% { - opacity: 1; - -webkit-transform: translateX(0); - } -} - -@-moz-keyframes iziT-slideIn { - 0% { - opacity: 0; - -moz-transform: translateX(50px); - } - 100% { - opacity: 1; - -moz-transform: translateX(0); - } -} - -@-webkit-keyframes iziT-bounceInLeft { - 0% { - opacity: 0; - -webkit-transform: translateX(280px); - } - 50% { - opacity: 1; - -webkit-transform: translateX(-20px); - } - 70% { - -webkit-transform: translateX(10px); - } - 100% { - -webkit-transform: translateX(0); - } -} - -@-webkit-keyframes iziT-bounceInRight { - 0% { - opacity: 0; - -webkit-transform: translateX(-280px); - } - 50% { - opacity: 1; - -webkit-transform: translateX(20px); - } - 70% { - -webkit-transform: translateX(-10px); - } - 100% { - -webkit-transform: translateX(0); - } -} - -@-webkit-keyframes iziT-bounceInDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-200px); - } - 50% { - opacity: 1; - -webkit-transform: translateY(10px); - } - 70% { - -webkit-transform: translateY(-5px); - } - 100% { - -webkit-transform: translateY(0); - } -} - -@-webkit-keyframes iziT-bounceInUp { - 0% { - opacity: 0; - -webkit-transform: translateY(200px); - } - 50% { - opacity: 1; - -webkit-transform: translateY(-10px); - } - 70% { - -webkit-transform: translateY(5px); - } - 100% { - -webkit-transform: translateY(0); - } -} - -@-webkit-keyframes iziT-fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} - -@-webkit-keyframes iziT-fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-webkit-keyframes iziT-fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-webkit-keyframes iziT-fadeInLeft { - from { - opacity: 0; - -webkit-transform: translate3d(300px, 0, 0); - transform: translate3d(300px, 0, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-webkit-keyframes iziT-fadeInRight { - from { - opacity: 0; - -webkit-transform: translate3d(-300px, 0, 0); - transform: translate3d(-300px, 0, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-webkit-keyframes iziT-flipInX { - from { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - } - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@-webkit-keyframes iziT-fadeOut { - from { - opacity: 1; - } - to { - opacity: 0; - } -} - -@-webkit-keyframes iziT-fadeOutDown { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@-webkit-keyframes iziT-fadeOutUp { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@-webkit-keyframes iziT-fadeOutLeft { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(-200px, 0, 0); - transform: translate3d(-200px, 0, 0); - } -} - -@-webkit-keyframes iziT-fadeOutRight { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(200px, 0, 0); - transform: translate3d(200px, 0, 0); - } -} - -@-webkit-keyframes iziT-flipOutX { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - to { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -@-moz-keyframes iziT-revealIn { - 0% { - opacity: 0; - transform: scale3d(0.3, 0.3, 1); - } - 100% { - opacity: 1; - } -} - -@-webkit-keyframes iziT-revealIn { - 0% { - opacity: 0; - transform: scale3d(0.3, 0.3, 1); - } - 100% { - opacity: 1; - } -} - -@-o-keyframes iziT-revealIn { - 0% { - opacity: 0; - transform: scale3d(0.3, 0.3, 1); - } - 100% { - opacity: 1; - } -} - -@keyframes iziT-revealIn { - 0% { - opacity: 0; - transform: scale3d(0.3, 0.3, 1); - } - 100% { - opacity: 1; - } -} - -@-moz-keyframes iziT-slideIn { - 0% { - opacity: 0; - transform: translateX(50px); - } - 100% { - opacity: 1; - transform: translateX(0); - } -} - -@-webkit-keyframes iziT-slideIn { - 0% { - opacity: 0; - transform: translateX(50px); - } - 100% { - opacity: 1; - transform: translateX(0); - } -} - -@-o-keyframes iziT-slideIn { - 0% { - opacity: 0; - transform: translateX(50px); - } - 100% { - opacity: 1; - transform: translateX(0); - } -} - -@keyframes iziT-slideIn { - 0% { - opacity: 0; - transform: translateX(50px); - } - 100% { - opacity: 1; - transform: translateX(0); - } -} - -@-moz-keyframes iziT-bounceInLeft { - 0% { - opacity: 0; - transform: translateX(280px); - } - 50% { - opacity: 1; - transform: translateX(-20px); - } - 70% { - transform: translateX(10px); - } - 100% { - transform: translateX(0); - } -} - -@-webkit-keyframes iziT-bounceInLeft { - 0% { - opacity: 0; - transform: translateX(280px); - } - 50% { - opacity: 1; - transform: translateX(-20px); - } - 70% { - transform: translateX(10px); - } - 100% { - transform: translateX(0); - } -} - -@-o-keyframes iziT-bounceInLeft { - 0% { - opacity: 0; - transform: translateX(280px); - } - 50% { - opacity: 1; - transform: translateX(-20px); - } - 70% { - transform: translateX(10px); - } - 100% { - transform: translateX(0); - } -} - -@keyframes iziT-bounceInLeft { - 0% { - opacity: 0; - transform: translateX(280px); - } - 50% { - opacity: 1; - transform: translateX(-20px); - } - 70% { - transform: translateX(10px); - } - 100% { - transform: translateX(0); - } -} - -@-moz-keyframes iziT-bounceInRight { - 0% { - opacity: 0; - transform: translateX(-280px); - } - 50% { - opacity: 1; - transform: translateX(20px); - } - 70% { - transform: translateX(-10px); - } - 100% { - transform: translateX(0); - } -} - -@-webkit-keyframes iziT-bounceInRight { - 0% { - opacity: 0; - transform: translateX(-280px); - } - 50% { - opacity: 1; - transform: translateX(20px); - } - 70% { - transform: translateX(-10px); - } - 100% { - transform: translateX(0); - } -} - -@-o-keyframes iziT-bounceInRight { - 0% { - opacity: 0; - transform: translateX(-280px); - } - 50% { - opacity: 1; - transform: translateX(20px); - } - 70% { - transform: translateX(-10px); - } - 100% { - transform: translateX(0); - } -} - -@keyframes iziT-bounceInRight { - 0% { - opacity: 0; - transform: translateX(-280px); - } - 50% { - opacity: 1; - transform: translateX(20px); - } - 70% { - transform: translateX(-10px); - } - 100% { - transform: translateX(0); - } -} - -@-moz-keyframes iziT-bounceInDown { - 0% { - opacity: 0; - transform: translateY(-200px); - } - 50% { - opacity: 1; - transform: translateY(10px); - } - 70% { - transform: translateY(-5px); - } - 100% { - transform: translateY(0); - } -} - -@-webkit-keyframes iziT-bounceInDown { - 0% { - opacity: 0; - transform: translateY(-200px); - } - 50% { - opacity: 1; - transform: translateY(10px); - } - 70% { - transform: translateY(-5px); - } - 100% { - transform: translateY(0); - } -} - -@-o-keyframes iziT-bounceInDown { - 0% { - opacity: 0; - transform: translateY(-200px); - } - 50% { - opacity: 1; - transform: translateY(10px); - } - 70% { - transform: translateY(-5px); - } - 100% { - transform: translateY(0); - } -} - -@keyframes iziT-bounceInDown { - 0% { - opacity: 0; - transform: translateY(-200px); - } - 50% { - opacity: 1; - transform: translateY(10px); - } - 70% { - transform: translateY(-5px); - } - 100% { - transform: translateY(0); - } -} - -@-moz-keyframes iziT-bounceInUp { - 0% { - opacity: 0; - transform: translateY(200px); - } - 50% { - opacity: 1; - transform: translateY(-10px); - } - 70% { - transform: translateY(5px); - } - 100% { - transform: translateY(0); - } -} - -@-webkit-keyframes iziT-bounceInUp { - 0% { - opacity: 0; - transform: translateY(200px); - } - 50% { - opacity: 1; - transform: translateY(-10px); - } - 70% { - transform: translateY(5px); - } - 100% { - transform: translateY(0); - } -} - -@-o-keyframes iziT-bounceInUp { - 0% { - opacity: 0; - transform: translateY(200px); - } - 50% { - opacity: 1; - transform: translateY(-10px); - } - 70% { - transform: translateY(5px); - } - 100% { - transform: translateY(0); - } -} - -@keyframes iziT-bounceInUp { - 0% { - opacity: 0; - transform: translateY(200px); - } - 50% { - opacity: 1; - transform: translateY(-10px); - } - 70% { - transform: translateY(5px); - } - 100% { - transform: translateY(0); - } -} - -@-moz-keyframes iziT-fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} - -@-webkit-keyframes iziT-fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} - -@-o-keyframes iziT-fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} - -@keyframes iziT-fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} - -@-moz-keyframes iziT-fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-webkit-keyframes iziT-fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-o-keyframes iziT-fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes iziT-fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-moz-keyframes iziT-fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-webkit-keyframes iziT-fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-o-keyframes iziT-fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes iziT-fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-moz-keyframes iziT-fadeInLeft { - from { - opacity: 0; - -webkit-transform: translate3d(300px, 0, 0); - transform: translate3d(300px, 0, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-webkit-keyframes iziT-fadeInLeft { - from { - opacity: 0; - -webkit-transform: translate3d(300px, 0, 0); - transform: translate3d(300px, 0, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-o-keyframes iziT-fadeInLeft { - from { - opacity: 0; - -webkit-transform: translate3d(300px, 0, 0); - transform: translate3d(300px, 0, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes iziT-fadeInLeft { - from { - opacity: 0; - -webkit-transform: translate3d(300px, 0, 0); - transform: translate3d(300px, 0, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-moz-keyframes iziT-fadeInRight { - from { - opacity: 0; - -webkit-transform: translate3d(-300px, 0, 0); - transform: translate3d(-300px, 0, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-webkit-keyframes iziT-fadeInRight { - from { - opacity: 0; - -webkit-transform: translate3d(-300px, 0, 0); - transform: translate3d(-300px, 0, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-o-keyframes iziT-fadeInRight { - from { - opacity: 0; - -webkit-transform: translate3d(-300px, 0, 0); - transform: translate3d(-300px, 0, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes iziT-fadeInRight { - from { - opacity: 0; - -webkit-transform: translate3d(-300px, 0, 0); - transform: translate3d(-300px, 0, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@-moz-keyframes iziT-flipInX { - from { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - } - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@-webkit-keyframes iziT-flipInX { - from { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - } - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@-o-keyframes iziT-flipInX { - from { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - } - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@keyframes iziT-flipInX { - from { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - } - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@-moz-keyframes iziT-fadeOut { - from { - opacity: 1; - } - to { - opacity: 0; - } -} - -@-webkit-keyframes iziT-fadeOut { - from { - opacity: 1; - } - to { - opacity: 0; - } -} - -@-o-keyframes iziT-fadeOut { - from { - opacity: 1; - } - to { - opacity: 0; - } -} - -@keyframes iziT-fadeOut { - from { - opacity: 1; - } - to { - opacity: 0; - } -} - -@-moz-keyframes iziT-fadeOutDown { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@-webkit-keyframes iziT-fadeOutDown { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@-o-keyframes iziT-fadeOutDown { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@keyframes iziT-fadeOutDown { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@-moz-keyframes iziT-fadeOutUp { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@-webkit-keyframes iziT-fadeOutUp { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@-o-keyframes iziT-fadeOutUp { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@keyframes iziT-fadeOutUp { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@-moz-keyframes iziT-fadeOutLeft { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(-200px, 0, 0); - transform: translate3d(-200px, 0, 0); - } -} - -@-webkit-keyframes iziT-fadeOutLeft { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(-200px, 0, 0); - transform: translate3d(-200px, 0, 0); - } -} - -@-o-keyframes iziT-fadeOutLeft { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(-200px, 0, 0); - transform: translate3d(-200px, 0, 0); - } -} - -@keyframes iziT-fadeOutLeft { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(-200px, 0, 0); - transform: translate3d(-200px, 0, 0); - } -} - -@-moz-keyframes iziT-fadeOutRight { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(200px, 0, 0); - transform: translate3d(200px, 0, 0); - } -} - -@-webkit-keyframes iziT-fadeOutRight { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(200px, 0, 0); - transform: translate3d(200px, 0, 0); - } -} - -@-o-keyframes iziT-fadeOutRight { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(200px, 0, 0); - transform: translate3d(200px, 0, 0); - } -} - -@keyframes iziT-fadeOutRight { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(200px, 0, 0); - transform: translate3d(200px, 0, 0); - } -} - -@-moz-keyframes iziT-flipOutX { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - to { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -@-webkit-keyframes iziT-flipOutX { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - to { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -@-o-keyframes iziT-flipOutX { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - to { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -@keyframes iziT-flipOutX { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - to { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} \ No newline at end of file diff --git a/component/pear/css/module/topBar.css b/component/pear/css/module/topBar.css deleted file mode 100644 index c3d5bec..0000000 --- a/component/pear/css/module/topBar.css +++ /dev/null @@ -1,5 +0,0 @@ -.layui-fixbar li { - border-radius: 4px; - background-color: #5FB878; - color: white; -} diff --git a/component/pear/css/pear.css b/component/pear/css/pear.css index cd012a4..74c1fd7 100644 --- a/component/pear/css/pear.css +++ b/component/pear/css/pear.css @@ -1,26 +1,7 @@ @import url("../../layui/css/layui.css"); @import url("../font/iconfont.css"); - -@import url("module/iconPicker.css"); @import url("module/nprogress.css"); -@import url("module/message.css"); -@import url("module/cropper.css"); -@import url("module/loading.css"); -@import url("module/topBar.css"); -@import url("module/select.css"); @import url("module/layout.css"); -@import url("module/notice.css"); -@import url("module/button.css"); -@import url("module/frame.css"); -@import url("module/layer.css"); -@import url("module/toast.css"); @import url("module/menu.css"); -@import url("module/form.css"); -@import url("module/link.css"); -@import url("module/code.css"); -@import url("module/step.css"); -@import url("module/card.css"); -@import url("module/tab.css"); -@import url("module/tag.css"); -@import url("module/fullscreen.css"); -@import url("module/popover.min.css"); \ No newline at end of file +@import url("module/page.css"); +@import url("module/tabPage.css"); \ No newline at end of file diff --git a/component/pear/module/common.js b/component/pear/module/common.js deleted file mode 100644 index 50f2f15..0000000 --- a/component/pear/module/common.js +++ /dev/null @@ -1,114 +0,0 @@ -layui.define(['jquery', 'element', 'table'], function (exports) { - "use strict"; - - /** - * 常用封装类 - * */ - var MOD_NAME = 'common', - $ = layui.jquery, - table = layui.table, - element = layui.element; - - var common = new function () { - - /** - * 获取当前表格选中字段 - * @param obj 表格回调参数 - * @param field 要获取的字段 - * */ - this.checkField = function (obj, field) { - let data = table.checkStatus(obj.config.id).data; - if (data.length === 0) { - return ""; - } - let ids = ""; - for (let i = 0; i < data.length; i++) { - ids += data[i][field] + ","; - } - ids = ids.substring(0, ids.length - 1); - return ids; - } - - /** - * 当前是否为与移动端 - * */ - this.isModile = function () { - return $(window).width() <= 768; - } - - - /** - * 提交 json 数据 - * @param href 必选 提交接口 - * @param data 可选 提交数据 - * @param ajaxtype 可选 提交方式(默认为get) - * @param table 可选 刷新父级表 - * @param callback 可选 自定义回调函数 - * @param dataType 可选 返回数据类型 智能猜测(可以是xml, json, script, 或 html) - * @param is_async 可选 请求是否异步处理。默认是 true - * @param is_cache 可选 浏览器是否缓存被请求页面。默认是 true - * */ - this.submit = function (href, data, ajaxtype, table, callback, dataType, is_async, is_cache) { - if (data !== undefined) { - $.ajaxSetup({data: JSON.stringify(data)}); - } else { - $.ajaxSetup({data: ''}); - } - if (dataType !== undefined) { - $.ajaxSetup({dataType: dataType}); - } - if (is_async !== undefined) { - $.ajaxSetup({async: is_async}); - } - if (is_cache !== undefined) { - $.ajaxSetup({cache: is_cache}); - } - $.ajax({ - url: href, - contentType: 'application/json', - type: ajaxtype || 'get', - success: callback != null ? callback : function (result) { - if (result.code === 1) { - layer.msg(result.msg, {icon: 1, time: 1000}, function () { - let frameIndex = parent.layer.getFrameIndex(window.name); - if (frameIndex) { - parent.layer.close(frameIndex);//关闭当前页 - } - table && parent.layui.table.reload(table); - }); - } else { - layer.msg(result.msg, {icon: 2, time: 1000}); - } - }, - error: function (xhr) { - if (xhr.status === 401) { - layer.msg('权限不足,您无法访问受限资源或数据', {icon: 5}); - return; - } - if (xhr.status === 404) { - layer.msg('请求url地址错误,请确认后刷新重试', {icon: 5}); - return; - } - if (xhr.status === 419) { - layer.msg('长时间未操作,自动刷新后重试!', {icon: 5}); - setTimeout(function () { - window.location.reload(); - }, 2000); - return; - } - if (xhr.status === 429) { - layer.msg('尝试次数太多,请一分钟后再试', {icon: 5}); - return; - } - if (xhr.status === 500) { - layer.msg(xhr.responseJSON.message, {icon: 5}); - } - } - , complete: function (xhr, status) { - - } - }) - } - } - exports(MOD_NAME, common); -}); diff --git a/component/pear/module/convert.js b/component/pear/module/convert.js deleted file mode 100644 index 1f86ba5..0000000 --- a/component/pear/module/convert.js +++ /dev/null @@ -1,27 +0,0 @@ -layui.define(['jquery', 'element'], function(exports) { - "use strict"; - - /** - * 类 型 转 换 工 具 类 - * */ - var MOD_NAME = 'convert', - $ = layui.jquery, - element = layui.element; - - var convert = new function() { - - // image 转 base64 - this.imageToBase64 = function(img) { - var canvas = document.createElement("canvas"); - canvas.width = img.width; - canvas.height = img.height; - var ctx = canvas.getContext("2d"); - ctx.drawImage(img, 0, 0, img.width, img.height); - var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase(); - var dataURL = canvas.toDataURL("image/"+ext); - return dataURL; - } - - } - exports(MOD_NAME, convert); -}); diff --git a/component/pear/module/core/admin.js b/component/pear/module/core/admin.js index ed815fc..71da7f4 100644 --- a/component/pear/module/core/admin.js +++ b/component/pear/module/core/admin.js @@ -1,4 +1,4 @@ -layui.define(['messageCenter', 'table', 'jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'theme', 'fullscreen'], +layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'theme', 'fullscreen'], function (exports) { "use strict"; @@ -7,7 +7,6 @@ layui.define(['messageCenter', 'table', 'jquery', 'element', 'yaml', 'form', 'ta yaml = layui.yaml, page = layui.page, tabPage = layui.tabPage, - messageCenter = layui.messageCenter, menu = layui.menu, pearTheme = layui.theme, @@ -94,14 +93,6 @@ layui.define(['messageCenter', 'table', 'jquery', 'element', 'yaml', 'form', 'ta } } - this.messageRender = function (option) { - msgInstance = messageCenter.render({ - elem: '.message', - url: option.header.message, - height: '250px' - }); - } - this.logoRender = function (param) { $(".layui-logo .logo").attr("src", param.logo.image); $(".layui-logo .title").html(param.logo.title); @@ -368,12 +359,6 @@ layui.define(['messageCenter', 'table', 'jquery', 'element', 'yaml', 'form', 'ta this.logout = function (callback) { logout = callback; } - - this.message = function (callback) { - if (callback != null) { - msgInstance.click(callback); - } - } }; function refresh() { @@ -887,9 +872,6 @@ layui.define(['messageCenter', 'table', 'jquery', 'element', 'yaml', 'form', 'ta pearAdmin.bodyRender(param); pearAdmin.themeRender(param); pearAdmin.keepLoad(param); - if (param.header.message != false) { - pearAdmin.messageRender(param); - } } function getColorById(id) { diff --git a/component/pear/module/core/messageCenter.js b/component/pear/module/core/messageCenter.js deleted file mode 100644 index bdcf20f..0000000 --- a/component/pear/module/core/messageCenter.js +++ /dev/null @@ -1,127 +0,0 @@ -layui.define(['table', 'jquery', 'element'], function (exports) { - "use strict"; - - var MOD_NAME = 'messageCenter', - $ = layui.jquery, - element = layui.element; - - var message = function (opt) { - this.option = opt; - }; - - message.prototype.render = function (opt) { - var option = { - elem: opt.elem, - url: opt.url ? opt.url : false, - height: opt.height, - data: opt.data - } - if (option.url != false) { - option.data = getData(option.url); - var notice = createHtml(option); - $(option.elem).html(notice); - var targetNode = document.querySelector(option.elem + ' .pear-notice') - var mutationObserver = new MutationObserver(function (mutationsList, observer) { - if (getComputedStyle(targetNode).display !== 'none') { - var rect = targetNode.getBoundingClientRect(); - if (rect.right > $(window).width()) { - var elemRight = document.querySelector(option.elem).getBoundingClientRect().right; - var offsetRight = 20; - targetNode.style.right = elemRight - $(window).width() + offsetRight + 'px'; - targetNode.style.left = 'unset'; - } - } - }); - mutationObserver.observe(targetNode, { - attributes: true, - childList: false, - subtree: false, - attributeOldValue: false, - attributeFilter: ['class'] - }); - } - setTimeout(function () { - element.init(); - $(opt.elem + " li").click(function (e) { - $(this).siblings().removeClass('pear-this'); - $(this).addClass('pear-this'); - }) - }, 300); - return new message(option); - } - - message.prototype.click = function (callback) { - $("*[notice-id]").click(function (event) { - event.preventDefault(); - var id = $(this).attr("notice-id"); - var title = $(this).attr("notice-title"); - var context = $(this).attr("notice-context"); - var form = $(this).attr("notice-form"); - callback(id, title, context, form); - }) - } - - /** 刷 新 消 息 */ - message.prototype.reload = function () { - - } - - /** 同 步 请 求 获 取 数 据 */ - function getData(url) { - $.ajaxSettings.async = false; - var data = null; - $.get(url, function (result) { - data = result; - }); - $.ajaxSettings.async = true; - return data; - } - - function createHtml(option) { - - var count = 0; - var noticeTitle = '
                                        '; - var noticeContent = '
                                        '; - - - // 根据 data 便利数据 - $.each(option.data, function (i, item) { - - if (i === 0) { - noticeTitle += '
                                      • ' + item.title + '
                                      • '; - noticeContent += '
                                        '; - } else { - noticeTitle += '
                                      • ' + item.title + '
                                      • '; - noticeContent += '
                                        '; - } - - $.each(item.children, function (i, note) { - count++; - noticeContent += '
                                        ' ; - - if (note.avatar) - noticeContent +=''; - - noticeContent +='
                                        ' + note.title + '
                                        ' + - '
                                        ' + note.time + '
                                        ' + - '
                                        '; - }) - - if(item.children.length==0){ - noticeContent +='

                                        暂无数据

                                        '; - } - noticeContent += '
                                        '; - }) - - var notice = '
                                      • '; - noticeTitle += '
                                      '; - noticeContent += '
                                      '; - notice += noticeTitle; - notice += noticeContent; - notice += '
                                      '; - return notice; - } - - exports(MOD_NAME, new message()); -}) diff --git a/component/pear/module/core/tabPage.js b/component/pear/module/core/tabPage.js index ec9ab62..c6c4015 100644 --- a/component/pear/module/core/tabPage.js +++ b/component/pear/module/core/tabPage.js @@ -1,8 +1,9 @@ -layui.define(['jquery', 'element'], function (exports) { +layui.define(['jquery', 'element', 'dropdown'], function (exports) { "use strict"; var MOD_NAME = 'tabPage', $ = layui.jquery, + dropdown = layui.dropdown, element = layui.element; var tabPage = function (opt) { @@ -55,7 +56,7 @@ layui.define(['jquery', 'element'], function (exports) { rollPage("right", option); }) element.init(); - toolEvent(option); + $("#" + option.elem).width(opt.width); $("#" + option.elem).height(opt.height); $("#" + option.elem).css({ @@ -65,24 +66,79 @@ layui.define(['jquery', 'element'], function (exports) { option.success(sessionStorage.getItem(option.elem + "-pear-tab-data-current")); + dropdown.render({ + elem: `#${option.elem} .layui-icon-down`, + trigger: 'hover', + data: [{ + title: '关 闭 当 前', + id: 1 + }, { + title: '关 闭 其 他', + id: 2 + }, { + title: '关 闭 全 部', + id: 3 + }], + click: function (obj) { + + const id = obj.id; + + if (id === 1) { + var currentTab = $(".layui-tab[lay-filter='" + option.elem + + "'] .layui-tab-title .layui-this"); + if (currentTab.find("span").is(".able-close")) { + var currentId = currentTab.attr("lay-id"); + tabDelete(option.elem, currentId, option.closeEvent, option); + } else { + layer.msg("当前页面不允许关闭", { + icon: 3, + time: 1000 + }) + } + } else if (id === 2) { + var currentId = $(".layui-tab[lay-filter='" + option.elem + + "'] .layui-tab-title .layui-this").attr("lay-id"); + var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li"); + $.each(tabtitle, function (i) { + if ($(this).attr("lay-id") != currentId) { + if ($(this).find("span").is(".able-close")) { + tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, + option); + } + } + }) + } else { + var currentId = $(".layui-tab[lay-filter='" + option.elem + + "'] .layui-tab-title .layui-this").attr("lay-id"); + var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li"); + $.each(tabtitle, function (i) { + if ($(this).find("span").is(".able-close")) { + tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option); + } + }) + } + + } + }) + $("body .layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title").on("contextmenu", "li", function (e) { - // 获取当前元素位置 var top = e.clientY; var left = e.clientX; var menuWidth = 100; var currentId = $(this).attr("lay-id"); - var menu = "
                                      • 关闭当前
                                      • 关闭其他
                                      • 关闭所有
                                      "; + var menu = `
                                        +
                                      • 关闭当前
                                      • +
                                      • 关闭其他
                                      • +
                                      • 关闭所有
                                      • +
                                      `; contextTabDOM = $(this); var isOutsideBounds = (left + menuWidth) > $(window).width(); if (isOutsideBounds) { left = $(window).width() - menuWidth; } - // 初始化 + layer.open({ type: 1, title: false, @@ -94,7 +150,7 @@ layui.define(['jquery', 'element'], function (exports) { anim: false, isOutAnim: false, offset: [top, left], - content: menu, //iframe的url, + content: menu, success: function (layero, index) { layer.close(lastIndex); lastIndex = index; @@ -110,11 +166,9 @@ layui.define(['jquery', 'element'], function (exports) { clearTimeout(timer); }); - // 清除 item 右击 $(layero).on('contextmenu', function () { return false; }) - } }); return false; @@ -202,7 +256,7 @@ layui.define(['jquery', 'element'], function (exports) { tabDelete(elem, currentId, callback); } } - + /** * @since Pear Admin 4.0 * @@ -210,7 +264,9 @@ layui.define(['jquery', 'element'], function (exports) { */ tabPage.prototype.addTabOnly = function (opt, time) { - var title = `${opt.title}`; + var title = ` + ${opt.title} + `; if ($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]").length <= 0) { @@ -225,9 +281,7 @@ layui.define(['jquery', 'element'], function (exports) { success: function (data) { element.tabAdd(that.option.elem, { title: title, - content: '
                                      ' + data + '
                                      ', + content: `
                                      ${data}
                                      `, id: opt.id }); }, @@ -249,7 +303,7 @@ layui.define(['jquery', 'element'], function (exports) { isData = true; } }) - + if (isData == false) { if (this.option.tabMax != false) { @@ -394,23 +448,14 @@ layui.define(['jquery', 'element'], function (exports) { var control = ``; // 处 理 选 项 卡 头 部 var index = 0; $.each(option.data, function (i, item) { - - var titleItem = `
                                    • + + var titleItem = `
                                    • ${item.title} @@ -530,47 +575,6 @@ layui.define(['jquery', 'element'], function (exports) { }) } - function toolEvent(option) { - $("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeThis", function () { - var currentTab = $(".layui-tab[lay-filter='" + option.elem + - "'] .layui-tab-title .layui-this"); - if (currentTab.find("span").is(".able-close")) { - var currentId = currentTab.attr("lay-id"); - tabDelete(option.elem, currentId, option.closeEvent, option); - } else { - layer.msg("当前页面不允许关闭", { - icon: 3, - time: 800 - }) - } - }) - - $("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeOther", function () { - var currentId = $(".layui-tab[lay-filter='" + option.elem + - "'] .layui-tab-title .layui-this").attr("lay-id"); - var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li"); - $.each(tabtitle, function (i) { - if ($(this).attr("lay-id") != currentId) { - if ($(this).find("span").is(".able-close")) { - tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, - option); - } - } - }) - }) - - $("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeAll", function () { - var currentId = $(".layui-tab[lay-filter='" + option.elem + - "'] .layui-tab-title .layui-this").attr("lay-id"); - var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li"); - $.each(tabtitle, function (i) { - if ($(this).find("span").is(".able-close")) { - tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option); - } - }) - }) - } - function mousewheelAndTouchmoveHandler(option) { var $bodyTab = $("body .layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title") var $tabTitle = $('#' + option.elem + ' .layui-tab-title'); diff --git a/component/pear/module/count.js b/component/pear/module/count.js deleted file mode 100644 index c9a659f..0000000 --- a/component/pear/module/count.js +++ /dev/null @@ -1,37 +0,0 @@ -layui.define(['jquery', 'element'], function(exports) { - "use strict"; - - var MOD_NAME = 'count', - $ = layui.jquery, - element = layui.element; - - var count = new function() { - - this.up = function(targetEle, options) { - - options = options || {}; - - var $this = document.getElementById(targetEle), - time = options.time, - finalNum = options.num, - regulator = options.regulator, - step = finalNum / (time / regulator), - count = 0.00, - initial = 0; - - var timer = setInterval(function() { - count = count + step; - if (count >= finalNum) { - clearInterval(timer); - count = finalNum; - } - var t = count.toFixed(options.bit?options.bit:0);; - if (t == initial) return; - initial = t; - $this.innerHTML = initial; - }, 30); - } - - } - exports(MOD_NAME, count); -}); diff --git a/component/pear/module/popup.js b/component/pear/module/extends/popup.js similarity index 84% rename from component/pear/module/popup.js rename to component/pear/module/extends/popup.js index 1e8e952..769ed93 100644 --- a/component/pear/module/popup.js +++ b/component/pear/module/extends/popup.js @@ -1,10 +1,8 @@ -layui.define(['layer', 'jquery', 'element'], function(exports) { +layui.define(['layer'], function(exports) { "use strict"; var MOD_NAME = 'popup', - $ = layui.jquery, - layer = layui.layer, - element = layui.element; + layer = layui.layer; var popup = new function() { diff --git a/component/pear/module/extends/toast.js b/component/pear/module/extends/toast.js deleted file mode 100644 index 16b7087..0000000 --- a/component/pear/module/extends/toast.js +++ /dev/null @@ -1,1225 +0,0 @@ -(function (root, factory) { - if (typeof define === 'function' && define.amd) { - define([], factory(root)); - } else if (typeof exports === 'object') { - module.exports = factory(root); - } else if (window.layui && layui.define) { - layui.define(function (exports) { - exports('toast', factory(root)) - }) - } else { - root.iziToast = factory(root); - } -})(typeof global !== 'undefined' ? global : window || this.window || this.global, function (root) { - - 'use strict'; - - var $iziToast = {}, - PLUGIN_NAME = 'iziToast', - BODY = document.querySelector('body'), - ISMOBILE = (/Mobi/.test(navigator.userAgent)) ? true : false, - ISCHROME = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor), - ISFIREFOX = typeof InstallTrigger !== 'undefined', - ACCEPTSTOUCH = 'ontouchstart' in document.documentElement, - POSITIONS = ['bottomRight', 'bottomLeft', 'bottomCenter', 'topRight', 'topLeft', 'topCenter', 'center'], - THEMES = { - info: { - color: 'blue', - icon: 'ico-info' - }, - success: { - color: 'green', - icon: 'ico-success' - }, - warning: { - color: 'orange', - icon: 'ico-warning' - }, - error: { - color: 'red', - icon: 'ico-error' - }, - question: { - color: 'yellow', - icon: 'ico-question' - } - }, - MOBILEWIDTH = 568, - CONFIG = {}; - - $iziToast.children = {}; - - // Default settings - var defaults = { - id: null, - class: '', - title: '', - titleColor: '', - titleSize: '', - titleLineHeight: '', - message: '', - messageColor: '', - messageSize: '', - messageLineHeight: '', - backgroundColor: '', - theme: 'light', // dark - color: '', // blue, red, green, yellow - icon: '', - iconText: '', - iconColor: '', - iconUrl: null, - image: '', - imageWidth: 50, - maxWidth: null, - zindex: null, - layout: 2, - balloon: false, - close: true, - closeOnEscape: false, - closeOnClick: false, - displayMode: 0, - position: 'topCenter', // bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter, center - target: '', - targetFirst: true, - timeout: 3000, // 默认3秒 - rtl: false, - animateInside: false, // 动画效果 - drag: true, - pauseOnHover: true, - resetOnHover: false, - progressBar: false, - progressBarColor: '', - progressBarEasing: 'linear', - overlay: false, - overlayClose: false, - overlayColor: 'rgba(0, 0, 0, 0.6)', - transitionIn: 'fadeInDown', // bounceInLeft, bounceInRight, bounceInUp, bounceInDown, fadeIn, fadeInDown, fadeInUp, fadeInLeft, fadeInRight, flipInX - transitionOut: 'fadeOut', // fadeOut, fadeOutUp, fadeOutDown, fadeOutLeft, fadeOutRight, flipOutX - transitionInMobile: 'bounceInDown', - transitionOutMobile: 'fadeOutUp', - buttons: {}, - inputs: {}, - onOpening: function () { }, - onOpened: function () { }, - onClosing: function () { }, - onClosed: function () { } - }; - - if (!('remove' in Element.prototype)) { - Element.prototype.remove = function () { - if (this.parentNode) { - this.parentNode.removeChild(this); - } - }; - } - - if (typeof window.CustomEvent !== 'function') { - var CustomEventPolyfill = function (event, params) { - params = params || { bubbles: false, cancelable: false, detail: undefined }; - var evt = document.createEvent('CustomEvent'); - evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); - return evt; - }; - - CustomEventPolyfill.prototype = window.Event.prototype; - - window.CustomEvent = CustomEventPolyfill; - } - - var forEach = function (collection, callback, scope) { - if (Object.prototype.toString.call(collection) === '[object Object]') { - for (var prop in collection) { - if (Object.prototype.hasOwnProperty.call(collection, prop)) { - callback.call(scope, collection[prop], prop, collection); - } - } - } else { - if (collection) { - for (var i = 0, len = collection.length; i < len; i++) { - callback.call(scope, collection[i], i, collection); - } - } - } - }; - - var extend = function (defaults, options) { - var extended = {}; - forEach(defaults, function (value, prop) { - extended[prop] = defaults[prop]; - }); - forEach(options, function (value, prop) { - extended[prop] = options[prop]; - }); - return extended; - }; - - var createFragElem = function (htmlStr) { - var frag = document.createDocumentFragment(), - temp = document.createElement('div'); - temp.innerHTML = htmlStr; - while (temp.firstChild) { - frag.appendChild(temp.firstChild); - } - return frag; - }; - - var generateId = function (params) { - var newId = btoa(encodeURIComponent(params)); - return newId.replace(/=/g, ""); - }; - - var isColor = function (color) { - if (color.substring(0, 1) == '#' || color.substring(0, 3) == 'rgb' || color.substring(0, 3) == 'hsl') { - return true; - } else { - return false; - } - }; - - var isBase64 = function (str) { - try { - return btoa(atob(str)) == str; - } catch (err) { - return false; - } - }; - - var drag = function () { - - return { - move: function (toast, instance, settings, xpos) { - - var opacity, - opacityRange = 0.3, - distance = 180; - - if (xpos !== 0) { - - toast.classList.add(PLUGIN_NAME + '-dragged'); - - toast.style.transform = 'translateX(' + xpos + 'px)'; - - if (xpos > 0) { - opacity = (distance - xpos) / distance; - if (opacity < opacityRange) { - instance.hide(extend(settings, { transitionOut: 'fadeOutRight', transitionOutMobile: 'fadeOutRight' }), toast, 'drag'); - } - } else { - opacity = (distance + xpos) / distance; - if (opacity < opacityRange) { - instance.hide(extend(settings, { transitionOut: 'fadeOutLeft', transitionOutMobile: 'fadeOutLeft' }), toast, 'drag'); - } - } - toast.style.opacity = opacity; - - if (opacity < opacityRange) { - - if (ISCHROME || ISFIREFOX) - toast.style.left = xpos + 'px'; - - toast.parentNode.style.opacity = opacityRange; - - this.stopMoving(toast, null); - } - } - - - }, - startMoving: function (toast, instance, settings, e) { - - e = e || window.event; - var posX = ((ACCEPTSTOUCH) ? e.touches[0].clientX : e.clientX), - toastLeft = toast.style.transform.replace('px)', ''); - toastLeft = toastLeft.replace('translateX(', ''); - var offsetX = posX - toastLeft; - - if (settings.transitionIn) { - toast.classList.remove(settings.transitionIn); - } - if (settings.transitionInMobile) { - toast.classList.remove(settings.transitionInMobile); - } - toast.style.transition = ''; - - if (ACCEPTSTOUCH) { - document.ontouchmove = function (e) { - e.preventDefault(); - e = e || window.event; - var posX = e.touches[0].clientX, - finalX = posX - offsetX; - drag.move(toast, instance, settings, finalX); - }; - } else { - document.onmousemove = function (e) { - e.preventDefault(); - e = e || window.event; - var posX = e.clientX, - finalX = posX - offsetX; - drag.move(toast, instance, settings, finalX); - }; - } - - }, - stopMoving: function (toast, e) { - - if (ACCEPTSTOUCH) { - document.ontouchmove = function () { }; - } else { - document.onmousemove = function () { }; - } - - toast.style.opacity = ''; - toast.style.transform = ''; - - if (toast.classList.contains(PLUGIN_NAME + '-dragged')) { - - toast.classList.remove(PLUGIN_NAME + '-dragged'); - - toast.style.transition = 'transform 0.4s ease, opacity 0.4s ease'; - setTimeout(function () { - toast.style.transition = ''; - }, 400); - } - - } - }; - - }(); - - $iziToast.setSetting = function (ref, option, value) { - - $iziToast.children[ref][option] = value; - - }; - - $iziToast.getSetting = function (ref, option) { - - return $iziToast.children[ref][option]; - - }; - - $iziToast.destroy = function () { - - forEach(document.querySelectorAll('.' + PLUGIN_NAME + '-overlay'), function (element, index) { - element.remove(); - }); - - forEach(document.querySelectorAll('.' + PLUGIN_NAME + '-wrapper'), function (element, index) { - element.remove(); - }); - - forEach(document.querySelectorAll('.' + PLUGIN_NAME), function (element, index) { - element.remove(); - }); - - this.children = {}; - - // Remove event listeners - document.removeEventListener(PLUGIN_NAME + '-opened', {}, false); - document.removeEventListener(PLUGIN_NAME + '-opening', {}, false); - document.removeEventListener(PLUGIN_NAME + '-closing', {}, false); - document.removeEventListener(PLUGIN_NAME + '-closed', {}, false); - document.removeEventListener('keyup', {}, false); - - // Reset variables - CONFIG = {}; - }; - - /** - * Initialize Plugin - * @public - * @param {Object} options User settings - */ - $iziToast.settings = function (options) { - - // Destroy any existing initializations - $iziToast.destroy(); - - CONFIG = options; - defaults = extend(defaults, options || {}); - }; - - - /** - * Building themes functions. - * @public - * @param {Object} options User settings - */ - forEach(THEMES, function (theme, name) { - - $iziToast[name] = function (options) { - - var settings = extend(CONFIG, options || {}); - settings = extend(theme, settings || {}); - - this.show(settings); - }; - - }); - - - /** - * Do the calculation to move the progress bar - * @private - */ - $iziToast.progress = function (options, $toast, callback) { - - - var that = this, - ref = $toast.getAttribute('data-iziToast-ref'), - settings = extend(this.children[ref], options || {}), - $elem = $toast.querySelector('.' + PLUGIN_NAME + '-progressbar div'); - - return { - start: function () { - - if (typeof settings.time.REMAINING == 'undefined') { - - $toast.classList.remove(PLUGIN_NAME + '-reseted'); - - if ($elem !== null) { - $elem.style.transition = 'width ' + settings.timeout + 'ms ' + settings.progressBarEasing; - $elem.style.width = '0%'; - } - - settings.time.START = new Date().getTime(); - settings.time.END = settings.time.START + settings.timeout; - settings.time.TIMER = setTimeout(function () { - - clearTimeout(settings.time.TIMER); - - if (!$toast.classList.contains(PLUGIN_NAME + '-closing')) { - - that.hide(settings, $toast, 'timeout'); - - if (typeof callback === 'function') { - callback.apply(that); - } - } - - }, settings.timeout); - that.setSetting(ref, 'time', settings.time); - } - }, - pause: function () { - - if (typeof settings.time.START !== 'undefined' && !$toast.classList.contains(PLUGIN_NAME + '-paused') && !$toast.classList.contains(PLUGIN_NAME + '-reseted')) { - - $toast.classList.add(PLUGIN_NAME + '-paused'); - - settings.time.REMAINING = settings.time.END - new Date().getTime(); - - clearTimeout(settings.time.TIMER); - - that.setSetting(ref, 'time', settings.time); - - if ($elem !== null) { - var computedStyle = window.getComputedStyle($elem), - propertyWidth = computedStyle.getPropertyValue('width'); - - $elem.style.transition = 'none'; - $elem.style.width = propertyWidth; - } - - if (typeof callback === 'function') { - setTimeout(function () { - callback.apply(that); - }, 10); - } - } - }, - resume: function () { - - if (typeof settings.time.REMAINING !== 'undefined') { - - $toast.classList.remove(PLUGIN_NAME + '-paused'); - - if ($elem !== null) { - $elem.style.transition = 'width ' + settings.time.REMAINING + 'ms ' + settings.progressBarEasing; - $elem.style.width = '0%'; - } - - settings.time.END = new Date().getTime() + settings.time.REMAINING; - settings.time.TIMER = setTimeout(function () { - - clearTimeout(settings.time.TIMER); - - if (!$toast.classList.contains(PLUGIN_NAME + '-closing')) { - - that.hide(settings, $toast, 'timeout'); - - if (typeof callback === 'function') { - callback.apply(that); - } - } - - - }, settings.time.REMAINING); - - that.setSetting(ref, 'time', settings.time); - } else { - this.start(); - } - }, - reset: function () { - - clearTimeout(settings.time.TIMER); - - delete settings.time.REMAINING; - - that.setSetting(ref, 'time', settings.time); - - $toast.classList.add(PLUGIN_NAME + '-reseted'); - - $toast.classList.remove(PLUGIN_NAME + '-paused'); - - if ($elem !== null) { - $elem.style.transition = 'none'; - $elem.style.width = '100%'; - } - - if (typeof callback === 'function') { - setTimeout(function () { - callback.apply(that); - }, 10); - } - } - }; - - }; - - - /** - * Close the specific Toast - * @public - * @param {Object} options User settings - */ - $iziToast.hide = function (options, $toast, closedBy) { - - if (typeof $toast != 'object') { - $toast = document.querySelector($toast); - } - - var that = this, - settings = extend(this.children[$toast.getAttribute('data-iziToast-ref')], options || {}); - settings.closedBy = closedBy || null; - - delete settings.time.REMAINING; - - $toast.classList.add(PLUGIN_NAME + '-closing'); - - // Overlay - (function () { - - var $overlay = document.querySelector('.' + PLUGIN_NAME + '-overlay'); - if ($overlay !== null) { - var refs = $overlay.getAttribute('data-iziToast-ref'); - refs = refs.split(','); - var index = refs.indexOf(String(settings.ref)); - - if (index !== -1) { - refs.splice(index, 1); - } - $overlay.setAttribute('data-iziToast-ref', refs.join()); - - if (refs.length === 0) { - $overlay.classList.remove('fadeIn'); - $overlay.classList.add('fadeOut'); - setTimeout(function () { - $overlay.remove(); - }, 700); - } - } - - })(); - - if (settings.transitionIn) { - $toast.classList.remove(settings.transitionIn); - } - - if (settings.transitionInMobile) { - $toast.classList.remove(settings.transitionInMobile); - } - - if (ISMOBILE || window.innerWidth <= MOBILEWIDTH) { - if (settings.transitionOutMobile) - $toast.classList.add(settings.transitionOutMobile); - } else { - if (settings.transitionOut) - $toast.classList.add(settings.transitionOut); - } - var H = $toast.parentNode.offsetHeight; - $toast.parentNode.style.height = H + 'px'; - $toast.style.pointerEvents = 'none'; - - if (!ISMOBILE || window.innerWidth > MOBILEWIDTH) { - $toast.parentNode.style.transitionDelay = '0.2s'; - } - - try { - var event = new CustomEvent(PLUGIN_NAME + '-closing', { detail: settings, bubbles: true, cancelable: true }); - document.dispatchEvent(event); - } catch (ex) { - console.warn(ex); - } - - setTimeout(function () { - - $toast.parentNode.style.height = '0px'; - $toast.parentNode.style.overflow = ''; - - setTimeout(function () { - - delete that.children[settings.ref]; - - $toast.parentNode.remove(); - - try { - var event = new CustomEvent(PLUGIN_NAME + '-closed', { detail: settings, bubbles: true, cancelable: true }); - document.dispatchEvent(event); - } catch (ex) { - console.warn(ex); - } - - if (typeof settings.onClosed !== 'undefined') { - settings.onClosed.apply(null, [settings, $toast, closedBy]); - } - - }, 1000); - }, 200); - - - if (typeof settings.onClosing !== 'undefined') { - settings.onClosing.apply(null, [settings, $toast, closedBy]); - } - }; - - /** - * Create and show the Toast - * @public - * @param {Object} options User settings - */ - $iziToast.show = function (options) { - - var that = this; - - // Merge user options with defaults - var settings = extend(CONFIG, options || {}); - settings = extend(defaults, settings); - settings.time = {}; - - if (settings.id === null) { - settings.id = generateId(settings.title + settings.message + settings.color); - } - - if (settings.displayMode === 1 || settings.displayMode == 'once') { - try { - if (document.querySelectorAll('.' + PLUGIN_NAME + '#' + settings.id).length > 0) { - return false; - } - } catch (exc) { - console.warn('[' + PLUGIN_NAME + '] Could not find an element with this selector: ' + '#' + settings.id + '. Try to set an valid id.'); - } - } - - if (settings.displayMode === 2 || settings.displayMode == 'replace') { - try { - forEach(document.querySelectorAll('.' + PLUGIN_NAME + '#' + settings.id), function (element, index) { - that.hide(settings, element, 'replaced'); - }); - } catch (exc) { - console.warn('[' + PLUGIN_NAME + '] Could not find an element with this selector: ' + '#' + settings.id + '. Try to set an valid id.'); - } - } - - settings.ref = new Date().getTime() + Math.floor((Math.random() * 10000000) + 1); - - $iziToast.children[settings.ref] = settings; - - var $DOM = { - body: document.querySelector('body'), - overlay: document.createElement('div'), - toast: document.createElement('div'), - toastBody: document.createElement('div'), - toastTexts: document.createElement('div'), - toastCapsule: document.createElement('div'), - cover: document.createElement('div'), - buttons: document.createElement('div'), - inputs: document.createElement('div'), - icon: !settings.iconUrl ? document.createElement('i') : document.createElement('img'), - wrapper: null - }; - - $DOM.toast.setAttribute('data-iziToast-ref', settings.ref); - $DOM.toast.appendChild($DOM.toastBody); - $DOM.toastCapsule.appendChild($DOM.toast); - - // CSS Settings - (function () { - - $DOM.toast.classList.add(PLUGIN_NAME); - $DOM.toast.classList.add(PLUGIN_NAME + '-opening'); - $DOM.toastCapsule.classList.add(PLUGIN_NAME + '-capsule'); - $DOM.toastBody.classList.add(PLUGIN_NAME + '-body'); - $DOM.toastTexts.classList.add(PLUGIN_NAME + '-texts'); - - if (ISMOBILE || window.innerWidth <= MOBILEWIDTH) { - if (settings.transitionInMobile) - $DOM.toast.classList.add(settings.transitionInMobile); - } else { - if (settings.transitionIn) - $DOM.toast.classList.add(settings.transitionIn); - } - - if (settings.class) { - var classes = settings.class.split(' '); - forEach(classes, function (value, index) { - $DOM.toast.classList.add(value); - }); - } - - if (settings.id) { $DOM.toast.id = settings.id; } - - if (settings.rtl) { - $DOM.toast.classList.add(PLUGIN_NAME + '-rtl'); - $DOM.toast.setAttribute('dir', 'rtl'); - } - - if (settings.layout > 1) { $DOM.toast.classList.add(PLUGIN_NAME + '-layout' + settings.layout); } - - if (settings.balloon) { $DOM.toast.classList.add(PLUGIN_NAME + '-balloon'); } - - if (settings.maxWidth) { - if (!isNaN(settings.maxWidth)) { - $DOM.toast.style.maxWidth = settings.maxWidth + 'px'; - } else { - $DOM.toast.style.maxWidth = settings.maxWidth; - } - } - - if (settings.theme !== '' || settings.theme !== 'light') { - - $DOM.toast.classList.add(PLUGIN_NAME + '-theme-' + settings.theme); - } - - if (settings.color) { //#, rgb, rgba, hsl - - if (isColor(settings.color)) { - $DOM.toast.style.background = settings.color; - } else { - $DOM.toast.classList.add(PLUGIN_NAME + '-color-' + settings.color); - } - } - - if (settings.backgroundColor) { - $DOM.toast.style.background = settings.backgroundColor; - if (settings.balloon) { - $DOM.toast.style.borderColor = settings.backgroundColor; - } - } - })(); - - // Cover image - (function () { - if (settings.image) { - $DOM.cover.classList.add(PLUGIN_NAME + '-cover'); - $DOM.cover.style.width = settings.imageWidth + 'px'; - - if (isBase64(settings.image.replace(/ /g, ''))) { - $DOM.cover.style.backgroundImage = 'url(data:image/png;base64,' + settings.image.replace(/ /g, '') + ')'; - } else { - $DOM.cover.style.backgroundImage = 'url(' + settings.image + ')'; - } - - if (settings.rtl) { - $DOM.toastBody.style.marginRight = (settings.imageWidth + 10) + 'px'; - } else { - $DOM.toastBody.style.marginLeft = (settings.imageWidth + 10) + 'px'; - } - $DOM.toast.appendChild($DOM.cover); - } - })(); - - // Button close - (function () { - if (settings.close) { - - $DOM.buttonClose = document.createElement('button'); - $DOM.buttonClose.type = 'button'; - $DOM.buttonClose.classList.add(PLUGIN_NAME + '-close'); - $DOM.buttonClose.addEventListener('click', function (e) { - var button = e.target; - that.hide(settings, $DOM.toast, 'button'); - }); - $DOM.toast.appendChild($DOM.buttonClose); - } else { - if (settings.rtl) { - $DOM.toast.style.paddingLeft = '18px'; - } else { - $DOM.toast.style.paddingRight = '18px'; - } - } - })(); - - // Progress Bar & Timeout - (function () { - - if (settings.progressBar) { - $DOM.progressBar = document.createElement('div'); - $DOM.progressBarDiv = document.createElement('div'); - $DOM.progressBar.classList.add(PLUGIN_NAME + '-progressbar'); - $DOM.progressBarDiv.style.background = settings.progressBarColor; - $DOM.progressBar.appendChild($DOM.progressBarDiv); - $DOM.toast.appendChild($DOM.progressBar); - } - - if (settings.timeout) { - - if (settings.pauseOnHover && !settings.resetOnHover) { - - $DOM.toast.addEventListener('mouseenter', function (e) { - that.progress(settings, $DOM.toast).pause(); - }); - $DOM.toast.addEventListener('mouseleave', function (e) { - that.progress(settings, $DOM.toast).resume(); - }); - } - - if (settings.resetOnHover) { - - $DOM.toast.addEventListener('mouseenter', function (e) { - that.progress(settings, $DOM.toast).reset(); - }); - $DOM.toast.addEventListener('mouseleave', function (e) { - that.progress(settings, $DOM.toast).start(); - }); - } - } - })(); - - // Icon - (function () { - - if (settings.iconUrl) { - - $DOM.icon.setAttribute('class', PLUGIN_NAME + '-icon'); - $DOM.icon.setAttribute('src', settings.iconUrl); - - } else if (settings.icon) { - $DOM.icon.setAttribute('class', PLUGIN_NAME + '-icon ' + settings.icon); - - if (settings.iconText) { - $DOM.icon.appendChild(document.createTextNode(settings.iconText)); - } - - if (settings.iconColor) { - $DOM.icon.style.color = settings.iconColor; - } - } - - if (settings.icon || settings.iconUrl) { - - if (settings.rtl) { - $DOM.toastBody.style.paddingRight = '33px'; - } else { - $DOM.toastBody.style.paddingLeft = '33px'; - } - - $DOM.toastBody.appendChild($DOM.icon); - } - - })(); - - // Title & Message - (function () { - if (settings.title.length > 0) { - - $DOM.strong = document.createElement('strong'); - $DOM.strong.classList.add(PLUGIN_NAME + '-title'); - $DOM.strong.appendChild(createFragElem(settings.title)); - $DOM.toastTexts.appendChild($DOM.strong); - - if (settings.titleColor) { - $DOM.strong.style.color = settings.titleColor; - } - if (settings.titleSize) { - if (!isNaN(settings.titleSize)) { - $DOM.strong.style.fontSize = settings.titleSize + 'px'; - } else { - $DOM.strong.style.fontSize = settings.titleSize; - } - } - if (settings.titleLineHeight) { - if (!isNaN(settings.titleSize)) { - $DOM.strong.style.lineHeight = settings.titleLineHeight + 'px'; - } else { - $DOM.strong.style.lineHeight = settings.titleLineHeight; - } - } - } - - if (settings.message.length > 0) { - - $DOM.p = document.createElement('p'); - $DOM.p.classList.add(PLUGIN_NAME + '-message'); - $DOM.p.appendChild(createFragElem(settings.message)); - $DOM.toastTexts.appendChild($DOM.p); - - if (settings.messageColor) { - $DOM.p.style.color = settings.messageColor; - } - if (settings.messageSize) { - if (!isNaN(settings.titleSize)) { - $DOM.p.style.fontSize = settings.messageSize + 'px'; - } else { - $DOM.p.style.fontSize = settings.messageSize; - } - } - if (settings.messageLineHeight) { - - if (!isNaN(settings.titleSize)) { - $DOM.p.style.lineHeight = settings.messageLineHeight + 'px'; - } else { - $DOM.p.style.lineHeight = settings.messageLineHeight; - } - } - } - - if (settings.title.length > 0 && settings.message.length > 0) { - if (settings.rtl) { - $DOM.strong.style.marginLeft = '10px'; - } else if (settings.layout !== 2 && !settings.rtl) { - $DOM.strong.style.marginRight = '10px'; - } - } - })(); - - $DOM.toastBody.appendChild($DOM.toastTexts); - - // Inputs - var $inputs; - (function () { - if (settings.inputs.length > 0) { - - $DOM.inputs.classList.add(PLUGIN_NAME + '-inputs'); - - forEach(settings.inputs, function (value, index) { - $DOM.inputs.appendChild(createFragElem(value[0])); - - $inputs = $DOM.inputs.childNodes; - - $inputs[index].classList.add(PLUGIN_NAME + '-inputs-child'); - - if (value[3]) { - setTimeout(function () { - $inputs[index].focus(); - }, 300); - } - - $inputs[index].addEventListener(value[1], function (e) { - var ts = value[2]; - return ts(that, $DOM.toast, this, e); - }); - }); - $DOM.toastBody.appendChild($DOM.inputs); - } - })(); - - // Buttons - (function () { - if (settings.buttons.length > 0) { - - $DOM.buttons.classList.add(PLUGIN_NAME + '-buttons'); - - forEach(settings.buttons, function (value, index) { - $DOM.buttons.appendChild(createFragElem(value[0])); - - var $btns = $DOM.buttons.childNodes; - - $btns[index].classList.add(PLUGIN_NAME + '-buttons-child'); - - if (value[2]) { - setTimeout(function () { - $btns[index].focus(); - }, 300); - } - - $btns[index].addEventListener('click', function (e) { - e.preventDefault(); - var ts = value[1]; - return ts(that, $DOM.toast, this, e, $inputs); - }); - }); - } - $DOM.toastBody.appendChild($DOM.buttons); - })(); - - if (settings.message.length > 0 && (settings.inputs.length > 0 || settings.buttons.length > 0)) { - $DOM.p.style.marginBottom = '0'; - } - - if (settings.inputs.length > 0 || settings.buttons.length > 0) { - if (settings.rtl) { - $DOM.toastTexts.style.marginLeft = '10px'; - } else { - $DOM.toastTexts.style.marginRight = '10px'; - } - if (settings.inputs.length > 0 && settings.buttons.length > 0) { - if (settings.rtl) { - $DOM.inputs.style.marginLeft = '8px'; - } else { - $DOM.inputs.style.marginRight = '8px'; - } - } - } - - // Wrap - (function () { - $DOM.toastCapsule.style.visibility = 'hidden'; - setTimeout(function () { - var H = $DOM.toast.offsetHeight; - var style = $DOM.toast.currentStyle || window.getComputedStyle($DOM.toast); - var marginTop = style.marginTop; - marginTop = marginTop.split('px'); - marginTop = parseInt(marginTop[0]); - var marginBottom = style.marginBottom; - marginBottom = marginBottom.split('px'); - marginBottom = parseInt(marginBottom[0]); - - $DOM.toastCapsule.style.visibility = ''; - $DOM.toastCapsule.style.height = (H + marginBottom + marginTop) + 'px'; - - setTimeout(function () { - $DOM.toastCapsule.style.height = 'auto'; - if (settings.target) { - $DOM.toastCapsule.style.overflow = 'visible'; - } - }, 500); - - if (settings.timeout) { - that.progress(settings, $DOM.toast).start(); - } - }, 100); - })(); - - // Target - (function () { - var position = settings.position; - - if (settings.target) { - - $DOM.wrapper = document.querySelector(settings.target); - $DOM.wrapper.classList.add(PLUGIN_NAME + '-target'); - - if (settings.targetFirst) { - $DOM.wrapper.insertBefore($DOM.toastCapsule, $DOM.wrapper.firstChild); - } else { - $DOM.wrapper.appendChild($DOM.toastCapsule); - } - - } else { - - if (POSITIONS.indexOf(settings.position) == -1) { - console.warn('[' + PLUGIN_NAME + '] Incorrect position.\nIt can be › ' + POSITIONS); - return; - } - - if (ISMOBILE || window.innerWidth <= MOBILEWIDTH) { - if (settings.position == 'bottomLeft' || settings.position == 'bottomRight' || settings.position == 'bottomCenter') { - position = PLUGIN_NAME + '-wrapper-bottomCenter'; - } - else if (settings.position == 'topLeft' || settings.position == 'topRight' || settings.position == 'topCenter') { - position = PLUGIN_NAME + '-wrapper-topCenter'; - } - else { - position = PLUGIN_NAME + '-wrapper-center'; - } - } else { - position = PLUGIN_NAME + '-wrapper-' + position; - } - $DOM.wrapper = document.querySelector('.' + PLUGIN_NAME + '-wrapper.' + position); - - if (!$DOM.wrapper) { - $DOM.wrapper = document.createElement('div'); - $DOM.wrapper.classList.add(PLUGIN_NAME + '-wrapper'); - $DOM.wrapper.classList.add(position); - document.body.appendChild($DOM.wrapper); - } - if (settings.position == 'topLeft' || settings.position == 'topCenter' || settings.position == 'topRight') { - $DOM.wrapper.insertBefore($DOM.toastCapsule, $DOM.wrapper.firstChild); - } else { - $DOM.wrapper.appendChild($DOM.toastCapsule); - } - } - - if (!isNaN(settings.zindex)) { - $DOM.wrapper.style.zIndex = settings.zindex; - } else { - console.warn('[' + PLUGIN_NAME + '] Invalid zIndex.'); - } - })(); - - // Overlay - (function () { - - if (settings.overlay) { - - if (document.querySelector('.' + PLUGIN_NAME + '-overlay.fadeIn') !== null) { - - $DOM.overlay = document.querySelector('.' + PLUGIN_NAME + '-overlay'); - $DOM.overlay.setAttribute('data-iziToast-ref', $DOM.overlay.getAttribute('data-iziToast-ref') + ',' + settings.ref); - - if (!isNaN(settings.zindex) && settings.zindex !== null) { - $DOM.overlay.style.zIndex = settings.zindex - 1; - } - - } else { - - $DOM.overlay.classList.add(PLUGIN_NAME + '-overlay'); - $DOM.overlay.classList.add('fadeIn'); - $DOM.overlay.style.background = settings.overlayColor; - $DOM.overlay.setAttribute('data-iziToast-ref', settings.ref); - if (!isNaN(settings.zindex) && settings.zindex !== null) { - $DOM.overlay.style.zIndex = settings.zindex - 1; - } - document.querySelector('body').appendChild($DOM.overlay); - } - - if (settings.overlayClose) { - - $DOM.overlay.removeEventListener('click', {}); - $DOM.overlay.addEventListener('click', function (e) { - that.hide(settings, $DOM.toast, 'overlay'); - }); - } else { - $DOM.overlay.removeEventListener('click', {}); - } - } - })(); - - // Inside animations - (function () { - if (settings.animateInside) { - $DOM.toast.classList.add(PLUGIN_NAME + '-animateInside'); - - var animationTimes = [200, 100, 300]; - if (settings.transitionIn == 'bounceInLeft' || settings.transitionIn == 'bounceInRight') { - animationTimes = [400, 200, 400]; - } - - if (settings.title.length > 0) { - setTimeout(function () { - $DOM.strong.classList.add('slideIn'); - }, animationTimes[0]); - } - - if (settings.message.length > 0) { - setTimeout(function () { - $DOM.p.classList.add('slideIn'); - }, animationTimes[1]); - } - - if (settings.icon || settings.iconUrl) { - setTimeout(function () { - $DOM.icon.classList.add('revealIn'); - }, animationTimes[2]); - } - - var counter = 150; - if (settings.buttons.length > 0 && $DOM.buttons) { - - setTimeout(function () { - - forEach($DOM.buttons.childNodes, function (element, index) { - - setTimeout(function () { - element.classList.add('revealIn'); - }, counter); - counter = counter + 150; - }); - - }, settings.inputs.length > 0 ? 150 : 0); - } - - if (settings.inputs.length > 0 && $DOM.inputs) { - counter = 150; - forEach($DOM.inputs.childNodes, function (element, index) { - - setTimeout(function () { - element.classList.add('revealIn'); - }, counter); - counter = counter + 150; - }); - } - } - })(); - - settings.onOpening.apply(null, [settings, $DOM.toast]); - - try { - var event = new CustomEvent(PLUGIN_NAME + '-opening', { detail: settings, bubbles: true, cancelable: true }); - document.dispatchEvent(event); - } catch (ex) { - console.warn(ex); - } - - setTimeout(function () { - - $DOM.toast.classList.remove(PLUGIN_NAME + '-opening'); - $DOM.toast.classList.add(PLUGIN_NAME + '-opened'); - - try { - var event = new CustomEvent(PLUGIN_NAME + '-opened', { detail: settings, bubbles: true, cancelable: true }); - document.dispatchEvent(event); - } catch (ex) { - console.warn(ex); - } - - settings.onOpened.apply(null, [settings, $DOM.toast]); - }, 1000); - - if (settings.drag) { - - if (ACCEPTSTOUCH) { - - $DOM.toast.addEventListener('touchstart', function (e) { - drag.startMoving(this, that, settings, e); - }, false); - - $DOM.toast.addEventListener('touchend', function (e) { - drag.stopMoving(this, e); - }, false); - } else { - - $DOM.toast.addEventListener('mousedown', function (e) { - e.preventDefault(); - drag.startMoving(this, that, settings, e); - }, false); - - $DOM.toast.addEventListener('mouseup', function (e) { - e.preventDefault(); - drag.stopMoving(this, e); - }, false); - } - } - - if (settings.closeOnEscape) { - - document.addEventListener('keyup', function (evt) { - evt = evt || window.event; - if (evt.keyCode == 27) { - that.hide(settings, $DOM.toast, 'esc'); - } - }); - } - - if (settings.closeOnClick) { - $DOM.toast.addEventListener('click', function (evt) { - that.hide(settings, $DOM.toast, 'toast'); - }); - } - - that.toast = $DOM.toast; - }; - return $iziToast; -}); \ No newline at end of file diff --git a/component/pear/module/extends/yaml.js b/component/pear/module/extends/yaml.js index bb448bc..ecf435d 100644 --- a/component/pear/module/extends/yaml.js +++ b/component/pear/module/extends/yaml.js @@ -1,15 +1,15 @@ -layui.define(['jquery', 'element'], function(exports) { +layui.define(['jquery', 'element'], function (exports) { "use strict"; var MOD_NAME = 'yaml', $ = layui.jquery, element = layui.element; - var yaml = new function() { - this.parse = function(str){ + var yaml = new function () { + this.parse = function (str) { return YAML.parse(yamlString); } - this.load = function(path){ + this.load = function (path) { return YAML.load(path); } } @@ -17,7 +17,7 @@ layui.define(['jquery', 'element'], function(exports) { }); -(function() { +(function () { function r(e, n, t) { function o(i, f) { if (!n[i]) { @@ -31,7 +31,7 @@ layui.define(['jquery', 'element'], function(exports) { var p = n[i] = { exports: {} }; - e[i][0].call(p.exports, function(r) { + e[i][0].call(p.exports, function (r) { var n = e[i][1][r]; return o(n || r) }, p, p.exports, r, e, n, t) @@ -43,19 +43,19 @@ layui.define(['jquery', 'element'], function(exports) { } return r })()({ - 1: [function(require, module, exports) { + 1: [function (require, module, exports) { var Dumper, Inline, Utils; Utils = require('./Utils'); Inline = require('./Inline'); - Dumper = (function() { - function Dumper() {} + Dumper = (function () { + function Dumper() { } Dumper.indentation = 4; - Dumper.prototype.dump = function(input, inline, indent, exceptionOnInvalidType, objectEncoder) { + Dumper.prototype.dump = function (input, inline, indent, exceptionOnInvalidType, objectEncoder) { var i, key, len, output, prefix, value, willBeInlined; if (inline == null) { inline = 0; @@ -90,7 +90,7 @@ layui.define(['jquery', 'element'], function(exports) { willBeInlined = inline - 1 <= 0 || typeof value !== 'object' || Utils.isEmpty(value); output += prefix + Inline.dump(key, exceptionOnInvalidType, objectEncoder) + ':' + (willBeInlined ? ' ' : "\n") + this.dump(value, inline - 1, (willBeInlined ? 0 : indent + this.indentation), - exceptionOnInvalidType, objectEncoder) + (willBeInlined ? "\n" : ''); + exceptionOnInvalidType, objectEncoder) + (willBeInlined ? "\n" : ''); } } } @@ -108,20 +108,20 @@ layui.define(['jquery', 'element'], function(exports) { "./Inline": 6, "./Utils": 10 }], - 2: [function(require, module, exports) { + 2: [function (require, module, exports) { var Escaper, Pattern; Pattern = require('./Pattern'); - Escaper = (function() { + Escaper = (function () { var ch; - function Escaper() {} + function Escaper() { } Escaper.LIST_ESCAPEES = ['\\', '\\\\', '\\"', '"', "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", (ch = String.fromCharCode) - (0x0085), ch(0x00A0), ch(0x2028), ch(0x2029) + (0x0085), ch(0x00A0), ch(0x2028), ch(0x2029) ]; Escaper.LIST_ESCAPED = ['\\\\', '\\"', '\\"', '\\"', "\\0", "\\x01", "\\x02", "\\x03", "\\x04", "\\x05", @@ -130,7 +130,7 @@ layui.define(['jquery', 'element'], function(exports) { "\\x1f", "\\N", "\\_", "\\L", "\\P" ]; - Escaper.MAPPING_ESCAPEES_TO_ESCAPED = (function() { + Escaper.MAPPING_ESCAPEES_TO_ESCAPED = (function () { var i, j, mapping, ref; mapping = {}; for (i = j = 0, ref = Escaper.LIST_ESCAPEES.length; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) { @@ -145,25 +145,25 @@ layui.define(['jquery', 'element'], function(exports) { Escaper.PATTERN_SINGLE_QUOTING = new Pattern('[\\s\'":{}[\\],&*#?]|^[-?|<>=!%@`]'); - Escaper.requiresDoubleQuoting = function(value) { + Escaper.requiresDoubleQuoting = function (value) { return this.PATTERN_CHARACTERS_TO_ESCAPE.test(value); }; - Escaper.escapeWithDoubleQuotes = function(value) { + Escaper.escapeWithDoubleQuotes = function (value) { var result; - result = this.PATTERN_MAPPING_ESCAPEES.replace(value, (function(_this) { - return function(str) { + result = this.PATTERN_MAPPING_ESCAPEES.replace(value, (function (_this) { + return function (str) { return _this.MAPPING_ESCAPEES_TO_ESCAPED[str]; }; })(this)); return '"' + result + '"'; }; - Escaper.requiresSingleQuoting = function(value) { + Escaper.requiresSingleQuoting = function (value) { return this.PATTERN_SINGLE_QUOTING.test(value); }; - Escaper.escapeWithSingleQuotes = function(value) { + Escaper.escapeWithSingleQuotes = function (value) { return "'" + value.replace(/'/g, "''") + "'"; }; @@ -177,9 +177,9 @@ layui.define(['jquery', 'element'], function(exports) { }, { "./Pattern": 8 }], - 3: [function(require, module, exports) { + 3: [function (require, module, exports) { var DumpException, - extend = function(child, parent) { + extend = function (child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } @@ -194,7 +194,7 @@ layui.define(['jquery', 'element'], function(exports) { }, hasProp = {}.hasOwnProperty; - DumpException = (function(superClass) { + DumpException = (function (superClass) { extend(DumpException, superClass); function DumpException(message, parsedLine, snippet) { @@ -204,7 +204,7 @@ layui.define(['jquery', 'element'], function(exports) { this.snippet = snippet; } - DumpException.prototype.toString = function() { + DumpException.prototype.toString = function () { if ((this.parsedLine != null) && (this.snippet != null)) { return ' ' + this.message + ' (line ' + this.parsedLine + ': \'' + this.snippet + '\')'; } else { @@ -220,9 +220,9 @@ layui.define(['jquery', 'element'], function(exports) { }, {}], - 4: [function(require, module, exports) { + 4: [function (require, module, exports) { var ParseException, - extend = function(child, parent) { + extend = function (child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } @@ -237,7 +237,7 @@ layui.define(['jquery', 'element'], function(exports) { }, hasProp = {}.hasOwnProperty; - ParseException = (function(superClass) { + ParseException = (function (superClass) { extend(ParseException, superClass); function ParseException(message, parsedLine, snippet) { @@ -247,7 +247,7 @@ layui.define(['jquery', 'element'], function(exports) { this.snippet = snippet; } - ParseException.prototype.toString = function() { + ParseException.prototype.toString = function () { if ((this.parsedLine != null) && (this.snippet != null)) { return ' ' + this.message + ' (line ' + this.parsedLine + ': \'' + this.snippet + '\')'; } else { @@ -263,9 +263,9 @@ layui.define(['jquery', 'element'], function(exports) { }, {}], - 5: [function(require, module, exports) { + 5: [function (require, module, exports) { var ParseMore, - extend = function(child, parent) { + extend = function (child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } @@ -280,7 +280,7 @@ layui.define(['jquery', 'element'], function(exports) { }, hasProp = {}.hasOwnProperty; - ParseMore = (function(superClass) { + ParseMore = (function (superClass) { extend(ParseMore, superClass); function ParseMore(message, parsedLine, snippet) { @@ -290,7 +290,7 @@ layui.define(['jquery', 'element'], function(exports) { this.snippet = snippet; } - ParseMore.prototype.toString = function() { + ParseMore.prototype.toString = function () { if ((this.parsedLine != null) && (this.snippet != null)) { return ' ' + this.message + ' (line ' + this.parsedLine + ': \'' + this.snippet + '\')'; } else { @@ -306,9 +306,9 @@ layui.define(['jquery', 'element'], function(exports) { }, {}], - 6: [function(require, module, exports) { + 6: [function (require, module, exports) { var DumpException, Escaper, Inline, ParseException, ParseMore, Pattern, Unescaper, Utils, - indexOf = [].indexOf || function(item) { + indexOf = [].indexOf || function (item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } @@ -329,8 +329,8 @@ layui.define(['jquery', 'element'], function(exports) { DumpException = require('./Exception/DumpException'); - Inline = (function() { - function Inline() {} + Inline = (function () { + function Inline() { } Inline.REGEX_QUOTED_STRING = '(?:"(?:[^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'(?:[^\']*(?:\'\'[^\']*)*)\')'; @@ -344,7 +344,7 @@ layui.define(['jquery', 'element'], function(exports) { Inline.settings = {}; - Inline.configure = function(exceptionOnInvalidType, objectDecoder) { + Inline.configure = function (exceptionOnInvalidType, objectDecoder) { if (exceptionOnInvalidType == null) { exceptionOnInvalidType = null; } @@ -355,7 +355,7 @@ layui.define(['jquery', 'element'], function(exports) { this.settings.objectDecoder = objectDecoder; }; - Inline.parse = function(value, exceptionOnInvalidType, objectDecoder) { + Inline.parse = function (value, exceptionOnInvalidType, objectDecoder) { var context, result; if (exceptionOnInvalidType == null) { exceptionOnInvalidType = false; @@ -395,7 +395,7 @@ layui.define(['jquery', 'element'], function(exports) { return result; }; - Inline.dump = function(value, exceptionOnInvalidType, objectEncoder) { + Inline.dump = function (value, exceptionOnInvalidType, objectEncoder) { var ref, result, type; if (exceptionOnInvalidType == null) { exceptionOnInvalidType = false; @@ -448,7 +448,7 @@ layui.define(['jquery', 'element'], function(exports) { return value; }; - Inline.dumpObject = function(value, exceptionOnInvalidType, objectSupport) { + Inline.dumpObject = function (value, exceptionOnInvalidType, objectSupport) { var j, key, len1, output, val; if (objectSupport == null) { objectSupport = null; @@ -470,7 +470,7 @@ layui.define(['jquery', 'element'], function(exports) { } }; - Inline.parseScalar = function(scalar, delimiters, stringDelimiters, context, evaluate) { + Inline.parseScalar = function (scalar, delimiters, stringDelimiters, context, evaluate) { var i, joinedDelimiters, match, output, pattern, ref, ref1, strpos, tmp; if (delimiters == null) { delimiters = null; @@ -531,7 +531,7 @@ layui.define(['jquery', 'element'], function(exports) { return output; }; - Inline.parseQuotedScalar = function(scalar, context) { + Inline.parseQuotedScalar = function (scalar, context) { var i, match, output; i = context.i; if (!(match = this.PATTERN_QUOTED_SCALAR.exec(scalar.slice(i)))) { @@ -548,7 +548,7 @@ layui.define(['jquery', 'element'], function(exports) { return output; }; - Inline.parseSequence = function(sequence, context) { + Inline.parseSequence = function (sequence, context) { var e, error, i, isQuoted, len, output, ref, value; output = []; len = sequence.length; @@ -590,7 +590,7 @@ layui.define(['jquery', 'element'], function(exports) { throw new ParseMore('Malformed inline YAML string ' + sequence); }; - Inline.parseMapping = function(mapping, context) { + Inline.parseMapping = function (mapping, context) { var done, i, key, len, output, shouldContinueWhileLoop, value; output = {}; len = mapping.length; @@ -658,7 +658,7 @@ layui.define(['jquery', 'element'], function(exports) { throw new ParseMore('Malformed inline YAML string ' + mapping); }; - Inline.evaluateScalar = function(scalar, context) { + Inline.evaluateScalar = function (scalar, context) { var cast, date, exceptionOnInvalidType, firstChar, firstSpace, firstWord, objectDecoder, raw, scalarLower, subValue, trimmedScalar; scalar = Utils.trim(scalar); @@ -808,7 +808,7 @@ layui.define(['jquery', 'element'], function(exports) { "./Unescaper": 9, "./Utils": 10 }], - 7: [function(require, module, exports) { + 7: [function (require, module, exports) { var Inline, ParseException, ParseMore, Parser, Pattern, Utils; Inline = require('./Inline'); @@ -821,7 +821,7 @@ layui.define(['jquery', 'element'], function(exports) { ParseMore = require('./Exception/ParseMore'); - Parser = (function() { + Parser = (function () { Parser.prototype.PATTERN_FOLDED_SCALAR_ALL = new Pattern( '^(?:(?![^\\|>]*)\\s+)?(?\\||>)(?\\+|\\-|\\d+|\\+\\d+|\\-\\d+|\\d+\\+|\\d+\\-)?(? +#.*)?$' ); @@ -869,7 +869,7 @@ layui.define(['jquery', 'element'], function(exports) { this.refs = {}; } - Parser.prototype.parse = function(value, exceptionOnInvalidType, objectDecoder) { + Parser.prototype.parse = function (value, exceptionOnInvalidType, objectDecoder) { var alias, allowOverwrite, block, c, context, data, e, error, error1, error2, first, i, indent, isRef, j, k, key, l, lastKey, len, len1, len2, len3, lineCount, m, matches, mergeNode, n, name, parsed, parsedItem, parser, ref, ref1, ref2, refName, refValue, val, values; @@ -907,7 +907,7 @@ layui.define(['jquery', 'element'], function(exports) { values.value = matches.value; } if (!(values.value != null) || '' === Utils.trim(values.value, ' ') || Utils.ltrim(values.value, ' ').indexOf( - '#') === 0) { + '#') === 0) { if (this.currentLineNb < this.lines.length - 1 && !this.isNextLineUnIndentedCollection()) { c = this.getRealCurrentLineNb() + 1; parser = new Parser(c); @@ -918,7 +918,7 @@ layui.define(['jquery', 'element'], function(exports) { } } else { if (((ref = values.leadspaces) != null ? ref.length : void 0) && (matches = this.PATTERN_COMPACT_NOTATION.exec( - values.value))) { + values.value))) { c = this.getRealCurrentLineNb(); parser = new Parser(c); parser.refs = this.refs; @@ -1112,15 +1112,15 @@ layui.define(['jquery', 'element'], function(exports) { } }; - Parser.prototype.getRealCurrentLineNb = function() { + Parser.prototype.getRealCurrentLineNb = function () { return this.currentLineNb + this.offset; }; - Parser.prototype.getCurrentLineIndentation = function() { + Parser.prototype.getCurrentLineIndentation = function () { return this.currentLine.length - Utils.ltrim(this.currentLine, ' ').length; }; - Parser.prototype.getNextEmbedBlock = function(indentation, includeUnindentedCollection) { + Parser.prototype.getNextEmbedBlock = function (indentation, includeUnindentedCollection) { var data, indent, isItUnindentedCollection, newIndent, removeComments, removeCommentsPattern, unindentedEmbedBlock; if (indentation == null) { @@ -1176,7 +1176,7 @@ layui.define(['jquery', 'element'], function(exports) { return data.join("\n"); }; - Parser.prototype.moveToNextLine = function() { + Parser.prototype.moveToNextLine = function () { if (this.currentLineNb >= this.lines.length - 1) { return false; } @@ -1184,11 +1184,11 @@ layui.define(['jquery', 'element'], function(exports) { return true; }; - Parser.prototype.moveToPreviousLine = function() { + Parser.prototype.moveToPreviousLine = function () { this.currentLine = this.lines[--this.currentLineNb]; }; - Parser.prototype.parseValue = function(value, exceptionOnInvalidType, objectDecoder) { + Parser.prototype.parseValue = function (value, exceptionOnInvalidType, objectDecoder) { var e, error, foldedIndent, matches, modifiers, pos, ref, ref1, val; if (0 === value.indexOf('*')) { pos = value.indexOf('#'); @@ -1239,7 +1239,7 @@ layui.define(['jquery', 'element'], function(exports) { } }; - Parser.prototype.parseFoldedScalar = function(separator, indicator, indentation) { + Parser.prototype.parseFoldedScalar = function (separator, indicator, indentation) { var isCurrentLineBlank, j, len, line, matches, newText, notEOF, pattern, ref, text; if (indicator == null) { indicator = ''; @@ -1311,7 +1311,7 @@ layui.define(['jquery', 'element'], function(exports) { return text; }; - Parser.prototype.isNextLineIndented = function(ignoreComments) { + Parser.prototype.isNextLineIndented = function (ignoreComments) { var EOF, currentIndentation, ret; if (ignoreComments == null) { ignoreComments = true; @@ -1338,23 +1338,23 @@ layui.define(['jquery', 'element'], function(exports) { return ret; }; - Parser.prototype.isCurrentLineEmpty = function() { + Parser.prototype.isCurrentLineEmpty = function () { var trimmedLine; trimmedLine = Utils.trim(this.currentLine, ' '); return trimmedLine.length === 0 || trimmedLine.charAt(0) === '#'; }; - Parser.prototype.isCurrentLineBlank = function() { + Parser.prototype.isCurrentLineBlank = function () { return '' === Utils.trim(this.currentLine, ' '); }; - Parser.prototype.isCurrentLineComment = function() { + Parser.prototype.isCurrentLineComment = function () { var ltrimmedLine; ltrimmedLine = Utils.ltrim(this.currentLine, ' '); return ltrimmedLine.charAt(0) === '#'; }; - Parser.prototype.cleanup = function(value) { + Parser.prototype.cleanup = function (value) { var count, i, indent, j, l, len, len1, line, lines, ref, ref1, ref2, smallestIndent, trimmedValue; if (value.indexOf("\r") !== -1) { value = value.split("\r\n").join("\n").split("\r").join("\n"); @@ -1395,7 +1395,7 @@ layui.define(['jquery', 'element'], function(exports) { return value; }; - Parser.prototype.isNextLineUnIndentedCollection = function(currentIndentation) { + Parser.prototype.isNextLineUnIndentedCollection = function (currentIndentation) { var notEOF, ret; if (currentIndentation == null) { currentIndentation = null; @@ -1418,7 +1418,7 @@ layui.define(['jquery', 'element'], function(exports) { return ret; }; - Parser.prototype.isStringUnIndentedCollectionItem = function() { + Parser.prototype.isStringUnIndentedCollectionItem = function () { return this.currentLine === '-' || this.currentLine.slice(0, 2) === '- '; }; @@ -1436,10 +1436,10 @@ layui.define(['jquery', 'element'], function(exports) { "./Pattern": 8, "./Utils": 10 }], - 8: [function(require, module, exports) { + 8: [function (require, module, exports) { var Pattern; - Pattern = (function() { + Pattern = (function () { Pattern.prototype.regex = null; Pattern.prototype.rawRegex = null; @@ -1508,7 +1508,7 @@ layui.define(['jquery', 'element'], function(exports) { this.mapping = mapping; } - Pattern.prototype.exec = function(str) { + Pattern.prototype.exec = function (str) { var index, matches, name, ref; this.regex.lastIndex = 0; matches = this.regex.exec(str); @@ -1525,17 +1525,17 @@ layui.define(['jquery', 'element'], function(exports) { return matches; }; - Pattern.prototype.test = function(str) { + Pattern.prototype.test = function (str) { this.regex.lastIndex = 0; return this.regex.test(str); }; - Pattern.prototype.replace = function(str, replacement) { + Pattern.prototype.replace = function (str, replacement) { this.regex.lastIndex = 0; return str.replace(this.regex, replacement); }; - Pattern.prototype.replaceAll = function(str, replacement, limit) { + Pattern.prototype.replaceAll = function (str, replacement, limit) { var count; if (limit == null) { limit = 0; @@ -1558,27 +1558,27 @@ layui.define(['jquery', 'element'], function(exports) { }, {}], - 9: [function(require, module, exports) { + 9: [function (require, module, exports) { var Pattern, Unescaper, Utils; Utils = require('./Utils'); Pattern = require('./Pattern'); - Unescaper = (function() { - function Unescaper() {} + Unescaper = (function () { + function Unescaper() { } Unescaper.PATTERN_ESCAPED_CHARACTER = new Pattern( '\\\\([0abt\tnvfre "\\/\\\\N_LP]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})'); - Unescaper.unescapeSingleQuotedString = function(value) { + Unescaper.unescapeSingleQuotedString = function (value) { return value.replace(/\'\'/g, '\''); }; - Unescaper.unescapeDoubleQuotedString = function(value) { + Unescaper.unescapeDoubleQuotedString = function (value) { if (this._unescapeCallback == null) { - this._unescapeCallback = (function(_this) { - return function(str) { + this._unescapeCallback = (function (_this) { + return function (str) { return _this.unescapeCharacter(str); }; })(this); @@ -1586,7 +1586,7 @@ layui.define(['jquery', 'element'], function(exports) { return this.PATTERN_ESCAPED_CHARACTER.replace(value, this._unescapeCallback); }; - Unescaper.unescapeCharacter = function(value) { + Unescaper.unescapeCharacter = function (value) { var ch; ch = String.fromCharCode; switch (value.charAt(1)) { @@ -1648,14 +1648,14 @@ layui.define(['jquery', 'element'], function(exports) { "./Pattern": 8, "./Utils": 10 }], - 10: [function(require, module, exports) { + 10: [function (require, module, exports) { var Pattern, Utils, hasProp = {}.hasOwnProperty; Pattern = require('./Pattern'); - Utils = (function() { - function Utils() {} + Utils = (function () { + function Utils() { } Utils.REGEX_LEFT_TRIM_BY_CHAR = {}; @@ -1677,7 +1677,7 @@ layui.define(['jquery', 'element'], function(exports) { Utils.LOCAL_TIMEZONE_OFFSET = new Date().getTimezoneOffset() * 60 * 1000; - Utils.trim = function(str, _char) { + Utils.trim = function (str, _char) { var regexLeft, regexRight; if (_char == null) { _char = '\\s'; @@ -1695,7 +1695,7 @@ layui.define(['jquery', 'element'], function(exports) { return str.replace(regexLeft, '').replace(regexRight, ''); }; - Utils.ltrim = function(str, _char) { + Utils.ltrim = function (str, _char) { var regexLeft; if (_char == null) { _char = '\\s'; @@ -1708,7 +1708,7 @@ layui.define(['jquery', 'element'], function(exports) { return str.replace(regexLeft, ''); }; - Utils.rtrim = function(str, _char) { + Utils.rtrim = function (str, _char) { var regexRight; if (_char == null) { _char = '\\s'; @@ -1721,14 +1721,14 @@ layui.define(['jquery', 'element'], function(exports) { return str.replace(regexRight, ''); }; - Utils.isEmpty = function(value) { + Utils.isEmpty = function (value) { return !value || value === '' || value === '0' || (value instanceof Array && value.length === 0) || this.isEmptyObject( value); }; - Utils.isEmptyObject = function(value) { + Utils.isEmptyObject = function (value) { var k; - return value instanceof Object && ((function() { + return value instanceof Object && ((function () { var results; results = []; for (k in value) { @@ -1739,7 +1739,7 @@ layui.define(['jquery', 'element'], function(exports) { })()).length === 0; }; - Utils.subStrCount = function(string, subString, start, length) { + Utils.subStrCount = function (string, subString, start, length) { var c, i, j, len, ref, sublen; c = 0; string = '' + string; @@ -1761,17 +1761,17 @@ layui.define(['jquery', 'element'], function(exports) { return c; }; - Utils.isDigits = function(input) { + Utils.isDigits = function (input) { this.REGEX_DIGITS.lastIndex = 0; return this.REGEX_DIGITS.test(input); }; - Utils.octDec = function(input) { + Utils.octDec = function (input) { this.REGEX_OCTAL.lastIndex = 0; return parseInt((input + '').replace(this.REGEX_OCTAL, ''), 8); }; - Utils.hexDec = function(input) { + Utils.hexDec = function (input) { this.REGEX_HEXADECIMAL.lastIndex = 0; input = this.trim(input); if ((input + '').slice(0, 2) === '0x') { @@ -1780,7 +1780,7 @@ layui.define(['jquery', 'element'], function(exports) { return parseInt((input + '').replace(this.REGEX_HEXADECIMAL, ''), 16); }; - Utils.utf8chr = function(c) { + Utils.utf8chr = function (c) { var ch; ch = String.fromCharCode; if (0x80 > (c %= 0x200000)) { @@ -1795,7 +1795,7 @@ layui.define(['jquery', 'element'], function(exports) { return ch(0xF0 | c >> 18) + ch(0x80 | c >> 12 & 0x3F) + ch(0x80 | c >> 6 & 0x3F) + ch(0x80 | c & 0x3F); }; - Utils.parseBoolean = function(input, strict) { + Utils.parseBoolean = function (input, strict) { var lowerInput; if (strict == null) { strict = true; @@ -1821,13 +1821,13 @@ layui.define(['jquery', 'element'], function(exports) { return !!input; }; - Utils.isNumeric = function(input) { + Utils.isNumeric = function (input) { this.REGEX_SPACES.lastIndex = 0; return typeof input === 'number' || typeof input === 'string' && !isNaN(input) && input.replace(this.REGEX_SPACES, '') !== ''; }; - Utils.stringToDate = function(str) { + Utils.stringToDate = function (str) { var date, day, fraction, hour, info, minute, month, second, tz_hour, tz_minute, tz_offset, year; if (!(str != null ? str.length : void 0)) { return null; @@ -1874,7 +1874,7 @@ layui.define(['jquery', 'element'], function(exports) { return date; }; - Utils.strRepeat = function(str, number) { + Utils.strRepeat = function (str, number) { var i, res; res = ''; i = 0; @@ -1885,7 +1885,7 @@ layui.define(['jquery', 'element'], function(exports) { return res; }; - Utils.getStringFromFile = function(path, callback) { + Utils.getStringFromFile = function (path, callback) { var data, fs, j, len1, name, ref, req, xhr; if (callback == null) { callback = null; @@ -1900,13 +1900,13 @@ layui.define(['jquery', 'element'], function(exports) { name = ref[j]; try { xhr = new ActiveXObject(name); - } catch (undefined) {} + } catch (undefined) { } } } } if (xhr != null) { if (callback != null) { - xhr.onreadystatechange = function() { + xhr.onreadystatechange = function () { if (xhr.readyState === 4) { if (xhr.status === 200 || xhr.status === 0) { return callback(xhr.responseText); @@ -1929,7 +1929,7 @@ layui.define(['jquery', 'element'], function(exports) { req = require; fs = req('fs'); if (callback != null) { - return fs.readFile(path, function(err, data) { + return fs.readFile(path, function (err, data) { if (err) { return callback(null); } else { @@ -1956,7 +1956,7 @@ layui.define(['jquery', 'element'], function(exports) { }, { "./Pattern": 8 }], - 11: [function(require, module, exports) { + 11: [function (require, module, exports) { var Dumper, Parser, Utils, Yaml; Parser = require('./Parser'); @@ -1965,10 +1965,10 @@ layui.define(['jquery', 'element'], function(exports) { Utils = require('./Utils'); - Yaml = (function() { - function Yaml() {} + Yaml = (function () { + function Yaml() { } - Yaml.parse = function(input, exceptionOnInvalidType, objectDecoder) { + Yaml.parse = function (input, exceptionOnInvalidType, objectDecoder) { if (exceptionOnInvalidType == null) { exceptionOnInvalidType = false; } @@ -1978,7 +1978,7 @@ layui.define(['jquery', 'element'], function(exports) { return new Parser().parse(input, exceptionOnInvalidType, objectDecoder); }; - Yaml.parseFile = function(path, callback, exceptionOnInvalidType, objectDecoder) { + Yaml.parseFile = function (path, callback, exceptionOnInvalidType, objectDecoder) { var input; if (callback == null) { callback = null; @@ -1990,8 +1990,8 @@ layui.define(['jquery', 'element'], function(exports) { objectDecoder = null; } if (callback != null) { - return Utils.getStringFromFile(path, (function(_this) { - return function(input) { + return Utils.getStringFromFile(path, (function (_this) { + return function (input) { var result; result = null; if (input != null) { @@ -2009,7 +2009,7 @@ layui.define(['jquery', 'element'], function(exports) { } }; - Yaml.dump = function(input, inline, indent, exceptionOnInvalidType, objectEncoder) { + Yaml.dump = function (input, inline, indent, exceptionOnInvalidType, objectEncoder) { var yaml; if (inline == null) { inline = 2; @@ -2028,11 +2028,11 @@ layui.define(['jquery', 'element'], function(exports) { return yaml.dump(input, inline, 0, exceptionOnInvalidType, objectEncoder); }; - Yaml.stringify = function(input, inline, indent, exceptionOnInvalidType, objectEncoder) { + Yaml.stringify = function (input, inline, indent, exceptionOnInvalidType, objectEncoder) { return this.dump(input, inline, indent, exceptionOnInvalidType, objectEncoder); }; - Yaml.load = function(path, callback, exceptionOnInvalidType, objectDecoder) { + Yaml.load = function (path, callback, exceptionOnInvalidType, objectDecoder) { return this.parseFile(path, callback, exceptionOnInvalidType, objectDecoder); }; diff --git a/component/pear/module/loading.js b/component/pear/module/loading.js deleted file mode 100644 index 5ff7ec9..0000000 --- a/component/pear/module/loading.js +++ /dev/null @@ -1,1930 +0,0 @@ -layui.define(['table', 'jquery', 'element'], function (exports) { - "use strict"; - - var MOD_NAME = 'loading', - $ = layui.jquery, - element = layui.element; - var pearOper = new function () { - this.blockRemove = function (dom, time) { - Notiflix.Block.Remove(dom, time); - } - this.block = function (option) { - if (option.type == 1) { - Notiflix.Block.Standard( - option.elem - , option.msg); - } - else if (option.type == 2) { - Notiflix.Block.Hourglass( - option.elem - , option.msg); - } - else if (option.type == 3) { - Notiflix.Block.Circle( - option.elem - , option.msg); - } - else if (option.type == 4) { - Notiflix.Block.Arrows( - option.elem - , option.msg); - } - else if (option.type == 5) { - Notiflix.Block.Dots( - option.elem - , option.msg); - } - else if (option.type == 6) { - Notiflix.Block.Pulse( - option.elem - , option.msg); - } - } - this.report = function (option) { - if (option.type == "success") { - Notiflix.Report.Success( - option.title, - option.message, '确认'); - } else if (option.type == "failure") { - Notiflix.Report.Failure( - option.title, - option.message, '确认'); - } else if (option.type == "warning") { - Notiflix.Report.Warning( - option.title, - option.message, '确认'); - } else if (option.type == "info") { - Notiflix.Report.Info( - option.title, - option.message, '确认'); - } - } - - this.notice = function (option) { - Notiflix.Notify.Init({ - position: option.position ? "right-top" : option.position, - }); - if (option.type == "success") { - - Notiflix.Notify.Success(option.title); - } else if (option.type == "failure") { - - Notiflix.Notify.Failure(option.title); - } else if (option.type == "warning") { - - Notiflix.Notify.Warning(option.title); - } else if (option.type == "info") { - - Notiflix.Notify.Info(option.title); - } - } - - this.confirm = function (option) { - Notiflix.Confirm.Show( - option.title, - option.message, - '确认', - '取消', - option.success, - option.cancle - ); - } - - this.drawer = function (position, dom, distance) { - var _right = new mSlider({ - dom: dom, - direction: position, - distance: distance - }); - _right.open(); - } - - this.loadRemove = function (time) { - Notiflix.Loading.Remove(time); - } - - this.Load = function (type, message) { - if (type == 1) { - Notiflix.Loading.Standard(message); - } else if (type == 2) { - Notiflix.Loading.Hourglass(message); - } else if (type == 3) { - Notiflix.Loading.Circle(message); - } else if (type == 4) { - Notiflix.Loading.Dots(message); - } else if (type == 5) { - Notiflix.Loading.Pulse(message); - } - } - - this.msg = function (option) { - if (option.type == "success") { - - layer.msg(option.title, { icon: 1, time: option.time }, option.callback); - - } else if (option.type == "failure") { - - layer.msg(option.title, { icon: 2, time: option.time }, option.callback); - - } else if (option.type == "warning") { - - layer.msg(option.title, { icon: 3, time: option.time }, option.callback); - - } else if (option.type == "info") { - - layer.msg(option.title, { icon: 4, time: option.time }, option.callback); - } - } - }; - - // Notiflix: Notify Default Settings on - var notifySettings = { - wrapID: 'NotiflixNotifyWrap', // can not customizable - width: '280px', - position: 'right-top', // 'right-top' - 'right-bottom' - 'left-top' - 'left-bottom' - distance: '10px', - opacity: 1, - borderRadius: '5px', - rtl: false, - timeout: 3000, - messageMaxLength: 110, - backOverlay: false, - backOverlayColor: 'rgba(0,0,0,0.5)', - plainText: true, - showOnlyTheLastOne: false, - clickToClose: false, - - ID: 'NotiflixNotify', - className: 'notiflix-notify', - zindex: 4001, - useGoogleFont: true, - fontFamily: 'Quicksand', - fontSize: '13px', - cssAnimation: true, - cssAnimationDuration: 400, - cssAnimationStyle: 'fade', // 'fade' - 'zoom' - 'from-right' - 'from-top' - 'from-bottom' - 'from-left' - closeButton: false, - useIcon: true, - useFontAwesome: false, - fontAwesomeIconStyle: 'basic', // 'basic' - 'shadow' - fontAwesomeIconSize: '34px', - - success: { - background: '#32c682', - textColor: '#fff', - childClassName: 'success', - notiflixIconColor: 'rgba(0,0,0,0.2)', - fontAwesomeClassName: 'fas fa-check-circle', - fontAwesomeIconColor: 'rgba(0,0,0,0.2)', - }, - - failure: { - background: '#ff5549', - textColor: '#fff', - childClassName: 'failure', - notiflixIconColor: 'rgba(0,0,0,0.2)', - fontAwesomeClassName: 'fas fa-times-circle', - fontAwesomeIconColor: 'rgba(0,0,0,0.2)', - }, - - warning: { - background: '#eebf31', - textColor: '#fff', - childClassName: 'warning', - notiflixIconColor: 'rgba(0,0,0,0.2)', - fontAwesomeClassName: 'fas fa-exclamation-circle', - fontAwesomeIconColor: 'rgba(0,0,0,0.2)', - }, - - info: { - background: '#26c0d3', - textColor: '#fff', - childClassName: 'info', - notiflixIconColor: 'rgba(0,0,0,0.2)', - fontAwesomeClassName: 'fas fa-info-circle', - fontAwesomeIconColor: 'rgba(0,0,0,0.2)', - }, - }; - // Notiflix: Notify Default Settings off - - // Notiflix: Report Default Settings on - var reportSettings = { - ID: 'NotiflixReportWrap', // can not customizable - className: 'notiflix-report', - width: '320px', - backgroundColor: '#f8f8f8', - borderRadius: '25px', - rtl: false, - zindex: 4002, - backOverlay: true, - backOverlayColor: 'rgba(0, 0, 0, 0.5)', - useGoogleFont: true, - fontFamily: 'Quicksand', - svgSize: '110px', - plainText: true, - titleFontSize: '16px', - titleMaxLength: 34, - messageFontSize: '13px', - messageMaxLength: 400, - buttonFontSize: '14px', - buttonMaxLength: 34, - cssAnimation: true, - cssAnimationDuration: 360, - cssAnimationStyle: 'fade', // 'fade' - 'zoom' - - success: { - svgColor: '#32c682', - titleColor: '#1e1e1e', - messageColor: '#242424', - buttonBackground: '#32c682', - buttonColor: '#fff', - }, - - failure: { - svgColor: '#ff5549', - titleColor: '#1e1e1e', - messageColor: '#242424', - buttonBackground: '#ff5549', - buttonColor: '#fff', - }, - - warning: { - svgColor: '#eebf31', - titleColor: '#1e1e1e', - messageColor: '#242424', - buttonBackground: '#eebf31', - buttonColor: '#fff', - }, - - info: { - svgColor: '#26c0d3', - titleColor: '#1e1e1e', - messageColor: '#242424', - buttonBackground: '#26c0d3', - buttonColor: '#fff', - }, - }; - // Notiflix: Report Default Settings off - - // Notiflix: Confirm Default Settings on - var confirmSettings = { - ID: 'NotiflixConfirmWrap', // can not customizable - className: 'notiflix-confirm', - width: '300px', - zindex: 4003, - position: 'center', // 'center' - 'center-top' - 'right-top' - 'right-bottom' - 'left-top' - 'left-bottom' - distance: '10px', - backgroundColor: '#f8f8f8', - borderRadius: '25px', - backOverlay: true, - backOverlayColor: 'rgba(0,0,0,0.5)', - rtl: false, - useGoogleFont: true, - fontFamily: 'Quicksand', - cssAnimation: true, - cssAnimationStyle: 'fade', // 'zoom' - 'fade' - cssAnimationDuration: 300, - plainText: true, - - titleColor: '#32c682', - titleFontSize: '16px', - titleMaxLength: 34, - - messageColor: '#1e1e1e', - messageFontSize: '14px', - messageMaxLength: 110, - - buttonsFontSize: '15px', - buttonsMaxLength: 34, - okButtonColor: '#f8f8f8', - okButtonBackground: '#32c682', - cancelButtonColor: '#f8f8f8', - cancelButtonBackground: '#a9a9a9', - }; - // Notiflix: Confirm Default Settings off - - // Notiflix: Loading Default Settings on - var loadingSettings = { - ID: 'NotiflixLoadingWrap', // can not customizable - className: 'notiflix-loading', - zindex: 4000, - backgroundColor: 'rgba(0,0,0,0.8)', - rtl: false, - useGoogleFont: true, - fontFamily: 'Quicksand', - cssAnimation: true, - cssAnimationDuration: 400, - clickToClose: false, - customSvgUrl: null, - svgSize: '80px', - svgColor: '#32c682', - messageID: 'NotiflixLoadingMessage', - messageFontSize: '15px', - messageMaxLength: 34, - messageColor: '#dcdcdc', - }; - // Notiflix: Loading Default Settings off - - // Notiflix: Block Default Settings on - var blockSettings = { - ID: 'NotiflixBlockWrap', // can not customizable - querySelectorLimit: 200, - className: 'notiflix-block', - position: 'absolute', - zindex: 1000, - backgroundColor: 'rgba(255,255,255,0.9)', - rtl: false, - useGoogleFont: true, - fontFamily: 'Quicksand', - cssAnimation: true, - cssAnimationDuration: 300, - svgSize: '45px', - svgColor: '#383838', - messageFontSize: '14px', - messageMaxLength: 34, - messageColor: '#383838', - }; - // Notiflix: Block Default Settings off - - // Notiflix: Extend on - var extendNotiflix = function () { - // variables - var extended = {}; - var deep = false; - var i = 0; - // check if a deep merge - if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]') { - deep = arguments[0]; - i++; - } - // merge the object into the extended object - var merge = function (obj) { - for (var prop in obj) { - if (Object.prototype.hasOwnProperty.call(obj, prop)) { - // if property is an object, merge properties - if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]') { - extended[prop] = extendNotiflix(extended[prop], obj[prop]); - } else { - extended[prop] = obj[prop]; - } - } - } - }; - // loop through each object and conduct a merge - for (; i < arguments.length; i++) { - merge(arguments[i]); - } - return extended; - }; - // Notiflix: Extend off - - // Notiflix: Plaintext on - var notiflixPlaintext = function (html) { - var htmlPool = document.createElement('div'); - htmlPool.innerHTML = html; - return htmlPool.textContent || htmlPool.innerText || ''; - }; - // Notiflix: Plaintext off - - // Notiflix: GoogleFont on - var notiflixGoogleFont = function (use, family) { - if (!document.getElementById('NotiflixQuicksand') && use && (family && typeof family === 'string' && family.toLowerCase() === 'quicksand')) { - // google fonts dns prefetch on - var dns = ''; - var dnsRange = document.createRange(); - dnsRange.selectNode(document.head); - var dnsFragment = dnsRange.createContextualFragment(dns); - document.head.appendChild(dnsFragment); - // google fonts dns prefetch off - - // google fonts style on - var font = ''; - var fontRange = document.createRange(); - fontRange.selectNode(document.head); - var fontFragment = fontRange.createContextualFragment(font); - document.head.appendChild(fontFragment); - // google fonts style off - } - }; - // Notiflix: GoogleFont off - - // Notiflix: Console Error on - var notiflixConsoleError = function (title, message) { - return console.error('%c ' + title + ' ', 'padding:2px;border-radius:20px;color:#fff;background:#ff5549', '\n' + message + '\nVisit documentation page to learn more: https://www.notiflix.com/documentation'); - }; - // Notiflix: Console Error off - - // Notiflix: Console Log on - var notiflixConsoleLog = function (title, message) { - return console.log('%c ' + title + ' ', 'padding:2px;border-radius:20px;color:#fff;background:#26c0d3', '\n' + message + '\nVisit documentation page to learn more: https://www.notiflix.com/documentation'); - }; - // Notiflix: Console Log off - - // Notiflix: Main on - var newNotifySettings; - var newReportSettings; - var newConfirmSettings; - var newLoadingSettings; - var newBlockSettings; - var Notiflix = { - // Notify on - Notify: { - - // Init - Init: function (userNotifyOpt) { - // extend options - newNotifySettings = extendNotiflix(true, notifySettings, userNotifyOpt); - // use GoogleFonts if "Quicksand" - notiflixGoogleFont(newNotifySettings.useGoogleFont, newNotifySettings.fontFamily); - }, - - // Merge First Init - Merge: function (userNotifyExtend) { - // if initialized already - if (newNotifySettings) { - newNotifySettings = extendNotiflix(true, newNotifySettings, userNotifyExtend); - } - // initialize first - else { - notiflixConsoleError('Notiflix Error', 'You have to initialize the Notify module before call Merge function.'); - return false; - } - }, - - // Display Notification: Success - Success: function (message, callback) { - // if not initialized pretend like init - if (!newNotifySettings) { - Notiflix.Notify.Init({}); - } - var theType = newNotifySettings.success; - NotiflixNotify(message, callback, theType, 'Success'); - }, - - // Display Notification: Failure - Failure: function (message, callback) { - // if not initialized pretend like init - if (!newNotifySettings) { - Notiflix.Notify.Init({}); - } - var theType = newNotifySettings.failure; - NotiflixNotify(message, callback, theType, 'Failure'); - }, - - // Display Notification: Warning - Warning: function (message, callback) { - // if not initialized pretend like init - if (!newNotifySettings) { - Notiflix.Notify.Init({}); - } - var theType = newNotifySettings.warning; - NotiflixNotify(message, callback, theType, 'Warning'); - }, - - // Display Notification: Info - Info: function (message, callback) { - // if not initialized pretend like init - if (!newNotifySettings) { - Notiflix.Notify.Init({}); - } - var theType = newNotifySettings.info; - NotiflixNotify(message, callback, theType, 'Info'); - }, - }, - // Notify off - - // Report on - Report: { - - // Init - Init: function (userReportOpt) { - // extend options - newReportSettings = extendNotiflix(true, reportSettings, userReportOpt); - // use GoogleFonts if "Quicksand" - notiflixGoogleFont(newReportSettings.useGoogleFont, newReportSettings.fontFamily); - }, - - // Merge First Init - Merge: function (userReportExtend) { - // if initialized already - if (newReportSettings) { - newReportSettings = extendNotiflix(true, newReportSettings, userReportExtend); - } - // initialize first - else { - notiflixConsoleError('Notiflix Error', 'You have to initialize the Report module before call Merge function.'); - return false; - } - }, - - // Display Report: Success - Success: function (title, message, buttonText, buttonCallback) { - // if not initialized pretend like init - if (!newReportSettings) { - Notiflix.Report.Init({}); - } - var theType = newReportSettings.success; - NotiflixReport(title, message, buttonText, buttonCallback, theType, 'Success'); - }, - - // Display Report: Failure - Failure: function (title, message, buttonText, buttonCallback) { - // if not initialized pretend like init - if (!newReportSettings) { - Notiflix.Report.Init({}); - } - var theType = newReportSettings.failure; - NotiflixReport(title, message, buttonText, buttonCallback, theType, 'Failure'); - }, - - // Display Report: Warning - Warning: function (title, message, buttonText, buttonCallback) { - // if not initialized pretend like init - if (!newReportSettings) { - Notiflix.Report.Init({}); - } - var theType = newReportSettings.warning; - NotiflixReport(title, message, buttonText, buttonCallback, theType, 'Warning'); - }, - - // Display Report: Info - Info: function (title, message, buttonText, buttonCallback) { - // if not initialized pretend like init - if (!newReportSettings) { - Notiflix.Report.Init({}); - } - var theType = newReportSettings.info; - NotiflixReport(title, message, buttonText, buttonCallback, theType, 'Info'); - }, - }, - // Report off - - // Confirm on - Confirm: { - - // Init - Init: function (userConfirmOpt) { - // extend options - newConfirmSettings = extendNotiflix(true, confirmSettings, userConfirmOpt); - // use GoogleFonts if "Quicksand" - notiflixGoogleFont(newConfirmSettings.useGoogleFont, newConfirmSettings.fontFamily); - }, - - // Merge First Init - Merge: function (userConfirmExtend) { - // if initialized already - if (newConfirmSettings) { - newConfirmSettings = extendNotiflix(true, newConfirmSettings, userConfirmExtend); - } - // initialize first - else { - notiflixConsoleError('Notiflix Error', 'You have to initialize the Confirm module before call Merge function.'); - return false; - } - }, - - // Display Confirm: Show - Show: function (title, message, okText, cancelText, okCallback, cancelCallback) { - if (!title) { title = 'Notiflix Confirm'; } - if (!message) { message = 'Do you agree with me?'; } - if (!okText) { okText = 'Yes'; } - if (!cancelText) { cancelText = 'No'; } - if (!okCallback) { okCallback = undefined; } - if (!cancelCallback) { cancelCallback = undefined; } - NotiflixConfirm(title, message, okText, cancelText, okCallback, cancelCallback); - }, - }, - // Confirm off - - // Loading on - Loading: { - - // Init - Init: function (userLoadingOpt) { - // extend options - newLoadingSettings = extendNotiflix(true, loadingSettings, userLoadingOpt); - // use GoogleFonts if "Quicksand" - notiflixGoogleFont(newLoadingSettings.useGoogleFont, newLoadingSettings.fontFamily); - }, - - // Merge First Init - Merge: function (userLoadingExtend) { - // if initialized already - if (newLoadingSettings) { - newLoadingSettings = extendNotiflix(true, newLoadingSettings, userLoadingExtend); - } - // initialize first - else { - notiflixConsoleError('Notiflix Error', 'You have to initialize the Loading module before call Merge function.'); - return false; - } - }, - - // Display Loading: Standard - Standard: function (message) { - NotiflixLoading(message, 'standard', true, 0); // true => display || 0 => delay - }, - - // Display Loading: Hourglass - Hourglass: function (message) { - NotiflixLoading(message, 'hourglass', true, 0); // true => display || 0 => delay - }, - - // Display Loading: Circle - Circle: function (message) { - NotiflixLoading(message, 'circle', true, 0); // true => display || 0 => delay - }, - - // Display Loading: Arrows - Arrows: function (message) { - NotiflixLoading(message, 'arrows', true, 0); // true => display || 0 => delay - }, - - // Display Loading: Dots - Dots: function (message) { - NotiflixLoading(message, 'dots', true, 0); // true => display || 0 => delay - }, - - // Display Loading: Pulse - Pulse: function (message) { - NotiflixLoading(message, 'pulse', true, 0); // true => display || 0 => delay - }, - - // Display Loading: Custom - Custom: function (message) { - NotiflixLoading(message, 'custom', true, 0); // true => display || 0 => delay - }, - - // Display Loading: Notiflix - Notiflix: function (message) { - NotiflixLoading(message, 'notiflix', true, 0); // true => display || 0 => delay - }, - - // Remove Loading - Remove: function (theDelay) { - if (!theDelay) { theDelay = 0; } - NotiflixLoading(false, false, false, theDelay); // false = Remove - }, - - // Change The Message - Change: function (newMessage) { - NotiflixLoadingChange(newMessage); - }, - }, - // Loading off - - // Block on - Block: { - - // Initialize - Init: function (userBlockOpt) { - // extend options - newBlockSettings = extendNotiflix(true, blockSettings, userBlockOpt); - // use GoogleFonts if "Quicksand" - notiflixGoogleFont(newBlockSettings.useGoogleFont, newBlockSettings.fontFamily); - }, - - // Merge First Initialize - Merge: function (userBlockExtend) { - // if initialized already - if (newBlockSettings) { - newBlockSettings = extendNotiflix(true, newBlockSettings, userBlockExtend); - } - // initialize first - else { - notiflixConsoleError('Notiflix Error', 'You have to initialize the "Notiflix.Block" module before call Merge function.'); - return false; - } - }, - - // Display Block: Standard - Standard: function (selector, message) { - var block = true; - var theIcon = 'standard'; - NotiflixBlockUnblockElement(block, selector, theIcon, message); - }, - - // Display Block: Hourglass - Hourglass: function (selector, message) { - var block = true; - var theIcon = 'hourglass'; - NotiflixBlockUnblockElement(block, selector, theIcon, message); - }, - - // Display Block: Circle - Circle: function (selector, message) { - var block = true; - var theIcon = 'circle'; - NotiflixBlockUnblockElement(block, selector, theIcon, message); - }, - - // Display Block: Arrows - Arrows: function (selector, message) { - var block = true; - var theIcon = 'arrows'; - NotiflixBlockUnblockElement(block, selector, theIcon, message); - }, - - // Display Block: Dots - Dots: function (selector, message) { - var block = true; - var theIcon = 'dots'; - NotiflixBlockUnblockElement(block, selector, theIcon, message); - }, - - // Display Block: Pulse - Pulse: function (selector, message) { - var block = true; - var theIcon = 'pulse'; - NotiflixBlockUnblockElement(block, selector, theIcon, message); - }, - - // Remove Block - Remove: function (selector, delay) { - var block = false; - var theIcon = null; - var message = null; - NotiflixBlockUnblockElement(block, selector, theIcon, message, delay); - }, - }, - // Block off - }; - // Notiflix: Main off - - - // Notiflix: Notify Single on - var notiflixNotifyCount = 0; - var NotiflixNotify = function (message, callback, theType, staticType) { - if (arguments && arguments.length === 4) { - - // notify counter on - notiflixNotifyCount++; - // notify counter off - - // if no message on - if (!message) { - message = 'Notiflix ' + staticType; - } - // if no message off - - // if plainText true = HTML tags not allowed on - if (newNotifySettings.plainText) { - message = notiflixPlaintext(message); // message plain text - } - // if plainText true = HTML tags not allowed off - - // if plainText false but the message length more than messageMaxLength = HTML tags error on - if (!newNotifySettings.plainText && message.length > newNotifySettings.messageMaxLength) { - Notiflix.Notify.Merge({ closeButton: true, plainText: false, }); - message = 'HTML Tags Error: Your content length is more than "messageMaxLength" option.'; // message html error - } - // if plainText false but the message length more than messageMaxLength = HTML tags error off - - // message max length substring on - if (message.length > newNotifySettings.messageMaxLength) { - message = message.substring(0, newNotifySettings.messageMaxLength) + '...'; - } - // message max length substring off - - // font awesome icon style on - if (newNotifySettings.fontAwesomeIconStyle === 'shadow') { - theType.fontAwesomeIconColor = theType.background; - } - // font awesome icon style off - - // if cssAnimaion false -> duration on - if (!newNotifySettings.cssAnimation) { - newNotifySettings.cssAnimationDuration = 0; - } - // if cssAnimaion false -> duration off - - // notify wrap on - var docBody = document.body; - var ntflxNotifyWrap = document.createElement('div'); - ntflxNotifyWrap.id = notifySettings.wrapID; - ntflxNotifyWrap.style.width = newNotifySettings.width; - ntflxNotifyWrap.style.zIndex = newNotifySettings.zindex; - ntflxNotifyWrap.style.opacity = newNotifySettings.opacity; - - // wrap position on - if (newNotifySettings.position === 'right-bottom') { - ntflxNotifyWrap.style.right = newNotifySettings.distance; - ntflxNotifyWrap.style.bottom = newNotifySettings.distance; - ntflxNotifyWrap.style.top = 'auto'; - ntflxNotifyWrap.style.left = 'auto'; - } else if (newNotifySettings.position === 'left-top') { - ntflxNotifyWrap.style.left = newNotifySettings.distance; - ntflxNotifyWrap.style.top = newNotifySettings.distance; - ntflxNotifyWrap.style.right = 'auto'; - ntflxNotifyWrap.style.bottom = 'auto'; - } else if (newNotifySettings.position === 'left-bottom') { - ntflxNotifyWrap.style.left = newNotifySettings.distance; - ntflxNotifyWrap.style.bottom = newNotifySettings.distance; - ntflxNotifyWrap.style.top = 'auto'; - ntflxNotifyWrap.style.right = 'auto'; - } else { // 'right-top' or else - ntflxNotifyWrap.style.right = newNotifySettings.distance; - ntflxNotifyWrap.style.top = newNotifySettings.distance; - ntflxNotifyWrap.style.left = 'auto'; - ntflxNotifyWrap.style.bottom = 'auto'; - } - // wrap position off - - // if background overlay true on - var notifyOverlay; - if (newNotifySettings.backOverlay) { - notifyOverlay = document.createElement('div'); - notifyOverlay.id = newNotifySettings.ID + 'Overlay'; - notifyOverlay.style.width = '100%'; - notifyOverlay.style.height = '100%'; - notifyOverlay.style.position = 'fixed'; - notifyOverlay.style.zIndex = newNotifySettings.zindex; - notifyOverlay.style.left = 0; - notifyOverlay.style.top = 0; - notifyOverlay.style.right = 0; - notifyOverlay.style.bottom = 0; - notifyOverlay.style.background = newNotifySettings.backOverlayColor; - notifyOverlay.className = (newNotifySettings.cssAnimation ? 'with-animation' : ''); - notifyOverlay.style.animationDuration = (newNotifySettings.cssAnimation) ? newNotifySettings.cssAnimationDuration + 'ms' : ''; - if (!document.getElementById(notifyOverlay.id)) { - docBody.appendChild(notifyOverlay); - } - } - // if background overlay true off - - if (!document.getElementById(ntflxNotifyWrap.id)) { - docBody.appendChild(ntflxNotifyWrap); - } - // notify wrap off - - // notify content on - var ntflxNotify = document.createElement('div'); - ntflxNotify.id = newNotifySettings.ID + '-' + notiflixNotifyCount; - ntflxNotify.className = newNotifySettings.className + ' ' + theType.childClassName + ' ' + (newNotifySettings.cssAnimation ? 'with-animation' : '') + ' ' + (newNotifySettings.useIcon ? 'with-icon' : '') + ' nx-' + newNotifySettings.cssAnimationStyle + ' ' + (newNotifySettings.closeButton && !callback ? 'with-close-button' : '') + ' ' + (callback && typeof callback === 'function' ? 'with-callback' : '') + ' ' + (newNotifySettings.clickToClose ? 'click-to-close' : ''); - ntflxNotify.style.fontSize = newNotifySettings.fontSize; - ntflxNotify.style.color = theType.textColor; - ntflxNotify.style.background = theType.background; - ntflxNotify.style.borderRadius = newNotifySettings.borderRadius; - - // rtl on - if (newNotifySettings.rtl) { - ntflxNotify.setAttribute('dir', 'rtl'); - ntflxNotify.classList.add('rtl-on'); - } - // rtl off - - // font-family on - ntflxNotify.style.fontFamily = '"' + newNotifySettings.fontFamily + '"' + ', sans-serif'; - // font-family off - - // use css animation on - if (newNotifySettings.cssAnimation) { - ntflxNotify.style.animationDuration = newNotifySettings.cssAnimationDuration + 'ms'; - } - // use css animation off - - // close button element on - var closeButtonHTML = ''; - if (newNotifySettings.closeButton && !callback) { - closeButtonHTML = ''; - } - // close buttpon element off - - // use icon on - if (newNotifySettings.useIcon) { - // use font awesome - if (newNotifySettings.useFontAwesome) { - ntflxNotify.innerHTML = '' + message + '' + (newNotifySettings.closeButton ? closeButtonHTML : ''); - } - // use notiflix icon - else { - var svgIcon; - if (staticType === 'Success') { // success - svgIcon = ''; - } else if (staticType === 'Failure') { // failure - svgIcon = ''; - } else if (staticType === 'Warning') { // warning - svgIcon = ''; - } else if (staticType === 'Info') { // info - svgIcon = ''; - } else { - svgIcon = ''; - } - ntflxNotify.innerHTML = svgIcon + '' + message + '' + (newNotifySettings.closeButton ? closeButtonHTML : ''); - } - } - // without icon - else { - ntflxNotify.innerHTML = '' + message + '' + (newNotifySettings.closeButton ? closeButtonHTML : ''); - } - // use icon off - // notify content off - - // notify append or prepend on - if (newNotifySettings.position === 'left-bottom' || newNotifySettings.position === 'right-bottom') { // the new one will be first - var notifyWrap = document.getElementById(ntflxNotifyWrap.id); - notifyWrap.insertBefore(ntflxNotify, notifyWrap.firstChild); - } else { - document.getElementById(ntflxNotifyWrap.id).appendChild(ntflxNotify); - } - - if (newNotifySettings.useIcon) { // if useIcon, dynamically vertical align the contents - var messageIcon = document.getElementById(ntflxNotify.id).querySelectorAll('.nmi')[0]; - var messageIconH = 40; - // if font awesome - if (newNotifySettings.useFontAwesome) { - messageIconH = Math.round(parseInt(messageIcon.offsetHeight)); - } - // if notiflix SVG - else { - var SvgBBox = messageIcon.getBBox(); - messageIconH = Math.round(parseInt(SvgBBox.width)); - } - var messageText = document.getElementById(ntflxNotify.id).querySelectorAll('span')[0]; - var messageTextH = Math.round(messageText.offsetHeight); - if (messageTextH <= messageIconH) { - messageText.style.paddingTop = (messageIconH - messageTextH) / 2 + 'px'; - messageText.style.paddingBottom = (messageIconH - messageTextH) / 2 + 'px'; - } - } - // notify append or prepend off - - // remove by timeout or click on - if (document.getElementById(ntflxNotify.id)) { - // set elements on - var removeDiv = document.getElementById(ntflxNotify.id); - var removeWrap = document.getElementById(ntflxNotifyWrap.id); - var removeOverlay; - if (newNotifySettings.backOverlay) { - removeOverlay = document.getElementById(notifyOverlay.id); - } - // set elements on - - // timeout vars on - var timeoutHide; - var timeoutRemove; - // timeout vars off - - // hide notify elm and hide overlay on - var hideNotifyElementsAndOverlay = function () { - removeDiv.classList.add('remove'); - if (newNotifySettings.backOverlay && removeWrap.childElementCount <= 0) { - removeOverlay.classList.add('remove'); - } - clearTimeout(timeoutHide); - }; - // hide notify elm and hide overlay off - - // remove notify elm and wrapper on - var removeNotifyElmentsAndWrapper = function () { - var notifyExist = document.getElementById(ntflxNotify.id); - if (notifyExist && removeDiv.parentNode !== null) { - removeDiv.parentNode.removeChild(removeDiv); - } - if (removeWrap.childElementCount <= 0 && removeWrap.parentNode !== null) { // if childs count === 0 remove wrap - removeWrap.parentNode.removeChild(removeWrap); - if (newNotifySettings.backOverlay && removeOverlay.parentNode !== null) { - removeOverlay.parentNode.removeChild(removeOverlay); - } - } - clearTimeout(timeoutRemove); - }; - // remove notify elm and wrapper off - - // if close button and callback undefined on - if (newNotifySettings.closeButton && !callback) { - var closeButtonElm = document.getElementById(ntflxNotify.id).querySelectorAll('span.notify-close-button')[0]; - closeButtonElm.addEventListener('click', function () { - hideNotifyElementsAndOverlay(); - var clickToCloseTimeout = setTimeout(function () { - removeNotifyElmentsAndWrapper(); - clearTimeout(clickToCloseTimeout); - }, newNotifySettings.cssAnimationDuration); - }); - } - // if close button and callback undefined off - - // if callback or click to close on - if ((callback && typeof callback === 'function') || newNotifySettings.clickToClose) { - removeDiv.addEventListener('click', function (e) { - if (callback && typeof callback === 'function') { - callback(); - } - hideNotifyElementsAndOverlay(); - var callbackTimeout = setTimeout(function () { - removeNotifyElmentsAndWrapper(); - clearTimeout(callbackTimeout); - }, newNotifySettings.cssAnimationDuration); - }); - } - // if callback or click to close off - - // else auto remove on - if (!newNotifySettings.closeButton && !callback) { - timeoutHide = setTimeout(function () { - hideNotifyElementsAndOverlay(); - }, newNotifySettings.timeout); - timeoutRemove = setTimeout(function () { - removeNotifyElmentsAndWrapper(); - }, newNotifySettings.timeout + newNotifySettings.cssAnimationDuration); - } - // else auto remove off - } - // remove by timeout or click off - - // notify - show only the last one on - if (newNotifySettings.showOnlyTheLastOne && notiflixNotifyCount > 0) { - var allNotifyElmNotTheLastOne = document.querySelectorAll('[id^=' + newNotifySettings.ID + '-]:not([id=' + newNotifySettings.ID + '-' + notiflixNotifyCount + '])'); - for (var i = 0; i < allNotifyElmNotTheLastOne.length; i++) { - var eachNotifyElmNotLastOne = allNotifyElmNotTheLastOne[i]; - if (eachNotifyElmNotLastOne.parentNode !== null) { - eachNotifyElmNotLastOne.parentNode.removeChild(eachNotifyElmNotLastOne); - } - } - } - // notify - show only the last one off - - } else { - notiflixConsoleError('Notiflix Error', 'Where is the arguments?'); - } - }; - // Notiflix: Notify Single off - - - // Notiflix: Report Single on - var NotiflixReport = function (title, message, buttonText, buttonCallback, theType, staticType) { - - // check the arguments on - if (!title) { title = 'Notiflix ' + staticType; } - if (!message) { - if (staticType === 'Success') { - message = '"Do not try to become a person of success but try to become a person of value."

                                      - Albert Einstein'; - } - else if (staticType === 'Failure') { - message = '"Failure is simply the opportunity to begin again, this time more intelligently."

                                      - Henry Ford'; - } - else if (staticType === 'Warning') { - message = '"The peoples who want to live comfortably without producing and fatigue; they are doomed to lose their dignity, then liberty, and then independence and destiny."

                                      - Mustafa Kemal Ataturk'; - } - else if (staticType === 'Info') { - message = '"Knowledge rests not upon truth alone, but upon error also."

                                      - Carl Gustav Jung'; - } - } - if (!buttonText) { buttonText = 'Okay'; } - if (!buttonCallback) { buttonCallback = undefined; } - // check the arguments off - - // if plainText true = HTML tags not allowed on - if (newReportSettings.plainText) { - title = notiflixPlaintext(title); - message = notiflixPlaintext(message); - buttonText = notiflixPlaintext(buttonText); - } - // if plainText true = HTML tags not allowed off - - // if plainText false but the contents length more than *MaxLength = HTML tags error on - if (!newReportSettings.plainText) { - if (title.length > newReportSettings.titleMaxLength) { - title = 'HTML Tags Error'; // title html error - message = 'Your Title content length is more than "titleMaxLength" option.'; // message html error - buttonText = 'Okay'; // button html error - } - if (message.length > newReportSettings.messageMaxLength) { - title = 'HTML Tags Error'; // title html error - message = 'Your Message content length is more than "messageMaxLength" option.'; // message html error - buttonText = 'Okay'; // button html error - } - if (buttonText.length > newReportSettings.buttonMaxLength) { - title = 'HTML Tags Error'; // title html error - message = 'Your Button content length is more than "buttonMaxLength" option.'; // message html error - buttonText = 'Okay'; // button html error - } - } - // if plainText false but the contents length more than *MaxLength = HTML tags error off - - // max length on - if (title.length > newReportSettings.titleMaxLength) { - title = title.substring(0, newReportSettings.titleMaxLength) + '...'; - } - if (message.length > newReportSettings.messageMaxLength) { - message = message.substring(0, newReportSettings.messageMaxLength) + '...'; - } - if (buttonText.length > newReportSettings.buttonMaxLength) { - buttonText = buttonText.substring(0, newReportSettings.buttonMaxLength) + '...'; - } - // max length off - - // if cssAnimaion false -> duration on - if (!newReportSettings.cssAnimation) { - newReportSettings.cssAnimationDuration = 0; - } - // if cssAnimaion false -> duration off - - // report wrap on - var docBody = document.body; - var ntflxReportWrap = document.createElement('div'); - ntflxReportWrap.id = reportSettings.ID; - ntflxReportWrap.className = newReportSettings.className; - ntflxReportWrap.style.width = newReportSettings.width; - ntflxReportWrap.style.zIndex = newReportSettings.zindex; - ntflxReportWrap.style.borderRadius = newReportSettings.borderRadius; - ntflxReportWrap.style.fontFamily = '"' + newReportSettings.fontFamily + '"' + ', sans-serif'; - - // rtl on - if (newReportSettings.rtl) { - ntflxReportWrap.setAttribute('dir', 'rtl'); - ntflxReportWrap.classList.add('rtl-on'); - } - // rtl off - - // overlay on - var reportOverlay = ''; - if (newReportSettings.backOverlay) { - reportOverlay = '
                                      '; - } - // overlay off - - // svg icon on - var svgIcon = ''; - if (staticType === 'Success') { - svgIcon = notiflixReportSvgSuccess(newReportSettings.svgSize, theType.svgColor); - } else if (staticType === 'Failure') { - svgIcon = notiflixReportSvgFailure(newReportSettings.svgSize, theType.svgColor); - } else if (staticType === 'Warning') { - svgIcon = notiflixReportSvgWarning(newReportSettings.svgSize, theType.svgColor); - } else if (staticType === 'Info') { - svgIcon = notiflixReportSvgInfo(newReportSettings.svgSize, theType.svgColor); - } - // svg icon off - - ntflxReportWrap.innerHTML = reportOverlay + '
                                      ' + - '
                                      ' + svgIcon + '
                                      ' + - '
                                      ' + title + '
                                      ' + - '

                                      ' + message + '

                                      ' + - '' + buttonText + '' + - '
                                      '; - - // if there is no report element - if (!document.getElementById(ntflxReportWrap.id)) { - // append - docBody.appendChild(ntflxReportWrap); - - // vertical align on - var windowH = Math.round(window.innerHeight); - var reportH = Math.round(document.getElementById(ntflxReportWrap.id).offsetHeight); - ntflxReportWrap.style.top = (windowH - reportH) / 2 + 'px'; - // vertical align off - - // callback on - var getReportWrap = document.getElementById(ntflxReportWrap.id); - var reportButton = document.getElementById('NXReportButton'); - reportButton.addEventListener('click', function () { - // if callback on - if (buttonCallback && typeof buttonCallback === 'function') { - buttonCallback(); - } - // if callback off - - // remove element on - getReportWrap.classList.add('remove'); - var timeout = setTimeout(function () { - if (getReportWrap.parentNode !== null) { - getReportWrap.parentNode.removeChild(getReportWrap); - } - clearTimeout(timeout); - }, newReportSettings.cssAnimationDuration); - // remove element off - }); - // callback off - - } - // report wrap off - - }; - // Notiflix: Report Single off - - - // Notiflix: Confirm Single on - var NotiflixConfirm = function (title, message, okButtonText, cancelButtonText, okButtonCallback, cancelButtonCallback) { - // if not initialized pretend like init - if (!newConfirmSettings) { - Notiflix.Confirm.Init({}); - } - - // if plainText true => HTML tags not allowed on - if (newConfirmSettings.plainText) { - title = notiflixPlaintext(title); - message = notiflixPlaintext(message); - okButtonText = notiflixPlaintext(okButtonText); - cancelButtonText = notiflixPlaintext(cancelButtonText); - } - // if plainText true => HTML tags not allowed off - - // if plainText false but the contents length more than *MaxLength = HTML tags error on - if (!newConfirmSettings.plainText) { - if (title.length > newConfirmSettings.titleMaxLength) { - title = 'HTML Tags Error'; // title html error - message = 'Your Title content length is more than "titleMaxLength" option.'; // message html error - okButtonText = 'Okay'; // button html error - cancelButtonText = '...'; // button html error - } - if (message.length > newConfirmSettings.messageMaxLength) { - title = 'HTML Tags Error'; // title html error - message = 'Your Message content length is more than "messageMaxLength" option.'; // message html error - okButtonText = 'Okay'; // button html error - cancelButtonText = '...'; // button html error - } - if ((okButtonText.length || cancelButtonText.length) > newConfirmSettings.buttonsMaxLength) { - title = 'HTML Tags Error'; // title html error - message = 'Your Buttons contents length is more than "buttonsMaxLength" option.'; // message html error - okButtonText = 'Okay'; // button html error - cancelButtonText = '...'; // button html error - } - } - // if plainText false but the contents length more than *MaxLength = HTML tags error off - - // max length on - if (title.length > newConfirmSettings.titleMaxLength) { - title = title.substring(0, newConfirmSettings.titleMaxLength) + '...'; - } - if (message.length > newConfirmSettings.messageMaxLength) { - message = message.substring(0, newConfirmSettings.messageMaxLength) + '...'; - } - if (okButtonText.length > newConfirmSettings.buttonsMaxLength) { - okButtonText = okButtonText.substring(0, newConfirmSettings.buttonsMaxLength) + '...'; - } - if (cancelButtonText.length > newConfirmSettings.buttonsMaxLength) { - cancelButtonText = cancelButtonText.substring(0, newConfirmSettings.buttonsMaxLength) + '...'; - } - // max length off - - // if cssAnimaion false -> duration on - if (!newConfirmSettings.cssAnimation) { - newConfirmSettings.cssAnimationDuration = 0; - } - // if cssAnimaion false -> duration off - - // confirm wrap on - var docBody = document.body; - var ntflxConfirmWrap = document.createElement('div'); - ntflxConfirmWrap.id = confirmSettings.ID; - ntflxConfirmWrap.className = newConfirmSettings.className + (newConfirmSettings.cssAnimation ? ' with-animation nx-' + newConfirmSettings.cssAnimationStyle : ''); - ntflxConfirmWrap.style.width = newConfirmSettings.width; - ntflxConfirmWrap.style.zIndex = newConfirmSettings.zindex; - - // rtl on - if (newConfirmSettings.rtl) { - ntflxConfirmWrap.setAttribute('dir', 'rtl'); - ntflxConfirmWrap.classList.add('rtl-on'); - } - // rtl off - - // font-family on - ntflxConfirmWrap.style.fontFamily = '"' + newConfirmSettings.fontFamily + '"' + ', sans-serif'; - // font-family off - - // if background overlay true on - var confirmOverlay = ''; - if (newConfirmSettings.backOverlay) { - confirmOverlay = '
                                      '; - } - // if background overlay true off - - // if have a callback => add cancel button on - var cancelButtonHTML = ''; - if (okButtonCallback) { - cancelButtonHTML = '' + cancelButtonText + ''; - } - // if have a callback => add cancel button off - - ntflxConfirmWrap.innerHTML = confirmOverlay + - '
                                      ' + - '
                                      ' + - '
                                      ' + title + '
                                      ' + - '

                                      ' + message + '

                                      ' + - '
                                      ' + - '
                                      ' + - '' + okButtonText + '' + - cancelButtonHTML + - '
                                      ' + - '
                                      '; - // confirm wrap off - - // if there is no confirm box on - if (!document.getElementById(ntflxConfirmWrap.id)) { - docBody.appendChild(ntflxConfirmWrap); - - // position on - if (newConfirmSettings.position === 'center') { // if center-center - var windowH = Math.round(window.innerHeight); - var confirmH = Math.round(document.getElementById(ntflxConfirmWrap.id).offsetHeight); - ntflxConfirmWrap.style.top = (windowH - confirmH) / 2 + 'px'; - ntflxConfirmWrap.style.left = newConfirmSettings.distance; - ntflxConfirmWrap.style.right = newConfirmSettings.distance; - ntflxConfirmWrap.style.bottom = 'auto'; - ntflxConfirmWrap.style.margin = 'auto'; - } else if (newConfirmSettings.position === 'right-top') { // if right-top - ntflxConfirmWrap.style.right = newConfirmSettings.distance; - ntflxConfirmWrap.style.top = newConfirmSettings.distance; - ntflxConfirmWrap.style.bottom = 'auto'; - ntflxConfirmWrap.style.left = 'auto'; - ntflxConfirmWrap.style.margin = 'auto'; - } else if (newConfirmSettings.position === 'right-bottom') { // if right-bottom - ntflxConfirmWrap.style.right = newConfirmSettings.distance; - ntflxConfirmWrap.style.bottom = newConfirmSettings.distance; - ntflxConfirmWrap.style.top = 'auto'; - ntflxConfirmWrap.style.left = 'auto'; - ntflxConfirmWrap.style.margin = 'auto'; - } else if (newConfirmSettings.position === 'left-top') { // if left-top - ntflxConfirmWrap.style.left = newConfirmSettings.distance; - ntflxConfirmWrap.style.top = newConfirmSettings.distance; - ntflxConfirmWrap.style.right = 'auto'; - ntflxConfirmWrap.style.bottom = 'auto'; - ntflxConfirmWrap.style.margin = 'auto'; - } else if (newConfirmSettings.position === 'left-bottom') { // if left-bottom - ntflxConfirmWrap.style.left = newConfirmSettings.distance; - ntflxConfirmWrap.style.bottom = newConfirmSettings.distance; - ntflxConfirmWrap.style.top = 'auto'; - ntflxConfirmWrap.style.right = 'auto'; - ntflxConfirmWrap.style.margin = 'auto'; - } else { // if center-top - ntflxConfirmWrap.style.top = newConfirmSettings.distance; - ntflxConfirmWrap.style.left = 0; - ntflxConfirmWrap.style.right = 0; - ntflxConfirmWrap.style.bottom = 'auto'; - ntflxConfirmWrap.style.margin = 'auto'; - } - // position off - - // buttons listener on - var confirmCloseWrap = document.getElementById(ntflxConfirmWrap.id); - var okButton = document.getElementById('NXConfirmButtonOk'); - - // ok button listener on - okButton.addEventListener('click', function () { - // if ok callback && if ok callback is a function - if (okButtonCallback && typeof okButtonCallback === 'function') { - okButtonCallback(); - } - confirmCloseWrap.classList.add('remove'); - - var timeout = setTimeout(function () { - if (confirmCloseWrap.parentNode !== null) { - confirmCloseWrap.parentNode.removeChild(confirmCloseWrap); - clearTimeout(timeout); - } - }, newConfirmSettings.cssAnimationDuration); - }); - // ok button listener off - - // if ok callback && if ok callback a function => add Cancel Button listener on - if (okButtonCallback && typeof okButtonCallback === 'function') { - // cancel button listener on - var cancelButton = document.getElementById('NXConfirmButtonCancel'); - cancelButton.addEventListener('click', function () { - // if cancel callback && if cancel callback a function - if (cancelButtonCallback && typeof cancelButtonCallback === 'function') { - cancelButtonCallback(); - } - confirmCloseWrap.classList.add('remove'); - - var timeout = setTimeout(function () { - if (confirmCloseWrap.parentNode !== null) { - confirmCloseWrap.parentNode.removeChild(confirmCloseWrap); - clearTimeout(timeout); - } - }, newConfirmSettings.cssAnimationDuration); - }); - // cancel button listener off - } - // if ok callback && if ok callback a function => add Cancel Button listener off - // buttons listener off - } - // if there is no confirm box off - }; - // Notiflix: Confirm Single off - - - // Notiflix: Loading Single on - var NotiflixLoading = function (message, iconType, display, theDelay) { - // if not initialized pretend like init - if (!newLoadingSettings) { - Notiflix.Loading.Init({}); - } - // check the message - if (!message) { - message = ''; - } - // show loading - if (display) { - - // if message settings on - if (message.toString().length > newLoadingSettings.messageMaxLength) { - message = notiflixPlaintext(message).toString().substring(0, newLoadingSettings.messageMaxLength) + '...'; - } else { - message = notiflixPlaintext(message).toString(); - } - var intSvgSize = parseInt(newLoadingSettings.svgSize); - var messageHTML = ''; - if (message.length > 0) { - var messagePosTop = Math.round(intSvgSize - (intSvgSize / 4)).toString() + 'px'; - var messageHeight = (parseInt(newLoadingSettings.messageFontSize) * 1.4).toString() + 'px'; - messageHTML = '

                                      ' + message + '

                                      '; - } - // if message settings off - - // if cssAnimaion false -> duration on - if (!newLoadingSettings.cssAnimation) { - newLoadingSettings.cssAnimationDuration = 0; - } - // if cssAnimaion false -> duration off - - // svgIcon on - var svgIcon = ''; - if (iconType === 'standard') { - svgIcon = notiflixIndicatorSvgStandard(newLoadingSettings.svgSize, newLoadingSettings.svgColor); - } else if (iconType === 'hourglass') { - svgIcon = notiflixIndicatorSvgHourglass(newLoadingSettings.svgSize, newLoadingSettings.svgColor); - } else if (iconType === 'circle') { - svgIcon = notiflixIndicatorSvgCircle(newLoadingSettings.svgSize, newLoadingSettings.svgColor); - } else if (iconType === 'arrows') { - svgIcon = notiflixIndicatorSvgArrows(newLoadingSettings.svgSize, newLoadingSettings.svgColor); - } else if (iconType === 'dots') { - svgIcon = notiflixIndicatorSvgDots(newLoadingSettings.svgSize, newLoadingSettings.svgColor); - } else if (iconType === 'pulse') { - svgIcon = notiflixIndicatorSvgPulse(newLoadingSettings.svgSize, newLoadingSettings.svgColor); - } else if (iconType === 'custom' && newLoadingSettings.customSvgUrl !== null) { - svgIcon = 'Notiflix'; - } else if (iconType === 'custom' && newLoadingSettings.customSvgUrl == null) { - notiflixConsoleError('Notiflix Error', 'You have to set a static SVG url to "customSvgUrl" option to use Loading Custom.'); - return false; - } else if (iconType === 'notiflix') { - svgIcon = notiflixIndicatorSvgNotiflix(newLoadingSettings.svgSize, '#f8f8f8', '#32c682'); - } - var svgPosTop = 0; - if (message.length > 0) { - svgPosTop = '-' + Math.round(intSvgSize - (intSvgSize / 4)).toString() + 'px'; - } - var svgIconHTML = '
                                      ' + svgIcon + '
                                      '; - // svgIcon off - - // loading wrap on - var docBody = document.body; - var ntflxLoadingWrap = document.createElement('div'); - ntflxLoadingWrap.id = loadingSettings.ID; - ntflxLoadingWrap.className = newLoadingSettings.className + (newLoadingSettings.cssAnimation ? ' with-animation' : '') + (newLoadingSettings.clickToClose ? ' click-to-close' : ''); - ntflxLoadingWrap.style.zIndex = newLoadingSettings.zindex; - ntflxLoadingWrap.style.background = newLoadingSettings.backgroundColor; - ntflxLoadingWrap.style.animationDuration = newLoadingSettings.cssAnimationDuration + 'ms'; - ntflxLoadingWrap.style.fontFamily = '"' + newLoadingSettings.fontFamily + '"' + ', sans-serif'; - - // rtl on - if (newLoadingSettings.rtl) { - ntflxLoadingWrap.setAttribute('dir', 'rtl'); - ntflxLoadingWrap.classList.add('rtl-on'); - } - // rtl off - - // append on - ntflxLoadingWrap.innerHTML = svgIconHTML + messageHTML; - - // if there is no loading element - if (!document.getElementById(ntflxLoadingWrap.id)) { - // append - docBody.appendChild(ntflxLoadingWrap); - - // if click to close - if (newLoadingSettings.clickToClose) { - var loadingWrapElm = document.getElementById(ntflxLoadingWrap.id); - loadingWrapElm.addEventListener('click', function () { - ntflxLoadingWrap.classList.add('remove'); - var timeout = setTimeout(function () { - if (ntflxLoadingWrap.parentNode !== null) { - ntflxLoadingWrap.parentNode.removeChild(ntflxLoadingWrap); - clearTimeout(timeout); - } - }, newLoadingSettings.cssAnimationDuration); - }); - } - } - // append off - - } - // remove loading - else { - // if there is a loading element - if (document.getElementById(loadingSettings.ID)) { - var loadingElm = document.getElementById(loadingSettings.ID); - var timeout = setTimeout(function () { - loadingElm.classList.add('remove'); - var timeout2 = setTimeout(function () { - if (loadingElm.parentNode !== null) { - loadingElm.parentNode.removeChild(loadingElm); - clearTimeout(timeout2); - } - }, newLoadingSettings.cssAnimationDuration); - clearTimeout(timeout); - }, theDelay); - } - } - }; - // Notiflix: Loading Single off - - // Notiflix: Loading Change Message on - var NotiflixLoadingChange = function (newMessage) { - // check the new message - if (!newMessage) { - newMessage = ''; - } - // if has any loading - if (document.getElementById(loadingSettings.ID)) { - // if there is a new message - if (newMessage.length > 0) { - // max length on - if (newMessage.length > newLoadingSettings.messageMaxLength) { - newMessage = notiflixPlaintext(newMessage).toString().substring(0, newLoadingSettings.messageMaxLength) + '...'; - } else { - newMessage = notiflixPlaintext(newMessage).toString(); - } - // max length off - - // there is a message element - var oldMessageElm = document.getElementById(loadingSettings.ID).getElementsByTagName('p')[0]; - if (oldMessageElm) { - oldMessageElm.innerHTML = newMessage; // change the message - } - // there is no message element - else { - // create a new message element on - var newMessageHTML = document.createElement('p'); - newMessageHTML.id = newLoadingSettings.messageID; - newMessageHTML.className = 'loading-message new'; - newMessageHTML.style.color = newLoadingSettings.messageColor; - newMessageHTML.style.fontSize = newLoadingSettings.messageFontSize; - var intSvgSize = parseInt(newLoadingSettings.svgSize); - var messagePosTop = Math.round(intSvgSize - (intSvgSize / 4)).toString() + 'px'; - newMessageHTML.style.top = messagePosTop; - var messageHeight = (parseInt(newLoadingSettings.messageFontSize) * 1.4).toString() + 'px'; - newMessageHTML.style.height = messageHeight; - newMessageHTML.innerHTML = newMessage; - var messageWrap = document.getElementById(loadingSettings.ID); - messageWrap.appendChild(newMessageHTML); - // create a new message element off - - // vertical align svg on - var svgDivElm = document.getElementById(loadingSettings.ID).getElementsByTagName('div')[0]; - var svgNewPosTop = '-' + Math.round(intSvgSize - (intSvgSize / 4)).toString() + 'px'; - svgDivElm.style.top = svgNewPosTop; - // vertical align svg off - } - } - // if no message - else { - notiflixConsoleError('Notiflix Error', 'Where is the new message?'); - } - } - }; - // Notiflix: Loading Change Message off - - - // Notiflix: Block or Unblock Element on - var notiflixBlockElementCounter = 0; - var NotiflixBlockUnblockElement = function (block, selector, iconType, message, theDelay) { - - // check typeof selector on - if (typeof selector !== 'string') { - notiflixConsoleError('Notiflix Error', 'The selector must be a String.'); - return false; - } - // check typeof selector off - - // check the delay on - if (typeof theDelay !== 'number') { - theDelay = 0; - } - // check the delay off - - // check the selector on - var getSelector = document.querySelectorAll(selector); - if (getSelector.length > 0) { - - // if not initialized pretend like init on - if (!newBlockSettings) { - Notiflix.Block.Init({}); - } - // if not initialized pretend like init off - - // check the message on - if (!message || (message && typeof message !== 'string')) { - message = undefined; - } - // check the message off - - } else { - notiflixConsoleError('Notiflix Error', 'You called the "Notiflix.Block..." function with "' + selector + '" selector, but there is no such element(s) on the document.'); - return false; - } - // check the selector off - - // if cssAnimaion false => duration on - if (!newBlockSettings.cssAnimation) { - newBlockSettings.cssAnimationDuration = 0; - } - // if cssAnimaion false => duration off - - // check the class name on - var blockClassName = 'notiflix-block'; - if (newBlockSettings.className && typeof newBlockSettings.className === 'string') { - blockClassName = newBlockSettings.className.trim(); - } - // check the class name off - - // check query limit on - var getQueryLimit = (typeof newBlockSettings.querySelectorLimit === 'number' ? newBlockSettings.querySelectorLimit : 200); - var checkQueryLimit = (getSelector.length >= getQueryLimit ? getQueryLimit : getSelector.length); - // check query limit off - - // block - if (block) { - - // add element(s) and style on - for (var i = 0; i < checkQueryLimit; i++) { - var eachSelector = getSelector[i]; - - // check block element exist on - var eachBlockElement = eachSelector.querySelectorAll('[id^=' + blockSettings.ID + ']'); - if (eachBlockElement.length < 1) { - - // check the icon on - var icon = ''; - if (iconType) { - if (iconType === 'hourglass') { - icon = notiflixIndicatorSvgHourglass(newBlockSettings.svgSize, newBlockSettings.svgColor); - } else if (iconType === 'circle') { - icon = notiflixIndicatorSvgCircle(newBlockSettings.svgSize, newBlockSettings.svgColor); - } else if (iconType === 'arrows') { - icon = notiflixIndicatorSvgArrows(newBlockSettings.svgSize, newBlockSettings.svgColor); - } else if (iconType === 'dots') { - icon = notiflixIndicatorSvgDots(newBlockSettings.svgSize, newBlockSettings.svgColor); - } else if (iconType === 'pulse') { - icon = notiflixIndicatorSvgPulse(newBlockSettings.svgSize, newBlockSettings.svgColor); - } else { - icon = notiflixIndicatorSvgStandard(newBlockSettings.svgSize, newBlockSettings.svgColor); - } - } - var intSvgSize = parseInt(newBlockSettings.svgSize); - var posRatio = Math.round(intSvgSize - (intSvgSize / 5)).toString() + 'px'; - var svgPosTop = (message && message.length > 0 ? '-' + posRatio : 0); - var iconElement = '' + icon + ''; - // check the icon off - - // check the message on - var messageElement = ''; - var messageHeight = 0; - if (message) { - if (message.length > newBlockSettings.messageMaxLength) { - message = notiflixPlaintext(message).toString().substring(0, newBlockSettings.messageMaxLength) + '...'; - } else { - message = notiflixPlaintext(message).toString(); - } - messageHeight = Math.round(parseInt(newBlockSettings.messageFontSize) * 1.4).toString() + 'px'; - messageElement = '' + message + ''; - } - // check the message off - - // block element on - notiflixBlockElementCounter++; - var notiflixBlockWrap = document.createElement('div'); - notiflixBlockWrap.id = blockSettings.ID + '-' + notiflixBlockElementCounter; - notiflixBlockWrap.className = blockClassName + '-wrap' + (newBlockSettings.cssAnimation ? ' with-animation' : ''); - notiflixBlockWrap.style.position = newBlockSettings.position; - notiflixBlockWrap.style.zIndex = newBlockSettings.zindex; - notiflixBlockWrap.style.background = newBlockSettings.backgroundColor; - notiflixBlockWrap.style.animationDuration = newBlockSettings.cssAnimationDuration + 'ms'; - notiflixBlockWrap.style.fontFamily = '"' + newBlockSettings.fontFamily + '"' + ', sans-serif'; - // block element off - - // block element rtl on - if (newBlockSettings.rtl) { - notiflixBlockWrap.setAttribute('dir', 'rtl'); - notiflixBlockWrap.classList.add('rtl-on'); - } - // block element rtl off - - // block element data on - notiflixBlockWrap.innerHTML = iconElement + messageElement; - // block element data off - - // append block element on - var eachSelectorPos = getComputedStyle(eachSelector).getPropertyValue('position'); - eachSelectorPos = eachSelectorPos && typeof eachSelectorPos === 'string' ? eachSelectorPos.toLowerCase() : 'relative'; - - // selector internal style on - var eachSelectorIdOrClass = ''; - if (eachSelector.getAttribute('id')) { - eachSelectorIdOrClass = '#' + eachSelector.getAttribute('id'); - } else if (eachSelector.classList[0]) { - eachSelectorIdOrClass = '.' + eachSelector.classList[0]; - } - - var positions = ['absolute', 'relative', 'fixed', 'sticky']; - if (positions.indexOf(eachSelectorPos) <= -1) { - var minHeight = Math.round((parseInt(messageHeight) + intSvgSize) * 1.5).toString() + 'px'; - var style = ''; - var styleRange = document.createRange(); - styleRange.selectNode(document.head); - var styleFragment = styleRange.createContextualFragment(style); - document.head.appendChild(styleFragment); - eachSelector.classList.add(blockClassName + '-position'); - } - // selector internal style off - - // append - eachSelector.appendChild(notiflixBlockWrap); - // append block element off - } - // check block element exist off - } - // add element(s) and style off - } - // unblock/remove - else { - - // Step 3 => Remove each block element on - var removeBlockElements = function (eachOne) { - var timeout = setTimeout(function () { - // remove element - eachOne.remove(); - - // remove this selector internal style - var eachOneId = eachOne.getAttribute('id'); - var eachOneStyle = document.getElementById('Style-' + eachOneId); - if (eachOneStyle) { - eachOneStyle.remove(); - } - - // clear timeout - clearTimeout(timeout); - }, newBlockSettings.cssAnimationDuration); - } - // Step 3 => Remove each block element off - - // Step 2A => Remove each block element on - var removeClassBlockElements = function (eachBlockElement) { - // if elements exist - if (eachBlockElement && eachBlockElement.length > 0) { - for (var i = 0; i < eachBlockElement.length; i++) { - var eachOne = eachBlockElement[i]; - if (eachOne) { - // add remove class - eachOne.classList.add('remove'); - // remove block elements - removeBlockElements(eachOne); - } - } - } - // not exist - else { - notiflixConsoleLog('Notiflix Info', '"Notiflix.Block.Remove();" function called with "' + selector + '" selector, but this selector does not have a "Notiflix.Block..." element to remove.'); - } - } - // Step 2A => Remove each block element on - - // Step 2B => Remove each selector class name on - var removeEachSelectorClassName = function (eachSelector) { - var timeout = setTimeout(function () { - // remove class name - var positionClass = blockClassName + '-position'; - eachSelector.classList.remove(positionClass); - - // clear timeout - clearTimeout(timeout); - }, newBlockSettings.cssAnimationDuration + 300); - } - // Step 2B => Remove each selector class name off - - // Step 1 => Remove selector class name on - var selectorTimeout = setTimeout(function () { - for (var i = 0; i < checkQueryLimit; i++) { - var eachSelector = getSelector[i]; - - // remove each selector class name - removeEachSelectorClassName(eachSelector); - - // remove each block element - eachBlockElement = eachSelector.querySelectorAll('[id^=' + blockSettings.ID + ']'); - removeClassBlockElements(eachBlockElement); - } - // clear timeout - clearTimeout(selectorTimeout); - }, theDelay); - // Step 1 => Remove selector class name off - } - }; - // Notiflix: Block or Unblock Element off - - - // Notiflix: Report SVG Success on - var notiflixReportSvgSuccess = function (width, color) { - if (!width) { width = '110px'; } - if (!color) { color = '#32c682'; } - var reportSvgSuccess = ''; - return reportSvgSuccess; - }; - // Notiflix: Report SVG Success off - - // Notiflix: Report SVG Failure on - var notiflixReportSvgFailure = function (width, color) { - if (!width) { width = '110px'; } - if (!color) { color = '#ff5549'; } - var reportSvgFailure = ''; - return reportSvgFailure; - }; - // Notiflix: Report SVG Failure off - - // Notiflix: Report SVG Warning on - var notiflixReportSvgWarning = function (width, color) { - if (!width) { width = '110px'; } - if (!color) { color = '#eebf31'; } - var reportSvgWarning = ''; - return reportSvgWarning; - }; - // Notiflix: Report SVG Warning off - - // Notiflix: Report SVG Info on - var notiflixReportSvgInfo = function (width, color) { - if (!width) { width = '110px'; } - if (!color) { color = '#26c0d3'; } - var reportSvgInfo = ''; - return reportSvgInfo; - }; - // Notiflix: Report SVG Info off - - // Notiflix: Indicator SVG standard on - var notiflixIndicatorSvgStandard = function (width, color) { - if (!width) { width = '60px'; } - if (!color) { color = '#32c682'; } - var standard = ''; - return standard; - }; - // Notiflix: Indicator SVG standard off - - // Notiflix: Indicator SVG hourglass on - var notiflixIndicatorSvgHourglass = function (width, color) { - if (!width) { width = '60px'; } - if (!color) { color = '#32c682'; } - var hourglass = ' '; - return hourglass; - }; - // Notiflix: Indicator SVG hourglass off - - // Notiflix: Indicator SVG circle on - var notiflixIndicatorSvgCircle = function (width, color) { - if (!width) { width = '60px'; } - if (!color) { color = '#32c682'; } - var circle = ''; - return circle; - }; - // Notiflix: Indicator SVG circle off - - // Notiflix: Indicator SVG arrows on - var notiflixIndicatorSvgArrows = function (width, color) { - if (!width) { width = '60px'; } - if (!color) { color = '#32c682'; } - var arrows = ''; - return arrows; - }; - // Notiflix: Indicator SVG arrows off - - // Notiflix: Indicator SVG dots on - var notiflixIndicatorSvgDots = function (width, color) { - if (!width) { width = '60px'; } - if (!color) { color = '#32c682'; } - var dots = ' '; - return dots; - }; - // Notiflix: Indicator SVG dots off - - // Notiflix: Indicator SVG pulse on - var notiflixIndicatorSvgPulse = function (width, color) { - if (!width) { width = '60px'; } - if (!color) { color = '#32c682'; } - var pulse = ''; - return pulse; - }; - // Notiflix: Indicator SVG pulse off - - // Notiflix: Indicator SVG notiflix on - var notiflixIndicatorSvgNotiflix = function (width, white, green) { - if (!width) { width = '60px'; } - if (!white) { white = '#f8f8f8'; } - if (!green) { green = '#32c682'; } - var notiflixIcon = ''; - return notiflixIcon; - }; - - exports(MOD_NAME, pearOper); -}) - diff --git a/component/pear/module/theme.js b/component/pear/module/theme.js index a684c85..92cbbf4 100644 --- a/component/pear/module/theme.js +++ b/component/pear/module/theme.js @@ -8,8 +8,7 @@ layui.define(["jquery","layer"], function (exports) { theme.changeTheme = function (target, autoHead) { this.autoHead = autoHead; var color = localStorage.getItem("theme-color-color"); - var second = localStorage.getItem("theme-color-second"); - this.colorSet(color, second); + this.colorSet(color); if (target.frames.length == 0) return; for (var i = 0; i < target.frames.length; i++) { try { @@ -22,7 +21,7 @@ layui.define(["jquery","layer"], function (exports) { } } - theme.colorSet = function(color, second) { + theme.colorSet = function(color) { var style = ''; style += '.light-theme .pear-nav-tree .layui-this a:hover,.light-theme .pear-nav-tree .layui-this,.light-theme .pear-nav-tree .layui-this a,.pear-nav-tree .layui-this a,.pear-nav-tree .layui-this{background-color: ' +color + '!important;}'; @@ -58,29 +57,13 @@ layui.define(["jquery","layer"], function (exports) { style += '.pear-back{background-color:'+ color +'!important}'; style += '.pear-collapsed-pe{background-color:'+color+'!important}' style += '.layui-form-select dl dd.layui-this{color:'+color+'!important;}' - style += '.tag-item-normal{background:'+color+'!important}'; - style += '.step-item-head.step-item-head-active{background-color:'+color+'}' - style += '.step-item-head{border: 3px solid '+color+';}' - style += '.step-item-tail i{background-color:'+color+'}' - style += '.step-item-head{color:' + color + '}' - style += 'div[xm-select-skin=normal] .xm-select-title div.xm-select-label>span i {background-color:'+color+'!important}' - style += 'div[xm-select-skin=normal] .xm-select-title div.xm-select-label>span{border: 1px solid '+color+'!important;background-color:'+color+'!important}' - style += 'div[xm-select-skin=normal] dl dd:not(.xm-dis-disabled) i{border-color:'+color+'!important}' - style += 'div[xm-select-skin=normal] dl dd.xm-select-this:not(.xm-dis-disabled) i{color:'+color+'!important}' - style += 'div[xm-select-skin=normal].xm-form-selected .xm-select, div[xm-select-skin=normal].xm-form-selected .xm-select:hover{border-color:'+color+'!important}' style += '.layui-layer-btn a:first-child{border-color:'+color+';background-color:'+color+'!important}'; style += '.layui-form-checkbox[lay-skin=primary]:hover i{border-color:'+color+'!important}' style += '.pear-tab-menu .item:hover{background-color:'+color+'!important}' style += '.layui-form-danger:focus {border-color:#FF5722 !important}' style += '.pear-admin .user .layui-this a:hover{color:white!important}' style += '.pear-admin .user a:hover{color:'+color+'!important}' - style += '.pear-notice .layui-this{color:'+color+'!important}' style += '.layui-form-radio:hover *, .layui-form-radioed, .layui-form-radioed>i{color:' + color + ' !important}'; - style += '.pear-btn:hover {color: '+color+';background-color: ' + second + ';}' - style += '.pear-btn-primary[plain] {color: '+ color +' !important;background: ' + second + ' !important;}' - style += '.pear-btn-primary[plain]:hover {background-color: ' + color + '!important}' - style += '.light-theme .pear-nav-tree .layui-this a:hover,.light-theme .pear-nav-tree .layui-this,.light-theme .pear-nav-tree .layui-this a {background-color:'+second+'!important;color:'+color+'!important;}' - style += '.light-theme .pear-nav-tree .layui-this{ border-right: 3px solid '+color+'!important}' style += '.loader:after {background:'+color+'}' style += '.layui-laydate .layui-this, .layui-laydate .layui-this>div{background:'+color+'!important}' if(this.autoHead === true || this.autoHead === "true"){ @@ -88,7 +71,7 @@ layui.define(["jquery","layer"], function (exports) { style += '.pear-admin.banner-layout .layui-header{ box-shadow: 2px 0 6px rgb(0 21 41 / 35%) }' style += '.pear-admin .layui-header .layui-layout-control .layui-this *,.pear-admin.banner-layout .layui-header .layui-layout-control .layui-this *{ background-color: rgba(0,0,0,.1)!important;}' } - style += '.menu-search-list li:hover,.menu-search-list li.this{background-color:'+ color +'}' + style += '.menu-search-list li:hover,.menu-search-list li.this{background-color:'+ color +'}' var colorPane = $("#pear-admin-color"); if(colorPane.length>0){ colorPane.html(style); diff --git a/component/pear/pear.js b/component/pear/pear.js index 4e82145..1e5823f 100644 --- a/component/pear/pear.js +++ b/component/pear/pear.js @@ -12,25 +12,19 @@ layui.config({ admin: "core/admin", page: "core/page", tabPage: "core/tabPage", - menu: "core/menu", - messageCenter: "core/messageCenter", // 通知组件 + menu: "core/menu", echarts: "extends/echarts", echartsTheme: "extends/echartsTheme", yaml:"extends/yaml", nprogress: "extends/nprogress", - toast: "extends/toast", + toast: "extends/toast", + popup:"extends/popup", - common: "common", // 公共方法封装 - popup:"popup", // 弹层封装 - count:"count", // 数字滚动 - button: "button", // 加载按钮 - loading: "loading", // 加载组件 - convert:"convert", // 数据转换 - context: "context", // 上下文组件 - theme: "theme", // 主题转换 - fullscreen:"fullscreen", //全屏组件 + button: "button", + fullscreen:"fullscreen", + theme: "theme", }).use(['layer', 'theme'], function () { - layui.theme.changeTheme(window, false); + }); \ No newline at end of file diff --git a/index.html b/index.html index 3a2e6ef..14e4c7e 100644 --- a/index.html +++ b/index.html @@ -10,6 +10,8 @@ + + diff --git a/login.html b/login.html index dd946aa..810fa96 100644 --- a/login.html +++ b/login.html @@ -37,7 +37,7 @@
                                    • -
                                      diff --git a/view/result/error.html b/view/result/error.html index a226525..936647a 100644 --- a/view/result/error.html +++ b/view/result/error.html @@ -32,9 +32,9 @@
                                      - +     - +
                                      diff --git a/view/result/success.html b/view/result/success.html index 2f2a3a5..1174d8a 100644 --- a/view/result/success.html +++ b/view/result/success.html @@ -33,9 +33,9 @@
                                      - +     - +
                                      -- Gitee From e5dc2441d6cc495947176a56af1f36fd265799e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sat, 24 Jun 2023 03:20:07 +0800 Subject: [PATCH 007/141] update --- admin/css/admin.dark.css | 27 +++++++++++++- admin/css/other/result.css | 21 ++++++----- admin/css/overwrite.css | 4 +- view/exception/403.html | 45 ++++++++++++++++++++++ view/exception/404.html | 45 ++++++++++++++++++++++ view/exception/500.html | 45 ++++++++++++++++++++++ view/result/error.html | 76 ++++++++++++++++++++++++-------------- view/result/success.html | 58 +++++++++++++++-------------- 8 files changed, 253 insertions(+), 68 deletions(-) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index e38e629..3dba8e5 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -79,6 +79,12 @@ background-color: #0a0a0a; } +/** button */ +.pear-admin-dark .layui-btn { + color: #ffffff; + border-color: #4C4D4F; +} + /** layer */ .pear-admin-dark .layui-layer { background-color: #141414; @@ -133,6 +139,25 @@ .pear-admin-dark .layui-menu .layui-menu-body-title, .pear-admin-dark .layui-menu .layui-menu-body-title:hover { - color: white; + color: #ffffff; background-color: #1d1e1f !important; +} + +/** 403 404 500*/ +.pear-admin-dark .pear-exception-title p{ + color: #E5EAF3 !important; +} + +/** success failure */ +.pear-admin-dark .pear-result .content { + background-color: rgba(153, 153, 153, 0.12); + color: #E5EAF3; +} + +.pear-admin-dark .pear-result .title{ + color: #ffffff; +} + +.pear-admin-dark .pear-result .description{ + color: #8D9095; } \ No newline at end of file diff --git a/admin/css/other/result.css b/admin/css/other/result.css index d5ccaa3..393c464 100644 --- a/admin/css/other/result.css +++ b/admin/css/other/result.css @@ -1,39 +1,40 @@ -.result { +.pear-result { text-align: center; } -.result .success svg { +.pear-result .success svg { color: #32C682; text-align: center; margin-top: 40px; } -.result .error svg { +.pear-result .error svg { color: #f56c6c; text-align: center; margin-top: 40px; } -.result .title { +.pear-result .title { margin-top: 25px; } -.result .desc { +.pear-result .description { margin-top: 25px; width: 60%; margin-left: 20%; color: rgba(0, 0, 0, .45); } -.result .content { +.pear-result .content { margin-top: 20px; width: 80%; - border-radius: 10px; + border-radius: 4px; background-color: whitesmoke; - height: 200px; + padding: 20px 32px; margin-left: 10%; + margin-bottom: 30px; + text-align: left; } -.result .action { +.pear-result .extra { padding-top: 10px; - border-top: 1px whitesmoke solid; margin-top: 25px; } diff --git a/admin/css/overwrite.css b/admin/css/overwrite.css index 3d70461..645d244 100644 --- a/admin/css/overwrite.css +++ b/admin/css/overwrite.css @@ -1,7 +1,7 @@ .layui-dropdown { - border-radius: 4px; + border-radius: var(--global-border-radius); } .layui-input { - border-radius: 4px; + border-radius: var(--global-border-radius); } \ No newline at end of file diff --git a/view/exception/403.html b/view/exception/403.html index e69de29..0ab3271 100644 --- a/view/exception/403.html +++ b/view/exception/403.html @@ -0,0 +1,45 @@ +
                                      +
                                      +
                                      + +
                                      +
                                      +
                                      +

                                      403

                                      +
                                      +
                                      + 抱歉, 你无权访问该页面. +
                                      +
                                      +
                                      + + \ No newline at end of file diff --git a/view/exception/404.html b/view/exception/404.html index e69de29..a922f28 100644 --- a/view/exception/404.html +++ b/view/exception/404.html @@ -0,0 +1,45 @@ +
                                      +
                                      +
                                      + +
                                      +
                                      +
                                      +

                                      404

                                      +
                                      +
                                      + 抱歉, 你访问的页面不存在. +
                                      +
                                      +
                                      + + \ No newline at end of file diff --git a/view/exception/500.html b/view/exception/500.html index e69de29..028aaea 100644 --- a/view/exception/500.html +++ b/view/exception/500.html @@ -0,0 +1,45 @@ +
                                      +
                                      +
                                      + +
                                      +
                                      +
                                      +

                                      500

                                      +
                                      +
                                      + 抱歉, 服务器出错了. +
                                      +
                                      +
                                      + + \ No newline at end of file diff --git a/view/result/error.html b/view/result/error.html index 936647a..ddfa9b1 100644 --- a/view/result/error.html +++ b/view/result/error.html @@ -8,33 +8,55 @@ -
                                      -
                                      -
                                      -
                                      - -
                                      -

                                      提交失败

                                      -

                                      - 请核对并修改以下信息后,再重新提交。如果仅是简单操作,使用 Message 全局提示反馈即可。 - 本文字区域可以展示简单的补充说明,如果有类似展示 - “单据”的需求,下面这个灰色区域可以呈现比较复杂的内容。 -

                                      -
                                      - -
                                      -
                                      - -     - +
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      +

                                      提交失败

                                      +

                                      + 请核对并修改以下信息后,再重新提交。如果仅是简单操作,使用 Message 全局提示反馈即可。 + 本文字区域可以展示简单的补充说明,如果有类似展示 + “单据”的需求,下面这个灰色区域可以呈现比较复杂的内容。 +

                                      +
                                      + +     + +
                                      +
                                      + 您提交的内容有如下错误: +
                                      +
                                      +
                                      +
                                      + +
                                      +
                                      您的账户已被冻结 + 立即解冻 +
                                      +
                                      +
                                      +
                                      + +
                                      +
                                      您的账户还不具备申请资格 + 立即升级 +
                                      +
                                      +
                                      +
                                      +
                                      diff --git a/view/result/success.html b/view/result/success.html index 1174d8a..c9f3ce1 100644 --- a/view/result/success.html +++ b/view/result/success.html @@ -8,34 +8,36 @@ -
                                      -
                                      -
                                      -
                                      - -
                                      -

                                      提交成功

                                      -

                                      - 提交结果页用于反馈一系列操作任务的处理结果, - 如果仅是简单操作,使用 Message 全局提示反馈即可。 - 本文字区域可以展示简单的补充说明,如果有类似展示 - “单据”的需求,下面这个灰色区域可以呈现比较复杂的内容。 -

                                      -
                                      - -
                                      -
                                      - -     - +
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      +

                                      提交成功

                                      +

                                      + 提交结果页用于反馈一系列操作任务的处理结果, + 如果仅是简单操作,使用 Message 全局提示反馈即可。 + 本文字区域可以展示简单的补充说明,如果有类似展示 + “单据”的需求,下面这个灰色区域可以呈现比较复杂的内容。 +

                                      +
                                      + +     + +
                                      +
                                      + 已提交申请,等待部门审核。 +
                                      -- Gitee From 64cebad5a3e168f301e7c4bcb08152bcf6d2945a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sat, 24 Jun 2023 06:02:41 +0800 Subject: [PATCH 008/141] update --- admin/css/admin.css | 4 +- admin/css/admin.dark.css | 10 +- admin/css/other/console1.css | 136 ------- admin/css/other/console2.css | 116 ------ admin/css/other/icon.css | 531 ------------------------- admin/css/overwrite.css | 12 + admin/data/menu.json | 148 ++++++- component/pear/css/module/layout.css | 145 ++++--- component/pear/module/button.js | 4 + component/pear/module/extends/count.js | 37 ++ component/pear/module/theme.js | 15 +- component/pear/pear.js | 3 +- index.html | 2 - view/component/grid.html | 55 +++ view/console/console1.html | 1 - view/console/console2.html | 1 - 16 files changed, 329 insertions(+), 891 deletions(-) delete mode 100644 admin/css/other/console1.css delete mode 100644 admin/css/other/console2.css delete mode 100644 admin/css/other/icon.css create mode 100644 component/pear/module/extends/count.js create mode 100644 view/component/grid.html diff --git a/admin/css/admin.css b/admin/css/admin.css index f3141cc..48331da 100644 --- a/admin/css/admin.css +++ b/admin/css/admin.css @@ -452,8 +452,8 @@ body, width: 100%; height: 100%; padding: 4px; - top: -5px; - left: -5px; + top: -6px; + left: -6px; border: #5FB878 2px solid; opacity: 1; border-radius: 4px; diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 3dba8e5..7c67d0b 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -50,7 +50,8 @@ } /** body */ -.pear-admin-dark .layui-body { +.pear-admin-dark .layui-body, +.pear-admin-dark .layui-body .pear-tab-loading { background-color: #0a0a0a !important; } @@ -79,6 +80,13 @@ background-color: #0a0a0a; } +/** theme */ +.pear-admin-dark .set-text, +.pear-admin-dark .select-color-title, +.pear-admin-dark .color-title { + color: #ffffff; +} + /** button */ .pear-admin-dark .layui-btn { color: #ffffff; diff --git a/admin/css/other/console1.css b/admin/css/other/console1.css deleted file mode 100644 index d2e0126..0000000 --- a/admin/css/other/console1.css +++ /dev/null @@ -1,136 +0,0 @@ -.top-panel { - border-radius: 4px; - text-align: center; -} - -.top-panel>.layui-card-body { - height: 60px; -} - -.top-panel-number { - line-height: 60px; - font-size: 29px; - border-right: 1px solid #eceff9; -} - -.top-panel-tips { - padding-left: 8px; - padding-top: 16px; - line-height: 30px; - font-size: 12px; -} - -.card { - width: 100%; - height: 160px; - background-color: whitesmoke; - border-radius: 4px; -} - -.card .header .avatar { - width: 28px; - height: 28px; - margin: 20px; - border-radius: 50px; -} - -.card .header { - color: dimgray; -} - -.card .body { - color: gray; -} - -.card .body { - margin-left: 20px; - margin-right: 20px; -} - -.card .footer { - margin-left: 20px; - margin-right: 20px; - margin-top: 20px; - font-size: 13px; - color: gray; - position: absolute; -} - -.custom-tab .layui-tab-title { - border-bottom-width: 0px; - border-bottom-style: none; -} - -.custom-tab .layui-tab-title li { - margin-left: 10px; -} - -.list .list-item { - height: 31.8px; - line-height: 31.8px; - color: gray; - padding: 5px; - padding-left: 15px; - border-radius: 4px; - margin-top: 5.2px; -} - -.list .list-item:hover { - background-color: whitesmoke; -} - -.list .list-item .title { - font-size: 13px; - width: 100%; -} - -.list .list-item .footer { - position: absolute; - right: 30px; - font-size: 12px; -} - -.top-panel-tips i { - font-size: 33px; -} - -.layuiadmin-card-status { - padding: 0 10px 10px; -} - -.layuiadmin-card-status dd { - padding: 15px 0; - border-bottom: 1px solid #EEE; - display: -webkit-flex; - display: flex; -} - -.layuiadmin-card-status dd div.layui-status-img, -.layuiadmin-card-team .layui-team-img { - width: 32px; - height: 32px; - border-radius: 50%; - margin-right: 15px; -} - -.layuiadmin-card-status dd div.layui-status-img a { - width: 100%; - height: 100%; - display: inline-block; - text-align: center; - line-height: 32px; -} - -.layuiadmin-card-status dd div span { - color: #BBB; -} - -.layuiadmin-card-status dd div a { - color: #01AAED; -} - -.top-panel-tips svg { - margin-top: -12px; - width: 50px; - height: 50px; -} diff --git a/admin/css/other/console2.css b/admin/css/other/console2.css deleted file mode 100644 index 573471f..0000000 --- a/admin/css/other/console2.css +++ /dev/null @@ -1,116 +0,0 @@ -.pear-card { - width: 100%; - height: 66px; - background-color: #F8F8F8; - display: inline-block; - border-radius: 5px; - text-align: center; - margin-bottom: 3px; -} - -.pear-card:hover, -.pear-card2:hover { - box-shadow: 2px 0 8px 0 lightgray !important; -} - -.pear-card2 { - width: 100%; - height: 90px; - background-color: #F8F8F8; - display: inline-block; - border-radius: 5px; - text-align: center; - margin-bottom: 3px; -} - -.pear-card2 i { - font-size: 30px; - height: 90px; - line-height: 90px; -} - -.pear-card i { - font-size: 30px; - height: 66px; - line-height: 66px; -} - -.layui-col-md3 { - text-align: center; -} - -.pear-card-title { - margin-top: 3px; -} - -.person img { - width: 90px; - height: 90px; - border-radius: 4px; - margin-top: 8px; - margin-left: 8px; -} - -.pear-card2 .count { - color: #51A351; - font-size: 30px; - margin-top: 12px; -} - -.pear-card2 .title { - color: gray; - font-size: 14px; - margin-top: 14px; -} - -.pear-card-status { - padding: 0 10px 10px; -} - -.pear-card-status li { - position: relative; - padding: 10px 0; - border-bottom: 1px solid #EEE; -} - -.pear-card-status li h3 { - padding-bottom: 5px; - font-weight: 700; -} - -.pear-card-status li p { - padding-bottom: 10px; - padding-top: 3px; -} - -.pear-card-status li>span { - color: #999; - height: 24px; - line-height: 24px; -} - -.pear-reply { - position: absolute; - right: 20px; - bottom: 12px; - height: 24px; - line-height: 24px; -} - -.person .title { - font-size: 17px; - font-weight: 600; - margin-left: 18px; - margin-top: 16px; - position: absolute; - display: inline-block; -} - -.person .desc { - font-size: 16px; - font-weight: 600; - margin-left: 115px; - margin-top: -30px; - position: absolute; - display: inline-block; -} \ No newline at end of file diff --git a/admin/css/other/icon.css b/admin/css/other/icon.css deleted file mode 100644 index cd1a6ce..0000000 --- a/admin/css/other/icon.css +++ /dev/null @@ -1,531 +0,0 @@ -/* Logo 字体 */ -@font-face { - font-family: "iconfont logo"; - src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834'); - src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'), - url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'), - url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), - url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); -} - -.logo { - font-family: "iconfont logo"; - font-size: 160px; - font-style: normal; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -/* tabs */ -.nav-tabs { - position: relative; -} - -.nav-tabs .nav-more { - position: absolute; - right: 0; - bottom: 0; - height: 42px; - line-height: 42px; - color: #666; -} - -#tabs { - border-bottom: 1px solid #eee; -} - -#tabs li { - cursor: pointer; - width: 100px; - height: 40px; - line-height: 40px; - text-align: center; - font-size: 16px; - border-bottom: 2px solid transparent; - position: relative; - z-index: 1; - margin-bottom: -1px; - color: #666; -} - - -#tabs .active { - border-bottom-color: #f00; - color: #222; -} - -.tab-container .content { - display: none; -} - -/* 页面布局 */ -.main { - padding: 30px 100px; - width: 960px; - margin: 0 auto; -} - -.main .logo { - color: #333; - text-align: left; - margin-bottom: 30px; - line-height: 1; - height: 110px; - margin-top: -50px; - overflow: hidden; - *zoom: 1; -} - -.main .logo a { - font-size: 160px; - color: #333; -} - -.helps { - margin-top: 40px; -} - -.helps pre { - padding: 20px; - margin: 10px 0; - border: solid 1px #e7e1cd; - background-color: #fffdef; - overflow: auto; -} - -.icon_lists { - width: 100% !important; - overflow: hidden; - *zoom: 1; -} - -.icon_lists li { - width: 100px; - margin-bottom: 10px; - margin-right: 20px; - text-align: center; - list-style: none !important; - cursor: default; -} - -.icon_lists li .code-name { - line-height: 1.2; -} - -.icon_lists .icon { - display: block; - height: 100px; - line-height: 100px; - font-size: 42px; - margin: 10px auto; - color: #333; - -webkit-transition: font-size 0.25s linear, width 0.25s linear; - -moz-transition: font-size 0.25s linear, width 0.25s linear; - transition: font-size 0.25s linear, width 0.25s linear; -} - -.icon_lists .icon:hover { - font-size: 100px; -} - -.icon_lists .svg-icon { - /* 通过设置 font-size 来改变图标大小 */ - width: 1em; - /* 图标和文字相邻时,垂直对齐 */ - vertical-align: -0.15em; - /* 通过设置 color 来改变 SVG 的颜色/fill */ - fill: currentColor; - /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示 - normalize.css 中也包含这行 */ - overflow: hidden; -} - -.icon_lists li .name, -.icon_lists li .code-name { - color: #666; -} - -/* markdown 样式 */ -.markdown { - color: #666; - font-size: 14px; - line-height: 1.8; -} - -.highlight { - line-height: 1.5; -} - -.markdown img { - vertical-align: middle; - max-width: 100%; -} - -.markdown h1 { - color: #404040; - font-weight: 500; - line-height: 40px; - margin-bottom: 24px; -} - -.markdown h2, -.markdown h3, -.markdown h4, -.markdown h5, -.markdown h6 { - color: #404040; - margin: 1.6em 0 0.6em 0; - font-weight: 500; - clear: both; -} - -.markdown h1 { - font-size: 28px; -} - -.markdown h2 { - font-size: 22px; -} - -.markdown h3 { - font-size: 16px; -} - -.markdown h4 { - font-size: 14px; -} - -.markdown h5 { - font-size: 12px; -} - -.markdown h6 { - font-size: 12px; -} - -.markdown hr { - height: 1px; - border: 0; - background: #e9e9e9; - margin: 16px 0; - clear: both; -} - -.markdown p { - margin: 1em 0; -} - -.markdown>p, -.markdown>blockquote, -.markdown>.highlight, -.markdown>ol, -.markdown>ul { - width: 80%; -} - -.markdown ul>li { - list-style: circle; -} - -.markdown>ul li, -.markdown blockquote ul>li { - margin-left: 20px; - padding-left: 4px; -} - -.markdown>ul li p, -.markdown>ol li p { - margin: 0.6em 0; -} - -.markdown ol>li { - list-style: decimal; -} - -.markdown>ol li, -.markdown blockquote ol>li { - margin-left: 20px; - padding-left: 4px; -} - -.markdown code { - margin: 0 3px; - padding: 0 5px; - background: #eee; - border-radius: 3px; -} - -.markdown strong, -.markdown b { - font-weight: 600; -} - -.markdown>table { - border-collapse: collapse; - border-spacing: 0px; - empty-cells: show; - border: 1px solid #e9e9e9; - width: 95%; - margin-bottom: 24px; -} - -.markdown>table th { - white-space: nowrap; - color: #333; - font-weight: 600; -} - -.markdown>table th, -.markdown>table td { - border: 1px solid #e9e9e9; - padding: 8px 16px; - text-align: left; -} - -.markdown>table th { - background: #F7F7F7; -} - -.markdown blockquote { - font-size: 90%; - color: #999; - border-left: 4px solid #e9e9e9; - padding-left: 0.8em; - margin: 1em 0; -} - -.markdown blockquote p { - margin: 0; -} - -.markdown .anchor { - opacity: 0; - transition: opacity 0.3s ease; - margin-left: 8px; -} - -.markdown .waiting { - color: #ccc; -} - -.markdown h1:hover .anchor, -.markdown h2:hover .anchor, -.markdown h3:hover .anchor, -.markdown h4:hover .anchor, -.markdown h5:hover .anchor, -.markdown h6:hover .anchor { - opacity: 1; - display: inline-block; -} - -.markdown>br, -.markdown>p>br { - clear: both; -} - - -.hljs { - display: block; - background: white; - padding: 0.5em; - color: #333333; - overflow-x: auto; -} - -.hljs-comment, -.hljs-meta { - color: #969896; -} - -.hljs-string, -.hljs-variable, -.hljs-template-variable, -.hljs-strong, -.hljs-emphasis, -.hljs-quote { - color: #df5000; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-type { - color: #a71d5d; -} - -.hljs-literal, -.hljs-symbol, -.hljs-bullet, -.hljs-attribute { - color: #0086b3; -} - -.hljs-section, -.hljs-name { - color: #63a35c; -} - -.hljs-tag { - color: #333333; -} - -.hljs-title, -.hljs-attr, -.hljs-selector-id, -.hljs-selector-class, -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #795da3; -} - -.hljs-addition { - color: #55a532; - background-color: #eaffea; -} - -.hljs-deletion { - color: #bd2c00; - background-color: #ffecec; -} - -.hljs-link { - text-decoration: underline; -} - -code[class*="language-"], -pre[class*="language-"] { - color: black; - background: none; - text-shadow: 0 1px white; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -pre[class*="language-"]::-moz-selection, -pre[class*="language-"] ::-moz-selection, -code[class*="language-"]::-moz-selection, -code[class*="language-"] ::-moz-selection { - text-shadow: none; - background: #b3d4fc; -} - -pre[class*="language-"]::selection, -pre[class*="language-"] ::selection, -code[class*="language-"]::selection, -code[class*="language-"] ::selection { - text-shadow: none; - background: #b3d4fc; -} - -@media print { - - code[class*="language-"], - pre[class*="language-"] { - text-shadow: none; - } -} - -/* Code blocks */ -pre[class*="language-"] { - padding: 1em; - margin: .5em 0; - overflow: auto; -} - -:not(pre)>code[class*="language-"], -pre[class*="language-"] { - background: #f5f2f0; -} - -/* Inline code */ -:not(pre)>code[class*="language-"] { - padding: .1em; - border-radius: .3em; - white-space: normal; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: slategray; -} - -.token.punctuation { - color: #999; -} - -.namespace { - opacity: .7; -} - -.token.property, -.token.tag, -.token.boolean, -.token.number, -.token.constant, -.token.symbol, -.token.deleted { - color: #905; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #690; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string { - color: #9a6e3a; - background: hsla(0, 0%, 100%, .5); -} - -.token.atrule, -.token.attr-value, -.token.keyword { - color: #07a; -} - -.token.function, -.token.class-name { - color: #DD4A68; -} - -.token.regex, -.token.important, -.token.variable { - color: #e90; -} - -.token.important, -.token.bold { - font-weight: bold; -} - -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} diff --git a/admin/css/overwrite.css b/admin/css/overwrite.css index 645d244..3c81731 100644 --- a/admin/css/overwrite.css +++ b/admin/css/overwrite.css @@ -4,4 +4,16 @@ .layui-input { border-radius: var(--global-border-radius); +} + +.layui-btn { + background-color: var(--global-primary-color); +} + +.layui-btn.layui-btn-primary { + background-color: transparent; +} + +.layui-card { + border-radius: var(--global-border-radius); } \ No newline at end of file diff --git a/admin/data/menu.json b/admin/data/menu.json index 1678e14..433382f 100644 --- a/admin/data/menu.json +++ b/admin/data/menu.json @@ -8,14 +8,14 @@ "title": "控制后台", "icon": "layui-icon layui-icon-console", "type": 1, - "openType": "_iframe", + "openType": "_component", "href": "view/console/console1.html" }, { "id": 13, "title": "数据分析", "icon": "layui-icon layui-icon-console", "type": 1, - "openType": "_iframe", + "openType": "_component", "href": "view/console/console2.html" }] }, @@ -26,11 +26,11 @@ "type": 0, "children": [{ "id": 21, - "title": "消息通知", + "title": "24 栅格", "icon": "layui-icon layui-icon-face-smile", "type": 1, - "openType": "_iframe", - "href": "view/components/toast.html" + "openType": "_component", + "href": "view/component/grid.html" } ] }, @@ -45,7 +45,7 @@ "title": "成功页面", "icon": "layui-icon layui-icon-face-smile", "type": 1, - "openType": "_iframe", + "openType": "_component", "href": "view/result/success.html" }, { @@ -53,7 +53,7 @@ "title": "失败页面", "icon": "layui-icon layui-icon-face-cry", "type": 1, - "openType": "_iframe", + "openType": "_component", "href": "view/result/error.html" } ] @@ -69,7 +69,7 @@ "title": "403", "icon": "layui-icon layui-icon-face-smile", "type": 1, - "openType": "_iframe", + "openType": "_component", "href": "view/exception/403.html" }, { @@ -77,7 +77,7 @@ "title": "404", "icon": "layui-icon layui-icon-face-cry", "type": 1, - "openType": "_iframe", + "openType": "_component", "href": "view/exception/404.html" }, { @@ -85,7 +85,7 @@ "title": "500", "icon": "layui-icon layui-icon-face-cry", "type": 1, - "openType": "_iframe", + "openType": "_component", "href": "view/exception/500.html" } ] @@ -101,11 +101,11 @@ "title": "普通路由", "icon": "layui-icon layui-icon-face-smile", "type": 1, - "openType": "_iframe", + "openType": "_component", "href": "view/result/success.html" }, { - "id": "b", + "id": "c", "title": "新建标签", "icon": "layui-icon layui-icon-face-cry", "type": 1, @@ -113,13 +113,133 @@ "href": "http://www.layui-vue.com" }, { - "id": "b", - "title": "弹窗页面", + "id": "d", + "title": "弹窗网页", "icon": "layui-icon layui-icon-face-cry", "type": 1, "openType": "_layer", "href": "http://www.layui-vue.com" } ] + }, + { + "id": "deep", + "title": "深度测试", + "icon": "layui-icon layui-icon-auz", + "type": 0, + "href": "", + "children": [{ + "id": "deep1-1", + "title": "二级菜单", + "icon": "layui-icon layui-icon-face-smile", + "type": 0, + "openType": "_component", + "href": "view/result/success.html", + "children": [{ + "id": "deep1-1-1", + "title": "三级菜单", + "icon": "layui-icon layui-icon-face-smile", + "type": 0, + "openType": "_component", + "href": "view/result/success.html", + "children": [{ + "id": "deep1-1-1-1", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-smile", + "type": 1, + "openType": "_component", + "href": "view/result/success.html" + }, + { + "id": "deep1-1-1-2", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-cry", + "type": 1, + "openType": "_blank", + "href": "http://www.layui-vue.com" + }] + }, + { + "id": "deep1-1-2", + "title": "三级菜单", + "icon": "layui-icon layui-icon-face-cry", + "type": 0, + "openType": "_blank", + "href": "http://www.layui-vue.com", + "children": [{ + "id": "deep1-1-2-1", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-smile", + "type": 1, + "openType": "_component", + "href": "view/result/success.html" + }, + { + "id": "deep1-1-2-2", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-cry", + "type": 1, + "openType": "_blank", + "href": "http://www.layui-vue.com" + }] + }] + }, + { + "id": "deep1-2", + "title": "二级菜单", + "icon": "layui-icon layui-icon-face-cry", + "type": 0, + "openType": "_blank", + "href": "http://www.layui-vue.com", + "children": [{ + "id": "deep1-2-1", + "title": "三级菜单", + "icon": "layui-icon layui-icon-face-smile", + "type": 0, + "openType": "_component", + "href": "view/result/success.html", + "children": [{ + "id": "deep1-2-1-1", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-smile", + "type": 1, + "openType": "_component", + "href": "view/result/success.html" + }, + { + "id": "deep1-2-1-2", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-cry", + "type": 1, + "openType": "_blank", + "href": "http://www.layui-vue.com" + }] + }, + { + "id": "deep1-2-2", + "title": "三级菜单", + "icon": "layui-icon layui-icon-face-cry", + "type": 0, + "openType": "_blank", + "href": "http://www.layui-vue.com", + "children": [{ + "id": "deep1-2-2-1", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-smile", + "type": 1, + "openType": "_component", + "href": "view/result/success.html" + }, + { + "id": "deep1-2-2-2", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-cry", + "type": 1, + "openType": "_blank", + "href": "http://www.layui-vue.com" + }] + }] + } + ] } ] \ No newline at end of file diff --git a/component/pear/css/module/layout.css b/component/pear/css/module/layout.css index 57914ce..94be5aa 100644 --- a/component/pear/css/module/layout.css +++ b/component/pear/css/module/layout.css @@ -146,103 +146,100 @@ body::-webkit-scrollbar-corner { width: 100%; } -@media all and (min-width:993px) and (max-width:1199px) { - - .pear-col-md-offset1 { - margin-left: 4.16%; - } +.pear-col-md-offset1 { + margin-left: 4.16%; +} - .pear-col-md-offset2 { - margin-left: 8.33%; - } +.pear-col-md-offset2 { + margin-left: 8.33%; +} - .pear-col-md-offset3 { - margin-left: 12.5%; - } +.pear-col-md-offset3 { + margin-left: 12.5%; +} - .pear-col-md-offset4 { - margin-left: 16.66%; - } +.pear-col-md-offset4 { + margin-left: 16.66%; +} - .pear-col-md-offset5 { - margin-left: 20.83%; - } +.pear-col-md-offset5 { + margin-left: 20.83%; +} - .pear-col-md-offset6 { - margin-left: 25%; - } +.pear-col-md-offset6 { + margin-left: 25%; +} - .pear-col-md-offset7 { - margin-left: 29.16%; - } +.pear-col-md-offset7 { + margin-left: 29.16%; +} - .pear-col-md-offset8 { - margin-left: 33.33%; - } +.pear-col-md-offset8 { + margin-left: 33.33%; +} - .pear-col-md-offset9 { - margin-left: 37.5%; - } +.pear-col-md-offset9 { + margin-left: 37.5%; +} - .pear-col-md-offset10 { - margin-left: 41.66%; - } +.pear-col-md-offset10 { + margin-left: 41.66%; +} - .pear-col-md-offset11 { - margin-left: 45.83%; - } +.pear-col-md-offset11 { + margin-left: 45.83%; +} - .pear-col-md-offset12 { - margin-left: 50%; - } +.pear-col-md-offset12 { + margin-left: 50%; +} - .pear-col-md-offset13 { - margin-left: 54.16%; - } +.pear-col-md-offset13 { + margin-left: 54.16%; +} - .pear-col-md-offset14 { - margin-left: 58.33%; - } +.pear-col-md-offset14 { + margin-left: 58.33%; +} - .pear-col-md-offset15 { - margin-left: 62.5%; - } +.pear-col-md-offset15 { + margin-left: 62.5%; +} - .pear-col-md-offset16 { - margin-left: 66.66%; - } +.pear-col-md-offset16 { + margin-left: 66.66%; +} - .pear-col-md-offset17 { - margin-left: 70.83%; - } +.pear-col-md-offset17 { + margin-left: 70.83%; +} - .pear-col-md-offset18 { - margin-left: 75%; - } +.pear-col-md-offset18 { + margin-left: 75%; +} - .pear-col-md-offset19 { - margin-left: 79.16%; - } +.pear-col-md-offset19 { + margin-left: 79.16%; +} - .pear-col-md-offset20 { - margin-left: 83.33%; - } +.pear-col-md-offset20 { + margin-left: 83.33%; +} - .pear-col-md-offset21 { - margin-left: 87.5%; - } +.pear-col-md-offset21 { + margin-left: 87.5%; +} - .pear-col-md-offset22 { - margin-left: 91.66%; - } +.pear-col-md-offset22 { + margin-left: 91.66%; +} - .pear-col-md-offset23 { - margin-left: 95.83%; - } +.pear-col-md-offset23 { + margin-left: 95.83%; +} - .pear-col-md-offset24 { - margin-left: 100%; - } +.pear-col-md-offset24 { + margin-left: 100%; } diff --git a/component/pear/module/button.js b/component/pear/module/button.js index c0eb62e..f590828 100644 --- a/component/pear/module/button.js +++ b/component/pear/module/button.js @@ -12,6 +12,8 @@ layui.define(['jquery'], function(exports) { }; /** + * @since Pear Admin 4.0 + * * Button start loading * */ button.prototype.load = function(opt) { @@ -41,6 +43,8 @@ layui.define(['jquery'], function(exports) { } /** + * @since Pear Admin 4.0 + * * Button stop loaded * */ button.prototype.stop = function(success) { diff --git a/component/pear/module/extends/count.js b/component/pear/module/extends/count.js new file mode 100644 index 0000000..fed5893 --- /dev/null +++ b/component/pear/module/extends/count.js @@ -0,0 +1,37 @@ +layui.define(['jquery', 'element'], function(exports) { + "use strict"; + + var MOD_NAME = 'count', + $ = layui.jquery, + element = layui.element; + + var count = new function() { + + this.up = function(targetEle, options) { + + options = options || {}; + + var $this = document.getElementById(targetEle), + time = options.time, + finalNum = options.num, + regulator = options.regulator, + step = finalNum / (time / regulator), + count = 0.00, + initial = 0; + + var timer = setInterval(function() { + count = count + step; + if (count >= finalNum) { + clearInterval(timer); + count = finalNum; + } + var t = count.toFixed(options.bit?options.bit:0);; + if (t == initial) return; + initial = t; + $this.innerHTML = initial; + }, 30); + } + + } + exports(MOD_NAME, count); +}); \ No newline at end of file diff --git a/component/pear/module/theme.js b/component/pear/module/theme.js index 92cbbf4..bd69e44 100644 --- a/component/pear/module/theme.js +++ b/component/pear/module/theme.js @@ -8,17 +8,10 @@ layui.define(["jquery","layer"], function (exports) { theme.changeTheme = function (target, autoHead) { this.autoHead = autoHead; var color = localStorage.getItem("theme-color-color"); + + document.documentElement.style.setProperty("--global-primary-color", color); + this.colorSet(color); - if (target.frames.length == 0) return; - for (var i = 0; i < target.frames.length; i++) { - try { - if(target.frames[i].layui == undefined) continue; - target.frames[i].layui.theme.changeTheme(target.frames[i], autoHead); - } - catch (error) { - console.log(error); - } - } } theme.colorSet = function(color) { @@ -32,13 +25,11 @@ layui.define(["jquery","layer"], function (exports) { style += '.pear-admin .layui-header .layui-nav .layui-nav-bar{background-color: ' + color + '!important;}' style += '.ball-loader>span,.signal-loader>span {background-color: ' + color + '!important;}'; style += '.layui-header .layui-nav-child .layui-this a{background-color:' + color +'!important;color:white!important;}'; - style += '#preloader{background-color:' + color + '!important;}'; style += '.pearone-color .color-content li.layui-this:after, .pearone-color .color-content li:hover:after {border: ' +color + ' 3px solid!important;}'; style += '.layui-nav .layui-nav-child dd.layui-this a, .layui-nav-child dd.layui-this{background-color:' + color + ';color:white;}'; style += '.pear-social-entrance {background-color:' + color + '!important}'; style += '.pear-admin .pe-collapse {background-color:' + color + '!important}'; style += '.layui-fixbar li {background-color:' + color + '!important}'; - style += '.pear-btn-primary {background-color:' + color + '!important}'; style += '.layui-form-checkbox[lay-skin=primary]:hover span {background-color: initial;}' style += '.layui-form-checked[lay-skin=primary] i {border-color: ' + color + '!important;background-color: ' + color + ';}' style += '.layui-form-checked,.layui-form-checked:hover {border-color: ' + color + '!important;}' diff --git a/component/pear/pear.js b/component/pear/pear.js index 1e5823f..2360acf 100644 --- a/component/pear/pear.js +++ b/component/pear/pear.js @@ -19,7 +19,8 @@ layui.config({ yaml:"extends/yaml", nprogress: "extends/nprogress", toast: "extends/toast", - popup:"extends/popup", + popup:"extends/popup", + count:"extends/count", button: "button", fullscreen:"fullscreen", diff --git a/index.html b/index.html index 14e4c7e..81bd758 100644 --- a/index.html +++ b/index.html @@ -110,8 +110,6 @@ }); }) - // 消息点击回调 - // admin.message(function(id, title, context, form) {}); }) diff --git a/view/component/grid.html b/view/component/grid.html new file mode 100644 index 0000000..a7a884b --- /dev/null +++ b/view/component/grid.html @@ -0,0 +1,55 @@ +
                                      +
                                      +
                                      基础使用
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      栅格偏移
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      自适应性
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + + \ No newline at end of file diff --git a/view/console/console1.html b/view/console/console1.html index 281c686..e69de29 100644 --- a/view/console/console1.html +++ b/view/console/console1.html @@ -1 +0,0 @@ -
                                      \ No newline at end of file diff --git a/view/console/console2.html b/view/console/console2.html index 281c686..e69de29 100644 --- a/view/console/console2.html +++ b/view/console/console2.html @@ -1 +0,0 @@ -
                                      \ No newline at end of file -- Gitee From 9eee5cdb45fd54c5c1fdc37e269d04f88acca430 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sat, 24 Jun 2023 06:06:39 +0800 Subject: [PATCH 009/141] update --- admin/css/admin.dark.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 7c67d0b..47aa4da 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -87,6 +87,11 @@ color: #ffffff; } +/** search */ +.pear-admin-dark .menu-search-no-data { + color: #ffffff; +} + /** button */ .pear-admin-dark .layui-btn { color: #ffffff; -- Gitee From 166125437869553b86b3417c6f3bebd015ef7f61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sat, 24 Jun 2023 07:10:36 +0800 Subject: [PATCH 010/141] update --- component/pear/module/core/admin.js | 2 +- index.html | 2 ++ view/component/grid.html | 5 ++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/component/pear/module/core/admin.js b/component/pear/module/core/admin.js index 71da7f4..35dadae 100644 --- a/component/pear/module/core/admin.js +++ b/component/pear/module/core/admin.js @@ -494,7 +494,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't
                                      - +
                                      ` diff --git a/index.html b/index.html index 81bd758..7f6ef29 100644 --- a/index.html +++ b/index.html @@ -10,6 +10,8 @@ + + diff --git a/view/component/grid.html b/view/component/grid.html index a7a884b..eb2b8a8 100644 --- a/view/component/grid.html +++ b/view/component/grid.html @@ -45,11 +45,10 @@ .grid-demo { padding: 10px; line-height: 60px; - border-radius: 2px; + border-radius: var(--global-border-radius); + background-color: var(--global-primary-color); text-align: center; color: #fff; - background-color: var(--global-primary-color); min-height: 60px; } - \ No newline at end of file -- Gitee From fa2f82d755b6c253120a9631b355bbe4c0080959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sat, 24 Jun 2023 15:08:27 +0800 Subject: [PATCH 011/141] update --- admin/css/admin.css | 2 +- admin/css/other/exception.css | 28 ++ admin/css/{overwrite.css => reset.css} | 0 admin/images/403.svg | 508 -------------------- admin/images/404.svg | 314 ------------ admin/images/500.svg | 208 -------- component/pear/css/module/layout.css | 4 +- component/pear/module/{core => }/admin.js | 0 component/pear/module/fullscreen.js | 7 +- component/pear/module/{core => }/menu.js | 0 component/pear/module/messageCenter.js | 0 component/pear/module/{core => }/page.js | 0 component/pear/module/{core => }/tabPage.js | 0 component/pear/pear.js | 18 +- index.html | 2 +- view/exception/403.html | 35 +- view/exception/404.html | 35 +- view/exception/500.html | 35 +- 18 files changed, 55 insertions(+), 1141 deletions(-) create mode 100644 admin/css/other/exception.css rename admin/css/{overwrite.css => reset.css} (100%) delete mode 100644 admin/images/403.svg delete mode 100644 admin/images/404.svg delete mode 100644 admin/images/500.svg rename component/pear/module/{core => }/admin.js (100%) rename component/pear/module/{core => }/menu.js (100%) create mode 100644 component/pear/module/messageCenter.js rename component/pear/module/{core => }/page.js (100%) rename component/pear/module/{core => }/tabPage.js (100%) diff --git a/admin/css/admin.css b/admin/css/admin.css index 48331da..352b91d 100644 --- a/admin/css/admin.css +++ b/admin/css/admin.css @@ -4,10 +4,10 @@ body, height: 100%; } -.pear-admin .layui-header, .pear-admin .layui-body, .pear-admin .layui-logo, .pear-admin .layui-side, +.pear-admin .layui-header, .pear-admin .layui-header .layui-layout-left { transition: all .3s; } diff --git a/admin/css/other/exception.css b/admin/css/other/exception.css new file mode 100644 index 0000000..d3b0124 --- /dev/null +++ b/admin/css/other/exception.css @@ -0,0 +1,28 @@ +.pear-exception { + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + text-align: center; + box-sizing: border-box; + padding: 70px 40px +} + +.pear-exception-title { + margin-top: 20px; +} + +.pear-exception-title p { + color: rgb(0, 0, 0); + font-size: 20px; +} + +.pear-exception-description { + margin-top: 10px; + color: #8D9095; + font-size: 14px; +} + +.pear-exception-extra { + margin: 30px; +} \ No newline at end of file diff --git a/admin/css/overwrite.css b/admin/css/reset.css similarity index 100% rename from admin/css/overwrite.css rename to admin/css/reset.css diff --git a/admin/images/403.svg b/admin/images/403.svg deleted file mode 100644 index 610f136..0000000 --- a/admin/images/403.svg +++ /dev/null @@ -1,508 +0,0 @@ - - - - Group 9 - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/admin/images/404.svg b/admin/images/404.svg deleted file mode 100644 index 5531d05..0000000 --- a/admin/images/404.svg +++ /dev/null @@ -1,314 +0,0 @@ - - - - Group 4 - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/admin/images/500.svg b/admin/images/500.svg deleted file mode 100644 index de723b1..0000000 --- a/admin/images/500.svg +++ /dev/null @@ -1,208 +0,0 @@ - - - - Group 4 - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/component/pear/css/module/layout.css b/component/pear/css/module/layout.css index 94be5aa..de4a778 100644 --- a/component/pear/css/module/layout.css +++ b/component/pear/css/module/layout.css @@ -34,8 +34,8 @@ body::-webkit-scrollbar-corner { background: #f6f6f6; } -.pear-row::before, -.pear-row::after { +.pear-row::after, +.pear-row::before { content: ""; display: table; clear: both; diff --git a/component/pear/module/core/admin.js b/component/pear/module/admin.js similarity index 100% rename from component/pear/module/core/admin.js rename to component/pear/module/admin.js diff --git a/component/pear/module/fullscreen.js b/component/pear/module/fullscreen.js index 234c81b..807c767 100644 --- a/component/pear/module/fullscreen.js +++ b/component/pear/module/fullscreen.js @@ -1,10 +1,12 @@ layui.define(['jquery', 'element'], function(exports) { - "use strict"; + var $ = layui.jquery; var defer = $.Deferred(); var fullScreen = new function() { + this.func = null; + this.onFullchange = function(func){ this.func = func; var evts = ['fullscreenchange','webkitfullscreenchange','mozfullscreenchange','MSFullscreenChange']; @@ -12,6 +14,7 @@ layui.define(['jquery', 'element'], window.addEventListener(evts[i], this.func); } } + this.fullScreen = function(dom){ var docElm = dom && document.querySelector(dom) || document.documentElement; if (docElm.requestFullscreen) { @@ -28,6 +31,7 @@ layui.define(['jquery', 'element'], defer.resolve("返回值"); return defer.promise(); } + this.fullClose = function(){ if(this.isFullscreen()) { if (document.exitFullscreen) { @@ -43,6 +47,7 @@ layui.define(['jquery', 'element'], defer.resolve("返回值"); return defer.promise(); } + this.isFullscreen = function(){ return document.fullscreenElement || document.msFullscreenElement || diff --git a/component/pear/module/core/menu.js b/component/pear/module/menu.js similarity index 100% rename from component/pear/module/core/menu.js rename to component/pear/module/menu.js diff --git a/component/pear/module/messageCenter.js b/component/pear/module/messageCenter.js new file mode 100644 index 0000000..e69de29 diff --git a/component/pear/module/core/page.js b/component/pear/module/page.js similarity index 100% rename from component/pear/module/core/page.js rename to component/pear/module/page.js diff --git a/component/pear/module/core/tabPage.js b/component/pear/module/tabPage.js similarity index 100% rename from component/pear/module/core/tabPage.js rename to component/pear/module/tabPage.js diff --git a/component/pear/pear.js b/component/pear/pear.js index 2360acf..2750858 100644 --- a/component/pear/pear.js +++ b/component/pear/pear.js @@ -9,22 +9,20 @@ layui.config({ base: rootPath + "module/", version: "3.40.0" }).extend({ - admin: "core/admin", - page: "core/page", - tabPage: "core/tabPage", - menu: "core/menu", - + admin: "admin", + page: "page", + tabPage: "tabPage", + menu: "menu", + fullscreen:"fullscreen", + button: "button", + theme: "theme", echarts: "extends/echarts", echartsTheme: "extends/echartsTheme", yaml:"extends/yaml", nprogress: "extends/nprogress", toast: "extends/toast", popup:"extends/popup", - count:"extends/count", - - button: "button", - fullscreen:"fullscreen", - theme: "theme", + count:"extends/count", }).use(['layer', 'theme'], function () { diff --git a/index.html b/index.html index 7f6ef29..4db9ae7 100644 --- a/index.html +++ b/index.html @@ -13,7 +13,7 @@ - + diff --git a/view/exception/403.html b/view/exception/403.html index 0ab3271..243d126 100644 --- a/view/exception/403.html +++ b/view/exception/403.html @@ -1,3 +1,5 @@ + +
                                      @@ -11,35 +13,4 @@ 抱歉, 你无权访问该页面.
                                      -
                                      - - \ No newline at end of file +
                                      \ No newline at end of file diff --git a/view/exception/404.html b/view/exception/404.html index a922f28..71e65cc 100644 --- a/view/exception/404.html +++ b/view/exception/404.html @@ -1,3 +1,5 @@ + +
                                      @@ -11,35 +13,4 @@ 抱歉, 你访问的页面不存在.
                                      -
                                      - - \ No newline at end of file +
                                      \ No newline at end of file diff --git a/view/exception/500.html b/view/exception/500.html index 028aaea..d374b81 100644 --- a/view/exception/500.html +++ b/view/exception/500.html @@ -1,3 +1,5 @@ + +
                                      @@ -11,35 +13,4 @@ 抱歉, 服务器出错了.
                                      -
                                      - - \ No newline at end of file +
                                      \ No newline at end of file -- Gitee From c62f365b30fba0c142499a9fc39ffa0e327befe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sat, 24 Jun 2023 18:01:35 +0800 Subject: [PATCH 012/141] update --- admin/data/message.json | 90 +++++++++++++++++++ component/pear/css/module/messageCenter.css | 39 ++++++++ component/pear/css/pear.css | 1 + component/pear/module/admin.js | 38 +++++--- component/pear/module/messageCenter.js | 98 +++++++++++++++++++++ component/pear/pear.js | 1 + index.html | 2 +- 7 files changed, 256 insertions(+), 13 deletions(-) create mode 100644 admin/data/message.json create mode 100644 component/pear/css/module/messageCenter.css diff --git a/admin/data/message.json b/admin/data/message.json new file mode 100644 index 0000000..8b9b30d --- /dev/null +++ b/admin/data/message.json @@ -0,0 +1,90 @@ +[{ + "id": 1, + "title": "通知", + "children": [{ + "id": 11, + "avatar":"https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", + "title": "你收到了 14 份新周报", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, { + "id": 12, + "avatar":"https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png", + "title": "曲妮妮 已通过第三轮面试", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, + { + "id": 11, + "avatar":"https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png", + "title": "可以区分多种通知类型", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, { + "id": 12, + "avatar":"https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png", + "title": "左侧图标用于区分不同的类型", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, + { + "id": 11, + "avatar":"https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", + "title": "内容不要超过两行字", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }] +}, +{ + "id": 2, + "title": "消息", + "children": [{ + "id": 11, + "avatar":"https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", + "title": "你收到了 14 份新周报", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, { + "id": 12, + "avatar":"https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png", + "title": "曲妮妮 已通过第三轮面试", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, + { + "id": 11, + "avatar":"https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png", + "title": "可以区分多种通知类型", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, { + "id": 12, + "avatar":"https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png", + "title": "左侧图标用于区分不同的类型", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, + { + "id": 11, + "avatar":"https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", + "title": "内容不要超过两行字", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }] +}, +{ + "id": 3, + "title": "代办", + "children": [] +} +] \ No newline at end of file diff --git a/component/pear/css/module/messageCenter.css b/component/pear/css/module/messageCenter.css new file mode 100644 index 0000000..0ab9ef3 --- /dev/null +++ b/component/pear/css/module/messageCenter.css @@ -0,0 +1,39 @@ +.pear-message-center { + width: 360px; + height: 100%; +} + +.pear-message-center .layui-tab .layui-tab-title{ + display: flex; +} + +.pear-message-center .layui-tab .layui-tab-title .layui-this::after { + display: none; +} + +.pear-message-center .layui-tab .layui-tab-title li { + flex: 1; +} + +.pear-message-center .message-item img { + margin-left: 8px; + width: 33px !important; + height: 33px !important; + border-radius: 50px; + margin-right: 15px; +} + +.pear-message-center .message-item { + height: 64px !important; + line-height: 45px !important; + padding-right: 20px; + padding-left: 20px; + border-bottom: 1px solid whitesmoke; + padding-top: 10px; + padding-bottom: 15px; +} + +.pear-message-center .message-item .extra { + float: right; + right: 10px; +} \ No newline at end of file diff --git a/component/pear/css/pear.css b/component/pear/css/pear.css index 74c1fd7..22d4ceb 100644 --- a/component/pear/css/pear.css +++ b/component/pear/css/pear.css @@ -1,6 +1,7 @@ @import url("../../layui/css/layui.css"); @import url("../font/iconfont.css"); @import url("module/nprogress.css"); +@import url("module/messageCenter.css"); @import url("module/layout.css"); @import url("module/menu.css"); @import url("module/page.css"); diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 35dadae..1db34b1 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -1,4 +1,4 @@ -layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'theme', 'fullscreen'], +layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'theme', 'fullscreen', 'messageCenter'], function (exports) { "use strict"; @@ -6,20 +6,26 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't form = layui.form, yaml = layui.yaml, page = layui.page, - tabPage = layui.tabPage, menu = layui.menu, - - pearTheme = layui.theme, - fullscreen = layui.fullscreen; + messageCenter = layui.messageCenter, + fullscreen = layui.fullscreen, + tabPage = layui.tabPage, + theme = layui.theme; var bodyFrame; + var sideMenu; + var bodyTab; + var config; + var logout = function () { }; - var msgInstance; + var body = $('body'); + var msgInstance; + var pearAdmin = new function () { this.configuration = {}; @@ -93,6 +99,14 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't } } + this.messageRender = function(options) { + msgInstance = messageCenter.render({ + elem: '.message', + url: options.header.message, + height: '250px' + }); + } + this.logoRender = function (param) { $(".layui-logo .logo").attr("src", param.logo.image); $(".layui-logo .title").html(param.logo.title); @@ -217,7 +231,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't localStorage.setItem("theme-color", currentColor.id); localStorage.setItem("theme-color-color", currentColor.color); localStorage.setItem("theme-color-second", currentColor.second); - pearTheme.changeTheme(window, isAutoHead(config)); + theme.changeTheme(window, isAutoHead(config)); var menu = localStorage.getItem("theme-menu"); if (menu === null) { @@ -544,7 +558,6 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't $list.off("click").on("click", "li", function () { var menuId = $(this).attr("smenu-id"); var menuUrl = $(this).attr("smenu-url"); - var menuIcon = $(this).attr("smenu-icon"); var menuTitle = $(this).attr("smenu-title"); var menuType = $(this).attr("smenu-type"); var openableWindow = menuType === "1" || menuType === 1; @@ -778,7 +791,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't form.on('switch(auto-head)', function (data) { localStorage.setItem("auto-head", this.checked); - pearTheme.changeTheme(window, this.checked); + theme.changeTheme(window, this.checked); }) form.on('switch(banner)', function (data) { @@ -846,10 +859,10 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't localStorage.setItem("theme-header", theme); if (theme == "auto-theme") { localStorage.setItem("auto-head", true); - pearTheme.changeTheme(window, true); + theme.changeTheme(window, true); } else { localStorage.setItem("auto-head", false); - pearTheme.changeTheme(window, false); + theme.changeTheme(window, false); } pearAdmin.headerSkin(theme); }); @@ -862,7 +875,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't localStorage.setItem("theme-color", currentColor.id); localStorage.setItem("theme-color-color", currentColor.color); localStorage.setItem("theme-color-second", currentColor.second); - pearTheme.changeTheme(window, isAutoHead(config)); + theme.changeTheme(window, isAutoHead(config)); }); function applyConfig(param) { @@ -871,6 +884,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't pearAdmin.menuRender(param); pearAdmin.bodyRender(param); pearAdmin.themeRender(param); + pearAdmin.messageRender(param); pearAdmin.keepLoad(param); } diff --git a/component/pear/module/messageCenter.js b/component/pear/module/messageCenter.js index e69de29..c041d25 100644 --- a/component/pear/module/messageCenter.js +++ b/component/pear/module/messageCenter.js @@ -0,0 +1,98 @@ +layui.define(['table', 'jquery', 'element', 'dropdown'], function (exports) { + "use strict"; + + var MOD_NAME = 'messageCenter', + $ = layui.jquery, + dropdown = layui.dropdown, + element = layui.element; + + var message = function (opt) { + this.option = opt; + }; + + message.prototype.render = function (opt) { + //默认配置值 + var option = { + elem: opt.elem, + url: opt.url ? opt.url : false, + height: opt.height, + data: opt.data + } + if (option.url != false) { + option.data = getData(option.url); + + $(`${opt.elem}`).append(`
                                    • + +
                                    • `); + + var messageContent = createHtml(option); + + dropdown.render({ + elem: option.elem, + align: "center", + content: messageContent, + }) + } + + return new message(option); + } + + message.prototype.click = function (callback) { + $("*[notice-id]").click(function (event) { + event.preventDefault(); + var id = $(this).attr("notice-id"); + var title = $(this).attr("notice-title"); + var context = $(this).attr("notice-context"); + var form = $(this).attr("notice-form"); + callback(id, title, context, form); + }) + } + + /** 同 步 请 求 获 取 数 据 */ + function getData(url) { + $.ajaxSettings.async = false; + var data = null; + $.get(url, function (result) { + data = result; + }); + $.ajaxSettings.async = true; + return data; + } + + function createHtml(option) { + + var count = 0; + var notice = '
                                      ' + var noticeTitle = '
                                        '; + var noticeContent = '
                                        '; + + $.each(option.data, function (i, item) { + + noticeTitle += '
                                      • ' + item.title + '
                                      • '; + noticeContent += '
                                        '; + + + $.each(item.children, function (i, note) { + count++; + noticeContent += '
                                        '; + + noticeContent += '
                                        ' + note.title + '
                                        ' + + '
                                        ' + note.time + '
                                        ' + + '
                                        '; + }) + + noticeContent += '
                                        '; + }) + + noticeTitle += '
                                      '; + noticeContent += '
                                      '; + notice += noticeTitle; + notice += noticeContent; + notice += "
                                      " + + return notice; + } + + exports(MOD_NAME, new message()); +}) \ No newline at end of file diff --git a/component/pear/pear.js b/component/pear/pear.js index 2750858..4643b8e 100644 --- a/component/pear/pear.js +++ b/component/pear/pear.js @@ -14,6 +14,7 @@ layui.config({ tabPage: "tabPage", menu: "menu", fullscreen:"fullscreen", + messageCenter: "messageCenter", button: "button", theme: "theme", echarts: "extends/echarts", diff --git a/index.html b/index.html index 4db9ae7..970ad9e 100644 --- a/index.html +++ b/index.html @@ -38,8 +38,8 @@
                                      • -
                                      • +
                                      • -- Gitee From 92db961026c3c1b6fcb41706ed5be25704ef48c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sat, 24 Jun 2023 23:16:06 +0800 Subject: [PATCH 013/141] update --- component/pear/module/messageCenter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component/pear/module/messageCenter.js b/component/pear/module/messageCenter.js index c041d25..e0c5b80 100644 --- a/component/pear/module/messageCenter.js +++ b/component/pear/module/messageCenter.js @@ -68,7 +68,7 @@ layui.define(['table', 'jquery', 'element', 'dropdown'], function (exports) { $.each(option.data, function (i, item) { - noticeTitle += '
                                      • ' + item.title + '
                                      • '; + noticeTitle += `
                                      • ${item.title}
                                      • `; noticeContent += '
                                        '; -- Gitee From 27ff0b0d6347f7144cad6a80b659d1a9ae33beeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 25 Jun 2023 00:10:41 +0800 Subject: [PATCH 014/141] update --- admin/data/message.json | 190 +++++++++++++------------ component/pear/module/messageCenter.js | 48 +++---- 2 files changed, 119 insertions(+), 119 deletions(-) diff --git a/admin/data/message.json b/admin/data/message.json index 8b9b30d..b95a924 100644 --- a/admin/data/message.json +++ b/admin/data/message.json @@ -1,90 +1,102 @@ -[{ - "id": 1, - "title": "通知", - "children": [{ - "id": 11, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", - "title": "你收到了 14 份新周报", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, { - "id": 12, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png", - "title": "曲妮妮 已通过第三轮面试", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, - { - "id": 11, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png", - "title": "可以区分多种通知类型", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, { - "id": 12, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png", - "title": "左侧图标用于区分不同的类型", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, - { - "id": 11, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", - "title": "内容不要超过两行字", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }] -}, { - "id": 2, - "title": "消息", - "children": [{ - "id": 11, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", - "title": "你收到了 14 份新周报", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, { - "id": 12, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png", - "title": "曲妮妮 已通过第三轮面试", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, - { - "id": 11, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png", - "title": "可以区分多种通知类型", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, { - "id": 12, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png", - "title": "左侧图标用于区分不同的类型", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }, - { - "id": 11, - "avatar":"https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", - "title": "内容不要超过两行字", - "context": "这是消息内容。", - "form": "就眠仪式", - "time": "刚刚" - }] -}, -{ - "id": 3, - "title": "代办", - "children": [] -} -] \ No newline at end of file + "code": 200, + "data": [ + { + "id": 1, + "title": "通知", + "children": [ + { + "id": 11, + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", + "title": "你收到了 14 份新周报", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, + { + "id": 12, + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png", + "title": "曲妮妮 已通过第三轮面试", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, + { + "id": 11, + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png", + "title": "可以区分多种通知类型", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, + { + "id": 12, + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png", + "title": "左侧图标用于区分不同的类型", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, + { + "id": 11, + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", + "title": "内容不要超过两行字", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + } + ] + }, + { + "id": 2, + "title": "消息", + "children": [ + { + "id": 11, + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", + "title": "你收到了 14 份新周报", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, + { + "id": 12, + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png", + "title": "曲妮妮 已通过第三轮面试", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, + { + "id": 11, + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png", + "title": "可以区分多种通知类型", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, + { + "id": 12, + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png", + "title": "左侧图标用于区分不同的类型", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + }, + { + "id": 11, + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", + "title": "内容不要超过两行字", + "context": "这是消息内容。", + "form": "就眠仪式", + "time": "刚刚" + } + ] + }, + { + "id": 3, + "title": "代办", + "children": [] + } + ] +} \ No newline at end of file diff --git a/component/pear/module/messageCenter.js b/component/pear/module/messageCenter.js index e0c5b80..9ac7118 100644 --- a/component/pear/module/messageCenter.js +++ b/component/pear/module/messageCenter.js @@ -3,15 +3,14 @@ layui.define(['table', 'jquery', 'element', 'dropdown'], function (exports) { var MOD_NAME = 'messageCenter', $ = layui.jquery, - dropdown = layui.dropdown, - element = layui.element; + element = layui.element, + dropdown = layui.dropdown; var message = function (opt) { this.option = opt; }; message.prototype.render = function (opt) { - //默认配置值 var option = { elem: opt.elem, url: opt.url ? opt.url : false, @@ -19,21 +18,21 @@ layui.define(['table', 'jquery', 'element', 'dropdown'], function (exports) { data: opt.data } if (option.url != false) { - option.data = getData(option.url); - - $(`${opt.elem}`).append(`
                                      • - -
                                      • `); - - var messageContent = createHtml(option); - - dropdown.render({ - elem: option.elem, - align: "center", - content: messageContent, - }) + $.get(option.url, function (result) { + const { code, success, data } = result; + $(`${opt.elem}`).append(`
                                      • + +
                                      • `); + if (code == 200 || success) { + option.data = data; + dropdown.render({ + elem: option.elem, + align: "center", + content: createHtml(option), + }) + } + }); } - return new message(option); } @@ -48,17 +47,6 @@ layui.define(['table', 'jquery', 'element', 'dropdown'], function (exports) { }) } - /** 同 步 请 求 获 取 数 据 */ - function getData(url) { - $.ajaxSettings.async = false; - var data = null; - $.get(url, function (result) { - data = result; - }); - $.ajaxSettings.async = true; - return data; - } - function createHtml(option) { var count = 0; @@ -68,9 +56,9 @@ layui.define(['table', 'jquery', 'element', 'dropdown'], function (exports) { $.each(option.data, function (i, item) { - noticeTitle += `
                                      • ${item.title}
                                      • `; + noticeTitle += `
                                      • ${item.title}
                                      • `; noticeContent += '
                                        '; - + $.each(item.children, function (i, note) { count++; -- Gitee From 9785ee25378bc161e748713bebc488778cf9aeaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 25 Jun 2023 00:43:02 +0800 Subject: [PATCH 015/141] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a07beda..524c96e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ ### 更新日志 -[优化] 移动端 collapse 样式,由圆形调整为正方形。 -[重构] frame.js 组件, \ No newline at end of file +- [优化] 移动端 collapse 样式,由圆形调整为正方形。 +- [重构] frame.js 组件,重命名为 page.js, 移除 iframe 嵌套。 +- [重构] tab.js 组件,重命名为 tabPage.js, 移除 iframe 嵌套。 +- [新增] admin.js 模块 setConfigurationProvider 方法,用于自定义 configuration 来源。 +- [优化] admin.js 模块 logout 方法,返回值由 boolean 调整为 Promise 类型。 +- [新增] 夜间模式适配,目前已完成整体框架兼容,layui 待完成。 \ No newline at end of file -- Gitee From 252c5116dcea3277230e149afb2d2e85967ed4d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 25 Jun 2023 09:24:13 +0800 Subject: [PATCH 016/141] update --- admin/css/other/console1.css | 136 +++++++++ admin/css/other/console2.css | 115 ++++++++ component/pear/module/admin.js | 6 +- component/pear/module/theme.js | 2 + view/console/console1.html | 522 +++++++++++++++++++++++++++++++++ view/console/console2.html | 475 ++++++++++++++++++++++++++++++ 6 files changed, 1253 insertions(+), 3 deletions(-) create mode 100644 admin/css/other/console1.css create mode 100644 admin/css/other/console2.css diff --git a/admin/css/other/console1.css b/admin/css/other/console1.css new file mode 100644 index 0000000..164d208 --- /dev/null +++ b/admin/css/other/console1.css @@ -0,0 +1,136 @@ +.top-panel { + border-radius: 4px; + text-align: center; +} + +.top-panel>.layui-card-body { + height: 60px; +} + +.top-panel-number { + line-height: 60px; + font-size: 29px; + border-right: 1px solid #eceff9; +} + +.top-panel-tips { + padding-left: 8px; + padding-top: 16px; + line-height: 30px; + font-size: 12px; +} + +.card { + width: 100%; + height: 160px; + background-color: whitesmoke; + border-radius: 4px; +} + +.card .header .avatar { + width: 28px; + height: 28px; + margin: 20px; + border-radius: 50px; +} + +.card .header { + color: dimgray; +} + +.card .body { + color: gray; +} + +.card .body { + margin-left: 20px; + margin-right: 20px; +} + +.card .footer { + margin-left: 20px; + margin-right: 20px; + margin-top: 20px; + font-size: 13px; + color: gray; + position: absolute; +} + +.custom-tab .layui-tab-title { + border-bottom-width: 0px; + border-bottom-style: none; +} + +.custom-tab .layui-tab-title li { + margin-left: 10px; +} + +.list .list-item { + height: 31.8px; + line-height: 31.8px; + color: gray; + padding: 5px; + padding-left: 15px; + border-radius: 4px; + margin-top: 5.2px; +} + +.list .list-item:hover { + background-color: whitesmoke; +} + +.list .list-item .title { + font-size: 13px; + width: 100%; +} + +.list .list-item .footer { + position: absolute; + right: 30px; + font-size: 12px; +} + +.top-panel-tips i { + font-size: 33px; +} + +.layuiadmin-card-status { + padding: 0 10px 10px; +} + +.layuiadmin-card-status dd { + padding: 15px 0; + border-bottom: 1px solid #EEE; + display: -webkit-flex; + display: flex; +} + +.layuiadmin-card-status dd div.layui-status-img, +.layuiadmin-card-team .layui-team-img { + width: 32px; + height: 32px; + border-radius: 50%; + margin-right: 15px; +} + +.layuiadmin-card-status dd div.layui-status-img a { + width: 100%; + height: 100%; + display: inline-block; + text-align: center; + line-height: 32px; +} + +.layuiadmin-card-status dd div span { + color: #BBB; +} + +.layuiadmin-card-status dd div a { + color: #01AAED; +} + +.top-panel-tips svg { + margin-top: -12px; + width: 50px; + height: 50px; +} \ No newline at end of file diff --git a/admin/css/other/console2.css b/admin/css/other/console2.css new file mode 100644 index 0000000..fbf6c89 --- /dev/null +++ b/admin/css/other/console2.css @@ -0,0 +1,115 @@ +.pear-card { + width: 100%; + height: 66px; + background-color: #F8F8F8; + display: inline-block; + text-align: center; + border-radius: 5px; + margin-bottom: 3px; +} + +.pear-card:hover, +.pear-card2:hover { + box-shadow: 2px 0 8px 0 lightgray !important; +} + +.pear-card2 { + width: 100%; + height: 90px; + background-color: #F8F8F8; + display: inline-block; + border-radius: 5px; + text-align: center; + margin-bottom: 3px; +} + +.pear-card2 i { + font-size: 30px; + height: 90px; + line-height: 90px; +} + +.pear-card i { + font-size: 30px; + height: 66px; + line-height: 66px; +} + +.pear-card-title { + margin-top: 3px; + width: 100%; + display: inline-block; + text-align: center; +} + +.person img { + width: 90px; + height: 90px; + border-radius: 4px; + margin-top: 8px; + margin-left: 8px; +} + +.pear-card2 .count { + color: #51A351; + font-size: 30px; + margin-top: 12px; +} + +.pear-card2 .title { + color: gray; + font-size: 14px; + margin-top: 14px; +} + +.pear-card-status { + padding: 0 10px 10px; +} + +.pear-card-status li { + position: relative; + padding: 10px 0; + border-bottom: 1px solid #EEE; +} + +.pear-card-status li h3 { + padding-bottom: 5px; + font-weight: 700; +} + +.pear-card-status li p { + padding-bottom: 10px; + padding-top: 3px; +} + +.pear-card-status li>span { + color: #999; + height: 24px; + line-height: 24px; +} + +.pear-reply { + position: absolute; + right: 20px; + bottom: 12px; + height: 24px; + line-height: 24px; +} + +.person .title { + font-size: 17px; + font-weight: 600; + margin-left: 18px; + margin-top: 16px; + position: absolute; + display: inline-block; +} + +.person .desc { + font-size: 16px; + font-weight: 600; + margin-left: 115px; + margin-top: -30px; + position: absolute; + display: inline-block; +} \ No newline at end of file diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 1db34b1..bede8e4 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -853,10 +853,10 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't }); body.on('click', '[data-select-header]', function () { - var theme = $(this).attr('data-select-header'); + var headerColor = $(this).attr('data-select-header'); $('[data-select-header]').removeClass("layui-this"); $(this).addClass("layui-this"); - localStorage.setItem("theme-header", theme); + localStorage.setItem("theme-header", headerColor); if (theme == "auto-theme") { localStorage.setItem("auto-head", true); theme.changeTheme(window, true); @@ -864,7 +864,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't localStorage.setItem("auto-head", false); theme.changeTheme(window, false); } - pearAdmin.headerSkin(theme); + pearAdmin.headerSkin(headerColor); }); body.on('click', '.select-color-item', function () { diff --git a/component/pear/module/theme.js b/component/pear/module/theme.js index bd69e44..0c4a109 100644 --- a/component/pear/module/theme.js +++ b/component/pear/module/theme.js @@ -6,7 +6,9 @@ layui.define(["jquery","layer"], function (exports) { theme.autoHead = false; theme.changeTheme = function (target, autoHead) { + this.autoHead = autoHead; + var color = localStorage.getItem("theme-color-color"); document.documentElement.style.setProperty("--global-primary-color", color); diff --git a/view/console/console1.html b/view/console/console1.html index e69de29..8d9c481 100644 --- a/view/console/console1.html +++ b/view/console/console1.html @@ -0,0 +1,522 @@ + + + + + + 控制后台 + + + + + + + +
                                        +
                                        +
                                        +
                                        +
                                        今日访问
                                        +
                                        +
                                        +
                                        + 0 +
                                        +
                                        + + + + + + + + + + +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        提交次数
                                        +
                                        +
                                        +
                                        + 0 +
                                        +
                                        + + + + + + + + + + + + + +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        下载数量
                                        +
                                        +
                                        +
                                        + 0 +
                                        +
                                        + + + + + + + + + + +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        流量统计
                                        +
                                        +
                                        +
                                        + 0 +
                                        +
                                        + + + + + + + + + + + +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        动态
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +

                                        七彩枫叶 在 Pear Admin 专区 回答问题 +

                                        + 几秒前 +
                                        +
                                        +
                                        +
                                        +
                                        +

                                        简 在 Pear + Admin 专区 进行了 提问 +

                                        + 2天前 +
                                        +
                                        +
                                        +
                                        +
                                        +

                                        恒宇少年 将 Pear Admin 更新至 + 2.3.0 + 版本

                                        + 7天前 +
                                        +
                                        +
                                        +
                                        +
                                        +

                                        如花 在 Pear Admin 社区 发布了 建议

                                        + 7天前 +
                                        +
                                        +
                                        +
                                        +
                                        +

                                        就眠仪式 在 Pear Admin 社区 发布了 建议

                                        + 8天前 +
                                        +
                                        +
                                        +
                                        +
                                        +

                                        贤心 在 Pear Admin 专区 进行了 提问 +

                                        + 8天前 +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        更 新
                                        +
                                        +
                                          +
                                        • 优化代码格式2021-09-06 + 11:28
                                        • +
                                        • 新增消息组件2021-09-06 + 11:28
                                        • +
                                        • 移动端兼容2021-09-06 + 11:28
                                        • +
                                        • 系统布局优化2021-09-06 + 11:28
                                        • +
                                        • 兼容多系统菜单模式2021-09-06 + 11:28
                                        • +
                                        • 兼容多标签页切换2021-09-06 + 11:28
                                        • +
                                        • 扩展下拉组件2021-09-06 + 11:28
                                        • +
                                        • 扩展卡片样式2021-09-06 + 11:28
                                        • +
                                        +
                                        +
                                        +
                                        +
                                        + 链接 +
                                        +
                                        + 官 + 网 +
                                        + 下 载 +
                                        + 后 端 +
                                        +
                                        +
                                        +
                                        + 寄语 +
                                        +
                                        + 原想将澎湃的爱平平稳稳放置你手心,奈何我徒有一股蛮劲,只顾向你跑去,一个不稳跌的满身脏兮兮。试图爬起的我, + 心想你会不会笑我 " 献爱献的这样笨拙, 怎么不知避开爱里的埋伏 " +
                                        +
                                        +
                                        +
                                        +
                                        + + + + \ No newline at end of file diff --git a/view/console/console2.html b/view/console/console2.html index e69de29..9e1b870 100644 --- a/view/console/console2.html +++ b/view/console/console2.html @@ -0,0 +1,475 @@ + + + + + + 数据分析 + + + + + + + +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        + 快捷菜单 +
                                        +
                                        +
                                        +
                                        +
                                        + +
                                        + 主页 +
                                        +
                                        +
                                        + +
                                        + 弹层 +
                                        +
                                        +
                                        + +
                                        + 聊天 +
                                        +
                                        +
                                        + +
                                        + 相机 +
                                        +
                                        +
                                        + +
                                        + 表单 +
                                        +
                                        +
                                        + +
                                        + 安全 +
                                        +
                                        +
                                        + +
                                        + 公告 +
                                        +
                                        +
                                        + +
                                        + 更多 +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        + 代办任务 +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        待审评论
                                        +
                                        21
                                        +
                                        +
                                        +
                                        +
                                        +
                                        待审帖子
                                        +
                                        32
                                        +
                                        +
                                        +
                                        +
                                        +
                                        待审文章
                                        +
                                        14
                                        +
                                        +
                                        +
                                        +
                                        +
                                        待审用户
                                        +
                                        63
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        留言板
                                        +
                                        +
                                          +
                                        • +

                                          要不要作为我的家人,搬来我家。

                                          + 12月25日 19:92 + 回复 +
                                        • +
                                        • +

                                          快乐的时候不敢尽兴,频繁警戒自己保持清醒。

                                          + 4月30日 22:43 + 回复 +
                                        • +
                                        • +

                                          夏天真的来了,尽管它还有些犹豫。

                                          + 4月30日 22:43 + 回复 +
                                        • +
                                        • +

                                          看似不可达到的高度,只要坚持不懈就可能到达。

                                          + 4月30日 22:43 + 回复 +
                                        • +
                                        • +

                                          当浑浊变成了一种常态,那么清白就成了一种罪过。

                                          + 4月30日 22:43 + 回复 +
                                        • +
                                        • +

                                          那是一种内在的东西,他们到达不了,也无法触及!

                                          + 5月12日 01:25 + 回复 +
                                        • + +
                                        • +

                                          希望是一个好东西,也许是最好的,好东西是不会消亡的!

                                          + 6月11日 15:33 + 回复 +
                                        • +
                                        • +

                                          一切都在不可避免的走向庸俗。

                                          + 2月09日 13:40 + 回复 +
                                        • +
                                        • +

                                          路上没有灯火的时候,就点亮自己的头颅。

                                          + 3月11日 12:30 + 回复 +
                                        • + +
                                        • +

                                          我们应该不虚度一生,应该能够说:"我已经做了我能做的事。"

                                          + 4月30日 22:43 + 回复 +
                                        • + +
                                        • +

                                          接近,是我对一切的态度,是我对一切态度的距离

                                          + 6月11日 15:33 + 回复 +
                                        • +
                                        • +

                                          没有锚的船当然也可以航行,只是紧张充满你的一生。

                                          + 2月09日 13:40 + 回复 +
                                        • +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        + + + + \ No newline at end of file -- Gitee From 784b2fcb1b1419711add7466ea2b4470eebeedab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 25 Jun 2023 12:49:57 +0800 Subject: [PATCH 017/141] update --- admin/css/admin.dark.css | 15 +++++++++++++++ view/console/console1.html | 5 ----- view/console/console2.html | 3 --- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 47aa4da..1ff6767 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -98,6 +98,21 @@ border-color: #4C4D4F; } +/** console1 console2 */ +.pear-card, +.pear-card2 { + background-color: #0a0a0a !important; + color: #ffffff !important; +} + +.pear-card:hover { + box-shadow: none !important; +} + +.pear-card-title { + color: #ffffff !important; +} + /** layer */ .pear-admin-dark .layui-layer { background-color: #141414; diff --git a/view/console/console1.html b/view/console/console1.html index 8d9c481..8c86bab 100644 --- a/view/console/console1.html +++ b/view/console/console1.html @@ -369,7 +369,6 @@ const colorList = ["#9E87FF", '#73DDFF', '#fe9a8b', '#F56948', '#9E87FF'] var option1 = { - backgroundColor: '#fff', tooltip: { show: false }, @@ -391,10 +390,8 @@ }, axisLabel: { margin: 10, - //textStyle: { fontSize: 14, color: 'rgba(#999)' - //} }, splitLine: { show: true, @@ -418,10 +415,8 @@ }, axisLabel: { margin: 10, - //textStyle: { fontSize: 14, color: '#999' - //} }, splitLine: { show: false diff --git a/view/console/console2.html b/view/console/console2.html index 9e1b870..2058940 100644 --- a/view/console/console2.html +++ b/view/console/console2.html @@ -235,8 +235,6 @@ }) }) - - let bgColor = "#fff"; let color = [ "#0090FF", "#36CE9E", @@ -306,7 +304,6 @@ } var option2 = { - backgroundColor: bgColor, color: color, legend: { right: 10, -- Gitee From 99e9584954d25aed89e39b1e875196841c5d1bf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 25 Jun 2023 13:22:04 +0800 Subject: [PATCH 018/141] update --- admin/css/admin.dark.css | 64 +++++++++++++++++++++++++++++--------- view/console/console1.html | 37 ++++------------------ view/console/console2.html | 36 +++++++-------------- 3 files changed, 67 insertions(+), 70 deletions(-) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 1ff6767..b8412fd 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -98,21 +98,6 @@ border-color: #4C4D4F; } -/** console1 console2 */ -.pear-card, -.pear-card2 { - background-color: #0a0a0a !important; - color: #ffffff !important; -} - -.pear-card:hover { - box-shadow: none !important; -} - -.pear-card-title { - color: #ffffff !important; -} - /** layer */ .pear-admin-dark .layui-layer { background-color: #141414; @@ -141,6 +126,10 @@ color: #ffffff; } +.pear-admin-dark .layui-card .layui-card-body { + color: #ffffff; +} + /** input */ .pear-admin-dark .layui-input { background-color: transparent; @@ -171,6 +160,51 @@ background-color: #1d1e1f !important; } +/** console1 console2 */ +.pear-admin-dark .top-panel-number { + color: #ffffff !important; + border-color: #414243 !important; +} + +.pear-admin-dark .list .list-item { + color: #ffffff; +} + +.pear-admin-dark .list .list-item:hover { + background-color: #0a0a0a !important; +} + +.pear-admin-dark .layuiadmin-card-status p { + color: #ffffff !important; +} + +.pear-admin-dark .layuiadmin-card-status dd { + border-color: rgba(0, 0, 0, .40) !important; +} + +.pear-admin-dark .pear-card, +.pear-admin-dark .pear-card2 { + background-color: #0a0a0a !important; + color: #ffffff !important; +} + +.pear-admin-dark .pear-card:hover { + box-shadow: none !important; +} + +.pear-admin-dark .pear-card-title { + color: #ffffff !important; +} + +.pear-admin-dark .pear-card-status li p { + color: #ffffff; +} + +.pear-admin-dark .pear-card-status li { + border-color: rgba(0, 0, 0, .40) !important; +} + + /** 403 404 500*/ .pear-admin-dark .pear-exception-title p{ color: #E5EAF3 !important; diff --git a/view/console/console1.html b/view/console/console1.html index 8c86bab..9d387b0 100644 --- a/view/console/console1.html +++ b/view/console/console1.html @@ -304,16 +304,16 @@
                                        @@ -323,7 +323,7 @@
                                      原想将澎湃的爱平平稳稳放置你手心,奈何我徒有一股蛮劲,只顾向你跑去,一个不稳跌的满身脏兮兮。试图爬起的我, - 心想你会不会笑我 " 献爱献的这样笨拙, 怎么不知避开爱里的埋伏 " + 心想你会不会笑我 " 献爱献的这样笨拙, 怎么不知避开爱里的埋伏。"
                                      @@ -439,32 +439,16 @@ y2: 1, colorStops: [{ offset: 0, - color: 'rgba(59,102,246)' // 0% 处的颜色 + color: 'rgba(59,102,246)' }, { offset: 1, - color: 'rgba(118,237,252)' // 100% 处的颜色 + color: 'rgba(118,237,252)' }] }, shadowBlur: 4, shadowColor: 'rgba(69,126,247,.2)', shadowOffsetY: 4 }, - areaStyle: { - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, - color: 'rgba(227,233,250,.9)' // 0% 处的颜色 - }, { - offset: 1, - color: 'rgba(248,251,252,.3)' // 100% 处的颜色 - }] - } - }, smooth: true, data: [20, 56, 17, 40, 68, 42] }, { @@ -486,15 +470,6 @@ shadowColor: 'rgba(253,121,128,.2)', shadowOffsetY: 4 }, - areaStyle: { - color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ - offset: 0, - color: 'rgba(255,84,108,.15)' - }, { - offset: 1, - color: 'rgba(252,140,118,0)' - }], false), - }, smooth: true, data: [20, 71, 8, 50, 57, 32] },] diff --git a/view/console/console2.html b/view/console/console2.html index 2058940..0c702ef 100644 --- a/view/console/console2.html +++ b/view/console/console2.html @@ -136,77 +136,65 @@
                                    • 要不要作为我的家人,搬来我家。

                                      12月25日 19:92 - 回复 + 回复
                                    • 快乐的时候不敢尽兴,频繁警戒自己保持清醒。

                                      4月30日 22:43 - 回复 + 回复
                                    • 夏天真的来了,尽管它还有些犹豫。

                                      4月30日 22:43 - 回复 + 回复
                                    • 看似不可达到的高度,只要坚持不懈就可能到达。

                                      4月30日 22:43 - 回复 + 回复
                                    • 当浑浊变成了一种常态,那么清白就成了一种罪过。

                                      4月30日 22:43 - 回复 + 回复
                                    • 那是一种内在的东西,他们到达不了,也无法触及!

                                      5月12日 01:25 - 回复 + 回复
                                    • 希望是一个好东西,也许是最好的,好东西是不会消亡的!

                                      6月11日 15:33 - 回复 + 回复
                                    • 一切都在不可避免的走向庸俗。

                                      2月09日 13:40 - 回复 + 回复
                                    • 路上没有灯火的时候,就点亮自己的头颅。

                                      3月11日 12:30 - 回复 + 回复
                                    • 我们应该不虚度一生,应该能够说:"我已经做了我能做的事。"

                                      4月30日 22:43 - 回复 + 回复
                                    • 接近,是我对一切的态度,是我对一切态度的距离

                                      6月11日 15:33 - 回复 + 回复
                                    • 没有锚的船当然也可以航行,只是紧张充满你的一生。

                                      2月09日 13:40 - 回复 + 回复
                                    -- Gitee From c0d5218dfc909f0a54871301ff54283de95871c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 25 Jun 2023 13:38:48 +0800 Subject: [PATCH 019/141] update --- admin/css/admin.dark.css | 55 +--- admin/css/other/console1.css | 136 ---------- admin/css/other/console2.css | 115 -------- admin/css/other/exception.css | 8 +- view/console/console1.html | 492 ---------------------------------- view/console/console2.html | 460 ------------------------------- view/exception/403.html | 8 +- view/exception/404.html | 8 +- view/exception/500.html | 8 +- 9 files changed, 21 insertions(+), 1269 deletions(-) delete mode 100644 admin/css/other/console1.css delete mode 100644 admin/css/other/console2.css diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index b8412fd..fb053db 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -160,56 +160,6 @@ background-color: #1d1e1f !important; } -/** console1 console2 */ -.pear-admin-dark .top-panel-number { - color: #ffffff !important; - border-color: #414243 !important; -} - -.pear-admin-dark .list .list-item { - color: #ffffff; -} - -.pear-admin-dark .list .list-item:hover { - background-color: #0a0a0a !important; -} - -.pear-admin-dark .layuiadmin-card-status p { - color: #ffffff !important; -} - -.pear-admin-dark .layuiadmin-card-status dd { - border-color: rgba(0, 0, 0, .40) !important; -} - -.pear-admin-dark .pear-card, -.pear-admin-dark .pear-card2 { - background-color: #0a0a0a !important; - color: #ffffff !important; -} - -.pear-admin-dark .pear-card:hover { - box-shadow: none !important; -} - -.pear-admin-dark .pear-card-title { - color: #ffffff !important; -} - -.pear-admin-dark .pear-card-status li p { - color: #ffffff; -} - -.pear-admin-dark .pear-card-status li { - border-color: rgba(0, 0, 0, .40) !important; -} - - -/** 403 404 500*/ -.pear-admin-dark .pear-exception-title p{ - color: #E5EAF3 !important; -} - /** success failure */ .pear-admin-dark .pear-result .content { background-color: rgba(153, 153, 153, 0.12); @@ -222,4 +172,9 @@ .pear-admin-dark .pear-result .description{ color: #8D9095; +} + +/** 403 404 500*/ +.pear-admin-dark .pear-exception .title p{ + color: #E5EAF3 !important; } \ No newline at end of file diff --git a/admin/css/other/console1.css b/admin/css/other/console1.css deleted file mode 100644 index 164d208..0000000 --- a/admin/css/other/console1.css +++ /dev/null @@ -1,136 +0,0 @@ -.top-panel { - border-radius: 4px; - text-align: center; -} - -.top-panel>.layui-card-body { - height: 60px; -} - -.top-panel-number { - line-height: 60px; - font-size: 29px; - border-right: 1px solid #eceff9; -} - -.top-panel-tips { - padding-left: 8px; - padding-top: 16px; - line-height: 30px; - font-size: 12px; -} - -.card { - width: 100%; - height: 160px; - background-color: whitesmoke; - border-radius: 4px; -} - -.card .header .avatar { - width: 28px; - height: 28px; - margin: 20px; - border-radius: 50px; -} - -.card .header { - color: dimgray; -} - -.card .body { - color: gray; -} - -.card .body { - margin-left: 20px; - margin-right: 20px; -} - -.card .footer { - margin-left: 20px; - margin-right: 20px; - margin-top: 20px; - font-size: 13px; - color: gray; - position: absolute; -} - -.custom-tab .layui-tab-title { - border-bottom-width: 0px; - border-bottom-style: none; -} - -.custom-tab .layui-tab-title li { - margin-left: 10px; -} - -.list .list-item { - height: 31.8px; - line-height: 31.8px; - color: gray; - padding: 5px; - padding-left: 15px; - border-radius: 4px; - margin-top: 5.2px; -} - -.list .list-item:hover { - background-color: whitesmoke; -} - -.list .list-item .title { - font-size: 13px; - width: 100%; -} - -.list .list-item .footer { - position: absolute; - right: 30px; - font-size: 12px; -} - -.top-panel-tips i { - font-size: 33px; -} - -.layuiadmin-card-status { - padding: 0 10px 10px; -} - -.layuiadmin-card-status dd { - padding: 15px 0; - border-bottom: 1px solid #EEE; - display: -webkit-flex; - display: flex; -} - -.layuiadmin-card-status dd div.layui-status-img, -.layuiadmin-card-team .layui-team-img { - width: 32px; - height: 32px; - border-radius: 50%; - margin-right: 15px; -} - -.layuiadmin-card-status dd div.layui-status-img a { - width: 100%; - height: 100%; - display: inline-block; - text-align: center; - line-height: 32px; -} - -.layuiadmin-card-status dd div span { - color: #BBB; -} - -.layuiadmin-card-status dd div a { - color: #01AAED; -} - -.top-panel-tips svg { - margin-top: -12px; - width: 50px; - height: 50px; -} \ No newline at end of file diff --git a/admin/css/other/console2.css b/admin/css/other/console2.css deleted file mode 100644 index fbf6c89..0000000 --- a/admin/css/other/console2.css +++ /dev/null @@ -1,115 +0,0 @@ -.pear-card { - width: 100%; - height: 66px; - background-color: #F8F8F8; - display: inline-block; - text-align: center; - border-radius: 5px; - margin-bottom: 3px; -} - -.pear-card:hover, -.pear-card2:hover { - box-shadow: 2px 0 8px 0 lightgray !important; -} - -.pear-card2 { - width: 100%; - height: 90px; - background-color: #F8F8F8; - display: inline-block; - border-radius: 5px; - text-align: center; - margin-bottom: 3px; -} - -.pear-card2 i { - font-size: 30px; - height: 90px; - line-height: 90px; -} - -.pear-card i { - font-size: 30px; - height: 66px; - line-height: 66px; -} - -.pear-card-title { - margin-top: 3px; - width: 100%; - display: inline-block; - text-align: center; -} - -.person img { - width: 90px; - height: 90px; - border-radius: 4px; - margin-top: 8px; - margin-left: 8px; -} - -.pear-card2 .count { - color: #51A351; - font-size: 30px; - margin-top: 12px; -} - -.pear-card2 .title { - color: gray; - font-size: 14px; - margin-top: 14px; -} - -.pear-card-status { - padding: 0 10px 10px; -} - -.pear-card-status li { - position: relative; - padding: 10px 0; - border-bottom: 1px solid #EEE; -} - -.pear-card-status li h3 { - padding-bottom: 5px; - font-weight: 700; -} - -.pear-card-status li p { - padding-bottom: 10px; - padding-top: 3px; -} - -.pear-card-status li>span { - color: #999; - height: 24px; - line-height: 24px; -} - -.pear-reply { - position: absolute; - right: 20px; - bottom: 12px; - height: 24px; - line-height: 24px; -} - -.person .title { - font-size: 17px; - font-weight: 600; - margin-left: 18px; - margin-top: 16px; - position: absolute; - display: inline-block; -} - -.person .desc { - font-size: 16px; - font-weight: 600; - margin-left: 115px; - margin-top: -30px; - position: absolute; - display: inline-block; -} \ No newline at end of file diff --git a/admin/css/other/exception.css b/admin/css/other/exception.css index d3b0124..e7f2027 100644 --- a/admin/css/other/exception.css +++ b/admin/css/other/exception.css @@ -8,21 +8,21 @@ padding: 70px 40px } -.pear-exception-title { +.pear-exception .title { margin-top: 20px; } -.pear-exception-title p { +.pear-exception .title p { color: rgb(0, 0, 0); font-size: 20px; } -.pear-exception-description { +.pear-exception .description { margin-top: 10px; color: #8D9095; font-size: 14px; } -.pear-exception-extra { +.pear-exception .extra { margin: 30px; } \ No newline at end of file diff --git a/view/console/console1.html b/view/console/console1.html index 9d387b0..e69de29 100644 --- a/view/console/console1.html +++ b/view/console/console1.html @@ -1,492 +0,0 @@ - - - - - - 控制后台 - - - - - - - -
                                    -
                                    -
                                    -
                                    -
                                    今日访问
                                    -
                                    -
                                    -
                                    - 0 -
                                    -
                                    - - - - - - - - - - -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    提交次数
                                    -
                                    -
                                    -
                                    - 0 -
                                    -
                                    - - - - - - - - - - - - - -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    下载数量
                                    -
                                    -
                                    -
                                    - 0 -
                                    -
                                    - - - - - - - - - - -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    流量统计
                                    -
                                    -
                                    -
                                    - 0 -
                                    -
                                    - - - - - - - - - - - -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    动态
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -

                                    七彩枫叶 在 Pear Admin 专区 回答问题 -

                                    - 几秒前 -
                                    -
                                    -
                                    -
                                    -
                                    -

                                    简 在 Pear - Admin 专区 进行了 提问 -

                                    - 2天前 -
                                    -
                                    -
                                    -
                                    -
                                    -

                                    恒宇少年 将 Pear Admin 更新至 - 2.3.0 - 版本

                                    - 7天前 -
                                    -
                                    -
                                    -
                                    -
                                    -

                                    如花 在 Pear Admin 社区 发布了 建议

                                    - 7天前 -
                                    -
                                    -
                                    -
                                    -
                                    -

                                    就眠仪式 在 Pear Admin 社区 发布了 建议

                                    - 8天前 -
                                    -
                                    -
                                    -
                                    -
                                    -

                                    贤心 在 Pear Admin 专区 进行了 提问 -

                                    - 8天前 -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    更 新
                                    -
                                    -
                                      -
                                    • 优化代码格式2021-09-06 - 11:28
                                    • -
                                    • 新增消息组件2021-09-06 - 11:28
                                    • -
                                    • 移动端兼容2021-09-06 - 11:28
                                    • -
                                    • 系统布局优化2021-09-06 - 11:28
                                    • -
                                    • 兼容多系统菜单模式2021-09-06 - 11:28
                                    • -
                                    • 兼容多标签页切换2021-09-06 - 11:28
                                    • -
                                    • 扩展下拉组件2021-09-06 - 11:28
                                    • -
                                    • 扩展卡片样式2021-09-06 - 11:28
                                    • -
                                    -
                                    -
                                    -
                                    -
                                    - 链接 -
                                    -
                                    - 官 - 网 -
                                    - 下 载 -
                                    - 后 端 -
                                    -
                                    -
                                    -
                                    - 寄语 -
                                    -
                                    - 原想将澎湃的爱平平稳稳放置你手心,奈何我徒有一股蛮劲,只顾向你跑去,一个不稳跌的满身脏兮兮。试图爬起的我, - 心想你会不会笑我 " 献爱献的这样笨拙, 怎么不知避开爱里的埋伏。" -
                                    -
                                    -
                                    -
                                    -
                                    - - - - \ No newline at end of file diff --git a/view/console/console2.html b/view/console/console2.html index 0c702ef..e69de29 100644 --- a/view/console/console2.html +++ b/view/console/console2.html @@ -1,460 +0,0 @@ - - - - - - 数据分析 - - - - - - - -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    - 快捷菜单 -
                                    -
                                    -
                                    -
                                    -
                                    - -
                                    - 主页 -
                                    -
                                    -
                                    - -
                                    - 弹层 -
                                    -
                                    -
                                    - -
                                    - 聊天 -
                                    -
                                    -
                                    - -
                                    - 相机 -
                                    -
                                    -
                                    - -
                                    - 表单 -
                                    -
                                    -
                                    - -
                                    - 安全 -
                                    -
                                    -
                                    - -
                                    - 公告 -
                                    -
                                    -
                                    - -
                                    - 更多 -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    - 代办任务 -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    待审评论
                                    -
                                    21
                                    -
                                    -
                                    -
                                    -
                                    -
                                    待审帖子
                                    -
                                    32
                                    -
                                    -
                                    -
                                    -
                                    -
                                    待审文章
                                    -
                                    14
                                    -
                                    -
                                    -
                                    -
                                    -
                                    待审用户
                                    -
                                    63
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    留言板
                                    -
                                    -
                                      -
                                    • -

                                      要不要作为我的家人,搬来我家。

                                      - 12月25日 19:92 - 回复 -
                                    • -
                                    • -

                                      快乐的时候不敢尽兴,频繁警戒自己保持清醒。

                                      - 4月30日 22:43 - 回复 -
                                    • -
                                    • -

                                      夏天真的来了,尽管它还有些犹豫。

                                      - 4月30日 22:43 - 回复 -
                                    • -
                                    • -

                                      看似不可达到的高度,只要坚持不懈就可能到达。

                                      - 4月30日 22:43 - 回复 -
                                    • -
                                    • -

                                      当浑浊变成了一种常态,那么清白就成了一种罪过。

                                      - 4月30日 22:43 - 回复 -
                                    • -
                                    • -

                                      那是一种内在的东西,他们到达不了,也无法触及!

                                      - 5月12日 01:25 - 回复 -
                                    • - -
                                    • -

                                      希望是一个好东西,也许是最好的,好东西是不会消亡的!

                                      - 6月11日 15:33 - 回复 -
                                    • -
                                    • -

                                      一切都在不可避免的走向庸俗。

                                      - 2月09日 13:40 - 回复 -
                                    • -
                                    • -

                                      路上没有灯火的时候,就点亮自己的头颅。

                                      - 3月11日 12:30 - 回复 -
                                    • - -
                                    • -

                                      我们应该不虚度一生,应该能够说:"我已经做了我能做的事。"

                                      - 4月30日 22:43 - 回复 -
                                    • - -
                                    • -

                                      接近,是我对一切的态度,是我对一切态度的距离

                                      - 6月11日 15:33 - 回复 -
                                    • -
                                    • -

                                      没有锚的船当然也可以航行,只是紧张充满你的一生。

                                      - 2月09日 13:40 - 回复 -
                                    • -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    - - - - \ No newline at end of file diff --git a/view/exception/403.html b/view/exception/403.html index 243d126..e925efd 100644 --- a/view/exception/403.html +++ b/view/exception/403.html @@ -1,16 +1,16 @@
                                    -
                                    +
                                    -
                                    +

                                    403

                                    -
                                    +
                                    抱歉, 你无权访问该页面.
                                    -
                                    +
                                    \ No newline at end of file diff --git a/view/exception/404.html b/view/exception/404.html index 71e65cc..e2fce7b 100644 --- a/view/exception/404.html +++ b/view/exception/404.html @@ -1,16 +1,16 @@
                                    -
                                    +
                                    -
                                    +

                                    404

                                    -
                                    +
                                    抱歉, 你访问的页面不存在.
                                    -
                                    +
                                    \ No newline at end of file diff --git a/view/exception/500.html b/view/exception/500.html index d374b81..17e25cd 100644 --- a/view/exception/500.html +++ b/view/exception/500.html @@ -1,16 +1,16 @@
                                    -
                                    +
                                    -
                                    +

                                    500

                                    -
                                    +
                                    抱歉, 服务器出错了.
                                    -
                                    +
                                    \ No newline at end of file -- Gitee From dcbaeb7955d127fab76103371636d4ef07550c25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 25 Jun 2023 14:03:38 +0800 Subject: [PATCH 020/141] update --- admin/data/menu.json | 9 ++- component/pear/module/admin.js | 3 + component/pear/module/tabPage.js | 126 ++++++++++++++++--------------- 3 files changed, 78 insertions(+), 60 deletions(-) diff --git a/admin/data/menu.json b/admin/data/menu.json index 433382f..d2d2785 100644 --- a/admin/data/menu.json +++ b/admin/data/menu.json @@ -95,7 +95,6 @@ "title": "菜单模式", "icon": "layui-icon layui-icon-auz", "type": 0, - "href": "", "children": [{ "id": "a", "title": "普通路由", @@ -104,6 +103,14 @@ "openType": "_component", "href": "view/result/success.html" }, + { + "id": "b", + "title": "嵌套网页", + "icon": "layui-icon layui-icon-face-cry", + "type": 1, + "openType": "_iframe", + "href": "http://www.layui-vue.com" + }, { "id": "c", "title": "新建标签", diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index bede8e4..f05fbca 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -144,6 +144,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't }) if (isMuiltTab(param) === "true" || isMuiltTab(param) === true) { + bodyTab = tabPage.render({ elem: 'content', roll: true, @@ -190,11 +191,13 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't title: data.menuTitle, url: data.menuUrl, icon: data.menuIcon, + type: data.menuOpenType, close: true }, 300); } compatible(); }) + } else { bodyFrame = page.render({ elem: 'content', diff --git a/component/pear/module/tabPage.js b/component/pear/module/tabPage.js index c6c4015..8273f9b 100644 --- a/component/pear/module/tabPage.js +++ b/component/pear/module/tabPage.js @@ -273,22 +273,35 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { var that = this; - $.ajax({ - url: opt.url, - type: 'get', - dataType: 'html', - async: false, - success: function (data) { - element.tabAdd(that.option.elem, { - title: title, - content: `
                                    ${data}
                                    `, - id: opt.id - }); - }, - error: function (xhr, textstatus, thrown) { - return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); - } - }); + if (opt.type === "_iframe") { + + element.tabAdd(this.option.elem, { + id: opt.id, + title: title, + content: '', + }); + + } else { + + $.ajax({ + url: opt.url, + type: 'get', + dataType: 'html', + async: false, + success: function (data) { + element.tabAdd(that.option.elem, { + id: opt.id, + title: title, + content: `
                                    ${data}
                                    `, + }); + }, + error: function (xhr, textstatus, thrown) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } + }); + } tabData.push(opt); sessionStorage.setItem(that.option.elem + "-pear-tab-data", JSON.stringify(tabData)); @@ -319,28 +332,37 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { } var that = this; - - $.ajax({ - url: opt.url, - type: 'get', - dataType: 'html', - async: false, - success: function (data) { - element.tabAdd(that.option.elem, { - title: title, - content: '
                                    ' + data + '
                                    ', - id: opt.id - }); - tabData.push(opt); - sessionStorage.setItem(that.option.elem + "-pear-tab-data", JSON.stringify(tabData)); - sessionStorage.setItem(that.option.elem + "-pear-tab-data-current", opt.id); - }, - error: function (xhr, textstatus, thrown) { - return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); - } - }); + if (opt.type === "_iframe") { + element.tabAdd(this.option.elem, { + id: opt.id, + title: title, + content: '', + }); + } else { + $.ajax({ + url: opt.url, + type: 'get', + dataType: 'html', + async: false, + success: function (data) { + element.tabAdd(that.option.elem, { + id: opt.id, + title: title, + content: '
                                    ' + data + '
                                    ', + }); + }, + error: function (xhr, textstatus, thrown) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } + }); + } + tabData.push(opt); + sessionStorage.setItem(that.option.elem + "-pear-tab-data", JSON.stringify(tabData)); + sessionStorage.setItem(that.option.elem + "-pear-tab-data-current", opt.id); } } element.tabChange(this.option.elem, opt.id); @@ -464,39 +486,26 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { title += titleItem; - if (option.index == index) { - $.ajax({ - url: item.url, - type: 'get', - dataType: 'html', - async: false, - success: function (data) { - content += '
                                    ' + data + '
                                    '; - }, - error: function (xhr) { - return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); - } - }); + if (item.type === "_iframe") { + + content += `
                                    ` + } else { + $.ajax({ url: item.url, type: 'get', dataType: 'html', async: false, success: function (data) { - content += '
                                    ' + data + '
                                    '; + content += `
                                    ${data}
                                    `; }, error: function (xhr) { return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); } }); } + index++; }); @@ -564,7 +573,6 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { }) $("#" + option.elem + "closeAll").click(function () { - var currentId = contextTabDOM.attr("lay-id"); var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li"); $.each(tabtitle, function (i) { if ($(this).find("span").is(".able-close")) { -- Gitee From edba1e67cbf7bb53ec9c7435643c950c9d9a84b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 25 Jun 2023 14:15:53 +0800 Subject: [PATCH 021/141] update --- component/pear/module/tabPage.js | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/component/pear/module/tabPage.js b/component/pear/module/tabPage.js index 8273f9b..536dcd4 100644 --- a/component/pear/module/tabPage.js +++ b/component/pear/module/tabPage.js @@ -278,9 +278,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { element.tabAdd(this.option.elem, { id: opt.id, title: title, - content: '', + content: `` }); } else { @@ -336,9 +334,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { element.tabAdd(this.option.elem, { id: opt.id, title: title, - content: '', + content: `` }); } else { $.ajax({ @@ -350,9 +346,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { element.tabAdd(that.option.elem, { id: opt.id, title: title, - content: '
                                    ' + data + '
                                    ', + content: `
                                    ${data}
                                    `, }); }, error: function (xhr, textstatus, thrown) { @@ -406,7 +400,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { var nextNode = removeTab.next("li"); if (!removeTab.hasClass("layui-this")) { removeTab.remove(); - var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("div[id='" + id + "']") + var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("*[id='" + id + "']") .parent(); tabContent.remove(); @@ -441,7 +435,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { removeTab.remove(); // 删除 content - var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("div[id='" + id + "']").parent(); + var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("*[id='" + id + "']").parent(); // 删除 tabContent.remove(); } -- Gitee From 9fa7e02566436d450242f1e9753d5532691719fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 25 Jun 2023 23:37:33 +0800 Subject: [PATCH 022/141] update --- component/pear/module/tabPage.js | 55 ++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/component/pear/module/tabPage.js b/component/pear/module/tabPage.js index 536dcd4..6e9794a 100644 --- a/component/pear/module/tabPage.js +++ b/component/pear/module/tabPage.js @@ -259,8 +259,6 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { /** * @since Pear Admin 4.0 - * - * */ tabPage.prototype.addTabOnly = function (opt, time) { @@ -278,7 +276,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { element.tabAdd(this.option.elem, { id: opt.id, title: title, - content: `` + content: `` }); } else { @@ -292,7 +290,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { element.tabAdd(that.option.elem, { id: opt.id, title: title, - content: `
                                    ${data}
                                    `, + content: `
                                    ${data}
                                    `, }); }, error: function (xhr, textstatus, thrown) { @@ -334,7 +332,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { element.tabAdd(this.option.elem, { id: opt.id, title: title, - content: `` + content: `` }); } else { $.ajax({ @@ -346,7 +344,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { element.tabAdd(that.option.elem, { id: opt.id, title: title, - content: `
                                    ${data}
                                    `, + content: `
                                    ${data}
                                    `, }); }, error: function (xhr, textstatus, thrown) { @@ -365,7 +363,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { // 刷 新 指 定 的 选 项 卡 tabPage.prototype.refresh = function (time) { - var $iframe = $(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-content .layui-show > div"); + var $iframe = $(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-content .layui-show > *"); var $iframeLoad; if (time != false && time != 0) { @@ -376,22 +374,31 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { }); } - $.ajax({ - url: $iframe.attr("src"), - type: 'get', - dataType: 'html', - success: function (data) { - $iframe.html(data); - if ($iframeLoad != undefined) { - $iframeLoad.fadeOut(1000, function () { - $iframeLoad.remove(); - }); + if($iframe.attr("type") === "_iframe") { + $iframe.attr("src", $iframe.attr("src")); + $iframe.on("load", function() { + $iframeLoad.fadeOut(1000, function() { + $iframeLoad.remove(); + }); + }) + } else { + $.ajax({ + url: $iframe.attr("src"), + type: 'get', + dataType: 'html', + success: function (data) { + $iframe.html(data); + if ($iframeLoad != undefined) { + $iframeLoad.fadeOut(1000, function () { + $iframeLoad.remove(); + }); + } + }, + error: function (xhr) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); } - }, - error: function (xhr) { - return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); - } - }); + }); + } } function tabDelete(elem, id, callback, option) { @@ -482,7 +489,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { if (item.type === "_iframe") { - content += `
                                    ` + content += `
                                    ` } else { @@ -492,7 +499,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { dataType: 'html', async: false, success: function (data) { - content += `
                                    ${data}
                                    `; + content += `
                                    ${data}
                                    `; }, error: function (xhr) { return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); -- Gitee From cf52e27aa998e15285c4412bee6c7f2919196445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Mon, 26 Jun 2023 00:16:28 +0800 Subject: [PATCH 023/141] update --- component/pear/module/admin.js | 2 +- component/pear/module/page.js | 143 +++++++++++++++++---------------- 2 files changed, 76 insertions(+), 69 deletions(-) diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index f05fbca..e30a62c 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -211,7 +211,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't if (data.menuOpenType === "_layer") { layer.open({ type: 2, title: data.menuTitle, content: data.menuUrl, area: ['80%', '80%'], maxmin: true }) } else { - bodyFrame.changePage(data.menuUrl, true); + bodyFrame.changePage(data.menuUrl, true, data.menuOpenType); } compatible() }) diff --git a/component/pear/module/page.js b/component/pear/module/page.js index a9703e2..cd7bc15 100644 --- a/component/pear/module/page.js +++ b/component/pear/module/page.js @@ -13,92 +13,97 @@ layui.define(['jquery', 'element'], function (exports) { url: opt.url, elem: opt.elem, title: opt.title, - width: opt.width, height: opt.height, - done: opt.done ? opt.done : function () { - console.log("菜单渲染成功"); - } + width: opt.width } renderContent(option); return new page(option); } - page.prototype.changePage = function (url, loading) { + page.prototype.changePage = function (url, loading, type) { + var $frameLoad = $("#" + this.option.elem).find(".pear-frame-loading"); var $frame = $("#" + this.option.elem + " .pear-frame-content"); - if(loading) { + + if (loading) { $frameLoad.css({ display: 'block' }); } - $.ajax({ - url: url, - type: 'get', - dataType: 'html', - success: function (data) { - $frame.html(data) - $frame.attr("src", url); + + if (type === "_iframe") { + + $frame.html(``); + + const $contentFrame = $frame.find("iframe"); + + $contentFrame.on("load", () => { $frameLoad.fadeOut(1000); - element.init(); - }, - error: function (xhr, textstatus, thrown) { - return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); - } - }); - } + }) - page.prototype.changePageByElement = function (elem, url, loading) { - var $frameLoad = $("#" + elem).find(".pear-frame-loading"); - var $frame = $("#" + elem + " .pear-frame-content"); - if(loading) { - $frameLoad.css({ - display: 'block' + } else { + + $.ajax({ + url: url, + type: 'get', + dataType: 'html', + success: function (data) { + $frame.html(data) + $frameLoad.fadeOut(1000); + element.init(); + }, + error: function (xhr) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } }); } - $.ajax({ - url: url, - type: 'get', - dataType: 'html', - success: function (data) { - $frame.html(data) - $frame.attr("src", url); - $frameLoad.fadeOut(1000); - element.init(); - }, - error: function (xhr, textstatus, thrown) { - return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); - } - }); + + $frame.attr("type", type); + $frame.attr("src", url); } page.prototype.refresh = function (loading) { var $frameLoad = $("#" + this.option.elem).find(".pear-frame-loading"); var $frame = $("#" + this.option.elem).find(".pear-frame-content"); - if(loading) { + + if (loading) { $frameLoad.css({ display: 'block' }); } - $.ajax({ - url: $frame.attr("src"), - type: 'get', - dataType: 'html', - success: function (data) { - $frame.html(data) + + if ($frame.attr("type") === "_iframe") { + + $frame.html(``); + + const $contentFrame = $frame.find("iframe"); + + $contentFrame.on("load", () => { $frameLoad.fadeOut(1000); - element.init(); - }, - error: function (xhr, textstatus, thrown) { - return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); - } - }); + }) + + } else { + $.ajax({ + type: 'get', + url: $frame.attr("src"), + dataType: 'html', + success: function (data) { + $frame.html(data) + $frameLoad.fadeOut(1000); + element.init(); + }, + error: function (xhr) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } + }); + } } function renderContent(option) { $("#" + option.elem).html(`
                                    -
                                    +
                                    @@ -108,22 +113,24 @@ layui.define(['jquery', 'element'], function (exports) {
                                    `); - + var $frame = $("#" + option.elem).find(".pear-frame-content"); - $.ajax({ - url: option.url, - type: 'get', - dataType: 'html', - success: function (data) { - $frame.html(data); - $frame.attr("src", option.url); - element.init(); - }, - error: function (xhr, textstatus, thrown) { - return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); - } - }); + if (option.type === "_iframe") { + $frame.html(``); + } else { + $.ajax({ + url: option.url, + type: 'get', + dataType: 'html', + success: function (data) { + $frame.html(data); + }, + error: function (xhr) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } + }); + } } exports('page', new page()); -- Gitee From 7f1b6a42367085fab09b04c207db2b92756e3644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Mon, 26 Jun 2023 00:26:49 +0800 Subject: [PATCH 024/141] update --- component/pear/module/admin.js | 6 ++---- component/pear/module/page.js | 33 +++++++++------------------------ 2 files changed, 11 insertions(+), 28 deletions(-) diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index e30a62c..003a0c5 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -202,16 +202,14 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't bodyFrame = page.render({ elem: 'content', title: '首页', - url: param.tab.index.href, - width: '100%', - height: '100%' + url: param.tab.index.href }); sideMenu.click(function (dom, data) { if (data.menuOpenType === "_layer") { layer.open({ type: 2, title: data.menuTitle, content: data.menuUrl, area: ['80%', '80%'], maxmin: true }) } else { - bodyFrame.changePage(data.menuUrl, true, data.menuOpenType); + bodyFrame.changePage(data.menuUrl, data.menuOpenType); } compatible() }) diff --git a/component/pear/module/page.js b/component/pear/module/page.js index cd7bc15..85bdd4b 100644 --- a/component/pear/module/page.js +++ b/component/pear/module/page.js @@ -10,37 +10,26 @@ layui.define(['jquery', 'element'], function (exports) { page.prototype.render = function (opt) { var option = { - url: opt.url, elem: opt.elem, - title: opt.title, - height: opt.height, - width: opt.width + url: opt.url, + width: opt.width || "100%", + height: opt.height || "100%", + title: opt.title } renderContent(option); return new page(option); } - page.prototype.changePage = function (url, loading, type) { - - var $frameLoad = $("#" + this.option.elem).find(".pear-frame-loading"); - var $frame = $("#" + this.option.elem + " .pear-frame-content"); + page.prototype.changePage = function (url, type) { - if (loading) { - $frameLoad.css({ - display: 'block' - }); - } + const $frame = $("#" + this.option.elem + " .pear-frame-content"); + $frame.attr("type", type); + $frame.attr("src", url); if (type === "_iframe") { $frame.html(``); - const $contentFrame = $frame.find("iframe"); - - $contentFrame.on("load", () => { - $frameLoad.fadeOut(1000); - }) - } else { $.ajax({ @@ -49,20 +38,16 @@ layui.define(['jquery', 'element'], function (exports) { dataType: 'html', success: function (data) { $frame.html(data) - $frameLoad.fadeOut(1000); - element.init(); }, error: function (xhr) { return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); } }); } - - $frame.attr("type", type); - $frame.attr("src", url); } page.prototype.refresh = function (loading) { + var $frameLoad = $("#" + this.option.elem).find(".pear-frame-loading"); var $frame = $("#" + this.option.elem).find(".pear-frame-content"); -- Gitee From 3f4ccf05cd07371239f08711f190e77b8935b8ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Mon, 26 Jun 2023 04:08:28 +0800 Subject: [PATCH 025/141] update --- admin/css/admin.dark.css | 8 +++++++- component/pear/module/admin.js | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index fb053db..7bace8f 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -92,6 +92,12 @@ color: #ffffff; } +/** message center */ +.pear-admin-dark .pear-message-center .layui-tab-title, +.pear-admin-dark .pear-message-center .message-item { + border-color: rgba(0, 0, 0, .30) !important; +} + /** button */ .pear-admin-dark .layui-btn { color: #ffffff; @@ -113,7 +119,7 @@ .pear-admin-dark .layui-layer .layui-layer-setwin > span, .pear-admin-dark .layui-layer .layui-layer-title { - color: white; + color: #ffffff; } /** card */ diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 003a0c5..0a54cd4 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -199,6 +199,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't }) } else { + bodyFrame = page.render({ elem: 'content', title: '首页', -- Gitee From 2f858f58337f5d3528dadbf7501444a59d72b751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Mon, 26 Jun 2023 04:51:44 +0800 Subject: [PATCH 026/141] update --- admin/css/admin.dark.css | 4 +++- component/pear/css/module/page.css | 9 ++++++-- component/pear/module/page.js | 36 ++++++++++++++++++++---------- 3 files changed, 34 insertions(+), 15 deletions(-) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 7bace8f..d1c474b 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -51,7 +51,8 @@ /** body */ .pear-admin-dark .layui-body, -.pear-admin-dark .layui-body .pear-tab-loading { +.pear-admin-dark .layui-body .pear-tab-loading, +.pear-admin-dark .layui-body .pear-frame-loading { background-color: #0a0a0a !important; } @@ -96,6 +97,7 @@ .pear-admin-dark .pear-message-center .layui-tab-title, .pear-admin-dark .pear-message-center .message-item { border-color: rgba(0, 0, 0, .30) !important; + color: #ffffff; } /** button */ diff --git a/component/pear/css/module/page.css b/component/pear/css/module/page.css index e916acf..9a3fba1 100644 --- a/component/pear/css/module/page.css +++ b/component/pear/css/module/page.css @@ -22,19 +22,24 @@ border: whitesmoke 1px solid; } -.pear-frame .pear-frame-content { +.pear-frame .pear-frame-content, +.pear-frame .pear-frame-content iframe { width: 100%; height: calc(100% - 0px) !important; } +.pear-frame .pear-frame-content iframe { + height: calc(100% - 4px) !important; +} + .pear-frame-loading { position: absolute; display: none; width: 100%; height: calc(100% - 0px) !important; + background-color: #fff; top: 0px; z-index: 19; - background-color: #fff } .pear-frame-loading.close { diff --git a/component/pear/module/page.js b/component/pear/module/page.js index 85bdd4b..11f25cf 100644 --- a/component/pear/module/page.js +++ b/component/pear/module/page.js @@ -8,6 +8,11 @@ layui.define(['jquery', 'element'], function (exports) { this.option = opt; }; + /** + * @since Pear Admin 4.0 + * + * 创建 Page 页面 + */ page.prototype.render = function (opt) { var option = { elem: opt.elem, @@ -20,20 +25,23 @@ layui.define(['jquery', 'element'], function (exports) { return new page(option); } - page.prototype.changePage = function (url, type) { + /** + * @since Pear Admin 4.0 + * + * 切换 Page 页面 + */ + page.prototype.changePage = function (href, type) { - const $frame = $("#" + this.option.elem + " .pear-frame-content"); - $frame.attr("type", type); - $frame.attr("src", url); + const $frame = $(`#${this.option.elem} .pear-frame-content`); if (type === "_iframe") { - $frame.html(``); + $frame.html(``); } else { $.ajax({ - url: url, + url: href, type: 'get', dataType: 'html', success: function (data) { @@ -44,12 +52,15 @@ layui.define(['jquery', 'element'], function (exports) { } }); } + + $frame.attr("type", type); + $frame.attr("href", href); } page.prototype.refresh = function (loading) { - var $frameLoad = $("#" + this.option.elem).find(".pear-frame-loading"); - var $frame = $("#" + this.option.elem).find(".pear-frame-content"); + var $frameLoad = $(`#${this.option.elem} .pear-frame-loading`); + var $frame = $(`#${this.option.elem} .pear-frame-content`); if (loading) { $frameLoad.css({ @@ -59,7 +70,7 @@ layui.define(['jquery', 'element'], function (exports) { if ($frame.attr("type") === "_iframe") { - $frame.html(``); + $frame.html(``); const $contentFrame = $frame.find("iframe"); @@ -70,7 +81,7 @@ layui.define(['jquery', 'element'], function (exports) { } else { $.ajax({ type: 'get', - url: $frame.attr("src"), + url: $frame.attr("href"), dataType: 'html', success: function (data) { $frame.html(data) @@ -88,7 +99,7 @@ layui.define(['jquery', 'element'], function (exports) { $("#" + option.elem).html(`
                                    -
                                    +
                                    @@ -102,7 +113,8 @@ layui.define(['jquery', 'element'], function (exports) { var $frame = $("#" + option.elem).find(".pear-frame-content"); if (option.type === "_iframe") { - $frame.html(``); + + $frame.html(``); } else { $.ajax({ url: option.url, -- Gitee From f318a02035a70eaa1f07d08475a55904e5ea1525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Mon, 26 Jun 2023 06:04:41 +0800 Subject: [PATCH 027/141] update --- admin/css/admin.dark.css | 10 ++++++++++ .../pear/css/module/{layout.css => global.css} | 17 ++++++++--------- component/pear/css/pear.css | 2 +- 3 files changed, 19 insertions(+), 10 deletions(-) rename component/pear/css/module/{layout.css => global.css} (97%) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index d1c474b..0633bad 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -185,4 +185,14 @@ /** 403 404 500*/ .pear-admin-dark .pear-exception .title p{ color: #E5EAF3 !important; +} + +/** scroll */ +.pear-admin-dark *::-webkit-scrollbar-thumb { + background: #141414; + border-radius: 4px; +} + +.pear-admin-dark *::-webkit-scrollbar-thumb:hover { + background: #0a0a0a; } \ No newline at end of file diff --git a/component/pear/css/module/layout.css b/component/pear/css/module/global.css similarity index 97% rename from component/pear/css/module/layout.css rename to component/pear/css/module/global.css index de4a778..94d57c7 100644 --- a/component/pear/css/module/layout.css +++ b/component/pear/css/module/global.css @@ -6,31 +6,30 @@ width: 100%; } -body::-webkit-scrollbar { +*::-webkit-scrollbar { width: 0px; height: 0px; } -body::-webkit-scrollbar { +*::-webkit-scrollbar { width: 6px; height: 6px; } -body::-webkit-scrollbar-track { - background: white; - border-radius: 2px; +*::-webkit-scrollbar-track { + background: transparent; } -body::-webkit-scrollbar-thumb { +*::-webkit-scrollbar-thumb { background: #E6E6E6; - border-radius: 2px; + border-radius: 4px; } -body::-webkit-scrollbar-thumb:hover { +*::-webkit-scrollbar-thumb:hover { background: #E6E6E6; } -body::-webkit-scrollbar-corner { +*::-webkit-scrollbar-corner { background: #f6f6f6; } diff --git a/component/pear/css/pear.css b/component/pear/css/pear.css index 22d4ceb..a7f279c 100644 --- a/component/pear/css/pear.css +++ b/component/pear/css/pear.css @@ -2,7 +2,7 @@ @import url("../font/iconfont.css"); @import url("module/nprogress.css"); @import url("module/messageCenter.css"); -@import url("module/layout.css"); +@import url("module/global.css"); @import url("module/menu.css"); @import url("module/page.css"); @import url("module/tabPage.css"); \ No newline at end of file -- Gitee From bf04573473690503e91a464bca3ae18bc6ff082d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Mon, 26 Jun 2023 08:10:31 +0800 Subject: [PATCH 028/141] update --- admin/css/admin.css | 120 ++++++++++++++------------ admin/css/admin.dark.css | 4 +- component/pear/css/module/menu.css | 72 +++++++++------- component/pear/css/module/page.css | 16 ++-- component/pear/css/module/tabPage.css | 89 +++++++++---------- component/pear/module/admin.js | 5 +- component/pear/module/page.js | 14 +-- component/pear/module/tabPage.js | 52 +++++------ component/pear/module/theme.js | 61 +------------ 9 files changed, 200 insertions(+), 233 deletions(-) diff --git a/admin/css/admin.css b/admin/css/admin.css index 352b91d..0041cbb 100644 --- a/admin/css/admin.css +++ b/admin/css/admin.css @@ -13,7 +13,7 @@ body, } .pear-admin.banner-layout .layui-side { - top: 60px!important; + top: 60px !important; } .pear-admin.banner-layout .layui-side .layui-logo { @@ -25,38 +25,15 @@ body, } .pear-admin.banner-layout .layui-side .layui-side-scroll { - height: 100%!important; + height: 100% !important; } .pear-admin.banner-layout .layui-side .layui-side-scroll { - height: 100%!important; + height: 100% !important; } -.pear-admin .layui-header.dark-theme .layui-layout-control .layui-this *{ - background-color: rgba(0,0,0,.1)!important; -} - -.pear-admin.banner-layout .layui-header { - z-index: 99999; - width: 100%; - left: 0px; -} - -.pear-admin.banner-layout .layui-header .layui-layout-left { - left: 230px; -} - -.pear-admin.banner-layout .layui-header .layui-logo .title { - top: 2px; -} - -.pear-admin.banner-layout .layui-header .layui-layout-control { - display: inline-block; - left: 370px; -} - -.pear-admin.banner-layout .layui-header.dark-theme { - box-shadow: 2px 0 6px rgb(0 21 41 / 35%); +.pear-admin .layui-header.dark-theme .layui-layout-control .layui-this * { + background-color: rgba(0, 0, 0, .1) !important; } .pear-admin .layui-header .layui-logo { @@ -108,7 +85,7 @@ body, .pear-admin .layui-logo .title { font-size: 21px; font-weight: 550; - color: #5FB878; + color: var(--global-primary-color); position: relative; top: 5px; margin-left: 5px; @@ -151,7 +128,7 @@ body, left: 230px; } -.pear-admin .layui-body > div { +.pear-admin .layui-body>div { height: 100%; } @@ -161,8 +138,8 @@ body, .pear-admin .layui-footer { position: absolute; - display: flex; - justify-content: space-between; + display: flex; + justify-content: space-between; left: 230px; background: #fff; border-top: 1px solid #F2F2F2; @@ -179,6 +156,55 @@ body, display: none; } +/** 通栏布局 */ + +.pear-admin.banner-layout .layui-header { + left: 0px; + z-index: 99999; + width: 100%; +} + +.pear-admin.banner-layout .layui-header.light-theme { + border-bottom: 1px solid whitesmoke; +} + +.pear-admin.banner-layout .layui-header.auto-theme, +.pear-admin.banner-layout .layui-header.dark-theme { + box-shadow: 0 1px 4px rgba(0, 0, 0, .1); +} + +.pear-admin.banner-layout .layui-header .layui-layout-left { + left: 230px; +} + +.pear-admin.banner-layout .layui-header .layui-logo .title { + top: 2px; +} + +.pear-admin.banner-layout .layui-header .layui-layout-control { + display: inline-block; + left: 370px; +} + +/** 头部主题 */ +.pear-admin .auto-theme { + background-color: var(--global-primary-color); + color: white; +} + +.pear-admin .auto-theme .layui-logo { + background-color: var(--global-primary-color); + border: none; +} + +.pear-admin .auto-theme .layui-logo .title { + color: white; +} + +.pear-admin .auto-theme .layui-nav * { + color: white !important; +} + /** 收缩布局 */ .pear-mini .layui-side .layui-logo .title { display: none; @@ -213,18 +239,14 @@ body, display: none; } -.pear-mini .bottom-nav li { - width: 100% !important; -} - .pear-mini .layui-side-scroll { height: calc(100% - 60px); } .pear-admin .layui-header .layui-nav .layui-nav-bar { top: 0px !important; + background-color: var(--global-primary-color); height: 2px !important; - background-color: #5FB878; } .pear-admin .layui-header .layui-nav .layui-this:after { @@ -240,7 +262,7 @@ body, bottom: 30px; z-index: 400000; position: absolute; - background-color: #5FB878 !important; + background-color: var(--global-primary-color) !important; box-shadow: 2px 0 6px rgba(0, 21, 41, .20); text-align: center; border-radius: 4px; @@ -285,10 +307,6 @@ body, padding-right: 10px; } - .pear-mini .bottom-nav { - display: none; - } - .pear-mini .layui-side-scroll { height: calc(100% - 62px); } @@ -397,8 +415,8 @@ body, color: whitesmoke; } -.dark-theme.layui-header li>a{ - color: whitesmoke!important; +.dark-theme.layui-header li>a { + color: whitesmoke !important; } .dark-theme.layui-header .layui-logo { @@ -454,7 +472,7 @@ body, padding: 4px; top: -6px; left: -6px; - border: #5FB878 2px solid; + border: var(--global-primary-color) 2px solid; opacity: 1; border-radius: 4px; } @@ -551,18 +569,12 @@ body, background-color: #fff; } +.menu-search-list li.this, .menu-search-list li:hover { - background-color: #5FB878; + background-color: var(--global-primary-color); color: white; } -.menu-search-list li.this { - background-color: #5FB878; - color: white; -} - -/* 搜索面板结束 */ - /** 首屏加载 */ .loader-wrapper { position: fixed; @@ -600,7 +612,7 @@ body, width: 50px; height: 50px; border-radius: 3px; - background-color: #5FB878; + background-color: var(--global-primary-color); position: absolute; top: 0; left: 0; diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 0633bad..1065e2c 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -51,8 +51,8 @@ /** body */ .pear-admin-dark .layui-body, -.pear-admin-dark .layui-body .pear-tab-loading, -.pear-admin-dark .layui-body .pear-frame-loading { +.pear-admin-dark .layui-body .pear-tab-page-loading, +.pear-admin-dark .layui-body .pear-page-loading { background-color: #0a0a0a !important; } diff --git a/component/pear/css/module/menu.css b/component/pear/css/module/menu.css index 938f987..9c59c64 100644 --- a/component/pear/css/module/menu.css +++ b/component/pear/css/module/menu.css @@ -16,7 +16,7 @@ line-height: 48px; } -.pear-nav-tree .layui-nav-item>a .layui-nav-more { +.pear-nav-tree .layui-nav-item>a .layui-nav-more { padding: 0px; } @@ -24,7 +24,8 @@ width: 0px; height: 0px; } -.pear-side-scroll{ + +.pear-side-scroll { width: 230px; } @@ -33,7 +34,7 @@ .layui-nav-tree .layui-this, .layui-nav-tree .layui-this>a, .layui-nav-tree .layui-this>a:hover { - background-color: #5FB878; + background-color: var(--global-primary-color); } .pear-nav-tree .toast { @@ -100,7 +101,7 @@ font-size: 14px; } -.pear-nav-control.pc li{ +.pear-nav-control.pc li { display: inline-block; } @@ -112,15 +113,15 @@ background-color: whitesmoke; } -.pear-nav-control.pc *{ - color: darkslategray!important; +.pear-nav-control.pc * { + color: darkslategray !important; } -.pear-nav-control.pc .layui-nav-bar{ - display: none!important; +.pear-nav-control.pc .layui-nav-bar { + display: none !important; } -.pear-nav-control .layui-nav-child{ +.pear-nav-control .layui-nav-child { border: 1px solid whitesmoke; border-radius: 6px; width: 150px; @@ -134,6 +135,7 @@ display: block !important; background: transparent !important; } + .pear-nav-tree .layui-nav-hover:before { content: ''; position: absolute; @@ -147,66 +149,73 @@ display: block; box-shadow: 0px 0px 3px lightgray; } + .pear-nav-tree .layui-nav-hover a span { display: inline-block !important; } + .pear-nav-tree .layui-nav-hover a i { display: none; } + .pear-nav-tree .layui-nav-child dd a span { margin-left: 26px !important; } + .pear-nav-tree .layui-nav-child dd a i { display: none; } + .pear-nav-tree .layui-nav-hover dd a span { margin-left: 0px !important; } + .pear-nav-tree dl { padding-top: 0; padding-bottom: 0; } + /** 亮 样 式*/ -.dark-theme .layui-nav-tree{ - background-color: #28333E!important; +.dark-theme .layui-nav-tree { + background-color: #28333E !important; } -.light-theme{ - background-color: white!important; +.light-theme { + background-color: white !important; } .light-theme .pear-nav-tree, .light-theme .pear-nav-tree .layui-nav-hover:before, -.light-theme .pear-nav-tree .layui-nav-child{ - background-color: white!important; +.light-theme .pear-nav-tree .layui-nav-child { + background-color: white !important; } .light-theme .pear-nav-tree a, -.light-theme .pear-nav-tree .layui-nav-more{ - color: dimgray!important; +.light-theme .pear-nav-tree .layui-nav-more { + color: dimgray !important; border-top-color: dimgray; } -.light-theme .pear-nav-tree .layui-nav-itemed>a>.layui-nav-more{ - border-top-color: white!important; - border-bottom-color: dimgray!important; +.light-theme .pear-nav-tree .layui-nav-itemed>a>.layui-nav-more { + border-top-color: white !important; + border-bottom-color: dimgray !important; } .light-theme .pear-nav-tree .layui-this a, -.light-theme .pear-nav-tree .layui-this{ - color: white!important; - background-color: #5FB878!important; - +.light-theme .pear-nav-tree .layui-this { + color: white !important; + background-color: var(--global-primary-color) !important; + } -.light-theme .pear-nav-tree .layui-this a:hover{ - background-color: #5FB878!important; - +.light-theme .pear-nav-tree .layui-this a:hover { + background-color: var(--global-primary-color) !important; + } - -.light-theme .pear-nav-tree .layui-nav-bar{ + +.light-theme .pear-nav-tree .layui-nav-bar { display: none; - + } /** 下 拉 图 标 */ @@ -247,6 +256,7 @@ width: 12px; text-align: center; } + .pear-nav-tree.arrow .layui-nav-child.layui-nav-hover>dd>a>.layui-nav-more { display: inline-block !important; transform: rotate(270deg); @@ -264,4 +274,4 @@ content: '\e61a'; display: inline-block; vertical-align: middle; -} +} \ No newline at end of file diff --git a/component/pear/css/module/page.css b/component/pear/css/module/page.css index 9a3fba1..2131056 100644 --- a/component/pear/css/module/page.css +++ b/component/pear/css/module/page.css @@ -1,11 +1,11 @@ -.pear-frame { +.pear-page { width: 100%; position: relative; overflow-y: auto; height: 100%; } -.pear-frame .dot { +.pear-page .dot { width: 5px; height: 24px; background-color: #5FB878; @@ -15,24 +15,24 @@ display: inline-block; } -.pear-frame .pear-frame-title { +.pear-page .pear-page-title { height: 40px; line-height: 40px; background-color: white; border: whitesmoke 1px solid; } -.pear-frame .pear-frame-content, -.pear-frame .pear-frame-content iframe { +.pear-page .pear-page-content, +.pear-page .pear-page-content iframe { width: 100%; height: calc(100% - 0px) !important; } -.pear-frame .pear-frame-content iframe { +.pear-page .pear-page-content iframe { height: calc(100% - 4px) !important; } -.pear-frame-loading { +.pear-page-loading { position: absolute; display: none; width: 100%; @@ -42,7 +42,7 @@ z-index: 19; } -.pear-frame-loading.close { +.pear-page-loading.close { animation: close 1s; -webkit-animation: close 1s; animation-fill-mode: forwards; diff --git a/component/pear/css/module/tabPage.css b/component/pear/css/module/tabPage.css index 55feb01..42d866b 100644 --- a/component/pear/css/module/tabPage.css +++ b/component/pear/css/module/tabPage.css @@ -1,25 +1,25 @@ -.pear-tab { +.pear-tab-page { margin: 0px; overflow: hidden; height: 100% !important; } -.pear-tab .layui-tab-content { +.pear-tab-page .layui-tab-content { height: calc(100% - 42px) !important; } -.pear-tab .layui-tab-content .layui-tab-item { +.pear-tab-page .layui-tab-content .layui-tab-item { overflow-y: auto; height: 100%; } -.pear-tab-menu{ +.pear-tab-page-menu{ box-shadow: none; border-radius: 4px!important; overflow: hidden; } -.pear-tab-menu .item{ +.pear-tab-page-menu .item{ height: 20px; padding-left: 18px; padding-top: 7px; @@ -29,40 +29,40 @@ line-height: 20px; cursor:pointer; } -.pear-tab-menu .item:hover{ +.pear-tab-page-menu .item:hover{ background: #36b368; color: white; } -.pear-tab .layui-tab-content { +.pear-tab-page .layui-tab-content { padding: 0px; } -.pear-tab .layui-tab-title { +.pear-tab-page .layui-tab-title { border: none; border: 1px solid whitesmoke; background-color: white; } -.pear-tab .layui-tab-title li { +.pear-tab-page .layui-tab-title li { border-right: 1px solid whitesmoke; color: dimgray; font-size: 13.5px; } -.pear-tab .layui-tab-title .layui-tab-bar { +.pear-tab-page .layui-tab-title .layui-tab-bar { display: none; } -.pear-tab .layui-nav-more { +.pear-tab-page .layui-nav-more { display: none; } -.pear-tab .layui-tab-title .layui-this:after { +.pear-tab-page .layui-tab-title .layui-this:after { display: none; } -.pear-tab .layui-tab-title .pear-tab-active { +.pear-tab-page .layui-tab-title .pear-tab-page-active { display: inline-block; background-color: lightgray; width: 8px; @@ -71,96 +71,97 @@ margin-right: 12px; } -.pear-tab .layui-tab-title .layui-this .pear-tab-active { - background-color: #5FB878; +.pear-tab-page .layui-tab-title .layui-this .pear-tab-page-active { + background-color: var(--global-primary-color) !important; } -.pear-tab .layui-tab-title .layui-tab-close:hover { +.pear-tab-page .layui-tab-title .layui-tab-close:hover { background-color: white; line-height: 19px; color: gray; } -.pear-tab .layui-tab-title .disable-close+.layui-tab-close { +.pear-tab-page .layui-tab-title .disable-close+.layui-tab-close { display: none; } -.pear-tab .layui-tab-title .able-close+.layui-tab-close { +.pear-tab-page .layui-tab-title .able-close+.layui-tab-close { display: inline-block; } -.pear-tab .layui-tab-close{ +.pear-tab-page .layui-tab-close{ font-size: 13px; } -.pear-tab .layui-tab-control>li { +.pear-tab-page .layui-tab-control>li { position: absolute; top: 0px; height: 40px; line-height: 40px; width: 40px; + background-color: white; border-top: whitesmoke 1px solid; border-bottom: whitesmoke 1px solid; text-align: center; } -.pear-tab .layui-tab-prev { +.pear-tab-page .layui-tab-prev { left: 0px; border-right: whitesmoke 1px solid; } -.pear-tab .layui-tab-next { +.pear-tab-page .layui-tab-next { right: 40px; border-left: 1px solid whitesmoke; } -.pear-tab .layui-tab-tool { +.pear-tab-page .layui-tab-tool { right: 0px; border-left: 1px solid whitesmoke; } -.pear-tab .layui-tab-control .layui-tab-tool, -.pear-tab .layui-tab-control .layui-tab-prev, -.pear-tab .layui-tab-control .layui-tab-next { +.pear-tab-page .layui-tab-control .layui-tab-tool, +.pear-tab-page .layui-tab-control .layui-tab-prev, +.pear-tab-page .layui-tab-control .layui-tab-next { display: none; } -.pear-tab.layui-tab-roll .layui-tab-control .layui-tab-prev, -.pear-tab.layui-tab-roll .layui-tab-control .layui-tab-next { +.pear-tab-page.layui-tab-roll .layui-tab-control .layui-tab-prev, +.pear-tab-page.layui-tab-roll .layui-tab-control .layui-tab-next { display: block; } -.pear-tab.layui-tab-roll .layui-tab-control .layui-tab-next { +.pear-tab-page.layui-tab-roll .layui-tab-control .layui-tab-next { right: 0px; border-right: 1px solid whitesmoke; } -.pear-tab.layui-tab-roll .layui-tab-title { +.pear-tab-page.layui-tab-roll .layui-tab-title { padding-left: 40px; padding-right: 40px; } -.pear-tab.layui-tab-tool .layui-tab-control .layui-tab-tool { +.pear-tab-page.layui-tab-tool .layui-tab-control .layui-tab-tool { display: block; } -.pear-tab.layui-tab-tool .layui-tab-title { +.pear-tab-page.layui-tab-tool .layui-tab-title { padding-left: 0px; padding-right: 40px; } -.pear-tab.layui-tab-rollTool .layui-tab-title { +.pear-tab-page.layui-tab-rollTool .layui-tab-title { padding-left: 40px; padding-right: 80px; } -.pear-tab.layui-tab-rollTool .layui-tab-control .layui-tab-prev, -.pear-tab.layui-tab-rollTool .layui-tab-control .layui-tab-next, -.pear-tab.layui-tab-rollTool .layui-tab-control .layui-tab-tool { +.pear-tab-page.layui-tab-rollTool .layui-tab-control .layui-tab-prev, +.pear-tab-page.layui-tab-rollTool .layui-tab-control .layui-tab-next, +.pear-tab-page.layui-tab-rollTool .layui-tab-control .layui-tab-tool { display: block; } -.pear-tab .layui-tab-tool .layui-nav { +.pear-tab-page .layui-tab-tool .layui-nav { position: absolute; height: 43px !important; top: 0; @@ -170,15 +171,15 @@ background: 0 0; } -.pear-tab .layui-tab-tool .layui-nav-item { +.pear-tab-page .layui-tab-tool .layui-nav-item { height: 40px; } -.pear-tab .layui-tab-tool .layui-nav-bar { +.pear-tab-page .layui-tab-tool .layui-nav-bar { display: none; } -.pear-tab .layui-tab-tool .layui-nav-child { +.pear-tab-page .layui-tab-tool .layui-nav-child { left: auto; top: 45px; right: 3px; @@ -186,11 +187,11 @@ border: 1px solid whitesmoke; } -.pear-tab .layui-tab-tool .layui-this a { +.pear-tab-page .layui-tab-tool .layui-this a { background-color: #009688; } -.pear-tab-loading { +.pear-tab-page-loading { position: absolute; display: none; width: 100%; @@ -200,7 +201,7 @@ background-color: #fff } -.pear-tab-loading.close { +.pear-tab-page-loading.close { animation: close 1s; -webkit-animation: close 1s; animation-fill-mode: forwards; @@ -217,7 +218,7 @@ .ball-loader>span, .signal-loader>span { - background-color: #4aca85 !important; + background-color: var(--global-primary-color) !important; display: inline-block } diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 0a54cd4..e121400 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -367,8 +367,9 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't this.headerSkin = function (theme) { var pearAdmin = $(".pear-admin .layui-header"); - pearAdmin.removeClass("light-theme"); pearAdmin.removeClass("dark-theme"); + pearAdmin.removeClass("light-theme"); + pearAdmin.removeClass("auto-theme"); pearAdmin.addClass(theme); } @@ -702,7 +703,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't headItem += '
                                  • ' + '' + - '
                                    ' + + '
                                    ' + '
                                    ' + '
                                    ' + '
                                  • '; diff --git a/component/pear/module/page.js b/component/pear/module/page.js index 11f25cf..cff2c72 100644 --- a/component/pear/module/page.js +++ b/component/pear/module/page.js @@ -32,7 +32,7 @@ layui.define(['jquery', 'element'], function (exports) { */ page.prototype.changePage = function (href, type) { - const $frame = $(`#${this.option.elem} .pear-frame-content`); + const $frame = $(`#${this.option.elem} .pear-page-content`); if (type === "_iframe") { @@ -59,8 +59,8 @@ layui.define(['jquery', 'element'], function (exports) { page.prototype.refresh = function (loading) { - var $frameLoad = $(`#${this.option.elem} .pear-frame-loading`); - var $frame = $(`#${this.option.elem} .pear-frame-content`); + var $frameLoad = $(`#${this.option.elem} .pear-page-loading`); + var $frame = $(`#${this.option.elem} .pear-page-content`); if (loading) { $frameLoad.css({ @@ -98,9 +98,9 @@ layui.define(['jquery', 'element'], function (exports) { function renderContent(option) { $("#" + option.elem).html(` -
                                    -
                                    -
                                    +
                                    +
                                    +
                                    @@ -110,7 +110,7 @@ layui.define(['jquery', 'element'], function (exports) {
                                    `); - var $frame = $("#" + option.elem).find(".pear-frame-content"); + var $frame = $("#" + option.elem).find(".pear-page-content"); if (option.type === "_iframe") { diff --git a/component/pear/module/tabPage.js b/component/pear/module/tabPage.js index 6e9794a..e80225a 100644 --- a/component/pear/module/tabPage.js +++ b/component/pear/module/tabPage.js @@ -32,10 +32,10 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { } if (option.session) { - if (sessionStorage.getItem(option.elem + "-pear-tab-data") != null) { - tabData = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-data")); - option.data = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-data")); - tabDataCurrent = sessionStorage.getItem(option.elem + "-pear-tab-data-current"); + if (sessionStorage.getItem(option.elem + "-pear-tab-page-data") != null) { + tabData = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-page-data")); + option.data = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-page-data")); + tabDataCurrent = sessionStorage.getItem(option.elem + "-pear-tab-page-data-current"); tabData.forEach(function (item, index) { if (item.id == tabDataCurrent) { option.index = index; @@ -64,7 +64,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { }); closeEvent(option); - option.success(sessionStorage.getItem(option.elem + "-pear-tab-data-current")); + option.success(sessionStorage.getItem(option.elem + "-pear-tab-page-data-current")); dropdown.render({ elem: `#${option.elem} .layui-icon-down`, @@ -143,7 +143,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { type: 1, title: false, shade: false, - skin: 'pear-tab-menu', + skin: 'pear-tab-page-menu', closeBtn: false, area: [menuWidth + 'px', '108px'], fixed: true, @@ -183,7 +183,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { var elem = this.option.elem; element.on('tab(' + this.option.elem + ')', function (data) { var id = $("#" + elem + " .layui-tab-title .layui-this").attr("lay-id"); - sessionStorage.setItem(option.elem + "-pear-tab-data-current", id); + sessionStorage.setItem(option.elem + "-pear-tab-page-data-current", id); callback(id); }); } @@ -204,8 +204,8 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { } tabPage.prototype.clear = function () { - sessionStorage.removeItem(this.option.elem + "-pear-tab-data"); - sessionStorage.removeItem(this.option.elem + "-pear-tab-data-current"); + sessionStorage.removeItem(this.option.elem + "-pear-tab-page-data"); + sessionStorage.removeItem(this.option.elem + "-pear-tab-page-data-current"); } var index = 0; @@ -262,7 +262,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { */ tabPage.prototype.addTabOnly = function (opt, time) { - var title = ` + var title = ` ${opt.title} `; @@ -300,8 +300,8 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { } tabData.push(opt); - sessionStorage.setItem(that.option.elem + "-pear-tab-data", JSON.stringify(tabData)); - sessionStorage.setItem(that.option.elem + "-pear-tab-data-current", opt.id); + sessionStorage.setItem(that.option.elem + "-pear-tab-page-data", JSON.stringify(tabData)); + sessionStorage.setItem(that.option.elem + "-pear-tab-page-data-current", opt.id); } else { @@ -353,12 +353,12 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { }); } tabData.push(opt); - sessionStorage.setItem(that.option.elem + "-pear-tab-data", JSON.stringify(tabData)); - sessionStorage.setItem(that.option.elem + "-pear-tab-data-current", opt.id); + sessionStorage.setItem(that.option.elem + "-pear-tab-page-data", JSON.stringify(tabData)); + sessionStorage.setItem(that.option.elem + "-pear-tab-page-data-current", opt.id); } } element.tabChange(this.option.elem, opt.id); - sessionStorage.setItem(this.option.elem + "-pear-tab-data-current", opt.id); + sessionStorage.setItem(this.option.elem + "-pear-tab-page-data-current", opt.id); } // 刷 新 指 定 的 选 项 卡 @@ -367,8 +367,8 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { var $iframeLoad; if (time != false && time != 0) { - $iframe.parent().append(`
                                    `); - $iframeLoad = $("#" + this.option.elem).find("#pear-tab-loading" + index++); + $iframe.parent().append(`
                                    `); + $iframeLoad = $("#" + this.option.elem).find("#pear-tab-page-loading" + index++); $iframeLoad.css({ display: "block" }); @@ -411,12 +411,12 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { .parent(); tabContent.remove(); - tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-data")); - tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-data-current"); + tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-page-data")); + tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-page-data-current"); tabData = tabData.filter(function (item) { return item.id != id; }) - sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData)); + sessionStorage.setItem(elem + "-pear-tab-page-data", JSON.stringify(tabData)); return false; } @@ -432,13 +432,13 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { $("#" + elem + " [id='" + currId + "']").parent().addClass("layui-show"); } callback(currId); - tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-data")); - tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-data-current"); + tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-page-data")); + tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-page-data-current"); tabData = tabData.filter(function (item) { return item.id != id; }) - sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData)); - sessionStorage.setItem(elem + "-pear-tab-data-current", currId); + sessionStorage.setItem(elem + "-pear-tab-page-data", JSON.stringify(tabData)); + sessionStorage.setItem(elem + "-pear-tab-page-data-current", currId); removeTab.remove(); // 删除 content @@ -463,7 +463,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { if (option.roll == true && option.tool != false) { type = "layui-tab-rollTool"; } - var tab = '
                                    '; var title = '
                                      '; @@ -479,7 +479,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { $.each(option.data, function (i, item) { var titleItem = `
                                    • - + ${item.title} diff --git a/component/pear/module/theme.js b/component/pear/module/theme.js index 0c4a109..20c8500 100644 --- a/component/pear/module/theme.js +++ b/component/pear/module/theme.js @@ -3,6 +3,7 @@ layui.define(["jquery","layer"], function (exports) { $ = layui.jquery; var theme = {}; + theme.autoHead = false; theme.changeTheme = function (target, autoHead) { @@ -12,65 +13,7 @@ layui.define(["jquery","layer"], function (exports) { var color = localStorage.getItem("theme-color-color"); document.documentElement.style.setProperty("--global-primary-color", color); - - this.colorSet(color); - } - - theme.colorSet = function(color) { - - var style = ''; - style += '.light-theme .pear-nav-tree .layui-this a:hover,.light-theme .pear-nav-tree .layui-this,.light-theme .pear-nav-tree .layui-this a,.pear-nav-tree .layui-this a,.pear-nav-tree .layui-this{background-color: ' +color + '!important;}'; - style += '.pear-admin .layui-logo .title{color:' + color + '!important;}'; - style += '.pear-frame-title .dot,.pear-tab .layui-this .pear-tab-active{background-color: ' + color +'!important;}'; - style += '.bottom-nav li a:hover{background-color:' + color + '!important;}'; - style += '.pear-btn-primary {border: 1px solid ' + color + '!important;}'; - style += '.pear-admin .layui-header .layui-nav .layui-nav-bar{background-color: ' + color + '!important;}' - style += '.ball-loader>span,.signal-loader>span {background-color: ' + color + '!important;}'; - style += '.layui-header .layui-nav-child .layui-this a{background-color:' + color +'!important;color:white!important;}'; - style += '.pearone-color .color-content li.layui-this:after, .pearone-color .color-content li:hover:after {border: ' +color + ' 3px solid!important;}'; - style += '.layui-nav .layui-nav-child dd.layui-this a, .layui-nav-child dd.layui-this{background-color:' + color + ';color:white;}'; - style += '.pear-social-entrance {background-color:' + color + '!important}'; - style += '.pear-admin .pe-collapse {background-color:' + color + '!important}'; - style += '.layui-fixbar li {background-color:' + color + '!important}'; - style += '.layui-form-checkbox[lay-skin=primary]:hover span {background-color: initial;}' - style += '.layui-form-checked[lay-skin=primary] i {border-color: ' + color + '!important;background-color: ' + color + ';}' - style += '.layui-form-checked,.layui-form-checked:hover {border-color: ' + color + '!important;}' - style += '.layui-form-checked span,.layui-form-checked:hover span {background-color: ' + color + ';}' - style += '.layui-form-checked i,.layui-form-checked:hover i {color: ' + color + ';}' - style += '.layui-form-onswitch { border-color: ' + color + '; background-color: ' + color + ';}' - style += '.layui-form-radio>i:hover, .layui-form-radioed>i {color: ' + color + ';}' - style += '.layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:'+ color +'!important}' - style += '.layui-tab-brief>.layui-tab-more li.layui-this:after, .layui-tab-brief>.layui-tab-title .layui-this:after{border-bottom: 3px solid '+color+'!important}' - style += '.layui-tab-brief>.layui-tab-title .layui-this{color:'+color+'!important}' - style += '.layui-progress-bar{background-color:'+color+'}'; - style += '.layui-elem-quote{border-left: 5px solid '+ color +'}'; - style += '.layui-timeline-axis{color:' + color + '}'; - style += '.layui-laydate .layui-this{background-color:'+color+'!important}'; - style += '.pear-this,.pear-text{color:' + color + '!important}'; - style += '.pear-back{background-color:'+ color +'!important}'; - style += '.pear-collapsed-pe{background-color:'+color+'!important}' - style += '.layui-form-select dl dd.layui-this{color:'+color+'!important;}' - style += '.layui-layer-btn a:first-child{border-color:'+color+';background-color:'+color+'!important}'; - style += '.layui-form-checkbox[lay-skin=primary]:hover i{border-color:'+color+'!important}' - style += '.pear-tab-menu .item:hover{background-color:'+color+'!important}' - style += '.layui-form-danger:focus {border-color:#FF5722 !important}' - style += '.pear-admin .user .layui-this a:hover{color:white!important}' - style += '.pear-admin .user a:hover{color:'+color+'!important}' - style += '.layui-form-radio:hover *, .layui-form-radioed, .layui-form-radioed>i{color:' + color + ' !important}'; - style += '.loader:after {background:'+color+'}' - style += '.layui-laydate .layui-this, .layui-laydate .layui-this>div{background:'+color+'!important}' - if(this.autoHead === true || this.autoHead === "true"){ - style += '.pear-admin.banner-layout .layui-header .layui-logo,.pear-admin .layui-header{border:none;background-color:' + color + '!important;}.pear-admin.banner-layout .layui-header .layui-logo .title,.pear-admin .layui-header .layui-nav .layui-nav-item>a{color:whitesmoke!important;}'; - style += '.pear-admin.banner-layout .layui-header{ box-shadow: 2px 0 6px rgb(0 21 41 / 35%) }' - style += '.pear-admin .layui-header .layui-layout-control .layui-this *,.pear-admin.banner-layout .layui-header .layui-layout-control .layui-this *{ background-color: rgba(0,0,0,.1)!important;}' - } - style += '.menu-search-list li:hover,.menu-search-list li.this{background-color:'+ color +'}' - var colorPane = $("#pear-admin-color"); - if(colorPane.length>0){ - colorPane.html(style); - }else{ - $("head").append("") - } + } exports(MOD_NAME, theme); -- Gitee From 5c140c5e26abbfcb2e517f25fa237ffe1e9dfbdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Mon, 26 Jun 2023 08:16:52 +0800 Subject: [PATCH 029/141] update --- component/pear/module/admin.js | 10 +++++----- component/pear/module/theme.js | 6 +----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index e121400..f174461 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -233,7 +233,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't localStorage.setItem("theme-color", currentColor.id); localStorage.setItem("theme-color-color", currentColor.color); localStorage.setItem("theme-color-second", currentColor.second); - theme.changeTheme(window, isAutoHead(config)); + theme.changeTheme(); var menu = localStorage.getItem("theme-menu"); if (menu === null) { @@ -794,7 +794,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't form.on('switch(auto-head)', function (data) { localStorage.setItem("auto-head", this.checked); - theme.changeTheme(window, this.checked); + theme.changeTheme(); }) form.on('switch(banner)', function (data) { @@ -862,10 +862,10 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't localStorage.setItem("theme-header", headerColor); if (theme == "auto-theme") { localStorage.setItem("auto-head", true); - theme.changeTheme(window, true); + theme.changeTheme(); } else { localStorage.setItem("auto-head", false); - theme.changeTheme(window, false); + theme.changeTheme(); } pearAdmin.headerSkin(headerColor); }); @@ -878,7 +878,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't localStorage.setItem("theme-color", currentColor.id); localStorage.setItem("theme-color-color", currentColor.color); localStorage.setItem("theme-color-second", currentColor.second); - theme.changeTheme(window, isAutoHead(config)); + theme.changeTheme(); }); function applyConfig(param) { diff --git a/component/pear/module/theme.js b/component/pear/module/theme.js index 20c8500..76c5a1d 100644 --- a/component/pear/module/theme.js +++ b/component/pear/module/theme.js @@ -3,12 +3,8 @@ layui.define(["jquery","layer"], function (exports) { $ = layui.jquery; var theme = {}; - - theme.autoHead = false; - - theme.changeTheme = function (target, autoHead) { - this.autoHead = autoHead; + theme.changeTheme = function () { var color = localStorage.getItem("theme-color-color"); -- Gitee From 9e31d199dc262318f108d6c4e7f2ebaa0f20d767 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Mon, 26 Jun 2023 08:38:14 +0800 Subject: [PATCH 030/141] update --- admin/css/admin.dark.css | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 1065e2c..da88b06 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -5,12 +5,18 @@ } /** header */ -.pear-admin-dark .layui-header { +.pear-admin-dark .layui-header, +.pear-admin-dark .layui-header .layui-logo { background-color: #141414 !important; - border-color:#414243 !important; + box-shadow: none !important; + border: none !important; +} + +.pear-admin-dark .layui-header { + border: 1px solid rgba(0, 0, 0, .40) !important; } -.pear-admin-dark .layui-header * { +.pear-admin-dark .layui-header .layui-nav * { color: #ffffff !important; } @@ -18,6 +24,10 @@ background-color: #0c0c0c !important; } +.pear-admin-dark .auto-theme .layui-logo .title{ + color: var(--global-primary-color) !important; +} + /** side */ .pear-admin-dark .layui-side { box-shadow: 0 3px 4px rgba(0, 0, 0, .6) !important; -- Gitee From 2d294790004ba8eabee553d17bd581e0297b70e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Mon, 26 Jun 2023 08:48:59 +0800 Subject: [PATCH 031/141] =?UTF-8?q?=E4=BF=AE=E8=AE=A2=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/pear/pear.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component/pear/pear.js b/component/pear/pear.js index 4643b8e..baf2219 100644 --- a/component/pear/pear.js +++ b/component/pear/pear.js @@ -7,7 +7,7 @@ window.rootPath = (function (src) { layui.config({ base: rootPath + "module/", - version: "3.40.0" + version: "4.0.0-alpha.1" }).extend({ admin: "admin", page: "page", -- Gitee From ca236d47797466747b4bb91f2d9694a51a4cc025 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=83=E5=BD=A9=E6=9E=AB=E5=8F=B6?= <424235748@qq.com> Date: Mon, 26 Jun 2023 06:41:36 +0000 Subject: [PATCH 032/141] =?UTF-8?q?=E5=8A=A0=E4=B8=AA=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 七彩枫叶 <424235748@qq.com> --- index.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/index.html b/index.html index 970ad9e..1479f4d 100644 --- a/index.html +++ b/index.html @@ -14,6 +14,9 @@ + -- Gitee From b6c27464c8f530dd6c40daf8fcfc3c8234daf04e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Tue, 27 Jun 2023 13:02:18 +0800 Subject: [PATCH 033/141] update --- .vscode/settings.json | 3 +++ admin/css/admin.dark.css | 5 +++++ admin/css/reset.css | 4 ++++ 3 files changed, 12 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..6f3a291 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5501 +} \ No newline at end of file diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index da88b06..75f48fc 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -4,6 +4,11 @@ background-color: #141414; } +/** layout */ +.pear-admin-dark .layui-layout { + background-color: #141414; +} + /** header */ .pear-admin-dark .layui-header, .pear-admin-dark .layui-header .layui-logo { diff --git a/admin/css/reset.css b/admin/css/reset.css index 3c81731..845e9dd 100644 --- a/admin/css/reset.css +++ b/admin/css/reset.css @@ -6,6 +6,10 @@ border-radius: var(--global-border-radius); } +.layui-form-onswitch { + background-color: var(--global-primary-color) !important; +} + .layui-btn { background-color: var(--global-primary-color); } -- Gitee From 229bd42a7334ead7699ffb6b6330022847e97449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Tue, 27 Jun 2023 13:04:28 +0800 Subject: [PATCH 034/141] update --- component/pear/module/admin.js | 4 +--- index.html | 3 --- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index f174461..dd62f21 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -24,8 +24,6 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't var body = $('body'); - var msgInstance; - var pearAdmin = new function () { this.configuration = {}; @@ -100,7 +98,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't } this.messageRender = function(options) { - msgInstance = messageCenter.render({ + messageCenter.render({ elem: '.message', url: options.header.message, height: '250px' diff --git a/index.html b/index.html index 1479f4d..970ad9e 100644 --- a/index.html +++ b/index.html @@ -14,9 +14,6 @@ - -- Gitee From aaf4a6654cc01a2a826421b0af23a79d1d7875a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Tue, 27 Jun 2023 13:36:04 +0800 Subject: [PATCH 035/141] update --- admin/css/admin.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/admin/css/admin.css b/admin/css/admin.css index 0041cbb..30e1045 100644 --- a/admin/css/admin.css +++ b/admin/css/admin.css @@ -388,8 +388,8 @@ body, } .layer-anim-right { - -webkit-animation: am-horizontal-roll_show .6s ease-out; - animation: am-horizontal-roll_show .6s ease-out; + -webkit-animation: am-horizontal-roll_show .5s ease-out; + animation: am-horizontal-roll_show .5s ease-out; } -- Gitee From 2bc8ac10fc6648516a9d6cde3914fd41cf2bd227 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Tue, 27 Jun 2023 13:38:44 +0800 Subject: [PATCH 036/141] update --- component/pear/module/messageCenter.js | 1 - 1 file changed, 1 deletion(-) diff --git a/component/pear/module/messageCenter.js b/component/pear/module/messageCenter.js index 9ac7118..c7535cb 100644 --- a/component/pear/module/messageCenter.js +++ b/component/pear/module/messageCenter.js @@ -3,7 +3,6 @@ layui.define(['table', 'jquery', 'element', 'dropdown'], function (exports) { var MOD_NAME = 'messageCenter', $ = layui.jquery, - element = layui.element, dropdown = layui.dropdown; var message = function (opt) { -- Gitee From 01ac2abde94653775372e955f91e442708a4d88d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Wed, 28 Jun 2023 09:36:52 +0800 Subject: [PATCH 037/141] =?UTF-8?q?=E9=9B=86=E6=88=90=20toast=20=E7=BB=84?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/css/admin.dark.css | 5 + admin/css/reset.css | 15 +- admin/data/menu.json | 18 +- admin/data/table.json | 0 component/pear/css/module/toast.css | 1929 ++++++++++++++++++++++++ component/pear/css/pear.css | 3 +- component/pear/module/extends/toast.js | 1225 +++++++++++++++ component/pear/pear.js | 11 +- view/component/table.html | 375 +++++ view/component/toast.html | 61 + 10 files changed, 3633 insertions(+), 9 deletions(-) create mode 100644 admin/data/table.json create mode 100644 component/pear/css/module/toast.css create mode 100644 component/pear/module/extends/toast.js create mode 100644 view/component/table.html create mode 100644 view/component/toast.html diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 75f48fc..10be7ef 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -183,6 +183,11 @@ background-color: #1d1e1f !important; } +/** toast */ +.pear-admin-dark .iziToast { + background-color: #1f1f1f !important; +} + /** success failure */ .pear-admin-dark .pear-result .content { background-color: rgba(153, 153, 153, 0.12); diff --git a/admin/css/reset.css b/admin/css/reset.css index 845e9dd..7878212 100644 --- a/admin/css/reset.css +++ b/admin/css/reset.css @@ -14,8 +14,21 @@ background-color: var(--global-primary-color); } +.layui-btn.layui-btn-normal { + background-color: #1e9fff !important; +} + +.layui-btn.layui-btn-danger { + background-color: #ff5722 !important; +} + +.layui-btn.layui-btn-warm { + background-color: #ffb800 !important; +} + .layui-btn.layui-btn-primary { - background-color: transparent; + background-color: transparent !important; + color: #5f5f5f !important; } .layui-card { diff --git a/admin/data/menu.json b/admin/data/menu.json index d2d2785..9847c35 100644 --- a/admin/data/menu.json +++ b/admin/data/menu.json @@ -24,13 +24,29 @@ "title": "扩展组件", "icon": "layui-icon layui-icon-auz", "type": 0, - "children": [{ + "children": [ + { + "id": 22, + "title": "数据表格", + "icon": "layui-icon layui-icon-face-smile", + "type": 1, + "openType": "_component", + "href": "view/component/table.html" + },{ "id": 21, "title": "24 栅格", "icon": "layui-icon layui-icon-face-smile", "type": 1, "openType": "_component", "href": "view/component/grid.html" + }, + { + "id": 23, + "title": "消息提示", + "icon": "layui-icon layui-icon-face-smile", + "type": 1, + "openType": "_component", + "href": "view/component/toast.html" } ] }, diff --git a/admin/data/table.json b/admin/data/table.json new file mode 100644 index 0000000..e69de29 diff --git a/component/pear/css/module/toast.css b/component/pear/css/module/toast.css new file mode 100644 index 0000000..5472da5 --- /dev/null +++ b/component/pear/css/module/toast.css @@ -0,0 +1,1929 @@ +.iziToast-capsule { + font-size: 0; + height: 0; + width: 100%; + transform: translateZ(0); + backface-visibility: hidden; + transition: transform 0.5s cubic-bezier(0.25, 0.8, 0.25, 1), height 0.5s cubic-bezier(0.25, 0.8, 0.25, 1); +} + +.iziToast-capsule, .iziToast-capsule * { + box-sizing: border-box; +} + +.iziToast-overlay { + display: block; + position: fixed; + top: -100px; + left: 0; + right: 0; + bottom: -100px; + z-index: 19891100; +} + +.iziToast { + display: inline-block; + clear: both; + position: relative; + font-family: 'Lato', Tahoma, Arial; + font-size: 14px; + padding: 8px 45px 9px 0; + background: #fff; + border-color: #fff; + width: 100%; + pointer-events: all; + cursor: default; + transform: translateX(0); + -webkit-touch-callout: none /* iOS Safari */; + -webkit-user-select: none /* Chrome/Safari/Opera */; + -khtml-user-select: none /* Konqueror */; + -moz-user-select: none /* Firefox */; + -ms-user-select: none /* Internet Explorer/Edge */; + user-select: none; + min-height: 45px; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + max-width: 90%; + margin: 5px 0; + border-radius: 4px; +} + +.iziToast > .iziToast-progressbar { + position: absolute; + left: 0; + bottom: 0; + width: 100%; + z-index: 1; + background: rgba(255, 255, 255, 0.5); +} + +.iziToast > .iziToast-progressbar > div { + height: 2px; + width: 100%; + background: #dddddd; + border-radius: 0 0 3px 3px; +} + +.iziToast.iziToast-theme-dark > .iziToast-progressbar > div { + background: #fff; +} + +.iziToast.iziToast-balloon:before { + content: ''; + position: absolute; + right: 8px; + left: auto; + width: 0px; + height: 0px; + top: 100%; + border-right: 0px solid transparent; + border-left: 15px solid transparent; + border-top: 10px solid #000; + border-top-color: inherit; + border-radius: 0; +} + +.iziToast.iziToast-balloon .iziToast-progressbar { + top: 0; + bottom: auto; +} + +.iziToast.iziToast-balloon > div { + border-radius: 0 0 0 3px; +} + +.iziToast > .iziToast-cover { + position: absolute; + left: 0; + top: 0; + bottom: 0; + height: 100%; + margin: 0; + background-size: 100%; + background-position: 50% 50%; + background-repeat: no-repeat; +} + +.iziToast > .iziToast-close { + position: absolute; + right: 0; + top: 0; + border: 0; + padding: 0; + opacity: 0.6; + width: 42px; + height: 100%; + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAJPAAACTwBcGfW0QAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAD3SURBVFiF1ZdtDoMgDEBfdi4PwAX8vLFn0qT7wxantojKupmQmCi8R4tSACpgjC2ICCUbEBa8ingjsU1AXRBeR8aLN64FiknswN8CYefBBDQ3whuFESy7WyQMeC0ipEI0A+0FeBvHUFN8xPaUhAH/iKoWsnXHGegy4J0yxialOfaHJAz4bhRzQzgDvdGnz4GbAonZbCQMuBm1K/kcFu8Mp1N2cFFpsxsMuJqqbIGExGl4loARajU1twskJLLhIsID7+tvUoDnIjTg5T9DPH9EBrz8rxjPzciAl9+O8SxI8CzJ8CxKFfh3ynK8Dyb8wNHM/XDqejx/AtNyPO87tNybAAAAAElFTkSuQmCC") no-repeat 50% 50%; + background-size: 8px; + cursor: pointer; + outline: none; +} + +.iziToast > .iziToast-close:hover { + opacity: 1; +} + +.iziToast > .iziToast-body { + position: relative; + padding: 0 0 0 10px; + height: auto; + min-height: 28px; + margin: 0 0 0 15px; + text-align: left; +} + +.iziToast > .iziToast-body:after { + content: ""; + display: table; + clear: both; +} + +.iziToast > .iziToast-body .iziToast-texts { + margin: 6px 0; + padding-right: 2px; + display: inline-block; + float: left; +} + +.iziToast > .iziToast-body .iziToast-inputs { + min-height: 19px; + float: left; + margin: 3px -2px; +} + +.iziToast > .iziToast-body .iziToast-inputs > input:not([type=checkbox]):not([type=radio]), +.iziToast > .iziToast-body .iziToast-inputs > select { + position: relative; + display: inline-block; + margin: 2px; + border-radius: 2px; + border: 0; + padding: 4px 7px; + font-size: 13px; + letter-spacing: 0.02em; + background: rgba(0, 0, 0, 0.1); + color: #000; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); + min-height: 26px; +} + +.iziToast > .iziToast-body .iziToast-inputs > input:not([type=checkbox]):not([type=radio]):focus, +.iziToast > .iziToast-body .iziToast-inputs > select:focus { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.6); +} + +.iziToast > .iziToast-body .iziToast-buttons { + min-height: 17px; + float: left; + margin: 4px 0 0 0; +} + +.iziToast > .iziToast-body .iziToast-buttons > a, +.iziToast > .iziToast-body .iziToast-buttons > button, +.iziToast > .iziToast-body .iziToast-buttons > input:not([type=checkbox]):not([type=radio]) { + position: relative; + display: inline-block; + margin: 2px; + border-radius: 2px; + border: 0; + padding: 5px 10px; + font-size: 12px; + letter-spacing: 0.02em; + cursor: pointer; + background: rgba(0, 0, 0, 0.1); + color: #555; +} + +.iziToast > .iziToast-body .iziToast-buttons > a:hover, +.iziToast > .iziToast-body .iziToast-buttons > button:hover, +.iziToast > .iziToast-body .iziToast-buttons > input:not([type=checkbox]):not([type=radio]):hover { + background: rgba(0, 0, 0, 0.15); +} + +.iziToast > .iziToast-body .iziToast-buttons > a:focus, +.iziToast > .iziToast-body .iziToast-buttons > button:focus, +.iziToast > .iziToast-body .iziToast-buttons > input:not([type=checkbox]):not([type=radio]):focus { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.6); +} + +.iziToast > .iziToast-body .iziToast-buttons > a:active, +.iziToast > .iziToast-body .iziToast-buttons > button:active, +.iziToast > .iziToast-body .iziToast-buttons > input:not([type=checkbox]):not([type=radio]):active { + top: 1px; +} + +.iziToast > .iziToast-body .iziToast-icon { + height: 100%; + position: absolute; + left: 0; + top: 50%; + display: table; + font-size: 23px; + line-height: 24px; + margin-top: -11px; + color: #000; + width: 24px; + height: 24px; +} + +.iziToast > .iziToast-body .iziToast-icon.ico-info { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTU1NzcxMTk5MzYwIiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEwODAzIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTUxMiAyOC40MTZjLTI2Ny40Njg4IDAtNDg0LjI0OTYgMjE2LjgzMi00ODQuMjQ5NiA0ODQuMjQ5NiAwIDI2Ny40MTc2IDIxNi44MzIgNDg0LjI0OTYgNDg0LjI0OTYgNDg0LjI0OTYgMjY3LjQxNzYgMCA0ODQuMzAwOC0yMTYuODMyIDQ4NC4zMDA4LTQ4NC4yNDk2Qzk5Ni4zMDA4IDI0NS4yNDggNzc5LjQxNzYgMjguNDE2IDUxMiAyOC40MTZ6TTQ1NS41MjY0IDI0NS4wOTQ0QzQ3MC4zMjMyIDIyOS44ODggNDkwLjcwMDggMjIxLjMzNzYgNTExLjc5NTIgMjIxLjY0NDhjMjEuMTk2OC0wLjIwNDggNDEuNzc5MiA4LjI0MzIgNTYuNTI0OCAyMy40NDk2IDE1LjAwMTYgMTQuNzk2OCAyMy4yOTYgMzUuMTIzMiAyMy4wOTEyIDU2LjExNTIgMC4yMDQ4IDIxLjE5NjgtOC4yOTQ0IDQxLjU3NDQtMjMuMzk4NCA1Ni4yMTc2LTE0LjY5NDQgMTQuNjk0NC0zNC43MTM2IDIzLjA0LTU1LjM5ODQgMjMuMDRMNTExLjc5NTIgMzgwLjQ2NzJjLTIwLjk5MiAwLjIwNDgtNDEuMzY5Ni04LjE0MDgtNTYuMDY0LTIzLjE0MjRDNDQwLjY3ODQgMzQyLjY4MTYgNDMyLjMzMjggMzIyLjMwNCA0MzIuNTM3NiAzMDEuMjA5NiA0MzIuMzMyOCAyODAuMjE3NiA0NDAuNjc4NCAyNTkuODkxMiA0NTUuNTI2NCAyNDUuMDk0NHpNNjI3LjYwOTYgNzY4LjE1MzZsMCAxMy40MTQ0IDAgMjIuMjIwOEwzOTYuMjg4IDgwMy43ODg4bDAtNTcuMTM5MiAyMS42MDY0LTAuNzY4YzEwLjI0LTAuNDYwOCAxNC41OTItMi43MTM2IDE2Ljk5ODQtNC43NjE2bDEuMjI4OC01LjQyNzJjMC45NzI4LTUuNTgwOCAxLjYzODQtMTQuNDM4NCAxLjU4NzItMjUuOTA3Mkw0MzcuNzA4OCA1MDcuOTA0YzAuMjU2LTE3Ljc2NjQtMi4zNTUyLTI5LjkwMDgtMy40ODE2LTMyLjU2MzJsMCAwTDQzMS42MTYgNDc0LjA2MDhDNDI4Ljg1MTIgNDczLjA4OCA0MjMuOTM2IDQ3Mi4wNjQgNDE3LjE3NzYgNDcxLjY1NDRMMzk2LjI4OCA0NzAuMzc0NCAzOTYuMjg4IDQxMy40OTEybDE4OS40OTEyIDAgMCAyOTYuMjk0NGMtMC4zMDcyIDE3LjcxNTIgMi40MDY0IDI5Ljc5ODQgMy40MzA0IDMyLjU2MzJsMC4wNTEyIDAgMi43MTM2IDEuMTc3NmMyLjgxNiAwLjk3MjggNy43ODI0IDEuOTk2OCAxNC42OTQ0IDIuMzU1MmwyMC44ODk2IDEuMjhMNjI3LjU1ODQgNzY4LjE1MzZ6IiBwLWlkPSIxMDgwNCIgZmlsbD0iIzQwOUVGRiI+PC9wYXRoPjwvc3ZnPg==") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast > .iziToast-body .iziToast-icon.ico-warning { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTU1NzcwODczNzUzIiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjUxMTgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNTEyLjAyMzI3MyAxMDI0Qzc5NC43NjM2MzYgMTAyNCAxMDI0IDc5NC43ODY5MDkgMTAyNCA1MTEuOTc2NzI3IDEwMjQgMjI5LjIzNjM2NCA3OTQuNzg2OTA5LTAuMDIzMjczIDUxMi4wMjMyNzMtMC4wMjMyNzNTMCAyMjkuMjEzMDkxIDAgNTExLjk3NjcyN0MwIDc5NC43ODY5MDkgMjI5LjIzNjM2NCAxMDI0IDUxMi4wMjMyNzMgMTAyNE00NjkuMzQxMDkxIDc2OGMwLTIzLjU1MiAxOC45MjA3MjctNDIuNjU4OTA5IDQyLjcwNTQ1NS00Mi42NTg5MDkgMjMuNTUyIDAgNDIuNjU4OTA5IDE4LjkyMDcyNyA0Mi42NTg5MDkgNDIuNjU4OTA5IDAgMjMuNTc1MjczLTE4LjkyMDcyNyA0Mi43MDU0NTUtNDIuNjU4OTA5IDQyLjcwNTQ1NUM0ODguNDcxMjczIDgxMC43MDU0NTUgNDY5LjM0MTA5MSA3OTEuNzM4MTgyIDQ2OS4zNDEwOTEgNzY4TTQ2OS4zNDEwOTEgMjU1LjgxMzgxOGMwLTIzLjQ1ODkwOSAxOC45MjA3MjctNDIuNDcyNzI3IDQyLjcwNTQ1NS00Mi40NzI3MjcgMjMuNTUyIDAgNDIuNjU4OTA5IDE5LjQzMjcyNyA0Mi42NTg5MDkgNDIuNDcyNzI3bDAgMzQxLjczNjcyN2MwIDIzLjQ1ODkwOS0xOC45MjA3MjcgNDIuNDcyNzI3LTQyLjY1ODkwOSA0Mi40NzI3MjctMjMuNTc1MjczIDAtNDIuNzA1NDU1LTE5LjQzMjcyNy00Mi43MDU0NTUtNDIuNDcyNzI3TDQ2OS4zNDEwOTEgMjU1LjgxMzgxOHoiIHAtaWQ9IjUxMTkiIGZpbGw9IiNmZjk5MDAiPjwvcGF0aD48L3N2Zz4=") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast > .iziToast-body .iziToast-icon.ico-error { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTU1NzcwNDI1NDkwIiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEyNjUiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNTExLjk5NjQxOCAyMy41MjA2OTNjLTI2OS43NjcwNSAwLTQ4OC40NTQ3NDggMjE4LjY4ODcyMS00ODguNDU0NzQ4IDQ4OC40NTQ3NDggMCAyNjkuNzY4MDczIDIxOC42ODg3MjEgNDg4LjQ1MzcyNCA0ODguNDU0NzQ4IDQ4OC40NTM3MjQgMjY5Ljc2NjAyNyAwIDQ4OC40NTQ3NDgtMjE4LjY4NTY1MSA0ODguNDU0NzQ4LTQ4OC40NTM3MjRDMTAwMC40NTExNjYgMjQyLjIwOTQxNCA3ODEuNzYyNDQ1IDIzLjUyMDY5MyA1MTEuOTk2NDE4IDIzLjUyMDY5M3pNNzY5LjMzNDM5MSA3MTUuMTU1OTU2bC01NC4xNTY0MzQgNTQuMTU2NDM0TDUxMS45OTY0MTggNTY2LjEyOTgyOCAzMDguODEzODU2IDc2OS4zMTIzOWwtNTQuMTU1NDExLTU0LjE1NjQzNEw0NTcuODQxMDA4IDUxMS45NzU0NDEgMjU0LjY1ODQ0NiAzMDguNzkyODc4bDU0LjE1NTQxMS01NC4xNTU0MTFMNTExLjk5NjQxOCA0NTcuODIwMDNsMjAzLjE4MjU2Mi0yMDMuMTgyNTYyIDU0LjE1NjQzNCA1NC4xNTU0MTFMNTY2LjE1MTgyOSA1MTEuOTc1NDQxIDc2OS4zMzQzOTEgNzE1LjE1NTk1NnoiIHAtaWQ9IjEyNjYiIGZpbGw9IiNGNTZDNkMiPjwvcGF0aD48L3N2Zz4=") no-repeat 50% 50%; + background-size: 80%; +} + +.iziToast > .iziToast-body .iziToast-icon.ico-success { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTU1NzcwNTI2MjA3IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjQ5NjUiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMTAyNCA1MTEuOTk5NTAyYzAgMjgyLjc3MDU1Ny0yMjkuMjI5OTQxIDUxMi4wMDA0OTgtNTExLjk5OTUwMiA1MTIuMDAwNDk4LTI4Mi43Njk1NjEgMC01MTIuMDAwNDk4LTIyOS4yMjk5NDEtNTEyLjAwMDQ5OC01MTIuMDAwNDk4IDAtMjgyLjc2ODU2NiAyMjkuMjMwOTM2LTUxMS45OTk1MDIgNTEyLjAwMDQ5OC01MTEuOTk5NTAyQzc5NC43NjkwNjQgMCAxMDI0IDIyOS4yMzA5MzYgMTAyNCA1MTEuOTk5NTAyek03OTYuNTc3MDgxIDM3OC4zMTc3MTNsLTQ4LjQ1OTA1MS00OC40NTkwNTEtMjk3LjA3ODM4NyAyOTcuMDc3MzkyTDI3Ny4yNjc4NTIgNDUzLjE2NTI1OGwtNDguNDU4MDU2IDQ4LjQ1ODA1NiAyMjIuMjI4ODUxIDIyMi4yMzA4NDJMNzk2LjU3NzA4MSAzNzguMzE3NzEzeiIgcC1pZD0iNDk2NiIgZmlsbD0iIzY3YzIzYSI+PC9wYXRoPjwvc3ZnPg==") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast > .iziToast-body .iziToast-icon.ico-question { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfhCQkUEhFovxTxAAAEDklEQVRo3s2ZTWgTQRTHf03ipTRUqghNSgsRjHgQrFUQC6JgD1Kak3gQUUoPqRdBglf1oBehBws9Cn4cGk+1SOmh2upBxAYVoeJHrR9tgq0i1Cq0lqYeks7MbpPdmU00/c8hm9n33v/t7Nt5M2+qMEWQI0QIibZKRrQpHvLL2KI2wnQzzBKrDm2RIeKEy01dTYKUI7G1ZRknQXV5yP10kTYgly1NF/5S6duZ8ES+1iZodyaocrjXxE0OFeifYYgp0mRIkwFChAkRJsIxGgrIP+I0n82fvZW5dc/zkss0O2o1c5mX6/TmaDWl77RFe5YkUW3tKEmyFv0lOvXJ/fTYnmCEFuMRbGHEZqVHLyT9DFjUJmkzJl9DG5MWWwM6Llif/gF1nukB6nhgGwUXdFrE+wiURA8QoM9i0zEWWpXQW+ZsyeRrOMuyEo5Fv4gmy4dXPvqcC+pH2VRYaMwy+OWG+iLGCgm0W0Kv9HdvR8ASjmKCXpuK/bxiV/76A/v5UdDIZuKcJGjrnec5KZ7wwsWFOp6xPX/9mt2sqDe7FO+Kf/fXHBPPDWpdXGhTpLvUG9VKwh1xMDDjkvu+cNDFBTk7ptX1QkKZ850m3duu6fcrWxwdaFFyREJ2j4vOpKP6Du6z4uJCv8sYJIVkCnJBGGZaBONO3roY2EqNrSfIPi7SKP4fdXyNUd6I6wbSAHEl33tFLe+FlSsusnK90A0+oEPcuufZgXnOi+u9LrKSJQZQw6LwqBnv2CKsfHORbFbyQhA6xN/pEuihSdj56Co7LWRjPiKie6gkB2LiKuUqK5kiPkLiz1QJ9K1cNXBAMoUCigNpQ9IqDtMI1HKA4/jyvUsaoSyZLA5kjOjDPFZen8Ql5TsvBskUgjciIPSX3QAXC86DT7VWvlEh/xZ+ij9BDVWJ0QL0SbZq6QaFxoLPcXPmBLveLCc4wXdDK6s+6/vwhCSniFLPXW0NJe5UB8zKCsviqpc7vGPVQFcyZbyPwGD+d5ZnxmNWlhG4xSBZZjivjIWHEQgoDkSMjMwTo54569JSE5IpA7EyJSMTyGTUAUFlO1ZKOtaHTMeL1PhYYFTcihmY2cQ5+ullj7EDkiVfVez2sCTz8yiv84djhg7IJVk81xFWJlPdfHBG0flkRC/zQFZ+DSllNtfDdUsOMCliyGX5uOzU3ZhIXFDof4m1gDuKbEx0t2YS25gVGpcMnr/I1kx3c6piB8P8ZoqEwfMX3ZyCXynJTmq/U7NUXqfUzCbWL1wqVKBQUeESzQYoUlW8TAcVL1RCxUu1G6BYXfFyfQ4VPbDI4T8d2WzgQ6sc/vmxnTsqfHCZQzUJxm1h5dxS5Tu6lQgTZ0ipqRVqSwzTbbLHMt+c19iO76tsx/cLZub+Ali+tYC93olEAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTA5LTA5VDIwOjE4OjE3KzAyOjAwjKtfjgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0wOS0wOVQyMDoxODoxNyswMjowMP325zIAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast > .iziToast-body .iziToast-icon.ico-load { + background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTQ1NTUyMzAyOTE3IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjQyNDAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNTEyIDY0YzI0Ny4yIDAgNDQ4IDIwMC44IDQ0OCA0NDhoLTY0YzAtMjEyLTE3Mi0zODQtMzg0LTM4NFY2NHogbTAgODMyYy0yMTIgMC0zODQtMTcyLTM4NC0zODRINjRjMCAyNDcuMiAyMDAuOCA0NDggNDQ4IDQ0OHYtNjR6IiBwLWlkPSI0MjQxIiBmaWxsPSIjMUU5RkZGIj48L3BhdGg+PC9zdmc+') no-repeat 50% 50%; + background-size: 85%; + animation: rotating 1.2s linear infinite +} + +@keyframes rotating { + from { + transform: rotate(0) + } + to { + transform: rotate(360deg) + } +} + +.iziToast > .iziToast-body .iziToast-title { + padding: 0; + margin: 0 0 10px 0; + line-height: 16px; + font-size: 14px; + text-align: left; + float: left; + color: #303133; + white-space: normal; +} + +.iziToast > .iziToast-body .iziToast-message { + padding: 0; + margin: 0; + font-size: 14px; + line-height: 16px; + text-align: left; + float: left; + color: #606266; + white-space: normal; +} + +.iziToast.iziToast-animateInside .iziToast-title, +.iziToast.iziToast-animateInside .iziToast-message, +.iziToast.iziToast-animateInside .iziToast-icon, +.iziToast.iziToast-animateInside .iziToast-buttons-child, +.iziToast.iziToast-animateInside .iziToast-inputs-child { + opacity: 0; +} + +.iziToast-target { + position: relative; + width: 100%; + margin: 0 auto; +} + +.iziToast-target .iziToast-capsule { + overflow: hidden; +} + +.iziToast-target .iziToast-capsule:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0; +} + +.iziToast-target .iziToast-capsule .iziToast { + width: 100%; + float: left; +} + +.iziToast-wrapper { + z-index: 19891101; + position: fixed; + width: 100%; + pointer-events: none; + display: flex; + flex-direction: column; +} + +.iziToast-wrapper .iziToast.iziToast-balloon:before { + border-right: 0 solid transparent; + border-left: 15px solid transparent; + border-top: 10px solid #000; + border-top-color: inherit; + right: 8px; + left: auto; +} + +.iziToast-wrapper-bottomLeft { + left: 0; + bottom: 0; + text-align: left; +} + +.iziToast-wrapper-bottomLeft .iziToast.iziToast-balloon:before { + border-right: 15px solid transparent; + border-left: 0 solid transparent; + right: auto; + left: 8px; +} + +.iziToast-wrapper-bottomRight { + right: 0; + bottom: 0; + text-align: right; +} + +.iziToast-wrapper-topLeft { + left: 0; + top: 0; + text-align: left; +} + +.iziToast-wrapper-topLeft .iziToast.iziToast-balloon:before { + border-right: 15px solid transparent; + border-left: 0 solid transparent; + right: auto; + left: 8px; +} + +.iziToast-wrapper-topRight { + top: 0; + right: 0; + text-align: right; +} + +.iziToast-wrapper-topCenter { + top: 0; + left: 0; + right: 0; + text-align: center; +} + +.iziToast-wrapper-bottomCenter { + bottom: 0; + left: 0; + right: 0; + text-align: center; +} + +.iziToast-wrapper-center { + top: 0; + bottom: 0; + left: 0; + right: 0; + text-align: center; + justify-content: center; + flex-flow: column; + align-items: center; +} + +.iziToast-rtl { + direction: rtl; + padding: 8px 0 9px 45px; + font-family: Tahoma, 'Lato', Arial; +} + +.iziToast-rtl .iziToast-cover { + left: auto; + right: 0; +} + +.iziToast-rtl .iziToast-close { + right: auto; + left: 0; +} + +.iziToast-rtl .iziToast-body { + padding: 0 10px 0 0; + margin: 0 16px 0 0; + text-align: right; +} + +.iziToast-rtl .iziToast-body .iziToast-buttons, +.iziToast-rtl .iziToast-body .iziToast-inputs, +.iziToast-rtl .iziToast-body .iziToast-texts, +.iziToast-rtl .iziToast-body .iziToast-title, +.iziToast-rtl .iziToast-body .iziToast-message { + float: right; + text-align: right; +} + +.iziToast-rtl .iziToast-body .iziToast-icon { + left: auto; + right: 0; +} + +@media only screen and (min-width: 568px) { + .iziToast-wrapper { + padding: 10px 15px; + } + + .iziToast { + width: auto; + } + + .iziToast:not(.iziToast-rtl) .iziToast-cover { + border-radius: 3px 0 0 3px; + } + + .iziToast.iziToast-rtl .iziToast-cover { + border-radius: 0 3px 3px 0; + } + + .iziToast.iziToast-color-dark:after { + box-shadow: inset 0 -10px 20px -10px rgba(255, 255, 255, 0.3), 0 10px 10px -5px rgba(0, 0, 0, 0.25); + } + + .iziToast.iziToast-balloon .iziToast-progressbar { + background: transparent; + } + + .iziToast.iziToast-balloon:after { + box-shadow: 0 10px 10px -5px rgba(0, 0, 0, 0.25), inset 0 10px 20px -5px rgba(0, 0, 0, 0.25); + } + + .iziToast-target .iziToast:after { + box-shadow: inset 0 -10px 20px -10px rgba(0, 0, 0, 0.2), inset 0 0 5px rgba(0, 0, 0, 0.1); + } +} + +.iziToast.iziToast-theme-dark { + background: #565c70; + border-color: #565c70; +} + +.iziToast.iziToast-theme-dark .iziToast-title { + color: #fff; +} + +.iziToast.iziToast-theme-dark .iziToast-message { + color: rgba(255, 255, 255, 0.9); + font-weight: 300; +} + +.iziToast.iziToast-theme-dark .iziToast-close { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfgCR4OIQIPSao6AAAAwElEQVRIx72VUQ6EIAwFmz2XB+AConhjzqTJ7JeGKhLYlyx/BGdoBVpjIpMJNjgIZDKTkQHYmYfwmR2AfAqGFBcO2QjXZCd24bEggvd1KBx+xlwoDpYmvnBUUy68DYXD77ESr8WDtYqvxRex7a8oHP4Wo1Mkt5I68Mc+qYqv1h5OsZmZsQ3gj/02h6cO/KEYx29hu3R+VTTwz6D3TymIP1E8RvEiiVdZfEzicxYLiljSxKIqlnW5seitTW6uYnv/Aqh4whX3mEUrAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA5LTMwVDE0OjMzOjAyKzAyOjAwl6RMVgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wOS0zMFQxNDozMzowMiswMjowMOb59OoAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC") no-repeat 50% 50%; + background-size: 8px; +} + +.iziToast.iziToast-theme-dark .iziToast-icon { + color: #fff; +} + +.iziToast.iziToast-theme-dark .iziToast-icon.ico-info { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTQxNjQ5NjA1MTc2IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjM1MzIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNODUxLjE3MTU1NiA3MTcuOTM3Nzc4YzMuMjQyNjY3IDExLjk0NjY2NyAyLjg0NDQ0NCAyNC40NjIyMjItMS40MjIyMjMgMzYuNDA4ODg5YTYyLjkxOTExMSA2Mi45MTkxMTEgMCAwIDEtMjEuOTU5MTExIDI5LjUyNTMzMyA2NS4yNTE1NTYgNjUuMjUxNTU2IDAgMCAxLTM4LjkxMiAxMi41MTU1NTZIMTc4LjExOTExMWE2NC44NTMzMzMgNjQuODUzMzMzIDAgMCAxLTM4Ljc5ODIyMi0xMi41NzI0NDUgNjIuMjM2NDQ0IDYyLjIzNjQ0NCAwIDAgMS0yMi4wMTYtMjkuNTI1MzMzIDYwLjY0MzU1NiA2MC42NDM1NTYgMCAwIDEtMS4zNjUzMzMtMzYuNDA4ODg5YzMuNTg0LTEzLjE0MTMzMyAxMS40MzQ2NjctMjQuNTc2IDIyLjY5ODY2Ni0zMy4xMDkzMzNsNTguNDgxNzc4LTQ0LjAzMmE0MC43MzI0NDQgNDAuNzMyNDQ0IDAgMCAwIDE2LjQ5Nzc3OC0zMi43MTExMTJ2LTIwMy4wOTMzMzNjMC0zNS4yMTQyMjIgNy4xNjgtNjkuNTE4MjIyIDIxLjIxOTU1NS0xMDEuNzE3MzMzIDEzLjY1MzMzMy0zMS4xNzUxMTEgMzMuMTA5MzMzLTU5LjE2NDQ0NCA1Ny44NTYtODMuMTE0NjY3QTI2OC44NTY4ODkgMjY4Ljg1Njg4OSAwIDAgMSA0MTQuNzIgMTUyLjA2NHYtMjguNTAxMzMzQzQxNC43MiA4Ni44MTI0NDQgNDQ1LjYxMDY2NyA1Ni44ODg4ODkgNDgzLjU1NTU1NiA1Ni44ODg4ODljMzcuOTQ0ODg5IDAgNjguODM1NTU2IDI5LjkyMzU1NiA2OC44MzU1NTUgNjYuNjczNzc4djI4LjUwMTMzM2MxMi4zNDQ4ODkgMy4xODU3NzggMjQuNDYyMjIyIDcuMTY4IDM2LjIzODIyMiAxMi4wMDM1NTZhMjY4LjY4NjIyMiAyNjguNjg2MjIyIDAgMCAxIDg1Ljc4ODQ0NSA1Ni4wMzU1NTVjMjQuNzQ2NjY3IDI0LjAwNzExMSA0NC4yMDI2NjcgNTEuOTM5NTU2IDU3Ljc5OTExMSA4My4wNTc3NzggMTQuMTA4NDQ0IDMyLjMxMjg4OSAyMS4yMTk1NTYgNjYuNTYgMjEuMjE5NTU1IDEwMS44MzExMTF2MjAzLjA5MzMzM2MwIDEyLjg1Njg4OSA2LjAzMDIyMiAyNC44NjA0NDQgMTYuNTU0NjY3IDMyLjcxMTExMWw1OC40ODE3NzggNDQuMDMyYzExLjIwNzExMSA4LjUzMzMzMyAxOS4wNTc3NzggMTkuOTExMTExIDIyLjc1NTU1NSAzMy4wNTI0NDV6TTM5OC4yMjIyMjIgODU2LjE3Nzc3OFY4NTMuMzMzMzMzaDE3MC42NjY2Njd2Mi44NDQ0NDVDNTY4Ljg4ODg4OSA5MzUuOTM2IDUzMC42MDI2NjcgOTY3LjExMTExMSA0ODMuNTU1NTU2IDk2Ny4xMTExMTFTMzk4LjIyMjIyMiA5MzUuOTM2IDM5OC4yMjIyMjIgODU2LjE3Nzc3OHoiIHAtaWQ9IjM1MzMiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48L3N2Zz4=") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast.iziToast-theme-dark .iziToast-icon.ico-warning { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTQxNjUxMTE1OTQ4IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjUgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjUwOTYiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTI4LjEyNSIgaGVpZ2h0PSIxMjgiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTk4NC4wMjI5NTAwMiA3NDYuODc1NDk3NUw2NDEuOTY0NjA3NTIgMTMwLjM4MDY1Yy0zMC40OTE4NDI1LTU0Ljg2MTUwMjUtNzcuOTMxMzE1LTg2LjMzNTY3MjUtMTMwLjE0MzUxLTg2LjMzNTY3MjUtNTIuMjkxNTc1IDAtOTkuNzQwOTcgMzEuNTEzODYtMTMwLjE0MzUxIDg2LjQzNDg5NzVMMzkuOTc2NDU1MDIgNzQ2LjgyNTg4NUM5Ljk2MDg5MjUyIDgwMC45NjMwNDUgNy45MTY4NTc1MiA4NTguMDE3NDIgMzQuMzUwMzk3NTIgOTAzLjM1MzMyMjVjMjYuNTEyOTIgNDUuNDc0ODE3NSA3Ny4xOTcwNSA3MS41NjEwNyAxMzkuMDczNzYgNzEuNTYxMDdoNjc3LjIyMDU0NzVjNjEuOTA2NDc3NSAwIDExMi41OTA2MDc1LTI2LjA4NjI1MjUgMTM5LjAxNDIyNS03MS40OTE2MTI1IDI2LjQ4MzE1MjUtNDUuMjc2MzY3NSAyNC40MjkxOTUtMTAyLjM0MDY2NS01LjYzNTk4LTE1Ni41NDcyODI1ek05MTEuNzU3MzgyNTIgODU3Ljk5NzU3NWMtOS44OTI3MzI1IDE2Ljk4NzMyLTMyLjE1ODgyMjUgMjYuNzMxMjE1LTYxLjExMjY3NzUgMjYuNzMxMjE1SDE3My40MjQxNTc1MmMtMjguOTQzOTMyNSAwLTUxLjIyOTg2NzUtOS43NjM3NC02MS4xNjIyOS0yNi43OTA3NS0xMC4wMjE3MjUtMTcuMTg1NzctNy42MTA1NTc1LTQxLjc0Mzk1NzUgNi41ODg1NC02Ny4zNzM3NzVsMzQxLjcxMTA1NS02MTYuMzY1ODU1YzE0LjA2MDE4MjUtMjUuMzkxNjc3NSAzMi43NTQxNzI1LTM5Ljk1NzkwNzUgNTEuMjU5NjM1LTM5Ljk1NzkwNzUgMTguNDk1NTQgMCAzNy4xOTk0NTI1IDE0LjU2NjIzIDUxLjMwOTI0NzUgMzkuOTM4MDYyNWwzNDIuMDI4NTc1IDYxNi40NDUyMzVjMTQuMjI4ODY1IDI1LjY0OTY2MjUgMTYuNjQwMDMyNSA1MC4xODgwMDUgNi41OTg0NjI1IDY3LjM3Mzc3NXoiIGZpbGw9IiNmZmZmZmYiIHAtaWQ9IjUwOTciPjwvcGF0aD48cGF0aCBkPSJNNTEyLjAxOTU0NzUyIDYzMC4yODYxMjI1YTQ1LjA4Nzg0IDQ1LjA4Nzg0IDAgMCAwIDQ1LjA5Nzc2MjUtNDUuMDA4NDZWMzc0LjY1Mjc1NWE0NS4wNzc5MTc1IDQ1LjA3NzkxNzUgMCAwIDAtNDUuMDk3NzYyNS00NS4wMDg0NiA0NS4wODc4NCA0NS4wODc4NCAwIDAgMC00NS4wOTc3NjI1IDQ1LjAwODQ2djIxMC42MTQ5ODVhNDUuMDg3ODQgNDUuMDg3ODQgMCAwIDAgNDUuMDk3NzYyNSA0NS4wMTgzODI1ek01MTIuMDE5NTQ3NTIgNjc1LjM3Mzk2MjVhNjAuMTcwMDQgNjAuMTcwMDQgMCAwIDAtNjAuMTMwMzUgNjAuMTMwMzVjMCAzMy4xNDExNSAyNi45MTk3NDI1IDYwLjEzMDM1IDYwLjEzMDM1IDYwLjEzMDM1IDMzLjE0MTE1IDAgNjAuMTMwMzUtMjYuOTE5NzQyNSA2MC4xMzAzNS02MC4xMzAzNSAwLTMzLjE0MTE1LTI2LjkxOTc0MjUtNjAuMTMwMzUtNjAuMTMwMzUtNjAuMTMwMzV6IiBmaWxsPSIjZmZmZmZmIiBwLWlkPSI1MDk4Ij48L3BhdGg+PC9zdmc+") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast.iziToast-theme-dark .iziToast-icon.ico-error { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTQxNjUxMzE1NTQ3IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjY4MDYiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNzcyLjI2NjY2NyA4ODMuMmMyNS42IDI1LjYgNjQgMjUuNiA4OS42IDAgMjUuNi0yNS42IDI1LjYtNjQgMC04OS42TDIzMC40IDE2Mi4xMzMzMzNjLTI1LjYtMjUuNi02NC0yNS42LTg5LjYgMC0yNS42IDI1LjYtMjUuNiA2NCAwIDg5LjZsNjMxLjQ2NjY2NyA2MzEuNDY2NjY3eiIgcC1pZD0iNjgwNyIgZmlsbD0iI2ZmZmZmZiI+PC9wYXRoPjxwYXRoIGQ9Ik04NjEuODY2NjY3IDI1MS43MzMzMzNjMjUuNi0yNS42IDI1LjYtNjQgMC04OS42LTI1LjYtMjUuNi02NC0yNS42LTg5LjYgMEwxNDAuOCA3OTMuNmMtMjUuNiAyNS42LTI1LjYgNjQgMCA4OS42czY0IDI1LjYgODkuNiAwbDYzMS40NjY2NjctNjMxLjQ2NjY2N3oiIHAtaWQ9IjY4MDgiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48L3N2Zz4=") no-repeat 50% 50%; + background-size: 80%; +} + +.iziToast.iziToast-theme-dark .iziToast-icon.ico-success { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTQxNjUxMjQyNTMxIiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjYwMjMiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNDA0LjI1MTQyOCA4MDkuNjEwN2MtMTEuNjY0MTAyIDAtMjMuMzI3MTc5LTQuNDQ4NzgyLTMyLjIyNTc2Ny0xMy4zNDczNjlMODMuOTgwMDk4IDUwOC4yMTk4MTVjLTE3Ljc5ODE5OS0xNy43OTcxNzUtMTcuNzk4MTk5LTQ2LjY1MzMzNSAwLTY0LjQ1MTUzM3M0Ni42NTMzMzUtMTcuNzk4MTk5IDY0LjQ1MTUzNCAwbDI4OC4wNDQ1MzkgMjg4LjA0MjQ5MWMxNy43OTgxOTkgMTcuNzk4MTk5IDE3Ljc5ODE5OSA0Ni42NTQzNTkgMCA2NC40NTI1NTgtOC44OTc1NjMgOC44OTg1ODctMjAuNTYxNjY1IDEzLjM0NzM2OS0zMi4yMjQ3NDMgMTMuMzQ3MzY5eiIgcC1pZD0iNjAyNCIgZmlsbD0iI2ZmZmZmZiI+PC9wYXRoPjxwYXRoIGQ9Ik00MDQuMjczOTUzIDgwOS42MTE3MjNjLTExLjY2NDEwMiAwLTIzLjMyNjE1NS00LjQ0OTgwNi0zMi4yMjU3NjYtMTMuMzQ4MzkyLTE3Ljc5ODE5OS0xNy43OTcxNzUtMTcuNzk5MjIyLTQ2LjY1MzMzNS0wLjAwMTAyNC02NC40NTE1MzRMODc2LjEwMTgxMyAyMjcuNzM1NjQ2YzE3Ljc5NjE1MS0xNy43OTgxOTkgNDYuNjUzMzM1LTE3Ljc5OTIyMiA2NC40NTE1MzMtMC4wMDEwMjQgMTcuNzk4MTk5IDE3Ljc5NzE3NSAxNy43OTkyMjIgNDYuNjUzMzM1IDAuMDAxMDI0IDY0LjQ1MTUzM0w0MzYuNTAwNzQ0IDc5Ni4yNjIzMDdjLTguODk4NTg3IDguODk4NTg3LTIwLjU2MjY4OSAxMy4zNDk0MTctMzIuMjI2NzkxIDEzLjM0OTQxNnoiIHAtaWQ9IjYwMjUiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48L3N2Zz4=") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast.iziToast-theme-dark .iziToast-icon.ico-question { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfhCQkUEg18vki+AAAETUlEQVRo3s1ZTWhbRxD+VlIuxsLFCYVIIQYVopBDoK5bKDWUBupDMNbJ5FBKg/FBziUQdE9yaC+FHBrwsdCfQ9RTGoLxwWl+DqHEojUFFydxnB9bInZDqOsErBrr6yGvs/ueX97bldTKo4Pe7puZb3Z33s7srIIjMY1jyCEjP6ImvyX8pF64arSHznKC06wzijY5xSKz7YbuYokV2lODsyyxqz3gSY6z6gCuqcpxJluFH+Z8U+D/0jyHoxFUBHgfvsGHIS9WMIUlVFFDFTUAGWSRQRY5HMeBEP6b+Ew9dh/7INd2jGeO59kfKdXP85zbIbfGQVf4sYC3N1hm3lo6zzIbPvk6x+zBk7wQGMEMB5xncIAzAS0XrFySSV72iS1yyBVcdA1x0afrsoUJgdFfY2+z8ADAXl7zz0KcwJiPfZKpVuABgClO+nRG+QIHDdfb4qlWwUXvKW4Z7vi6L4J9vg+vbfCeCeZH2RfOdMOc/HbCA4BvIW6EMQz7XK/ltd+hP+VzR9mgva2YSfyGI17fA7ynnocqeQNFfIJ0oHsdv6CC2+rXGBN6cQdveY3fcVRtmy/HDete+93zy8jA8zV7YkwYMrjHzRddRsCdiVCwwmh6wg9iTNC7Y9XIF1iS7kbUpsvvGEdPuTfSgAEjRpR096x0liPFD/Eqt2NMuBQzB2XhrACAApjFsuQFh9XdGAX70B3oSuNdnMVBaX+sopYxjwVpHFBVACyKTXNoktjD+6Ll8xhenS9MAAkAI/Lux2YNUOs4I413Ypg1SgEAu7kpFvWjaeJe0fJHDGe/cNaZBkekudw8PMA+0fMwlndZeAsJ5KR/qhUDUJCnSiyvRsolkJHGUgvjH8QXDgZopEzKMKDqCKrwEQ4C6MH7GEXC665buLJG8hlQc4LP4paxfJrOqYVYYY2UARfEIazTbgDg2dB98GebzJd54b8L/iWNdLyooeR6CHyZ+6xk0yKxkYg6nEVSUG4VJ9QJ9cxRCxO+9WiOyvgUeexXP1hLGH5nGuBWVtiSp4vqe3VP0UFWI9Wan4Er3v8q7jjPWVtm4FtcQQMrOKO2nOQCM5AyDMi56FDrKHA/1nyppS1ppBpYaE8wciEjGI2AaeM41kI4doDX4XiT3Qm1gevyruCgZg9P8xIv8m1nCzTKq6oiJ9xTMiZ505P5m8cdZ0CnZMVXHVljM7WMBzxpyDxygtdxoCEFTaMIWbZU85UvBjgUMYy0fBaAF8V1Lj9qWQ1aMZ5f4k9r+AGMSkMP1vZoZih6k6sicc5h/OFHM9vDqU/VIU7zJZdYYsKGH4g4nAJMGiXZRds1pVMoZ69RM5vfkbh0qkBhsnS2RLMLilQdL9MBHS9UAh0v1e6CYnXHy/WeeCcvLDwl/9OVze69tPKM+M+v7eJN6OzFpWdEF0ucDbhVNFXadnVrmJFlkVNGTS2M6pzmhMvltfPhnN2B63sVuL7fcNP3D1TSk2ihosPrAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTA5LTA5VDIwOjE4OjEzKzAyOjAweOR7nQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0wOS0wOVQyMDoxODoxMyswMjowMAm5wyEAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast.iziToast-theme-dark .iziToast-buttons > a, +.iziToast.iziToast-theme-dark .iziToast-buttons > button, +.iziToast.iziToast-theme-dark .iziToast-buttons > input { + color: #fff; + background: rgba(255, 255, 255, 0.1); +} + +.iziToast.iziToast-theme-dark .iziToast-buttons > a:hover, +.iziToast.iziToast-theme-dark .iziToast-buttons > button:hover, +.iziToast.iziToast-theme-dark .iziToast-buttons > input:hover { + background: rgba(255, 255, 255, 0.2); +} + +.iziToast.iziToast-theme-dark .iziToast-buttons > a:focus, +.iziToast.iziToast-theme-dark .iziToast-buttons > button:focus, +.iziToast.iziToast-theme-dark .iziToast-buttons > input:focus { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.6); +} + +.iziToast.iziToast-theme-dark.iziToast-color-red { + background: #F56C6C; + border-color: #F56C6C; +} + +.iziToast.iziToast-theme-dark.iziToast-color-orange { + background: #E6A23C; + border-color: #E6A23C; +} + +.iziToast.iziToast-theme-dark.iziToast-color-yellow { + background: rgba(255, 249, 178, 0.9); + border-color: rgba(255, 249, 178, 0.9); +} + +.iziToast.iziToast-theme-dark.iziToast-color-blue { + background: #409EFF; + border-color: #409EFF; +} + +.iziToast.iziToast-theme-dark.iziToast-color-green { + background: #67C23A; + border-color: #67C23A; +} + +.iziToast.iziToast-layout2 .iziToast-body .iziToast-texts, +.iziToast.iziToast-layout2 .iziToast-body .iziToast-message { + width: 100%; +} + +.iziToast.iziToast-layout3 { + border-radius: 2px; +} + +.iziToast.iziToast-layout3::after { + display: none; +} + +.iziToast.revealIn, +.iziToast .revealIn { + -webkit-animation: iziT-revealIn 1s cubic-bezier(0.25, 1.6, 0.25, 1) both; + -moz-animation: iziT-revealIn 1s cubic-bezier(0.25, 1.6, 0.25, 1) both; + animation: iziT-revealIn 1s cubic-bezier(0.25, 1.6, 0.25, 1) both; +} + +.iziToast.slideIn, +.iziToast .slideIn { + -webkit-animation: iziT-slideIn 1s cubic-bezier(0.16, 0.81, 0.32, 1) both; + -moz-animation: iziT-slideIn 1s cubic-bezier(0.16, 0.81, 0.32, 1) both; + animation: iziT-slideIn 1s cubic-bezier(0.16, 0.81, 0.32, 1) both; +} + +.iziToast.bounceInLeft { + -webkit-animation: iziT-bounceInLeft 0.7s ease-in-out both; + animation: iziT-bounceInLeft 0.7s ease-in-out both; +} + +.iziToast.bounceInRight { + -webkit-animation: iziT-bounceInRight 0.85s ease-in-out both; + animation: iziT-bounceInRight 0.85s ease-in-out both; +} + +.iziToast.bounceInDown { + -webkit-animation: iziT-bounceInDown 0.7s ease-in-out both; + animation: iziT-bounceInDown 0.7s ease-in-out both; +} + +.iziToast.bounceInUp { + -webkit-animation: iziT-bounceInUp 0.7s ease-in-out both; + animation: iziT-bounceInUp 0.7s ease-in-out both; +} + +.iziToast.fadeIn, +.iziToast .fadeIn { + -webkit-animation: iziT-fadeIn 0.5s ease both; + animation: iziT-fadeIn 0.5s ease both; +} + +.iziToast.fadeInUp { + -webkit-animation: iziT-fadeInUp 0.7s ease both; + animation: iziT-fadeInUp 0.7s ease both; +} + +.iziToast.fadeInDown { + -webkit-animation: iziT-fadeInDown 0.7s ease both; + animation: iziT-fadeInDown 0.7s ease both; +} + +.iziToast.fadeInLeft { + -webkit-animation: iziT-fadeInLeft 0.85s cubic-bezier(0.25, 0.8, 0.25, 1) both; + animation: iziT-fadeInLeft 0.85s cubic-bezier(0.25, 0.8, 0.25, 1) both; +} + +.iziToast.fadeInRight { + -webkit-animation: iziT-fadeInRight 0.85s cubic-bezier(0.25, 0.8, 0.25, 1) both; + animation: iziT-fadeInRight 0.85s cubic-bezier(0.25, 0.8, 0.25, 1) both; +} + +.iziToast.flipInX { + -webkit-animation: iziT-flipInX 0.85s cubic-bezier(0.35, 0, 0.25, 1) both; + animation: iziT-flipInX 0.85s cubic-bezier(0.35, 0, 0.25, 1) both; +} + +.iziToast.fadeOut { + -webkit-animation: iziT-fadeOut 0.7s ease both; + animation: iziT-fadeOut 0.7s ease both; +} + +.iziToast.fadeOutDown { + -webkit-animation: iziT-fadeOutDown 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; + animation: iziT-fadeOutDown 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; +} + +.iziToast.fadeOutUp { + -webkit-animation: iziT-fadeOutUp 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; + animation: iziT-fadeOutUp 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; +} + +.iziToast.fadeOutLeft { + -webkit-animation: iziT-fadeOutLeft 0.5s ease both; + animation: iziT-fadeOutLeft 0.5s ease both; +} + +.iziToast.fadeOutRight { + -webkit-animation: iziT-fadeOutRight 0.5s ease both; + animation: iziT-fadeOutRight 0.5s ease both; +} + +.iziToast.flipOutX { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation: iziT-flipOutX 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; + animation: iziT-flipOutX 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; +} + +.iziToast-overlay.fadeIn { + -webkit-animation: iziT-fadeIn 0.5s ease both; + animation: iziT-fadeIn 0.5s ease both; +} + +.iziToast-overlay.fadeOut { + -webkit-animation: iziT-fadeOut 0.7s ease both; + animation: iziT-fadeOut 0.7s ease both; +} + +@-webkit-keyframes iziT-revealIn { + 0% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 1); + } + 100% { + opacity: 1; + } +} + +@-moz-keyframes iziT-revealIn { + 0% { + opacity: 0; + -moz-transform: scale3d(0.3, 0.3, 1); + } + 100% { + opacity: 1; + } +} + +@-webkit-keyframes iziT-slideIn { + 0% { + opacity: 0; + -webkit-transform: translateX(50px); + } + 100% { + opacity: 1; + -webkit-transform: translateX(0); + } +} + +@-moz-keyframes iziT-slideIn { + 0% { + opacity: 0; + -moz-transform: translateX(50px); + } + 100% { + opacity: 1; + -moz-transform: translateX(0); + } +} + +@-webkit-keyframes iziT-bounceInLeft { + 0% { + opacity: 0; + -webkit-transform: translateX(280px); + } + 50% { + opacity: 1; + -webkit-transform: translateX(-20px); + } + 70% { + -webkit-transform: translateX(10px); + } + 100% { + -webkit-transform: translateX(0); + } +} + +@-webkit-keyframes iziT-bounceInRight { + 0% { + opacity: 0; + -webkit-transform: translateX(-280px); + } + 50% { + opacity: 1; + -webkit-transform: translateX(20px); + } + 70% { + -webkit-transform: translateX(-10px); + } + 100% { + -webkit-transform: translateX(0); + } +} + +@-webkit-keyframes iziT-bounceInDown { + 0% { + opacity: 0; + -webkit-transform: translateY(-200px); + } + 50% { + opacity: 1; + -webkit-transform: translateY(10px); + } + 70% { + -webkit-transform: translateY(-5px); + } + 100% { + -webkit-transform: translateY(0); + } +} + +@-webkit-keyframes iziT-bounceInUp { + 0% { + opacity: 0; + -webkit-transform: translateY(200px); + } + 50% { + opacity: 1; + -webkit-transform: translateY(-10px); + } + 70% { + -webkit-transform: translateY(5px); + } + 100% { + -webkit-transform: translateY(0); + } +} + +@-webkit-keyframes iziT-fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@-webkit-keyframes iziT-fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(300px, 0, 0); + transform: translate3d(300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(-300px, 0, 0); + transform: translate3d(-300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + } + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@-webkit-keyframes iziT-fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@-webkit-keyframes iziT-fadeOutDown { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@-webkit-keyframes iziT-fadeOutUp { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@-webkit-keyframes iziT-fadeOutLeft { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(-200px, 0, 0); + transform: translate3d(-200px, 0, 0); + } +} + +@-webkit-keyframes iziT-fadeOutRight { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(200px, 0, 0); + transform: translate3d(200px, 0, 0); + } +} + +@-webkit-keyframes iziT-flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +@-moz-keyframes iziT-revealIn { + 0% { + opacity: 0; + transform: scale3d(0.3, 0.3, 1); + } + 100% { + opacity: 1; + } +} + +@-webkit-keyframes iziT-revealIn { + 0% { + opacity: 0; + transform: scale3d(0.3, 0.3, 1); + } + 100% { + opacity: 1; + } +} + +@-o-keyframes iziT-revealIn { + 0% { + opacity: 0; + transform: scale3d(0.3, 0.3, 1); + } + 100% { + opacity: 1; + } +} + +@keyframes iziT-revealIn { + 0% { + opacity: 0; + transform: scale3d(0.3, 0.3, 1); + } + 100% { + opacity: 1; + } +} + +@-moz-keyframes iziT-slideIn { + 0% { + opacity: 0; + transform: translateX(50px); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} + +@-webkit-keyframes iziT-slideIn { + 0% { + opacity: 0; + transform: translateX(50px); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} + +@-o-keyframes iziT-slideIn { + 0% { + opacity: 0; + transform: translateX(50px); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} + +@keyframes iziT-slideIn { + 0% { + opacity: 0; + transform: translateX(50px); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} + +@-moz-keyframes iziT-bounceInLeft { + 0% { + opacity: 0; + transform: translateX(280px); + } + 50% { + opacity: 1; + transform: translateX(-20px); + } + 70% { + transform: translateX(10px); + } + 100% { + transform: translateX(0); + } +} + +@-webkit-keyframes iziT-bounceInLeft { + 0% { + opacity: 0; + transform: translateX(280px); + } + 50% { + opacity: 1; + transform: translateX(-20px); + } + 70% { + transform: translateX(10px); + } + 100% { + transform: translateX(0); + } +} + +@-o-keyframes iziT-bounceInLeft { + 0% { + opacity: 0; + transform: translateX(280px); + } + 50% { + opacity: 1; + transform: translateX(-20px); + } + 70% { + transform: translateX(10px); + } + 100% { + transform: translateX(0); + } +} + +@keyframes iziT-bounceInLeft { + 0% { + opacity: 0; + transform: translateX(280px); + } + 50% { + opacity: 1; + transform: translateX(-20px); + } + 70% { + transform: translateX(10px); + } + 100% { + transform: translateX(0); + } +} + +@-moz-keyframes iziT-bounceInRight { + 0% { + opacity: 0; + transform: translateX(-280px); + } + 50% { + opacity: 1; + transform: translateX(20px); + } + 70% { + transform: translateX(-10px); + } + 100% { + transform: translateX(0); + } +} + +@-webkit-keyframes iziT-bounceInRight { + 0% { + opacity: 0; + transform: translateX(-280px); + } + 50% { + opacity: 1; + transform: translateX(20px); + } + 70% { + transform: translateX(-10px); + } + 100% { + transform: translateX(0); + } +} + +@-o-keyframes iziT-bounceInRight { + 0% { + opacity: 0; + transform: translateX(-280px); + } + 50% { + opacity: 1; + transform: translateX(20px); + } + 70% { + transform: translateX(-10px); + } + 100% { + transform: translateX(0); + } +} + +@keyframes iziT-bounceInRight { + 0% { + opacity: 0; + transform: translateX(-280px); + } + 50% { + opacity: 1; + transform: translateX(20px); + } + 70% { + transform: translateX(-10px); + } + 100% { + transform: translateX(0); + } +} + +@-moz-keyframes iziT-bounceInDown { + 0% { + opacity: 0; + transform: translateY(-200px); + } + 50% { + opacity: 1; + transform: translateY(10px); + } + 70% { + transform: translateY(-5px); + } + 100% { + transform: translateY(0); + } +} + +@-webkit-keyframes iziT-bounceInDown { + 0% { + opacity: 0; + transform: translateY(-200px); + } + 50% { + opacity: 1; + transform: translateY(10px); + } + 70% { + transform: translateY(-5px); + } + 100% { + transform: translateY(0); + } +} + +@-o-keyframes iziT-bounceInDown { + 0% { + opacity: 0; + transform: translateY(-200px); + } + 50% { + opacity: 1; + transform: translateY(10px); + } + 70% { + transform: translateY(-5px); + } + 100% { + transform: translateY(0); + } +} + +@keyframes iziT-bounceInDown { + 0% { + opacity: 0; + transform: translateY(-200px); + } + 50% { + opacity: 1; + transform: translateY(10px); + } + 70% { + transform: translateY(-5px); + } + 100% { + transform: translateY(0); + } +} + +@-moz-keyframes iziT-bounceInUp { + 0% { + opacity: 0; + transform: translateY(200px); + } + 50% { + opacity: 1; + transform: translateY(-10px); + } + 70% { + transform: translateY(5px); + } + 100% { + transform: translateY(0); + } +} + +@-webkit-keyframes iziT-bounceInUp { + 0% { + opacity: 0; + transform: translateY(200px); + } + 50% { + opacity: 1; + transform: translateY(-10px); + } + 70% { + transform: translateY(5px); + } + 100% { + transform: translateY(0); + } +} + +@-o-keyframes iziT-bounceInUp { + 0% { + opacity: 0; + transform: translateY(200px); + } + 50% { + opacity: 1; + transform: translateY(-10px); + } + 70% { + transform: translateY(5px); + } + 100% { + transform: translateY(0); + } +} + +@keyframes iziT-bounceInUp { + 0% { + opacity: 0; + transform: translateY(200px); + } + 50% { + opacity: 1; + transform: translateY(-10px); + } + 70% { + transform: translateY(5px); + } + 100% { + transform: translateY(0); + } +} + +@-moz-keyframes iziT-fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@-webkit-keyframes iziT-fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@-o-keyframes iziT-fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@keyframes iziT-fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@-moz-keyframes iziT-fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-o-keyframes iziT-fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes iziT-fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-moz-keyframes iziT-fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-o-keyframes iziT-fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes iziT-fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-moz-keyframes iziT-fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(300px, 0, 0); + transform: translate3d(300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(300px, 0, 0); + transform: translate3d(300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-o-keyframes iziT-fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(300px, 0, 0); + transform: translate3d(300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes iziT-fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(300px, 0, 0); + transform: translate3d(300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-moz-keyframes iziT-fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(-300px, 0, 0); + transform: translate3d(-300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(-300px, 0, 0); + transform: translate3d(-300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-o-keyframes iziT-fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(-300px, 0, 0); + transform: translate3d(-300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes iziT-fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(-300px, 0, 0); + transform: translate3d(-300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-moz-keyframes iziT-flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + } + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@-webkit-keyframes iziT-flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + } + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@-o-keyframes iziT-flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + } + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@keyframes iziT-flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + } + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@-moz-keyframes iziT-fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@-webkit-keyframes iziT-fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@-o-keyframes iziT-fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@keyframes iziT-fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@-moz-keyframes iziT-fadeOutDown { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@-webkit-keyframes iziT-fadeOutDown { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@-o-keyframes iziT-fadeOutDown { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@keyframes iziT-fadeOutDown { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@-moz-keyframes iziT-fadeOutUp { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@-webkit-keyframes iziT-fadeOutUp { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@-o-keyframes iziT-fadeOutUp { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@keyframes iziT-fadeOutUp { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@-moz-keyframes iziT-fadeOutLeft { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(-200px, 0, 0); + transform: translate3d(-200px, 0, 0); + } +} + +@-webkit-keyframes iziT-fadeOutLeft { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(-200px, 0, 0); + transform: translate3d(-200px, 0, 0); + } +} + +@-o-keyframes iziT-fadeOutLeft { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(-200px, 0, 0); + transform: translate3d(-200px, 0, 0); + } +} + +@keyframes iziT-fadeOutLeft { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(-200px, 0, 0); + transform: translate3d(-200px, 0, 0); + } +} + +@-moz-keyframes iziT-fadeOutRight { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(200px, 0, 0); + transform: translate3d(200px, 0, 0); + } +} + +@-webkit-keyframes iziT-fadeOutRight { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(200px, 0, 0); + transform: translate3d(200px, 0, 0); + } +} + +@-o-keyframes iziT-fadeOutRight { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(200px, 0, 0); + transform: translate3d(200px, 0, 0); + } +} + +@keyframes iziT-fadeOutRight { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(200px, 0, 0); + transform: translate3d(200px, 0, 0); + } +} + +@-moz-keyframes iziT-flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +@-webkit-keyframes iziT-flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +@-o-keyframes iziT-flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +@keyframes iziT-flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} \ No newline at end of file diff --git a/component/pear/css/pear.css b/component/pear/css/pear.css index a7f279c..f073338 100644 --- a/component/pear/css/pear.css +++ b/component/pear/css/pear.css @@ -5,4 +5,5 @@ @import url("module/global.css"); @import url("module/menu.css"); @import url("module/page.css"); -@import url("module/tabPage.css"); \ No newline at end of file +@import url("module/tabPage.css"); +@import url("module/toast.css"); \ No newline at end of file diff --git a/component/pear/module/extends/toast.js b/component/pear/module/extends/toast.js new file mode 100644 index 0000000..57c8ca5 --- /dev/null +++ b/component/pear/module/extends/toast.js @@ -0,0 +1,1225 @@ +(function (root, factory) { + if(typeof define === 'function' && define.amd) { + define([], factory(root)); + } else if(typeof exports === 'object') { + module.exports = factory(root); + } else if (window.layui && layui.define) { + layui.define(function(exports){ + exports('toast',factory(root)) + }) + }else { + root.iziToast = factory(root); + } +})(typeof global !== 'undefined' ? global : window || this.window || this.global, function (root) { + + 'use strict'; + + var $iziToast = {}, + PLUGIN_NAME = 'iziToast', + BODY = document.querySelector('body'), + ISMOBILE = (/Mobi/.test(navigator.userAgent)) ? true : false, + ISCHROME = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor), + ISFIREFOX = typeof InstallTrigger !== 'undefined', + ACCEPTSTOUCH = 'ontouchstart' in document.documentElement, + POSITIONS = ['bottomRight','bottomLeft','bottomCenter','topRight','topLeft','topCenter','center'], + THEMES = { + info: { + color: 'blue', + icon: 'ico-info' + }, + success: { + color: 'green', + icon: 'ico-success' + }, + warning: { + color: 'orange', + icon: 'ico-warning' + }, + error: { + color: 'red', + icon: 'ico-error' + }, + question: { + color: 'yellow', + icon: 'ico-question' + } + }, + MOBILEWIDTH = 568, + CONFIG = {}; + + $iziToast.children = {}; + + // Default settings + var defaults = { + id: null, + class: '', + title: '', + titleColor: '', + titleSize: '', + titleLineHeight: '', + message: '', + messageColor: '', + messageSize: '', + messageLineHeight: '', + backgroundColor: '', + theme: 'light', // dark + color: '', // blue, red, green, yellow + icon: '', + iconText: '', + iconColor: '', + iconUrl: null, + image: '', + imageWidth: 50, + maxWidth: null, + zindex: null, + layout: 2, + balloon: false, + close: true, + closeOnEscape: false, + closeOnClick: false, + displayMode: 0, + position: 'topCenter', // bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter, center + target: '', + targetFirst: true, + timeout: 3000, // 默认3秒 + rtl: false, + animateInside: false, // 动画效果 + drag: true, + pauseOnHover: true, + resetOnHover: false, + progressBar: false, + progressBarColor: '', + progressBarEasing: 'linear', + overlay: false, + overlayClose: false, + overlayColor: 'rgba(0, 0, 0, 0.6)', + transitionIn: 'fadeInDown', // bounceInLeft, bounceInRight, bounceInUp, bounceInDown, fadeIn, fadeInDown, fadeInUp, fadeInLeft, fadeInRight, flipInX + transitionOut: 'fadeOut', // fadeOut, fadeOutUp, fadeOutDown, fadeOutLeft, fadeOutRight, flipOutX + transitionInMobile: 'bounceInDown', + transitionOutMobile: 'fadeOutUp', + buttons: {}, + inputs: {}, + onOpening: function () {}, + onOpened: function () {}, + onClosing: function () {}, + onClosed: function () {} + }; + + if(!('remove' in Element.prototype)) { + Element.prototype.remove = function() { + if(this.parentNode) { + this.parentNode.removeChild(this); + } + }; + } + + if(typeof window.CustomEvent !== 'function') { + var CustomEventPolyfill = function (event, params) { + params = params || { bubbles: false, cancelable: false, detail: undefined }; + var evt = document.createEvent('CustomEvent'); + evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); + return evt; + }; + + CustomEventPolyfill.prototype = window.Event.prototype; + + window.CustomEvent = CustomEventPolyfill; + } + + var forEach = function (collection, callback, scope) { + if(Object.prototype.toString.call(collection) === '[object Object]') { + for (var prop in collection) { + if(Object.prototype.hasOwnProperty.call(collection, prop)) { + callback.call(scope, collection[prop], prop, collection); + } + } + } else { + if(collection){ + for (var i = 0, len = collection.length; i < len; i++) { + callback.call(scope, collection[i], i, collection); + } + } + } + }; + + var extend = function (defaults, options) { + var extended = {}; + forEach(defaults, function (value, prop) { + extended[prop] = defaults[prop]; + }); + forEach(options, function (value, prop) { + extended[prop] = options[prop]; + }); + return extended; + }; + + var createFragElem = function(htmlStr) { + var frag = document.createDocumentFragment(), + temp = document.createElement('div'); + temp.innerHTML = htmlStr; + while (temp.firstChild) { + frag.appendChild(temp.firstChild); + } + return frag; + }; + + var generateId = function(params) { + var newId = btoa(encodeURIComponent(params)); + return newId.replace(/=/g, ""); + }; + + var isColor = function(color){ + if( color.substring(0,1) == '#' || color.substring(0,3) == 'rgb' || color.substring(0,3) == 'hsl' ){ + return true; + } else { + return false; + } + }; + + var isBase64 = function(str) { + try { + return btoa(atob(str)) == str; + } catch (err) { + return false; + } + }; + + var drag = function() { + + return { + move: function(toast, instance, settings, xpos) { + + var opacity, + opacityRange = 0.3, + distance = 180; + + if(xpos !== 0){ + + toast.classList.add(PLUGIN_NAME+'-dragged'); + + toast.style.transform = 'translateX('+xpos + 'px)'; + + if(xpos > 0){ + opacity = (distance-xpos) / distance; + if(opacity < opacityRange){ + instance.hide(extend(settings, { transitionOut: 'fadeOutRight', transitionOutMobile: 'fadeOutRight' }), toast, 'drag'); + } + } else { + opacity = (distance+xpos) / distance; + if(opacity < opacityRange){ + instance.hide(extend(settings, { transitionOut: 'fadeOutLeft', transitionOutMobile: 'fadeOutLeft' }), toast, 'drag'); + } + } + toast.style.opacity = opacity; + + if(opacity < opacityRange){ + + if(ISCHROME || ISFIREFOX) + toast.style.left = xpos+'px'; + + toast.parentNode.style.opacity = opacityRange; + + this.stopMoving(toast, null); + } + } + + + }, + startMoving: function(toast, instance, settings, e) { + + e = e || window.event; + var posX = ((ACCEPTSTOUCH) ? e.touches[0].clientX : e.clientX), + toastLeft = toast.style.transform.replace('px)', ''); + toastLeft = toastLeft.replace('translateX(', ''); + var offsetX = posX - toastLeft; + + if(settings.transitionIn){ + toast.classList.remove(settings.transitionIn); + } + if(settings.transitionInMobile){ + toast.classList.remove(settings.transitionInMobile); + } + toast.style.transition = ''; + + if(ACCEPTSTOUCH) { + document.ontouchmove = function(e) { + e.preventDefault(); + e = e || window.event; + var posX = e.touches[0].clientX, + finalX = posX - offsetX; + drag.move(toast, instance, settings, finalX); + }; + } else { + document.onmousemove = function(e) { + e.preventDefault(); + e = e || window.event; + var posX = e.clientX, + finalX = posX - offsetX; + drag.move(toast, instance, settings, finalX); + }; + } + + }, + stopMoving: function(toast, e) { + + if(ACCEPTSTOUCH) { + document.ontouchmove = function() {}; + } else { + document.onmousemove = function() {}; + } + + toast.style.opacity = ''; + toast.style.transform = ''; + + if(toast.classList.contains(PLUGIN_NAME+'-dragged')){ + + toast.classList.remove(PLUGIN_NAME+'-dragged'); + + toast.style.transition = 'transform 0.4s ease, opacity 0.4s ease'; + setTimeout(function() { + toast.style.transition = ''; + }, 400); + } + + } + }; + + }(); + + $iziToast.setSetting = function (ref, option, value) { + + $iziToast.children[ref][option] = value; + + }; + + $iziToast.getSetting = function (ref, option) { + + return $iziToast.children[ref][option]; + + }; + + $iziToast.destroy = function () { + + forEach(document.querySelectorAll('.'+PLUGIN_NAME+'-overlay'), function(element, index) { + element.remove(); + }); + + forEach(document.querySelectorAll('.'+PLUGIN_NAME+'-wrapper'), function(element, index) { + element.remove(); + }); + + forEach(document.querySelectorAll('.'+PLUGIN_NAME), function(element, index) { + element.remove(); + }); + + this.children = {}; + + // Remove event listeners + document.removeEventListener(PLUGIN_NAME+'-opened', {}, false); + document.removeEventListener(PLUGIN_NAME+'-opening', {}, false); + document.removeEventListener(PLUGIN_NAME+'-closing', {}, false); + document.removeEventListener(PLUGIN_NAME+'-closed', {}, false); + document.removeEventListener('keyup', {}, false); + + // Reset variables + CONFIG = {}; + }; + + /** + * Initialize Plugin + * @public + * @param {Object} options User settings + */ + $iziToast.settings = function (options) { + + // Destroy any existing initializations + $iziToast.destroy(); + + CONFIG = options; + defaults = extend(defaults, options || {}); + }; + + + /** + * Building themes functions. + * @public + * @param {Object} options User settings + */ + forEach(THEMES, function (theme, name) { + + $iziToast[name] = function (options) { + + var settings = extend(CONFIG, options || {}); + settings = extend(theme, settings || {}); + + this.show(settings); + }; + + }); + + + /** + * Do the calculation to move the progress bar + * @private + */ + $iziToast.progress = function (options, $toast, callback) { + + + var that = this, + ref = $toast.getAttribute('data-iziToast-ref'), + settings = extend(this.children[ref], options || {}), + $elem = $toast.querySelector('.'+PLUGIN_NAME+'-progressbar div'); + + return { + start: function() { + + if(typeof settings.time.REMAINING == 'undefined'){ + + $toast.classList.remove(PLUGIN_NAME+'-reseted'); + + if($elem !== null){ + $elem.style.transition = 'width '+ settings.timeout +'ms '+settings.progressBarEasing; + $elem.style.width = '0%'; + } + + settings.time.START = new Date().getTime(); + settings.time.END = settings.time.START + settings.timeout; + settings.time.TIMER = setTimeout(function() { + + clearTimeout(settings.time.TIMER); + + if(!$toast.classList.contains(PLUGIN_NAME+'-closing')){ + + that.hide(settings, $toast, 'timeout'); + + if(typeof callback === 'function'){ + callback.apply(that); + } + } + + }, settings.timeout); + that.setSetting(ref, 'time', settings.time); + } + }, + pause: function() { + + if(typeof settings.time.START !== 'undefined' && !$toast.classList.contains(PLUGIN_NAME+'-paused') && !$toast.classList.contains(PLUGIN_NAME+'-reseted')){ + + $toast.classList.add(PLUGIN_NAME+'-paused'); + + settings.time.REMAINING = settings.time.END - new Date().getTime(); + + clearTimeout(settings.time.TIMER); + + that.setSetting(ref, 'time', settings.time); + + if($elem !== null){ + var computedStyle = window.getComputedStyle($elem), + propertyWidth = computedStyle.getPropertyValue('width'); + + $elem.style.transition = 'none'; + $elem.style.width = propertyWidth; + } + + if(typeof callback === 'function'){ + setTimeout(function() { + callback.apply(that); + }, 10); + } + } + }, + resume: function() { + + if(typeof settings.time.REMAINING !== 'undefined'){ + + $toast.classList.remove(PLUGIN_NAME+'-paused'); + + if($elem !== null){ + $elem.style.transition = 'width '+ settings.time.REMAINING +'ms '+settings.progressBarEasing; + $elem.style.width = '0%'; + } + + settings.time.END = new Date().getTime() + settings.time.REMAINING; + settings.time.TIMER = setTimeout(function() { + + clearTimeout(settings.time.TIMER); + + if(!$toast.classList.contains(PLUGIN_NAME+'-closing')){ + + that.hide(settings, $toast, 'timeout'); + + if(typeof callback === 'function'){ + callback.apply(that); + } + } + + + }, settings.time.REMAINING); + + that.setSetting(ref, 'time', settings.time); + } else { + this.start(); + } + }, + reset: function(){ + + clearTimeout(settings.time.TIMER); + + delete settings.time.REMAINING; + + that.setSetting(ref, 'time', settings.time); + + $toast.classList.add(PLUGIN_NAME+'-reseted'); + + $toast.classList.remove(PLUGIN_NAME+'-paused'); + + if($elem !== null){ + $elem.style.transition = 'none'; + $elem.style.width = '100%'; + } + + if(typeof callback === 'function'){ + setTimeout(function() { + callback.apply(that); + }, 10); + } + } + }; + + }; + + + /** + * Close the specific Toast + * @public + * @param {Object} options User settings + */ + $iziToast.hide = function (options, $toast, closedBy) { + + if(typeof $toast != 'object'){ + $toast = document.querySelector($toast); + } + + var that = this, + settings = extend(this.children[$toast.getAttribute('data-iziToast-ref')], options || {}); + settings.closedBy = closedBy || null; + + delete settings.time.REMAINING; + + $toast.classList.add(PLUGIN_NAME+'-closing'); + + // Overlay + (function(){ + + var $overlay = document.querySelector('.'+PLUGIN_NAME+'-overlay'); + if($overlay !== null){ + var refs = $overlay.getAttribute('data-iziToast-ref'); + refs = refs.split(','); + var index = refs.indexOf(String(settings.ref)); + + if(index !== -1){ + refs.splice(index, 1); + } + $overlay.setAttribute('data-iziToast-ref', refs.join()); + + if(refs.length === 0){ + $overlay.classList.remove('fadeIn'); + $overlay.classList.add('fadeOut'); + setTimeout(function() { + $overlay.remove(); + }, 700); + } + } + + })(); + + if(settings.transitionIn){ + $toast.classList.remove(settings.transitionIn); + } + + if(settings.transitionInMobile){ + $toast.classList.remove(settings.transitionInMobile); + } + + if(ISMOBILE || window.innerWidth <= MOBILEWIDTH){ + if(settings.transitionOutMobile) + $toast.classList.add(settings.transitionOutMobile); + } else { + if(settings.transitionOut) + $toast.classList.add(settings.transitionOut); + } + var H = $toast.parentNode.offsetHeight; + $toast.parentNode.style.height = H+'px'; + $toast.style.pointerEvents = 'none'; + + if(!ISMOBILE || window.innerWidth > MOBILEWIDTH){ + $toast.parentNode.style.transitionDelay = '0.2s'; + } + + try { + var event = new CustomEvent(PLUGIN_NAME+'-closing', {detail: settings, bubbles: true, cancelable: true}); + document.dispatchEvent(event); + } catch(ex){ + console.warn(ex); + } + + setTimeout(function() { + + $toast.parentNode.style.height = '0px'; + $toast.parentNode.style.overflow = ''; + + setTimeout(function(){ + + delete that.children[settings.ref]; + + $toast.parentNode.remove(); + + try { + var event = new CustomEvent(PLUGIN_NAME+'-closed', {detail: settings, bubbles: true, cancelable: true}); + document.dispatchEvent(event); + } catch(ex){ + console.warn(ex); + } + + if(typeof settings.onClosed !== 'undefined'){ + settings.onClosed.apply(null, [settings, $toast, closedBy]); + } + + }, 1000); + }, 200); + + + if(typeof settings.onClosing !== 'undefined'){ + settings.onClosing.apply(null, [settings, $toast, closedBy]); + } + }; + + /** + * Create and show the Toast + * @public + * @param {Object} options User settings + */ + $iziToast.show = function (options) { + + var that = this; + + // Merge user options with defaults + var settings = extend(CONFIG, options || {}); + settings = extend(defaults, settings); + settings.time = {}; + + if(settings.id === null){ + settings.id = generateId(settings.title+settings.message+settings.color); + } + + if(settings.displayMode === 1 || settings.displayMode == 'once'){ + try { + if(document.querySelectorAll('.'+PLUGIN_NAME+'#'+settings.id).length > 0){ + return false; + } + } catch (exc) { + console.warn('['+PLUGIN_NAME+'] Could not find an element with this selector: '+'#'+settings.id+'. Try to set an valid id.'); + } + } + + if(settings.displayMode === 2 || settings.displayMode == 'replace'){ + try { + forEach(document.querySelectorAll('.'+PLUGIN_NAME+'#'+settings.id), function(element, index) { + that.hide(settings, element, 'replaced'); + }); + } catch (exc) { + console.warn('['+PLUGIN_NAME+'] Could not find an element with this selector: '+'#'+settings.id+'. Try to set an valid id.'); + } + } + + settings.ref = new Date().getTime() + Math.floor((Math.random() * 10000000) + 1); + + $iziToast.children[settings.ref] = settings; + + var $DOM = { + body: document.querySelector('body'), + overlay: document.createElement('div'), + toast: document.createElement('div'), + toastBody: document.createElement('div'), + toastTexts: document.createElement('div'), + toastCapsule: document.createElement('div'), + cover: document.createElement('div'), + buttons: document.createElement('div'), + inputs: document.createElement('div'), + icon: !settings.iconUrl ? document.createElement('i') : document.createElement('img'), + wrapper: null + }; + + $DOM.toast.setAttribute('data-iziToast-ref', settings.ref); + $DOM.toast.appendChild($DOM.toastBody); + $DOM.toastCapsule.appendChild($DOM.toast); + + // CSS Settings + (function(){ + + $DOM.toast.classList.add(PLUGIN_NAME); + $DOM.toast.classList.add(PLUGIN_NAME+'-opening'); + $DOM.toastCapsule.classList.add(PLUGIN_NAME+'-capsule'); + $DOM.toastBody.classList.add(PLUGIN_NAME + '-body'); + $DOM.toastTexts.classList.add(PLUGIN_NAME + '-texts'); + + if(ISMOBILE || window.innerWidth <= MOBILEWIDTH){ + if(settings.transitionInMobile) + $DOM.toast.classList.add(settings.transitionInMobile); + } else { + if(settings.transitionIn) + $DOM.toast.classList.add(settings.transitionIn); + } + + if(settings.class){ + var classes = settings.class.split(' '); + forEach(classes, function (value, index) { + $DOM.toast.classList.add(value); + }); + } + + if(settings.id){ $DOM.toast.id = settings.id; } + + if(settings.rtl){ + $DOM.toast.classList.add(PLUGIN_NAME + '-rtl'); + $DOM.toast.setAttribute('dir', 'rtl'); + } + + if(settings.layout > 1){ $DOM.toast.classList.add(PLUGIN_NAME+'-layout'+settings.layout); } + + if(settings.balloon){ $DOM.toast.classList.add(PLUGIN_NAME+'-balloon'); } + + if(settings.maxWidth){ + if( !isNaN(settings.maxWidth) ){ + $DOM.toast.style.maxWidth = settings.maxWidth+'px'; + } else { + $DOM.toast.style.maxWidth = settings.maxWidth; + } + } + + if(settings.theme !== '' || settings.theme !== 'light') { + + $DOM.toast.classList.add(PLUGIN_NAME+'-theme-'+settings.theme); + } + + if(settings.color) { //#, rgb, rgba, hsl + + if( isColor(settings.color) ){ + $DOM.toast.style.background = settings.color; + } else { + $DOM.toast.classList.add(PLUGIN_NAME+'-color-'+settings.color); + } + } + + if(settings.backgroundColor) { + $DOM.toast.style.background = settings.backgroundColor; + if(settings.balloon){ + $DOM.toast.style.borderColor = settings.backgroundColor; + } + } + })(); + + // Cover image + (function(){ + if(settings.image) { + $DOM.cover.classList.add(PLUGIN_NAME + '-cover'); + $DOM.cover.style.width = settings.imageWidth + 'px'; + + if(isBase64(settings.image.replace(/ /g,''))){ + $DOM.cover.style.backgroundImage = 'url(data:image/png;base64,' + settings.image.replace(/ /g,'') + ')'; + } else { + $DOM.cover.style.backgroundImage = 'url(' + settings.image + ')'; + } + + if(settings.rtl){ + $DOM.toastBody.style.marginRight = (settings.imageWidth + 10) + 'px'; + } else { + $DOM.toastBody.style.marginLeft = (settings.imageWidth + 10) + 'px'; + } + $DOM.toast.appendChild($DOM.cover); + } + })(); + + // Button close + (function(){ + if(settings.close){ + + $DOM.buttonClose = document.createElement('button'); + $DOM.buttonClose.type = 'button'; + $DOM.buttonClose.classList.add(PLUGIN_NAME + '-close'); + $DOM.buttonClose.addEventListener('click', function (e) { + var button = e.target; + that.hide(settings, $DOM.toast, 'button'); + }); + $DOM.toast.appendChild($DOM.buttonClose); + } else { + if(settings.rtl){ + $DOM.toast.style.paddingLeft = '18px'; + } else { + $DOM.toast.style.paddingRight = '18px'; + } + } + })(); + + // Progress Bar & Timeout + (function(){ + + if(settings.progressBar){ + $DOM.progressBar = document.createElement('div'); + $DOM.progressBarDiv = document.createElement('div'); + $DOM.progressBar.classList.add(PLUGIN_NAME + '-progressbar'); + $DOM.progressBarDiv.style.background = settings.progressBarColor; + $DOM.progressBar.appendChild($DOM.progressBarDiv); + $DOM.toast.appendChild($DOM.progressBar); + } + + if(settings.timeout) { + + if(settings.pauseOnHover && !settings.resetOnHover){ + + $DOM.toast.addEventListener('mouseenter', function (e) { + that.progress(settings, $DOM.toast).pause(); + }); + $DOM.toast.addEventListener('mouseleave', function (e) { + that.progress(settings, $DOM.toast).resume(); + }); + } + + if(settings.resetOnHover){ + + $DOM.toast.addEventListener('mouseenter', function (e) { + that.progress(settings, $DOM.toast).reset(); + }); + $DOM.toast.addEventListener('mouseleave', function (e) { + that.progress(settings, $DOM.toast).start(); + }); + } + } + })(); + + // Icon + (function(){ + + if(settings.iconUrl) { + + $DOM.icon.setAttribute('class', PLUGIN_NAME + '-icon'); + $DOM.icon.setAttribute('src', settings.iconUrl); + + } else if(settings.icon) { + $DOM.icon.setAttribute('class', PLUGIN_NAME + '-icon ' + settings.icon); + + if(settings.iconText){ + $DOM.icon.appendChild(document.createTextNode(settings.iconText)); + } + + if(settings.iconColor){ + $DOM.icon.style.color = settings.iconColor; + } + } + + if(settings.icon || settings.iconUrl) { + + if(settings.rtl){ + $DOM.toastBody.style.paddingRight = '33px'; + } else { + $DOM.toastBody.style.paddingLeft = '33px'; + } + + $DOM.toastBody.appendChild($DOM.icon); + } + + })(); + + // Title & Message + (function(){ + if(settings.title.length > 0) { + + $DOM.strong = document.createElement('strong'); + $DOM.strong.classList.add(PLUGIN_NAME + '-title'); + $DOM.strong.appendChild(createFragElem(settings.title)); + $DOM.toastTexts.appendChild($DOM.strong); + + if(settings.titleColor) { + $DOM.strong.style.color = settings.titleColor; + } + if(settings.titleSize) { + if( !isNaN(settings.titleSize) ){ + $DOM.strong.style.fontSize = settings.titleSize+'px'; + } else { + $DOM.strong.style.fontSize = settings.titleSize; + } + } + if(settings.titleLineHeight) { + if( !isNaN(settings.titleSize) ){ + $DOM.strong.style.lineHeight = settings.titleLineHeight+'px'; + } else { + $DOM.strong.style.lineHeight = settings.titleLineHeight; + } + } + } + + if(settings.message.length > 0) { + + $DOM.p = document.createElement('p'); + $DOM.p.classList.add(PLUGIN_NAME + '-message'); + $DOM.p.appendChild(createFragElem(settings.message)); + $DOM.toastTexts.appendChild($DOM.p); + + if(settings.messageColor) { + $DOM.p.style.color = settings.messageColor; + } + if(settings.messageSize) { + if( !isNaN(settings.titleSize) ){ + $DOM.p.style.fontSize = settings.messageSize+'px'; + } else { + $DOM.p.style.fontSize = settings.messageSize; + } + } + if(settings.messageLineHeight) { + + if( !isNaN(settings.titleSize) ){ + $DOM.p.style.lineHeight = settings.messageLineHeight+'px'; + } else { + $DOM.p.style.lineHeight = settings.messageLineHeight; + } + } + } + + if(settings.title.length > 0 && settings.message.length > 0) { + if(settings.rtl){ + $DOM.strong.style.marginLeft = '10px'; + } else if(settings.layout !== 2 && !settings.rtl) { + $DOM.strong.style.marginRight = '10px'; + } + } + })(); + + $DOM.toastBody.appendChild($DOM.toastTexts); + + // Inputs + var $inputs; + (function(){ + if(settings.inputs.length > 0) { + + $DOM.inputs.classList.add(PLUGIN_NAME + '-inputs'); + + forEach(settings.inputs, function (value, index) { + $DOM.inputs.appendChild(createFragElem(value[0])); + + $inputs = $DOM.inputs.childNodes; + + $inputs[index].classList.add(PLUGIN_NAME + '-inputs-child'); + + if(value[3]){ + setTimeout(function() { + $inputs[index].focus(); + }, 300); + } + + $inputs[index].addEventListener(value[1], function (e) { + var ts = value[2]; + return ts(that, $DOM.toast, this, e); + }); + }); + $DOM.toastBody.appendChild($DOM.inputs); + } + })(); + + // Buttons + (function(){ + if(settings.buttons.length > 0) { + + $DOM.buttons.classList.add(PLUGIN_NAME + '-buttons'); + + forEach(settings.buttons, function (value, index) { + $DOM.buttons.appendChild(createFragElem(value[0])); + + var $btns = $DOM.buttons.childNodes; + + $btns[index].classList.add(PLUGIN_NAME + '-buttons-child'); + + if(value[2]){ + setTimeout(function() { + $btns[index].focus(); + }, 300); + } + + $btns[index].addEventListener('click', function (e) { + e.preventDefault(); + var ts = value[1]; + return ts(that, $DOM.toast, this, e, $inputs); + }); + }); + } + $DOM.toastBody.appendChild($DOM.buttons); + })(); + + if(settings.message.length > 0 && (settings.inputs.length > 0 || settings.buttons.length > 0)) { + $DOM.p.style.marginBottom = '0'; + } + + if(settings.inputs.length > 0 || settings.buttons.length > 0){ + if(settings.rtl){ + $DOM.toastTexts.style.marginLeft = '10px'; + } else { + $DOM.toastTexts.style.marginRight = '10px'; + } + if(settings.inputs.length > 0 && settings.buttons.length > 0){ + if(settings.rtl){ + $DOM.inputs.style.marginLeft = '8px'; + } else { + $DOM.inputs.style.marginRight = '8px'; + } + } + } + + // Wrap + (function(){ + $DOM.toastCapsule.style.visibility = 'hidden'; + setTimeout(function() { + var H = $DOM.toast.offsetHeight; + var style = $DOM.toast.currentStyle || window.getComputedStyle($DOM.toast); + var marginTop = style.marginTop; + marginTop = marginTop.split('px'); + marginTop = parseInt(marginTop[0]); + var marginBottom = style.marginBottom; + marginBottom = marginBottom.split('px'); + marginBottom = parseInt(marginBottom[0]); + + $DOM.toastCapsule.style.visibility = ''; + $DOM.toastCapsule.style.height = (H+marginBottom+marginTop)+'px'; + + setTimeout(function() { + $DOM.toastCapsule.style.height = 'auto'; + if(settings.target){ + $DOM.toastCapsule.style.overflow = 'visible'; + } + }, 500); + + if(settings.timeout) { + that.progress(settings, $DOM.toast).start(); + } + }, 100); + })(); + + // Target + (function(){ + var position = settings.position; + + if(settings.target){ + + $DOM.wrapper = document.querySelector(settings.target); + $DOM.wrapper.classList.add(PLUGIN_NAME + '-target'); + + if(settings.targetFirst) { + $DOM.wrapper.insertBefore($DOM.toastCapsule, $DOM.wrapper.firstChild); + } else { + $DOM.wrapper.appendChild($DOM.toastCapsule); + } + + } else { + + if( POSITIONS.indexOf(settings.position) == -1 ){ + console.warn('['+PLUGIN_NAME+'] Incorrect position.\nIt can be › ' + POSITIONS); + return; + } + + if(ISMOBILE || window.innerWidth <= MOBILEWIDTH){ + if(settings.position == 'bottomLeft' || settings.position == 'bottomRight' || settings.position == 'bottomCenter'){ + position = PLUGIN_NAME+'-wrapper-bottomCenter'; + } + else if(settings.position == 'topLeft' || settings.position == 'topRight' || settings.position == 'topCenter'){ + position = PLUGIN_NAME+'-wrapper-topCenter'; + } + else { + position = PLUGIN_NAME+'-wrapper-center'; + } + } else { + position = PLUGIN_NAME+'-wrapper-'+position; + } + $DOM.wrapper = document.querySelector('.' + PLUGIN_NAME + '-wrapper.'+position); + + if(!$DOM.wrapper) { + $DOM.wrapper = document.createElement('div'); + $DOM.wrapper.classList.add(PLUGIN_NAME + '-wrapper'); + $DOM.wrapper.classList.add(position); + document.body.appendChild($DOM.wrapper); + } + if(settings.position == 'topLeft' || settings.position == 'topCenter' || settings.position == 'topRight'){ + $DOM.wrapper.insertBefore($DOM.toastCapsule, $DOM.wrapper.firstChild); + } else { + $DOM.wrapper.appendChild($DOM.toastCapsule); + } + } + + if(!isNaN(settings.zindex)) { + $DOM.wrapper.style.zIndex = settings.zindex; + } else { + console.warn('['+PLUGIN_NAME+'] Invalid zIndex.'); + } + })(); + + // Overlay + (function(){ + + if(settings.overlay) { + + if( document.querySelector('.'+PLUGIN_NAME+'-overlay.fadeIn') !== null ){ + + $DOM.overlay = document.querySelector('.'+PLUGIN_NAME+'-overlay'); + $DOM.overlay.setAttribute('data-iziToast-ref', $DOM.overlay.getAttribute('data-iziToast-ref') + ',' + settings.ref); + + if(!isNaN(settings.zindex) && settings.zindex !== null) { + $DOM.overlay.style.zIndex = settings.zindex-1; + } + + } else { + + $DOM.overlay.classList.add(PLUGIN_NAME+'-overlay'); + $DOM.overlay.classList.add('fadeIn'); + $DOM.overlay.style.background = settings.overlayColor; + $DOM.overlay.setAttribute('data-iziToast-ref', settings.ref); + if(!isNaN(settings.zindex) && settings.zindex !== null) { + $DOM.overlay.style.zIndex = settings.zindex-1; + } + document.querySelector('body').appendChild($DOM.overlay); + } + + if(settings.overlayClose) { + + $DOM.overlay.removeEventListener('click', {}); + $DOM.overlay.addEventListener('click', function (e) { + that.hide(settings, $DOM.toast, 'overlay'); + }); + } else { + $DOM.overlay.removeEventListener('click', {}); + } + } + })(); + + // Inside animations + (function(){ + if(settings.animateInside){ + $DOM.toast.classList.add(PLUGIN_NAME+'-animateInside'); + + var animationTimes = [200, 100, 300]; + if(settings.transitionIn == 'bounceInLeft' || settings.transitionIn == 'bounceInRight'){ + animationTimes = [400, 200, 400]; + } + + if(settings.title.length > 0) { + setTimeout(function(){ + $DOM.strong.classList.add('slideIn'); + }, animationTimes[0]); + } + + if(settings.message.length > 0) { + setTimeout(function(){ + $DOM.p.classList.add('slideIn'); + }, animationTimes[1]); + } + + if(settings.icon || settings.iconUrl) { + setTimeout(function(){ + $DOM.icon.classList.add('revealIn'); + }, animationTimes[2]); + } + + var counter = 150; + if(settings.buttons.length > 0 && $DOM.buttons) { + + setTimeout(function(){ + + forEach($DOM.buttons.childNodes, function(element, index) { + + setTimeout(function(){ + element.classList.add('revealIn'); + }, counter); + counter = counter + 150; + }); + + }, settings.inputs.length > 0 ? 150 : 0); + } + + if(settings.inputs.length > 0 && $DOM.inputs) { + counter = 150; + forEach($DOM.inputs.childNodes, function(element, index) { + + setTimeout(function(){ + element.classList.add('revealIn'); + }, counter); + counter = counter + 150; + }); + } + } + })(); + + settings.onOpening.apply(null, [settings, $DOM.toast]); + + try { + var event = new CustomEvent(PLUGIN_NAME + '-opening', {detail: settings, bubbles: true, cancelable: true}); + document.dispatchEvent(event); + } catch(ex){ + console.warn(ex); + } + + setTimeout(function() { + + $DOM.toast.classList.remove(PLUGIN_NAME+'-opening'); + $DOM.toast.classList.add(PLUGIN_NAME+'-opened'); + + try { + var event = new CustomEvent(PLUGIN_NAME + '-opened', {detail: settings, bubbles: true, cancelable: true}); + document.dispatchEvent(event); + } catch(ex){ + console.warn(ex); + } + + settings.onOpened.apply(null, [settings, $DOM.toast]); + }, 1000); + + if(settings.drag){ + + if(ACCEPTSTOUCH) { + + $DOM.toast.addEventListener('touchstart', function(e) { + drag.startMoving(this, that, settings, e); + }, false); + + $DOM.toast.addEventListener('touchend', function(e) { + drag.stopMoving(this, e); + }, false); + } else { + + $DOM.toast.addEventListener('mousedown', function(e) { + e.preventDefault(); + drag.startMoving(this, that, settings, e); + }, false); + + $DOM.toast.addEventListener('mouseup', function(e) { + e.preventDefault(); + drag.stopMoving(this, e); + }, false); + } + } + + if(settings.closeOnEscape) { + + document.addEventListener('keyup', function (evt) { + evt = evt || window.event; + if(evt.keyCode == 27) { + that.hide(settings, $DOM.toast, 'esc'); + } + }); + } + + if(settings.closeOnClick) { + $DOM.toast.addEventListener('click', function (evt) { + that.hide(settings, $DOM.toast, 'toast'); + }); + } + + that.toast = $DOM.toast; + }; + return $iziToast; +}); \ No newline at end of file diff --git a/component/pear/pear.js b/component/pear/pear.js index baf2219..a92f3f3 100644 --- a/component/pear/pear.js +++ b/component/pear/pear.js @@ -17,14 +17,13 @@ layui.config({ messageCenter: "messageCenter", button: "button", theme: "theme", + popup:"extends/popup", + count:"extends/count", + toast:"extends/toast", + nprogress: "extends/nprogress", echarts: "extends/echarts", echartsTheme: "extends/echartsTheme", - yaml:"extends/yaml", - nprogress: "extends/nprogress", - toast: "extends/toast", - popup:"extends/popup", - count:"extends/count", - + yaml:"extends/yaml" }).use(['layer', 'theme'], function () { }); \ No newline at end of file diff --git a/view/component/table.html b/view/component/table.html new file mode 100644 index 0000000..c16d6cd --- /dev/null +++ b/view/component/table.html @@ -0,0 +1,375 @@ + + + + + + table 组件综合演示 - Layui + + + + + + + +
                                      +
                                      +
                                      + + + + + + + \ No newline at end of file diff --git a/view/component/toast.html b/view/component/toast.html new file mode 100644 index 0000000..863b2a3 --- /dev/null +++ b/view/component/toast.html @@ -0,0 +1,61 @@ + + + + + + + 通知组件 + + +
                                      +
                                      +
                                      +
                                      +
                                      基础使用
                                      +
                                      + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      + + + + \ No newline at end of file -- Gitee From 0cff93fb7161d3e80c7dbb0cca3106f45f60da9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Wed, 28 Jun 2023 13:15:27 +0800 Subject: [PATCH 038/141] update --- admin/data/menu.json | 13 +- admin/data/table.json | 278 ++ admin/data/treeTable.json | 5078 +++++++++++++++++++++++++++++++++ view/component/table.html | 10 +- view/component/treeTable.html | 131 + 5 files changed, 5504 insertions(+), 6 deletions(-) create mode 100644 admin/data/treeTable.json create mode 100644 view/component/treeTable.html diff --git a/admin/data/menu.json b/admin/data/menu.json index 9847c35..6055317 100644 --- a/admin/data/menu.json +++ b/admin/data/menu.json @@ -26,14 +26,21 @@ "type": 0, "children": [ { - "id": 22, + "id": 21, "title": "数据表格", "icon": "layui-icon layui-icon-face-smile", "type": 1, "openType": "_component", "href": "view/component/table.html" },{ - "id": 21, + "id": 22, + "title": "树形表格", + "icon": "layui-icon layui-icon-face-smile", + "type": 1, + "openType": "_component", + "href": "view/component/treeTable.html" + },{ + "id": 23, "title": "24 栅格", "icon": "layui-icon layui-icon-face-smile", "type": 1, @@ -41,7 +48,7 @@ "href": "view/component/grid.html" }, { - "id": 23, + "id": 24, "title": "消息提示", "icon": "layui-icon layui-icon-face-smile", "type": 1, diff --git a/admin/data/table.json b/admin/data/table.json index e69de29..a1af523 100644 --- a/admin/data/table.json +++ b/admin/data/table.json @@ -0,0 +1,278 @@ +{ + "code": 0 + ,"msg": "" + ,"count": 1000 + ,"totalRow": { + "era": { + "tang": "2", + "song": "2", + "xian": "20" + } + } + ,"data": [{ + "id": "10001" + ,"username": "李白" + ,"email": "test1@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "君不见,黄河之水天上来,奔流到海不复回。 君不见,高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 岑夫子,丹丘生,将进酒,杯莫停。 与君歌一曲,请君为我倾耳听。(倾耳听 一作:侧耳听) 钟鼓馔玉不足贵,但愿长醉不复醒。(不足贵 一作:何足贵;不复醒 一作:不愿醒/不用醒) 古来圣贤皆寂寞,惟有饮者留其名。(古来 一作:自古;惟 通:唯) 陈王昔时宴平乐,斗酒十千恣欢谑。 主人何为言少钱,径须沽取对君酌。 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。" + ,"experience": "12" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10002" + ,"username": "杜甫" + ,"email": "test2@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "舍南舍北皆春水,但见群鸥日日来。花径不曾缘客扫,蓬门今始为君开。盘飧市远无兼味,樽酒家贫只旧醅。肯与邻翁相对饮,隔篱呼取尽余杯。" + ,"experience": "116" + ,"ip": "192.168.0.8" + ,"checkin": "108" + ,"joinTime": "2016-10-14" + ,"LAY_CHECKED": true + }, { + "id": "10003" + ,"username": "苏轼" + ,"email": "test3@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "大江东去,浪淘尽,千古风流人物。故垒西边,人道是,三国周郎赤壁。乱石穿空,惊涛拍岸,卷起千堆雪。江山如画,一时多少豪杰。遥想公瑾当年,小乔初嫁了,雄姿英发。羽扇纶巾,谈笑间,樯橹灰飞烟灭。故国神游,多情应笑我,早生华发。人生如梦,一尊还酹江月。" + ,"experience": "65" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10004" + ,"username": "李清照" + ,"email": "test4@email.com" + ,"sex": "女" + ,"city": "浙江杭州" + ,"sign": "昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否,知否?应是绿肥红瘦。" + ,"experience": "777" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10005" + ,"username": "冰心" + ,"email": "test5@email.com" + ,"sex": "女" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "86" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10006" + ,"username": "张三" + ,"email": "test6@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "12" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10007" + ,"username": "张三7" + ,"email": "test7@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "16" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10008" + ,"username": "张三8" + ,"email": "test8@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10009" + ,"username": "张三9" + ,"email": "test9@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10010" + ,"username": "张三10" + ,"email": "test10@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10011" + ,"username": "张三11" + ,"email": "test11@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10012" + ,"username": "张三12" + ,"email": "test12@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10013" + ,"username": "张三13" + ,"email": "test13@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10014" + ,"username": "张三14" + ,"email": "test14@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10015" + ,"username": "张三15" + ,"email": "test15@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10016" + ,"username": "张三16" + ,"email": "test16@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10017" + ,"username": "张三17" + ,"email": "test17@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10018" + ,"username": "张三18" + ,"email": "test18@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10019" + ,"username": "张三19" + ,"email": "test19@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10020" + ,"username": "张三20" + ,"email": "test20@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10021" + ,"username": "张三21" + ,"email": "test21@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10022" + ,"username": "张三22" + ,"email": "test22@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10023" + ,"username": "张三23" + ,"email": "test23@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }, { + "id": "10024" + ,"username": "张三24" + ,"email": "test24@email.com" + ,"sex": "男" + ,"city": "浙江杭州" + ,"sign": "保持真善美,温和待人" + ,"experience": "106" + ,"ip": "192.168.0.8" + ,"checkin": "106" + ,"joinTime": "2016-10-14" + }] + } \ No newline at end of file diff --git a/admin/data/treeTable.json b/admin/data/treeTable.json new file mode 100644 index 0000000..a861d6a --- /dev/null +++ b/admin/data/treeTable.json @@ -0,0 +1,5078 @@ +{ + "code": 0, + "count": 1000, + "data": [ + { + "id": 1, + "name": "User-1", + "type": 4, + "status": 2, + "score": 28, + "experience": 54981, + "sex": "男", + "city": "丽江市", + "description": "-", + "createTime": "2014-06-04 12:29:55", + "parentId": null, + "children": [ + { + "id": 2, + "name": "User-2", + "type": 2, + "status": 3, + "score": 75, + "experience": 43884, + "sex": "女", + "city": "大理白族自治州", + "description": "-", + "createTime": "1971-11-03 19:15:43", + "parentId": null, + "children": [ + { + "id": 3, + "name": "User-3", + "type": 2, + "status": 3, + "score": 72, + "experience": 75912, + "sex": "女", + "city": "渭南市", + "description": "-", + "createTime": "2022-01-17 01:48:02", + "parentId": null, + "children": [ + { + "id": 4, + "name": "User-4", + "type": 3, + "status": 3, + "score": 21, + "experience": 23198, + "sex": "男", + "city": "海外", + "description": "-", + "createTime": "1986-11-06 23:56:45", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 5, + "name": "User-5", + "type": 3, + "status": 3, + "score": 89, + "experience": 25710, + "sex": "女", + "city": "盐城市", + "description": "-", + "createTime": "2007-10-03 21:44:59", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 6, + "name": "User-6", + "type": 2, + "status": 4, + "score": 70, + "experience": 51144, + "sex": "男", + "city": "益阳市", + "description": "-", + "createTime": "2017-02-21 00:26:02", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 7, + "name": "User-7", + "type": 5, + "status": 3, + "score": 24, + "experience": 64919, + "sex": "男", + "city": "贵港市", + "description": "-", + "createTime": "1981-05-14 17:52:03", + "parentId": null, + "children": [ + { + "id": 8, + "name": "User-8", + "type": 6, + "status": 2, + "score": 2, + "experience": 80656, + "sex": "男", + "city": "宿迁市", + "description": "-", + "createTime": "1984-05-24 20:44:26", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 9, + "name": "User-9", + "type": 6, + "status": 2, + "score": 58, + "experience": 2414, + "sex": "女", + "city": "宿州市", + "description": "-", + "createTime": "2015-05-06 00:39:19", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 10, + "name": "User-10", + "type": 4, + "status": 2, + "score": 89, + "experience": 97592, + "sex": "女", + "city": "钦州市", + "description": "-", + "createTime": "1985-05-26 03:50:09", + "parentId": null, + "children": [ + { + "id": 11, + "name": "User-11", + "type": 2, + "status": 2, + "score": 85, + "experience": 37406, + "sex": "女", + "city": "黄南藏族自治州", + "description": "-", + "createTime": "2022-10-09 11:51:44", + "parentId": null, + "children": [ + { + "id": 12, + "name": "User-12", + "type": 4, + "status": 3, + "score": 40, + "experience": 13714, + "sex": "女", + "city": "黔东南苗族侗族自治州", + "description": "-", + "createTime": "1991-09-01 09:19:11", + "parentId": null, + "children": [ + { + "id": 13, + "name": "User-13", + "type": 5, + "status": 4, + "score": 47, + "experience": 89189, + "sex": "男", + "city": "金昌市", + "description": "-", + "createTime": "1978-12-03 09:59:56", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 14, + "name": "User-14", + "type": 2, + "status": 3, + "score": 53, + "experience": 10739, + "sex": "女", + "city": "上海市", + "description": "-", + "createTime": "1989-03-31 19:08:12", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 15, + "name": "User-15", + "type": 5, + "status": 2, + "score": 76, + "experience": 40019, + "sex": "男", + "city": "遵义市", + "description": "-", + "createTime": "1996-12-12 16:34:05", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 16, + "name": "User-16", + "type": 3, + "status": 1, + "score": 81, + "experience": 30559, + "sex": "男", + "city": "开封市", + "description": "-", + "createTime": "1979-09-24 03:53:59", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 17, + "name": "User-17", + "type": 6, + "status": 4, + "score": 16, + "experience": 56549, + "sex": "女", + "city": "宁波市", + "description": "-", + "createTime": "1994-06-30 15:07:08", + "parentId": null, + "children": [ + { + "id": 18, + "name": "User-18", + "type": 2, + "status": 2, + "score": 22, + "experience": 31311, + "sex": "男", + "city": "黔东南苗族侗族自治州", + "description": "-", + "createTime": "1995-10-07 06:13:07", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 19, + "name": "User-19", + "type": 3, + "status": 1, + "score": 23, + "experience": 63334, + "sex": "女", + "city": "离岛", + "description": "-", + "createTime": "2002-09-25 11:36:07", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 20, + "name": "User-20", + "type": 2, + "status": 2, + "score": 30, + "experience": 5650, + "sex": "男", + "city": "许昌市", + "description": "-", + "createTime": "2001-08-08 14:25:42", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 21, + "name": "User-21", + "type": 2, + "status": 1, + "score": 74, + "experience": 71912, + "sex": "女", + "city": "海北藏族自治州", + "description": "-", + "createTime": "2016-10-18 15:54:30", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 22, + "name": "User-22", + "type": 2, + "status": 3, + "score": 87, + "experience": 65197, + "sex": "女", + "city": "定西市", + "description": "-", + "createTime": "1991-01-09 18:26:58", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 23, + "name": "User-23", + "type": 2, + "status": 4, + "score": 73, + "experience": 27868, + "sex": "男", + "city": "威海市", + "description": "-", + "createTime": "1981-10-13 18:52:11", + "parentId": null, + "children": [ + { + "id": 24, + "name": "User-24", + "type": 4, + "status": 2, + "score": 99, + "experience": 69882, + "sex": "女", + "city": "重庆市", + "description": "-", + "createTime": "1990-09-26 19:08:20", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 25, + "name": "User-25", + "type": 3, + "status": 2, + "score": 82, + "experience": 25619, + "sex": "女", + "city": "澳门半岛", + "description": "-", + "createTime": "1991-02-16 04:19:14", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 26, + "name": "User-26", + "type": 4, + "status": 2, + "score": 2, + "experience": 8058, + "sex": "男", + "city": "阿里地区", + "description": "-", + "createTime": "2002-10-19 09:44:05", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 27, + "name": "User-27", + "type": 4, + "status": 4, + "score": 95, + "experience": 68763, + "sex": "男", + "city": "天津市", + "description": "-", + "createTime": "2002-12-24 23:10:26", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 28, + "name": "User-28", + "type": 2, + "status": 4, + "score": 91, + "experience": 33513, + "sex": "女", + "city": "临沂市", + "description": "-", + "createTime": "2003-02-04 13:35:09", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 29, + "name": "User-29", + "type": 1, + "status": 1, + "score": 23, + "experience": 71620, + "sex": "男", + "city": "拉萨市", + "description": "-", + "createTime": "2020-12-22 10:11:11", + "parentId": null, + "children": [ + { + "id": 30, + "name": "User-30", + "type": 3, + "status": 3, + "score": 13, + "experience": 32398, + "sex": "女", + "city": "武威市", + "description": "-", + "createTime": "1982-10-26 11:27:06", + "parentId": null, + "children": [ + { + "id": 31, + "name": "User-31", + "type": 4, + "status": 1, + "score": 93, + "experience": 89245, + "sex": "男", + "city": "楚雄彝族自治州", + "description": "-", + "createTime": "1979-10-05 12:28:39", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 32, + "name": "User-32", + "type": 6, + "status": 4, + "score": 31, + "experience": 73504, + "sex": "女", + "city": "上海市", + "description": "-", + "createTime": "1991-01-11 06:55:04", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 33, + "name": "User-33", + "type": 5, + "status": 4, + "score": 27, + "experience": 95824, + "sex": "女", + "city": "鹰潭市", + "description": "-", + "createTime": "2009-06-17 04:15:06", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 34, + "name": "User-34", + "type": 4, + "status": 1, + "score": 37, + "experience": 63563, + "sex": "男", + "city": "红河哈尼族彝族自治州", + "description": "-", + "createTime": "1979-01-12 13:19:02", + "parentId": null, + "children": [ + { + "id": 35, + "name": "User-35", + "type": 4, + "status": 2, + "score": 81, + "experience": 46868, + "sex": "男", + "city": "德宏傣族景颇族自治州", + "description": "-", + "createTime": "1981-10-24 01:48:43", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 36, + "name": "User-36", + "type": 2, + "status": 1, + "score": 92, + "experience": 70256, + "sex": "女", + "city": "厦门市", + "description": "-", + "createTime": "1998-05-23 22:54:20", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 37, + "name": "User-37", + "type": 6, + "status": 2, + "score": 25, + "experience": 24689, + "sex": "女", + "city": "铁岭市", + "description": "-", + "createTime": "1980-05-03 04:42:32", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 38, + "name": "User-38", + "type": 4, + "status": 4, + "score": 83, + "experience": 96973, + "sex": "男", + "city": "武汉市", + "description": "-", + "createTime": "1979-11-04 03:18:53", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 39, + "name": "User-39", + "type": 4, + "status": 2, + "score": 37, + "experience": 23248, + "sex": "女", + "city": "黔东南苗族侗族自治州", + "description": "-", + "createTime": "2017-03-03 14:54:05", + "parentId": null, + "children": [ + { + "id": 40, + "name": "User-40", + "type": 5, + "status": 3, + "score": 53, + "experience": 89498, + "sex": "女", + "city": "吐鲁番地区", + "description": "-", + "createTime": "2005-01-14 16:36:11", + "parentId": null, + "children": [ + { + "id": 41, + "name": "User-41", + "type": 4, + "status": 3, + "score": 13, + "experience": 47225, + "sex": "女", + "city": "重庆市", + "description": "-", + "createTime": "1994-07-14 23:17:37", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 42, + "name": "User-42", + "type": 2, + "status": 2, + "score": 54, + "experience": 67027, + "sex": "男", + "city": "丽水市", + "description": "-", + "createTime": "2019-04-06 23:40:35", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 43, + "name": "User-43", + "type": 2, + "status": 2, + "score": 59, + "experience": 16009, + "sex": "男", + "city": "新界", + "description": "-", + "createTime": "1972-11-10 06:24:19", + "parentId": null, + "children": [ + { + "id": 44, + "name": "User-44", + "type": 6, + "status": 3, + "score": 26, + "experience": 48609, + "sex": "女", + "city": "东莞市", + "description": "-", + "createTime": "1993-04-21 21:27:36", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 45, + "name": "User-45", + "type": 1, + "status": 2, + "score": 28, + "experience": 13681, + "sex": "女", + "city": "常德市", + "description": "-", + "createTime": "2016-01-19 16:21:48", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 46, + "name": "User-46", + "type": 1, + "status": 2, + "score": 77, + "experience": 50932, + "sex": "男", + "city": "武汉市", + "description": "-", + "createTime": "1977-11-26 05:13:27", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 47, + "name": "User-47", + "type": 3, + "status": 1, + "score": 10, + "experience": 19599, + "sex": "男", + "city": "长治市", + "description": "-", + "createTime": "1980-10-28 04:42:20", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 48, + "name": "User-48", + "type": 6, + "status": 3, + "score": 50, + "experience": 63403, + "sex": "男", + "city": "香港岛", + "description": "-", + "createTime": "1974-05-23 17:23:13", + "parentId": null, + "children": [ + { + "id": 49, + "name": "User-49", + "type": 2, + "status": 1, + "score": 7, + "experience": 21161, + "sex": "男", + "city": "梅州市", + "description": "-", + "createTime": "1977-05-01 15:25:24", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 50, + "name": "User-50", + "type": 5, + "status": 2, + "score": 34, + "experience": 93741, + "sex": "男", + "city": "鸡西市", + "description": "-", + "createTime": "2018-04-14 23:13:38", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 51, + "name": "User-51", + "type": 2, + "status": 2, + "score": 92, + "experience": 36687, + "sex": "女", + "city": "温州市", + "description": "-", + "createTime": "1993-06-04 04:00:14", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 52, + "name": "User-52", + "type": 6, + "status": 2, + "score": 14, + "experience": 47342, + "sex": "男", + "city": "重庆市", + "description": "-", + "createTime": "1972-02-26 22:46:51", + "parentId": null, + "children": [ + { + "id": 53, + "name": "User-53", + "type": 1, + "status": 3, + "score": 97, + "experience": 40784, + "sex": "男", + "city": "邵阳市", + "description": "-", + "createTime": "1976-12-27 01:00:37", + "parentId": null, + "children": [ + { + "id": 54, + "name": "User-54", + "type": 4, + "status": 3, + "score": 93, + "experience": 10865, + "sex": "男", + "city": "龙岩市", + "description": "-", + "createTime": "2001-09-03 02:08:42", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 55, + "name": "User-55", + "type": 1, + "status": 2, + "score": 56, + "experience": 68232, + "sex": "男", + "city": "赣州市", + "description": "-", + "createTime": "1995-12-13 08:29:10", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 56, + "name": "User-56", + "type": 1, + "status": 2, + "score": 46, + "experience": 68897, + "sex": "女", + "city": "哈密地区", + "description": "-", + "createTime": "2007-08-05 00:54:06", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 57, + "name": "User-57", + "type": 4, + "status": 3, + "score": 68, + "experience": 58983, + "sex": "女", + "city": "北京市", + "description": "-", + "createTime": "1979-03-14 13:21:33", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 58, + "name": "User-58", + "type": 5, + "status": 1, + "score": 6, + "experience": 17343, + "sex": "男", + "city": "苗栗县", + "description": "-", + "createTime": "1996-01-21 18:43:11", + "parentId": null, + "children": [ + { + "id": 59, + "name": "User-59", + "type": 5, + "status": 2, + "score": 98, + "experience": 75262, + "sex": "女", + "city": "怀化市", + "description": "-", + "createTime": "2022-06-28 12:25:50", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 60, + "name": "User-60", + "type": 3, + "status": 3, + "score": 3, + "experience": 5817, + "sex": "女", + "city": "三亚市", + "description": "-", + "createTime": "1993-10-13 21:54:57", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 61, + "name": "User-61", + "type": 2, + "status": 3, + "score": 3, + "experience": 65548, + "sex": "男", + "city": "台州市", + "description": "-", + "createTime": "2017-11-06 13:16:14", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 62, + "name": "User-62", + "type": 5, + "status": 3, + "score": 37, + "experience": 33679, + "sex": "女", + "city": "辽源市", + "description": "-", + "createTime": "2002-10-19 22:53:23", + "parentId": null, + "children": [ + { + "id": 63, + "name": "User-63", + "type": 5, + "status": 3, + "score": 12, + "experience": 91033, + "sex": "女", + "city": "银川市", + "description": "-", + "createTime": "1973-04-17 07:33:35", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 64, + "name": "User-64", + "type": 3, + "status": 2, + "score": 87, + "experience": 30560, + "sex": "男", + "city": "昌都地区", + "description": "-", + "createTime": "1992-06-13 23:04:16", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 65, + "name": "User-65", + "type": 5, + "status": 2, + "score": 27, + "experience": 17982, + "sex": "女", + "city": "商洛市", + "description": "-", + "createTime": "2008-08-22 09:14:10", + "parentId": null, + "children": [ + { + "id": 66, + "name": "User-66", + "type": 3, + "status": 3, + "score": 91, + "experience": 47135, + "sex": "女", + "city": "离岛", + "description": "-", + "createTime": "1971-01-27 18:29:48", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 67, + "name": "User-67", + "type": 2, + "status": 1, + "score": 19, + "experience": 31440, + "sex": "女", + "city": "随州市", + "description": "-", + "createTime": "1979-10-14 10:30:22", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 68, + "name": "User-68", + "type": 5, + "status": 1, + "score": 88, + "experience": 48196, + "sex": "男", + "city": "承德市", + "description": "-", + "createTime": "1996-02-07 03:52:51", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 69, + "name": "User-69", + "type": 5, + "status": 1, + "score": 46, + "experience": 45341, + "sex": "女", + "city": "黔东南苗族侗族自治州", + "description": "-", + "createTime": "1995-05-08 20:53:45", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 70, + "name": "User-70", + "type": 3, + "status": 3, + "score": 19, + "experience": 66961, + "sex": "女", + "city": "固原市", + "description": "-", + "createTime": "1992-04-11 09:13:05", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 71, + "name": "User-71", + "type": 1, + "status": 3, + "score": 4, + "experience": 95553, + "sex": "女", + "city": "那曲地区", + "description": "-", + "createTime": "2019-07-31 00:30:49", + "parentId": null, + "children": [ + { + "id": 72, + "name": "User-72", + "type": 4, + "status": 4, + "score": 89, + "experience": 27410, + "sex": "男", + "city": "贺州市", + "description": "-", + "createTime": "1990-09-07 03:02:32", + "parentId": null, + "children": [ + { + "id": 73, + "name": "User-73", + "type": 6, + "status": 4, + "score": 93, + "experience": 84018, + "sex": "男", + "city": "雅安市", + "description": "-", + "createTime": "1972-01-18 02:00:25", + "parentId": null, + "children": [ + { + "id": 74, + "name": "User-74", + "type": 1, + "status": 4, + "score": 22, + "experience": 23025, + "sex": "女", + "city": "济南市", + "description": "-", + "createTime": "1991-12-18 23:27:07", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 75, + "name": "User-75", + "type": 5, + "status": 2, + "score": 75, + "experience": 58006, + "sex": "男", + "city": "新界", + "description": "-", + "createTime": "2004-03-03 09:28:00", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 76, + "name": "User-76", + "type": 2, + "status": 1, + "score": 79, + "experience": 86538, + "sex": "男", + "city": "果洛藏族自治州", + "description": "-", + "createTime": "2000-02-09 12:26:36", + "parentId": null, + "children": [ + { + "id": 77, + "name": "User-77", + "type": 2, + "status": 3, + "score": 60, + "experience": 61903, + "sex": "女", + "city": "呼伦贝尔市", + "description": "-", + "createTime": "1991-04-19 19:31:38", + "parentId": null, + "children": [ + { + "id": 78, + "name": "User-78", + "type": 4, + "status": 2, + "score": 67, + "experience": 10844, + "sex": "女", + "city": "鞍山市", + "description": "-", + "createTime": "2017-03-26 15:43:27", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 79, + "name": "User-79", + "type": 4, + "status": 2, + "score": 46, + "experience": 25354, + "sex": "男", + "city": "鸡西市", + "description": "-", + "createTime": "2018-01-30 03:43:56", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 80, + "name": "User-80", + "type": 5, + "status": 3, + "score": 13, + "experience": 30626, + "sex": "女", + "city": "玉溪市", + "description": "-", + "createTime": "1984-03-18 11:35:15", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 81, + "name": "User-81", + "type": 4, + "status": 3, + "score": 34, + "experience": 97578, + "sex": "女", + "city": "信阳市", + "description": "-", + "createTime": "2004-08-20 12:21:16", + "parentId": null, + "children": [ + { + "id": 82, + "name": "User-82", + "type": 6, + "status": 3, + "score": 38, + "experience": 7285, + "sex": "男", + "city": "舟山市", + "description": "-", + "createTime": "2001-03-16 07:04:17", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 83, + "name": "User-83", + "type": 3, + "status": 1, + "score": 51, + "experience": 41380, + "sex": "女", + "city": "佛山市", + "description": "-", + "createTime": "1998-06-01 18:21:57", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 84, + "name": "User-84", + "type": 2, + "status": 3, + "score": 37, + "experience": 19153, + "sex": "女", + "city": "宜宾市", + "description": "-", + "createTime": "1985-10-30 09:16:58", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 85, + "name": "User-85", + "type": 1, + "status": 1, + "score": 94, + "experience": 63371, + "sex": "男", + "city": "淮南市", + "description": "-", + "createTime": "2019-02-28 22:24:25", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 86, + "name": "User-86", + "type": 2, + "status": 4, + "score": 67, + "experience": 25315, + "sex": "男", + "city": "黔西南布依族苗族自治州", + "description": "-", + "createTime": "2011-11-29 07:06:26", + "parentId": null, + "children": [ + { + "id": 87, + "name": "User-87", + "type": 4, + "status": 4, + "score": 52, + "experience": 10751, + "sex": "女", + "city": "离岛", + "description": "-", + "createTime": "2022-08-05 23:21:27", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 88, + "name": "User-88", + "type": 4, + "status": 2, + "score": 65, + "experience": 38077, + "sex": "女", + "city": "黄石市", + "description": "-", + "createTime": "2007-12-12 15:47:51", + "parentId": null, + "children": [ + { + "id": 89, + "name": "User-89", + "type": 6, + "status": 2, + "score": 78, + "experience": 78006, + "sex": "男", + "city": "海口市", + "description": "-", + "createTime": "2007-10-20 18:46:39", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 90, + "name": "User-90", + "type": 3, + "status": 3, + "score": 66, + "experience": 91901, + "sex": "女", + "city": "上海市", + "description": "-", + "createTime": "1993-08-25 20:32:32", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 91, + "name": "User-91", + "type": 3, + "status": 3, + "score": 61, + "experience": 26129, + "sex": "女", + "city": "白山市", + "description": "-", + "createTime": "2002-01-04 16:12:16", + "parentId": null, + "children": [ + { + "id": 92, + "name": "User-92", + "type": 5, + "status": 3, + "score": 19, + "experience": 34580, + "sex": "男", + "city": "庆阳市", + "description": "-", + "createTime": "1987-02-28 01:36:59", + "parentId": null, + "children": [ + { + "id": 93, + "name": "User-93", + "type": 4, + "status": 4, + "score": 7, + "experience": 40805, + "sex": "女", + "city": "广州市", + "description": "-", + "createTime": "1986-02-23 02:19:01", + "parentId": null, + "children": [ + { + "id": 94, + "name": "User-94", + "type": 4, + "status": 2, + "score": 28, + "experience": 85777, + "sex": "男", + "city": "昌吉回族自治州", + "description": "-", + "createTime": "1987-02-21 18:49:17", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 95, + "name": "User-95", + "type": 3, + "status": 3, + "score": 33, + "experience": 50551, + "sex": "女", + "city": "三明市", + "description": "-", + "createTime": "2013-04-24 20:49:56", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 96, + "name": "User-96", + "type": 2, + "status": 2, + "score": 21, + "experience": 19915, + "sex": "女", + "city": "黄石市", + "description": "-", + "createTime": "2017-05-09 12:17:42", + "parentId": null, + "children": [ + { + "id": 97, + "name": "User-97", + "type": 3, + "status": 3, + "score": 25, + "experience": 22618, + "sex": "女", + "city": "汕尾市", + "description": "-", + "createTime": "1977-03-13 12:50:50", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 98, + "name": "User-98", + "type": 6, + "status": 2, + "score": 14, + "experience": 43979, + "sex": "女", + "city": "温州市", + "description": "-", + "createTime": "1991-04-10 20:49:11", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 99, + "name": "User-99", + "type": 3, + "status": 2, + "score": 82, + "experience": 24670, + "sex": "男", + "city": "贵港市", + "description": "-", + "createTime": "2012-12-19 08:28:58", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 100, + "name": "User-100", + "type": 4, + "status": 3, + "score": 64, + "experience": 84287, + "sex": "女", + "city": "张家界市", + "description": "-", + "createTime": "2000-09-28 06:14:34", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 101, + "name": "User-101", + "type": 3, + "status": 4, + "score": 68, + "experience": 39312, + "sex": "男", + "city": "玉树藏族自治州", + "description": "-", + "createTime": "2020-09-20 05:35:35", + "parentId": null, + "children": [ + { + "id": 102, + "name": "User-102", + "type": 3, + "status": 1, + "score": 74, + "experience": 16276, + "sex": "女", + "city": "延安市", + "description": "-", + "createTime": "1980-10-04 17:59:56", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 103, + "name": "User-103", + "type": 5, + "status": 2, + "score": 91, + "experience": 67473, + "sex": "男", + "city": "桃园县", + "description": "-", + "createTime": "2007-01-04 07:46:21", + "parentId": null, + "children": [ + { + "id": 104, + "name": "User-104", + "type": 1, + "status": 3, + "score": 3, + "experience": 91897, + "sex": "男", + "city": "营口市", + "description": "-", + "createTime": "2012-07-04 00:39:19", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 105, + "name": "User-105", + "type": 5, + "status": 2, + "score": 36, + "experience": 12972, + "sex": "男", + "city": "德州市", + "description": "-", + "createTime": "1993-06-04 03:52:48", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 106, + "name": "User-106", + "type": 2, + "status": 3, + "score": 60, + "experience": 58793, + "sex": "女", + "city": "开封市", + "description": "-", + "createTime": "2003-10-28 05:15:25", + "parentId": null, + "children": [ + { + "id": 107, + "name": "User-107", + "type": 6, + "status": 3, + "score": 70, + "experience": 88564, + "sex": "女", + "city": "大理白族自治州", + "description": "-", + "createTime": "1991-03-19 01:51:41", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 108, + "name": "User-108", + "type": 2, + "status": 2, + "score": 85, + "experience": 47918, + "sex": "男", + "city": "金门县", + "description": "-", + "createTime": "2015-06-18 04:18:20", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 109, + "name": "User-109", + "type": 2, + "status": 2, + "score": 15, + "experience": 72530, + "sex": "女", + "city": "上海市", + "description": "-", + "createTime": "1997-10-10 20:26:03", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 110, + "name": "User-110", + "type": 2, + "status": 2, + "score": 83, + "experience": 26538, + "sex": "男", + "city": "新竹市", + "description": "-", + "createTime": "2007-07-26 23:09:20", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 111, + "name": "User-111", + "type": 4, + "status": 2, + "score": 43, + "experience": 42129, + "sex": "男", + "city": "赤峰市", + "description": "-", + "createTime": "2015-12-17 09:23:18", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 112, + "name": "User-112", + "type": 4, + "status": 1, + "score": 74, + "experience": 61862, + "sex": "女", + "city": "潍坊市", + "description": "-", + "createTime": "2018-02-12 13:13:10", + "parentId": null, + "children": [ + { + "id": 113, + "name": "User-113", + "type": 1, + "status": 2, + "score": 65, + "experience": 52650, + "sex": "男", + "city": "德宏傣族景颇族自治州", + "description": "-", + "createTime": "2011-04-13 09:19:21", + "parentId": null, + "children": [ + { + "id": 114, + "name": "User-114", + "type": 3, + "status": 1, + "score": 82, + "experience": 53304, + "sex": "男", + "city": "益阳市", + "description": "-", + "createTime": "2021-09-25 03:56:20", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 115, + "name": "User-115", + "type": 3, + "status": 3, + "score": 32, + "experience": 1231, + "sex": "男", + "city": "娄底市", + "description": "-", + "createTime": "1984-10-28 18:20:13", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 116, + "name": "User-116", + "type": 3, + "status": 3, + "score": 89, + "experience": 65939, + "sex": "女", + "city": "昌都地区", + "description": "-", + "createTime": "1982-10-31 15:16:26", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 117, + "name": "User-117", + "type": 2, + "status": 4, + "score": 15, + "experience": 19416, + "sex": "女", + "city": "长治市", + "description": "-", + "createTime": "1990-04-09 13:29:32", + "parentId": null, + "children": [ + { + "id": 118, + "name": "User-118", + "type": 5, + "status": 2, + "score": 97, + "experience": 49212, + "sex": "女", + "city": "那曲地区", + "description": "-", + "createTime": "2018-12-15 15:50:57", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 119, + "name": "User-119", + "type": 2, + "status": 3, + "score": 82, + "experience": 19392, + "sex": "男", + "city": "海外", + "description": "-", + "createTime": "2016-03-01 20:52:25", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 120, + "name": "User-120", + "type": 5, + "status": 4, + "score": 51, + "experience": 78906, + "sex": "女", + "city": "九龙", + "description": "-", + "createTime": "1970-01-23 05:58:55", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 121, + "name": "User-121", + "type": 1, + "status": 2, + "score": 62, + "experience": 67953, + "sex": "女", + "city": "中山市", + "description": "-", + "createTime": "1980-03-31 19:15:07", + "parentId": null, + "children": [ + { + "id": 122, + "name": "User-122", + "type": 3, + "status": 2, + "score": 42, + "experience": 75027, + "sex": "男", + "city": "香港岛", + "description": "-", + "createTime": "1991-11-08 11:29:20", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 123, + "name": "User-123", + "type": 4, + "status": 1, + "score": 27, + "experience": 50832, + "sex": "男", + "city": "牡丹江市", + "description": "-", + "createTime": "1987-10-23 04:08:04", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 124, + "name": "User-124", + "type": 4, + "status": 3, + "score": 20, + "experience": 43261, + "sex": "男", + "city": "沧州市", + "description": "-", + "createTime": "2008-06-13 20:20:22", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 125, + "name": "User-125", + "type": 5, + "status": 2, + "score": 61, + "experience": 50399, + "sex": "女", + "city": "山南地区", + "description": "-", + "createTime": "2015-12-14 21:59:46", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 126, + "name": "User-126", + "type": 5, + "status": 2, + "score": 88, + "experience": 26933, + "sex": "女", + "city": "扬州市", + "description": "-", + "createTime": "1971-07-16 11:58:22", + "parentId": null, + "children": [ + { + "id": 127, + "name": "User-127", + "type": 1, + "status": 3, + "score": 86, + "experience": 15913, + "sex": "女", + "city": "宁波市", + "description": "-", + "createTime": "1979-06-01 23:52:36", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 128, + "name": "User-128", + "type": 5, + "status": 2, + "score": 61, + "experience": 74072, + "sex": "男", + "city": "乌兰察布市", + "description": "-", + "createTime": "1997-09-24 16:31:03", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 129, + "name": "User-129", + "type": 1, + "status": 3, + "score": 39, + "experience": 94200, + "sex": "男", + "city": "香港岛", + "description": "-", + "createTime": "1990-04-22 15:12:45", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 130, + "name": "User-130", + "type": 3, + "status": 3, + "score": 78, + "experience": 59502, + "sex": "男", + "city": "天津市", + "description": "-", + "createTime": "2011-01-03 07:20:25", + "parentId": null, + "children": [ + { + "id": 131, + "name": "User-131", + "type": 2, + "status": 3, + "score": 29, + "experience": 16545, + "sex": "男", + "city": "德阳市", + "description": "-", + "createTime": "2001-05-07 05:02:42", + "parentId": null, + "children": [ + { + "id": 132, + "name": "User-132", + "type": 3, + "status": 3, + "score": 53, + "experience": 8310, + "sex": "男", + "city": "襄阳市", + "description": "-", + "createTime": "1996-05-12 11:23:20", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 133, + "name": "User-133", + "type": 2, + "status": 3, + "score": 6, + "experience": 10610, + "sex": "男", + "city": "海口市", + "description": "-", + "createTime": "2013-05-11 17:50:19", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 134, + "name": "User-134", + "type": 4, + "status": 2, + "score": 67, + "experience": 70882, + "sex": "男", + "city": "遵义市", + "description": "-", + "createTime": "2014-03-04 22:55:14", + "parentId": null, + "children": [ + { + "id": 135, + "name": "User-135", + "type": 4, + "status": 3, + "score": 34, + "experience": 87799, + "sex": "女", + "city": "苗栗县", + "description": "-", + "createTime": "1990-04-13 14:44:06", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 136, + "name": "User-136", + "type": 6, + "status": 1, + "score": 66, + "experience": 58817, + "sex": "男", + "city": "大连市", + "description": "-", + "createTime": "1990-04-28 21:04:33", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 137, + "name": "User-137", + "type": 6, + "status": 2, + "score": 74, + "experience": 95991, + "sex": "男", + "city": "那曲地区", + "description": "-", + "createTime": "1994-06-04 16:01:44", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 138, + "name": "User-138", + "type": 1, + "status": 2, + "score": 99, + "experience": 71832, + "sex": "男", + "city": "阿里地区", + "description": "-", + "createTime": "1988-03-10 13:17:59", + "parentId": null, + "children": [ + { + "id": 139, + "name": "User-139", + "type": 6, + "status": 4, + "score": 36, + "experience": 86381, + "sex": "女", + "city": "菏泽市", + "description": "-", + "createTime": "2021-04-22 22:27:06", + "parentId": null, + "children": [ + { + "id": 140, + "name": "User-140", + "type": 6, + "status": 3, + "score": 36, + "experience": 43655, + "sex": "女", + "city": "通辽市", + "description": "-", + "createTime": "2001-12-20 09:14:52", + "parentId": null, + "children": [ + { + "id": 141, + "name": "User-141", + "type": 3, + "status": 2, + "score": 10, + "experience": 65976, + "sex": "女", + "city": "雅安市", + "description": "-", + "createTime": "1996-08-28 19:08:53", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 142, + "name": "User-142", + "type": 6, + "status": 4, + "score": 89, + "experience": 9828, + "sex": "男", + "city": "白山市", + "description": "-", + "createTime": "1985-09-21 14:58:12", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 143, + "name": "User-143", + "type": 6, + "status": 2, + "score": 1, + "experience": 84064, + "sex": "女", + "city": "重庆市", + "description": "-", + "createTime": "1973-11-04 08:28:54", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 144, + "name": "User-144", + "type": 5, + "status": 2, + "score": 46, + "experience": 51038, + "sex": "女", + "city": "南昌市", + "description": "-", + "createTime": "2010-01-27 02:05:48", + "parentId": null, + "children": [ + { + "id": 145, + "name": "User-145", + "type": 1, + "status": 3, + "score": 82, + "experience": 53656, + "sex": "女", + "city": "玉林市", + "description": "-", + "createTime": "1996-05-21 10:13:12", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 146, + "name": "User-146", + "type": 6, + "status": 4, + "score": 24, + "experience": 10700, + "sex": "男", + "city": "赤峰市", + "description": "-", + "createTime": "1998-03-08 12:08:46", + "parentId": null, + "children": [ + { + "id": 147, + "name": "User-147", + "type": 3, + "status": 1, + "score": 94, + "experience": 85060, + "sex": "女", + "city": "自贡市", + "description": "-", + "createTime": "2002-07-29 08:02:19", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 148, + "name": "User-148", + "type": 5, + "status": 2, + "score": 93, + "experience": 24255, + "sex": "男", + "city": "盐城市", + "description": "-", + "createTime": "2020-02-01 14:30:19", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 149, + "name": "User-149", + "type": 2, + "status": 4, + "score": 18, + "experience": 78062, + "sex": "女", + "city": "内江市", + "description": "-", + "createTime": "2003-02-26 08:59:31", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 150, + "name": "User-150", + "type": 4, + "status": 2, + "score": 13, + "experience": 48858, + "sex": "女", + "city": "上海市", + "description": "-", + "createTime": "1985-05-14 18:47:46", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 151, + "name": "User-151", + "type": 2, + "status": 3, + "score": 36, + "experience": 12807, + "sex": "男", + "city": "舟山市", + "description": "-", + "createTime": "2004-12-04 23:49:41", + "parentId": null, + "children": [ + { + "id": 152, + "name": "User-152", + "type": 2, + "status": 1, + "score": 60, + "experience": 38168, + "sex": "女", + "city": "喀什地区", + "description": "-", + "createTime": "1985-09-17 01:12:06", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 153, + "name": "User-153", + "type": 6, + "status": 1, + "score": 77, + "experience": 74590, + "sex": "男", + "city": "天津市", + "description": "-", + "createTime": "1970-02-02 10:02:55", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 154, + "name": "User-154", + "type": 5, + "status": 2, + "score": 92, + "experience": 76944, + "sex": "女", + "city": "临沧市", + "description": "-", + "createTime": "2013-12-06 17:42:05", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 155, + "name": "User-155", + "type": 3, + "status": 2, + "score": 29, + "experience": 78692, + "sex": "男", + "city": "秦皇岛市", + "description": "-", + "createTime": "2016-07-16 14:25:28", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 156, + "name": "User-156", + "type": 4, + "status": 2, + "score": 79, + "experience": 99919, + "sex": "女", + "city": "凉山彝族自治州", + "description": "-", + "createTime": "2010-07-15 10:21:19", + "parentId": null, + "children": [ + { + "id": 157, + "name": "User-157", + "type": 5, + "status": 3, + "score": 91, + "experience": 52354, + "sex": "男", + "city": "铜仁市", + "description": "-", + "createTime": "1977-03-20 09:15:54", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 158, + "name": "User-158", + "type": 5, + "status": 2, + "score": 22, + "experience": 51977, + "sex": "女", + "city": "宿州市", + "description": "-", + "createTime": "2016-11-17 20:01:17", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 159, + "name": "User-159", + "type": 1, + "status": 2, + "score": 43, + "experience": 46650, + "sex": "女", + "city": "沧州市", + "description": "-", + "createTime": "1987-09-05 06:14:08", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 160, + "name": "User-160", + "type": 6, + "status": 2, + "score": 57, + "experience": 7416, + "sex": "男", + "city": "澎湖县", + "description": "-", + "createTime": "1974-08-10 20:09:38", + "parentId": null, + "children": [ + { + "id": 161, + "name": "User-161", + "type": 5, + "status": 1, + "score": 53, + "experience": 12421, + "sex": "男", + "city": "阿克苏地区", + "description": "-", + "createTime": "1998-02-07 11:52:05", + "parentId": null, + "children": [ + { + "id": 162, + "name": "User-162", + "type": 3, + "status": 2, + "score": 100, + "experience": 19507, + "sex": "女", + "city": "随州市", + "description": "-", + "createTime": "2014-01-31 07:58:18", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 163, + "name": "User-163", + "type": 2, + "status": 2, + "score": 12, + "experience": 35637, + "sex": "男", + "city": "拉萨市", + "description": "-", + "createTime": "1983-10-02 10:31:23", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 164, + "name": "User-164", + "type": 6, + "status": 3, + "score": 65, + "experience": 42198, + "sex": "男", + "city": "香港岛", + "description": "-", + "createTime": "1987-12-22 14:34:32", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 165, + "name": "User-165", + "type": 2, + "status": 2, + "score": 73, + "experience": 40495, + "sex": "女", + "city": "天津市", + "description": "-", + "createTime": "1992-11-29 08:54:58", + "parentId": null, + "children": [ + { + "id": 166, + "name": "User-166", + "type": 3, + "status": 3, + "score": 83, + "experience": 62007, + "sex": "男", + "city": "重庆市", + "description": "-", + "createTime": "1992-10-01 19:14:47", + "parentId": null, + "children": [ + { + "id": 167, + "name": "User-167", + "type": 5, + "status": 4, + "score": 75, + "experience": 18137, + "sex": "女", + "city": "安顺市", + "description": "-", + "createTime": "2011-10-10 19:40:42", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 168, + "name": "User-168", + "type": 4, + "status": 3, + "score": 80, + "experience": 95421, + "sex": "男", + "city": "吴忠市", + "description": "-", + "createTime": "1972-10-27 14:58:59", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 169, + "name": "User-169", + "type": 6, + "status": 3, + "score": 10, + "experience": 2784, + "sex": "男", + "city": "伊春市", + "description": "-", + "createTime": "1992-07-06 23:16:42", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 170, + "name": "User-170", + "type": 5, + "status": 3, + "score": 68, + "experience": 54101, + "sex": "男", + "city": "贺州市", + "description": "-", + "createTime": "1970-01-21 21:50:15", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 171, + "name": "User-171", + "type": 5, + "status": 3, + "score": 38, + "experience": 51261, + "sex": "男", + "city": "上海市", + "description": "-", + "createTime": "1982-11-14 19:25:51", + "parentId": null, + "children": [ + { + "id": 172, + "name": "User-172", + "type": 3, + "status": 2, + "score": 4, + "experience": 73963, + "sex": "男", + "city": "徐州市", + "description": "-", + "createTime": "1993-04-15 02:08:57", + "parentId": null, + "children": [ + { + "id": 173, + "name": "User-173", + "type": 3, + "status": 1, + "score": 51, + "experience": 68723, + "sex": "女", + "city": "青岛市", + "description": "-", + "createTime": "2015-10-21 10:53:20", + "parentId": null, + "children": [ + { + "id": 174, + "name": "User-174", + "type": 3, + "status": 3, + "score": 68, + "experience": 62848, + "sex": "女", + "city": "周口市", + "description": "-", + "createTime": "2015-12-19 01:15:13", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 175, + "name": "User-175", + "type": 2, + "status": 3, + "score": 87, + "experience": 30871, + "sex": "女", + "city": "汕头市", + "description": "-", + "createTime": "1982-12-29 02:15:08", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 176, + "name": "User-176", + "type": 6, + "status": 2, + "score": 7, + "experience": 80089, + "sex": "男", + "city": "吉林市", + "description": "-", + "createTime": "2003-02-25 18:41:27", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 177, + "name": "User-177", + "type": 5, + "status": 4, + "score": 11, + "experience": 21782, + "sex": "女", + "city": "乌兰察布市", + "description": "-", + "createTime": "2014-10-10 20:45:07", + "parentId": null, + "children": [ + { + "id": 178, + "name": "User-178", + "type": 2, + "status": 2, + "score": 85, + "experience": 87330, + "sex": "女", + "city": "三亚市", + "description": "-", + "createTime": "1990-12-25 14:48:30", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 179, + "name": "User-179", + "type": 1, + "status": 1, + "score": 28, + "experience": 58951, + "sex": "男", + "city": "天津市", + "description": "-", + "createTime": "2007-09-14 00:42:03", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 180, + "name": "User-180", + "type": 5, + "status": 3, + "score": 74, + "experience": 83136, + "sex": "男", + "city": "抚州市", + "description": "-", + "createTime": "1990-08-17 16:49:05", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 181, + "name": "User-181", + "type": 1, + "status": 1, + "score": 37, + "experience": 40840, + "sex": "女", + "city": "三亚市", + "description": "-", + "createTime": "2000-05-12 08:01:46", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 182, + "name": "User-182", + "type": 1, + "status": 3, + "score": 40, + "experience": 86857, + "sex": "女", + "city": "三亚市", + "description": "-", + "createTime": "1981-03-30 01:02:44", + "parentId": null, + "children": [ + { + "id": 183, + "name": "User-183", + "type": 3, + "status": 1, + "score": 26, + "experience": 50377, + "sex": "男", + "city": "崇左市", + "description": "-", + "createTime": "1998-03-18 08:42:14", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 184, + "name": "User-184", + "type": 5, + "status": 3, + "score": 25, + "experience": 54099, + "sex": "女", + "city": "海口市", + "description": "-", + "createTime": "1980-01-26 12:11:04", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 185, + "name": "User-185", + "type": 6, + "status": 3, + "score": 87, + "experience": 80569, + "sex": "女", + "city": "运城市", + "description": "-", + "createTime": "2006-06-17 02:03:31", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 186, + "name": "User-186", + "type": 6, + "status": 3, + "score": 36, + "experience": 98204, + "sex": "男", + "city": "毕节市", + "description": "-", + "createTime": "1973-12-17 13:58:14", + "parentId": null, + "children": [ + { + "id": 187, + "name": "User-187", + "type": 2, + "status": 2, + "score": 50, + "experience": 6656, + "sex": "女", + "city": "常德市", + "description": "-", + "createTime": "1977-05-19 04:12:32", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 188, + "name": "User-188", + "type": 5, + "status": 2, + "score": 51, + "experience": 70421, + "sex": "男", + "city": "雅安市", + "description": "-", + "createTime": "1992-05-19 11:41:49", + "parentId": null, + "children": [ + { + "id": 189, + "name": "User-189", + "type": 3, + "status": 3, + "score": 86, + "experience": 10970, + "sex": "女", + "city": "陇南市", + "description": "-", + "createTime": "1986-07-20 03:40:31", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 190, + "name": "User-190", + "type": 6, + "status": 2, + "score": 81, + "experience": 35296, + "sex": "男", + "city": "重庆市", + "description": "-", + "createTime": "1994-08-03 11:42:24", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 191, + "name": "User-191", + "type": 2, + "status": 3, + "score": 36, + "experience": 60289, + "sex": "女", + "city": "滨州市", + "description": "-", + "createTime": "1981-11-09 18:18:23", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 192, + "name": "User-192", + "type": 1, + "status": 3, + "score": 80, + "experience": 84656, + "sex": "女", + "city": "果洛藏族自治州", + "description": "-", + "createTime": "1986-02-13 13:31:38", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 193, + "name": "User-193", + "type": 5, + "status": 2, + "score": 1, + "experience": 14433, + "sex": "男", + "city": "临汾市", + "description": "-", + "createTime": "2006-03-03 20:42:43", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 194, + "name": "User-194", + "type": 3, + "status": 4, + "score": 53, + "experience": 22962, + "sex": "女", + "city": "赣州市", + "description": "-", + "createTime": "2003-09-23 05:57:47", + "parentId": null, + "children": [ + { + "id": 195, + "name": "User-195", + "type": 3, + "status": 4, + "score": 78, + "experience": 80409, + "sex": "男", + "city": "晋城市", + "description": "-", + "createTime": "2022-04-16 13:45:56", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 196, + "name": "User-196", + "type": 3, + "status": 2, + "score": 83, + "experience": 35535, + "sex": "女", + "city": "庆阳市", + "description": "-", + "createTime": "2012-12-04 08:46:54", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 197, + "name": "User-197", + "type": 3, + "status": 2, + "score": 77, + "experience": 83542, + "sex": "女", + "city": "锦州市", + "description": "-", + "createTime": "2000-04-28 15:35:04", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 198, + "name": "User-198", + "type": 3, + "status": 4, + "score": 83, + "experience": 62489, + "sex": "女", + "city": "温州市", + "description": "-", + "createTime": "1989-12-11 18:50:29", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 199, + "name": "User-199", + "type": 2, + "status": 3, + "score": 81, + "experience": 74602, + "sex": "男", + "city": "自贡市", + "description": "-", + "createTime": "1996-10-30 22:16:31", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 200, + "name": "User-200", + "type": 6, + "status": 2, + "score": 31, + "experience": 28502, + "sex": "男", + "city": "宜兰县", + "description": "-", + "createTime": "1991-03-29 10:56:11", + "parentId": null, + "children": [ + { + "id": 201, + "name": "User-201", + "type": 5, + "status": 3, + "score": 23, + "experience": 45619, + "sex": "男", + "city": "商洛市", + "description": "-", + "createTime": "1997-11-04 08:13:06", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 202, + "name": "User-202", + "type": 5, + "status": 3, + "score": 7, + "experience": 7566, + "sex": "女", + "city": "随州市", + "description": "-", + "createTime": "1981-08-19 01:15:48", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 203, + "name": "User-203", + "type": 1, + "status": 3, + "score": 63, + "experience": 94626, + "sex": "男", + "city": "西宁市", + "description": "-", + "createTime": "1986-04-30 06:19:17", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 204, + "name": "User-204", + "type": 3, + "status": 3, + "score": 33, + "experience": 85619, + "sex": "女", + "city": "哈密地区", + "description": "-", + "createTime": "1977-09-15 16:53:05", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 205, + "name": "User-205", + "type": 3, + "status": 2, + "score": 95, + "experience": 66286, + "sex": "男", + "city": "安康市", + "description": "-", + "createTime": "1994-09-09 20:34:24", + "parentId": null, + "children": [ + { + "id": 206, + "name": "User-206", + "type": 5, + "status": 3, + "score": 48, + "experience": 93916, + "sex": "男", + "city": "攀枝花市", + "description": "-", + "createTime": "1996-05-16 00:14:46", + "parentId": null, + "children": [ + { + "id": 207, + "name": "User-207", + "type": 5, + "status": 3, + "score": 97, + "experience": 37124, + "sex": "女", + "city": "呼伦贝尔市", + "description": "-", + "createTime": "2009-06-18 14:55:19", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 208, + "name": "User-208", + "type": 2, + "status": 3, + "score": 77, + "experience": 37342, + "sex": "女", + "city": "九龙", + "description": "-", + "createTime": "2007-07-30 00:07:45", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 209, + "name": "User-209", + "type": 4, + "status": 1, + "score": 77, + "experience": 82846, + "sex": "男", + "city": "扬州市", + "description": "-", + "createTime": "1984-05-17 17:37:13", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 210, + "name": "User-210", + "type": 3, + "status": 1, + "score": 5, + "experience": 32873, + "sex": "女", + "city": "海外", + "description": "-", + "createTime": "1971-05-24 11:38:48", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 211, + "name": "User-211", + "type": 5, + "status": 2, + "score": 74, + "experience": 85519, + "sex": "男", + "city": "秦皇岛市", + "description": "-", + "createTime": "1970-01-17 07:29:46", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 212, + "name": "User-212", + "type": 4, + "status": 1, + "score": 33, + "experience": 80395, + "sex": "男", + "city": "白山市", + "description": "-", + "createTime": "2005-01-01 03:15:22", + "parentId": null, + "children": [ + { + "id": 213, + "name": "User-213", + "type": 4, + "status": 2, + "score": 55, + "experience": 17077, + "sex": "女", + "city": "毕节市", + "description": "-", + "createTime": "2020-01-13 21:32:59", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 214, + "name": "User-214", + "type": 3, + "status": 2, + "score": 38, + "experience": 57625, + "sex": "女", + "city": "海口市", + "description": "-", + "createTime": "2006-09-06 16:58:42", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 215, + "name": "User-215", + "type": 6, + "status": 2, + "score": 99, + "experience": 64592, + "sex": "女", + "city": "果洛藏族自治州", + "description": "-", + "createTime": "1987-07-29 17:20:38", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 216, + "name": "User-216", + "type": 5, + "status": 2, + "score": 44, + "experience": 69081, + "sex": "男", + "city": "天津市", + "description": "-", + "createTime": "1978-08-01 12:58:10", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 217, + "name": "User-217", + "type": 4, + "status": 2, + "score": 57, + "experience": 58398, + "sex": "男", + "city": "丹东市", + "description": "-", + "createTime": "1997-07-14 13:37:19", + "parentId": null, + "children": [ + { + "id": 218, + "name": "User-218", + "type": 3, + "status": 2, + "score": 11, + "experience": 65346, + "sex": "男", + "city": "百色市", + "description": "-", + "createTime": "1977-12-01 15:05:38", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 219, + "name": "User-219", + "type": 3, + "status": 2, + "score": 49, + "experience": 62808, + "sex": "女", + "city": "桃园县", + "description": "-", + "createTime": "1987-03-29 01:00:57", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 220, + "name": "User-220", + "type": 5, + "status": 2, + "score": 49, + "experience": 57282, + "sex": "女", + "city": "普洱市", + "description": "-", + "createTime": "2017-09-27 13:21:02", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 221, + "name": "User-221", + "type": 4, + "status": 2, + "score": 10, + "experience": 3034, + "sex": "男", + "city": "三沙市", + "description": "-", + "createTime": "1974-11-04 11:57:29", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 222, + "name": "User-222", + "type": 2, + "status": 4, + "score": 93, + "experience": 12235, + "sex": "男", + "city": "海南藏族自治州", + "description": "-", + "createTime": "1975-11-26 14:47:08", + "parentId": null, + "children": [ + { + "id": 223, + "name": "User-223", + "type": 1, + "status": 3, + "score": 61, + "experience": 49467, + "sex": "男", + "city": "澳门半岛", + "description": "-", + "createTime": "2023-04-09 00:28:41", + "parentId": null, + "children": [ + { + "id": 224, + "name": "User-224", + "type": 6, + "status": 3, + "score": 26, + "experience": 65118, + "sex": "女", + "city": "攀枝花市", + "description": "-", + "createTime": "2013-03-04 09:08:30", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 225, + "name": "User-225", + "type": 4, + "status": 1, + "score": 38, + "experience": 86342, + "sex": "男", + "city": "临夏回族自治州", + "description": "-", + "createTime": "1992-06-15 02:13:04", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 226, + "name": "User-226", + "type": 3, + "status": 2, + "score": 3, + "experience": 32179, + "sex": "女", + "city": "九龙", + "description": "-", + "createTime": "2009-03-13 06:48:47", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 227, + "name": "User-227", + "type": 1, + "status": 3, + "score": 96, + "experience": 38847, + "sex": "男", + "city": "梅州市", + "description": "-", + "createTime": "2020-04-16 09:43:04", + "parentId": null, + "children": [ + { + "id": 228, + "name": "User-228", + "type": 4, + "status": 4, + "score": 33, + "experience": 93101, + "sex": "女", + "city": "澳门半岛", + "description": "-", + "createTime": "1995-04-06 14:46:40", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 229, + "name": "User-229", + "type": 3, + "status": 1, + "score": 5, + "experience": 12628, + "sex": "男", + "city": "博尔塔拉蒙古自治州", + "description": "-", + "createTime": "2000-08-07 19:23:07", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 230, + "name": "User-230", + "type": 3, + "status": 3, + "score": 67, + "experience": 7013, + "sex": "女", + "city": "长治市", + "description": "-", + "createTime": "2002-12-14 10:11:11", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 231, + "name": "User-231", + "type": 4, + "status": 2, + "score": 37, + "experience": 61813, + "sex": "女", + "city": "博尔塔拉蒙古自治州", + "description": "-", + "createTime": "1970-06-27 23:24:44", + "parentId": null, + "children": [ + { + "id": 232, + "name": "User-232", + "type": 5, + "status": 2, + "score": 43, + "experience": 20578, + "sex": "男", + "city": "贵港市", + "description": "-", + "createTime": "1976-02-18 15:40:16", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 233, + "name": "User-233", + "type": 1, + "status": 2, + "score": 4, + "experience": 19621, + "sex": "女", + "city": "澳门半岛", + "description": "-", + "createTime": "2020-02-28 08:36:12", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 234, + "name": "User-234", + "type": 5, + "status": 2, + "score": 57, + "experience": 15400, + "sex": "男", + "city": "海东市", + "description": "-", + "createTime": "1976-11-22 23:04:12", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 235, + "name": "User-235", + "type": 4, + "status": 4, + "score": 18, + "experience": 36190, + "sex": "男", + "city": "海北藏族自治州", + "description": "-", + "createTime": "1978-01-30 19:43:36", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 236, + "name": "User-236", + "type": 5, + "status": 4, + "score": 69, + "experience": 51254, + "sex": "女", + "city": "北京市", + "description": "-", + "createTime": "2014-02-15 04:54:05", + "parentId": null, + "children": [ + { + "id": 237, + "name": "User-237", + "type": 2, + "status": 2, + "score": 99, + "experience": 34620, + "sex": "女", + "city": "河池市", + "description": "-", + "createTime": "2011-02-22 01:43:24", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 238, + "name": "User-238", + "type": 5, + "status": 3, + "score": 94, + "experience": 56612, + "sex": "女", + "city": "阿拉善盟", + "description": "-", + "createTime": "1996-04-13 12:44:00", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 239, + "name": "User-239", + "type": 2, + "status": 4, + "score": 27, + "experience": 1648, + "sex": "女", + "city": "长沙市", + "description": "-", + "createTime": "1989-06-01 07:38:48", + "parentId": null, + "children": [ + { + "id": 240, + "name": "User-240", + "type": 4, + "status": 2, + "score": 35, + "experience": 97895, + "sex": "男", + "city": "上海市", + "description": "-", + "createTime": "2002-04-19 15:07:58", + "parentId": null, + "children": [ + { + "id": 241, + "name": "User-241", + "type": 3, + "status": 1, + "score": 15, + "experience": 48229, + "sex": "女", + "city": "廊坊市", + "description": "-", + "createTime": "1997-04-12 20:09:02", + "parentId": null, + "children": [ + { + "id": 242, + "name": "User-242", + "type": 4, + "status": 4, + "score": 3, + "experience": 95377, + "sex": "女", + "city": "鹤壁市", + "description": "-", + "createTime": "1994-10-20 05:40:00", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 243, + "name": "User-243", + "type": 4, + "status": 1, + "score": 5, + "experience": 52728, + "sex": "男", + "city": "泉州市", + "description": "-", + "createTime": "2014-07-16 01:39:38", + "parentId": null, + "children": [ + { + "id": 244, + "name": "User-244", + "type": 5, + "status": 4, + "score": 80, + "experience": 51006, + "sex": "女", + "city": "离岛", + "description": "-", + "createTime": "1998-04-08 03:47:48", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 245, + "name": "User-245", + "type": 2, + "status": 4, + "score": 88, + "experience": 19853, + "sex": "男", + "city": "四平市", + "description": "-", + "createTime": "1998-08-15 16:27:36", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 246, + "name": "User-246", + "type": 6, + "status": 4, + "score": 52, + "experience": 63371, + "sex": "女", + "city": "肇庆市", + "description": "-", + "createTime": "2010-12-14 06:37:33", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 247, + "name": "User-247", + "type": 4, + "status": 2, + "score": 40, + "experience": 65183, + "sex": "男", + "city": "潍坊市", + "description": "-", + "createTime": "1975-07-09 23:34:16", + "parentId": null, + "children": [ + { + "id": 248, + "name": "User-248", + "type": 1, + "status": 3, + "score": 65, + "experience": 19079, + "sex": "男", + "city": "宜宾市", + "description": "-", + "createTime": "2013-03-01 13:33:15", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 249, + "name": "User-249", + "type": 6, + "status": 2, + "score": 80, + "experience": 37432, + "sex": "男", + "city": "临汾市", + "description": "-", + "createTime": "2003-02-04 13:42:18", + "parentId": null, + "children": [ + { + "id": 250, + "name": "User-250", + "type": 3, + "status": 3, + "score": 76, + "experience": 91326, + "sex": "女", + "city": "太原市", + "description": "-", + "createTime": "1997-03-04 20:12:43", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 251, + "name": "User-251", + "type": 1, + "status": 1, + "score": 29, + "experience": 93151, + "sex": "女", + "city": "营口市", + "description": "-", + "createTime": "1972-08-25 03:17:26", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 252, + "name": "User-252", + "type": 2, + "status": 2, + "score": 93, + "experience": 1882, + "sex": "女", + "city": "海外", + "description": "-", + "createTime": "2021-08-31 04:19:35", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 253, + "name": "User-253", + "type": 2, + "status": 4, + "score": 14, + "experience": 97501, + "sex": "女", + "city": "四平市", + "description": "-", + "createTime": "1991-03-16 04:18:45", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 254, + "name": "User-254", + "type": 3, + "status": 2, + "score": 43, + "experience": 77813, + "sex": "女", + "city": "那曲地区", + "description": "-", + "createTime": "2015-12-11 17:36:46", + "parentId": null, + "children": [ + { + "id": 255, + "name": "User-255", + "type": 4, + "status": 3, + "score": 7, + "experience": 88376, + "sex": "男", + "city": "贵阳市", + "description": "-", + "createTime": "1991-12-09 10:31:04", + "parentId": null, + "children": [ + { + "id": 256, + "name": "User-256", + "type": 5, + "status": 3, + "score": 24, + "experience": 66923, + "sex": "男", + "city": "海东市", + "description": "-", + "createTime": "2007-10-09 21:30:27", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 257, + "name": "User-257", + "type": 1, + "status": 2, + "score": 56, + "experience": 16966, + "sex": "女", + "city": "澳门半岛", + "description": "-", + "createTime": "1971-08-07 14:04:06", + "parentId": null, + "children": [ + { + "id": 258, + "name": "User-258", + "type": 3, + "status": 3, + "score": 43, + "experience": 68317, + "sex": "男", + "city": "杭州市", + "description": "-", + "createTime": "2000-06-23 23:43:22", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 259, + "name": "User-259", + "type": 3, + "status": 2, + "score": 19, + "experience": 65900, + "sex": "男", + "city": "杭州市", + "description": "-", + "createTime": "1972-11-02 03:14:29", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 260, + "name": "User-260", + "type": 2, + "status": 2, + "score": 33, + "experience": 26268, + "sex": "女", + "city": "包头市", + "description": "-", + "createTime": "1997-09-19 07:05:41", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 261, + "name": "User-261", + "type": 5, + "status": 1, + "score": 38, + "experience": 60653, + "sex": "女", + "city": "舟山市", + "description": "-", + "createTime": "1993-02-09 22:11:03", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 262, + "name": "User-262", + "type": 1, + "status": 2, + "score": 14, + "experience": 22944, + "sex": "男", + "city": "四平市", + "description": "-", + "createTime": "1979-09-12 21:59:09", + "parentId": null, + "children": [ + { + "id": 263, + "name": "User-263", + "type": 2, + "status": 2, + "score": 95, + "experience": 42730, + "sex": "男", + "city": "咸宁市", + "description": "-", + "createTime": "1971-07-06 13:35:24", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 264, + "name": "User-264", + "type": 3, + "status": 2, + "score": 8, + "experience": 81923, + "sex": "女", + "city": "铜陵市", + "description": "-", + "createTime": "2017-10-06 07:55:26", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 265, + "name": "User-265", + "type": 5, + "status": 2, + "score": 45, + "experience": 34796, + "sex": "男", + "city": "吉林市", + "description": "-", + "createTime": "1978-04-13 03:09:01", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 266, + "name": "User-266", + "type": 1, + "status": 2, + "score": 33, + "experience": 36888, + "sex": "女", + "city": "邵阳市", + "description": "-", + "createTime": "1986-08-10 22:38:19", + "parentId": null, + "children": [ + { + "id": 267, + "name": "User-267", + "type": 4, + "status": 3, + "score": 68, + "experience": 86617, + "sex": "女", + "city": "日照市", + "description": "-", + "createTime": "1988-09-20 23:59:03", + "parentId": null, + "children": [ + { + "id": 268, + "name": "User-268", + "type": 5, + "status": 2, + "score": 87, + "experience": 38669, + "sex": "男", + "city": "锦州市", + "description": "-", + "createTime": "2003-01-29 15:05:06", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 269, + "name": "User-269", + "type": 2, + "status": 4, + "score": 94, + "experience": 55962, + "sex": "女", + "city": "咸阳市", + "description": "-", + "createTime": "1999-05-31 06:27:39", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 270, + "name": "User-270", + "type": 4, + "status": 1, + "score": 67, + "experience": 37707, + "sex": "男", + "city": "吴忠市", + "description": "-", + "createTime": "1984-02-08 15:38:35", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 271, + "name": "User-271", + "type": 4, + "status": 2, + "score": 24, + "experience": 42013, + "sex": "女", + "city": "宝鸡市", + "description": "-", + "createTime": "2013-10-19 09:10:48", + "parentId": null, + "children": [ + { + "id": 272, + "name": "User-272", + "type": 5, + "status": 4, + "score": 7, + "experience": 86631, + "sex": "男", + "city": "黄石市", + "description": "-", + "createTime": "1983-02-15 19:44:19", + "parentId": null, + "children": [ + { + "id": 273, + "name": "User-273", + "type": 5, + "status": 1, + "score": 5, + "experience": 90121, + "sex": "女", + "city": "淮安市", + "description": "-", + "createTime": "1986-05-10 21:35:11", + "parentId": null, + "children": [ + { + "id": 274, + "name": "User-274", + "type": 1, + "status": 3, + "score": 97, + "experience": 74832, + "sex": "男", + "city": "四平市", + "description": "-", + "createTime": "1996-08-04 00:38:03", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 275, + "name": "User-275", + "type": 2, + "status": 2, + "score": 42, + "experience": 45129, + "sex": "男", + "city": "昌都地区", + "description": "-", + "createTime": "1983-01-14 21:58:01", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 276, + "name": "User-276", + "type": 4, + "status": 3, + "score": 2, + "experience": 40565, + "sex": "女", + "city": "普洱市", + "description": "-", + "createTime": "1998-03-28 19:05:33", + "parentId": null, + "children": [ + { + "id": 277, + "name": "User-277", + "type": 2, + "status": 1, + "score": 6, + "experience": 27426, + "sex": "男", + "city": "安顺市", + "description": "-", + "createTime": "2023-01-17 10:34:05", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 278, + "name": "User-278", + "type": 4, + "status": 2, + "score": 36, + "experience": 22014, + "sex": "男", + "city": "榆林市", + "description": "-", + "createTime": "1993-01-12 09:41:01", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 279, + "name": "User-279", + "type": 4, + "status": 1, + "score": 43, + "experience": 35756, + "sex": "女", + "city": "天津市", + "description": "-", + "createTime": "2002-03-20 11:28:25", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 280, + "name": "User-280", + "type": 2, + "status": 3, + "score": 94, + "experience": 59280, + "sex": "女", + "city": "松原市", + "description": "-", + "createTime": "2008-09-28 10:43:16", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 281, + "name": "User-281", + "type": 5, + "status": 3, + "score": 77, + "experience": 83642, + "sex": "男", + "city": "汕头市", + "description": "-", + "createTime": "2016-07-11 13:48:25", + "parentId": null, + "children": [ + { + "id": 282, + "name": "User-282", + "type": 2, + "status": 3, + "score": 16, + "experience": 75399, + "sex": "男", + "city": "南平市", + "description": "-", + "createTime": "2020-04-11 16:46:07", + "parentId": null, + "children": [ + { + "id": 283, + "name": "User-283", + "type": 2, + "status": 2, + "score": 53, + "experience": 57226, + "sex": "男", + "city": "北京市", + "description": "-", + "createTime": "1995-03-17 00:42:50", + "parentId": null, + "children": [ + { + "id": 284, + "name": "User-284", + "type": 3, + "status": 2, + "score": 19, + "experience": 84763, + "sex": "男", + "city": "澳门半岛", + "description": "-", + "createTime": "2017-08-15 18:16:29", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 285, + "name": "User-285", + "type": 3, + "status": 3, + "score": 39, + "experience": 67178, + "sex": "女", + "city": "南昌市", + "description": "-", + "createTime": "1992-07-26 05:30:51", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 286, + "name": "User-286", + "type": 2, + "status": 1, + "score": 90, + "experience": 92236, + "sex": "女", + "city": "茂名市", + "description": "-", + "createTime": "1987-09-26 10:59:31", + "parentId": null, + "children": [ + { + "id": 287, + "name": "User-287", + "type": 1, + "status": 1, + "score": 53, + "experience": 52079, + "sex": "男", + "city": "固原市", + "description": "-", + "createTime": "1995-01-10 00:22:30", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 288, + "name": "User-288", + "type": 2, + "status": 3, + "score": 65, + "experience": 87314, + "sex": "男", + "city": "离岛", + "description": "-", + "createTime": "1985-10-29 13:49:20", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 289, + "name": "User-289", + "type": 5, + "status": 1, + "score": 25, + "experience": 97910, + "sex": "男", + "city": "离岛", + "description": "-", + "createTime": "2007-04-29 01:09:20", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 290, + "name": "User-290", + "type": 4, + "status": 2, + "score": 41, + "experience": 19698, + "sex": "男", + "city": "新北市", + "description": "-", + "createTime": "2009-03-16 07:50:46", + "parentId": null, + "children": [ + { + "id": 291, + "name": "User-291", + "type": 6, + "status": 2, + "score": 14, + "experience": 60523, + "sex": "男", + "city": "拉萨市", + "description": "-", + "createTime": "2018-06-11 05:19:27", + "parentId": null, + "children": [ + { + "id": 292, + "name": "User-292", + "type": 5, + "status": 1, + "score": 14, + "experience": 87381, + "sex": "男", + "city": "驻马店市", + "description": "-", + "createTime": "2002-03-09 18:35:26", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 293, + "name": "User-293", + "type": 3, + "status": 3, + "score": 12, + "experience": 59971, + "sex": "男", + "city": "重庆市", + "description": "-", + "createTime": "2012-08-30 00:01:37", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 294, + "name": "User-294", + "type": 5, + "status": 1, + "score": 71, + "experience": 74009, + "sex": "男", + "city": "河池市", + "description": "-", + "createTime": "2012-03-24 15:15:00", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 295, + "name": "User-295", + "type": 3, + "status": 1, + "score": 6, + "experience": 87494, + "sex": "男", + "city": "永州市", + "description": "-", + "createTime": "1988-07-31 14:42:20", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 296, + "name": "User-296", + "type": 4, + "status": 3, + "score": 88, + "experience": 78667, + "sex": "女", + "city": "九龙", + "description": "-", + "createTime": "2007-06-11 13:02:07", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 297, + "name": "User-297", + "type": 3, + "status": 2, + "score": 17, + "experience": 11516, + "sex": "女", + "city": "郴州市", + "description": "-", + "createTime": "1983-11-27 13:30:47", + "parentId": null, + "children": [ + { + "id": 298, + "name": "User-298", + "type": 5, + "status": 3, + "score": 97, + "experience": 44819, + "sex": "男", + "city": "上海市", + "description": "-", + "createTime": "1988-07-02 10:53:42", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 299, + "name": "User-299", + "type": 2, + "status": 4, + "score": 88, + "experience": 53431, + "sex": "男", + "city": "香港岛", + "description": "-", + "createTime": "2022-12-23 15:25:05", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 300, + "name": "User-300", + "type": 5, + "status": 3, + "score": 69, + "experience": 24017, + "sex": "女", + "city": "重庆市", + "description": "-", + "createTime": "2003-12-12 04:04:15", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 301, + "name": "User-301", + "type": 6, + "status": 3, + "score": 72, + "experience": 73262, + "sex": "男", + "city": "北京市", + "description": "-", + "createTime": "1985-11-06 02:27:38", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 302, + "name": "User-302", + "type": 5, + "status": 3, + "score": 32, + "experience": 21824, + "sex": "女", + "city": "银川市", + "description": "-", + "createTime": "2012-09-12 05:57:24", + "parentId": null, + "children": [ + { + "id": 303, + "name": "User-303", + "type": 3, + "status": 4, + "score": 8, + "experience": 68289, + "sex": "女", + "city": "镇江市", + "description": "-", + "createTime": "2010-11-13 05:13:14", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 304, + "name": "User-304", + "type": 4, + "status": 3, + "score": 81, + "experience": 76781, + "sex": "男", + "city": "保山市", + "description": "-", + "createTime": "1975-08-13 20:37:37", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 305, + "name": "User-305", + "type": 2, + "status": 2, + "score": 39, + "experience": 17590, + "sex": "女", + "city": "大理白族自治州", + "description": "-", + "createTime": "1974-06-07 22:14:59", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 306, + "name": "User-306", + "type": 4, + "status": 4, + "score": 39, + "experience": 72010, + "sex": "女", + "city": "锡林郭勒盟", + "description": "-", + "createTime": "1984-05-30 20:38:58", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 307, + "name": "User-307", + "type": 5, + "status": 4, + "score": 52, + "experience": 56848, + "sex": "女", + "city": "阿里地区", + "description": "-", + "createTime": "1970-01-10 06:41:10", + "parentId": null, + "children": [ + { + "id": 308, + "name": "User-308", + "type": 4, + "status": 2, + "score": 45, + "experience": 48753, + "sex": "女", + "city": "重庆市", + "description": "-", + "createTime": "1973-06-22 14:59:33", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 309, + "name": "User-309", + "type": 2, + "status": 4, + "score": 45, + "experience": 3713, + "sex": "男", + "city": "郴州市", + "description": "-", + "createTime": "1997-01-21 13:06:44", + "parentId": null, + "children": [ + { + "id": 310, + "name": "User-310", + "type": 2, + "status": 2, + "score": 33, + "experience": 80153, + "sex": "男", + "city": "上海市", + "description": "-", + "createTime": "1982-05-27 16:55:13", + "parentId": null, + "children": [ + { + "id": 311, + "name": "User-311", + "type": 1, + "status": 3, + "score": 67, + "experience": 92653, + "sex": "男", + "city": "乌海市", + "description": "-", + "createTime": "2012-12-19 19:14:46", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 312, + "name": "User-312", + "type": 5, + "status": 2, + "score": 40, + "experience": 99153, + "sex": "女", + "city": "巴中市", + "description": "-", + "createTime": "1978-06-08 02:16:05", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 313, + "name": "User-313", + "type": 2, + "status": 1, + "score": 7, + "experience": 66644, + "sex": "女", + "city": "贵阳市", + "description": "-", + "createTime": "1993-12-13 16:21:03", + "parentId": null, + "children": [ + { + "id": 314, + "name": "User-314", + "type": 6, + "status": 1, + "score": 48, + "experience": 69828, + "sex": "男", + "city": "重庆市", + "description": "-", + "createTime": "1977-09-05 20:19:37", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + }, + { + "id": 315, + "name": "User-315", + "type": 5, + "status": 2, + "score": 30, + "experience": 82185, + "sex": "女", + "city": "安康市", + "description": "-", + "createTime": "2014-10-31 23:50:51", + "parentId": null, + "children": [ + { + "id": 316, + "name": "User-316", + "type": 1, + "status": 4, + "score": 45, + "experience": 4589, + "sex": "女", + "city": "铜仁市", + "description": "-", + "createTime": "2005-09-08 14:35:12", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 317, + "name": "User-317", + "type": 4, + "status": 2, + "score": 48, + "experience": 55422, + "sex": "女", + "city": "宿州市", + "description": "-", + "createTime": "1992-12-31 05:06:18", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 318, + "name": "User-318", + "type": 5, + "status": 1, + "score": 80, + "experience": 3519, + "sex": "男", + "city": "阜阳市", + "description": "-", + "createTime": "1998-11-01 22:11:08", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 319, + "name": "User-319", + "type": 4, + "status": 2, + "score": 64, + "experience": 10387, + "sex": "女", + "city": "新界", + "description": "-", + "createTime": "1995-02-23 03:01:51", + "parentId": null, + "children": [ + { + "id": 320, + "name": "User-320", + "type": 5, + "status": 2, + "score": 92, + "experience": 63866, + "sex": "女", + "city": "新余市", + "description": "-", + "createTime": "2006-09-13 05:20:48", + "parentId": null, + "children": [ + { + "id": 321, + "name": "User-321", + "type": 6, + "status": 2, + "score": 36, + "experience": 32018, + "sex": "男", + "city": "嘉兴市", + "description": "-", + "createTime": "2012-12-23 12:41:04", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 322, + "name": "User-322", + "type": 5, + "status": 3, + "score": 58, + "experience": 86419, + "sex": "女", + "city": "株洲市", + "description": "-", + "createTime": "2010-01-31 03:49:51", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 323, + "name": "User-323", + "type": 1, + "status": 4, + "score": 84, + "experience": 76545, + "sex": "女", + "city": "海北藏族自治州", + "description": "-", + "createTime": "2020-06-28 07:50:36", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 324, + "name": "User-324", + "type": 4, + "status": 2, + "score": 51, + "experience": 28561, + "sex": "男", + "city": "三沙市", + "description": "-", + "createTime": "2021-01-02 13:13:22", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + } + ], + "isParent": true + }, + { + "id": 325, + "name": "User-325", + "type": 3, + "status": 3, + "score": 62, + "experience": 94793, + "sex": "女", + "city": "嘉峪关市", + "description": "-", + "createTime": "1990-02-26 16:03:01", + "parentId": null, + "children": [ + { + "id": 326, + "name": "User-326", + "type": 4, + "status": 4, + "score": 70, + "experience": 19861, + "sex": "男", + "city": "佳木斯市", + "description": "-", + "createTime": "1971-09-13 13:37:06", + "parentId": null, + "children": [ + { + "id": 327, + "name": "User-327", + "type": 1, + "status": 2, + "score": 10, + "experience": 1866, + "sex": "女", + "city": "重庆市", + "description": "-", + "createTime": "1991-08-01 14:53:52", + "parentId": null, + "children": [ + { + "id": 328, + "name": "User-328", + "type": 6, + "status": 3, + "score": 97, + "experience": 81309, + "sex": "女", + "city": "重庆市", + "description": "-", + "createTime": "1973-06-11 16:06:26", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 329, + "name": "User-329", + "type": 5, + "status": 3, + "score": 36, + "experience": 2334, + "sex": "女", + "city": "新界", + "description": "-", + "createTime": "1989-01-06 11:00:47", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 330, + "name": "User-330", + "type": 4, + "status": 2, + "score": 75, + "experience": 19904, + "sex": "女", + "city": "朔州市", + "description": "-", + "createTime": "2003-06-01 14:59:33", + "parentId": null, + "children": [], + "isParent": false + }, + { + "id": 331, + "name": "User-331", + "type": 6, + "status": 4, + "score": 98, + "experience": 30101, + "sex": "女", + "city": "安康市", + "description": "-", + "createTime": "2003-05-14 13:25:56", + "parentId": null, + "children": [], + "isParent": false + } + ], + "isParent": true + } + ], + "isParent": true + } + ], + "isParent": true + } + ] +} \ No newline at end of file diff --git a/view/component/table.html b/view/component/table.html index c16d6cd..631a86a 100644 --- a/view/component/table.html +++ b/view/component/table.html @@ -13,8 +13,12 @@ -
                                      -
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + + + + + + \ No newline at end of file -- Gitee From 3265a0b11069e4206eee40285f27042fc9b9e9b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Fri, 30 Jun 2023 00:55:04 +0800 Subject: [PATCH 039/141] update --- admin/css/admin.dark.css | 40 + admin/css/other/console.css | 81 + admin/data/menu.json | 25 +- admin/data/table.json | 278 -- admin/data/treeTable.json | 5078 ------------------------- component/pear/css/module/tabPage.css | 20 +- config/pear.config.yml | 6 +- view/component/table.html | 379 -- view/component/treeTable.html | 131 - view/console/console.html | 537 +++ view/console/console1.html | 0 view/console/console2.html | 0 12 files changed, 673 insertions(+), 5902 deletions(-) create mode 100644 admin/css/other/console.css delete mode 100644 admin/data/table.json delete mode 100644 admin/data/treeTable.json delete mode 100644 view/component/table.html delete mode 100644 view/component/treeTable.html create mode 100644 view/console/console.html delete mode 100644 view/console/console1.html delete mode 100644 view/console/console2.html diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 10be7ef..654b9d4 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -166,6 +166,30 @@ background-color: rgba(255,255,255,.08); } +/** table */ +.pear-admin-dark .layui-table { + background-color: transparent; +} + +.pear-admin-dark .layui-table tr:hover { + background-color: #141414 !important; +} + +.pear-admin-dark .layui-table td, +.pear-admin-dark .layui-table th, +.pear-admin-dark .layui-table-view, +.pear-admin-dark .layui-table-page, +.pear-admin-dark .layui-table-header { + border-color: rgba(0, 0, 0, .40) !important; +} + +.pear-admin-dark .layui-laypage select, +.pear-admin-dark .layui-laypage button { + border-color: rgba(0, 0, 0, .40) !important; + color: #ffffff !important; + background-color: transparent; +} + /** panel */ .pear-admin-dark .layui-panel { background-color: #1d1e1f !important; @@ -188,6 +212,22 @@ background-color: #1f1f1f !important; } +/** console */ + +.pear-admin-dark .deputy, +.pear-admin-dark .shortcut-menu { + background-color: #141414 !important; +} + +.pear-admin-dark .deputy:hover, +.pear-admin-dark .shortcut-menu:hover { + box-shadow: 0 3px 4px rgba(0, 0, 0, .6) !important; +} + +.pear-admin-dark .message-board li { + border-bottom: 1px solid rgba(0, 0, 0, .40) !important; +} + /** success failure */ .pear-admin-dark .pear-result .content { background-color: rgba(153, 153, 153, 0.12); diff --git a/admin/css/other/console.css b/admin/css/other/console.css new file mode 100644 index 0000000..af9930b --- /dev/null +++ b/admin/css/other/console.css @@ -0,0 +1,81 @@ + +.shortcut-menu { + width: 100%; + height: 66px; + background-color: #F8F8F8; + display: inline-block; + border-radius: 5px; + text-align: center; + margin-bottom: 3px; +} + +.shortcut-menu i { + font-size: 30px; + height: 66px; + line-height: 66px; +} + +.shortcut-menu:hover { + box-shadow: 2px 0 8px 0 lightgray !important; +} + +.shortcut-menu-label { + width: 100%; + display: inline-block; + text-align: center; +} + +.deputy { + width: 100%; + height: 90px; + background-color: #F8F8F8; + display: inline-block; + border-radius: 5px; + text-align: center; + margin-bottom: 3px; +} + +.deputy:hover { + box-shadow: 2px 0 8px 0 lightgray !important; +} + +.deputy .deputy-label { + color: gray; + margin-top: 14px; + font-size: 14px; +} + +.deputy .deputy-count { + margin-top: 12px; + color: var(--global-primary-color); + font-size: 30px; +} + +.message-board { + padding: 0 10px 10px; +} + +.message-board li { + position: relative; + padding: 10px 0; + border-bottom: 1px solid #EEE; +} + +.message-board li p { + padding-bottom: 10px; + padding-top: 3px; +} + +.message-board li>span { + color: #999; + height: 24px; + line-height: 24px; +} + +.message-board .message-board-reply { + position: absolute; + right: 20px; + bottom: 12px; + height: 24px; + line-height: 24px; +} \ No newline at end of file diff --git a/admin/data/menu.json b/admin/data/menu.json index 6055317..c0bb2ed 100644 --- a/admin/data/menu.json +++ b/admin/data/menu.json @@ -4,19 +4,12 @@ "icon": "layui-icon layui-icon-console", "type": 0, "children": [{ - "id": 10, - "title": "控制后台", - "icon": "layui-icon layui-icon-console", - "type": 1, - "openType": "_component", - "href": "view/console/console1.html" - }, { - "id": 13, + "id": "11", "title": "数据分析", "icon": "layui-icon layui-icon-console", "type": 1, "openType": "_component", - "href": "view/console/console2.html" + "href": "view/console/console.html" }] }, { @@ -26,20 +19,6 @@ "type": 0, "children": [ { - "id": 21, - "title": "数据表格", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_component", - "href": "view/component/table.html" - },{ - "id": 22, - "title": "树形表格", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_component", - "href": "view/component/treeTable.html" - },{ "id": 23, "title": "24 栅格", "icon": "layui-icon layui-icon-face-smile", diff --git a/admin/data/table.json b/admin/data/table.json deleted file mode 100644 index a1af523..0000000 --- a/admin/data/table.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "code": 0 - ,"msg": "" - ,"count": 1000 - ,"totalRow": { - "era": { - "tang": "2", - "song": "2", - "xian": "20" - } - } - ,"data": [{ - "id": "10001" - ,"username": "李白" - ,"email": "test1@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "君不见,黄河之水天上来,奔流到海不复回。 君不见,高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 岑夫子,丹丘生,将进酒,杯莫停。 与君歌一曲,请君为我倾耳听。(倾耳听 一作:侧耳听) 钟鼓馔玉不足贵,但愿长醉不复醒。(不足贵 一作:何足贵;不复醒 一作:不愿醒/不用醒) 古来圣贤皆寂寞,惟有饮者留其名。(古来 一作:自古;惟 通:唯) 陈王昔时宴平乐,斗酒十千恣欢谑。 主人何为言少钱,径须沽取对君酌。 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。" - ,"experience": "12" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10002" - ,"username": "杜甫" - ,"email": "test2@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "舍南舍北皆春水,但见群鸥日日来。花径不曾缘客扫,蓬门今始为君开。盘飧市远无兼味,樽酒家贫只旧醅。肯与邻翁相对饮,隔篱呼取尽余杯。" - ,"experience": "116" - ,"ip": "192.168.0.8" - ,"checkin": "108" - ,"joinTime": "2016-10-14" - ,"LAY_CHECKED": true - }, { - "id": "10003" - ,"username": "苏轼" - ,"email": "test3@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "大江东去,浪淘尽,千古风流人物。故垒西边,人道是,三国周郎赤壁。乱石穿空,惊涛拍岸,卷起千堆雪。江山如画,一时多少豪杰。遥想公瑾当年,小乔初嫁了,雄姿英发。羽扇纶巾,谈笑间,樯橹灰飞烟灭。故国神游,多情应笑我,早生华发。人生如梦,一尊还酹江月。" - ,"experience": "65" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10004" - ,"username": "李清照" - ,"email": "test4@email.com" - ,"sex": "女" - ,"city": "浙江杭州" - ,"sign": "昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否,知否?应是绿肥红瘦。" - ,"experience": "777" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10005" - ,"username": "冰心" - ,"email": "test5@email.com" - ,"sex": "女" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "86" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10006" - ,"username": "张三" - ,"email": "test6@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "12" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10007" - ,"username": "张三7" - ,"email": "test7@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "16" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10008" - ,"username": "张三8" - ,"email": "test8@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10009" - ,"username": "张三9" - ,"email": "test9@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10010" - ,"username": "张三10" - ,"email": "test10@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10011" - ,"username": "张三11" - ,"email": "test11@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10012" - ,"username": "张三12" - ,"email": "test12@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10013" - ,"username": "张三13" - ,"email": "test13@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10014" - ,"username": "张三14" - ,"email": "test14@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10015" - ,"username": "张三15" - ,"email": "test15@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10016" - ,"username": "张三16" - ,"email": "test16@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10017" - ,"username": "张三17" - ,"email": "test17@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10018" - ,"username": "张三18" - ,"email": "test18@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10019" - ,"username": "张三19" - ,"email": "test19@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10020" - ,"username": "张三20" - ,"email": "test20@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10021" - ,"username": "张三21" - ,"email": "test21@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10022" - ,"username": "张三22" - ,"email": "test22@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10023" - ,"username": "张三23" - ,"email": "test23@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }, { - "id": "10024" - ,"username": "张三24" - ,"email": "test24@email.com" - ,"sex": "男" - ,"city": "浙江杭州" - ,"sign": "保持真善美,温和待人" - ,"experience": "106" - ,"ip": "192.168.0.8" - ,"checkin": "106" - ,"joinTime": "2016-10-14" - }] - } \ No newline at end of file diff --git a/admin/data/treeTable.json b/admin/data/treeTable.json deleted file mode 100644 index a861d6a..0000000 --- a/admin/data/treeTable.json +++ /dev/null @@ -1,5078 +0,0 @@ -{ - "code": 0, - "count": 1000, - "data": [ - { - "id": 1, - "name": "User-1", - "type": 4, - "status": 2, - "score": 28, - "experience": 54981, - "sex": "男", - "city": "丽江市", - "description": "-", - "createTime": "2014-06-04 12:29:55", - "parentId": null, - "children": [ - { - "id": 2, - "name": "User-2", - "type": 2, - "status": 3, - "score": 75, - "experience": 43884, - "sex": "女", - "city": "大理白族自治州", - "description": "-", - "createTime": "1971-11-03 19:15:43", - "parentId": null, - "children": [ - { - "id": 3, - "name": "User-3", - "type": 2, - "status": 3, - "score": 72, - "experience": 75912, - "sex": "女", - "city": "渭南市", - "description": "-", - "createTime": "2022-01-17 01:48:02", - "parentId": null, - "children": [ - { - "id": 4, - "name": "User-4", - "type": 3, - "status": 3, - "score": 21, - "experience": 23198, - "sex": "男", - "city": "海外", - "description": "-", - "createTime": "1986-11-06 23:56:45", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 5, - "name": "User-5", - "type": 3, - "status": 3, - "score": 89, - "experience": 25710, - "sex": "女", - "city": "盐城市", - "description": "-", - "createTime": "2007-10-03 21:44:59", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 6, - "name": "User-6", - "type": 2, - "status": 4, - "score": 70, - "experience": 51144, - "sex": "男", - "city": "益阳市", - "description": "-", - "createTime": "2017-02-21 00:26:02", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 7, - "name": "User-7", - "type": 5, - "status": 3, - "score": 24, - "experience": 64919, - "sex": "男", - "city": "贵港市", - "description": "-", - "createTime": "1981-05-14 17:52:03", - "parentId": null, - "children": [ - { - "id": 8, - "name": "User-8", - "type": 6, - "status": 2, - "score": 2, - "experience": 80656, - "sex": "男", - "city": "宿迁市", - "description": "-", - "createTime": "1984-05-24 20:44:26", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 9, - "name": "User-9", - "type": 6, - "status": 2, - "score": 58, - "experience": 2414, - "sex": "女", - "city": "宿州市", - "description": "-", - "createTime": "2015-05-06 00:39:19", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 10, - "name": "User-10", - "type": 4, - "status": 2, - "score": 89, - "experience": 97592, - "sex": "女", - "city": "钦州市", - "description": "-", - "createTime": "1985-05-26 03:50:09", - "parentId": null, - "children": [ - { - "id": 11, - "name": "User-11", - "type": 2, - "status": 2, - "score": 85, - "experience": 37406, - "sex": "女", - "city": "黄南藏族自治州", - "description": "-", - "createTime": "2022-10-09 11:51:44", - "parentId": null, - "children": [ - { - "id": 12, - "name": "User-12", - "type": 4, - "status": 3, - "score": 40, - "experience": 13714, - "sex": "女", - "city": "黔东南苗族侗族自治州", - "description": "-", - "createTime": "1991-09-01 09:19:11", - "parentId": null, - "children": [ - { - "id": 13, - "name": "User-13", - "type": 5, - "status": 4, - "score": 47, - "experience": 89189, - "sex": "男", - "city": "金昌市", - "description": "-", - "createTime": "1978-12-03 09:59:56", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 14, - "name": "User-14", - "type": 2, - "status": 3, - "score": 53, - "experience": 10739, - "sex": "女", - "city": "上海市", - "description": "-", - "createTime": "1989-03-31 19:08:12", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 15, - "name": "User-15", - "type": 5, - "status": 2, - "score": 76, - "experience": 40019, - "sex": "男", - "city": "遵义市", - "description": "-", - "createTime": "1996-12-12 16:34:05", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 16, - "name": "User-16", - "type": 3, - "status": 1, - "score": 81, - "experience": 30559, - "sex": "男", - "city": "开封市", - "description": "-", - "createTime": "1979-09-24 03:53:59", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 17, - "name": "User-17", - "type": 6, - "status": 4, - "score": 16, - "experience": 56549, - "sex": "女", - "city": "宁波市", - "description": "-", - "createTime": "1994-06-30 15:07:08", - "parentId": null, - "children": [ - { - "id": 18, - "name": "User-18", - "type": 2, - "status": 2, - "score": 22, - "experience": 31311, - "sex": "男", - "city": "黔东南苗族侗族自治州", - "description": "-", - "createTime": "1995-10-07 06:13:07", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 19, - "name": "User-19", - "type": 3, - "status": 1, - "score": 23, - "experience": 63334, - "sex": "女", - "city": "离岛", - "description": "-", - "createTime": "2002-09-25 11:36:07", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 20, - "name": "User-20", - "type": 2, - "status": 2, - "score": 30, - "experience": 5650, - "sex": "男", - "city": "许昌市", - "description": "-", - "createTime": "2001-08-08 14:25:42", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 21, - "name": "User-21", - "type": 2, - "status": 1, - "score": 74, - "experience": 71912, - "sex": "女", - "city": "海北藏族自治州", - "description": "-", - "createTime": "2016-10-18 15:54:30", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 22, - "name": "User-22", - "type": 2, - "status": 3, - "score": 87, - "experience": 65197, - "sex": "女", - "city": "定西市", - "description": "-", - "createTime": "1991-01-09 18:26:58", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 23, - "name": "User-23", - "type": 2, - "status": 4, - "score": 73, - "experience": 27868, - "sex": "男", - "city": "威海市", - "description": "-", - "createTime": "1981-10-13 18:52:11", - "parentId": null, - "children": [ - { - "id": 24, - "name": "User-24", - "type": 4, - "status": 2, - "score": 99, - "experience": 69882, - "sex": "女", - "city": "重庆市", - "description": "-", - "createTime": "1990-09-26 19:08:20", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 25, - "name": "User-25", - "type": 3, - "status": 2, - "score": 82, - "experience": 25619, - "sex": "女", - "city": "澳门半岛", - "description": "-", - "createTime": "1991-02-16 04:19:14", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 26, - "name": "User-26", - "type": 4, - "status": 2, - "score": 2, - "experience": 8058, - "sex": "男", - "city": "阿里地区", - "description": "-", - "createTime": "2002-10-19 09:44:05", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 27, - "name": "User-27", - "type": 4, - "status": 4, - "score": 95, - "experience": 68763, - "sex": "男", - "city": "天津市", - "description": "-", - "createTime": "2002-12-24 23:10:26", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 28, - "name": "User-28", - "type": 2, - "status": 4, - "score": 91, - "experience": 33513, - "sex": "女", - "city": "临沂市", - "description": "-", - "createTime": "2003-02-04 13:35:09", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 29, - "name": "User-29", - "type": 1, - "status": 1, - "score": 23, - "experience": 71620, - "sex": "男", - "city": "拉萨市", - "description": "-", - "createTime": "2020-12-22 10:11:11", - "parentId": null, - "children": [ - { - "id": 30, - "name": "User-30", - "type": 3, - "status": 3, - "score": 13, - "experience": 32398, - "sex": "女", - "city": "武威市", - "description": "-", - "createTime": "1982-10-26 11:27:06", - "parentId": null, - "children": [ - { - "id": 31, - "name": "User-31", - "type": 4, - "status": 1, - "score": 93, - "experience": 89245, - "sex": "男", - "city": "楚雄彝族自治州", - "description": "-", - "createTime": "1979-10-05 12:28:39", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 32, - "name": "User-32", - "type": 6, - "status": 4, - "score": 31, - "experience": 73504, - "sex": "女", - "city": "上海市", - "description": "-", - "createTime": "1991-01-11 06:55:04", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 33, - "name": "User-33", - "type": 5, - "status": 4, - "score": 27, - "experience": 95824, - "sex": "女", - "city": "鹰潭市", - "description": "-", - "createTime": "2009-06-17 04:15:06", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 34, - "name": "User-34", - "type": 4, - "status": 1, - "score": 37, - "experience": 63563, - "sex": "男", - "city": "红河哈尼族彝族自治州", - "description": "-", - "createTime": "1979-01-12 13:19:02", - "parentId": null, - "children": [ - { - "id": 35, - "name": "User-35", - "type": 4, - "status": 2, - "score": 81, - "experience": 46868, - "sex": "男", - "city": "德宏傣族景颇族自治州", - "description": "-", - "createTime": "1981-10-24 01:48:43", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 36, - "name": "User-36", - "type": 2, - "status": 1, - "score": 92, - "experience": 70256, - "sex": "女", - "city": "厦门市", - "description": "-", - "createTime": "1998-05-23 22:54:20", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 37, - "name": "User-37", - "type": 6, - "status": 2, - "score": 25, - "experience": 24689, - "sex": "女", - "city": "铁岭市", - "description": "-", - "createTime": "1980-05-03 04:42:32", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 38, - "name": "User-38", - "type": 4, - "status": 4, - "score": 83, - "experience": 96973, - "sex": "男", - "city": "武汉市", - "description": "-", - "createTime": "1979-11-04 03:18:53", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 39, - "name": "User-39", - "type": 4, - "status": 2, - "score": 37, - "experience": 23248, - "sex": "女", - "city": "黔东南苗族侗族自治州", - "description": "-", - "createTime": "2017-03-03 14:54:05", - "parentId": null, - "children": [ - { - "id": 40, - "name": "User-40", - "type": 5, - "status": 3, - "score": 53, - "experience": 89498, - "sex": "女", - "city": "吐鲁番地区", - "description": "-", - "createTime": "2005-01-14 16:36:11", - "parentId": null, - "children": [ - { - "id": 41, - "name": "User-41", - "type": 4, - "status": 3, - "score": 13, - "experience": 47225, - "sex": "女", - "city": "重庆市", - "description": "-", - "createTime": "1994-07-14 23:17:37", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 42, - "name": "User-42", - "type": 2, - "status": 2, - "score": 54, - "experience": 67027, - "sex": "男", - "city": "丽水市", - "description": "-", - "createTime": "2019-04-06 23:40:35", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 43, - "name": "User-43", - "type": 2, - "status": 2, - "score": 59, - "experience": 16009, - "sex": "男", - "city": "新界", - "description": "-", - "createTime": "1972-11-10 06:24:19", - "parentId": null, - "children": [ - { - "id": 44, - "name": "User-44", - "type": 6, - "status": 3, - "score": 26, - "experience": 48609, - "sex": "女", - "city": "东莞市", - "description": "-", - "createTime": "1993-04-21 21:27:36", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 45, - "name": "User-45", - "type": 1, - "status": 2, - "score": 28, - "experience": 13681, - "sex": "女", - "city": "常德市", - "description": "-", - "createTime": "2016-01-19 16:21:48", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 46, - "name": "User-46", - "type": 1, - "status": 2, - "score": 77, - "experience": 50932, - "sex": "男", - "city": "武汉市", - "description": "-", - "createTime": "1977-11-26 05:13:27", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 47, - "name": "User-47", - "type": 3, - "status": 1, - "score": 10, - "experience": 19599, - "sex": "男", - "city": "长治市", - "description": "-", - "createTime": "1980-10-28 04:42:20", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 48, - "name": "User-48", - "type": 6, - "status": 3, - "score": 50, - "experience": 63403, - "sex": "男", - "city": "香港岛", - "description": "-", - "createTime": "1974-05-23 17:23:13", - "parentId": null, - "children": [ - { - "id": 49, - "name": "User-49", - "type": 2, - "status": 1, - "score": 7, - "experience": 21161, - "sex": "男", - "city": "梅州市", - "description": "-", - "createTime": "1977-05-01 15:25:24", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 50, - "name": "User-50", - "type": 5, - "status": 2, - "score": 34, - "experience": 93741, - "sex": "男", - "city": "鸡西市", - "description": "-", - "createTime": "2018-04-14 23:13:38", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 51, - "name": "User-51", - "type": 2, - "status": 2, - "score": 92, - "experience": 36687, - "sex": "女", - "city": "温州市", - "description": "-", - "createTime": "1993-06-04 04:00:14", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 52, - "name": "User-52", - "type": 6, - "status": 2, - "score": 14, - "experience": 47342, - "sex": "男", - "city": "重庆市", - "description": "-", - "createTime": "1972-02-26 22:46:51", - "parentId": null, - "children": [ - { - "id": 53, - "name": "User-53", - "type": 1, - "status": 3, - "score": 97, - "experience": 40784, - "sex": "男", - "city": "邵阳市", - "description": "-", - "createTime": "1976-12-27 01:00:37", - "parentId": null, - "children": [ - { - "id": 54, - "name": "User-54", - "type": 4, - "status": 3, - "score": 93, - "experience": 10865, - "sex": "男", - "city": "龙岩市", - "description": "-", - "createTime": "2001-09-03 02:08:42", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 55, - "name": "User-55", - "type": 1, - "status": 2, - "score": 56, - "experience": 68232, - "sex": "男", - "city": "赣州市", - "description": "-", - "createTime": "1995-12-13 08:29:10", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 56, - "name": "User-56", - "type": 1, - "status": 2, - "score": 46, - "experience": 68897, - "sex": "女", - "city": "哈密地区", - "description": "-", - "createTime": "2007-08-05 00:54:06", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 57, - "name": "User-57", - "type": 4, - "status": 3, - "score": 68, - "experience": 58983, - "sex": "女", - "city": "北京市", - "description": "-", - "createTime": "1979-03-14 13:21:33", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 58, - "name": "User-58", - "type": 5, - "status": 1, - "score": 6, - "experience": 17343, - "sex": "男", - "city": "苗栗县", - "description": "-", - "createTime": "1996-01-21 18:43:11", - "parentId": null, - "children": [ - { - "id": 59, - "name": "User-59", - "type": 5, - "status": 2, - "score": 98, - "experience": 75262, - "sex": "女", - "city": "怀化市", - "description": "-", - "createTime": "2022-06-28 12:25:50", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 60, - "name": "User-60", - "type": 3, - "status": 3, - "score": 3, - "experience": 5817, - "sex": "女", - "city": "三亚市", - "description": "-", - "createTime": "1993-10-13 21:54:57", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 61, - "name": "User-61", - "type": 2, - "status": 3, - "score": 3, - "experience": 65548, - "sex": "男", - "city": "台州市", - "description": "-", - "createTime": "2017-11-06 13:16:14", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 62, - "name": "User-62", - "type": 5, - "status": 3, - "score": 37, - "experience": 33679, - "sex": "女", - "city": "辽源市", - "description": "-", - "createTime": "2002-10-19 22:53:23", - "parentId": null, - "children": [ - { - "id": 63, - "name": "User-63", - "type": 5, - "status": 3, - "score": 12, - "experience": 91033, - "sex": "女", - "city": "银川市", - "description": "-", - "createTime": "1973-04-17 07:33:35", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 64, - "name": "User-64", - "type": 3, - "status": 2, - "score": 87, - "experience": 30560, - "sex": "男", - "city": "昌都地区", - "description": "-", - "createTime": "1992-06-13 23:04:16", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 65, - "name": "User-65", - "type": 5, - "status": 2, - "score": 27, - "experience": 17982, - "sex": "女", - "city": "商洛市", - "description": "-", - "createTime": "2008-08-22 09:14:10", - "parentId": null, - "children": [ - { - "id": 66, - "name": "User-66", - "type": 3, - "status": 3, - "score": 91, - "experience": 47135, - "sex": "女", - "city": "离岛", - "description": "-", - "createTime": "1971-01-27 18:29:48", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 67, - "name": "User-67", - "type": 2, - "status": 1, - "score": 19, - "experience": 31440, - "sex": "女", - "city": "随州市", - "description": "-", - "createTime": "1979-10-14 10:30:22", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 68, - "name": "User-68", - "type": 5, - "status": 1, - "score": 88, - "experience": 48196, - "sex": "男", - "city": "承德市", - "description": "-", - "createTime": "1996-02-07 03:52:51", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 69, - "name": "User-69", - "type": 5, - "status": 1, - "score": 46, - "experience": 45341, - "sex": "女", - "city": "黔东南苗族侗族自治州", - "description": "-", - "createTime": "1995-05-08 20:53:45", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 70, - "name": "User-70", - "type": 3, - "status": 3, - "score": 19, - "experience": 66961, - "sex": "女", - "city": "固原市", - "description": "-", - "createTime": "1992-04-11 09:13:05", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 71, - "name": "User-71", - "type": 1, - "status": 3, - "score": 4, - "experience": 95553, - "sex": "女", - "city": "那曲地区", - "description": "-", - "createTime": "2019-07-31 00:30:49", - "parentId": null, - "children": [ - { - "id": 72, - "name": "User-72", - "type": 4, - "status": 4, - "score": 89, - "experience": 27410, - "sex": "男", - "city": "贺州市", - "description": "-", - "createTime": "1990-09-07 03:02:32", - "parentId": null, - "children": [ - { - "id": 73, - "name": "User-73", - "type": 6, - "status": 4, - "score": 93, - "experience": 84018, - "sex": "男", - "city": "雅安市", - "description": "-", - "createTime": "1972-01-18 02:00:25", - "parentId": null, - "children": [ - { - "id": 74, - "name": "User-74", - "type": 1, - "status": 4, - "score": 22, - "experience": 23025, - "sex": "女", - "city": "济南市", - "description": "-", - "createTime": "1991-12-18 23:27:07", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 75, - "name": "User-75", - "type": 5, - "status": 2, - "score": 75, - "experience": 58006, - "sex": "男", - "city": "新界", - "description": "-", - "createTime": "2004-03-03 09:28:00", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 76, - "name": "User-76", - "type": 2, - "status": 1, - "score": 79, - "experience": 86538, - "sex": "男", - "city": "果洛藏族自治州", - "description": "-", - "createTime": "2000-02-09 12:26:36", - "parentId": null, - "children": [ - { - "id": 77, - "name": "User-77", - "type": 2, - "status": 3, - "score": 60, - "experience": 61903, - "sex": "女", - "city": "呼伦贝尔市", - "description": "-", - "createTime": "1991-04-19 19:31:38", - "parentId": null, - "children": [ - { - "id": 78, - "name": "User-78", - "type": 4, - "status": 2, - "score": 67, - "experience": 10844, - "sex": "女", - "city": "鞍山市", - "description": "-", - "createTime": "2017-03-26 15:43:27", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 79, - "name": "User-79", - "type": 4, - "status": 2, - "score": 46, - "experience": 25354, - "sex": "男", - "city": "鸡西市", - "description": "-", - "createTime": "2018-01-30 03:43:56", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 80, - "name": "User-80", - "type": 5, - "status": 3, - "score": 13, - "experience": 30626, - "sex": "女", - "city": "玉溪市", - "description": "-", - "createTime": "1984-03-18 11:35:15", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 81, - "name": "User-81", - "type": 4, - "status": 3, - "score": 34, - "experience": 97578, - "sex": "女", - "city": "信阳市", - "description": "-", - "createTime": "2004-08-20 12:21:16", - "parentId": null, - "children": [ - { - "id": 82, - "name": "User-82", - "type": 6, - "status": 3, - "score": 38, - "experience": 7285, - "sex": "男", - "city": "舟山市", - "description": "-", - "createTime": "2001-03-16 07:04:17", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 83, - "name": "User-83", - "type": 3, - "status": 1, - "score": 51, - "experience": 41380, - "sex": "女", - "city": "佛山市", - "description": "-", - "createTime": "1998-06-01 18:21:57", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 84, - "name": "User-84", - "type": 2, - "status": 3, - "score": 37, - "experience": 19153, - "sex": "女", - "city": "宜宾市", - "description": "-", - "createTime": "1985-10-30 09:16:58", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 85, - "name": "User-85", - "type": 1, - "status": 1, - "score": 94, - "experience": 63371, - "sex": "男", - "city": "淮南市", - "description": "-", - "createTime": "2019-02-28 22:24:25", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 86, - "name": "User-86", - "type": 2, - "status": 4, - "score": 67, - "experience": 25315, - "sex": "男", - "city": "黔西南布依族苗族自治州", - "description": "-", - "createTime": "2011-11-29 07:06:26", - "parentId": null, - "children": [ - { - "id": 87, - "name": "User-87", - "type": 4, - "status": 4, - "score": 52, - "experience": 10751, - "sex": "女", - "city": "离岛", - "description": "-", - "createTime": "2022-08-05 23:21:27", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 88, - "name": "User-88", - "type": 4, - "status": 2, - "score": 65, - "experience": 38077, - "sex": "女", - "city": "黄石市", - "description": "-", - "createTime": "2007-12-12 15:47:51", - "parentId": null, - "children": [ - { - "id": 89, - "name": "User-89", - "type": 6, - "status": 2, - "score": 78, - "experience": 78006, - "sex": "男", - "city": "海口市", - "description": "-", - "createTime": "2007-10-20 18:46:39", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 90, - "name": "User-90", - "type": 3, - "status": 3, - "score": 66, - "experience": 91901, - "sex": "女", - "city": "上海市", - "description": "-", - "createTime": "1993-08-25 20:32:32", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 91, - "name": "User-91", - "type": 3, - "status": 3, - "score": 61, - "experience": 26129, - "sex": "女", - "city": "白山市", - "description": "-", - "createTime": "2002-01-04 16:12:16", - "parentId": null, - "children": [ - { - "id": 92, - "name": "User-92", - "type": 5, - "status": 3, - "score": 19, - "experience": 34580, - "sex": "男", - "city": "庆阳市", - "description": "-", - "createTime": "1987-02-28 01:36:59", - "parentId": null, - "children": [ - { - "id": 93, - "name": "User-93", - "type": 4, - "status": 4, - "score": 7, - "experience": 40805, - "sex": "女", - "city": "广州市", - "description": "-", - "createTime": "1986-02-23 02:19:01", - "parentId": null, - "children": [ - { - "id": 94, - "name": "User-94", - "type": 4, - "status": 2, - "score": 28, - "experience": 85777, - "sex": "男", - "city": "昌吉回族自治州", - "description": "-", - "createTime": "1987-02-21 18:49:17", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 95, - "name": "User-95", - "type": 3, - "status": 3, - "score": 33, - "experience": 50551, - "sex": "女", - "city": "三明市", - "description": "-", - "createTime": "2013-04-24 20:49:56", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 96, - "name": "User-96", - "type": 2, - "status": 2, - "score": 21, - "experience": 19915, - "sex": "女", - "city": "黄石市", - "description": "-", - "createTime": "2017-05-09 12:17:42", - "parentId": null, - "children": [ - { - "id": 97, - "name": "User-97", - "type": 3, - "status": 3, - "score": 25, - "experience": 22618, - "sex": "女", - "city": "汕尾市", - "description": "-", - "createTime": "1977-03-13 12:50:50", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 98, - "name": "User-98", - "type": 6, - "status": 2, - "score": 14, - "experience": 43979, - "sex": "女", - "city": "温州市", - "description": "-", - "createTime": "1991-04-10 20:49:11", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 99, - "name": "User-99", - "type": 3, - "status": 2, - "score": 82, - "experience": 24670, - "sex": "男", - "city": "贵港市", - "description": "-", - "createTime": "2012-12-19 08:28:58", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 100, - "name": "User-100", - "type": 4, - "status": 3, - "score": 64, - "experience": 84287, - "sex": "女", - "city": "张家界市", - "description": "-", - "createTime": "2000-09-28 06:14:34", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 101, - "name": "User-101", - "type": 3, - "status": 4, - "score": 68, - "experience": 39312, - "sex": "男", - "city": "玉树藏族自治州", - "description": "-", - "createTime": "2020-09-20 05:35:35", - "parentId": null, - "children": [ - { - "id": 102, - "name": "User-102", - "type": 3, - "status": 1, - "score": 74, - "experience": 16276, - "sex": "女", - "city": "延安市", - "description": "-", - "createTime": "1980-10-04 17:59:56", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 103, - "name": "User-103", - "type": 5, - "status": 2, - "score": 91, - "experience": 67473, - "sex": "男", - "city": "桃园县", - "description": "-", - "createTime": "2007-01-04 07:46:21", - "parentId": null, - "children": [ - { - "id": 104, - "name": "User-104", - "type": 1, - "status": 3, - "score": 3, - "experience": 91897, - "sex": "男", - "city": "营口市", - "description": "-", - "createTime": "2012-07-04 00:39:19", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 105, - "name": "User-105", - "type": 5, - "status": 2, - "score": 36, - "experience": 12972, - "sex": "男", - "city": "德州市", - "description": "-", - "createTime": "1993-06-04 03:52:48", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 106, - "name": "User-106", - "type": 2, - "status": 3, - "score": 60, - "experience": 58793, - "sex": "女", - "city": "开封市", - "description": "-", - "createTime": "2003-10-28 05:15:25", - "parentId": null, - "children": [ - { - "id": 107, - "name": "User-107", - "type": 6, - "status": 3, - "score": 70, - "experience": 88564, - "sex": "女", - "city": "大理白族自治州", - "description": "-", - "createTime": "1991-03-19 01:51:41", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 108, - "name": "User-108", - "type": 2, - "status": 2, - "score": 85, - "experience": 47918, - "sex": "男", - "city": "金门县", - "description": "-", - "createTime": "2015-06-18 04:18:20", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 109, - "name": "User-109", - "type": 2, - "status": 2, - "score": 15, - "experience": 72530, - "sex": "女", - "city": "上海市", - "description": "-", - "createTime": "1997-10-10 20:26:03", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 110, - "name": "User-110", - "type": 2, - "status": 2, - "score": 83, - "experience": 26538, - "sex": "男", - "city": "新竹市", - "description": "-", - "createTime": "2007-07-26 23:09:20", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 111, - "name": "User-111", - "type": 4, - "status": 2, - "score": 43, - "experience": 42129, - "sex": "男", - "city": "赤峰市", - "description": "-", - "createTime": "2015-12-17 09:23:18", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 112, - "name": "User-112", - "type": 4, - "status": 1, - "score": 74, - "experience": 61862, - "sex": "女", - "city": "潍坊市", - "description": "-", - "createTime": "2018-02-12 13:13:10", - "parentId": null, - "children": [ - { - "id": 113, - "name": "User-113", - "type": 1, - "status": 2, - "score": 65, - "experience": 52650, - "sex": "男", - "city": "德宏傣族景颇族自治州", - "description": "-", - "createTime": "2011-04-13 09:19:21", - "parentId": null, - "children": [ - { - "id": 114, - "name": "User-114", - "type": 3, - "status": 1, - "score": 82, - "experience": 53304, - "sex": "男", - "city": "益阳市", - "description": "-", - "createTime": "2021-09-25 03:56:20", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 115, - "name": "User-115", - "type": 3, - "status": 3, - "score": 32, - "experience": 1231, - "sex": "男", - "city": "娄底市", - "description": "-", - "createTime": "1984-10-28 18:20:13", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 116, - "name": "User-116", - "type": 3, - "status": 3, - "score": 89, - "experience": 65939, - "sex": "女", - "city": "昌都地区", - "description": "-", - "createTime": "1982-10-31 15:16:26", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 117, - "name": "User-117", - "type": 2, - "status": 4, - "score": 15, - "experience": 19416, - "sex": "女", - "city": "长治市", - "description": "-", - "createTime": "1990-04-09 13:29:32", - "parentId": null, - "children": [ - { - "id": 118, - "name": "User-118", - "type": 5, - "status": 2, - "score": 97, - "experience": 49212, - "sex": "女", - "city": "那曲地区", - "description": "-", - "createTime": "2018-12-15 15:50:57", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 119, - "name": "User-119", - "type": 2, - "status": 3, - "score": 82, - "experience": 19392, - "sex": "男", - "city": "海外", - "description": "-", - "createTime": "2016-03-01 20:52:25", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 120, - "name": "User-120", - "type": 5, - "status": 4, - "score": 51, - "experience": 78906, - "sex": "女", - "city": "九龙", - "description": "-", - "createTime": "1970-01-23 05:58:55", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 121, - "name": "User-121", - "type": 1, - "status": 2, - "score": 62, - "experience": 67953, - "sex": "女", - "city": "中山市", - "description": "-", - "createTime": "1980-03-31 19:15:07", - "parentId": null, - "children": [ - { - "id": 122, - "name": "User-122", - "type": 3, - "status": 2, - "score": 42, - "experience": 75027, - "sex": "男", - "city": "香港岛", - "description": "-", - "createTime": "1991-11-08 11:29:20", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 123, - "name": "User-123", - "type": 4, - "status": 1, - "score": 27, - "experience": 50832, - "sex": "男", - "city": "牡丹江市", - "description": "-", - "createTime": "1987-10-23 04:08:04", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 124, - "name": "User-124", - "type": 4, - "status": 3, - "score": 20, - "experience": 43261, - "sex": "男", - "city": "沧州市", - "description": "-", - "createTime": "2008-06-13 20:20:22", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 125, - "name": "User-125", - "type": 5, - "status": 2, - "score": 61, - "experience": 50399, - "sex": "女", - "city": "山南地区", - "description": "-", - "createTime": "2015-12-14 21:59:46", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 126, - "name": "User-126", - "type": 5, - "status": 2, - "score": 88, - "experience": 26933, - "sex": "女", - "city": "扬州市", - "description": "-", - "createTime": "1971-07-16 11:58:22", - "parentId": null, - "children": [ - { - "id": 127, - "name": "User-127", - "type": 1, - "status": 3, - "score": 86, - "experience": 15913, - "sex": "女", - "city": "宁波市", - "description": "-", - "createTime": "1979-06-01 23:52:36", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 128, - "name": "User-128", - "type": 5, - "status": 2, - "score": 61, - "experience": 74072, - "sex": "男", - "city": "乌兰察布市", - "description": "-", - "createTime": "1997-09-24 16:31:03", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 129, - "name": "User-129", - "type": 1, - "status": 3, - "score": 39, - "experience": 94200, - "sex": "男", - "city": "香港岛", - "description": "-", - "createTime": "1990-04-22 15:12:45", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 130, - "name": "User-130", - "type": 3, - "status": 3, - "score": 78, - "experience": 59502, - "sex": "男", - "city": "天津市", - "description": "-", - "createTime": "2011-01-03 07:20:25", - "parentId": null, - "children": [ - { - "id": 131, - "name": "User-131", - "type": 2, - "status": 3, - "score": 29, - "experience": 16545, - "sex": "男", - "city": "德阳市", - "description": "-", - "createTime": "2001-05-07 05:02:42", - "parentId": null, - "children": [ - { - "id": 132, - "name": "User-132", - "type": 3, - "status": 3, - "score": 53, - "experience": 8310, - "sex": "男", - "city": "襄阳市", - "description": "-", - "createTime": "1996-05-12 11:23:20", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 133, - "name": "User-133", - "type": 2, - "status": 3, - "score": 6, - "experience": 10610, - "sex": "男", - "city": "海口市", - "description": "-", - "createTime": "2013-05-11 17:50:19", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 134, - "name": "User-134", - "type": 4, - "status": 2, - "score": 67, - "experience": 70882, - "sex": "男", - "city": "遵义市", - "description": "-", - "createTime": "2014-03-04 22:55:14", - "parentId": null, - "children": [ - { - "id": 135, - "name": "User-135", - "type": 4, - "status": 3, - "score": 34, - "experience": 87799, - "sex": "女", - "city": "苗栗县", - "description": "-", - "createTime": "1990-04-13 14:44:06", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 136, - "name": "User-136", - "type": 6, - "status": 1, - "score": 66, - "experience": 58817, - "sex": "男", - "city": "大连市", - "description": "-", - "createTime": "1990-04-28 21:04:33", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 137, - "name": "User-137", - "type": 6, - "status": 2, - "score": 74, - "experience": 95991, - "sex": "男", - "city": "那曲地区", - "description": "-", - "createTime": "1994-06-04 16:01:44", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 138, - "name": "User-138", - "type": 1, - "status": 2, - "score": 99, - "experience": 71832, - "sex": "男", - "city": "阿里地区", - "description": "-", - "createTime": "1988-03-10 13:17:59", - "parentId": null, - "children": [ - { - "id": 139, - "name": "User-139", - "type": 6, - "status": 4, - "score": 36, - "experience": 86381, - "sex": "女", - "city": "菏泽市", - "description": "-", - "createTime": "2021-04-22 22:27:06", - "parentId": null, - "children": [ - { - "id": 140, - "name": "User-140", - "type": 6, - "status": 3, - "score": 36, - "experience": 43655, - "sex": "女", - "city": "通辽市", - "description": "-", - "createTime": "2001-12-20 09:14:52", - "parentId": null, - "children": [ - { - "id": 141, - "name": "User-141", - "type": 3, - "status": 2, - "score": 10, - "experience": 65976, - "sex": "女", - "city": "雅安市", - "description": "-", - "createTime": "1996-08-28 19:08:53", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 142, - "name": "User-142", - "type": 6, - "status": 4, - "score": 89, - "experience": 9828, - "sex": "男", - "city": "白山市", - "description": "-", - "createTime": "1985-09-21 14:58:12", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 143, - "name": "User-143", - "type": 6, - "status": 2, - "score": 1, - "experience": 84064, - "sex": "女", - "city": "重庆市", - "description": "-", - "createTime": "1973-11-04 08:28:54", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 144, - "name": "User-144", - "type": 5, - "status": 2, - "score": 46, - "experience": 51038, - "sex": "女", - "city": "南昌市", - "description": "-", - "createTime": "2010-01-27 02:05:48", - "parentId": null, - "children": [ - { - "id": 145, - "name": "User-145", - "type": 1, - "status": 3, - "score": 82, - "experience": 53656, - "sex": "女", - "city": "玉林市", - "description": "-", - "createTime": "1996-05-21 10:13:12", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 146, - "name": "User-146", - "type": 6, - "status": 4, - "score": 24, - "experience": 10700, - "sex": "男", - "city": "赤峰市", - "description": "-", - "createTime": "1998-03-08 12:08:46", - "parentId": null, - "children": [ - { - "id": 147, - "name": "User-147", - "type": 3, - "status": 1, - "score": 94, - "experience": 85060, - "sex": "女", - "city": "自贡市", - "description": "-", - "createTime": "2002-07-29 08:02:19", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 148, - "name": "User-148", - "type": 5, - "status": 2, - "score": 93, - "experience": 24255, - "sex": "男", - "city": "盐城市", - "description": "-", - "createTime": "2020-02-01 14:30:19", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 149, - "name": "User-149", - "type": 2, - "status": 4, - "score": 18, - "experience": 78062, - "sex": "女", - "city": "内江市", - "description": "-", - "createTime": "2003-02-26 08:59:31", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 150, - "name": "User-150", - "type": 4, - "status": 2, - "score": 13, - "experience": 48858, - "sex": "女", - "city": "上海市", - "description": "-", - "createTime": "1985-05-14 18:47:46", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 151, - "name": "User-151", - "type": 2, - "status": 3, - "score": 36, - "experience": 12807, - "sex": "男", - "city": "舟山市", - "description": "-", - "createTime": "2004-12-04 23:49:41", - "parentId": null, - "children": [ - { - "id": 152, - "name": "User-152", - "type": 2, - "status": 1, - "score": 60, - "experience": 38168, - "sex": "女", - "city": "喀什地区", - "description": "-", - "createTime": "1985-09-17 01:12:06", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 153, - "name": "User-153", - "type": 6, - "status": 1, - "score": 77, - "experience": 74590, - "sex": "男", - "city": "天津市", - "description": "-", - "createTime": "1970-02-02 10:02:55", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 154, - "name": "User-154", - "type": 5, - "status": 2, - "score": 92, - "experience": 76944, - "sex": "女", - "city": "临沧市", - "description": "-", - "createTime": "2013-12-06 17:42:05", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 155, - "name": "User-155", - "type": 3, - "status": 2, - "score": 29, - "experience": 78692, - "sex": "男", - "city": "秦皇岛市", - "description": "-", - "createTime": "2016-07-16 14:25:28", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 156, - "name": "User-156", - "type": 4, - "status": 2, - "score": 79, - "experience": 99919, - "sex": "女", - "city": "凉山彝族自治州", - "description": "-", - "createTime": "2010-07-15 10:21:19", - "parentId": null, - "children": [ - { - "id": 157, - "name": "User-157", - "type": 5, - "status": 3, - "score": 91, - "experience": 52354, - "sex": "男", - "city": "铜仁市", - "description": "-", - "createTime": "1977-03-20 09:15:54", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 158, - "name": "User-158", - "type": 5, - "status": 2, - "score": 22, - "experience": 51977, - "sex": "女", - "city": "宿州市", - "description": "-", - "createTime": "2016-11-17 20:01:17", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 159, - "name": "User-159", - "type": 1, - "status": 2, - "score": 43, - "experience": 46650, - "sex": "女", - "city": "沧州市", - "description": "-", - "createTime": "1987-09-05 06:14:08", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 160, - "name": "User-160", - "type": 6, - "status": 2, - "score": 57, - "experience": 7416, - "sex": "男", - "city": "澎湖县", - "description": "-", - "createTime": "1974-08-10 20:09:38", - "parentId": null, - "children": [ - { - "id": 161, - "name": "User-161", - "type": 5, - "status": 1, - "score": 53, - "experience": 12421, - "sex": "男", - "city": "阿克苏地区", - "description": "-", - "createTime": "1998-02-07 11:52:05", - "parentId": null, - "children": [ - { - "id": 162, - "name": "User-162", - "type": 3, - "status": 2, - "score": 100, - "experience": 19507, - "sex": "女", - "city": "随州市", - "description": "-", - "createTime": "2014-01-31 07:58:18", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 163, - "name": "User-163", - "type": 2, - "status": 2, - "score": 12, - "experience": 35637, - "sex": "男", - "city": "拉萨市", - "description": "-", - "createTime": "1983-10-02 10:31:23", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 164, - "name": "User-164", - "type": 6, - "status": 3, - "score": 65, - "experience": 42198, - "sex": "男", - "city": "香港岛", - "description": "-", - "createTime": "1987-12-22 14:34:32", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 165, - "name": "User-165", - "type": 2, - "status": 2, - "score": 73, - "experience": 40495, - "sex": "女", - "city": "天津市", - "description": "-", - "createTime": "1992-11-29 08:54:58", - "parentId": null, - "children": [ - { - "id": 166, - "name": "User-166", - "type": 3, - "status": 3, - "score": 83, - "experience": 62007, - "sex": "男", - "city": "重庆市", - "description": "-", - "createTime": "1992-10-01 19:14:47", - "parentId": null, - "children": [ - { - "id": 167, - "name": "User-167", - "type": 5, - "status": 4, - "score": 75, - "experience": 18137, - "sex": "女", - "city": "安顺市", - "description": "-", - "createTime": "2011-10-10 19:40:42", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 168, - "name": "User-168", - "type": 4, - "status": 3, - "score": 80, - "experience": 95421, - "sex": "男", - "city": "吴忠市", - "description": "-", - "createTime": "1972-10-27 14:58:59", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 169, - "name": "User-169", - "type": 6, - "status": 3, - "score": 10, - "experience": 2784, - "sex": "男", - "city": "伊春市", - "description": "-", - "createTime": "1992-07-06 23:16:42", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 170, - "name": "User-170", - "type": 5, - "status": 3, - "score": 68, - "experience": 54101, - "sex": "男", - "city": "贺州市", - "description": "-", - "createTime": "1970-01-21 21:50:15", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 171, - "name": "User-171", - "type": 5, - "status": 3, - "score": 38, - "experience": 51261, - "sex": "男", - "city": "上海市", - "description": "-", - "createTime": "1982-11-14 19:25:51", - "parentId": null, - "children": [ - { - "id": 172, - "name": "User-172", - "type": 3, - "status": 2, - "score": 4, - "experience": 73963, - "sex": "男", - "city": "徐州市", - "description": "-", - "createTime": "1993-04-15 02:08:57", - "parentId": null, - "children": [ - { - "id": 173, - "name": "User-173", - "type": 3, - "status": 1, - "score": 51, - "experience": 68723, - "sex": "女", - "city": "青岛市", - "description": "-", - "createTime": "2015-10-21 10:53:20", - "parentId": null, - "children": [ - { - "id": 174, - "name": "User-174", - "type": 3, - "status": 3, - "score": 68, - "experience": 62848, - "sex": "女", - "city": "周口市", - "description": "-", - "createTime": "2015-12-19 01:15:13", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 175, - "name": "User-175", - "type": 2, - "status": 3, - "score": 87, - "experience": 30871, - "sex": "女", - "city": "汕头市", - "description": "-", - "createTime": "1982-12-29 02:15:08", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 176, - "name": "User-176", - "type": 6, - "status": 2, - "score": 7, - "experience": 80089, - "sex": "男", - "city": "吉林市", - "description": "-", - "createTime": "2003-02-25 18:41:27", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 177, - "name": "User-177", - "type": 5, - "status": 4, - "score": 11, - "experience": 21782, - "sex": "女", - "city": "乌兰察布市", - "description": "-", - "createTime": "2014-10-10 20:45:07", - "parentId": null, - "children": [ - { - "id": 178, - "name": "User-178", - "type": 2, - "status": 2, - "score": 85, - "experience": 87330, - "sex": "女", - "city": "三亚市", - "description": "-", - "createTime": "1990-12-25 14:48:30", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 179, - "name": "User-179", - "type": 1, - "status": 1, - "score": 28, - "experience": 58951, - "sex": "男", - "city": "天津市", - "description": "-", - "createTime": "2007-09-14 00:42:03", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 180, - "name": "User-180", - "type": 5, - "status": 3, - "score": 74, - "experience": 83136, - "sex": "男", - "city": "抚州市", - "description": "-", - "createTime": "1990-08-17 16:49:05", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 181, - "name": "User-181", - "type": 1, - "status": 1, - "score": 37, - "experience": 40840, - "sex": "女", - "city": "三亚市", - "description": "-", - "createTime": "2000-05-12 08:01:46", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 182, - "name": "User-182", - "type": 1, - "status": 3, - "score": 40, - "experience": 86857, - "sex": "女", - "city": "三亚市", - "description": "-", - "createTime": "1981-03-30 01:02:44", - "parentId": null, - "children": [ - { - "id": 183, - "name": "User-183", - "type": 3, - "status": 1, - "score": 26, - "experience": 50377, - "sex": "男", - "city": "崇左市", - "description": "-", - "createTime": "1998-03-18 08:42:14", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 184, - "name": "User-184", - "type": 5, - "status": 3, - "score": 25, - "experience": 54099, - "sex": "女", - "city": "海口市", - "description": "-", - "createTime": "1980-01-26 12:11:04", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 185, - "name": "User-185", - "type": 6, - "status": 3, - "score": 87, - "experience": 80569, - "sex": "女", - "city": "运城市", - "description": "-", - "createTime": "2006-06-17 02:03:31", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 186, - "name": "User-186", - "type": 6, - "status": 3, - "score": 36, - "experience": 98204, - "sex": "男", - "city": "毕节市", - "description": "-", - "createTime": "1973-12-17 13:58:14", - "parentId": null, - "children": [ - { - "id": 187, - "name": "User-187", - "type": 2, - "status": 2, - "score": 50, - "experience": 6656, - "sex": "女", - "city": "常德市", - "description": "-", - "createTime": "1977-05-19 04:12:32", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 188, - "name": "User-188", - "type": 5, - "status": 2, - "score": 51, - "experience": 70421, - "sex": "男", - "city": "雅安市", - "description": "-", - "createTime": "1992-05-19 11:41:49", - "parentId": null, - "children": [ - { - "id": 189, - "name": "User-189", - "type": 3, - "status": 3, - "score": 86, - "experience": 10970, - "sex": "女", - "city": "陇南市", - "description": "-", - "createTime": "1986-07-20 03:40:31", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 190, - "name": "User-190", - "type": 6, - "status": 2, - "score": 81, - "experience": 35296, - "sex": "男", - "city": "重庆市", - "description": "-", - "createTime": "1994-08-03 11:42:24", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 191, - "name": "User-191", - "type": 2, - "status": 3, - "score": 36, - "experience": 60289, - "sex": "女", - "city": "滨州市", - "description": "-", - "createTime": "1981-11-09 18:18:23", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 192, - "name": "User-192", - "type": 1, - "status": 3, - "score": 80, - "experience": 84656, - "sex": "女", - "city": "果洛藏族自治州", - "description": "-", - "createTime": "1986-02-13 13:31:38", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 193, - "name": "User-193", - "type": 5, - "status": 2, - "score": 1, - "experience": 14433, - "sex": "男", - "city": "临汾市", - "description": "-", - "createTime": "2006-03-03 20:42:43", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 194, - "name": "User-194", - "type": 3, - "status": 4, - "score": 53, - "experience": 22962, - "sex": "女", - "city": "赣州市", - "description": "-", - "createTime": "2003-09-23 05:57:47", - "parentId": null, - "children": [ - { - "id": 195, - "name": "User-195", - "type": 3, - "status": 4, - "score": 78, - "experience": 80409, - "sex": "男", - "city": "晋城市", - "description": "-", - "createTime": "2022-04-16 13:45:56", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 196, - "name": "User-196", - "type": 3, - "status": 2, - "score": 83, - "experience": 35535, - "sex": "女", - "city": "庆阳市", - "description": "-", - "createTime": "2012-12-04 08:46:54", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 197, - "name": "User-197", - "type": 3, - "status": 2, - "score": 77, - "experience": 83542, - "sex": "女", - "city": "锦州市", - "description": "-", - "createTime": "2000-04-28 15:35:04", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 198, - "name": "User-198", - "type": 3, - "status": 4, - "score": 83, - "experience": 62489, - "sex": "女", - "city": "温州市", - "description": "-", - "createTime": "1989-12-11 18:50:29", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 199, - "name": "User-199", - "type": 2, - "status": 3, - "score": 81, - "experience": 74602, - "sex": "男", - "city": "自贡市", - "description": "-", - "createTime": "1996-10-30 22:16:31", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 200, - "name": "User-200", - "type": 6, - "status": 2, - "score": 31, - "experience": 28502, - "sex": "男", - "city": "宜兰县", - "description": "-", - "createTime": "1991-03-29 10:56:11", - "parentId": null, - "children": [ - { - "id": 201, - "name": "User-201", - "type": 5, - "status": 3, - "score": 23, - "experience": 45619, - "sex": "男", - "city": "商洛市", - "description": "-", - "createTime": "1997-11-04 08:13:06", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 202, - "name": "User-202", - "type": 5, - "status": 3, - "score": 7, - "experience": 7566, - "sex": "女", - "city": "随州市", - "description": "-", - "createTime": "1981-08-19 01:15:48", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 203, - "name": "User-203", - "type": 1, - "status": 3, - "score": 63, - "experience": 94626, - "sex": "男", - "city": "西宁市", - "description": "-", - "createTime": "1986-04-30 06:19:17", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 204, - "name": "User-204", - "type": 3, - "status": 3, - "score": 33, - "experience": 85619, - "sex": "女", - "city": "哈密地区", - "description": "-", - "createTime": "1977-09-15 16:53:05", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 205, - "name": "User-205", - "type": 3, - "status": 2, - "score": 95, - "experience": 66286, - "sex": "男", - "city": "安康市", - "description": "-", - "createTime": "1994-09-09 20:34:24", - "parentId": null, - "children": [ - { - "id": 206, - "name": "User-206", - "type": 5, - "status": 3, - "score": 48, - "experience": 93916, - "sex": "男", - "city": "攀枝花市", - "description": "-", - "createTime": "1996-05-16 00:14:46", - "parentId": null, - "children": [ - { - "id": 207, - "name": "User-207", - "type": 5, - "status": 3, - "score": 97, - "experience": 37124, - "sex": "女", - "city": "呼伦贝尔市", - "description": "-", - "createTime": "2009-06-18 14:55:19", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 208, - "name": "User-208", - "type": 2, - "status": 3, - "score": 77, - "experience": 37342, - "sex": "女", - "city": "九龙", - "description": "-", - "createTime": "2007-07-30 00:07:45", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 209, - "name": "User-209", - "type": 4, - "status": 1, - "score": 77, - "experience": 82846, - "sex": "男", - "city": "扬州市", - "description": "-", - "createTime": "1984-05-17 17:37:13", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 210, - "name": "User-210", - "type": 3, - "status": 1, - "score": 5, - "experience": 32873, - "sex": "女", - "city": "海外", - "description": "-", - "createTime": "1971-05-24 11:38:48", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 211, - "name": "User-211", - "type": 5, - "status": 2, - "score": 74, - "experience": 85519, - "sex": "男", - "city": "秦皇岛市", - "description": "-", - "createTime": "1970-01-17 07:29:46", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 212, - "name": "User-212", - "type": 4, - "status": 1, - "score": 33, - "experience": 80395, - "sex": "男", - "city": "白山市", - "description": "-", - "createTime": "2005-01-01 03:15:22", - "parentId": null, - "children": [ - { - "id": 213, - "name": "User-213", - "type": 4, - "status": 2, - "score": 55, - "experience": 17077, - "sex": "女", - "city": "毕节市", - "description": "-", - "createTime": "2020-01-13 21:32:59", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 214, - "name": "User-214", - "type": 3, - "status": 2, - "score": 38, - "experience": 57625, - "sex": "女", - "city": "海口市", - "description": "-", - "createTime": "2006-09-06 16:58:42", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 215, - "name": "User-215", - "type": 6, - "status": 2, - "score": 99, - "experience": 64592, - "sex": "女", - "city": "果洛藏族自治州", - "description": "-", - "createTime": "1987-07-29 17:20:38", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 216, - "name": "User-216", - "type": 5, - "status": 2, - "score": 44, - "experience": 69081, - "sex": "男", - "city": "天津市", - "description": "-", - "createTime": "1978-08-01 12:58:10", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 217, - "name": "User-217", - "type": 4, - "status": 2, - "score": 57, - "experience": 58398, - "sex": "男", - "city": "丹东市", - "description": "-", - "createTime": "1997-07-14 13:37:19", - "parentId": null, - "children": [ - { - "id": 218, - "name": "User-218", - "type": 3, - "status": 2, - "score": 11, - "experience": 65346, - "sex": "男", - "city": "百色市", - "description": "-", - "createTime": "1977-12-01 15:05:38", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 219, - "name": "User-219", - "type": 3, - "status": 2, - "score": 49, - "experience": 62808, - "sex": "女", - "city": "桃园县", - "description": "-", - "createTime": "1987-03-29 01:00:57", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 220, - "name": "User-220", - "type": 5, - "status": 2, - "score": 49, - "experience": 57282, - "sex": "女", - "city": "普洱市", - "description": "-", - "createTime": "2017-09-27 13:21:02", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 221, - "name": "User-221", - "type": 4, - "status": 2, - "score": 10, - "experience": 3034, - "sex": "男", - "city": "三沙市", - "description": "-", - "createTime": "1974-11-04 11:57:29", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 222, - "name": "User-222", - "type": 2, - "status": 4, - "score": 93, - "experience": 12235, - "sex": "男", - "city": "海南藏族自治州", - "description": "-", - "createTime": "1975-11-26 14:47:08", - "parentId": null, - "children": [ - { - "id": 223, - "name": "User-223", - "type": 1, - "status": 3, - "score": 61, - "experience": 49467, - "sex": "男", - "city": "澳门半岛", - "description": "-", - "createTime": "2023-04-09 00:28:41", - "parentId": null, - "children": [ - { - "id": 224, - "name": "User-224", - "type": 6, - "status": 3, - "score": 26, - "experience": 65118, - "sex": "女", - "city": "攀枝花市", - "description": "-", - "createTime": "2013-03-04 09:08:30", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 225, - "name": "User-225", - "type": 4, - "status": 1, - "score": 38, - "experience": 86342, - "sex": "男", - "city": "临夏回族自治州", - "description": "-", - "createTime": "1992-06-15 02:13:04", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 226, - "name": "User-226", - "type": 3, - "status": 2, - "score": 3, - "experience": 32179, - "sex": "女", - "city": "九龙", - "description": "-", - "createTime": "2009-03-13 06:48:47", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 227, - "name": "User-227", - "type": 1, - "status": 3, - "score": 96, - "experience": 38847, - "sex": "男", - "city": "梅州市", - "description": "-", - "createTime": "2020-04-16 09:43:04", - "parentId": null, - "children": [ - { - "id": 228, - "name": "User-228", - "type": 4, - "status": 4, - "score": 33, - "experience": 93101, - "sex": "女", - "city": "澳门半岛", - "description": "-", - "createTime": "1995-04-06 14:46:40", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 229, - "name": "User-229", - "type": 3, - "status": 1, - "score": 5, - "experience": 12628, - "sex": "男", - "city": "博尔塔拉蒙古自治州", - "description": "-", - "createTime": "2000-08-07 19:23:07", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 230, - "name": "User-230", - "type": 3, - "status": 3, - "score": 67, - "experience": 7013, - "sex": "女", - "city": "长治市", - "description": "-", - "createTime": "2002-12-14 10:11:11", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 231, - "name": "User-231", - "type": 4, - "status": 2, - "score": 37, - "experience": 61813, - "sex": "女", - "city": "博尔塔拉蒙古自治州", - "description": "-", - "createTime": "1970-06-27 23:24:44", - "parentId": null, - "children": [ - { - "id": 232, - "name": "User-232", - "type": 5, - "status": 2, - "score": 43, - "experience": 20578, - "sex": "男", - "city": "贵港市", - "description": "-", - "createTime": "1976-02-18 15:40:16", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 233, - "name": "User-233", - "type": 1, - "status": 2, - "score": 4, - "experience": 19621, - "sex": "女", - "city": "澳门半岛", - "description": "-", - "createTime": "2020-02-28 08:36:12", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 234, - "name": "User-234", - "type": 5, - "status": 2, - "score": 57, - "experience": 15400, - "sex": "男", - "city": "海东市", - "description": "-", - "createTime": "1976-11-22 23:04:12", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 235, - "name": "User-235", - "type": 4, - "status": 4, - "score": 18, - "experience": 36190, - "sex": "男", - "city": "海北藏族自治州", - "description": "-", - "createTime": "1978-01-30 19:43:36", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 236, - "name": "User-236", - "type": 5, - "status": 4, - "score": 69, - "experience": 51254, - "sex": "女", - "city": "北京市", - "description": "-", - "createTime": "2014-02-15 04:54:05", - "parentId": null, - "children": [ - { - "id": 237, - "name": "User-237", - "type": 2, - "status": 2, - "score": 99, - "experience": 34620, - "sex": "女", - "city": "河池市", - "description": "-", - "createTime": "2011-02-22 01:43:24", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 238, - "name": "User-238", - "type": 5, - "status": 3, - "score": 94, - "experience": 56612, - "sex": "女", - "city": "阿拉善盟", - "description": "-", - "createTime": "1996-04-13 12:44:00", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 239, - "name": "User-239", - "type": 2, - "status": 4, - "score": 27, - "experience": 1648, - "sex": "女", - "city": "长沙市", - "description": "-", - "createTime": "1989-06-01 07:38:48", - "parentId": null, - "children": [ - { - "id": 240, - "name": "User-240", - "type": 4, - "status": 2, - "score": 35, - "experience": 97895, - "sex": "男", - "city": "上海市", - "description": "-", - "createTime": "2002-04-19 15:07:58", - "parentId": null, - "children": [ - { - "id": 241, - "name": "User-241", - "type": 3, - "status": 1, - "score": 15, - "experience": 48229, - "sex": "女", - "city": "廊坊市", - "description": "-", - "createTime": "1997-04-12 20:09:02", - "parentId": null, - "children": [ - { - "id": 242, - "name": "User-242", - "type": 4, - "status": 4, - "score": 3, - "experience": 95377, - "sex": "女", - "city": "鹤壁市", - "description": "-", - "createTime": "1994-10-20 05:40:00", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 243, - "name": "User-243", - "type": 4, - "status": 1, - "score": 5, - "experience": 52728, - "sex": "男", - "city": "泉州市", - "description": "-", - "createTime": "2014-07-16 01:39:38", - "parentId": null, - "children": [ - { - "id": 244, - "name": "User-244", - "type": 5, - "status": 4, - "score": 80, - "experience": 51006, - "sex": "女", - "city": "离岛", - "description": "-", - "createTime": "1998-04-08 03:47:48", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 245, - "name": "User-245", - "type": 2, - "status": 4, - "score": 88, - "experience": 19853, - "sex": "男", - "city": "四平市", - "description": "-", - "createTime": "1998-08-15 16:27:36", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 246, - "name": "User-246", - "type": 6, - "status": 4, - "score": 52, - "experience": 63371, - "sex": "女", - "city": "肇庆市", - "description": "-", - "createTime": "2010-12-14 06:37:33", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 247, - "name": "User-247", - "type": 4, - "status": 2, - "score": 40, - "experience": 65183, - "sex": "男", - "city": "潍坊市", - "description": "-", - "createTime": "1975-07-09 23:34:16", - "parentId": null, - "children": [ - { - "id": 248, - "name": "User-248", - "type": 1, - "status": 3, - "score": 65, - "experience": 19079, - "sex": "男", - "city": "宜宾市", - "description": "-", - "createTime": "2013-03-01 13:33:15", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 249, - "name": "User-249", - "type": 6, - "status": 2, - "score": 80, - "experience": 37432, - "sex": "男", - "city": "临汾市", - "description": "-", - "createTime": "2003-02-04 13:42:18", - "parentId": null, - "children": [ - { - "id": 250, - "name": "User-250", - "type": 3, - "status": 3, - "score": 76, - "experience": 91326, - "sex": "女", - "city": "太原市", - "description": "-", - "createTime": "1997-03-04 20:12:43", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 251, - "name": "User-251", - "type": 1, - "status": 1, - "score": 29, - "experience": 93151, - "sex": "女", - "city": "营口市", - "description": "-", - "createTime": "1972-08-25 03:17:26", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 252, - "name": "User-252", - "type": 2, - "status": 2, - "score": 93, - "experience": 1882, - "sex": "女", - "city": "海外", - "description": "-", - "createTime": "2021-08-31 04:19:35", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 253, - "name": "User-253", - "type": 2, - "status": 4, - "score": 14, - "experience": 97501, - "sex": "女", - "city": "四平市", - "description": "-", - "createTime": "1991-03-16 04:18:45", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 254, - "name": "User-254", - "type": 3, - "status": 2, - "score": 43, - "experience": 77813, - "sex": "女", - "city": "那曲地区", - "description": "-", - "createTime": "2015-12-11 17:36:46", - "parentId": null, - "children": [ - { - "id": 255, - "name": "User-255", - "type": 4, - "status": 3, - "score": 7, - "experience": 88376, - "sex": "男", - "city": "贵阳市", - "description": "-", - "createTime": "1991-12-09 10:31:04", - "parentId": null, - "children": [ - { - "id": 256, - "name": "User-256", - "type": 5, - "status": 3, - "score": 24, - "experience": 66923, - "sex": "男", - "city": "海东市", - "description": "-", - "createTime": "2007-10-09 21:30:27", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 257, - "name": "User-257", - "type": 1, - "status": 2, - "score": 56, - "experience": 16966, - "sex": "女", - "city": "澳门半岛", - "description": "-", - "createTime": "1971-08-07 14:04:06", - "parentId": null, - "children": [ - { - "id": 258, - "name": "User-258", - "type": 3, - "status": 3, - "score": 43, - "experience": 68317, - "sex": "男", - "city": "杭州市", - "description": "-", - "createTime": "2000-06-23 23:43:22", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 259, - "name": "User-259", - "type": 3, - "status": 2, - "score": 19, - "experience": 65900, - "sex": "男", - "city": "杭州市", - "description": "-", - "createTime": "1972-11-02 03:14:29", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 260, - "name": "User-260", - "type": 2, - "status": 2, - "score": 33, - "experience": 26268, - "sex": "女", - "city": "包头市", - "description": "-", - "createTime": "1997-09-19 07:05:41", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 261, - "name": "User-261", - "type": 5, - "status": 1, - "score": 38, - "experience": 60653, - "sex": "女", - "city": "舟山市", - "description": "-", - "createTime": "1993-02-09 22:11:03", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 262, - "name": "User-262", - "type": 1, - "status": 2, - "score": 14, - "experience": 22944, - "sex": "男", - "city": "四平市", - "description": "-", - "createTime": "1979-09-12 21:59:09", - "parentId": null, - "children": [ - { - "id": 263, - "name": "User-263", - "type": 2, - "status": 2, - "score": 95, - "experience": 42730, - "sex": "男", - "city": "咸宁市", - "description": "-", - "createTime": "1971-07-06 13:35:24", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 264, - "name": "User-264", - "type": 3, - "status": 2, - "score": 8, - "experience": 81923, - "sex": "女", - "city": "铜陵市", - "description": "-", - "createTime": "2017-10-06 07:55:26", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 265, - "name": "User-265", - "type": 5, - "status": 2, - "score": 45, - "experience": 34796, - "sex": "男", - "city": "吉林市", - "description": "-", - "createTime": "1978-04-13 03:09:01", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 266, - "name": "User-266", - "type": 1, - "status": 2, - "score": 33, - "experience": 36888, - "sex": "女", - "city": "邵阳市", - "description": "-", - "createTime": "1986-08-10 22:38:19", - "parentId": null, - "children": [ - { - "id": 267, - "name": "User-267", - "type": 4, - "status": 3, - "score": 68, - "experience": 86617, - "sex": "女", - "city": "日照市", - "description": "-", - "createTime": "1988-09-20 23:59:03", - "parentId": null, - "children": [ - { - "id": 268, - "name": "User-268", - "type": 5, - "status": 2, - "score": 87, - "experience": 38669, - "sex": "男", - "city": "锦州市", - "description": "-", - "createTime": "2003-01-29 15:05:06", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 269, - "name": "User-269", - "type": 2, - "status": 4, - "score": 94, - "experience": 55962, - "sex": "女", - "city": "咸阳市", - "description": "-", - "createTime": "1999-05-31 06:27:39", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 270, - "name": "User-270", - "type": 4, - "status": 1, - "score": 67, - "experience": 37707, - "sex": "男", - "city": "吴忠市", - "description": "-", - "createTime": "1984-02-08 15:38:35", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 271, - "name": "User-271", - "type": 4, - "status": 2, - "score": 24, - "experience": 42013, - "sex": "女", - "city": "宝鸡市", - "description": "-", - "createTime": "2013-10-19 09:10:48", - "parentId": null, - "children": [ - { - "id": 272, - "name": "User-272", - "type": 5, - "status": 4, - "score": 7, - "experience": 86631, - "sex": "男", - "city": "黄石市", - "description": "-", - "createTime": "1983-02-15 19:44:19", - "parentId": null, - "children": [ - { - "id": 273, - "name": "User-273", - "type": 5, - "status": 1, - "score": 5, - "experience": 90121, - "sex": "女", - "city": "淮安市", - "description": "-", - "createTime": "1986-05-10 21:35:11", - "parentId": null, - "children": [ - { - "id": 274, - "name": "User-274", - "type": 1, - "status": 3, - "score": 97, - "experience": 74832, - "sex": "男", - "city": "四平市", - "description": "-", - "createTime": "1996-08-04 00:38:03", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 275, - "name": "User-275", - "type": 2, - "status": 2, - "score": 42, - "experience": 45129, - "sex": "男", - "city": "昌都地区", - "description": "-", - "createTime": "1983-01-14 21:58:01", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 276, - "name": "User-276", - "type": 4, - "status": 3, - "score": 2, - "experience": 40565, - "sex": "女", - "city": "普洱市", - "description": "-", - "createTime": "1998-03-28 19:05:33", - "parentId": null, - "children": [ - { - "id": 277, - "name": "User-277", - "type": 2, - "status": 1, - "score": 6, - "experience": 27426, - "sex": "男", - "city": "安顺市", - "description": "-", - "createTime": "2023-01-17 10:34:05", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 278, - "name": "User-278", - "type": 4, - "status": 2, - "score": 36, - "experience": 22014, - "sex": "男", - "city": "榆林市", - "description": "-", - "createTime": "1993-01-12 09:41:01", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 279, - "name": "User-279", - "type": 4, - "status": 1, - "score": 43, - "experience": 35756, - "sex": "女", - "city": "天津市", - "description": "-", - "createTime": "2002-03-20 11:28:25", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 280, - "name": "User-280", - "type": 2, - "status": 3, - "score": 94, - "experience": 59280, - "sex": "女", - "city": "松原市", - "description": "-", - "createTime": "2008-09-28 10:43:16", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 281, - "name": "User-281", - "type": 5, - "status": 3, - "score": 77, - "experience": 83642, - "sex": "男", - "city": "汕头市", - "description": "-", - "createTime": "2016-07-11 13:48:25", - "parentId": null, - "children": [ - { - "id": 282, - "name": "User-282", - "type": 2, - "status": 3, - "score": 16, - "experience": 75399, - "sex": "男", - "city": "南平市", - "description": "-", - "createTime": "2020-04-11 16:46:07", - "parentId": null, - "children": [ - { - "id": 283, - "name": "User-283", - "type": 2, - "status": 2, - "score": 53, - "experience": 57226, - "sex": "男", - "city": "北京市", - "description": "-", - "createTime": "1995-03-17 00:42:50", - "parentId": null, - "children": [ - { - "id": 284, - "name": "User-284", - "type": 3, - "status": 2, - "score": 19, - "experience": 84763, - "sex": "男", - "city": "澳门半岛", - "description": "-", - "createTime": "2017-08-15 18:16:29", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 285, - "name": "User-285", - "type": 3, - "status": 3, - "score": 39, - "experience": 67178, - "sex": "女", - "city": "南昌市", - "description": "-", - "createTime": "1992-07-26 05:30:51", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 286, - "name": "User-286", - "type": 2, - "status": 1, - "score": 90, - "experience": 92236, - "sex": "女", - "city": "茂名市", - "description": "-", - "createTime": "1987-09-26 10:59:31", - "parentId": null, - "children": [ - { - "id": 287, - "name": "User-287", - "type": 1, - "status": 1, - "score": 53, - "experience": 52079, - "sex": "男", - "city": "固原市", - "description": "-", - "createTime": "1995-01-10 00:22:30", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 288, - "name": "User-288", - "type": 2, - "status": 3, - "score": 65, - "experience": 87314, - "sex": "男", - "city": "离岛", - "description": "-", - "createTime": "1985-10-29 13:49:20", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 289, - "name": "User-289", - "type": 5, - "status": 1, - "score": 25, - "experience": 97910, - "sex": "男", - "city": "离岛", - "description": "-", - "createTime": "2007-04-29 01:09:20", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 290, - "name": "User-290", - "type": 4, - "status": 2, - "score": 41, - "experience": 19698, - "sex": "男", - "city": "新北市", - "description": "-", - "createTime": "2009-03-16 07:50:46", - "parentId": null, - "children": [ - { - "id": 291, - "name": "User-291", - "type": 6, - "status": 2, - "score": 14, - "experience": 60523, - "sex": "男", - "city": "拉萨市", - "description": "-", - "createTime": "2018-06-11 05:19:27", - "parentId": null, - "children": [ - { - "id": 292, - "name": "User-292", - "type": 5, - "status": 1, - "score": 14, - "experience": 87381, - "sex": "男", - "city": "驻马店市", - "description": "-", - "createTime": "2002-03-09 18:35:26", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 293, - "name": "User-293", - "type": 3, - "status": 3, - "score": 12, - "experience": 59971, - "sex": "男", - "city": "重庆市", - "description": "-", - "createTime": "2012-08-30 00:01:37", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 294, - "name": "User-294", - "type": 5, - "status": 1, - "score": 71, - "experience": 74009, - "sex": "男", - "city": "河池市", - "description": "-", - "createTime": "2012-03-24 15:15:00", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 295, - "name": "User-295", - "type": 3, - "status": 1, - "score": 6, - "experience": 87494, - "sex": "男", - "city": "永州市", - "description": "-", - "createTime": "1988-07-31 14:42:20", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 296, - "name": "User-296", - "type": 4, - "status": 3, - "score": 88, - "experience": 78667, - "sex": "女", - "city": "九龙", - "description": "-", - "createTime": "2007-06-11 13:02:07", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 297, - "name": "User-297", - "type": 3, - "status": 2, - "score": 17, - "experience": 11516, - "sex": "女", - "city": "郴州市", - "description": "-", - "createTime": "1983-11-27 13:30:47", - "parentId": null, - "children": [ - { - "id": 298, - "name": "User-298", - "type": 5, - "status": 3, - "score": 97, - "experience": 44819, - "sex": "男", - "city": "上海市", - "description": "-", - "createTime": "1988-07-02 10:53:42", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 299, - "name": "User-299", - "type": 2, - "status": 4, - "score": 88, - "experience": 53431, - "sex": "男", - "city": "香港岛", - "description": "-", - "createTime": "2022-12-23 15:25:05", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 300, - "name": "User-300", - "type": 5, - "status": 3, - "score": 69, - "experience": 24017, - "sex": "女", - "city": "重庆市", - "description": "-", - "createTime": "2003-12-12 04:04:15", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 301, - "name": "User-301", - "type": 6, - "status": 3, - "score": 72, - "experience": 73262, - "sex": "男", - "city": "北京市", - "description": "-", - "createTime": "1985-11-06 02:27:38", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 302, - "name": "User-302", - "type": 5, - "status": 3, - "score": 32, - "experience": 21824, - "sex": "女", - "city": "银川市", - "description": "-", - "createTime": "2012-09-12 05:57:24", - "parentId": null, - "children": [ - { - "id": 303, - "name": "User-303", - "type": 3, - "status": 4, - "score": 8, - "experience": 68289, - "sex": "女", - "city": "镇江市", - "description": "-", - "createTime": "2010-11-13 05:13:14", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 304, - "name": "User-304", - "type": 4, - "status": 3, - "score": 81, - "experience": 76781, - "sex": "男", - "city": "保山市", - "description": "-", - "createTime": "1975-08-13 20:37:37", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 305, - "name": "User-305", - "type": 2, - "status": 2, - "score": 39, - "experience": 17590, - "sex": "女", - "city": "大理白族自治州", - "description": "-", - "createTime": "1974-06-07 22:14:59", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 306, - "name": "User-306", - "type": 4, - "status": 4, - "score": 39, - "experience": 72010, - "sex": "女", - "city": "锡林郭勒盟", - "description": "-", - "createTime": "1984-05-30 20:38:58", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 307, - "name": "User-307", - "type": 5, - "status": 4, - "score": 52, - "experience": 56848, - "sex": "女", - "city": "阿里地区", - "description": "-", - "createTime": "1970-01-10 06:41:10", - "parentId": null, - "children": [ - { - "id": 308, - "name": "User-308", - "type": 4, - "status": 2, - "score": 45, - "experience": 48753, - "sex": "女", - "city": "重庆市", - "description": "-", - "createTime": "1973-06-22 14:59:33", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 309, - "name": "User-309", - "type": 2, - "status": 4, - "score": 45, - "experience": 3713, - "sex": "男", - "city": "郴州市", - "description": "-", - "createTime": "1997-01-21 13:06:44", - "parentId": null, - "children": [ - { - "id": 310, - "name": "User-310", - "type": 2, - "status": 2, - "score": 33, - "experience": 80153, - "sex": "男", - "city": "上海市", - "description": "-", - "createTime": "1982-05-27 16:55:13", - "parentId": null, - "children": [ - { - "id": 311, - "name": "User-311", - "type": 1, - "status": 3, - "score": 67, - "experience": 92653, - "sex": "男", - "city": "乌海市", - "description": "-", - "createTime": "2012-12-19 19:14:46", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 312, - "name": "User-312", - "type": 5, - "status": 2, - "score": 40, - "experience": 99153, - "sex": "女", - "city": "巴中市", - "description": "-", - "createTime": "1978-06-08 02:16:05", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 313, - "name": "User-313", - "type": 2, - "status": 1, - "score": 7, - "experience": 66644, - "sex": "女", - "city": "贵阳市", - "description": "-", - "createTime": "1993-12-13 16:21:03", - "parentId": null, - "children": [ - { - "id": 314, - "name": "User-314", - "type": 6, - "status": 1, - "score": 48, - "experience": 69828, - "sex": "男", - "city": "重庆市", - "description": "-", - "createTime": "1977-09-05 20:19:37", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - }, - { - "id": 315, - "name": "User-315", - "type": 5, - "status": 2, - "score": 30, - "experience": 82185, - "sex": "女", - "city": "安康市", - "description": "-", - "createTime": "2014-10-31 23:50:51", - "parentId": null, - "children": [ - { - "id": 316, - "name": "User-316", - "type": 1, - "status": 4, - "score": 45, - "experience": 4589, - "sex": "女", - "city": "铜仁市", - "description": "-", - "createTime": "2005-09-08 14:35:12", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 317, - "name": "User-317", - "type": 4, - "status": 2, - "score": 48, - "experience": 55422, - "sex": "女", - "city": "宿州市", - "description": "-", - "createTime": "1992-12-31 05:06:18", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 318, - "name": "User-318", - "type": 5, - "status": 1, - "score": 80, - "experience": 3519, - "sex": "男", - "city": "阜阳市", - "description": "-", - "createTime": "1998-11-01 22:11:08", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 319, - "name": "User-319", - "type": 4, - "status": 2, - "score": 64, - "experience": 10387, - "sex": "女", - "city": "新界", - "description": "-", - "createTime": "1995-02-23 03:01:51", - "parentId": null, - "children": [ - { - "id": 320, - "name": "User-320", - "type": 5, - "status": 2, - "score": 92, - "experience": 63866, - "sex": "女", - "city": "新余市", - "description": "-", - "createTime": "2006-09-13 05:20:48", - "parentId": null, - "children": [ - { - "id": 321, - "name": "User-321", - "type": 6, - "status": 2, - "score": 36, - "experience": 32018, - "sex": "男", - "city": "嘉兴市", - "description": "-", - "createTime": "2012-12-23 12:41:04", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 322, - "name": "User-322", - "type": 5, - "status": 3, - "score": 58, - "experience": 86419, - "sex": "女", - "city": "株洲市", - "description": "-", - "createTime": "2010-01-31 03:49:51", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 323, - "name": "User-323", - "type": 1, - "status": 4, - "score": 84, - "experience": 76545, - "sex": "女", - "city": "海北藏族自治州", - "description": "-", - "createTime": "2020-06-28 07:50:36", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 324, - "name": "User-324", - "type": 4, - "status": 2, - "score": 51, - "experience": 28561, - "sex": "男", - "city": "三沙市", - "description": "-", - "createTime": "2021-01-02 13:13:22", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - } - ], - "isParent": true - }, - { - "id": 325, - "name": "User-325", - "type": 3, - "status": 3, - "score": 62, - "experience": 94793, - "sex": "女", - "city": "嘉峪关市", - "description": "-", - "createTime": "1990-02-26 16:03:01", - "parentId": null, - "children": [ - { - "id": 326, - "name": "User-326", - "type": 4, - "status": 4, - "score": 70, - "experience": 19861, - "sex": "男", - "city": "佳木斯市", - "description": "-", - "createTime": "1971-09-13 13:37:06", - "parentId": null, - "children": [ - { - "id": 327, - "name": "User-327", - "type": 1, - "status": 2, - "score": 10, - "experience": 1866, - "sex": "女", - "city": "重庆市", - "description": "-", - "createTime": "1991-08-01 14:53:52", - "parentId": null, - "children": [ - { - "id": 328, - "name": "User-328", - "type": 6, - "status": 3, - "score": 97, - "experience": 81309, - "sex": "女", - "city": "重庆市", - "description": "-", - "createTime": "1973-06-11 16:06:26", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 329, - "name": "User-329", - "type": 5, - "status": 3, - "score": 36, - "experience": 2334, - "sex": "女", - "city": "新界", - "description": "-", - "createTime": "1989-01-06 11:00:47", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 330, - "name": "User-330", - "type": 4, - "status": 2, - "score": 75, - "experience": 19904, - "sex": "女", - "city": "朔州市", - "description": "-", - "createTime": "2003-06-01 14:59:33", - "parentId": null, - "children": [], - "isParent": false - }, - { - "id": 331, - "name": "User-331", - "type": 6, - "status": 4, - "score": 98, - "experience": 30101, - "sex": "女", - "city": "安康市", - "description": "-", - "createTime": "2003-05-14 13:25:56", - "parentId": null, - "children": [], - "isParent": false - } - ], - "isParent": true - } - ], - "isParent": true - } - ], - "isParent": true - } - ] -} \ No newline at end of file diff --git a/component/pear/css/module/tabPage.css b/component/pear/css/module/tabPage.css index 42d866b..e40f374 100644 --- a/component/pear/css/module/tabPage.css +++ b/component/pear/css/module/tabPage.css @@ -38,19 +38,19 @@ padding: 0px; } -.pear-tab-page .layui-tab-title { +.pear-tab-page > .layui-tab-title { border: none; border: 1px solid whitesmoke; background-color: white; } -.pear-tab-page .layui-tab-title li { +.pear-tab-page > .layui-tab-title li { border-right: 1px solid whitesmoke; color: dimgray; font-size: 13.5px; } -.pear-tab-page .layui-tab-title .layui-tab-bar { +.pear-tab-page > .layui-tab-title .layui-tab-bar { display: none; } @@ -58,11 +58,11 @@ display: none; } -.pear-tab-page .layui-tab-title .layui-this:after { +.pear-tab-page > .layui-tab-title .layui-this:after { display: none; } -.pear-tab-page .layui-tab-title .pear-tab-page-active { +.pear-tab-page > .layui-tab-title .pear-tab-page-active { display: inline-block; background-color: lightgray; width: 8px; @@ -71,21 +71,21 @@ margin-right: 12px; } -.pear-tab-page .layui-tab-title .layui-this .pear-tab-page-active { +.pear-tab-page > .layui-tab-title .layui-this .pear-tab-page-active { background-color: var(--global-primary-color) !important; } -.pear-tab-page .layui-tab-title .layui-tab-close:hover { +.pear-tab-page > .layui-tab-title .layui-tab-close:hover { background-color: white; line-height: 19px; color: gray; } -.pear-tab-page .layui-tab-title .disable-close+.layui-tab-close { +.pear-tab-page > .layui-tab-title .disable-close+.layui-tab-close { display: none; } -.pear-tab-page .layui-tab-title .able-close+.layui-tab-close { +.pear-tab-page > .layui-tab-title .able-close+.layui-tab-close { display: inline-block; } @@ -150,7 +150,7 @@ padding-right: 40px; } -.pear-tab-page.layui-tab-rollTool .layui-tab-title { +.pear-tab-page.layui-tab-rollTool > .layui-tab-title { padding-left: 40px; padding-right: 80px; } diff --git a/config/pear.config.yml b/config/pear.config.yml index 9079d48..7b82a83 100644 --- a/config/pear.config.yml +++ b/config/pear.config.yml @@ -19,7 +19,7 @@ menu: ## 顶部菜单宽度 PX controlWidth: 500 ## 默认选中的菜单项 - select: "10" + select: "11" ## 是否开启异步菜单,false 时 data 属性设置为静态数据,true 时为后端接口 async: true ## 视图内容配置 @@ -36,8 +36,8 @@ tab: max: "30" ## 首页 index: - id: "10" ## 标识 ID , 建议与菜单项中的 ID 一致 - href: "view/console/console1.html" ## 页面地址 + id: "11" ## 标识 ID , 建议与菜单项中的 ID 一致 + href: "view/console/console.html" ## 页面地址 title: "首页" ## 标题 ## 主题配置 theme: diff --git a/view/component/table.html b/view/component/table.html deleted file mode 100644 index 631a86a..0000000 --- a/view/component/table.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - - - table 组件综合演示 - Layui - - - - - - - -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      - - - - - - - \ No newline at end of file diff --git a/view/component/treeTable.html b/view/component/treeTable.html deleted file mode 100644 index 9ef8e0f..0000000 --- a/view/component/treeTable.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - Demo - - - -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      -
                                      - - - - - - - \ No newline at end of file diff --git a/view/console/console.html b/view/console/console.html new file mode 100644 index 0000000..a324f45 --- /dev/null +++ b/view/console/console.html @@ -0,0 +1,537 @@ + + + + + + 数据分析 + + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + 快捷菜单 +
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      + 主页 +
                                      +
                                      +
                                      + +
                                      + 弹层 +
                                      +
                                      +
                                      + +
                                      + 聊天 +
                                      +
                                      +
                                      + +
                                      + 相机 +
                                      +
                                      +
                                      + +
                                      + 表单 +
                                      +
                                      +
                                      + +
                                      + 安全 +
                                      +
                                      +
                                      + +
                                      + 公告 +
                                      +
                                      +
                                      + +
                                      + 更多 +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + 代办任务 +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      待审评论
                                      +
                                      21
                                      +
                                      +
                                      +
                                      +
                                      +
                                      待审帖子
                                      +
                                      32
                                      +
                                      +
                                      +
                                      +
                                      +
                                      待审文章
                                      +
                                      14
                                      +
                                      +
                                      +
                                      +
                                      +
                                      待审用户
                                      +
                                      63
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      留言板
                                      +
                                      +
                                        +
                                      • +

                                        要不要作为我的家人,搬来我家。

                                        + 12月25日 19:92 + 回复 +
                                      • +
                                      • +

                                        快乐的时候不敢尽兴,频繁警戒自己保持清醒。

                                        + 4月30日 22:43 + 回复 +
                                      • +
                                      • +

                                        夏天真的来了,尽管它还有些犹豫。

                                        + 4月30日 22:43 + 回复 +
                                      • +
                                      • +

                                        看似不可达到的高度,只要坚持不懈就可能到达。

                                        + 4月30日 22:43 + 回复 +
                                      • +
                                      • +

                                        当浑浊变成了一种常态,那么清白就成了一种罪过。

                                        + 4月30日 22:43 + 回复 +
                                      • +
                                      • +

                                        那是一种内在的东西,他们到达不了,也无法触及!

                                        + 5月12日 01:25 + 回复 +
                                      • + +
                                      • +

                                        希望是一个好东西,也许是最好的,好东西是不会消亡的!

                                        + 6月11日 15:33 + 回复 +
                                      • +
                                      • +

                                        一切都在不可避免的走向庸俗。

                                        + 2月09日 13:40 + 回复 +
                                      • +
                                      • +

                                        路上没有灯火的时候,就点亮自己的头颅。

                                        + 3月11日 12:30 + 回复 +
                                      • + +
                                      • +

                                        我们应该不虚度一生,应该能够说:"我已经做了我能做的事。"

                                        + 4月30日 22:43 + 回复 +
                                      • + +
                                      • +

                                        接近,是我对一切的态度,是我对一切态度的距离

                                        + 6月11日 15:33 + 回复 +
                                      • +
                                      • +

                                        没有锚的船当然也可以航行,只是紧张充满你的一生。

                                        + 2月09日 13:40 + 回复 +
                                      • +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + + + + \ No newline at end of file diff --git a/view/console/console1.html b/view/console/console1.html deleted file mode 100644 index e69de29..0000000 diff --git a/view/console/console2.html b/view/console/console2.html deleted file mode 100644 index e69de29..0000000 -- Gitee From 0081d33f5decbe4934be7b49243cf4446548ce07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Fri, 30 Jun 2023 17:56:10 +0800 Subject: [PATCH 040/141] update --- admin/css/admin.dark.css | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 654b9d4..3ed7194 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -25,6 +25,16 @@ color: #ffffff !important; } +.pear-admin-dark .layui-header .layui-nav .layui-nav-child { + box-shadow: 0 3px 4px rgba(0, 0, 0, .6) !important; + background-color: #141414; + border-color: #141414; +} + +.pear-admin-dark .layui-header .layui-nav .layui-nav-child dd > a:hover { + background-color: #141414 !important; +} + .pear-admin-dark .layui-header .pear-nav-control .layui-this a{ background-color: #0c0c0c !important; } -- Gitee From eeb6137dea1b4ba5b487842b6846f5f32406510c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sat, 1 Jul 2023 11:32:55 +0800 Subject: [PATCH 041/141] =?UTF-8?q?=E7=A7=BB=E9=99=A4=20theme.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/pear/module/admin.js | 11 +++++++---- component/pear/module/theme.js | 16 ---------------- component/pear/pear.js | 5 +---- 3 files changed, 8 insertions(+), 24 deletions(-) delete mode 100644 component/pear/module/theme.js diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index dd62f21..8a973c5 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -1,4 +1,4 @@ -layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'theme', 'fullscreen', 'messageCenter'], +layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'fullscreen', 'messageCenter'], function (exports) { "use strict"; @@ -9,8 +9,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't menu = layui.menu, messageCenter = layui.messageCenter, fullscreen = layui.fullscreen, - tabPage = layui.tabPage, - theme = layui.theme; + tabPage = layui.tabPage; var bodyFrame; @@ -222,6 +221,10 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't }, param.other.keepLoad) } + this.changeTheme = function() { + document.documentElement.style.setProperty("--global-primary-color", localStorage.getItem("theme-color-color")); + } + this.themeRender = function (option) { if (option.theme.allowCustom === false) { $(".setting").remove(); @@ -231,7 +234,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 't localStorage.setItem("theme-color", currentColor.id); localStorage.setItem("theme-color-color", currentColor.color); localStorage.setItem("theme-color-second", currentColor.second); - theme.changeTheme(); + pearAdmin.changeTheme(); var menu = localStorage.getItem("theme-menu"); if (menu === null) { diff --git a/component/pear/module/theme.js b/component/pear/module/theme.js deleted file mode 100644 index 76c5a1d..0000000 --- a/component/pear/module/theme.js +++ /dev/null @@ -1,16 +0,0 @@ -layui.define(["jquery","layer"], function (exports) { - var MOD_NAME = 'theme', - $ = layui.jquery; - - var theme = {}; - - theme.changeTheme = function () { - - var color = localStorage.getItem("theme-color-color"); - - document.documentElement.style.setProperty("--global-primary-color", color); - - } - - exports(MOD_NAME, theme); -}); \ No newline at end of file diff --git a/component/pear/pear.js b/component/pear/pear.js index a92f3f3..630f74e 100644 --- a/component/pear/pear.js +++ b/component/pear/pear.js @@ -16,7 +16,6 @@ layui.config({ fullscreen:"fullscreen", messageCenter: "messageCenter", button: "button", - theme: "theme", popup:"extends/popup", count:"extends/count", toast:"extends/toast", @@ -24,6 +23,4 @@ layui.config({ echarts: "extends/echarts", echartsTheme: "extends/echartsTheme", yaml:"extends/yaml" -}).use(['layer', 'theme'], function () { - -}); \ No newline at end of file +}).use([], function () {}); \ No newline at end of file -- Gitee From 17863ab84d362e603a5721b70c22c92f5e3885b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sat, 1 Jul 2023 19:23:07 +0800 Subject: [PATCH 042/141] update --- admin/css/other/analysis.css | 136 ++++++++++++ admin/css/other/staging.css | 0 admin/css/reset.css | 11 + admin/data/menu.json | 18 +- view/analysis/index.html | 388 +++++++++++++++++++++++++++++++++++ view/console/console.html | 2 +- view/staging/index.html | 325 +++++++++++++++++++++++++++++ 7 files changed, 878 insertions(+), 2 deletions(-) create mode 100644 admin/css/other/analysis.css create mode 100644 admin/css/other/staging.css create mode 100644 view/analysis/index.html create mode 100644 view/staging/index.html diff --git a/admin/css/other/analysis.css b/admin/css/other/analysis.css new file mode 100644 index 0000000..164d208 --- /dev/null +++ b/admin/css/other/analysis.css @@ -0,0 +1,136 @@ +.top-panel { + border-radius: 4px; + text-align: center; +} + +.top-panel>.layui-card-body { + height: 60px; +} + +.top-panel-number { + line-height: 60px; + font-size: 29px; + border-right: 1px solid #eceff9; +} + +.top-panel-tips { + padding-left: 8px; + padding-top: 16px; + line-height: 30px; + font-size: 12px; +} + +.card { + width: 100%; + height: 160px; + background-color: whitesmoke; + border-radius: 4px; +} + +.card .header .avatar { + width: 28px; + height: 28px; + margin: 20px; + border-radius: 50px; +} + +.card .header { + color: dimgray; +} + +.card .body { + color: gray; +} + +.card .body { + margin-left: 20px; + margin-right: 20px; +} + +.card .footer { + margin-left: 20px; + margin-right: 20px; + margin-top: 20px; + font-size: 13px; + color: gray; + position: absolute; +} + +.custom-tab .layui-tab-title { + border-bottom-width: 0px; + border-bottom-style: none; +} + +.custom-tab .layui-tab-title li { + margin-left: 10px; +} + +.list .list-item { + height: 31.8px; + line-height: 31.8px; + color: gray; + padding: 5px; + padding-left: 15px; + border-radius: 4px; + margin-top: 5.2px; +} + +.list .list-item:hover { + background-color: whitesmoke; +} + +.list .list-item .title { + font-size: 13px; + width: 100%; +} + +.list .list-item .footer { + position: absolute; + right: 30px; + font-size: 12px; +} + +.top-panel-tips i { + font-size: 33px; +} + +.layuiadmin-card-status { + padding: 0 10px 10px; +} + +.layuiadmin-card-status dd { + padding: 15px 0; + border-bottom: 1px solid #EEE; + display: -webkit-flex; + display: flex; +} + +.layuiadmin-card-status dd div.layui-status-img, +.layuiadmin-card-team .layui-team-img { + width: 32px; + height: 32px; + border-radius: 50%; + margin-right: 15px; +} + +.layuiadmin-card-status dd div.layui-status-img a { + width: 100%; + height: 100%; + display: inline-block; + text-align: center; + line-height: 32px; +} + +.layuiadmin-card-status dd div span { + color: #BBB; +} + +.layuiadmin-card-status dd div a { + color: #01AAED; +} + +.top-panel-tips svg { + margin-top: -12px; + width: 50px; + height: 50px; +} \ No newline at end of file diff --git a/admin/css/other/staging.css b/admin/css/other/staging.css new file mode 100644 index 0000000..e69de29 diff --git a/admin/css/reset.css b/admin/css/reset.css index 7878212..1160504 100644 --- a/admin/css/reset.css +++ b/admin/css/reset.css @@ -33,4 +33,15 @@ .layui-card { border-radius: var(--global-border-radius); +} + +.layui-card-footer { + position: relative; + height: 42px; + line-height: 42px; + padding: 0 15px; + border-top: 1px solid #f8f8f8; + color: #333; + border-radius: 2px 2px 0 0; + font-size: 14px; } \ No newline at end of file diff --git a/admin/data/menu.json b/admin/data/menu.json index c0bb2ed..30f4fff 100644 --- a/admin/data/menu.json +++ b/admin/data/menu.json @@ -5,11 +5,27 @@ "type": 0, "children": [{ "id": "11", - "title": "数据分析", + "title": "控制台", "icon": "layui-icon layui-icon-console", "type": 1, "openType": "_component", "href": "view/console/console.html" + }, + { + "id": "12", + "title": "分析页", + "icon": "layui-icon layui-icon-console", + "type": 1, + "openType": "_component", + "href": "view/analysis/index.html" + }, + { + "id": "13", + "title": "工作台", + "icon": "layui-icon layui-icon-console", + "type": 1, + "openType": "_component", + "href": "view/staging/index.html" }] }, { diff --git a/view/analysis/index.html b/view/analysis/index.html new file mode 100644 index 0000000..a5a34ba --- /dev/null +++ b/view/analysis/index.html @@ -0,0 +1,388 @@ + + + + + + 控制后台 + + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      今日访问
                                      +
                                      +
                                      +
                                      + 0 +
                                      +
                                      + + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      提交次数
                                      +
                                      +
                                      +
                                      + 0 +
                                      +
                                      + + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      下载数量
                                      +
                                      +
                                      +
                                      + 0 +
                                      +
                                      + + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      流量统计
                                      +
                                      +
                                      +
                                      + 0 +
                                      +
                                      + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      +
                                      最初,Layui 在爱与期许中孵化。
                                      +
                                      +
                                      +
                                      + +
                                      +
                                      最初,Layui 在爱与期许中孵化。
                                      +
                                      +
                                      +
                                      + +
                                      +
                                      最初,Layui 在爱与期许中孵化。
                                      +
                                      +
                                      +
                                      + +
                                      +
                                      最初,Layui 在爱与期许中孵化。
                                      +
                                      +
                                      +
                                      + +
                                      +
                                      最初,Layui 在爱与期许中孵化。
                                      +
                                      +
                                      +
                                      + +
                                      +
                                      最初,Layui 在爱与期许中孵化。
                                      +
                                      +
                                      +
                                      + +
                                      +
                                      最初,Layui 在爱与期许中孵化。
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +

                                      就眠儀式 在 讨论区 回答了 夏娜 提出得问题 +

                                      + 昨天 +
                                      +
                                      +
                                      +
                                      +
                                      +

                                      就眠儀式 在 讨论区 回答了 夏娜 提出得问题 +

                                      + 昨天 +
                                      +
                                      +
                                      +
                                      +
                                      +

                                      就眠儀式 在 讨论区 回答了 夏娜 提出得问题 +

                                      + 昨天 +
                                      +
                                      +
                                      +
                                      +
                                      +

                                      就眠儀式 在 讨论区 回答了 夏娜 提出得问题 +

                                      + 昨天 +
                                      +
                                      +
                                      +
                                      +
                                      +

                                      就眠儀式 在 讨论区 回答了 夏娜 提出得问题 +

                                      + 昨天 +
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      +
                                      Hello Word
                                      +
                                      +
                                      +
                                      +
                                      + 寄语 +
                                      +
                                      + 原想将澎湃的爱平平稳稳放置你手心,奈何我徒有一股蛮劲,只顾向你跑去,一个不稳跌的满身脏兮兮。试图爬起的我, + 心想你会不会笑我 " 献爱献的这样笨拙, 怎么不知避开爱里的埋伏 " +
                                      +
                                      +
                                      +
                                      +
                                      + + + + \ No newline at end of file diff --git a/view/console/console.html b/view/console/console.html index a324f45..c2618f5 100644 --- a/view/console/console.html +++ b/view/console/console.html @@ -126,7 +126,7 @@
                                    -
                                    +
                                    diff --git a/view/staging/index.html b/view/staging/index.html new file mode 100644 index 0000000..002b3d0 --- /dev/null +++ b/view/staging/index.html @@ -0,0 +1,325 @@ + + + + + + 工作台 + + + + + + + +
                                    +
                                    +
                                    +
                                    +
                                    + 最近更新 +
                                    +
                                    +
                                    +
                                    +
                                    + +

                                    修复开启 isLazyimg:true 后, 图片懒加载但是图片不存在的报错问题

                                    + +
                                    +
                                    +
                                    +
                                    + +

                                    修复开启 isLazyimg:true 后, 图片懒加载但是图片不存在的报错问题

                                    + +
                                    +
                                    +
                                    +
                                    + +

                                    修复开启 isLazyimg:true 后, 图片懒加载但是图片不存在的报错问题

                                    + +
                                    +
                                    +
                                    +
                                    + +

                                    修复开启 isLazyimg:true 后, 图片懒加载但是图片不存在的报错问题

                                    + +
                                    +
                                    +
                                    +
                                    + +

                                    修复开启 isLazyimg:true 后, 图片懒加载但是图片不存在的报错问题

                                    + +
                                    +
                                    +
                                    +
                                    + +

                                    修复开启 isLazyimg:true 后, 图片懒加载但是图片不存在的报错问题

                                    + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +

                                    就眠儀式 在 讨论区 回答了 夏娜 提出得问题 +

                                    + 昨天 +
                                    +
                                    +
                                    +
                                    +
                                    +

                                    就眠儀式 在 讨论区 回答了 夏娜 提出得问题 +

                                    + 昨天 +
                                    +
                                    +
                                    +
                                    +
                                    +

                                    就眠儀式 在 讨论区 回答了 夏娜 提出得问题 +

                                    + 昨天 +
                                    +
                                    +
                                    +
                                    +
                                    +

                                    就眠儀式 在 讨论区 回答了 夏娜 提出得问题 +

                                    + 昨天 +
                                    +
                                    +
                                    +
                                    +
                                    +

                                    就眠儀式 在 讨论区 回答了 夏娜 提出得问题 +

                                    + 昨天 +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    快捷导航
                                    + +
                                    +
                                    +
                                    八卦新闻
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    产品动态
                                    +
                                    +
                                    +
                                    + +
                                    +
                                    时来天地皆同力,运去英雄不自由。
                                    +
                                    +
                                    +
                                    + +
                                    +
                                    时来天地皆同力,运去英雄不自由。
                                    +
                                    +
                                    +
                                    + +
                                    +
                                    时来天地皆同力,运去英雄不自由。
                                    +
                                    +
                                    +
                                    + +
                                    +
                                    时来天地皆同力,运去英雄不自由。
                                    +
                                    +
                                    +
                                    + +
                                    +
                                    时来天地皆同力,运去英雄不自由。
                                    +
                                    +
                                    +
                                    + +
                                    +
                                    时来天地皆同力,运去英雄不自由。
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + + + + + + \ No newline at end of file -- Gitee From 11a39b89cce331ece62923c504349f4b193f0da8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sat, 1 Jul 2023 19:25:46 +0800 Subject: [PATCH 043/141] update --- admin/data/menu.json | 10 +- view/staging/index.html | 325 ---------------------------------------- 2 files changed, 1 insertion(+), 334 deletions(-) delete mode 100644 view/staging/index.html diff --git a/admin/data/menu.json b/admin/data/menu.json index 30f4fff..47dce08 100644 --- a/admin/data/menu.json +++ b/admin/data/menu.json @@ -5,7 +5,7 @@ "type": 0, "children": [{ "id": "11", - "title": "控制台", + "title": "工作台", "icon": "layui-icon layui-icon-console", "type": 1, "openType": "_component", @@ -18,14 +18,6 @@ "type": 1, "openType": "_component", "href": "view/analysis/index.html" - }, - { - "id": "13", - "title": "工作台", - "icon": "layui-icon layui-icon-console", - "type": 1, - "openType": "_component", - "href": "view/staging/index.html" }] }, { diff --git a/view/staging/index.html b/view/staging/index.html deleted file mode 100644 index 002b3d0..0000000 --- a/view/staging/index.html +++ /dev/null @@ -1,325 +0,0 @@ - - - - - - 工作台 - - - - - - - -
                                    -
                                    -
                                    -
                                    -
                                    - 最近更新 -
                                    -
                                    -
                                    -
                                    -
                                    - -

                                    修复开启 isLazyimg:true 后, 图片懒加载但是图片不存在的报错问题

                                    - -
                                    -
                                    -
                                    -
                                    - -

                                    修复开启 isLazyimg:true 后, 图片懒加载但是图片不存在的报错问题

                                    - -
                                    -
                                    -
                                    -
                                    - -

                                    修复开启 isLazyimg:true 后, 图片懒加载但是图片不存在的报错问题

                                    - -
                                    -
                                    -
                                    -
                                    - -

                                    修复开启 isLazyimg:true 后, 图片懒加载但是图片不存在的报错问题

                                    - -
                                    -
                                    -
                                    -
                                    - -

                                    修复开启 isLazyimg:true 后, 图片懒加载但是图片不存在的报错问题

                                    - -
                                    -
                                    -
                                    -
                                    - -

                                    修复开启 isLazyimg:true 后, 图片懒加载但是图片不存在的报错问题

                                    - -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -

                                    就眠儀式 在 讨论区 回答了 夏娜 提出得问题 -

                                    - 昨天 -
                                    -
                                    -
                                    -
                                    -
                                    -

                                    就眠儀式 在 讨论区 回答了 夏娜 提出得问题 -

                                    - 昨天 -
                                    -
                                    -
                                    -
                                    -
                                    -

                                    就眠儀式 在 讨论区 回答了 夏娜 提出得问题 -

                                    - 昨天 -
                                    -
                                    -
                                    -
                                    -
                                    -

                                    就眠儀式 在 讨论区 回答了 夏娜 提出得问题 -

                                    - 昨天 -
                                    -
                                    -
                                    -
                                    -
                                    -

                                    就眠儀式 在 讨论区 回答了 夏娜 提出得问题 -

                                    - 昨天 -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    快捷导航
                                    - -
                                    -
                                    -
                                    八卦新闻
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    产品动态
                                    -
                                    -
                                    -
                                    - -
                                    -
                                    时来天地皆同力,运去英雄不自由。
                                    -
                                    -
                                    -
                                    - -
                                    -
                                    时来天地皆同力,运去英雄不自由。
                                    -
                                    -
                                    -
                                    - -
                                    -
                                    时来天地皆同力,运去英雄不自由。
                                    -
                                    -
                                    -
                                    - -
                                    -
                                    时来天地皆同力,运去英雄不自由。
                                    -
                                    -
                                    -
                                    - -
                                    -
                                    时来天地皆同力,运去英雄不自由。
                                    -
                                    -
                                    -
                                    - -
                                    -
                                    时来天地皆同力,运去英雄不自由。
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    - - - - - - \ No newline at end of file -- Gitee From bd2efac19099ce6c31a3b1ed0d0ec1233cd06299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sat, 1 Jul 2023 19:29:45 +0800 Subject: [PATCH 044/141] update --- admin/css/other/staging.css | 0 admin/css/reset.css | 11 ++--------- component/pear/module/admin.js | 8 ++++---- 3 files changed, 6 insertions(+), 13 deletions(-) delete mode 100644 admin/css/other/staging.css diff --git a/admin/css/other/staging.css b/admin/css/other/staging.css deleted file mode 100644 index e69de29..0000000 diff --git a/admin/css/reset.css b/admin/css/reset.css index 1160504..5406808 100644 --- a/admin/css/reset.css +++ b/admin/css/reset.css @@ -35,13 +35,6 @@ border-radius: var(--global-border-radius); } -.layui-card-footer { - position: relative; - height: 42px; - line-height: 42px; - padding: 0 15px; - border-top: 1px solid #f8f8f8; - color: #333; - border-radius: 2px 2px 0 0; - font-size: 14px; +.layui-timeline-axis { + color: var(--global-primary-color); } \ No newline at end of file diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 8a973c5..e22d236 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -795,7 +795,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f form.on('switch(auto-head)', function (data) { localStorage.setItem("auto-head", this.checked); - theme.changeTheme(); + pearAdmin.changeTheme(); }) form.on('switch(banner)', function (data) { @@ -863,10 +863,10 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f localStorage.setItem("theme-header", headerColor); if (theme == "auto-theme") { localStorage.setItem("auto-head", true); - theme.changeTheme(); + pearAdmin.changeTheme(); } else { localStorage.setItem("auto-head", false); - theme.changeTheme(); + pearAdmin.changeTheme(); } pearAdmin.headerSkin(headerColor); }); @@ -879,7 +879,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f localStorage.setItem("theme-color", currentColor.id); localStorage.setItem("theme-color-color", currentColor.color); localStorage.setItem("theme-color-second", currentColor.second); - theme.changeTheme(); + pearAdmin.changeTheme(); }); function applyConfig(param) { -- Gitee From d9efeadba8b1e45fc4fc514286784df7256c4dbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sat, 1 Jul 2023 19:32:19 +0800 Subject: [PATCH 045/141] update --- component/pear/module/admin.js | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index e22d236..5541619 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -539,7 +539,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f $layer.css("border-radius", "6px"); $input.off("focus").focus(); - // 搜索菜单 + // 搜索输入事件 $input.off("input").on("input", debounce(function () { var keywords = $input.val().trim(); var filteredMenus = filterHandle(menuData, keywords); @@ -558,7 +558,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f $content.css("height", currentHeight); }, 500) ) - // 搜索列表点击事件 + // 列表点击事件 $list.off("click").on("click", "li", function () { var menuId = $(this).attr("smenu-id"); var menuUrl = $(this).attr("smenu-url"); @@ -586,7 +586,6 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f }) // 监听键盘事件 - // Enter:13 Spacebar:32 UpArrow:38 DownArrow:40 Esc:27 $(document).off("keydown").keydown(function (e) { if (e.keyCode === 13 || e.keyCode === 32) { e.preventDefault(); @@ -939,18 +938,6 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f } } - function isAutoHead(option) { - if (option.theme.allowCustom) { - if (localStorage.getItem("auto-head") != null) { - return localStorage.getItem("auto-head"); - } else { - return option.other.autoHead; - } - } else { - return option.other.autoHead; - } - } - function isMuiltTab(option) { if (option.theme.allowCustom) { if (localStorage.getItem("muilt-tab") != null) { -- Gitee From 86b0535e7122783743a1d6b1f995982c09835b11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sat, 1 Jul 2023 21:22:19 +0800 Subject: [PATCH 046/141] update --- admin/css/admin.dark.css | 13 +++++++++++++ component/pear/module/admin.js | 2 +- index.html | 1 - 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 3ed7194..7a56e0d 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -217,6 +217,12 @@ background-color: #1d1e1f !important; } +/** timeline */ +.pear-admin-dark .layui-timeline-axis { + background-color: rgb(29, 30, 31) !important; +} + + /** toast */ .pear-admin-dark .iziToast { background-color: #1f1f1f !important; @@ -238,6 +244,13 @@ border-bottom: 1px solid rgba(0, 0, 0, .40) !important; } +/** analysis */ +.pear-admin-dark .top-panel-number { + color: #ffffff !important; + border-color: #414243; +} + + /** success failure */ .pear-admin-dark .pear-result .content { background-color: rgba(153, 153, 153, 0.12); diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 5541619..5a20bdd 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -860,7 +860,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f $('[data-select-header]').removeClass("layui-this"); $(this).addClass("layui-this"); localStorage.setItem("theme-header", headerColor); - if (theme == "auto-theme") { + if (headerColor == "auto-theme") { localStorage.setItem("auto-head", true); pearAdmin.changeTheme(); } else { diff --git a/index.html b/index.html index 970ad9e..a6fd95a 100644 --- a/index.html +++ b/index.html @@ -111,7 +111,6 @@ resolve(true) }); }) - }) -- Gitee From e20f933f2c757bcdfb6a41e43232ae0cc655204c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sat, 1 Jul 2023 21:47:01 +0800 Subject: [PATCH 047/141] update --- admin/css/admin.dark.css | 8 +++ admin/css/other/analysis.css | 95 +++++------------------------------- view/analysis/index.html | 12 ++--- 3 files changed, 26 insertions(+), 89 deletions(-) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 7a56e0d..e6ec042 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -222,6 +222,10 @@ background-color: rgb(29, 30, 31) !important; } +.pear-admin-dark .layui-timeline-item:before { + background-color: #414243 !important; +} + /** toast */ .pear-admin-dark .iziToast { @@ -251,6 +255,10 @@ } +.pear-admin-dark .dynamic-status dd { + border-color: #414243; +} + /** success failure */ .pear-admin-dark .pear-result .content { background-color: rgba(153, 153, 153, 0.12); diff --git a/admin/css/other/analysis.css b/admin/css/other/analysis.css index 164d208..3525a21 100644 --- a/admin/css/other/analysis.css +++ b/admin/css/other/analysis.css @@ -20,100 +20,35 @@ font-size: 12px; } -.card { - width: 100%; - height: 160px; - background-color: whitesmoke; - border-radius: 4px; -} - -.card .header .avatar { - width: 28px; - height: 28px; - margin: 20px; - border-radius: 50px; -} - -.card .header { - color: dimgray; -} - -.card .body { - color: gray; -} - -.card .body { - margin-left: 20px; - margin-right: 20px; -} - -.card .footer { - margin-left: 20px; - margin-right: 20px; - margin-top: 20px; - font-size: 13px; - color: gray; - position: absolute; -} - -.custom-tab .layui-tab-title { - border-bottom-width: 0px; - border-bottom-style: none; -} - -.custom-tab .layui-tab-title li { - margin-left: 10px; -} - -.list .list-item { - height: 31.8px; - line-height: 31.8px; - color: gray; - padding: 5px; - padding-left: 15px; - border-radius: 4px; - margin-top: 5.2px; -} - -.list .list-item:hover { - background-color: whitesmoke; -} - -.list .list-item .title { - font-size: 13px; - width: 100%; -} - -.list .list-item .footer { - position: absolute; - right: 30px; - font-size: 12px; -} - .top-panel-tips i { font-size: 33px; } -.layuiadmin-card-status { +.top-panel-tips svg { + margin-top: -12px; + width: 50px; + height: 50px; +} + +.dynamic-status { padding: 0 10px 10px; } -.layuiadmin-card-status dd { +.dynamic-status dd { padding: 15px 0; border-bottom: 1px solid #EEE; display: -webkit-flex; display: flex; } -.layuiadmin-card-status dd div.layui-status-img, -.layuiadmin-card-team .layui-team-img { +.dynamic-status dd div.dynamic-status-img { width: 32px; height: 32px; border-radius: 50%; margin-right: 15px; } -.layuiadmin-card-status dd div.layui-status-img a { +.dynamic-status dd div.dynamic-status-img a { width: 100%; height: 100%; display: inline-block; @@ -121,16 +56,10 @@ line-height: 32px; } -.layuiadmin-card-status dd div span { +.dynamic-status dd div span { color: #BBB; } -.layuiadmin-card-status dd div a { +.dynamic-status dd div a { color: #01AAED; -} - -.top-panel-tips svg { - margin-top: -12px; - width: 50px; - height: 50px; } \ No newline at end of file diff --git a/view/analysis/index.html b/view/analysis/index.html index a5a34ba..8f26efc 100644 --- a/view/analysis/index.html +++ b/view/analysis/index.html @@ -207,9 +207,9 @@
                                    -
                                    +
                                    -
                                    @@ -221,7 +221,7 @@
                                    -
                                    @@ -233,7 +233,7 @@
                                    -
                                    @@ -245,7 +245,7 @@
                                    -
                                    @@ -257,7 +257,7 @@
                                    -
                                    -- Gitee From 3fb9cb076add8a5030cf9692f69e47736ab3c8db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 2 Jul 2023 00:47:11 +0800 Subject: [PATCH 048/141] update --- admin/data/menu.json | 21 +++++++++++---------- component/pear/module/admin.js | 8 ++++---- config/pear.config.yml | 6 +++--- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/admin/data/menu.json b/admin/data/menu.json index 47dce08..8bd2242 100644 --- a/admin/data/menu.json +++ b/admin/data/menu.json @@ -3,21 +3,22 @@ "title": "工作空间", "icon": "layui-icon layui-icon-console", "type": 0, - "children": [{ + "children": [ + { + "id": "10", + "title": "分析页", + "icon": "layui-icon layui-icon-console", + "type": 1, + "openType": "_component", + "href": "view/analysis/index.html" + }, + { "id": "11", "title": "工作台", "icon": "layui-icon layui-icon-console", "type": 1, "openType": "_component", "href": "view/console/console.html" - }, - { - "id": "12", - "title": "分析页", - "icon": "layui-icon layui-icon-console", - "type": 1, - "openType": "_component", - "href": "view/analysis/index.html" }] }, { @@ -28,7 +29,7 @@ "children": [ { "id": 23, - "title": "24 栅格", + "title": "高级栅格", "icon": "layui-icon layui-icon-face-smile", "type": 1, "openType": "_component", diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 5a20bdd..a46b341 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -10,15 +10,15 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f messageCenter = layui.messageCenter, fullscreen = layui.fullscreen, tabPage = layui.tabPage; - - var bodyFrame; var sideMenu; - var bodyTab; - var config; + var bodyTab; + + var bodyFrame; + var logout = function () { }; var body = $('body'); diff --git a/config/pear.config.yml b/config/pear.config.yml index 7b82a83..828a114 100644 --- a/config/pear.config.yml +++ b/config/pear.config.yml @@ -19,7 +19,7 @@ menu: ## 顶部菜单宽度 PX controlWidth: 500 ## 默认选中的菜单项 - select: "11" + select: "10" ## 是否开启异步菜单,false 时 data 属性设置为静态数据,true 时为后端接口 async: true ## 视图内容配置 @@ -36,8 +36,8 @@ tab: max: "30" ## 首页 index: - id: "11" ## 标识 ID , 建议与菜单项中的 ID 一致 - href: "view/console/console.html" ## 页面地址 + id: "10" ## 标识 ID , 建议与菜单项中的 ID 一致 + href: "view/analysis/index.html" ## 页面地址 title: "首页" ## 标题 ## 主题配置 theme: -- Gitee From 550d7a26b1b1b77225ea363282bc1f71f9804408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 2 Jul 2023 11:22:34 +0800 Subject: [PATCH 049/141] update --- admin/css/login.css | 73 ++++---------------------- admin/css/register.css | 12 +++++ index.html | 2 +- login.html | 77 --------------------------- view/login.html | 103 ++++++++++++++++++++++++++++++++++++ view/register.html | 116 +++++++++++++++++++++++++++++++++++++++++ 6 files changed, 241 insertions(+), 142 deletions(-) create mode 100644 admin/css/register.css delete mode 100644 login.html create mode 100644 view/login.html create mode 100644 view/register.html diff --git a/admin/css/login.css b/admin/css/login.css index fcabedd..57e5d3e 100644 --- a/admin/css/login.css +++ b/admin/css/login.css @@ -1,67 +1,12 @@ -.layui-form { - width: 360px !important; - margin: auto !important; - margin-top: 160px !important; +.demo-login-container { + width: 320px; + margin: 220px auto 0; } -.layui-form button { - font-size: 16px; - width: 100%; - height: 40px; - line-height: 40px; - font-size: 14px; - border-radius: 4px; -} - -.layui-form-checked[lay-skin=primary] i { - color: #fff !important; -} - -.layui-tab-content { - margin-top: 15px !important; - padding-left: 0px !important; - padding-right: 0px !important; -} - -.layui-form-item { - margin-top: 20px !important; -} - -.layui-form-item .layui-form-checkbox[lay-skin=primary] { - margin-top: 0px !important; -} - -.layui-input { - height: 40px !important; - line-height: 40px !important; - border-radius: 4px !important; -} - -body { - background-size: cover; - background-color: #f0f2f5; - background-repeat:no-repeat; - } - -.code { - float: left; - margin-right: 13px; - margin: 0px !important; - border: #e6e6e6 1px solid; - display: inline-block!important; -} - -.codeImage { - float: right; - height: 40px; - border-radius: 4px; - box-sizing: border-box; - border: #e6e6e6 1px solid; - cursor: pointer; -} - -@media (max-width:768px){ - body{ - background-position:center; - } +.demo-login-other .layui-icon { + position: relative; + display: inline-block; + margin: 0 2px; + top: 2px; + font-size: 26px; } \ No newline at end of file diff --git a/admin/css/register.css b/admin/css/register.css new file mode 100644 index 0000000..4daab57 --- /dev/null +++ b/admin/css/register.css @@ -0,0 +1,12 @@ +.demo-reg-container { + width: 320px; + margin: 220px auto 0; +} + +.demo-reg-other .layui-icon { + position: relative; + display: inline-block; + margin: 0 2px; + top: 2px; + font-size: 26px; +} \ No newline at end of file diff --git a/index.html b/index.html index a6fd95a..d24a10a 100644 --- a/index.html +++ b/index.html @@ -103,7 +103,7 @@ admin.logout(function(){ popup.success("注销成功",function(){ - location.href = "login.html"; + location.href = "../view/login.html"; }) // 清空 tabs 缓存 diff --git a/login.html b/login.html deleted file mode 100644 index 810fa96..0000000 --- a/login.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - 登录 - - - - - - - -
                                    -
                                    -
                                    -
                                    - -
                                    - -
                                    -
                                    -
                                    -
                                    -
                                    - -
                                    - -
                                    -
                                    -
                                    - - -
                                    -
                                    - -
                                    -
                                    - -
                                    -
                                    - - - - - - - \ No newline at end of file diff --git a/view/login.html b/view/login.html new file mode 100644 index 0000000..9a488ba --- /dev/null +++ b/view/login.html @@ -0,0 +1,103 @@ + + + + + + + 登录 + + + + + +
                                    + +
                                    + + + + + + + \ No newline at end of file diff --git a/view/register.html b/view/register.html new file mode 100644 index 0000000..50e7681 --- /dev/null +++ b/view/register.html @@ -0,0 +1,116 @@ + + + + + + + 注册 + + + + + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    + +
                                    + +
                                    +
                                    + + + + + + + 登录已有帐号 +
                                    +
                                    +
                                    + + + + + + + \ No newline at end of file -- Gitee From c7e9c89f410d39df79f3daca8877838bcea26c47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 2 Jul 2023 11:27:45 +0800 Subject: [PATCH 050/141] update --- admin/css/{ => other}/login.css | 0 admin/css/{ => other}/register.css | 0 view/login.html | 2 +- view/register.html | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) rename admin/css/{ => other}/login.css (100%) rename admin/css/{ => other}/register.css (100%) diff --git a/admin/css/login.css b/admin/css/other/login.css similarity index 100% rename from admin/css/login.css rename to admin/css/other/login.css diff --git a/admin/css/register.css b/admin/css/other/register.css similarity index 100% rename from admin/css/register.css rename to admin/css/other/register.css diff --git a/view/login.html b/view/login.html index 9a488ba..4a1d45c 100644 --- a/view/login.html +++ b/view/login.html @@ -6,7 +6,7 @@ 登录 - + diff --git a/view/register.html b/view/register.html index 50e7681..1a274f4 100644 --- a/view/register.html +++ b/view/register.html @@ -6,7 +6,7 @@ 注册 - + -- Gitee From be1dda6a7ebd1d6d6e795942e0c933ae89ac3651 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 2 Jul 2023 12:01:07 +0800 Subject: [PATCH 051/141] update --- index.html | 2 +- view/login.html => login.html | 10 +-- register.html | 122 ++++++++++++++++++++++++++++++++++ view/analysis/index.html | 6 +- view/component/toast.html | 60 +++++++++++++++-- view/register.html | 116 -------------------------------- 6 files changed, 187 insertions(+), 129 deletions(-) rename view/login.html => login.html (92%) create mode 100644 register.html delete mode 100644 view/register.html diff --git a/index.html b/index.html index d24a10a..954ed4f 100644 --- a/index.html +++ b/index.html @@ -103,7 +103,7 @@ admin.logout(function(){ popup.success("注销成功",function(){ - location.href = "../view/login.html"; + location.href = "./login.html"; }) // 清空 tabs 缓存 diff --git a/view/login.html b/login.html similarity index 92% rename from view/login.html rename to login.html index 4a1d45c..6cfc396 100644 --- a/view/login.html +++ b/login.html @@ -5,8 +5,8 @@ 登录 - - + + @@ -69,8 +69,8 @@
                                    - - + + + + + + + \ No newline at end of file diff --git a/view/analysis/index.html b/view/analysis/index.html index 8f26efc..0e2acc7 100644 --- a/view/analysis/index.html +++ b/view/analysis/index.html @@ -348,10 +348,12 @@ var option = { xAxis: { type: 'category', - data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Bai', 'Fan', 'Yue', 'Qian'] + data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Bai', 'Fan', 'Yue', 'Qian'], + splitLine: false }, yAxis: { - type: 'value' + type: 'value', + splitLine: false }, grid: { x: '50px', diff --git a/view/component/toast.html b/view/component/toast.html index 863b2a3..c959a70 100644 --- a/view/component/toast.html +++ b/view/component/toast.html @@ -9,15 +9,28 @@
                                    -
                                    +
                                    基础使用
                                    - - - - + + + + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    位置选项
                                    +
                                    + + + + + +
                                    @@ -55,6 +68,43 @@ message: 'You forgot important data', }); }); + $(".toast-top-left-btn").click(function(){ + toast.info({ + message: 'You forgot important data', + position: 'topLeft' + }); + }) + $(".toast-top-center-btn").click(function(){ + toast.info({ + message: 'You forgot important data', + position: 'topCenter' + }); + }) + $(".toast-top-right-btn").click(function(){ + toast.info({ + message: 'You forgot important data', + position: 'topRight' + }); + }) + + $(".toast-bottom-left-btn").click(function(){ + toast.info({ + message: 'You forgot important data', + position: 'bottomLeft' + }); + }) + $(".toast-bottom-center-btn").click(function(){ + toast.info({ + message: 'You forgot important data', + position: 'bottomCenter' + }); + }) + $(".toast-bottom-right-btn").click(function(){ + toast.info({ + message: 'You forgot important data', + position: 'bottomRight' + }); + }) }); diff --git a/view/register.html b/view/register.html deleted file mode 100644 index 1a274f4..0000000 --- a/view/register.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - 注册 - - - - - -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    - -
                                    - -
                                    -
                                    -
                                    -
                                    - -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    - -
                                    - -
                                    -
                                    -
                                    -
                                    -
                                    - -
                                    - -
                                    -
                                    -
                                    -
                                    -
                                    - -
                                    - -
                                    -
                                    -
                                    -
                                    -
                                    - -
                                    - -
                                    -
                                    - -
                                    - -
                                    -
                                    - - - - - - - 登录已有帐号 -
                                    -
                                    -
                                    - - - - - - - \ No newline at end of file -- Gitee From abae63e032eb80a82d2d18c0c902b1898f3134c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 2 Jul 2023 15:56:20 +0800 Subject: [PATCH 052/141] update --- component/pear/module/admin.js | 54 ++++++++++++++------------------ component/pear/module/button.js | 2 ++ component/pear/module/tabPage.js | 12 +++---- index.html | 5 --- 4 files changed, 32 insertions(+), 41 deletions(-) diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index a46b341..417b7c8 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -13,7 +13,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f var sideMenu; - var config; + var configurationCache; var bodyTab; @@ -88,15 +88,26 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f */ this.render = (options) => { if (options !== undefined) { - applyConfig(options); + pearAdmin.apply(options); } else { this.configurationProvider().then((result) => { - applyConfig(result); + pearAdmin.apply(result); }) } } - this.messageRender = function(options) { + this.apply = function (configuration) { + configurationCache = configuration; + + pearAdmin.logoRender(configuration); + pearAdmin.menuRender(configuration); + pearAdmin.bodyRender(configuration); + pearAdmin.messageCenterRender(configuration); + pearAdmin.themeRender(configuration); + pearAdmin.keepLoad(configuration); + } + + this.messageCenterRender = function(options) { messageCenter.render({ elem: '.message', url: options.header.message, @@ -113,13 +124,11 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f sideMenu = menu.render({ elem: 'sideMenu', async: param.menu.async !== undefined ? param.menu.async : true, - theme: "dark-theme", - height: '100%', method: param.menu.method, - control: isControl(param) === 'true' || isControl(param) === true ? 'control' : false, // control + control: isControl(param) === 'true' || isControl(param) === true ? 'control' : false, controlWidth: param.menu.controlWidth, - defaultMenu: 0, accordion: param.menu.accordion, + defaultMenu: 0, url: param.menu.data, data: param.menu.data, parseData: false, @@ -144,10 +153,6 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f bodyTab = tabPage.render({ elem: 'content', - roll: true, - tool: true, - width: '100%', - height: '100%', session: param.tab.session, index: 0, tabMax: param.tab.max, @@ -196,7 +201,6 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f }) } else { - bodyFrame = page.render({ elem: 'content', title: '首页', @@ -386,7 +390,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f refreshA.addClass("layui-anim-rotate"); refreshA.addClass("layui-anim-loop"); refreshA.addClass("layui-icon-loading"); - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) bodyTab.refresh(true); + if (isMuiltTab(configurationCache) === "true" || isMuiltTab(configurationCache) === true) bodyTab.refresh(true); else bodyFrame.refresh(true); setTimeout(function () { refreshA.addClass("layui-icon-refresh-1"); @@ -645,7 +649,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f }); body.on("click", '[user-menu-id]', function () { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { + if (isMuiltTab(configurationCache) === "true" || isMuiltTab(configurationCache) === true) { bodyTab.addTabOnly({ id: $(this).attr("user-menu-id"), title: $(this).attr("user-menu-title"), @@ -881,28 +885,18 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f pearAdmin.changeTheme(); }); - function applyConfig(param) { - config = param; - pearAdmin.logoRender(param); - pearAdmin.menuRender(param); - pearAdmin.bodyRender(param); - pearAdmin.themeRender(param); - pearAdmin.messageRender(param); - pearAdmin.keepLoad(param); - } - function getColorById(id) { var color; var flag = false; - $.each(config.colors, function (i, value) { + $.each(configurationCache.colors, function (i, value) { if (value.id === id) { color = value; flag = true; } }) - if (flag === false || config.theme.allowCustom === false) { - $.each(config.colors, function (i, value) { - if (value.id === config.theme.defaultColor) { + if (flag === false || configurationCache.theme.allowCustom === false) { + $.each(configurationCache.colors, function (i, value) { + if (value.id === configurationCache.theme.defaultColor) { color = value; } }) @@ -912,7 +906,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f function buildColorHtml() { var colors = ""; - $.each(config.colors, function (i, value) { + $.each(configurationCache.colors, function (i, value) { colors += ""; }) diff --git a/component/pear/module/button.js b/component/pear/module/button.js index f590828..8283a24 100644 --- a/component/pear/module/button.js +++ b/component/pear/module/button.js @@ -2,6 +2,8 @@ layui.define(['jquery'], function(exports) { "use strict"; /** + * @since Pear Admin 4.0 + * * Button component * */ var MOD_NAME = 'button', diff --git a/component/pear/module/tabPage.js b/component/pear/module/tabPage.js index e80225a..b97bec6 100644 --- a/component/pear/module/tabPage.js +++ b/component/pear/module/tabPage.js @@ -19,16 +19,16 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { var option = { elem: opt.elem, data: opt.data, - tool: opt.tool, - roll: opt.roll, index: opt.index, - width: opt.width, - height: opt.height, - tabMax: opt.tabMax, + tool: opt.tool || true, + roll: opt.roll || true, + success: opt.success ? opt.success : function (id) { }, session: opt.session ? opt.session : false, preload: opt.preload ? opt.preload : false, + height: opt.height || "100%", + width: opt.width || "100%", closeEvent: opt.closeEvent, - success: opt.success ? opt.success : function (id) { } + tabMax: opt.tabMax, } if (option.session) { diff --git a/index.html b/index.html index 954ed4f..89009d7 100644 --- a/index.html +++ b/index.html @@ -4,15 +4,10 @@ Pear Admin 4.0 - - - - - -- Gitee From f716364168b0f2bef9bfdbb4acaaa9eeb7688459 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 2 Jul 2023 16:39:13 +0800 Subject: [PATCH 053/141] update --- admin/css/admin.dark.css | 4 ++++ component/pear/css/module/tabPage.css | 3 ++- component/pear/module/admin.js | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index e6ec042..0818241 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -106,6 +106,10 @@ background-color: #0a0a0a; } +.pear-admin-dark .pear-tab-page-menu ul li { + color: #ffffff !important; +} + /** theme */ .pear-admin-dark .set-text, .pear-admin-dark .select-color-title, diff --git a/component/pear/css/module/tabPage.css b/component/pear/css/module/tabPage.css index e40f374..589aea6 100644 --- a/component/pear/css/module/tabPage.css +++ b/component/pear/css/module/tabPage.css @@ -17,6 +17,7 @@ box-shadow: none; border-radius: 4px!important; overflow: hidden; + box-shadow: 2px 0 6px rgba(0, 21, 41, .10); } .pear-tab-page-menu .item{ @@ -30,7 +31,7 @@ cursor:pointer; } .pear-tab-page-menu .item:hover{ - background: #36b368; + background: var(--global-primary-color); color: white; } diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 417b7c8..0d50b02 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -191,9 +191,9 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f bodyTab.addTabOnly({ id: data.menuId, title: data.menuTitle, + type: data.menuOpenType, url: data.menuUrl, icon: data.menuIcon, - type: data.menuOpenType, close: true }, 300); } -- Gitee From c884de59853a18c6d050e634cacd284ef7a9a97f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 2 Jul 2023 22:16:36 +0800 Subject: [PATCH 054/141] update --- admin/data/menu.json | 206 ++++++++++++---------- component/pear/module/admin.js | 1 - view/console/{console.html => index.html} | 0 3 files changed, 112 insertions(+), 95 deletions(-) rename view/console/{console.html => index.html} (100%) diff --git a/admin/data/menu.json b/admin/data/menu.json index 8bd2242..a1576ce 100644 --- a/admin/data/menu.json +++ b/admin/data/menu.json @@ -1,4 +1,5 @@ -[{ +[ + { "id": 1, "title": "工作空间", "icon": "layui-icon layui-icon-console", @@ -13,13 +14,14 @@ "href": "view/analysis/index.html" }, { - "id": "11", - "title": "工作台", - "icon": "layui-icon layui-icon-console", - "type": 1, - "openType": "_component", - "href": "view/console/console.html" - }] + "id": "11", + "title": "工作台", + "icon": "layui-icon layui-icon-console", + "type": 1, + "openType": "_component", + "href": "view/console/index.html" + } + ] }, { "id": 2, @@ -51,7 +53,8 @@ "icon": "layui-icon layui-icon-auz", "type": 0, "href": "", - "children": [{ + "children": [ + { "id": "success", "title": "成功页面", "icon": "layui-icon layui-icon-face-smile", @@ -75,7 +78,8 @@ "icon": "layui-icon layui-icon-auz", "type": 0, "href": "", - "children": [{ + "children": [ + { "id": "403", "title": "403", "icon": "layui-icon layui-icon-face-smile", @@ -106,7 +110,8 @@ "title": "菜单模式", "icon": "layui-icon layui-icon-auz", "type": 0, - "children": [{ + "children": [ + { "id": "a", "title": "普通路由", "icon": "layui-icon layui-icon-face-smile", @@ -146,61 +151,68 @@ "icon": "layui-icon layui-icon-auz", "type": 0, "href": "", - "children": [{ + "children": [ + { "id": "deep1-1", "title": "二级菜单", "icon": "layui-icon layui-icon-face-smile", "type": 0, "openType": "_component", "href": "view/result/success.html", - "children": [{ - "id": "deep1-1-1", - "title": "三级菜单", - "icon": "layui-icon layui-icon-face-smile", - "type": 0, - "openType": "_component", - "href": "view/result/success.html", - "children": [{ - "id": "deep1-1-1-1", - "title": "四级菜单", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_component", - "href": "view/result/success.html" - }, + "children": [ { - "id": "deep1-1-1-2", - "title": "四级菜单", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_blank", - "href": "http://www.layui-vue.com" - }] - }, - { - "id": "deep1-1-2", - "title": "三级菜单", - "icon": "layui-icon layui-icon-face-cry", - "type": 0, - "openType": "_blank", - "href": "http://www.layui-vue.com", - "children": [{ - "id": "deep1-1-2-1", - "title": "四级菜单", + "id": "deep1-1-1", + "title": "三级菜单", "icon": "layui-icon layui-icon-face-smile", - "type": 1, + "type": 0, "openType": "_component", - "href": "view/result/success.html" + "href": "view/result/success.html", + "children": [ + { + "id": "deep1-1-1-1", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-smile", + "type": 1, + "openType": "_component", + "href": "view/result/success.html" + }, + { + "id": "deep1-1-1-2", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-cry", + "type": 1, + "openType": "_blank", + "href": "http://www.layui-vue.com" + } + ] }, { - "id": "deep1-1-2-2", - "title": "四级菜单", + "id": "deep1-1-2", + "title": "三级菜单", "icon": "layui-icon layui-icon-face-cry", - "type": 1, + "type": 0, "openType": "_blank", - "href": "http://www.layui-vue.com" - }] - }] + "href": "http://www.layui-vue.com", + "children": [ + { + "id": "deep1-1-2-1", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-smile", + "type": 1, + "openType": "_component", + "href": "view/result/success.html" + }, + { + "id": "deep1-1-2-2", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-cry", + "type": 1, + "openType": "_blank", + "href": "http://www.layui-vue.com" + } + ] + } + ] }, { "id": "deep1-2", @@ -209,54 +221,60 @@ "type": 0, "openType": "_blank", "href": "http://www.layui-vue.com", - "children": [{ - "id": "deep1-2-1", - "title": "三级菜单", - "icon": "layui-icon layui-icon-face-smile", - "type": 0, - "openType": "_component", - "href": "view/result/success.html", - "children": [{ - "id": "deep1-2-1-1", - "title": "四级菜单", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_component", - "href": "view/result/success.html" - }, + "children": [ { - "id": "deep1-2-1-2", - "title": "四级菜单", - "icon": "layui-icon layui-icon-face-cry", - "type": 1, - "openType": "_blank", - "href": "http://www.layui-vue.com" - }] - }, - { - "id": "deep1-2-2", - "title": "三级菜单", - "icon": "layui-icon layui-icon-face-cry", - "type": 0, - "openType": "_blank", - "href": "http://www.layui-vue.com", - "children": [{ - "id": "deep1-2-2-1", - "title": "四级菜单", + "id": "deep1-2-1", + "title": "三级菜单", "icon": "layui-icon layui-icon-face-smile", - "type": 1, + "type": 0, "openType": "_component", - "href": "view/result/success.html" + "href": "view/result/success.html", + "children": [ + { + "id": "deep1-2-1-1", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-smile", + "type": 1, + "openType": "_component", + "href": "view/result/success.html" + }, + { + "id": "deep1-2-1-2", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-cry", + "type": 1, + "openType": "_blank", + "href": "http://www.layui-vue.com" + } + ] }, { - "id": "deep1-2-2-2", - "title": "四级菜单", + "id": "deep1-2-2", + "title": "三级菜单", "icon": "layui-icon layui-icon-face-cry", - "type": 1, + "type": 0, "openType": "_blank", - "href": "http://www.layui-vue.com" - }] - }] + "href": "http://www.layui-vue.com", + "children": [ + { + "id": "deep1-2-2-1", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-smile", + "type": 1, + "openType": "_component", + "href": "view/result/success.html" + }, + { + "id": "deep1-2-2-2", + "title": "四级菜单", + "icon": "layui-icon layui-icon-face-cry", + "type": 1, + "openType": "_blank", + "href": "http://www.layui-vue.com" + } + ] + } + ] } ] } diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 0d50b02..4a309cf 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -446,7 +446,6 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f }); body.on("click", ".menuSearch", function () { - // 过滤菜单 var filterHandle = function (filterData, val) { if (!val) return []; var filteredMenus = []; diff --git a/view/console/console.html b/view/console/index.html similarity index 100% rename from view/console/console.html rename to view/console/index.html -- Gitee From 8e41aead055354e4081e654ccf3fe9f49a6349ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Mon, 3 Jul 2023 10:52:53 +0800 Subject: [PATCH 055/141] =?UTF-8?q?=E6=8A=BD=E7=A6=BB=20menuSearch=20?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/pear/module/admin.js | 295 +++++++--------------------- component/pear/module/menu.js | 43 ++-- component/pear/module/menuSearch.js | 226 +++++++++++++++++++++ component/pear/module/page.js | 12 +- component/pear/module/tools.js | 28 +++ component/pear/pear.js | 1 + 6 files changed, 356 insertions(+), 249 deletions(-) create mode 100644 component/pear/module/menuSearch.js create mode 100644 component/pear/module/tools.js diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 4a309cf..1993c7e 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -1,4 +1,4 @@ -layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'fullscreen', 'messageCenter'], +layui.define(['jquery', 'tools', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'fullscreen', 'messageCenter', 'menuSearch'], function (exports) { "use strict"; @@ -8,17 +8,19 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f page = layui.page, menu = layui.menu, messageCenter = layui.messageCenter, + menuSearch = layui.menuSearch, fullscreen = layui.fullscreen, + tools = layui.tools, tabPage = layui.tabPage; - + var sideMenu; - + var configurationCache; - + var bodyTab; var bodyFrame; - + var logout = function () { }; var body = $('body'); @@ -28,7 +30,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f this.configuration = {}; this.configurationPath = "pear.config.yml"; - + /** * @since Pear Admin 4.0 * @@ -36,12 +38,12 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f */ this.configurationProvider = () => { return new Promise((resolve) => { - if(this.configurationPath.indexOf("json") > -1) { + if (this.configurationPath.indexOf("json") > -1) { $.ajax({ - type: 'get', + type: 'get', url: this.configurationPath, - dataType: 'json', - async: false, + dataType: 'json', + async: false, success: (result) => { resolve(result); } @@ -79,7 +81,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f return this.configuration; } - /** + /** * @since Pear Admin 4.0 * * Core Function. @@ -96,18 +98,64 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f } } + /** + * @since Pear Admin 4.0 + * + * 启动构建 + */ this.apply = function (configuration) { configurationCache = configuration; - pearAdmin.logoRender(configuration); pearAdmin.menuRender(configuration); + pearAdmin.menuSearchRender(configuration); pearAdmin.bodyRender(configuration); pearAdmin.messageCenterRender(configuration); pearAdmin.themeRender(configuration); pearAdmin.keepLoad(configuration); } - this.messageCenterRender = function(options) { + /** + * @since Pear Admin 4.0 + */ + this.menuSearchRender = function (options) { + menuSearch.render({ + elem: ".menuSearch", + dataProvider: () => sideMenu.cache(), + select: (node) => { + if (node.type == "1") { + sideMenu.selectItem(node.id); + if (node.openType === "_layer") { + layer.open({ + type: 2, + title: data.title, + content: data.url, + area: ['80%', '80%'], + maxmin: true + }) + } else { + if (isMuiltTab(options) === "true" || + isMuiltTab(options) === true) { + bodyTab.addTabOnly({ + id: node.id, + title: node.title, + type: node.openType, + url: node.url, + icon: node.icon, + close: true + }); + } else { + bodyFrame.changePage({ + href: node.url, + type: node.openType + }); + } + } + } + } + }) + } + + this.messageCenterRender = function (options) { messageCenter.render({ elem: '.message', url: options.header.message, @@ -195,12 +243,13 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f url: data.menuUrl, icon: data.menuIcon, close: true - }, 300); + }); } compatible(); }) } else { + bodyFrame = page.render({ elem: 'content', title: '首页', @@ -211,7 +260,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f if (data.menuOpenType === "_layer") { layer.open({ type: 2, title: data.menuTitle, content: data.menuUrl, area: ['80%', '80%'], maxmin: true }) } else { - bodyFrame.changePage(data.menuUrl, data.menuOpenType); + bodyFrame.changePage({ href: data.menuUrl, type: data.menuOpenType }); } compatible() }) @@ -225,8 +274,10 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f }, param.other.keepLoad) } - this.changeTheme = function() { - document.documentElement.style.setProperty("--global-primary-color", localStorage.getItem("theme-color-color")); + this.changeTheme = function () { + const variableKey = "--global-primary-color"; + const variableVal = localStorage.getItem("theme-color-color"); + document.documentElement.style.setProperty(variableKey, variableVal); } this.themeRender = function (option) { @@ -304,10 +355,10 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f } var dark = localStorage.getItem("dark"); - if(dark === null) { + if (dark === null) { dark = option.theme.dark; } else { - if(option.theme.allowCustom === false) { + if (option.theme.allowCustom === false) { dark = option.theme.dark; } } @@ -350,7 +401,7 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f this.enableDark = function (checked) { var $pearAdmin = $(".pear-admin"); $pearAdmin.removeClass("pear-admin-dark"); - if(checked === true || checked === "true") { + if (checked === true || checked === "true") { $pearAdmin.addClass("pear-admin-dark"); } } @@ -445,196 +496,6 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f collapse(); }); - body.on("click", ".menuSearch", function () { - var filterHandle = function (filterData, val) { - if (!val) return []; - var filteredMenus = []; - filterData = $.extend(true, {}, filterData); - $.each(filterData, function (index, item) { - if (item.children && item.children.length) { - var children = filterHandle(item.children, val) - var obj = $.extend({}, item, { children: children }); - if (children && children.length) { - filteredMenus.push(obj); - } else if (item.title.indexOf(val) >= 0) { - item.children = []; // 父级匹配但子级不匹配,就去除子级 - filteredMenus.push($.extend({}, item)); - } - } else if (item.title.indexOf(val) >= 0) { - filteredMenus.push(item); - } - }) - return filteredMenus; - } - - // 树转路径 - var tiledHandle = function (data) { - var tiledMenus = []; - var treeTiled = function (data, content) { - var path = ""; - var separator = " / "; - // 上级路径 - if (!content) content = ""; - $.each(data, function (index, item) { - if (item.children && item.children.length) { - path += content + item.title + separator; - var childPath = treeTiled(item.children, path); - path += childPath; - if (!childPath) path = ""; // 重置路径 - } else { - path += content + item.title - tiledMenus.push({ path: path, info: item }); - path = ""; //重置路径 - } - }) - return path; - }; - treeTiled(data); - - return tiledMenus; - } - - var createList = function (data) { - var _listHtml = ''; - $.each(data, function (index, item) { - _listHtml += '
                                  • '; - _listHtml += ' ' + item.path + ''; - _listHtml += ' '; - _listHtml += '
                                  • ' - }) - return _listHtml; - } - - var _html = [ - `` - ].join(''); - - layer.open({ - type: 1, - offset: "10%", - area: ['600px'], - title: false, - closeBtn: 0, - shadeClose: true, - anim: 0, - move: false, - content: _html, - success: function (layero, layeridx) { - var $layer = layero; - var $content = $(layero).children('.layui-layer-content'); - var $input = $(".menu-search-input-wrapper input"); - var $noData = $(".menu-search-no-data"); - var $list = $(".menu-search-list"); - var menuData = sideMenu.option.data; - - - $layer.css("border-radius", "6px"); - $input.off("focus").focus(); - // 搜索输入事件 - $input.off("input").on("input", debounce(function () { - var keywords = $input.val().trim(); - var filteredMenus = filterHandle(menuData, keywords); - - if (filteredMenus.length) { - var tiledMenus = tiledHandle(filteredMenus); - var listHtml = createList(tiledMenus); - $noData.css("display", "none"); - $list.html("").append(listHtml).children(":first").addClass("this") - } else { - $list.html(""); - $noData.css("display", "flex"); - } - var currentHeight = $(".menu-search-content").outerHeight() - $layer.css("height", currentHeight); - $content.css("height", currentHeight); - }, 500) - ) - // 列表点击事件 - $list.off("click").on("click", "li", function () { - var menuId = $(this).attr("smenu-id"); - var menuUrl = $(this).attr("smenu-url"); - var menuTitle = $(this).attr("smenu-title"); - var menuType = $(this).attr("smenu-type"); - var openableWindow = menuType === "1" || menuType === 1; - - if (sideMenu.isCollapse) { - collapse(); - } - if (openableWindow) { - pearAdmin.jump(menuId, menuTitle, menuUrl) - } else { - sideMenu.selectItem(menuId); - } - compatible(); - layer.close(layeridx); - }) - - $list.off('mouseenter').on("mouseenter", "li", function () { - $(".menu-search-list li.this").removeClass("this"); - $(this).addClass("this"); - }).off("mouseleave").on("mouseleave", "li", function () { - $(this).removeClass("this"); - }) - - // 监听键盘事件 - $(document).off("keydown").keydown(function (e) { - if (e.keyCode === 13 || e.keyCode === 32) { - e.preventDefault(); - var menuId = $(".menu-search-list li.this").attr("smenu-id"); - var menuUrl = $(".menu-search-list li.this").attr("smenu-url"); - var menuTitle = $(".menu-search-list li.this").attr("smenu-title"); - var menuType = $(".menu-search-list li.this").attr("smenu-type"); - var openableWindow = menuType === "1" || menuType === 1; - if (sideMenu.isCollapse) { - collapse(); - } - if (openableWindow) { - pearAdmin.jump(menuId, menuTitle, menuUrl) - } else { - sideMenu.selectItem(menuId); - } - compatible(); - layer.close(layeridx); - } else if (e.keyCode === 38) { - e.preventDefault(); - var prevEl = $(".menu-search-list li.this").prev(); - $(".menu-search-list li.this").removeClass("this"); - if (prevEl.length !== 0) { - prevEl.addClass("this"); - } else { - $list.children().last().addClass("this"); - } - } else if (e.keyCode === 40) { - e.preventDefault(); - var nextEl = $(".menu-search-list li.this").next(); - $(".menu-search-list li.this").removeClass("this"); - if (nextEl.length !== 0) { - nextEl.addClass("this"); - } else { - $list.children().first().addClass("this"); - } - } else if (e.keyCode === 27) { - e.preventDefault(); - layer.close(layeridx); - } - }) - } - }) - }); - - body.on("click", ".fullScreen", function () { if ($(this).hasClass("layui-icon-screen-restore")) { fullscreen.fullClose().then(function () { @@ -949,23 +810,11 @@ layui.define(['jquery', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'f } } - $(window).on('resize', debounce(function () { + $(window).on('resize', tools.debounce(function () { if (sideMenu && !sideMenu.isCollapse && $(window).width() <= 768) { collapse(); } }, 50)); - function debounce(fn, awaitTime) { - var timerID = null - return function () { - var arg = arguments[0] - if (timerID) { - clearTimeout(timerID) - } - timerID = setTimeout(function () { - fn(arg) - }, awaitTime) - } - } exports('admin', pearAdmin); }) diff --git a/component/pear/module/menu.js b/component/pear/module/menu.js index f4622b0..d10a10b 100644 --- a/component/pear/module/menu.js +++ b/component/pear/module/menu.js @@ -31,7 +31,8 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } var tempDone = option.done; - option.done = function(){ + + option.done = function () { if (option.control) { rationalizeHeaderControlWidthAuto(option); } @@ -51,11 +52,9 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }); } } else { - // 延时返回,和 javascript 执行时序关联 window.setTimeout(function () { renderMenu(option); }, 500); } - // 处理高度 $("#" + opt.elem).height(option.height) setTimeout(function () { @@ -84,7 +83,11 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }); }, 1000) - return new menu(option); + return new menu(option); + } + + menu.prototype.cache = function () { + return this.option.data; } menu.prototype.click = function (clickEvent) { @@ -225,12 +228,12 @@ layui.define(['table', 'jquery', 'element'], function (exports) { isHoverMenu(false, config); var that = this; $("#" + this.option.elem) - .promise() - .done(function () { - if (that.option.control) { - rationalizeHeaderControlWidth(that.option); - } - }) + .promise() + .done(function () { + if (that.option.control) { + rationalizeHeaderControlWidth(that.option); + } + }) } else { activeMenus = $("#" + this.option.elem).find(".layui-nav-itemed>a"); $("#" + this.option.elem).find(".layui-nav-itemed").removeClass("layui-nav-itemed"); @@ -240,13 +243,13 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }, 400); var that = this; $("#" + this.option.elem) - .promise() - .done(function () { - isHoverMenu(true, config); - if (that.option.control) { - rationalizeHeaderControlWidth(that.option); - } - }) + .promise() + .done(function () { + isHoverMenu(true, config); + if (that.option.control) { + rationalizeHeaderControlWidth(that.option); + } + }) } } @@ -306,7 +309,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { '" ' + target + '>' + item.title + ''; } else if (item.type == 1) { - content += '' + item.title + ''; @@ -376,7 +379,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { ''; } else if (note.type == 1) { // 创 建 菜 单 结 构 - content += '' + note.title + ''; @@ -559,7 +562,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { $("#" + option.control + " .control").css({ "width": rationalizeWidth, "transition": "width .15s" }); } - function rationalizeHeaderControlWidthAuto(option){ + function rationalizeHeaderControlWidthAuto(option) { $(window).on('resize', function () { rationalizeHeaderControlWidth(option); }) diff --git a/component/pear/module/menuSearch.js b/component/pear/module/menuSearch.js new file mode 100644 index 0000000..063b112 --- /dev/null +++ b/component/pear/module/menuSearch.js @@ -0,0 +1,226 @@ +layui.define(['jquery', 'tools'], function (exports) { + "use strict"; + + /** + * @since Pear Admin 4.0 + * + * Button component + * */ + var MOD_NAME = 'menuSearch', + tools = layui.tools, + $ = layui.jquery; + + var menuSearch = function (opt) { + this.option = opt; + }; + + /** + * @since Pear Admin 4.0 + * + * Button start loading + * */ + menuSearch.prototype.render = function (opt) { + + var options = { + select: opt.select, + elem: opt.elem, + dataProvider: opt.dataProvider, + } + + $('body').on("click", options.elem, function () { + + var _html = [ + `` + ].join(''); + + layer.open({ + type: 1, + offset: "10%", + area: ['600px'], + title: false, + closeBtn: 0, + shadeClose: true, + anim: 0, + move: false, + content: _html, + success: function (layero, layeridx) { + + var $layer = layero; + var $content = $(layero).children('.layui-layer-content'); + var $input = $(".menu-search-input-wrapper input"); + var $noData = $(".menu-search-no-data"); + var $list = $(".menu-search-list"); + var menuData = options.dataProvider(); + + $layer.css("border-radius", "6px"); + $input.off("focus").focus(); + + // 搜索输入事件 + $input.off("input").on("input", tools.debounce(function () { + var keywords = $input.val().trim(); + var filteredMenus = filterHandle(menuData, keywords); + + if (filteredMenus.length) { + var tiledMenus = tiledHandle(filteredMenus); + var listHtml = createList(tiledMenus); + $noData.css("display", "none"); + $list.html("").append(listHtml).children(":first").addClass("this") + } else { + $list.html(""); + $noData.css("display", "flex"); + } + var currentHeight = $(".menu-search-content").outerHeight() + $layer.css("height", currentHeight); + $content.css("height", currentHeight); + }, 500) + ) + + // 列表点击事件 + $list.off("click").on("click", "li", function () { + var id = $(this).attr("smenu-id"); + var title = $(this).attr("smenu-title"); + var url = $(this).attr("smenu-url"); + var type = $(this).attr("smenu-type"); + var openType = $(this).attr("smenu-open-type"); + + options.select({ id, title, url, type, openType }); + + layer.close(layeridx); + }) + + $list.off('mouseenter').on("mouseenter", "li", function () { + $(".menu-search-list li.this").removeClass("this"); + $(this).addClass("this"); + }).off("mouseleave").on("mouseleave", "li", function () { + $(this).removeClass("this"); + }) + + // 监听键盘事件 + $(document).off("keydown").keydown(function (e) { + if (e.keyCode === 13 || e.keyCode === 32) { + e.preventDefault(); + var id = $(this).attr("smenu-id"); + var title = $(this).attr("smenu-title"); + var url = $(this).attr("smenu-url"); + var type = $(this).attr("smenu-type"); + var openType = $(this).attr("smenu-open-type"); + + options.select({ id, title, url, type, openType }); + + layer.close(layeridx); + } else if (e.keyCode === 38) { + e.preventDefault(); + var prevEl = $(".menu-search-list li.this").prev(); + $(".menu-search-list li.this").removeClass("this"); + if (prevEl.length !== 0) { + prevEl.addClass("this"); + } else { + $list.children().last().addClass("this"); + } + } else if (e.keyCode === 40) { + e.preventDefault(); + var nextEl = $(".menu-search-list li.this").next(); + $(".menu-search-list li.this").removeClass("this"); + if (nextEl.length !== 0) { + nextEl.addClass("this"); + } else { + $list.children().first().addClass("this"); + } + } else if (e.keyCode === 27) { + e.preventDefault(); + layer.close(layeridx); + } + }) + } + }) + }); + + return new menuSearch(options); + } + + /** + * @since Pear Admin 4.0 + * + * 创建结果列表 + */ + var createList = function (data) { + var listHtml = ''; + $.each(data, function (index, item) { + listHtml += `
                                  • + ${item.path} + +
                                  • ` + }) + return listHtml; + } + + /** + * @since Pear Admin 4.0 + * + * Tree 转 path 列表 + */ + var tiledHandle = function (data) { + var tiledMenus = []; + var treeTiled = function (data, content) { + var path = ""; + var separator = " / "; + if (!content) content = ""; + $.each(data, function (index, item) { + if (item.children && item.children.length) { + path += content + item.title + separator; + var childPath = treeTiled(item.children, path); + path += childPath; + if (!childPath) path = ""; // 重置路径 + } else { + path += content + item.title + tiledMenus.push({ path: path, info: item }); + path = ""; //重置路径 + } + }) + return path; + }; + treeTiled(data); + + return tiledMenus; + } + + /** + * @since Pear Admin 4.0 + * + * 查询匹配算法 + */ + var filterHandle = function (filterData, val) { + if (!val) return []; + var filteredMenus = []; + filterData = $.extend(true, {}, filterData); + $.each(filterData, function (index, item) { + if (item.children && item.children.length) { + var children = filterHandle(item.children, val) + var obj = $.extend({}, item, { children: children }); + if (children && children.length) { + filteredMenus.push(obj); + } else if (item.title.indexOf(val) >= 0) { + item.children = []; // 父级匹配但子级不匹配,就去除子级 + filteredMenus.push($.extend({}, item)); + } + } else if (item.title.indexOf(val) >= 0) { + filteredMenus.push(item); + } + }) + return filteredMenus; + } + + exports(MOD_NAME, new menuSearch()); +}); diff --git a/component/pear/module/page.js b/component/pear/module/page.js index cff2c72..c1e29e4 100644 --- a/component/pear/module/page.js +++ b/component/pear/module/page.js @@ -30,18 +30,18 @@ layui.define(['jquery', 'element'], function (exports) { * * 切换 Page 页面 */ - page.prototype.changePage = function (href, type) { + page.prototype.changePage = function (options) { const $frame = $(`#${this.option.elem} .pear-page-content`); - if (type === "_iframe") { + if (options.type === "_iframe") { - $frame.html(``); + $frame.html(``); } else { $.ajax({ - url: href, + url: options.href, type: 'get', dataType: 'html', success: function (data) { @@ -53,8 +53,8 @@ layui.define(['jquery', 'element'], function (exports) { }); } - $frame.attr("type", type); - $frame.attr("href", href); + $frame.attr("type", options.type); + $frame.attr("href", options.href); } page.prototype.refresh = function (loading) { diff --git a/component/pear/module/tools.js b/component/pear/module/tools.js new file mode 100644 index 0000000..58e6bf1 --- /dev/null +++ b/component/pear/module/tools.js @@ -0,0 +1,28 @@ +layui.define(['jquery', 'element'], + function (exports) { + + var $ = layui.jquery; + var tools = new function () { + + /** + * @since 防抖算法 + * + * @param fn 要执行的方法 + * @param time 防抖时间参数 + */ + this.debounce = function (fn, time) { + var timer = null + return function () { + var arguments = arguments[0] + if (timer) { + clearTimeout(timer) + } + timer = setTimeout(function () { + fn(arguments) + }, time) + } + } + }; + + exports('tools', tools); + }) diff --git a/component/pear/pear.js b/component/pear/pear.js index 630f74e..16e37de 100644 --- a/component/pear/pear.js +++ b/component/pear/pear.js @@ -15,6 +15,7 @@ layui.config({ menu: "menu", fullscreen:"fullscreen", messageCenter: "messageCenter", + menuSearch: "menuSearch", button: "button", popup:"extends/popup", count:"extends/count", -- Gitee From b02b0b6f81025c48580919383cfeaf585ba89c42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Tue, 4 Jul 2023 10:21:37 +0800 Subject: [PATCH 056/141] update --- component/pear/module/admin.js | 8 +++++--- component/pear/module/menu.js | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 1993c7e..7c8d821 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -31,6 +31,8 @@ layui.define(['jquery', 'tools', 'element', 'yaml', 'form', 'tabPage', 'menu', ' this.configurationPath = "pear.config.yml"; + this.instances = {}; + /** * @since Pear Admin 4.0 * @@ -171,15 +173,15 @@ layui.define(['jquery', 'tools', 'element', 'yaml', 'form', 'tabPage', 'menu', ' this.menuRender = function (param) { sideMenu = menu.render({ elem: 'sideMenu', - async: param.menu.async !== undefined ? param.menu.async : true, + async: param.menu.async, method: param.menu.method, control: isControl(param) === 'true' || isControl(param) === true ? 'control' : false, controlWidth: param.menu.controlWidth, accordion: param.menu.accordion, - defaultMenu: 0, - url: param.menu.data, data: param.menu.data, + url: param.menu.data, parseData: false, + defaultMenu: 0, change: function () { compatible(); }, diff --git a/component/pear/module/menu.js b/component/pear/module/menu.js index d10a10b..c125f0f 100644 --- a/component/pear/module/menu.js +++ b/component/pear/module/menu.js @@ -13,7 +13,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var option = { elem: opt.elem, - async: opt.async, + async: opt.async || true, parseData: opt.parseData, url: opt.url, method: opt.method ? opt.method : "GET", -- Gitee From 9c2d569fc6d93a21c884b069972a7ec0f8181085 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=A1=E5=AE=85=E7=94=B7?= <530765310@qq.com> Date: Thu, 17 Aug 2023 11:29:28 +0000 Subject: [PATCH 057/141] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A1=B6=E9=83=A8?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=A8=A1=E5=BC=8F=20=20=E7=AC=AC3=E7=A7=8D?= =?UTF-8?q?=E9=A1=B6=E6=A0=8F=E9=A3=8E=E6=A0=BC=20=E9=A1=B6=E9=83=A8?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E7=84=A6=E7=82=B9=E7=9A=84=E6=97=B6=E5=80=99?= =?UTF-8?q?=E5=AD=97=E4=BD=93=E6=98=AF=E7=99=BD=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 御宅男 <530765310@qq.com> --- admin/css/admin.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/admin/css/admin.css b/admin/css/admin.css index 30e1045..52d6e8d 100644 --- a/admin/css/admin.css +++ b/admin/css/admin.css @@ -204,6 +204,9 @@ body, .pear-admin .auto-theme .layui-nav * { color: white !important; } +.pear-admin .auto-theme .layui-nav.pear-nav-control .layui-this * { + color: black !important; +} /** 收缩布局 */ .pear-mini .layui-side .layui-logo .title { -- Gitee From 2eede4dc1ca314e0d7865ff34d76d6c77164d5e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=A1=E5=AE=85=E7=94=B7?= <530765310@qq.com> Date: Thu, 17 Aug 2023 14:35:21 +0000 Subject: [PATCH 058/141] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E7=A7=8D=E9=A1=B6?= =?UTF-8?q?=E6=A0=8F=E9=A3=8E=E6=A0=BC=20=E4=B8=AA=E4=BA=BA=E8=B5=84?= =?UTF-8?q?=E6=96=99=E5=AD=97=E4=BD=93=E4=B8=BA=E7=99=BD=E8=89=B2=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 御宅男 <530765310@qq.com> --- admin/css/admin.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/admin/css/admin.css b/admin/css/admin.css index 52d6e8d..bcccbd7 100644 --- a/admin/css/admin.css +++ b/admin/css/admin.css @@ -207,7 +207,10 @@ body, .pear-admin .auto-theme .layui-nav.pear-nav-control .layui-this * { color: black !important; } - +.pear-admin .auto-theme .layui-nav .layui-nav-child a { + color: #5f5f5f !important; + color: rgba(0,0,0,.8) !important; +} /** 收缩布局 */ .pear-mini .layui-side .layui-logo .title { display: none; -- Gitee From ff34cc34c510c353fd2e62f95648bfe2f9de2a36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=A1=E5=AE=85=E7=94=B7?= <530765310@qq.com> Date: Fri, 18 Aug 2023 01:27:28 +0000 Subject: [PATCH 059/141] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=90=8Etab=E7=82=B9=E5=87=BB=E5=85=B3=E9=97=AD=E5=A4=B1?= =?UTF-8?q?=E6=95=88=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 御宅男 <530765310@qq.com> --- component/pear/module/tabPage.js | 1 + 1 file changed, 1 insertion(+) diff --git a/component/pear/module/tabPage.js b/component/pear/module/tabPage.js index b97bec6..c6b6c5f 100644 --- a/component/pear/module/tabPage.js +++ b/component/pear/module/tabPage.js @@ -483,6 +483,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { ${item.title} + `; title += titleItem; -- Gitee From c29855a573607a440093b853800065b51a81bbaf Mon Sep 17 00:00:00 2001 From: ken678 <530765310@qq.com> Date: Wed, 6 Sep 2023 19:20:02 +0800 Subject: [PATCH 060/141] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E5=A2=9E=E5=8A=A0=E5=BF=AB=E6=8D=B7=E9=94=AE?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/css/admin.css | 33 +++++++++++++++++++++++++++++ component/pear/module/menuSearch.js | 6 ++++++ 2 files changed, 39 insertions(+) diff --git a/admin/css/admin.css b/admin/css/admin.css index bcccbd7..41dd613 100644 --- a/admin/css/admin.css +++ b/admin/css/admin.css @@ -580,7 +580,40 @@ body, background-color: var(--global-primary-color); color: white; } +.menu-search-tips { + margin-bottom: 15px; + padding: 0 15px; + width: 100% +} + +.menu-search-tips>div { + display: flex; + align-items: center; + justify-content: flex-end; + font-size: 12px; +} + +.menu-search-tips .mr-1 { + margin-right: 4px; +} +.menu-search-tips .mr-5 { + margin-right: 20px; +} + +.menu-search-tips .w-5 { + width: 14px; +} + +.menu-search-tips kbd { + line-height: 1.5; + border: 1px solid #e5e7eb; + font-size: 10px; + text-align: center; + padding: 2px; + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; + border-radius: 5px; +} /** 首屏加载 */ .loader-wrapper { position: fixed; diff --git a/component/pear/module/menuSearch.js b/component/pear/module/menuSearch.js index 063b112..aba6727 100644 --- a/component/pear/module/menuSearch.js +++ b/component/pear/module/menuSearch.js @@ -42,6 +42,12 @@ layui.define(['jquery', 'tools'], function (exports) { +
                                    ` ].join(''); -- Gitee From cb997385995f0a14e49f79482e0120bbd668ffd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Fri, 8 Sep 2023 00:13:38 +0800 Subject: [PATCH 061/141] update --- admin/css/admin.css | 2 +- component/pear/module/page.js | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/admin/css/admin.css b/admin/css/admin.css index 41dd613..8f5db54 100644 --- a/admin/css/admin.css +++ b/admin/css/admin.css @@ -610,7 +610,7 @@ body, border: 1px solid #e5e7eb; font-size: 10px; text-align: center; - padding: 2px; + padding: 2px 6px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; border-radius: 5px; } diff --git a/component/pear/module/page.js b/component/pear/module/page.js index c1e29e4..de90eac 100644 --- a/component/pear/module/page.js +++ b/component/pear/module/page.js @@ -31,15 +31,14 @@ layui.define(['jquery', 'element'], function (exports) { * 切换 Page 页面 */ page.prototype.changePage = function (options) { - + const $frame = $(`#${this.option.elem} .pear-page-content`); if (options.type === "_iframe") { - + $frame.html(``); - + } else { - $.ajax({ url: options.href, type: 'get', @@ -52,7 +51,6 @@ layui.define(['jquery', 'element'], function (exports) { } }); } - $frame.attr("type", options.type); $frame.attr("href", options.href); } -- Gitee From 8aa9271786ca0345b24129d64379b38c91495387 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Fri, 8 Sep 2023 00:14:59 +0800 Subject: [PATCH 062/141] add menuSearch.css --- admin/css/admin.css | 85 ------------------------ component/pear/css/module/menuSearch.css | 85 ++++++++++++++++++++++++ component/pear/css/pear.css | 1 + 3 files changed, 86 insertions(+), 85 deletions(-) create mode 100644 component/pear/css/module/menuSearch.css diff --git a/admin/css/admin.css b/admin/css/admin.css index 8f5db54..6d3948a 100644 --- a/admin/css/admin.css +++ b/admin/css/admin.css @@ -529,91 +529,6 @@ body, border-right: 1px solid #eee; } -/* 搜索面板 */ -.menu-search-content .layui-input { - padding-left: 30px; -} - -.menu-search-content { - display: flex; - flex-wrap: wrap; - justify-content: center; -} - -.menu-search-input-wrapper { - width: 100%; - padding: 15px 15px; -} - -.menu-search-no-data { - display: flex; - justify-content: center; - width: 100%; - height: 122px; - align-items: center; -} - -.menu-search-list { - width: 100%; - padding: 5px 15px; -} - -.menu-search-list li { - position: relative; - display: flex; - justify-content: space-between; - align-items: center; - flex-wrap: nowrap; - height: 50px; - margin-bottom: 8px; - padding: 0px 10px; - color: currentColor; - font-size: 14px; - border-radius: 4px; - box-shadow: 0 1px 3px #d4d9e1; - cursor: pointer; - background-color: #fff; -} - -.menu-search-list li.this, -.menu-search-list li:hover { - background-color: var(--global-primary-color); - color: white; -} -.menu-search-tips { - margin-bottom: 15px; - padding: 0 15px; - width: 100% -} - -.menu-search-tips>div { - display: flex; - align-items: center; - justify-content: flex-end; - font-size: 12px; -} - -.menu-search-tips .mr-1 { - margin-right: 4px; -} - -.menu-search-tips .mr-5 { - margin-right: 20px; -} - -.menu-search-tips .w-5 { - width: 14px; -} - -.menu-search-tips kbd { - line-height: 1.5; - border: 1px solid #e5e7eb; - font-size: 10px; - text-align: center; - padding: 2px 6px; - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; - border-radius: 5px; -} /** 首屏加载 */ .loader-wrapper { position: fixed; diff --git a/component/pear/css/module/menuSearch.css b/component/pear/css/module/menuSearch.css new file mode 100644 index 0000000..cd66d5c --- /dev/null +++ b/component/pear/css/module/menuSearch.css @@ -0,0 +1,85 @@ +/* 搜索面板 */ +.menu-search-content .layui-input { + padding-left: 30px; +} + +.menu-search-content { + display: flex; + flex-wrap: wrap; + justify-content: center; +} + +.menu-search-input-wrapper { + width: 100%; + padding: 15px 15px; +} + +.menu-search-no-data { + display: flex; + justify-content: center; + width: 100%; + height: 122px; + align-items: center; +} + +.menu-search-list { + width: 100%; + padding: 5px 15px; +} + +.menu-search-list li { + position: relative; + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: nowrap; + height: 50px; + margin-bottom: 8px; + padding: 0px 10px; + color: currentColor; + font-size: 14px; + border-radius: 4px; + box-shadow: 0 1px 3px #d4d9e1; + cursor: pointer; + background-color: #fff; +} + +.menu-search-list li.this, +.menu-search-list li:hover { + background-color: var(--global-primary-color); + color: white; +} +.menu-search-tips { + margin-bottom: 15px; + padding: 0 15px; + width: 100% +} + +.menu-search-tips>div { + display: flex; + align-items: center; + justify-content: flex-end; + font-size: 12px; +} + +.menu-search-tips .mr-1 { + margin-right: 4px; +} + +.menu-search-tips .mr-5 { + margin-right: 20px; +} + +.menu-search-tips .w-5 { + width: 14px; +} + +.menu-search-tips kbd { + line-height: 1.5; + border: 1px solid #e5e7eb; + font-size: 10px; + text-align: center; + padding: 2px 6px; + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; + border-radius: 5px; +} \ No newline at end of file diff --git a/component/pear/css/pear.css b/component/pear/css/pear.css index f073338..62b55bf 100644 --- a/component/pear/css/pear.css +++ b/component/pear/css/pear.css @@ -4,6 +4,7 @@ @import url("module/messageCenter.css"); @import url("module/global.css"); @import url("module/menu.css"); +@import url("module/menuSearch.css"); @import url("module/page.css"); @import url("module/tabPage.css"); @import url("module/toast.css"); \ No newline at end of file -- Gitee From 6a9ad5221fbdaaa6a773e7ffb24816db2ad77633 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Fri, 8 Sep 2023 00:20:13 +0800 Subject: [PATCH 063/141] update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 524c96e..7bc0c1c 100644 --- a/README.md +++ b/README.md @@ -5,4 +5,5 @@ - [重构] tab.js 组件,重命名为 tabPage.js, 移除 iframe 嵌套。 - [新增] admin.js 模块 setConfigurationProvider 方法,用于自定义 configuration 来源。 - [优化] admin.js 模块 logout 方法,返回值由 boolean 调整为 Promise 类型。 -- [新增] 夜间模式适配,目前已完成整体框架兼容,layui 待完成。 \ No newline at end of file +- [新增] 夜间模式适配,目前已完成整体框架兼容,layui 待完成。 +- [新增] menuSearch.js 模块,原有的菜单搜索功能。 \ No newline at end of file -- Gitee From 7261fffe1c5f96b210221242962a177bc4160198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 10 Sep 2023 22:54:45 +0800 Subject: [PATCH 064/141] update --- admin/css/admin.dark.css | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 0818241..a4b4b92 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -16,6 +16,14 @@ box-shadow: none !important; border: none !important; } +.pear-admin-dark .layui-header.auto-theme, +.pear-admin-dark .layui-header.auto-theme .layui-logo { + background-color: var(--global-primary-color) !important; +} + +.pear-admin-dark .layui-header.auto-theme .layui-logo .title { + color: #ffffff !important; +} .pear-admin-dark .layui-header { border: 1px solid rgba(0, 0, 0, .40) !important; -- Gitee From ad2f5b22d66571485dc9c35481290b662b4296cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Mon, 11 Sep 2023 10:56:45 +0800 Subject: [PATCH 065/141] update --- admin/data/menu.json | 16 ++ admin/data/table.json | 303 +++++++++++++++++++++++++++++++++ view/listing/table.html | 360 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 679 insertions(+) create mode 100644 admin/data/table.json create mode 100644 view/listing/table.html diff --git a/admin/data/menu.json b/admin/data/menu.json index a1576ce..f164d08 100644 --- a/admin/data/menu.json +++ b/admin/data/menu.json @@ -23,6 +23,22 @@ } ] }, + { + "id": 9, + "title": "列表页面", + "icon": "layui-icon layui-icon-auz", + "type": 0, + "children": [ + { + "id": 91, + "title": "查询表格", + "icon": "layui-icon layui-icon-face-smile", + "type": 1, + "openType": "_component", + "href": "view/listing/table.html" + } + ] + }, { "id": 2, "title": "扩展组件", diff --git a/admin/data/table.json b/admin/data/table.json new file mode 100644 index 0000000..c0249f0 --- /dev/null +++ b/admin/data/table.json @@ -0,0 +1,303 @@ +{ + "code": 0, + "msg": "", + "count": 1000, + "totalRow": { + "era": { + "tang": "2", + "song": "2", + "xian": "20" + } + }, + "data": [ + { + "id": "10001", + "username": "就眠儀式", + "email": "test1@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10002", + "username": "杜甫", + "email": "test2@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "108", + "joinTime": "2016-10-14", + "LAY_CHECKED": true + }, + { + "id": "10003", + "username": "就眠儀式", + "email": "test3@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10004", + "username": "就眠儀式", + "email": "test4@email.com", + "sex": "女", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10005", + "username": "就眠儀式", + "email": "test5@email.com", + "sex": "女", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10006", + "username": "就眠儀式", + "email": "test6@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10007", + "username": "就眠儀式", + "email": "test7@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10008", + "username": "就眠儀式", + "email": "test8@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10009", + "username": "就眠儀式", + "email": "test9@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10010", + "username": "就眠儀式", + "email": "test10@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10011", + "username": "就眠儀式", + "email": "test11@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10012", + "username": "就眠儀式", + "email": "test12@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10013", + "username": "就眠儀式", + "email": "test13@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10014", + "username": "就眠儀式", + "email": "test14@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10015", + "username": "就眠儀式", + "email": "test15@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10016", + "username": "就眠儀式", + "email": "test16@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10017", + "username": "就眠儀式", + "email": "test17@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10018", + "username": "就眠儀式", + "email": "test18@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10019", + "username": "就眠儀式", + "email": "test19@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10020", + "username": "就眠儀式", + "email": "test20@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10021", + "username": "就眠儀式", + "email": "test21@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10022", + "username": "就眠儀式", + "email": "test22@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10023", + "username": "就眠儀式", + "email": "test23@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + }, + { + "id": "10024", + "username": "就眠儀式", + "email": "test24@email.com", + "sex": "男", + "city": "浙江杭州", + "sign": "花开堪折直须折,莫待无花空折枝.", + "experience": "100", + "ip": "192.168.0.8", + "checkin": "106", + "joinTime": "2016-10-14" + } + ] +} \ No newline at end of file diff --git a/view/listing/table.html b/view/listing/table.html new file mode 100644 index 0000000..c19fff2 --- /dev/null +++ b/view/listing/table.html @@ -0,0 +1,360 @@ + + + + + + table 组件综合演示 - Layui + + + + + + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + + + + + + \ No newline at end of file -- Gitee From 81c122886b6e592e02585df8cbb3e1ac480bce30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Mon, 11 Sep 2023 11:08:21 +0800 Subject: [PATCH 066/141] update --- admin/css/admin.dark.css | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index a4b4b92..9c50764 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -201,6 +201,7 @@ .pear-admin-dark .layui-table th, .pear-admin-dark .layui-table-view, .pear-admin-dark .layui-table-page, +.pear-admin-dark .layui-table-tool, .pear-admin-dark .layui-table-header { border-color: rgba(0, 0, 0, .40) !important; } @@ -212,6 +213,12 @@ background-color: transparent; } +.pear-admin-dark .layui-table-tool-self > div { + border-color: rgba(0, 0, 0, .40) !important; + color: #ffffff !important; + background-color: transparent; +} + /** panel */ .pear-admin-dark .layui-panel { background-color: #1d1e1f !important; -- Gitee From 386b4498e6b9b801281a6fdb6adffc47e0e911c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Wed, 27 Sep 2023 01:41:05 +0800 Subject: [PATCH 067/141] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=9C=E9=97=B4?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E8=8F=9C=E5=8D=95=E6=90=9C=E7=B4=A2=E4=B8=8E?= =?UTF-8?q?=20footer=20=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/css/admin.dark.css | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 9c50764..3b225b4 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -118,6 +118,11 @@ color: #ffffff !important; } +.pear-admin-dark .layui-footer { + background-color: #141414; + border-top: 1px solid #141414; +} + /** theme */ .pear-admin-dark .set-text, .pear-admin-dark .select-color-title, @@ -130,6 +135,15 @@ color: #ffffff; } +.pear-admin-dark .menu-search-tips * { + color: #ffffff; +} + +.pear-admin-dark .menu-search-tips kbd { + border-color: rgba(0, 0, 0, .30) !important; +} + + /** message center */ .pear-admin-dark .pear-message-center .layui-tab-title, .pear-admin-dark .pear-message-center .message-item { -- Gitee From 2f0dc7eb4f412450b2944fc19504065505753cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Wed, 27 Sep 2023 01:46:08 +0800 Subject: [PATCH 068/141] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20layui=202.8.17=20?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/layui/css/layui.css | 2 +- component/layui/layui.js | 2 +- component/pear/module/admin.js | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/component/layui/css/layui.css b/component/layui/css/layui.css index 20e518c..45c04b7 100644 --- a/component/layui/css/layui.css +++ b/component/layui/css/layui.css @@ -1 +1 @@ -blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{display:inline-block;border:none;vertical-align:middle}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h1,h2,h3,h4{font-weight:700}h5,h6{font-weight:500;font-size:100%}button,input,select,textarea{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:1.6;color:#333;color:rgba(0,0,0,.85);font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{height:0;line-height:0;margin:10px 0;padding:0;border:none!important;border-bottom:1px solid #eee!important;clear:both;overflow:hidden;background:0 0}a{color:#333;text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-clear-space{word-spacing:-5px}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.layui-edge{position:relative;display:inline-block;vertical-align:middle;width:0;height:0;border-width:6px;border-style:dashed;border-color:transparent;overflow:hidden}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-disabled,.layui-icon,.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-show-v{visibility:visible!important}.layui-hide-v{visibility:hidden!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=282);src:url(../font/iconfont.eot?v=282#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=282) format('woff2'),url(../font/iconfont.woff?v=282) format('woff'),url(../font/iconfont.ttf?v=282) format('truetype'),url(../font/iconfont.svg?v=282#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-leaf:before{content:"\e701"}.layui-icon-folder:before{content:"\eabe"}.layui-icon-folder-open:before{content:"\eac1"}.layui-icon-gitee:before{content:"\e69b"}.layui-icon-github:before{content:"\e6a7"}.layui-icon-disabled:before{content:"\e6cc"}.layui-icon-moon:before{content:"\e6c2"}.layui-icon-error:before{content:"\e693"}.layui-icon-success:before{content:"\e697"}.layui-icon-question:before{content:"\e699"}.layui-icon-lock:before{content:"\e69a"}.layui-icon-eye:before{content:"\e695"}.layui-icon-eye-invisible:before{content:"\e696"}.layui-icon-backspace:before{content:"\e694"}.layui-icon-tips-fill:before{content:"\eb2e"}.layui-icon-test:before{content:"\e692"}.layui-icon-clear:before{content:"\e788"}.layui-icon-heart-fill:before{content:"\e68f"}.layui-icon-light:before{content:"\e748"}.layui-icon-music:before{content:"\e690"}.layui-icon-time:before{content:"\e68d"}.layui-icon-ie:before{content:"\e7bb"}.layui-icon-firefox:before{content:"\e686"}.layui-icon-at:before{content:"\e687"}.layui-icon-bluetooth:before{content:"\e689"}.layui-icon-chrome:before{content:"\e68a"}.layui-icon-edge:before{content:"\e68b"}.layui-icon-heart:before{content:"\e68c"}.layui-icon-key:before{content:"\e683"}.layui-icon-android:before{content:"\e684"}.layui-icon-mike:before{content:"\e6dc"}.layui-icon-mute:before{content:"\e685"}.layui-icon-gift:before{content:"\e627"}.layui-icon-windows:before{content:"\e67f"}.layui-icon-ios:before{content:"\e680"}.layui-icon-logout:before{content:"\e682"}.layui-icon-wifi:before{content:"\e7e0"}.layui-icon-rss:before{content:"\e808"}.layui-icon-email:before{content:"\e618"}.layui-icon-reduce-circle:before{content:"\e616"}.layui-icon-transfer:before{content:"\e691"}.layui-icon-service:before{content:"\e626"}.layui-icon-addition:before{content:"\e624"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-slider:before{content:"\e714"}.layui-icon-print:before{content:"\e66d"}.layui-icon-export:before{content:"\e67d"}.layui-icon-cols:before{content:"\e610"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-username:before{content:"\e66f"}.layui-icon-password:before{content:"\e673"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-auz:before{content:"\e672"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-tips:before{content:"\e702"}.layui-icon-note:before{content:"\e66e"}.layui-icon-senior:before{content:"\e674"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-notice:before{content:"\e667"}.layui-icon-console:before{content:"\e665"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-set:before{content:"\e716"}.layui-icon-template:before{content:"\e663"}.layui-icon-app:before{content:"\e653"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-home:before{content:"\e68e"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-more:before{content:"\e65f"}.layui-icon-camera:before{content:"\e660"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-read:before{content:"\e705"}.layui-icon-location:before{content:"\e715"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-return:before{content:"\e65c"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-fire:before{content:"\e756"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-cart:before{content:"\e657"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-next:before{content:"\e65b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-user:before{content:"\e770"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-component:before{content:"\e857"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-pause:before{content:"\e651"}.layui-icon-play:before{content:"\e652"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-voice:before{content:"\e688"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-link:before{content:"\e64c"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-share:before{content:"\e641"}.layui-icon-edit:before{content:"\e642"}.layui-icon-delete:before{content:"\e640"}.layui-icon-engine:before{content:"\e628"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-table:before{content:"\e62d"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-water:before{content:"\e636"}.layui-icon-date:before{content:"\e637"}.layui-icon-layer:before{content:"\e638"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-form:before{content:"\e63c"}.layui-icon-file:before{content:"\e621"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-404:before{content:"\e61c"}.layui-icon-about:before{content:"\e60b"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-down:before{content:"\e61a"}.layui-icon-up:before{content:"\e619"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-search:before{content:"\e615"}.layui-icon-friends:before{content:"\e612"}.layui-icon-group:before{content:"\e613"}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-log:before{content:"\e60e"}.layui-icon-list:before{content:"\e60a"}.layui-icon-release:before{content:"\e609"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-ok:before{content:"\e605"}.layui-icon-help:before{content:"\e607"}.layui-icon-chat:before{content:"\e606"}.layui-icon-top:before{content:"\e604"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-star:before{content:"\e600"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-ok-circle:before{content:"\1005"}.layui-main{position:relative;width:1160px;margin:0 auto}.layui-header{position:relative;z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px;overflow-x:hidden}.layui-side-scroll{position:relative;width:220px;height:100%;overflow-x:hidden}.layui-body{position:relative;left:200px;right:0;top:0;bottom:0;z-index:900;width:auto;box-sizing:border-box}.layui-layout-body{overflow-x:hidden}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;right:0;background-color:#23292e}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:absolute;top:60px;padding-bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;z-index:990;height:44px;line-height:44px;padding:0 15px;box-shadow:-1px 0 4px rgb(0 0 0 / 12%);background-color:#fafafa}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#16baaa;font-size:16px;box-shadow:0 1px 2px 0 rgb(0 0 0 / 15%)}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:"";display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:767.98px){.layui-container{padding:0 15px}.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:720px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:960px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1150px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}@media screen and (min-width:1400px){.layui-container{width:1330px}.layui-hide-xl{display:none!important}.layui-show-xl-block{display:block!important}.layui-show-xl-inline{display:inline!important}.layui-show-xl-inline-block{display:inline-block!important}.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9{float:left}.layui-col-xl1{width:8.33333333%}.layui-col-xl2{width:16.66666667%}.layui-col-xl3{width:25%}.layui-col-xl4{width:33.33333333%}.layui-col-xl5{width:41.66666667%}.layui-col-xl6{width:50%}.layui-col-xl7{width:58.33333333%}.layui-col-xl8{width:66.66666667%}.layui-col-xl9{width:75%}.layui-col-xl10{width:83.33333333%}.layui-col-xl11{width:91.66666667%}.layui-col-xl12{width:100%}.layui-col-xl-offset1{margin-left:8.33333333%}.layui-col-xl-offset2{margin-left:16.66666667%}.layui-col-xl-offset3{margin-left:25%}.layui-col-xl-offset4{margin-left:33.33333333%}.layui-col-xl-offset5{margin-left:41.66666667%}.layui-col-xl-offset6{margin-left:50%}.layui-col-xl-offset7{margin-left:58.33333333%}.layui-col-xl-offset8{margin-left:66.66666667%}.layui-col-xl-offset9{margin-left:75%}.layui-col-xl-offset10{margin-left:83.33333333%}.layui-col-xl-offset11{margin-left:91.66666667%}.layui-col-xl-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-col-space32{margin:-15px}.layui-col-space32>*{padding:15px}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:1.8;border-left:5px solid #16b777;border-radius:0 2px 2px 0;background-color:#fafafa}.layui-quote-nm{border-style:solid;border-width:1px;border-left-width:5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px}.layui-field-title{margin:16px 0;border-width:0;border-top-width:1px}.layui-field-box{padding:15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#eee}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#16b777;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#5f5f5f}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#fafafa;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:1.6;color:#5f5f5f}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{position:relative;height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f8f8f8;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-card-body{position:relative;padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel{position:relative;border-width:1px;border-style:solid;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);background-color:#fff;color:#5f5f5f}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #eee;background-color:#fff}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-scollbar-hide{overflow:hidden!important}.layui-bg-red{background-color:#ff5722!important;color:#fff!important}.layui-bg-orange{background-color:#ffb800!important;color:#fff!important}.layui-bg-green{background-color:#16baaa!important;color:#fff!important}.layui-bg-cyan{background-color:#2f4056!important;color:#fff!important}.layui-bg-blue{background-color:#1e9fff!important;color:#fff!important}.layui-bg-purple{background-color:#a233c6!important;color:#fff!important}.layui-bg-black{background-color:#2f363c!important;color:#fff!important}.layui-bg-gray{background-color:#fafafa!important;color:#5f5f5f!important}.layui-badge-rim,.layui-border,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-input-split,.layui-panel,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#eee}.layui-border{border-width:1px;border-style:solid;color:#5f5f5f!important}.layui-border-red{border-width:1px;border-style:solid;border-color:#ff5722!important;color:#ff5722!important}.layui-border-orange{border-width:1px;border-style:solid;border-color:#ffb800!important;color:#ffb800!important}.layui-border-green{border-width:1px;border-style:solid;border-color:#16baaa!important;color:#16baaa!important}.layui-border-cyan{border-width:1px;border-style:solid;border-color:#2f4056!important;color:#2f4056!important}.layui-border-blue{border-width:1px;border-style:solid;border-color:#1e9fff!important;color:#1e9fff!important}.layui-border-purple{border-width:1px;border-style:solid;border-color:#a233c6!important;color:#a233c6!important}.layui-border-black{border-width:1px;border-style:solid;border-color:#2f363c!important;color:#2f363c!important}.layui-timeline-item:before{background-color:#eee}.layui-text{line-height:1.8;font-size:14px}.layui-text h1,.layui-text h2,.layui-text h3,.layui-text h4,.layui-text h5,.layui-text h6{color:#3a3a3a}.layui-text h1{font-size:32px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text h4{font-size:16px}.layui-text h5{font-size:14px}.layui-text h6{font-size:13px}.layui-text ol,.layui-text ul{padding-left:15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text ol li{margin-top:5px;list-style-type:decimal}.layui-text-em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.layui-text p{margin:15px 0}.layui-text p:first-child{margin-top:0}.layui-text p:last-child{margin-bottom:0}.layui-text a:not(.layui-btn){color:#01aaed}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text blockquote:not(.layui-elem-quote){padding:5px 15px;border-left:5px solid #eee}.layui-text pre>code:not(.layui-code){padding:15px;font-family:Courier New,Lucida Console,Consolas;background-color:#fafafa}.layui-font-12{font-size:12px!important}.layui-font-13{font-size:13px!important}.layui-font-14{font-size:14px!important}.layui-font-16{font-size:16px!important}.layui-font-18{font-size:18px!important}.layui-font-20{font-size:20px!important}.layui-font-22{font-size:22px!important}.layui-font-24{font-size:24px!important}.layui-font-26{font-size:26px!important}.layui-font-28{font-size:28px!important}.layui-font-30{font-size:30px!important}.layui-font-32{font-size:32px!important}.layui-font-red{color:#ff5722!important}.layui-font-orange{color:#ffb800!important}.layui-font-green{color:#16baaa!important}.layui-font-cyan{color:#2f4056!important}.layui-font-blue{color:#01aaed!important}.layui-font-purple{color:#a233c6!important}.layui-font-black{color:#000!important}.layui-font-gray{color:#c2c2c2!important}.layui-btn{display:inline-block;vertical-align:middle;height:38px;line-height:38px;border:1px solid transparent;padding:0 18px;background-color:#16baaa;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border-radius:2px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{word-spacing:-5px}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px;word-spacing:normal}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{padding:0 2px;vertical-align:middle\0;vertical-align:bottom}.layui-btn-primary{border-color:#d2d2d2;background:0 0;color:#5f5f5f}.layui-btn-primary:hover{border-color:#16baaa;color:#333}.layui-btn-normal{background-color:#1e9fff}.layui-btn-warm{background-color:#ffb800}.layui-btn-danger{background-color:#ff5722}.layui-btn-checked{background-color:#16b777}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border-color:#eee!important;background-color:#fbfbfb!important;color:#d2d2d2!important;cursor:not-allowed!important;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:12px!important}.layui-btn-group{display:inline-block;vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#d2d2d2;color:#16baaa}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #d2d2d2}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\9;border-width:1px;border-style:solid;background-color:#fff;color:rgba(0,0,0,.85);border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#d2d2d2!important}.layui-input:focus,.layui-textarea:focus{border-color:#d2d2d2!important}.layui-textarea{position:relative;min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{position:relative;margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{position:relative;float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block,.layui-input-inline{position:relative}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{position:relative;float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#ff5722!important}.layui-input-prefix,.layui-input-split,.layui-input-suffix,.layui-input-suffix .layui-input-affix{position:absolute;right:0;top:0;padding:0 10px;width:35px;height:100%;text-align:center;transition:all .3s;box-sizing:border-box}.layui-input-prefix{left:0;border-radius:2px 0 0 2px}.layui-input-suffix{right:0;border-radius:0 2px 2px 0}.layui-input-split{border-width:1px;border-style:solid}.layui-input-prefix .layui-icon,.layui-input-split .layui-icon,.layui-input-suffix .layui-icon{position:relative;font-size:16px;color:#5f5f5f;transition:all .3s}.layui-input-group{position:relative;display:table;box-sizing:border-box}.layui-input-group>*{display:table-cell;vertical-align:middle;position:relative}.layui-input-group .layui-input{padding-right:15px}.layui-input-group .layui-input-prefix{width:auto;border-right:0}.layui-input-group .layui-input-suffix{width:auto;border-left:0}.layui-input-group .layui-input-split{white-space:nowrap}.layui-input-wrap{position:relative;line-height:38px}.layui-input-wrap .layui-input{padding-right:35px}.layui-input-wrap .layui-input::-ms-clear,.layui-input-wrap .layui-input::-ms-reveal{display:none}.layui-input-wrap .layui-input-prefix+.layui-input,.layui-input-wrap .layui-input-prefix~* .layui-input{padding-left:35px}.layui-input-wrap .layui-input-split+.layui-input,.layui-input-wrap .layui-input-split~* .layui-input{padding-left:45px}.layui-input-wrap .layui-input-prefix~.layui-form-select{position:static}.layui-input-wrap .layui-input-prefix,.layui-input-wrap .layui-input-split,.layui-input-wrap .layui-input-suffix{pointer-events:none}.layui-input-wrap .layui-input:focus+.layui-input-split{border-color:#d2d2d2}.layui-input-wrap .layui-input-prefix.layui-input-split{border-width:0;border-right-width:1px}.layui-input-affix{line-height:38px}.layui-input-suffix .layui-input-affix{right:auto;left:-35px}.layui-input-affix .layui-icon{color:rgba(0,0,0,.8);pointer-events:auto!important;cursor:pointer}.layui-input-affix .layui-icon-clear{color:rgba(0,0,0,.3)}.layui-input-affix .layui-icon:hover{color:rgba(0,0,0,.6)}.layui-form-select{position:relative;color:#5f5f5f}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #eee;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#f8f8f8;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#f8f8f8;color:#16b777;font-weight:700}.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.layui-form-selected .layui-edge{margin-top:-3px\0}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;display:inline-block;vertical-align:middle;height:30px;line-height:30px;margin-right:10px;padding-right:30px;background-color:#fff;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox>*{display:inline-block;vertical-align:middle}.layui-form-checkbox>div{padding:0 11px;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.layui-form-checkbox:hover>div{background-color:#c2c2c2}.layui-form-checkbox>i{position:absolute;right:0;top:0;width:30px;height:100%;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;color:rgba(255,255,255,0);font-size:20px;text-align:center;box-sizing:border-box}.layui-form-checkbox:hover>i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#16b777}.layui-form-checked:hover>div,.layui-form-checked>div{background-color:#16b777}.layui-form-checked:hover>i,.layui-form-checked>i{color:#16b777}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox.layui-checkbox-disabled>div{background-color:#eee!important}.layui-form [lay-checkbox]{display:none}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:24px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary]>div{margin-top:-1px;padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#5f5f5f}.layui-form-checkbox[lay-skin=primary]>i{right:auto;left:0;width:16px;height:16px;line-height:14px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover>i{border-color:#16b777;color:#fff}.layui-form-checked[lay-skin=primary]>i{border-color:#16b777!important;background-color:#16b777;color:#fff}.layui-checkbox-disabled[lay-skin=primary]>div{background:0 0!important}.layui-form-checked.layui-checkbox-disabled[lay-skin=primary]>i{background:#eee!important;border-color:#eee!important}.layui-checkbox-disabled[lay-skin=primary]:hover>i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate{border-color:#16b777}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate:before{content:'';display:inline-block;vertical-align:middle;position:relative;width:50%;height:1px;margin:-1px auto 0;background-color:#16b777}.layui-form-switch{position:relative;display:inline-block;vertical-align:middle;height:24px;line-height:22px;min-width:44px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;box-sizing:border-box;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>div{position:relative;top:0;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#16b777;background-color:#16b777}.layui-form-onswitch>i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch>div{margin-left:0;margin-right:21px;color:#fff!important}.layui-checkbox-disabled{border-color:#eee!important}.layui-checkbox-disabled>div{color:#c2c2c2!important}.layui-checkbox-disabled>i{border-color:#eee!important}.layui-checkbox-disabled:hover>i{color:#fff!important}.layui-form-radio{display:inline-block;vertical-align:middle;line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio>*{display:inline-block;vertical-align:middle;font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio:hover>*,.layui-form-radioed,.layui-form-radioed>i{color:#16b777}.layui-radio-disabled>i{color:#eee!important}.layui-radio-disabled>*{color:#c2c2c2!important}.layui-form [lay-radio]{display:none}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#fafafa;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0;border-right-width:1px}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto!important;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #eee}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-laypage a[data-page]{color:#333}.layui-laypage a{text-decoration:none!important;cursor:pointer}.layui-laypage a:hover{color:#16baaa}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#16baaa}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{display:inline-block;width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#16baaa!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px;clear:both}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{display:inline-block;vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;margin:10px 0;background-color:#fff;color:#5f5f5f}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:600}.layui-table-mend{background-color:#fff}.layui-table-click,.layui-table-hover,.layui-table[lay-even] tbody tr:nth-child(even){background-color:#f8f8f8}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-mend,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#eee}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0;border-bottom-width:1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0;border-right-width:1px}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding-top:15px;padding-right:30px;padding-bottom:15px;padding-left:30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:50px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{padding-top:5px;padding-right:10px;padding-bottom:5px;padding-left:10px;font-size:12px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:30px;line-height:20px;padding-top:5px;padding-left:11px;padding-right:11px}.layui-table[lay-data],.layui-table[lay-options]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view{clear:both}.layui-table-view .layui-table{position:relative;width:auto;margin:0;border:0;border-collapse:separate}.layui-table-view .layui-table[lay-skin=line]{border-width:0;border-right-width:1px}.layui-table-view .layui-table[lay-skin=row]{border-width:0;border-bottom-width:1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:0;border-top:none;border-left:none}.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td{cursor:default}.layui-table-view .layui-table td[data-edit]{cursor:text}.layui-table-view .layui-table td[data-edit]:hover:after{position:absolute;left:0;top:0;width:100%;height:100%;box-sizing:border-box;border:1px solid #16b777;pointer-events:none;content:""}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px;line-height:16px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:199}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0;border-bottom-width:1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-column{position:relative;width:100%;min-height:41px;padding:8px 16px;border-width:0;border-bottom-width:1px}.layui-table-column .layui-btn-container{margin-bottom:-8px}.layui-table-column .layui-btn-container .layui-btn{margin-right:8px;margin-bottom:8px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;z-index:399;padding:5px 0!important;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-tool-panel li{padding:0 10px;margin:0!important;line-height:30px;list-style-type:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%}.layui-table-tool-panel li:hover{background-color:#f8f8f8}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{padding-left:28px}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0;border-left-width:1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#5f5f5f}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#5f5f5f}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:38px;line-height:28px;padding:6px 15px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-table-link{color:#01aaed}.layui-table-cell .layui-btn{vertical-align:inherit}.layui-table-cell[align=center]{-webkit-box-pack:center}.layui-table-cell[align=right]{-webkit-box-pack:end}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{text-align:center;-webkit-box-pack:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:30px 15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0;border-left-width:1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px;border-width:0;border-left-width:1px}.layui-table-tool{position:relative;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0;border-bottom-width:1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-total{margin-bottom:-1px;border-width:0;border-top-width:1px;overflow:hidden}.layui-table-page{border-width:0;border-top-width:1px;margin-bottom:-1px;white-space:nowrap;overflow:hidden}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-11px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-pagebar{float:right;line-height:23px}.layui-table-pagebar .layui-btn-sm{margin-top:-1px}.layui-table-pagebar .layui-btn-xs{margin-top:2px}.layui-table-view select[lay-ignore]{display:inline-block}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;z-index:189;min-width:100%;min-height:100%;padding:5px 14px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15);background-color:#fff}.layui-table-edit:focus{border-color:#16b777!important}input.layui-input.layui-table-edit{height:100%}select.layui-table-edit{padding:0 0 0 10px;border-color:#d2d2d2}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:26px;height:100%;padding:5px 0;border-width:0;border-left-width:1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px}.layui-table-grid-down:hover{background-color:#fbfbfb}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-49px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#5f5f5f}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#5f5f5f;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-table-tree-nodeIcon{max-width:20px}.layui-table-tree-nodeIcon>*{width:100%}.layui-table-tree-flexIcon,.layui-table-tree-nodeIcon{margin-right:2px}.layui-table-tree-flexIcon{cursor:pointer}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-list{margin:11px 0}.layui-upload-choose{max-width:200px;padding:0 10px;color:#999;font-size:14px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-upload-drag{position:relative;display:inline-block;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#16baaa}.layui-upload-drag[lay-over]{border-color:#16baaa}.layui-upload-form{display:inline-block}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;display:inline-block;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-btn-container .layui-upload-choose{padding-left:0}.layui-menu{position:relative;margin:5px 0;background-color:#fff;box-sizing:border-box}.layui-menu *{box-sizing:border-box}.layui-menu li,.layui-menu-body-title,.layui-menu-body-title a{padding:5px 15px;color:initial}.layui-menu li{position:relative;margin:1px 0;line-height:26px;color:rgba(0,0,0,.8);font-size:14px;white-space:nowrap;cursor:pointer;transition:all .3s}.layui-menu li:hover{background-color:#f8f8f8}.layui-menu li.layui-disabled,.layui-menu li.layui-disabled *{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important}.layui-menu-item-parent:hover>.layui-menu-body-panel{display:block;animation-name:layui-fadein;animation-duration:.3s;animation-fill-mode:both;animation-delay:.2s}.layui-menu-item-group>.layui-menu-body-title,.layui-menu-item-parent>.layui-menu-body-title{padding-right:38px}.layui-menu .layui-menu-item-divider:hover,.layui-menu .layui-menu-item-group:hover,.layui-menu .layui-menu-item-none:hover{background:0 0;cursor:default}.layui-menu .layui-menu-item-group>ul{margin:5px 0 -5px}.layui-menu .layui-menu-item-group>.layui-menu-body-title{color:rgba(0,0,0,.35);user-select:none}.layui-menu .layui-menu-item-none{color:rgba(0,0,0,.35);cursor:default}.layui-menu .layui-menu-item-none{text-align:center}.layui-menu .layui-menu-item-divider{margin:5px 0;padding:0;height:0;line-height:0;border-bottom:1px solid #eee;overflow:hidden}.layui-menu .layui-menu-item-down:hover,.layui-menu .layui-menu-item-up:hover{cursor:pointer}.layui-menu .layui-menu-item-up>.layui-menu-body-title{color:rgba(0,0,0,.8)}.layui-menu .layui-menu-item-up>ul{visibility:hidden;height:0;overflow:hidden}.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon,.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon{color:#000}.layui-menu .layui-menu-item-down>ul{visibility:visible;height:auto}.layui-menu .layui-menu-item-checked,.layui-menu .layui-menu-item-checked2{background-color:#f8f8f8!important;color:#16b777}.layui-menu .layui-menu-item-checked a,.layui-menu .layui-menu-item-checked2 a{color:#16b777}.layui-menu .layui-menu-item-checked:after{position:absolute;right:-1px;top:0;bottom:0;border-right:3px solid #16b777;content:""}.layui-menu-body-title{position:relative;margin:-5px -15px;overflow:hidden;text-overflow:ellipsis}.layui-menu-body-title a{display:block;margin:-5px -15px;color:rgba(0,0,0,.8)}.layui-menu-body-title a:hover{transition:all .3s}.layui-menu-body-title>.layui-icon{position:absolute;right:15px;top:50%;margin-top:-6px;line-height:normal;font-size:14px}.layui-menu-body-title>.layui-icon:hover{transition:all .3s}.layui-menu-body-title>.layui-icon-right{right:14px}.layui-menu-body-panel{display:none;position:absolute;top:-7px;left:100%;z-index:1000;margin-left:13px;padding:5px 0}.layui-menu-body-panel:before{content:"";position:absolute;width:20px;left:-16px;top:0;bottom:0}.layui-menu-body-panel-left{left:auto;right:100%;margin:0 13px 0}.layui-menu-body-panel-left:before{left:auto;right:-16px}.layui-menu-lg li{line-height:32px}.layui-menu-lg .layui-menu-body-title a:hover,.layui-menu-lg li:hover{background:0 0;color:#16b777}.layui-menu-lg li .layui-menu-body-panel{margin-left:14px}.layui-menu-lg li .layui-menu-body-panel-left{margin:0 15px 0}.layui-dropdown{position:absolute;left:-999999px;top:-999999px;z-index:77777777;margin:5px 0;min-width:100px}.layui-dropdown:before{content:"";position:absolute;width:100%;height:6px;left:0;top:-6px}.layui-dropdown-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}.layui-nav{position:relative;padding:0 15px;background-color:#2f363c;color:#fff;border-radius:2px;font-size:0;box-sizing:border-box}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;margin-top:0;list-style:none;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar{content:"";position:absolute;left:0;top:0;width:0;height:3px;background-color:#16b777;transition:all .2s;-webkit-transition:all .2s;pointer-events:none}.layui-nav-bar{z-index:1000}.layui-nav[lay-bar=disabled] .layui-nav-bar{display:none}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff;text-decoration:none}.layui-nav .layui-this:after{top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{position:absolute;top:0;right:3px;left:auto!important;margin-top:0;font-size:12px;cursor:pointer;transition:all .2s;-webkit-transition:all .2s}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{transform:rotate(180deg)}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #eee;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap;box-sizing:border-box}.layui-nav .layui-nav-child a{color:#5f5f5f;color:rgba(0,0,0,.8)}.layui-nav .layui-nav-child a:hover{background-color:#f8f8f8;color:rgba(0,0,0,.8)}.layui-nav-child dd{margin:1px 0;position:relative}.layui-nav-child dd.layui-this{background-color:#f8f8f8;color:#000}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-child-r{left:auto;right:0}.layui-nav-child-c{text-align:center}.layui-nav.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:40px}.layui-nav-tree .layui-nav-item a{position:relative;height:40px;line-height:40px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item>a{padding-top:5px;padding-bottom:5px}.layui-nav-tree .layui-nav-more{right:15px}.layui-nav-tree .layui-nav-item>a .layui-nav-more{padding:5px 0}.layui-nav-tree .layui-nav-bar{width:5px;height:0}.layui-side .layui-nav-tree .layui-nav-bar{width:2px}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#16baaa;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-bar{background-color:#16baaa}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;box-shadow:none}.layui-nav-tree .layui-nav-child dd{margin:0}.layui-nav-tree .layui-nav-child a{color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child,.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-itemed>.layui-nav-child{display:block;background-color:rgba(0,0,0,.3)!important}.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-nav-tree.layui-bg-gray a,.layui-nav.layui-bg-gray .layui-nav-item a{color:rgba(0,0,0,.8)}.layui-nav-tree.layui-bg-gray{padding:6px 0}.layui-nav-tree.layui-bg-gray .layui-nav-itemed>a{color:#000!important}.layui-nav.layui-bg-gray .layui-this a{color:#16b777}.layui-nav-tree.layui-bg-gray .layui-nav-itemed>.layui-nav-child{padding-left:11px;background:0 0!important}.layui-nav-tree.layui-bg-gray .layui-nav-item>a{padding-top:0;padding-bottom:0}.layui-nav-tree.layui-bg-gray .layui-nav-item>a .layui-nav-more{padding:0}.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this,.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this a,.layui-nav-tree.layui-bg-gray .layui-this,.layui-nav-tree.layui-bg-gray .layui-this>a{background:0 0!important;color:#16b777!important;font-weight:700}.layui-nav-tree.layui-bg-gray .layui-nav-bar{background-color:#16b777}.layui-breadcrumb{visibility:hidden;font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#16b777!important}.layui-breadcrumb a cite{color:#5f5f5f;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab .layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{position:relative;line-height:40px;min-width:65px;margin:0;padding:0 15px;text-align:center;cursor:pointer}.layui-tab .layui-tab-title li a{display:block;padding:0 15px;margin:0 -15px}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:"";width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#eee;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:15px 0}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#ff5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#16baaa}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #16b777}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#fafafa}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#16b777}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#16b777;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#ff5722}.layui-timeline-item:before{content:"";position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:first-child:before{display:block}.layui-timeline-item:last-child:before{display:none}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px;line-height:22px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#ff5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#5f5f5f}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-5px 6px 0}.layui-nav .layui-badge{margin-top:-10px}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\0;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:none 0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\0;opacity:1;left:20px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#eee;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind ul li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:16px;bottom:16px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9f9f9f;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#5f5f5f;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #d9d9d9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{position:relative;margin:10px 0;padding:15px;line-height:20px;border:1px solid #eee;border-left-width:6px;background-color:#fafafa;color:#333;font-family:Courier New,Lucida Console,Consolas;font-size:12px}.layui-transfer-box,.layui-transfer-header,.layui-transfer-search{border-width:0;border-style:solid;border-color:#eee}.layui-transfer-box{position:relative;display:inline-block;vertical-align:middle;border-width:1px;width:200px;height:360px;border-radius:2px;background-color:#fff}.layui-transfer-box .layui-form-checkbox{width:100%;margin:0!important}.layui-transfer-header{height:38px;line-height:38px;padding:0 11px;border-bottom-width:1px}.layui-transfer-search{position:relative;padding:11px;border-bottom-width:1px}.layui-transfer-search .layui-input{height:32px;padding-left:30px;font-size:12px}.layui-transfer-search .layui-icon-search{position:absolute;left:20px;top:50%;line-height:normal;margin-top:-8px;color:#5f5f5f}.layui-transfer-active{margin:0 15px;display:inline-block;vertical-align:middle}.layui-transfer-active .layui-btn{display:block;margin:0;padding:0 15px;background-color:#16b777;border-color:#16b777;color:#fff}.layui-transfer-active .layui-btn-disabled{background-color:#fbfbfb;border-color:#eee;color:#d2d2d2}.layui-transfer-active .layui-btn:first-child{margin-bottom:15px}.layui-transfer-active .layui-btn .layui-icon{margin:0;font-size:14px!important}.layui-transfer-data{padding:5px 0;overflow:auto}.layui-transfer-data li{height:32px;line-height:32px;margin-top:0!important;padding:0 11px;list-style-type:none!important}.layui-transfer-data li:hover{background-color:#f8f8f8;transition:.5s all}.layui-transfer-data .layui-none{padding:15px 11px;text-align:center;color:#999}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:11px 6px 11px 0;font-size:0}.layui-rate li{margin-top:0!important}.layui-rate li i.layui-icon{font-size:20px;color:#ffb800}.layui-rate li i.layui-icon{margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:38px;height:38px;border:1px solid #eee;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:44px;height:44px;line-height:30px}.layui-colorpicker.layui-colorpicker-sm{width:30px;height:30px;line-height:20px;padding:3px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:16px;padding:1px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#fff;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;left:-999999px;top:-999999px;z-index:77777777;width:280px;margin:5px 0;padding:7px;background:#fff;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #fff;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#5f5f5f}.layui-slider{height:4px;background:#eee;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#fff;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:77777777;white-space:nowrap;display:none;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#fff;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:"";position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #eee;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-14px}.layui-slider-input-btn{position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #eee}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #eee}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none}.layui-slider-input-btn i:hover{color:#16baaa}.layui-slider-vertical{width:4px;margin-left:33px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-tree{line-height:22px}.layui-tree .layui-form-checkbox{margin:0!important}.layui-tree-set{width:100%;position:relative}.layui-tree-pack{display:none;padding-left:20px;position:relative}.layui-tree-line .layui-tree-pack{padding-left:27px}.layui-tree-line .layui-tree-set .layui-tree-set:after{content:"";position:absolute;top:14px;left:-9px;width:17px;height:0;border-top:1px dotted #c0c4cc}.layui-tree-entry{position:relative;padding:3px 0;height:20px;white-space:nowrap}.layui-tree-entry:hover{background-color:#eee}.layui-tree-line .layui-tree-entry:hover{background-color:rgba(0,0,0,0)}.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color:#999;text-decoration:underline;transition:.3s}.layui-tree-main{display:inline-block;vertical-align:middle;cursor:pointer;padding-right:10px}.layui-tree-line .layui-tree-set:before{content:"";position:absolute;top:0;left:-9px;width:0;height:100%;border-left:1px dotted #c0c4cc}.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height:13px}.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height:0}.layui-tree-iconClick{display:inline-block;vertical-align:middle;position:relative;height:20px;line-height:20px;margin:0 10px;color:#c0c4cc}.layui-tree-icon{height:12px;line-height:12px;width:12px;text-align:center;border:1px solid #c0c4cc}.layui-tree-iconClick .layui-icon{font-size:18px}.layui-tree-icon .layui-icon{font-size:12px;color:#5f5f5f}.layui-tree-iconArrow{padding:0 5px}.layui-tree-iconArrow:after{content:"";position:absolute;left:4px;top:3px;z-index:100;width:0;height:0;border-width:5px;border-style:solid;border-color:transparent transparent transparent #c0c4cc;transition:.5s}.layui-tree-spread>.layui-tree-entry .layui-tree-iconClick>.layui-tree-iconArrow:after{transform:rotate(90deg) translate(3px,4px)}.layui-tree-txt{display:inline-block;vertical-align:middle;color:#555}.layui-tree-search{margin-bottom:15px;color:#5f5f5f}.layui-tree-btnGroup{visibility:hidden;display:inline-block;vertical-align:middle;position:relative}.layui-tree-btnGroup .layui-icon{display:inline-block;vertical-align:middle;padding:0 2px;cursor:pointer}.layui-tree-btnGroup .layui-icon:hover{color:#999;transition:.3s}.layui-tree-entry:hover .layui-tree-btnGroup{visibility:visible}.layui-tree-editInput{position:relative;display:inline-block;vertical-align:middle;height:20px;line-height:20px;padding:0 3px;border:none;background-color:rgba(0,0,0,.05)}.layui-tree-emptyText{text-align:center;color:#999}.layui-anim{-webkit-animation-duration:.3s;-webkit-animation-fill-mode:both;animation-duration:.3s;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .2s;-webkit-transition:all .2s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,15px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,15px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@keyframes layui-down{0%{opacity:.3;transform:translate3d(0,-100%,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-down{animation-name:layui-down}@keyframes layui-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-downbit{animation-name:layui-downbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@keyframes layui-scalesmall{0%{opacity:.3;transform:scale(1.5)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall{animation-name:layui-scalesmall}@keyframes layui-scalesmall-spring{0%{opacity:.3;transform:scale(1.5)}80%{opacity:.8;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall-spring{animation-name:layui-scalesmall-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout}html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-view{display:block;position:relative;margin:11px 0;padding:0;border:1px solid #eee;border-left-width:6px;background-color:#fafafa;color:#333;font-family:Courier New;font-size:13px}.layui-code-title{position:relative;padding:0 10px;height:40px;line-height:40px;border-bottom:1px solid #eee;font-size:12px}.layui-code-title>.layui-code-about{position:absolute;right:10px;top:0;color:#b7b7b7}.layui-code-about>a{padding-left:10px}.layui-code-view>.layui-code-ol,.layui-code-view>.layui-code-ul{max-height:100%;padding:0!important;position:relative;overflow:auto}.layui-code-view>.layui-code-ol>li{position:relative;margin-top:0!important;margin-left:45px!important;line-height:20px;padding:0 10px!important;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view>.layui-code-ol>li:first-child,.layui-code-view>.layui-code-ul>li:first-child{padding-top:10px!important}.layui-code-view>.layui-code-ol>li:last-child,.layui-code-view>.layui-code-ul>li:last-child{padding-bottom:10px!important}.layui-code-view>.layui-code-ul>li{position:relative;line-height:20px;padding:0 10px!important;list-style-type:none;*list-style-type:none;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-dark{border:1px solid #0c0c0c;border-left-color:#3f3f3f;background-color:#0c0c0c;color:#c2be9e}.layui-code-dark>.layui-code-title{border-bottom:none}.layui-code-dark>.layui-code-ol>li,.layui-code-dark>.layui-code-ul>li{background-color:#3f3f3f;border-left:none}.layui-code-dark>.layui-code-ul>li{margin-left:6px}.layui-code textarea{display:none}.layui-code-preview>.layui-code{margin:0}.layui-code-preview>.layui-tab{position:relative;z-index:1;margin-bottom:0}.layui-code-preview>.layui-tab>.layui-tab-title{border-bottom:none}.layui-code-preview>.layui-code>.layui-code-title{display:none}.layui-code-preview .layui-code-item{display:none}.layui-code-item-preview{position:relative;padding:16px}.layui-code-item-preview>iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.layui-code-tools{position:absolute;right:11px;top:3px}.layui-code-tools>i{display:inline-block;margin-left:6px;padding:3px;cursor:pointer}.layui-code-tools>i.layui-icon-file-b{color:#999}.layui-code-tools>i:hover{color:#16b777}.layui-code-copy{position:absolute;right:6px;top:6px;cursor:pointer;display:none}.layui-code-copy .layui-icon{color:#777;transition:all .3s}.layui-code-copy:hover .layui-icon{color:#16b777}.layui-code-view:hover>.layui-code-copy{display:block}.layui-code-copy-offset{margin-right:17px}.layui-code-preview>.layui-code-view>.layui-code-copy{display:none!important}.layui-code-full{position:fixed;left:0;top:0;z-index:1111111;width:100%;height:100%;background-color:#fff}.layui-code-full .layui-code-item{width:100%!important;border-width:0!important;border-top-width:1px!important}.layui-code-full .layui-code-item,.layui-code-full .layui-code-ol,.layui-code-full .layui-code-ul{height:calc(100vh - 51px)!important;box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate,.layui-laydate *{box-sizing:border-box}.layui-laydate{position:absolute;z-index:99999999;margin:5px 0;border-radius:2px;font-size:14px;line-height:normal;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}.layui-laydate-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate{animation-name:laydate-downbit}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;padding:0 5px;color:#999;font-size:18px;cursor:pointer}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-set-ym span{padding:0 10px;cursor:pointer}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:0;text-align:center}.layui-laydate-content th{font-weight:400}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.laydate-day-holidays:before{position:absolute;left:0;top:0;font-size:12px;transform:scale(.7)}.laydate-day-holidays:before{content:'\4F11';color:#ff5722}.laydate-day-holidays[type=work]:before{content:'\73ED';color:inherit}.layui-laydate .layui-this .laydate-day-holidays:before{color:#fff}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px}.layui-laydate-footer span{display:inline-block;vertical-align:top;height:26px;line-height:24px;padding:0 10px;border:1px solid #c9c9c9;border-radius:2px;background-color:#fff;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .3s}.layui-laydate-footer span:hover{color:#16b777}.layui-laydate-footer span.layui-laydate-preview{cursor:default;border-color:transparent!important}.layui-laydate-footer span.layui-laydate-preview:hover{color:#777}.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left:0}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{margin:0 0 0 -1px;border-radius:0}.laydate-footer-btns span:first-child{border-radius:2px 0 0 2px}.laydate-footer-btns span:last-child{border-radius:0 2px 2px 0}.layui-laydate-shortcut{width:80px;padding:6px 0;display:inline-block;vertical-align:top;overflow:auto;max-height:276px;text-align:center}.layui-laydate-shortcut+.layui-laydate-main{display:inline-block;border-left:1px solid #e2e2e2}.layui-laydate-shortcut>li{padding:5px 8px;cursor:pointer;line-height:18px}.layui-laydate .layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;box-sizing:border-box;background-color:#fff}.layui-laydate .layui-laydate-list>li{position:relative;display:inline-block;width:33.3%;height:36px;line-height:36px;margin:3px 0;vertical-align:middle;text-align:center;cursor:pointer;list-style:none}.layui-laydate .laydate-month-list>li{width:25%;margin:17px 0}.layui-laydate .laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.layui-laydate .laydate-time-list p{position:relative;top:-4px;margin:0;line-height:29px}.layui-laydate .laydate-time-list ol{height:181px;overflow:hidden}.layui-laydate .laydate-time-list>li:hover ol{overflow-y:auto}.layui-laydate .laydate-time-list ol li{width:130%;padding-left:33px;height:30px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px;color:#ff5722}.layui-laydate-range{width:546px}.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle;max-width:50%}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-y,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#777}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#16b777}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{color:#333}.layui-laydate-content td{color:#777}.layui-laydate-content td.laydate-day-now{color:#16b777}.layui-laydate-content td.laydate-day-now:after{content:'';position:absolute;width:100%;height:30px;left:0;top:0;border:1px solid #16b777;box-sizing:border-box}.layui-laydate-linkage .layui-laydate-content td.laydate-selected>div{background-color:#00f7de}.layui-laydate-linkage .laydate-selected:hover>div{background-color:#00f7de!important}.layui-laydate-content td.laydate-selected:after,.layui-laydate-content td:hover:after{content:none}.layui-laydate-content td>div:hover,.layui-laydate-list li:hover,.layui-laydate-shortcut>li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.layui-laydate-linkage .laydate-selected.laydate-day-next>div,.layui-laydate-linkage .laydate-selected.laydate-day-prev>div{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#ff5722}.laydate-day-mark::after{background-color:#16b777}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#16b777}.layui-laydate .layui-this,.layui-laydate .layui-this>div{background-color:#16baaa!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content td>div{padding:7px 0;height:100%}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#16baaa}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead{border:1px solid #e2e2e2}.layui-laydate-linkage.laydate-theme-grid .laydate-selected,.layui-laydate-linkage.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#16baaa!important}.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-next,.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}.laydate-theme-grid .layui-laydate-content td>div{height:29px;margin-top:-1px}.laydate-theme-circle .layui-laydate-content td.layui-this>div,.laydate-theme-circle .layui-laydate-content td>div{width:28px;height:28px;line-height:28px;border-radius:14px;margin:0 4px;padding:0}.layui-laydate.laydate-theme-circle .layui-laydate-content table td.layui-this{background-color:transparent!important}.laydate-theme-grid.laydate-theme-circle .layui-laydate-content td>div{margin:0 3.5px}.laydate-theme-fullpanel .layui-laydate-main{width:526px}.laydate-theme-fullpanel .layui-laydate-list{width:252px;left:272px}.laydate-theme-fullpanel .laydate-set-ym span{display:none}.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-theme-fullpanel .laydate-time-show .layui-laydate-header .layui-icon{display:inline-block!important}.laydate-theme-fullpanel .laydate-btns-time{display:none}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch}.layui-layer{top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-btn a,.layui-layer-setwin span{display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes layer-slide-down{from{transform:translate3d(0,-100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-down-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,-100%,0)}}.layer-anim-slide-down{animation-name:layer-slide-down}.layer-anim-slide-down-out{animation-name:layer-slide-down-out}@keyframes layer-slide-left{from{transform:translate3d(100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-left-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(100%,0,0)}}.layer-anim-slide-left{animation-name:layer-slide-left}.layer-anim-slide-left-out{animation-name:layer-slide-left-out}@keyframes layer-slide-up{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-up-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,100%,0)}}.layer-anim-slide-up{animation-name:layer-slide-up}.layer-anim-slide-up-out{animation-name:layer-slide-up-out}@keyframes layer-slide-right{from{transform:translate3d(-100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-right-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(-100%,0,0)}}.layer-anim-slide-right{animation-name:layer-slide-right}.layer-anim-slide-right-out{animation-name:layer-slide-right-out}.layui-layer-title{padding:0 81px 0 16px;height:50px;line-height:50px;border-bottom:1px solid #f0f0f0;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:16px;font-size:0;line-height:initial}.layui-layer-setwin span{position:relative;width:16px;height:16px;line-height:18px;margin-left:10px;text-align:center;font-size:16px;cursor:pointer;color:#000;_overflow:hidden}.layui-layer-setwin .layui-layer-min:before{content:'';position:absolute;width:12px;height:1px;left:50%;top:50%;margin:-.5px 0 0 -6px;background-color:#2e2d3c;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-max:after,.layui-layer-setwin .layui-layer-max:before{content:'';position:absolute;left:50%;top:50%;z-index:1;width:9px;height:9px;margin:-5px 0 0 -5px;border:1px solid #2e2d3c}.layui-layer-setwin .layui-layer-max:hover:after,.layui-layer-setwin .layui-layer-max:hover:before{border-color:#2d93ca}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-maxmin:after,.layui-layer-setwin .layui-layer-maxmin:before{width:7px;height:7px;margin:-3px 0 0 -3px;background-color:#fff}.layui-layer-setwin .layui-layer-maxmin:after{z-index:0;margin:-5px 0 0 -1px}.layui-layer-setwin .layui-layer-close{cursor:pointer}.layui-layer-setwin .layui-layer-close:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;color:#fff;background-color:#787878;padding:3px;border:3px solid;width:18px;height:18px;font-size:18px;font-weight:bolder;border-radius:50%;margin-left:0;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{opacity:unset;background-color:#3888f6}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:#1e9fff;background-color:#1e9fff;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:240px}.layui-layer-dialog .layui-layer-content{position:relative;padding:16px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-face{position:absolute;top:18px;left:16px;color:#959595;font-size:32px;_left:-40px}.layui-layer-dialog .layui-layer-content .layui-icon-tips{color:#f39b12}.layui-layer-dialog .layui-layer-content .layui-icon-success{color:#16b777}.layui-layer-dialog .layui-layer-content .layui-icon-error{top:19px;color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-question{color:#ffb800}.layui-layer-dialog .layui-layer-content .layui-icon-lock{color:#787878}.layui-layer-dialog .layui-layer-content .layui-icon-face-cry{color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-face-smile{color:#16b777}.layui-layer-rim{border:6px solid #8d8d8d;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #d3d4d3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-close{color:#fff}.layui-layer-hui .layui-layer-content{padding:11px 24px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:18px 24px 18px 58px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:76px;height:38px;line-height:38px;text-align:center}.layui-layer-loading-icon{font-size:38px;color:#959595}.layui-layer-loading2{text-align:center}.layui-layer-loading-2{position:relative;height:38px}.layui-layer-loading-2:after,.layui-layer-loading-2:before{content:'';position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;border:3px solid #d2d2d2;box-sizing:border-box}.layui-layer-loading-2:after{border-color:transparent;border-left-color:#1e9fff}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan .layui-layer-title{background:#4476a7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;border-top:1px solid #e9e7e7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#e9e7e7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#c9c5c5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92b8b1}.layui-layer-lan .layui-layer-setwin .layui-icon,.layui-layer-molv .layui-layer-setwin .layui-icon{color:#fff}.layui-layer-win10{border:1px solid #aaa;box-shadow:1px 1px 6px rgba(0,0,0,.3);border-radius:none}.layui-layer-win10 .layui-layer-title{height:32px;line-height:32px;padding-left:8px;border-bottom:none;font-size:12px}.layui-layer-win10 .layui-layer-setwin{right:0;top:0}.layui-layer-win10 .layui-layer-setwin span{margin-left:0;padding:8px}.layui-layer-win10.layui-layer-page .layui-layer-setwin span{padding:8px 11px}.layui-layer-win10 .layui-layer-setwin span:hover{background-color:#e5e5e5}.layui-layer-win10 .layui-layer-setwin span.layui-icon-close:hover{background-color:#e81123;color:#fff}.layui-layer-win10.layui-layer-dialog .layui-layer-content{padding:8px 16px 32px;color:#0033bc}.layui-layer-win10.layui-layer-dialog .layui-layer-padding{padding-top:18px;padding-left:58px}.layui-layer-win10 .layui-layer-btn{padding:5px 5px 10px;border-top:1px solid #dfdfdf;background-color:#f0f0f0}.layui-layer-win10 .layui-layer-btn a{height:18px;line-height:18px;background-color:#e1e1e1;border-color:#adadad;color:#000;font-size:12px;transition:all .3s}.layui-layer-win10 .layui-layer-btn a:hover{border-color:#2a8edd;background-color:#e5f1fb}.layui-layer-win10 .layui-layer-btn .layui-layer-btn0{border-color:#0078d7}.layui-layer-prompt .layui-layer-input{display:block;width:260px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:16px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;display:inline-block;vertical-align:top;border-left:1px solid transparent;border-right:1px solid transparent;min-width:80px;max-width:300px;padding:0 16px;text-align:center;cursor:default;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:51px;border-left-color:#eee;border-right-color:#eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left-color:transparent}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{background:0 0;box-shadow:none}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgnext,.layui-layer-imgprev{position:fixed;top:50%;width:52px;height:52px;line-height:52px;margin-top:-26px;cursor:pointer;font-size:52px;color:#717171}.layui-layer-imgprev{left:32px}.layui-layer-imgnext{right:32px}.layui-layer-imgnext:hover,.layui-layer-imgprev:hover{color:#959595}.layui-layer-imgbar{position:fixed;left:0;right:0;bottom:0;width:100%;height:40px;line-height:40px;background-color:#000\9;filter:Alpha(opacity=60);background-color:rgba(2,0,0,.35);color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;padding:0 5px;font-size:12px;color:#fff}.layui-layer-imgtit h3{max-width:65%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-weight:300}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit em{font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}} \ No newline at end of file +blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{display:inline-block;border:none;vertical-align:middle}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h1,h2,h3,h4{font-weight:700}h5,h6{font-weight:500;font-size:100%}button,input,select,textarea{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:1.6;color:#333;color:rgba(0,0,0,.85);font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{height:0;line-height:0;margin:10px 0;padding:0;border:none!important;border-bottom:1px solid #eee!important;clear:both;overflow:hidden;background:0 0}a{color:#333;text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-clear-space{word-spacing:-5px}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.layui-edge{position:relative;display:inline-block;vertical-align:middle;width:0;height:0;border-width:6px;border-style:dashed;border-color:transparent;overflow:hidden}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-disabled,.layui-icon,.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-show-v{visibility:visible!important}.layui-hide-v{visibility:hidden!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=282);src:url(../font/iconfont.eot?v=282#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=282) format('woff2'),url(../font/iconfont.woff?v=282) format('woff'),url(../font/iconfont.ttf?v=282) format('truetype'),url(../font/iconfont.svg?v=282#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-leaf:before{content:"\e701"}.layui-icon-folder:before{content:"\eabe"}.layui-icon-folder-open:before{content:"\eac1"}.layui-icon-gitee:before{content:"\e69b"}.layui-icon-github:before{content:"\e6a7"}.layui-icon-disabled:before{content:"\e6cc"}.layui-icon-moon:before{content:"\e6c2"}.layui-icon-error:before{content:"\e693"}.layui-icon-success:before{content:"\e697"}.layui-icon-question:before{content:"\e699"}.layui-icon-lock:before{content:"\e69a"}.layui-icon-eye:before{content:"\e695"}.layui-icon-eye-invisible:before{content:"\e696"}.layui-icon-backspace:before{content:"\e694"}.layui-icon-tips-fill:before{content:"\eb2e"}.layui-icon-test:before{content:"\e692"}.layui-icon-clear:before{content:"\e788"}.layui-icon-heart-fill:before{content:"\e68f"}.layui-icon-light:before{content:"\e748"}.layui-icon-music:before{content:"\e690"}.layui-icon-time:before{content:"\e68d"}.layui-icon-ie:before{content:"\e7bb"}.layui-icon-firefox:before{content:"\e686"}.layui-icon-at:before{content:"\e687"}.layui-icon-bluetooth:before{content:"\e689"}.layui-icon-chrome:before{content:"\e68a"}.layui-icon-edge:before{content:"\e68b"}.layui-icon-heart:before{content:"\e68c"}.layui-icon-key:before{content:"\e683"}.layui-icon-android:before{content:"\e684"}.layui-icon-mike:before{content:"\e6dc"}.layui-icon-mute:before{content:"\e685"}.layui-icon-gift:before{content:"\e627"}.layui-icon-windows:before{content:"\e67f"}.layui-icon-ios:before{content:"\e680"}.layui-icon-logout:before{content:"\e682"}.layui-icon-wifi:before{content:"\e7e0"}.layui-icon-rss:before{content:"\e808"}.layui-icon-email:before{content:"\e618"}.layui-icon-reduce-circle:before{content:"\e616"}.layui-icon-transfer:before{content:"\e691"}.layui-icon-service:before{content:"\e626"}.layui-icon-addition:before{content:"\e624"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-slider:before{content:"\e714"}.layui-icon-print:before{content:"\e66d"}.layui-icon-export:before{content:"\e67d"}.layui-icon-cols:before{content:"\e610"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-username:before{content:"\e66f"}.layui-icon-password:before{content:"\e673"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-auz:before{content:"\e672"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-tips:before{content:"\e702"}.layui-icon-note:before{content:"\e66e"}.layui-icon-senior:before{content:"\e674"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-notice:before{content:"\e667"}.layui-icon-console:before{content:"\e665"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-set:before{content:"\e716"}.layui-icon-template:before{content:"\e663"}.layui-icon-app:before{content:"\e653"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-home:before{content:"\e68e"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-more:before{content:"\e65f"}.layui-icon-camera:before{content:"\e660"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-read:before{content:"\e705"}.layui-icon-location:before{content:"\e715"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-return:before{content:"\e65c"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-fire:before{content:"\e756"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-cart:before{content:"\e657"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-next:before{content:"\e65b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-user:before{content:"\e770"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-component:before{content:"\e857"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-pause:before{content:"\e651"}.layui-icon-play:before{content:"\e652"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-voice:before{content:"\e688"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-link:before{content:"\e64c"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-share:before{content:"\e641"}.layui-icon-edit:before{content:"\e642"}.layui-icon-delete:before{content:"\e640"}.layui-icon-engine:before{content:"\e628"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-table:before{content:"\e62d"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-water:before{content:"\e636"}.layui-icon-date:before{content:"\e637"}.layui-icon-layer:before{content:"\e638"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-form:before{content:"\e63c"}.layui-icon-file:before{content:"\e621"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-404:before{content:"\e61c"}.layui-icon-about:before{content:"\e60b"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-down:before{content:"\e61a"}.layui-icon-up:before{content:"\e619"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-search:before{content:"\e615"}.layui-icon-friends:before{content:"\e612"}.layui-icon-group:before{content:"\e613"}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-log:before{content:"\e60e"}.layui-icon-list:before{content:"\e60a"}.layui-icon-release:before{content:"\e609"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-ok:before{content:"\e605"}.layui-icon-help:before{content:"\e607"}.layui-icon-chat:before{content:"\e606"}.layui-icon-top:before{content:"\e604"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-star:before{content:"\e600"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-ok-circle:before{content:"\1005"}.layui-main{position:relative;width:1160px;margin:0 auto}.layui-header{position:relative;z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px;overflow-x:hidden}.layui-side-scroll{position:relative;width:220px;height:100%;overflow-x:hidden}.layui-body{position:relative;left:200px;right:0;top:0;bottom:0;z-index:900;width:auto;box-sizing:border-box}.layui-layout-body{overflow-x:hidden}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;right:0;background-color:#23292e}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:absolute;top:60px;padding-bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;z-index:990;height:44px;line-height:44px;padding:0 15px;box-shadow:-1px 0 4px rgb(0 0 0 / 12%);background-color:#fafafa}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#16baaa;font-size:16px;box-shadow:0 1px 2px 0 rgb(0 0 0 / 15%)}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:"";display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:767.98px){.layui-container{padding:0 15px}.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:720px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:960px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1150px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}@media screen and (min-width:1400px){.layui-container{width:1330px}.layui-hide-xl{display:none!important}.layui-show-xl-block{display:block!important}.layui-show-xl-inline{display:inline!important}.layui-show-xl-inline-block{display:inline-block!important}.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9{float:left}.layui-col-xl1{width:8.33333333%}.layui-col-xl2{width:16.66666667%}.layui-col-xl3{width:25%}.layui-col-xl4{width:33.33333333%}.layui-col-xl5{width:41.66666667%}.layui-col-xl6{width:50%}.layui-col-xl7{width:58.33333333%}.layui-col-xl8{width:66.66666667%}.layui-col-xl9{width:75%}.layui-col-xl10{width:83.33333333%}.layui-col-xl11{width:91.66666667%}.layui-col-xl12{width:100%}.layui-col-xl-offset1{margin-left:8.33333333%}.layui-col-xl-offset2{margin-left:16.66666667%}.layui-col-xl-offset3{margin-left:25%}.layui-col-xl-offset4{margin-left:33.33333333%}.layui-col-xl-offset5{margin-left:41.66666667%}.layui-col-xl-offset6{margin-left:50%}.layui-col-xl-offset7{margin-left:58.33333333%}.layui-col-xl-offset8{margin-left:66.66666667%}.layui-col-xl-offset9{margin-left:75%}.layui-col-xl-offset10{margin-left:83.33333333%}.layui-col-xl-offset11{margin-left:91.66666667%}.layui-col-xl-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-col-space32{margin:-16px}.layui-col-space32>*{padding:16px}.layui-padding-1{padding:4px!important}.layui-padding-2{padding:8px!important}.layui-padding-3{padding:16px!important}.layui-padding-4{padding:32px!important}.layui-padding-5{padding:48px!important}.layui-margin-1{margin:4px!important}.layui-margin-2{margin:8px!important}.layui-margin-3{margin:16px!important}.layui-margin-4{margin:32px!important}.layui-margin-5{margin:48px!important}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:1.8;border-left:5px solid #16b777;border-radius:0 2px 2px 0;background-color:#fafafa}.layui-quote-nm{border-style:solid;border-width:1px;border-left-width:5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px}.layui-field-title{margin:16px 0;border-width:0;border-top-width:1px}.layui-field-box{padding:15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#eee}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#16b777;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#5f5f5f}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#fafafa;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:1.6;color:#5f5f5f}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{position:relative;height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f8f8f8;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-card-body{position:relative;padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel{position:relative;border-width:1px;border-style:solid;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);background-color:#fff;color:#5f5f5f}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #eee;background-color:#fff}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-scrollbar-hide{overflow:hidden!important}.layui-bg-red{background-color:#ff5722!important;color:#fff!important}.layui-bg-orange{background-color:#ffb800!important;color:#fff!important}.layui-bg-green{background-color:#16baaa!important;color:#fff!important}.layui-bg-cyan{background-color:#2f4056!important;color:#fff!important}.layui-bg-blue{background-color:#1e9fff!important;color:#fff!important}.layui-bg-purple{background-color:#a233c6!important;color:#fff!important}.layui-bg-black{background-color:#2f363c!important;color:#fff!important}.layui-bg-gray{background-color:#fafafa!important;color:#5f5f5f!important}.layui-badge-rim,.layui-border,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-input-split,.layui-panel,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#eee}.layui-border{border-width:1px;border-style:solid;color:#5f5f5f!important}.layui-border-red{border-width:1px;border-style:solid;border-color:#ff5722!important;color:#ff5722!important}.layui-border-orange{border-width:1px;border-style:solid;border-color:#ffb800!important;color:#ffb800!important}.layui-border-green{border-width:1px;border-style:solid;border-color:#16baaa!important;color:#16baaa!important}.layui-border-cyan{border-width:1px;border-style:solid;border-color:#2f4056!important;color:#2f4056!important}.layui-border-blue{border-width:1px;border-style:solid;border-color:#1e9fff!important;color:#1e9fff!important}.layui-border-purple{border-width:1px;border-style:solid;border-color:#a233c6!important;color:#a233c6!important}.layui-border-black{border-width:1px;border-style:solid;border-color:#2f363c!important;color:#2f363c!important}.layui-timeline-item:before{background-color:#eee}.layui-text{line-height:1.8;font-size:14px}.layui-text h1,.layui-text h2,.layui-text h3,.layui-text h4,.layui-text h5,.layui-text h6{color:#3a3a3a}.layui-text h1{font-size:32px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text h4{font-size:16px}.layui-text h5{font-size:14px}.layui-text h6{font-size:13px}.layui-text ol,.layui-text ul{padding-left:15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text ol li{margin-top:5px;list-style-type:decimal}.layui-text-em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.layui-text p{margin:15px 0}.layui-text p:first-child{margin-top:0}.layui-text p:last-child{margin-bottom:0}.layui-text a:not(.layui-btn){color:#01aaed}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text blockquote:not(.layui-elem-quote){padding:5px 15px;border-left:5px solid #eee}.layui-text pre>code:not(.layui-code){padding:15px;font-family:"Courier New",Consolas,"Lucida Console"}.layui-font-12{font-size:12px!important}.layui-font-13{font-size:13px!important}.layui-font-14{font-size:14px!important}.layui-font-16{font-size:16px!important}.layui-font-18{font-size:18px!important}.layui-font-20{font-size:20px!important}.layui-font-22{font-size:22px!important}.layui-font-24{font-size:24px!important}.layui-font-26{font-size:26px!important}.layui-font-28{font-size:28px!important}.layui-font-30{font-size:30px!important}.layui-font-32{font-size:32px!important}.layui-font-red{color:#ff5722!important}.layui-font-orange{color:#ffb800!important}.layui-font-green{color:#16baaa!important}.layui-font-cyan{color:#2f4056!important}.layui-font-blue{color:#01aaed!important}.layui-font-purple{color:#a233c6!important}.layui-font-black{color:#000!important}.layui-font-gray{color:#c2c2c2!important}.layui-btn{display:inline-block;vertical-align:middle;height:38px;line-height:38px;border:1px solid transparent;padding:0 18px;background-color:#16baaa;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border-radius:2px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{word-spacing:-5px}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px;word-spacing:normal}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{padding:0 2px;vertical-align:middle\0;vertical-align:bottom}.layui-btn-primary{border-color:#d2d2d2;background:0 0;color:#5f5f5f}.layui-btn-primary:hover{border-color:#16baaa;color:#333}.layui-btn-normal{background-color:#1e9fff}.layui-btn-warm{background-color:#ffb800}.layui-btn-danger{background-color:#ff5722}.layui-btn-checked{background-color:#16b777}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border-color:#eee!important;background-color:#fbfbfb!important;color:#d2d2d2!important;cursor:not-allowed!important;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:12px!important}.layui-btn-group{display:inline-block;vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#d2d2d2;color:#16baaa}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #d2d2d2}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\9;border-width:1px;border-style:solid;background-color:#fff;color:rgba(0,0,0,.85);border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#d2d2d2!important}.layui-input:focus,.layui-textarea:focus{border-color:#16b777!important;box-shadow:0 0 0 3px rgba(22,183,119,.08)}.layui-textarea{position:relative;min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-input[disabled],.layui-textarea[disabled]{background-color:#fafafa}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{position:relative;margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{position:relative;float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block,.layui-input-inline{position:relative}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{position:relative;float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#ff5722!important;box-shadow:0 0 0 3px rgba(255,87,34,.08)}.layui-input-prefix,.layui-input-split,.layui-input-suffix,.layui-input-suffix .layui-input-affix{position:absolute;right:0;top:0;padding:0 10px;width:35px;height:100%;text-align:center;transition:all .3s;box-sizing:border-box}.layui-input-prefix{left:0;border-radius:2px 0 0 2px}.layui-input-suffix{right:0;border-radius:0 2px 2px 0}.layui-input-split{border-width:1px;border-style:solid}.layui-input-prefix .layui-icon,.layui-input-split .layui-icon,.layui-input-suffix .layui-icon{position:relative;font-size:16px;color:#5f5f5f;transition:all .3s}.layui-input-group{position:relative;display:table;box-sizing:border-box}.layui-input-group>*{display:table-cell;vertical-align:middle;position:relative}.layui-input-group .layui-input{padding-right:15px}.layui-input-group>.layui-input-prefix{width:auto;border-right:0}.layui-input-group>.layui-input-suffix{width:auto;border-left:0}.layui-input-group .layui-input-split{white-space:nowrap}.layui-input-wrap{position:relative;line-height:38px}.layui-input-wrap .layui-input{padding-right:35px}.layui-input-wrap .layui-input::-ms-clear,.layui-input-wrap .layui-input::-ms-reveal{display:none}.layui-input-wrap .layui-input-prefix+.layui-input,.layui-input-wrap .layui-input-prefix~* .layui-input{padding-left:35px}.layui-input-wrap .layui-input-split+.layui-input,.layui-input-wrap .layui-input-split~* .layui-input{padding-left:45px}.layui-input-wrap .layui-input-prefix~.layui-form-select{position:static}.layui-input-wrap .layui-input-prefix,.layui-input-wrap .layui-input-split,.layui-input-wrap .layui-input-suffix{pointer-events:none}.layui-input-wrap .layui-input:hover+.layui-input-split{border-color:#d2d2d2}.layui-input-wrap .layui-input:focus+.layui-input-split{border-color:#16b777}.layui-input-wrap .layui-input-prefix.layui-input-split{border-width:0;border-right-width:1px}.layui-input-affix{line-height:38px}.layui-input-suffix .layui-input-affix{right:auto;left:-35px}.layui-input-affix .layui-icon{color:rgba(0,0,0,.8);pointer-events:auto!important;cursor:pointer}.layui-input-affix .layui-icon-clear{color:rgba(0,0,0,.3)}.layui-input-affix .layui-icon:hover{color:rgba(0,0,0,.6)}.layui-input-wrap .layui-input-number{width:24px;padding:0}.layui-input-wrap .layui-input-number .layui-icon{position:absolute;right:0;width:100%;height:50%;line-height:normal;font-size:12px}.layui-input-wrap .layui-input-number .layui-icon:before{position:absolute;left:50%;top:50%;margin-top:-6px;margin-left:-6px}.layui-input-wrap .layui-input-number .layui-icon-up{top:0;border-bottom:1px solid #eee}.layui-input-wrap .layui-input-number .layui-icon-down{bottom:0}.layui-input-wrap .layui-input-number .layui-icon:hover{font-weight:700}.layui-input-wrap .layui-input[type=number]::-webkit-inner-spin-button,.layui-input-wrap .layui-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none!important}.layui-input-wrap .layui-input[type=number]{-moz-appearance:textfield}.layui-form-select{position:relative;color:#5f5f5f}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #eee;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#f8f8f8;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#f8f8f8;color:#16b777;font-weight:700}.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.layui-form-selected .layui-edge{margin-top:-3px\0}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;display:inline-block;vertical-align:middle;height:30px;line-height:30px;margin-right:10px;padding-right:30px;background-color:#fff;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox>*{display:inline-block;vertical-align:middle}.layui-form-checkbox>div{padding:0 11px;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.layui-form-checkbox>div>.layui-icon{line-height:normal}.layui-form-checkbox:hover>div{background-color:#c2c2c2}.layui-form-checkbox>i{position:absolute;right:0;top:0;width:30px;height:100%;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;color:rgba(255,255,255,0);font-size:20px;text-align:center;box-sizing:border-box}.layui-form-checkbox:hover>i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#16b777}.layui-form-checked:hover>div,.layui-form-checked>div{background-color:#16b777}.layui-form-checked:hover>i,.layui-form-checked>i{color:#16b777}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox.layui-checkbox-disabled>div{background-color:#eee!important}.layui-form [lay-checkbox]{display:none}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:24px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary]>div{margin-top:-1px;padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#5f5f5f}.layui-form-checkbox[lay-skin=primary]>i{right:auto;left:0;width:16px;height:16px;line-height:14px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover>i{border-color:#16b777;color:#fff}.layui-form-checked[lay-skin=primary]>i{border-color:#16b777!important;background-color:#16b777;color:#fff}.layui-checkbox-disabled[lay-skin=primary]>div{background:0 0!important}.layui-form-checked.layui-checkbox-disabled[lay-skin=primary]>i{background:#eee!important;border-color:#eee!important}.layui-checkbox-disabled[lay-skin=primary]:hover>i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate{border-color:#16b777}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate:before{content:'';display:inline-block;vertical-align:middle;position:relative;width:50%;height:1px;margin:-1px auto 0;background-color:#16b777}.layui-form-switch{position:relative;display:inline-block;vertical-align:middle;height:24px;line-height:22px;min-width:44px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;box-sizing:border-box;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>div{position:relative;top:0;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#16b777;background-color:#16b777}.layui-form-onswitch>i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch>div{margin-left:0;margin-right:21px;color:#fff!important}.layui-checkbox-disabled{border-color:#eee!important}.layui-checkbox-disabled>div{color:#c2c2c2!important}.layui-checkbox-disabled>i{border-color:#eee!important}.layui-checkbox-disabled:hover>i{color:#fff!important}.layui-form-radio{display:inline-block;vertical-align:middle;line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio>*{display:inline-block;vertical-align:middle;font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio:hover>*,.layui-form-radioed,.layui-form-radioed>i{color:#16b777}.layui-radio-disabled>i{color:#eee!important}.layui-radio-disabled>*{color:#c2c2c2!important}.layui-form [lay-radio]{display:none}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#fafafa;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0;border-right-width:1px}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto!important;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #eee}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-laypage a[data-page]{color:#333}.layui-laypage a{text-decoration:none!important;cursor:pointer}.layui-laypage a:hover{color:#16baaa}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#16baaa}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{display:inline-block;width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#16baaa!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px;clear:both}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{display:inline-block;vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;margin:10px 0;background-color:#fff;color:#5f5f5f}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:600}.layui-table-mend{background-color:#fff}.layui-table-click,.layui-table-hover,.layui-table[lay-even] tbody tr:nth-child(even){background-color:#f8f8f8}.layui-table-checked{background-color:#dbfbf0}.layui-table-checked.layui-table-click,.layui-table-checked.layui-table-hover{background-color:#abf8dd}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-mend,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#eee}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0;border-bottom-width:1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0;border-right-width:1px}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding-top:15px;padding-right:30px;padding-bottom:15px;padding-left:30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:50px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{padding-top:5px;padding-right:10px;padding-bottom:5px;padding-left:10px;font-size:12px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:30px;line-height:20px;padding-top:5px;padding-left:11px;padding-right:11px}.layui-table[lay-data],.layui-table[lay-options]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view{clear:both}.layui-table-view .layui-table{position:relative;width:auto;margin:0;border:0;border-collapse:separate}.layui-table-view .layui-table[lay-skin=line]{border-width:0;border-right-width:1px}.layui-table-view .layui-table[lay-skin=row]{border-width:0;border-bottom-width:1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:0;border-top:none;border-left:none}.layui-table-view .layui-table th [lay-event],.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td,.layui-table-view .layui-table th span{cursor:default}.layui-table-view .layui-table td[data-edit]{cursor:text}.layui-table-view .layui-table td[data-edit]:hover:after{position:absolute;left:0;top:0;width:100%;height:100%;box-sizing:border-box;border:1px solid #16b777;pointer-events:none;content:""}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px;line-height:16px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:199}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0;border-bottom-width:1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-column{position:relative;width:100%;min-height:41px;padding:8px 16px;border-width:0;border-bottom-width:1px}.layui-table-column .layui-btn-container{margin-bottom:-8px}.layui-table-column .layui-btn-container .layui-btn{margin-right:8px;margin-bottom:8px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;z-index:399;padding:5px 0!important;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-tool-panel li{padding:0 10px;margin:0!important;line-height:30px;list-style-type:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%}.layui-table-tool-panel li:hover{background-color:#f8f8f8}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{padding-left:28px}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0;border-left-width:1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#5f5f5f}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#5f5f5f}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:38px;line-height:28px;padding:6px 15px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-form-checkbox[lay-skin=primary]>div{padding-left:24px}.layui-table-cell .layui-table-link{color:#01aaed}.layui-table-cell .layui-btn{vertical-align:inherit}.layui-table-cell[align=center]{-webkit-box-pack:center}.layui-table-cell[align=right]{-webkit-box-pack:end}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{text-align:center;-webkit-box-pack:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:30px 15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0;border-left-width:1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px;border-width:0;border-left-width:1px}.layui-table-tool{position:relative;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0;border-bottom-width:1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-total{margin-bottom:-1px;border-width:0;border-top-width:1px;overflow:hidden}.layui-table-page{border-width:0;border-top-width:1px;margin-bottom:-1px;white-space:nowrap;overflow:hidden}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-11px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-pagebar{float:right;line-height:23px}.layui-table-pagebar .layui-btn-sm{margin-top:-1px}.layui-table-pagebar .layui-btn-xs{margin-top:2px}.layui-table-view select[lay-ignore]{display:inline-block}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;z-index:189;min-width:100%;min-height:100%;padding:5px 14px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15);background-color:#fff}.layui-table-edit:focus{border-color:#16b777!important}input.layui-input.layui-table-edit{height:100%}select.layui-table-edit{padding:0 0 0 10px;border-color:#d2d2d2}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:24px;height:100%;padding:5px 0;border-width:0;border-left-width:1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px;font-size:14px}.layui-table-grid-down:hover{background-color:#fbfbfb}.layui-table-expanded{height:95px}.layui-table-expanded .layui-table-cell,.layui-table-view .layui-table[lay-size=lg] .layui-table-expanded .layui-table-cell,.layui-table-view .layui-table[lay-size=sm] .layui-table-expanded .layui-table-cell{height:auto;max-height:94px;white-space:normal;text-overflow:clip}.layui-table-cell-c{position:absolute;bottom:-10px;right:50%;margin-right:-9px;width:20px;height:20px;line-height:18px;cursor:pointer;text-align:center;background-color:#fff;border:1px solid #eee;border-radius:50%;z-index:1000;transition:.3s all;font-size:14px}.layui-table-cell-c:hover{border-color:#16b777}.layui-table-expanded td:hover .layui-table-cell{overflow:auto}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-49px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#5f5f5f}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#5f5f5f;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-table-tree-nodeIcon{max-width:20px}.layui-table-tree-nodeIcon>*{width:100%}.layui-table-tree-flexIcon,.layui-table-tree-nodeIcon{margin-right:2px}.layui-table-tree-flexIcon{cursor:pointer}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-list{margin:11px 0}.layui-upload-choose{max-width:200px;padding:0 10px;color:#999;font-size:14px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-upload-drag{position:relative;display:inline-block;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#16baaa}.layui-upload-drag[lay-over]{border-color:#16baaa}.layui-upload-form{display:inline-block}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;display:inline-block;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-btn-container .layui-upload-choose{padding-left:0}.layui-menu{position:relative;margin:5px 0;background-color:#fff;box-sizing:border-box}.layui-menu *{box-sizing:border-box}.layui-menu li,.layui-menu-body-title,.layui-menu-body-title a{padding:5px 15px;color:initial}.layui-menu li{position:relative;margin:1px 0;line-height:26px;color:rgba(0,0,0,.8);font-size:14px;white-space:nowrap;cursor:pointer;transition:all .3s}.layui-menu li:hover{background-color:#f8f8f8}.layui-menu li.layui-disabled,.layui-menu li.layui-disabled *{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important}.layui-menu-item-parent:hover>.layui-menu-body-panel{display:block;animation-name:layui-fadein;animation-duration:.3s;animation-fill-mode:both;animation-delay:.2s}.layui-menu-item-group>.layui-menu-body-title,.layui-menu-item-parent>.layui-menu-body-title{padding-right:38px}.layui-menu .layui-menu-item-divider:hover,.layui-menu .layui-menu-item-group:hover,.layui-menu .layui-menu-item-none:hover{background:0 0;cursor:default}.layui-menu .layui-menu-item-group>ul{margin:5px 0 -5px}.layui-menu .layui-menu-item-group>.layui-menu-body-title{color:rgba(0,0,0,.35);user-select:none}.layui-menu .layui-menu-item-none{color:rgba(0,0,0,.35);cursor:default}.layui-menu .layui-menu-item-none{text-align:center}.layui-menu .layui-menu-item-divider{margin:5px 0;padding:0;height:0;line-height:0;border-bottom:1px solid #eee;overflow:hidden}.layui-menu .layui-menu-item-down:hover,.layui-menu .layui-menu-item-up:hover{cursor:pointer}.layui-menu .layui-menu-item-up>.layui-menu-body-title{color:rgba(0,0,0,.8)}.layui-menu .layui-menu-item-up>ul{visibility:hidden;height:0;overflow:hidden}.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon,.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon{color:#000}.layui-menu .layui-menu-item-down>ul{visibility:visible;height:auto}.layui-menu .layui-menu-item-checked,.layui-menu .layui-menu-item-checked2{background-color:#f8f8f8!important;color:#16b777}.layui-menu .layui-menu-item-checked a,.layui-menu .layui-menu-item-checked2 a{color:#16b777}.layui-menu .layui-menu-item-checked:after{position:absolute;right:-1px;top:0;bottom:0;border-right:3px solid #16b777;content:""}.layui-menu-body-title{position:relative;margin:-5px -15px;overflow:hidden;text-overflow:ellipsis}.layui-menu-body-title a{display:block;margin:-5px -15px;color:rgba(0,0,0,.8)}.layui-menu-body-title a:hover{transition:all .3s}.layui-menu-body-title>.layui-icon{position:absolute;right:15px;top:50%;margin-top:-6px;line-height:normal;font-size:14px}.layui-menu-body-title>.layui-icon:hover{transition:all .3s}.layui-menu-body-title>.layui-icon-right{right:14px}.layui-menu-body-panel{display:none;position:absolute;top:-7px;left:100%;z-index:1000;margin-left:13px;padding:5px 0}.layui-menu-body-panel:before{content:"";position:absolute;width:20px;left:-16px;top:0;bottom:0}.layui-menu-body-panel-left{left:auto;right:100%;margin:0 13px 0}.layui-menu-body-panel-left:before{left:auto;right:-16px}.layui-menu-lg li{line-height:32px}.layui-menu-lg .layui-menu-body-title a:hover,.layui-menu-lg li:hover{background:0 0;color:#16b777}.layui-menu-lg li .layui-menu-body-panel{margin-left:14px}.layui-menu-lg li .layui-menu-body-panel-left{margin:0 15px 0}.layui-dropdown{position:absolute;left:-999999px;top:-999999px;z-index:77777777;margin:5px 0;min-width:100px}.layui-dropdown:before{content:"";position:absolute;width:100%;height:6px;left:0;top:-6px}.layui-dropdown-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}.layui-nav{position:relative;padding:0 15px;background-color:#2f363c;color:#fff;border-radius:2px;font-size:0;box-sizing:border-box}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;margin-top:0;list-style:none;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar{content:"";position:absolute;left:0;top:0;width:0;height:3px;background-color:#16b777;transition:all .2s;-webkit-transition:all .2s;pointer-events:none}.layui-nav-bar{z-index:1000}.layui-nav[lay-bar=disabled] .layui-nav-bar{display:none}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff;text-decoration:none}.layui-nav .layui-this:after{top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{position:absolute;top:0;right:3px;left:auto!important;margin-top:0;font-size:12px;cursor:pointer;transition:all .2s;-webkit-transition:all .2s}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{transform:rotate(180deg)}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #eee;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap;box-sizing:border-box}.layui-nav .layui-nav-child a{color:#5f5f5f;color:rgba(0,0,0,.8)}.layui-nav .layui-nav-child a:hover{background-color:#f8f8f8;color:rgba(0,0,0,.8)}.layui-nav-child dd{margin:1px 0;position:relative}.layui-nav-child dd.layui-this{background-color:#f8f8f8;color:#000}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-child-r{left:auto;right:0}.layui-nav-child-c{text-align:center}.layui-nav.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:40px}.layui-nav-tree .layui-nav-item a{position:relative;height:40px;line-height:40px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item>a{padding-top:5px;padding-bottom:5px}.layui-nav-tree .layui-nav-more{right:15px}.layui-nav-tree .layui-nav-item>a .layui-nav-more{padding:5px 0}.layui-nav-tree .layui-nav-bar{width:5px;height:0}.layui-side .layui-nav-tree .layui-nav-bar{width:2px}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#16baaa;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-bar{background-color:#16baaa}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;box-shadow:none}.layui-nav-tree .layui-nav-child dd{margin:0}.layui-nav-tree .layui-nav-child a{color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child,.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-itemed>.layui-nav-child{display:block;background-color:rgba(0,0,0,.3)!important}.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-nav-tree.layui-bg-gray a,.layui-nav.layui-bg-gray .layui-nav-item a{color:#373737;color:rgba(0,0,0,.8)}.layui-nav-tree.layui-bg-gray{padding:6px 0}.layui-nav-tree.layui-bg-gray .layui-nav-itemed>a{color:#000!important}.layui-nav.layui-bg-gray .layui-this a{color:#16b777}.layui-nav-tree.layui-bg-gray .layui-nav-itemed>.layui-nav-child{padding-left:11px;background:0 0!important}.layui-nav-tree.layui-bg-gray .layui-nav-item>a{padding-top:0;padding-bottom:0}.layui-nav-tree.layui-bg-gray .layui-nav-item>a .layui-nav-more{padding:0}.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this,.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this a,.layui-nav-tree.layui-bg-gray .layui-this,.layui-nav-tree.layui-bg-gray .layui-this>a{background:0 0!important;color:#16b777!important;font-weight:700}.layui-nav-tree.layui-bg-gray .layui-nav-bar{background-color:#16b777}.layui-breadcrumb{visibility:hidden;font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#16b777!important}.layui-breadcrumb a cite{color:#5f5f5f;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab .layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{position:relative;line-height:40px;min-width:65px;margin:0;padding:0 15px;text-align:center;cursor:pointer}.layui-tab .layui-tab-title li a{display:block;padding:0 15px;margin:0 -15px}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:"";width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#eee;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:15px 0}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#ff5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#16baaa}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #16b777}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#fafafa}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#16b777}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#16b777;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#ff5722}.layui-timeline-item:before{content:"";position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:first-child:before{display:block}.layui-timeline-item:last-child:before{display:none}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px;line-height:22px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#ff5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#5f5f5f}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-5px 6px 0}.layui-nav .layui-badge{margin-top:-10px}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\0;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:none 0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\0;opacity:1;left:20px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#eee;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind ul li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:16px;bottom:16px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9f9f9f;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#5f5f5f;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #d9d9d9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{display:block;position:relative;padding:15px;line-height:20px;border:1px solid #eee;border-left-width:6px;background-color:#fff;color:#333;font-family:"Courier New",Consolas,"Lucida Console";font-size:12px}.layui-transfer-box,.layui-transfer-header,.layui-transfer-search{border-width:0;border-style:solid;border-color:#eee}.layui-transfer-box{position:relative;display:inline-block;vertical-align:middle;border-width:1px;width:200px;height:360px;border-radius:2px;background-color:#fff}.layui-transfer-box .layui-form-checkbox{width:100%;margin:0!important}.layui-transfer-header{height:38px;line-height:38px;padding:0 11px;border-bottom-width:1px}.layui-transfer-search{position:relative;padding:11px;border-bottom-width:1px}.layui-transfer-search .layui-input{height:32px;padding-left:30px;font-size:12px}.layui-transfer-search .layui-icon-search{position:absolute;left:20px;top:50%;line-height:normal;margin-top:-8px;color:#5f5f5f}.layui-transfer-active{margin:0 15px;display:inline-block;vertical-align:middle}.layui-transfer-active .layui-btn{display:block;margin:0;padding:0 15px;background-color:#16b777;border-color:#16b777;color:#fff}.layui-transfer-active .layui-btn-disabled{background-color:#fbfbfb;border-color:#eee;color:#d2d2d2}.layui-transfer-active .layui-btn:first-child{margin-bottom:15px}.layui-transfer-active .layui-btn .layui-icon{margin:0;font-size:14px!important}.layui-transfer-data{padding:5px 0;overflow:auto}.layui-transfer-data li{height:32px;line-height:32px;margin-top:0!important;padding:0 11px;list-style-type:none!important}.layui-transfer-data li:hover{background-color:#f8f8f8;transition:.5s all}.layui-transfer-data .layui-none{padding:15px 11px;text-align:center;color:#999}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:11px 6px 11px 0;font-size:0}.layui-rate li{margin-top:0!important}.layui-rate li i.layui-icon{font-size:20px;color:#ffb800}.layui-rate li i.layui-icon{margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:38px;height:38px;border:1px solid #eee;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:44px;height:44px;line-height:30px}.layui-colorpicker.layui-colorpicker-sm{width:30px;height:30px;line-height:20px;padding:3px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:16px;padding:1px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#fff;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;left:-999999px;top:-999999px;z-index:77777777;width:280px;margin:5px 0;padding:7px;background:#fff;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #fff;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#5f5f5f}.layui-slider{height:4px;background:#eee;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#fff;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:77777777;white-space:nowrap;display:none;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#fff;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:"";position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #eee;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-14px;box-sizing:border-box}.layui-slider-input-btn{position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #eee}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #eee}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none;padding-right:21px}.layui-slider-input-btn i:hover{color:#16baaa}.layui-slider-vertical{width:4px;margin-left:33px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-tree{line-height:22px}.layui-tree .layui-form-checkbox{margin:0!important}.layui-tree-set{width:100%;position:relative}.layui-tree-pack{display:none;padding-left:20px;position:relative}.layui-tree-line .layui-tree-pack{padding-left:27px}.layui-tree-line .layui-tree-set .layui-tree-set:after{content:"";position:absolute;top:14px;left:-9px;width:17px;height:0;border-top:1px dotted #c0c4cc}.layui-tree-entry{position:relative;padding:3px 0;height:26px;white-space:nowrap}.layui-tree-entry:hover{background-color:#eee}.layui-tree-line .layui-tree-entry:hover{background-color:rgba(0,0,0,0)}.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color:#999;text-decoration:underline;transition:.3s}.layui-tree-main{display:inline-block;vertical-align:middle;cursor:pointer;padding-right:10px}.layui-tree-line .layui-tree-set:before{content:"";position:absolute;top:0;left:-9px;width:0;height:100%;border-left:1px dotted #c0c4cc}.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height:13px}.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height:0}.layui-tree-iconClick{display:inline-block;vertical-align:middle;position:relative;height:20px;line-height:20px;margin:0 10px;color:#c0c4cc}.layui-tree-icon{height:14px;line-height:12px;width:14px;text-align:center;border:1px solid #c0c4cc}.layui-tree-iconClick .layui-icon{font-size:18px}.layui-tree-icon .layui-icon{font-size:12px;color:#5f5f5f}.layui-tree-iconArrow{padding:0 5px}.layui-tree-iconArrow:after{content:"";position:absolute;left:4px;top:3px;z-index:100;width:0;height:0;border-width:5px;border-style:solid;border-color:transparent transparent transparent #c0c4cc;transition:.5s}.layui-tree-spread>.layui-tree-entry .layui-tree-iconClick>.layui-tree-iconArrow:after{transform:rotate(90deg) translate(3px,4px)}.layui-tree-txt{display:inline-block;vertical-align:middle;color:#555}.layui-tree-search{margin-bottom:15px;color:#5f5f5f}.layui-tree-btnGroup{visibility:hidden;display:inline-block;vertical-align:middle;position:relative}.layui-tree-btnGroup .layui-icon{display:inline-block;vertical-align:middle;padding:0 2px;cursor:pointer}.layui-tree-btnGroup .layui-icon:hover{color:#999;transition:.3s}.layui-tree-entry:hover .layui-tree-btnGroup{visibility:visible}.layui-tree-editInput{position:relative;display:inline-block;vertical-align:middle;height:20px;line-height:20px;padding:0;border:none;background-color:rgba(0,0,0,.05)}.layui-tree-emptyText{text-align:center;color:#999}.layui-anim{-webkit-animation-duration:.3s;-webkit-animation-fill-mode:both;animation-duration:.3s;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .2s;-webkit-transition:all .2s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,15px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,15px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@keyframes layui-down{0%{opacity:.3;transform:translate3d(0,-100%,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-down{animation-name:layui-down}@keyframes layui-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-downbit{animation-name:layui-downbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@keyframes layui-scalesmall{0%{opacity:.3;transform:scale(1.5)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall{animation-name:layui-scalesmall}@keyframes layui-scalesmall-spring{0%{opacity:.3;transform:scale(1.5)}80%{opacity:.8;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall-spring{animation-name:layui-scalesmall-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout}html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-wrap{font-size:13px;font-family:"Courier New",Consolas,"Lucida Console"}.layui-code-view{display:block;position:relative;padding:0!important;border:1px solid #eee;border-left-width:6px;background-color:#fff;color:#333}.layui-code-view pre{margin:0!important}.layui-code-header{position:relative;z-index:3;padding:0 11px;height:40px;line-height:40px;border-bottom:1px solid #eee;background-color:#fafafa;font-size:12px}.layui-code-header>.layui-code-header-about{position:absolute;right:11px;top:0;color:#b7b7b7}.layui-code-header-about>a{padding-left:10px}.layui-code-wrap{position:relative;display:block;z-index:1;margin:0!important;padding:11px 0!important;overflow-x:hidden;overflow-y:auto}.layui-code-line{position:relative;line-height:19px;margin:0!important}.layui-code-line-number{position:absolute;left:0;top:0;padding:0 8px;min-width:45px;height:100%;text-align:right;user-select:none;white-space:nowrap;overflow:hidden}.layui-code-line-content{padding:0 11px;word-wrap:break-word;white-space:pre-wrap}.layui-code-ln-mode>.layui-code-wrap>.layui-code-line{padding-left:45px}.layui-code-ln-side{position:absolute;left:0;top:0;bottom:0;z-index:0;width:45px;border-right:1px solid #eee;border-color:rgb(126 122 122 / 15%);background-color:#fafafa;pointer-events:none}.layui-code-nowrap>.layui-code-wrap{overflow:auto}.layui-code-nowrap>.layui-code-wrap>.layui-code-line>.layui-code-line-content{white-space:pre;word-wrap:normal}.layui-code-nowrap>.layui-code-ln-side{border-right-width:0!important;background:0 0!important}.layui-code-fixbar{position:absolute;top:8px;right:11px;padding-right:45px;z-index:5}.layui-code-fixbar>span{position:absolute;right:0;top:0;padding:0 8px;color:#777;transition:all .3s}.layui-code-fixbar>span:hover{color:#16b777}.layui-code-copy{display:none;cursor:pointer}.layui-code-preview>.layui-code-view>.layui-code-fixbar .layui-code-copy{display:none!important}.layui-code-view:hover>.layui-code-fixbar .layui-code-copy{display:block}.layui-code-view:hover>.layui-code-fixbar .layui-code-lang-marker{display:none}.layui-code-theme-dark{border-width:1px;border-color:rgb(126 122 122 / 15%);background-color:#1f1f1f;color:#ccc}.layui-code-theme-dark>.layui-code-ln-side{border-right-color:#2a2a2a;background:0 0;color:#6e7681}.layui-code textarea{display:none}.layui-code-preview>.layui-code,.layui-code-preview>.layui-code-view{margin:0}.layui-code-preview>.layui-tab{position:relative;z-index:1;margin-bottom:0}.layui-code-preview>.layui-tab>.layui-tab-title{border-width:0}.layui-code-preview .layui-code-item{display:none}.layui-code-item-preview{position:relative;padding:16px;overflow:auto}.layui-code-item-preview>iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.layui-code-tools{position:absolute;right:11px;top:8px;line-height:normal}.layui-code-tools>i{display:inline-block;margin-left:6px;padding:3px;cursor:pointer}.layui-code-tools>i.layui-icon-file-b{color:#999}.layui-code-tools>i:hover{color:#16b777}.layui-code-full{position:fixed;left:0;top:0;z-index:1111111;width:100%;height:100%;background-color:#fff}.layui-code-full .layui-code-item{width:100%!important;border-width:0!important;border-top-width:1px!important}.layui-code-full .layui-code-item,.layui-code-full .layui-code-view,.layui-code-full .layui-code-wrap{height:calc(100vh - 51px)!important;box-sizing:border-box}.layui-code-view.layui-code-hl{line-height:20px!important;border-left-width:1px}.layui-code-view.layui-code-hl>.layui-code-ln-side{background-color:transparent}.layui-code-theme-dark.layui-code-hl,.layui-code-theme-dark.layui-code-hl>.layui-code-ln-side{border-color:rgb(126 122 122 / 15%)}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate,.layui-laydate *{box-sizing:border-box}.layui-laydate{position:absolute;z-index:99999999;margin:5px 0;border-radius:2px;font-size:14px;line-height:normal;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}.layui-laydate-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate{animation-name:laydate-downbit}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;padding:0 5px;color:#999;font-size:18px;cursor:pointer}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-set-ym span{padding:0 10px;cursor:pointer}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:0;text-align:center}.layui-laydate-content th{font-weight:400}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.laydate-day-holidays:before{position:absolute;left:0;top:0;font-size:12px;transform:scale(.7)}.laydate-day-holidays:before{content:'\4F11';color:#ff5722}.laydate-day-holidays[type=work]:before{content:'\73ED';color:inherit}.layui-laydate .layui-this .laydate-day-holidays:before{color:#fff}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px}.layui-laydate-footer span{display:inline-block;vertical-align:top;height:26px;line-height:24px;padding:0 10px;border:1px solid #c9c9c9;border-radius:2px;background-color:#fff;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .3s}.layui-laydate-footer span:hover{color:#16b777}.layui-laydate-footer span.layui-laydate-preview{cursor:default;border-color:transparent!important}.layui-laydate-footer span.layui-laydate-preview:hover{color:#777}.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left:0}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{margin:0 0 0 -1px;border-radius:0}.laydate-footer-btns span:first-child{border-radius:2px 0 0 2px}.laydate-footer-btns span:last-child{border-radius:0 2px 2px 0}.layui-laydate-shortcut{width:80px;padding:6px 0;display:inline-block;vertical-align:top;overflow:auto;max-height:276px;text-align:center}.layui-laydate-shortcut+.layui-laydate-main{display:inline-block;border-left:1px solid #e2e2e2}.layui-laydate-shortcut>li{padding:5px 8px;cursor:pointer;line-height:18px}.layui-laydate .layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;box-sizing:border-box;background-color:#fff}.layui-laydate .layui-laydate-list>li{position:relative;display:inline-block;width:33.3%;height:36px;line-height:36px;margin:3px 0;vertical-align:middle;text-align:center;cursor:pointer;list-style:none}.layui-laydate .laydate-month-list>li{width:25%;margin:17px 0}.layui-laydate .laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.layui-laydate .laydate-time-list p{position:relative;top:-4px;margin:0;line-height:29px}.layui-laydate .laydate-time-list ol{height:181px;overflow:hidden}.layui-laydate .laydate-time-list>li:hover ol{overflow-y:auto}.layui-laydate .laydate-time-list ol li{width:130%;padding-left:33px;height:30px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px;color:#ff5722}.layui-laydate-range{width:546px}.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle;max-width:50%}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-y,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#777}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#16b777}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{color:#333}.layui-laydate-content td{color:#777}.layui-laydate-content td.laydate-day-now{color:#16b777}.layui-laydate-content td.laydate-day-now:after{content:'';position:absolute;width:100%;height:30px;left:0;top:0;border:1px solid #16b777;box-sizing:border-box}.layui-laydate-linkage .layui-laydate-content td.laydate-selected>div{background-color:#00f7de}.layui-laydate-linkage .laydate-selected:hover>div{background-color:#00f7de!important}.layui-laydate-content td.laydate-selected:after,.layui-laydate-content td:hover:after{content:none}.layui-laydate-content td>div:hover,.layui-laydate-list li:hover,.layui-laydate-shortcut>li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.layui-laydate-linkage .laydate-selected.laydate-day-next>div,.layui-laydate-linkage .laydate-selected.laydate-day-prev>div{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#ff5722}.laydate-day-mark::after{background-color:#16b777}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#16b777}.layui-laydate .layui-this,.layui-laydate .layui-this>div{background-color:#16baaa!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content td>div{padding:7px 0;height:100%}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#16baaa}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead{border:1px solid #e2e2e2}.layui-laydate-linkage.laydate-theme-grid .laydate-selected,.layui-laydate-linkage.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#16baaa!important}.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-next,.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}.laydate-theme-grid .layui-laydate-content td>div{height:29px;margin-top:-1px}.laydate-theme-circle .layui-laydate-content td.layui-this>div,.laydate-theme-circle .layui-laydate-content td>div{width:28px;height:28px;line-height:28px;border-radius:14px;margin:0 4px;padding:0}.layui-laydate.laydate-theme-circle .layui-laydate-content table td.layui-this{background-color:transparent!important}.laydate-theme-grid.laydate-theme-circle .layui-laydate-content td>div{margin:0 3.5px}.laydate-theme-fullpanel .layui-laydate-main{width:526px}.laydate-theme-fullpanel .layui-laydate-list{width:252px;left:272px}.laydate-theme-fullpanel .laydate-set-ym span{display:none}.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-theme-fullpanel .laydate-time-show .layui-laydate-header .layui-icon{display:inline-block!important}.laydate-theme-fullpanel .laydate-btns-time{display:none}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch}.layui-layer{top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-btn a,.layui-layer-setwin span{display:inline-block;vertical-align:middle;*display:inline;*zoom:1}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes layer-slide-down{from{transform:translate3d(0,-100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-down-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,-100%,0)}}.layer-anim-slide-down{animation-name:layer-slide-down}.layer-anim-slide-down-out{animation-name:layer-slide-down-out}@keyframes layer-slide-left{from{transform:translate3d(100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-left-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(100%,0,0)}}.layer-anim-slide-left{animation-name:layer-slide-left}.layer-anim-slide-left-out{animation-name:layer-slide-left-out}@keyframes layer-slide-up{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-up-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,100%,0)}}.layer-anim-slide-up{animation-name:layer-slide-up}.layer-anim-slide-up-out{animation-name:layer-slide-up-out}@keyframes layer-slide-right{from{transform:translate3d(-100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-right-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(-100%,0,0)}}.layer-anim-slide-right{animation-name:layer-slide-right}.layer-anim-slide-right-out{animation-name:layer-slide-right-out}.layui-layer-title{padding:0 81px 0 16px;height:50px;line-height:50px;border-bottom:1px solid #f0f0f0;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:16px;font-size:0;line-height:initial}.layui-layer-setwin span{position:relative;width:16px;height:16px;line-height:18px;margin-left:10px;text-align:center;font-size:16px;cursor:pointer;color:#000;_overflow:hidden;box-sizing:border-box}.layui-layer-setwin .layui-layer-min:before{content:'';position:absolute;width:12px;border-bottom:1px solid #2e2d3c;left:50%;top:50%;margin:-.5px 0 0 -6px;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-max:after,.layui-layer-setwin .layui-layer-max:before{content:'';position:absolute;left:50%;top:50%;z-index:1;width:9px;height:9px;margin:-5px 0 0 -5px;border:1px solid #2e2d3c}.layui-layer-setwin .layui-layer-max:hover:after,.layui-layer-setwin .layui-layer-max:hover:before{border-color:#2d93ca}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-maxmin:after,.layui-layer-setwin .layui-layer-maxmin:before{width:7px;height:7px;margin:-3px 0 0 -3px;background-color:#fff}.layui-layer-setwin .layui-layer-maxmin:after{z-index:0;margin:-5px 0 0 -1px}.layui-layer-setwin .layui-layer-close{cursor:pointer}.layui-layer-setwin .layui-layer-close:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;color:#fff;background-color:#787878;padding:3px;border:3px solid;width:28px;height:28px;font-size:16px;font-weight:bolder;border-radius:50%;margin-left:0;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{opacity:unset;background-color:#3888f6}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:30px;line-height:30px;margin:5px 5px 0;padding:0 16px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none;box-sizing:border-box}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:transparent;background-color:#1e9fff;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:240px}.layui-layer-dialog .layui-layer-content{position:relative;padding:16px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-face{position:absolute;top:18px;left:16px;color:#959595;font-size:32px;_left:-40px}.layui-layer-dialog .layui-layer-content .layui-icon-tips{color:#f39b12}.layui-layer-dialog .layui-layer-content .layui-icon-success{color:#16b777}.layui-layer-dialog .layui-layer-content .layui-icon-error{top:19px;color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-question{color:#ffb800}.layui-layer-dialog .layui-layer-content .layui-icon-lock{color:#787878}.layui-layer-dialog .layui-layer-content .layui-icon-face-cry{color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-face-smile{color:#16b777}.layui-layer-rim{border:6px solid #8d8d8d;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #d3d4d3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-close{color:#fff}.layui-layer-hui .layui-layer-content{padding:11px 24px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:18px 24px 18px 58px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:76px;height:38px;line-height:38px;text-align:center}.layui-layer-loading-icon{font-size:38px;color:#959595}.layui-layer-loading2{text-align:center}.layui-layer-loading-2{position:relative;height:38px}.layui-layer-loading-2:after,.layui-layer-loading-2:before{content:'';position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;border:3px solid #d2d2d2;box-sizing:border-box}.layui-layer-loading-2:after{border-color:transparent;border-left-color:#1e9fff}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan .layui-layer-title{background:#4476a7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;border-top:1px solid #e9e7e7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#e9e7e7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#c9c5c5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92b8b1}.layui-layer-lan .layui-layer-setwin .layui-icon,.layui-layer-molv .layui-layer-setwin .layui-icon{color:#fff}.layui-layer-win10{border:1px solid #aaa;box-shadow:1px 1px 6px rgba(0,0,0,.3);border-radius:none}.layui-layer-win10 .layui-layer-title{height:32px;line-height:32px;padding-left:8px;border-bottom:none;font-size:12px}.layui-layer-win10 .layui-layer-setwin{right:0;top:0}.layui-layer-win10 .layui-layer-setwin span{margin-left:0;width:32px;height:32px;padding:8px}.layui-layer-win10.layui-layer-page .layui-layer-setwin span{width:38px}.layui-layer-win10 .layui-layer-setwin span:hover{background-color:#e5e5e5}.layui-layer-win10 .layui-layer-setwin span.layui-icon-close:hover{background-color:#e81123;color:#fff}.layui-layer-win10.layui-layer-dialog .layui-layer-content{padding:8px 16px 32px;color:#0033bc}.layui-layer-win10.layui-layer-dialog .layui-layer-padding{padding-top:18px;padding-left:58px}.layui-layer-win10 .layui-layer-btn{padding:5px 5px 10px;border-top:1px solid #dfdfdf;background-color:#f0f0f0}.layui-layer-win10 .layui-layer-btn a{height:20px;line-height:18px;background-color:#e1e1e1;border-color:#adadad;color:#000;font-size:12px;transition:all .3s}.layui-layer-win10 .layui-layer-btn a:hover{border-color:#2a8edd;background-color:#e5f1fb}.layui-layer-win10 .layui-layer-btn .layui-layer-btn0{border-color:#0078d7}.layui-layer-prompt .layui-layer-input{display:block;width:260px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:16px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;display:inline-block;vertical-align:top;border-left:1px solid transparent;border-right:1px solid transparent;min-width:80px;max-width:300px;padding:0 16px;text-align:center;cursor:default;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:51px;border-left-color:#eee;border-right-color:#eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left-color:transparent}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{background:0 0;box-shadow:none}.layui-layer-photos .layui-layer-content{overflow:visible;text-align:center}.layui-layer-photos .layer-layer-photos-main img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-photos-next,.layui-layer-photos-prev{position:fixed;top:50%;width:52px;height:52px;line-height:52px;margin-top:-26px;cursor:pointer;font-size:52px;color:#717171}.layui-layer-photos-prev{left:32px}.layui-layer-photos-next{right:32px}.layui-layer-photos-next:hover,.layui-layer-photos-prev:hover{color:#959595}.layui-layer-photos-toolbar{position:fixed;left:0;right:0;bottom:0;width:100%;height:52px;line-height:52px;background-color:#000\9;filter:Alpha(opacity=60);background-color:rgba(0,0,0,.32);color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:0}.layui-layer-photos-toolbar>*{display:inline-block;vertical-align:top;padding:0 16px;font-size:12px;color:#fff;*display:inline;*zoom:1}.layui-layer-photos-toolbar *{font-size:12px}.layui-layer-photos-header{top:0;bottom:auto}.layui-layer-photos-header>span{cursor:pointer}.layui-layer-photos-header>span:hover{background-color:rgba(51,51,51,.32)}.layui-layer-photos-header .layui-icon{font-size:18px}.layui-layer-photos-footer>h3{max-width:65%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-layer-photos-footer a:hover{text-decoration:underline}.layui-layer-photos-footer em{font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}} \ No newline at end of file diff --git a/component/layui/layui.js b/component/layui/layui.js index 83af036..781123d 100644 --- a/component/layui/layui.js +++ b/component/layui/layui.js @@ -1 +1 @@ -/** v2.8.6 | MIT Licensed */;!function(d){"use strict";var t,h=d.document,m={modules:{},status:{},timeout:10,event:{}},o=function(){this.v="2.8.6"},e=d.LAYUI_GLOBAL||{},v=(t=h.currentScript?h.currentScript.src:function(){for(var t,e=h.scripts,n=e.length-1,o=n;01e3*m.timeout/4?g(u+" is not a valid module","error"):void(m.status[u]?c():setTimeout(o,4))}())}function c(){e.push(layui[u]),11e3*m.timeout/4?g(u+" is not a valid module","error"):void("string"==typeof m.modules[u]&&m.status[u]?c():setTimeout(f,4))}():((p=h.createElement("script"))["async"]=!0,p.charset="utf-8",p.src=y+((i=!0===m.version?m.v||(new Date).getTime():m.version||"")?"?v="+i:""),a.appendChild(p),!p.attachEvent||p.attachEvent.toString&&p.attachEvent.toString().indexOf("[native code")<0||b?p.addEventListener("load",function(t){s(t,y)},!1):p.attachEvent("onreadystatechange",function(t){s(t,y)}),m.modules[u]=y),r},o.prototype.disuse=function(t){var n=this;return t=n.isArray(t)?t:[t],n.each(t,function(t,e){m.status[e],delete n[e],delete N[e],delete n.modules[e],delete m.status[e],delete m.modules[e]}),n},o.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t[t.getPropertyValue?"getPropertyValue":"getAttribute"](e)},o.prototype.link=function(n,o,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof o?o:t)||n).replace(/\.|\//g,""),u="creating",l=0;return i.href=n+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"!=typeof o||function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(n+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):o()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},o.prototype.addcss=function(t,e,n){return layui.link(m.dir+"css/"+t,e,n)},m.callback={},o.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},o.prototype.img=function(t,e,n){var o=new Image;if(o.src=t,o.complete)return e(o);o.onload=function(){o.onload=null,"function"==typeof e&&e(o)},o.onerror=function(t){o.onerror=null,"function"==typeof n&&n(t)}},o.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},o.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),o.prototype.extend=function(t){for(var e in t=t||{})this[e]||this.modules[e]?g(e+" Module already exists","error"):this.modules[e]=t[e];return this},o.prototype.router=o.prototype.hash=function(t){var n={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),n.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),n.search[e[0]]=e[1]):n.path.push(e)})),n},o.prototype.url=function(t){var r,e,n=this;return{pathname:(t?((t.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(r={},e=(t?((t.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),n.each(e,function(t,e){var n=e.indexOf("="),o=n<0?e.substr(0,e.length):0!==n&&e.substr(0,n);o&&(r[o]=0(s.innerHeight||l.documentElement.clientHeight)},h.position=function(t,e,n){var i,r,o,c,u,a,f;e&&(n=n||{},t!==l&&t!==h("body")[0]||(n.clickType="right"),u="right"===n.clickType?{left:(u=n.e||s.event||{}).clientX,top:u.clientY,right:u.clientX,bottom:u.clientY}:t.getBoundingClientRect(),a=e.offsetWidth,f=e.offsetHeight,i=function(t){return l.body[t=t?"scrollLeft":"scrollTop"]|l.documentElement[t]},o=u.left,c=u.bottom,"center"===n.align?o-=(a-t.offsetWidth)/2:"right"===n.align&&(o=o-a+t.offsetWidth),(o=o+a+5>(r=function(t){return l.documentElement[t?"clientWidth":"clientHeight"]})("width")?r("width")-a-5:o)<5&&(o=5),c+f+5>r()&&(u.top>f+5?c=u.top-f-10:"right"===n.clickType?(c=r()-f-10)<0&&(c=0):c=5),(a=n.position)&&(e.style.position=a),e.style.left=o+("fixed"===a?0:i(1))+"px",e.style.top=c+("fixed"===a?0:i())+"px",h.hasScrollbar()||(f=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&f.bottom+5>r()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){h.position(t,e,n)},50))))},h.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===l)return{};var t=h(t),n=e.attr||"lay-options",t=t.attr(n);try{return new Function("return "+(t||"{}"))()}catch(i){return layui.hint().error(e.errorText||[n+'="'+t+'"',"\n parseerror: "+i].join("\n"),"error"),{}}},h.isTopElem=function(n){var t=[l,h("body")[0]],i=!1;return h.each(t,function(t,e){if(e===n)return i=!0}),i},r.addStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),h.each(t,function(t,e){new RegExp("\\b"+e+"\\b").test(n)||(n=n+" "+e)}),n.replace(/^\s|\s$/,"")},r.removeStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),h.each(t,function(t,e){e=new RegExp("\\b"+e+"\\b");e.test(n)&&(n=n.replace(e,""))}),n.replace(/\s+/," ").replace(/^\s|\s$/,"")},r.fn.find=function(n){var i=[],r="object"==typeof n;return this.each(function(t,e){e=r&&e.contains(n)?n:e.querySelectorAll(n||null);h.each(e,function(t,e){i.push(e)})}),h(i)},r.fn.each=function(t){return h.each.call(this,this,t)},r.fn.addClass=function(n,i){return this.each(function(t,e){e.className=r[i?"removeStr":"addStr"](e.className,n)})},r.fn.removeClass=function(t){return this.addClass(t,!0)},r.fn.hasClass=function(n){var i=!1;return this.each(function(t,e){new RegExp("\\b"+n+"\\b").test(e.className)&&(i=!0)}),i},r.fn.css=function(e,i){var t=this,r=function(t){return isNaN(t)?t:t+"px"};return"string"!=typeof e||i!==undefined?t.each(function(t,n){"object"==typeof e?h.each(e,function(t,e){n.style[t]=r(e)}):n.style[e]=r(i)}):0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e}},i=function(e){return new RegExp(e,"g")},u=function(e,r){var n="Laytpl Error: ";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e},n=function(e,r){var n=this,e=(n.config=n.config||{},n.template=e,function(e){for(var r in e)n.config[r]=e[r]});e(c),e(r)},r=(n.prototype.tagExp=function(e,r,n){var c=this.config;return i((r||"")+c.open+["#([\\s\\S])+?","([^{#}])*?"][e||0]+c.close+(n||""))},n.prototype.parse=function(e,r){var n=this,c=n.config,t=e,o=i("^"+c.open+"#",""),p=i(c.close+"$","");if("string"!=typeof e)return e;e='"use strict";var view = "'+(e=e.replace(/\s+|\r|\t|\n/g," ").replace(i(c.open+"#"),c.open+"# ").replace(i(c.close+"}"),"} "+c.close).replace(/\\/g,"\\\\").replace(i(c.open+"!(.+?)!"+c.close),function(e){return e=e.replace(i("^"+c.open+"!"),"").replace(i("!"+c.close),"").replace(i(c.open+"|"+c.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(n.tagExp(),function(e){return'";'+(e=e.replace(o,"").replace(p,"")).replace(/\\(.)/g,"$1")+';view+="'}).replace(n.tagExp(1),function(e){var r='"+laytpl.escape(';return e.replace(/\s/g,"")===c.open+c.close?"":(e=e.replace(i(c.open+"|"+c.close),""),/^=/.test(e)?e=e.replace(/^=/,""):/^-/.test(e)&&(e=e.replace(/^-/,""),r='"+('),r+e.replace(/\\(.)/g,"$1")+')+"')}))+'";return view;';try{return n.cache=e=new Function("d, laytpl",e),e(r,l)}catch(a){return delete n.cache,u(a,t)}},n.prototype.render=function(e,r){e=e||{};var n=this,e=n.cache?n.cache(e,l):n.parse(n.template,e);return"function"==typeof r&&r(e),e},function(e,r){return new n(e,r)});r.config=function(e){for(var r in e=e||{})c[r]=e[r]},r.v="2.0.0",e("laytpl",r)});layui.define(function(e){"use strict";var r=document,u="getElementById",c="getElementsByTagName",a="layui-disabled",t=function(e){var a=this;a.config=e||{},a.config.index=++o.index,a.render(!0)},o=(t.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return e.elem.length===undefined?2:3},t.prototype.view=function(){var t,i,n=this.config,r=n.groups="groups"in n?Number(n.groups)||0:5,u=(n.layout="object"==typeof n.layout?n.layout:["prev","page","next"],n.count=Number(n.count)||0,n.curr=Number(n.curr)||1,n.limits="object"==typeof n.limits?n.limits:[10,20,30,40,50],n.limit=Number(n.limit)||10,n.pages=Math.ceil(n.count/n.limit)||1,n.curr>n.pages?n.curr=n.pages:n.curr<1&&(n.curr=1),r<0?r=1:r>n.pages&&(r=n.pages),n.prev="prev"in n?n.prev:"上一页",n.next="next"in n?n.next:"下一页",n.pages>r?Math.ceil((n.curr+(1'+n.prev+"":"",page:function(){var e=[];if(n.count<1)return"";1'+(n.first||1)+"");var a=Math.floor((r-1)/2),t=1n.pages?n.pages:a:r;for(i-t…');t<=i;t++)t===n.curr?e.push('"+t+""):e.push(''+t+"");return n.pages>r&&n.pages>i&&!1!==n.last&&(i+1…'),0!==r&&e.push(''+(n.last||n.pages)+"")),e.join("")}(),next:n.next?''+n.next+"":"",count:'\u5171 '+n.count+" \u6761",limit:(t=['"),refresh:['','',""].join(""),skip:['到第','','页',""].join("")};return['
                                    ',(i=[],layui.each(n.layout,function(e,a){l[a]&&i.push(l[a])}),i.join("")),"
                                    "].join("")},t.prototype.jump=function(e,a){if(e){var t=this,i=t.config,n=e.children,r=e[c]("button")[0],u=e[c]("input")[0],e=e[c]("select")[0],l=function(){var e=Number(u.value.replace(/\s|\D/g,""));e&&(i.curr=e,t.render())};if(a)return l();for(var s=0,p=n.length;si.pages||(i.curr=e,t.render())});e&&o.on(e,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),r&&o.on(r,"click",function(){l()})}},t.prototype.skip=function(t){var i,e;t&&(i=this,(e=t[c]("input")[0])&&o.on(e,"keyup",function(e){var a=this.value,e=e.keyCode;/^(37|38|39|40)$/.test(e)||(/\D/.test(a)&&(this.value=a.replace(/\D/,"")),13===e&&i.jump(t,!0))}))},t.prototype.render=function(e){var a=this,t=a.config,i=a.type(),n=a.view(),i=(2===i?t.elem&&(t.elem.innerHTML=n):3===i?t.elem.html(n):r[u](t.elem)&&(r[u](t.elem).innerHTML=n),t.jump&&t.jump(t,e),r[u]("layui-laypage-"+t.index));a.jump(i),t.hash&&!e&&(location.hash="!"+t.hash+"="+t.curr),a.skip(i)},{render:function(e){return new t(e).index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(a,e,t){return a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1),this}});e("laypage",o)});!function(i,v){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){D.path&&i.lay&&lay.layui&&lay.layui.link(D.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},d="layui-laydate-id",D={v:"5.5.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:e.laydate_dir||l.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",a=(n?"modules/":"")+"laydate.css?v="+D.v;return n?layui["layui.all"]?"function"==typeof e&&e():layui.addcss(a,e,t):l.link(a,e,t),this}},s=function(){var t=this,e=t.config.id;return(s.that[e]=t).inst={hint:function(e){t.hint.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}},a="laydate",x="layui-this",k="laydate-disabled",h=[100,2e5],T="layui-laydate-static",w="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",C=".laydate-btns-confirm",M="laydate-time-text",L="laydate-btns-time",E="layui-laydate-preview",S="layui-laydate-shade",I=function(e){var t,a=this,n=(a.index=++D.index,a.config=lay.extend({},a.config,D.config,e),lay(e.elem||a.config.elem));return 1\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
                                    \u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
                                    ","
                                    \u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
                                    Please re-select",invalidDate:"Invalid date",formatError:["The date format error
                                    Must be followed\uff1a
                                    ","
                                    It has been reset"],preview:"The selected result"}};return e[this.config.lang]||e.cn},I.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},I.prototype.init=function(){var r=this,o=r.config,e="static"===o.position,t={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};o.elem=lay(o.elem),o.eventElem=lay(o.eventElem),o.elem[0]&&("array"!==layui.type(o.theme)&&(o.theme=[o.theme]),o.fullPanel&&("datetime"!==o.type||o.range)&&delete o.fullPanel,r.rangeStr=o.range?"string"==typeof o.range?o.range:"-":"",r.rangeLinked=!(!o.range||!o.rangeLinked||"date"!==o.type&&"datetime"!==o.type),r.autoCalendarModel=function(){var e=r.rangeLinked;return r.rangeLinked=o.range&&("date"===o.type||"datetime"===o.type)&&(!r.startDate||!r.endDate||r.startDate&&r.endDate&&r.startDate.year===r.endDate.year&&r.startDate.month===r.endDate.month),lay(r.elem)[r.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),r.rangeLinked!=e},r.autoCalendarModel.auto=r.rangeLinked&&"auto"===o.rangeLinked,"array"===layui.type(o.range)&&(r.rangeElem=[lay(o.range[0]),lay(o.range[1])]),t[o.type]||(i.console&&console.error&&console.error("laydate type error:'"+o.type+"' is not supported"),o.type="date"),o.format===t.date&&(o.format=t[o.type]||t.date),r.format=s.formatArr(o.format),o.weekStart&&!/^[0-6]$/.test(o.weekStart)&&(t=r.lang(),o.weekStart=t.weeks.indexOf(o.weekStart),-1===o.weekStart&&(o.weekStart=0)),r.EXP_IF="",r.EXP_SPLIT="",lay.each(r.format,function(e,t){e=new RegExp(c).test(t)?"\\d{"+(new RegExp(c).test(r.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(t)?4:t.length:/^yyyy$/.test(t)?"1,4":/^y$/.test(t)?"1,308":"1,2")+"}":"\\"+t;r.EXP_IF=r.EXP_IF+e,r.EXP_SPLIT=r.EXP_SPLIT+"("+e+")"}),r.EXP_IF_ONE=new RegExp("^"+r.EXP_IF+"$"),r.EXP_IF=new RegExp("^"+(o.range?r.EXP_IF+"\\s\\"+r.rangeStr+"\\s"+r.EXP_IF:r.EXP_IF)+"$"),r.EXP_SPLIT=new RegExp("^"+r.EXP_SPLIT+"$",""),r.isInput(o.elem[0])||"focus"===o.trigger&&(o.trigger="click"),o.elem.attr("lay-key",r.index),o.eventElem.attr("lay-key",r.index),o.elem.attr(d,o.id),o.mark=lay.extend({},o.calendar&&"cn"===o.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},o.mark),lay.each(["min","max"],function(e,t){var a=[],n=[];if("number"==typeof o[t])var i=o[t],l=new Date,l=r.newDate({year:l.getFullYear(),month:l.getMonth(),date:l.getDate(),hours:e?23:0,minutes:e?59:0,seconds:e?59:0}).getTime(),e=new Date(i?i<864e5?l+864e5*i:i:l),a=[e.getFullYear(),e.getMonth()+1,e.getDate()],n=[e.getHours(),e.getMinutes(),e.getSeconds()];else if("string"==typeof o[t])a=(o[t].match(/\d+-\d+-\d+/)||[""])[0].split("-"),n=(o[t].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if("object"==typeof o[t])return o[t];o[t]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|n[0],minutes:0|n[1],seconds:0|n[2]}}),r.elemID="layui-laydate"+o.elem.attr("lay-key"),(o.show||e)&&r.render(),e||r.events(),o.value&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value)))},I.prototype.render=function(){var a,n,i,l,r=this,o=r.config,d=r.lang(),s="static"===o.position,y=r.elem=lay.elem("div",{id:r.elemID,"class":["layui-laydate",o.range?" layui-laydate-range":"",r.rangeLinked?" layui-laydate-linkage":"",s?" "+T:"",o.fullPanel?" laydate-theme-fullpanel":"",(a="",lay.each(o.theme,function(e,t){"default"===t||/^#/.test(t)||(a+=" laydate-theme-"+t)}),a)].join("")}),m=r.elemMain=[],c=r.elemHeader=[],u=r.elemCont=[],h=r.table=[],e=r.footer=lay.elem("div",{"class":"layui-laydate-footer"}),t=r.shortcut=lay.elem("ul",{"class":"layui-laydate-shortcut"}),f=(o.zIndex&&(y.style.zIndex=o.zIndex),lay.each(new Array(2),function(e){if(!o.range&&0'+d.timeTips+""),(o.range||"datetime"!==o.type||o.fullPanel)&&f.push(''),lay.each(o.btns,function(e,t){var a=d.tools[t]||"btn";o.range&&"now"===t||(s&&"clear"===t&&(a="cn"===o.lang?"\u91cd\u7f6e":"Reset"),n.push(''+a+""))}),f.push('"),f.join(""))),o.shortcuts&&(y.appendChild(t),lay(t).html((i=[],lay.each(o.shortcuts,function(e,t){i.push('
                                  • '+t.text+"
                                  • ")}),i.join(""))).find("li").on("click",function(e){var t=(o.shortcuts[this.dataset.index]||{}).value||[],n=(layui.isArray(t)||(t=[t]),o.type),t=(lay.each(t,function(e,t){var a=[o.dateTime,r.endDate][e];"time"===n&&"date"!==layui.type(t)?r.EXP_IF.test(t)&&(t=(t.match(r.EXP_SPLIT)||[]).slice(1),lay.extend(a,{hours:0|t[0],minutes:0|t[2],seconds:0|t[4]})):lay.extend(a,r.systemDate("date"===layui.type(t)?t:new Date(t))),"time"!==n&&"datetime"!==n||(r[["startTime","endTime"][e]]={hours:a.hours,minutes:a.minutes,seconds:a.seconds}),0===e?r.startDate=lay.extend({},a):r.endState=!0,"year"===n||"month"===n||"time"===n?r.listYM[e]=[a.year,a.month+1]:e&&r.autoCalendarModel.auto&&r.autoCalendarModel()}),r.checkDate("limit").calendar(null,null,"init"),lay(r.footer).find("."+L).removeClass(k));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(x),"static"!==o.position&&r.setValue(r.parse()).done().remove()})),lay.each(m,function(e,t){y.appendChild(t)}),o.showBottom&&y.appendChild(e),lay.elem("style")),p=[],g=!0,t=(lay.each(o.theme,function(e,t){if(g&&/^#/.test(t))return g=!(l=!0),void p.push(["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}",-1!==o.theme.indexOf("circle")?"":"#{{id}} .layui-this{background-color:{{theme}} !important;}","#{{id}} .laydate-day-now{color:{{theme}} !important;}","#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t));!g&&/^#/.test(t)&&p.push(["#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}","#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))}),o.shortcuts&&o.range&&p.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),p.length&&(p=p.join(""),"styleSheet"in f?(f.setAttribute("type","text/css"),f.styleSheet.cssText=p):f.innerHTML=p,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(f)),r.remove(I.thisElemDate),D.thisId=o.id,s?o.elem.append(y):(v.body.appendChild(y),r.position()),o.shade?'
                                    ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),I.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},I.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(T)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete D.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+S).remove()),t},I.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},I.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":r}));t.elem&&(a.innerHTML=(e="object"==typeof e?e||{}:{content:e}).content||"",lay(t.elem).find("."+r).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+r).remove()},"ms"in e?e.ms:3e3))},I.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),11h[1]&&(e.year=h[1],o=!0),11t&&(e.date=t,o=!0))},r=function(n,i,l){var r=["startTime","endTime"];i=(i.match(d.EXP_SPLIT)||[]).slice(1),l=l||0,s.range&&(d[r[l]]=d[r[l]]||{}),lay.each(d.format,function(e,t){var a=parseFloat(i[e]);i[e].lengthd.getDateTime(s.max)?(n=s.dateTime=lay.extend({},s.max),c=!0):d.getDateTime(n)d.getDateTime(s.max))&&(d.endDate=lay.extend({},s.max),c=!0),d.startTime={hours:s.dateTime.hours,minutes:s.dateTime.minutes,seconds:s.dateTime.seconds},d.endTime={hours:d.endDate.hours,minutes:d.endDate.minutes,seconds:d.endDate.seconds},"month"===s.type&&(s.dateTime.date=1,d.endDate.date=1)),c&&l&&(d.setValue(d.parse()),d.hint("value "+a.invalidDate+a.formatError[1])),d.startDate=d.startDate||l&&lay.extend({},s.dateTime),d.autoCalendarModel.auto&&d.autoCalendarModel(),d.endState=!s.range||!d.rangeLinked||!(!d.startDate||!d.endDate),e&&e(),d},I.prototype.mark=function(e,a){var n,t=this.config;return lay.each(t.mark,function(e,t){e=e.split("-");e[0]!=a[0]&&0!=e[0]||e[1]!=a[1]&&0!=e[1]||e[2]!=a[2]||(n=t||a[2])}),n&&e.find("div").html(''+n+""),this},I.prototype.holidays=function(n,i){var e=this.config,l=["","work"];return"array"!==layui.type(e.holidays)||lay.each(e.holidays,function(a,e){lay.each(e,function(e,t){t===n.attr("lay-ymd")&&n.find("div").html('"+i[2]+"")})}),this},I.prototype.limit=function(t){t=t||{};var i=this,e=i.config,l={},a=t.index>(t.time?0:41)?i.endDate:e.dateTime;return lay.each({now:lay.extend({},a,t.date||{}),min:e.min,max:e.max},function(e,a){var n;l[e]=i.newDate(lay.extend({year:a.year,month:"year"===t.type?0:a.month,date:"year"===t.type||"month"===t.type?1:a.date},(n={},lay.each(t.time,function(e,t){n[t]=a[t]}),n))).getTime()}),a=l.nowl.max,t.elem&&t.elem[a?"addClass":"removeClass"](k),a},I.prototype.thisDateTime=function(e){var t=this.config;return e?this.endDate:t.dateTime},I.prototype.calendar=function(e,t,a){var i,l,r,o=this,n=o.config,t=t?1:0,d=e||o.thisDateTime(t),s=new Date,y=o.lang(),m="date"!==n.type&&"datetime"!==n.type,c=lay(o.table[t]).find("td"),u=lay(o.elemHeader[t][2]).find("span");return d.yearh[1]&&(d.year=h[1],o.hint(y.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},d)),s.setFullYear(d.year,d.month,1),i=(s.getDay()+(7-n.weekStart))%7,l=D.getEndDate(d.month||12,d.year),r=D.getEndDate(d.month+1,d.year),lay.each(c,function(e,t){var a=[d.year,d.month],n=0;(t=lay(t)).removeAttr("class"),e"+a[2]+"
                                    "),o.mark(t,a).holidays(t,a).limit({elem:t,date:{year:a[0],month:a[1]-1,date:a[2]},index:e})}),lay(u[0]).attr("lay-ym",d.year+"-"+(d.month+1)),lay(u[1]).attr("lay-ym",d.year+"-"+(d.month+1)),"cn"===n.lang?(lay(u[0]).attr("lay-type","year").html(d.year+" \u5e74"),lay(u[1]).attr("lay-type","month").html(d.month+1+" \u6708")):(lay(u[0]).attr("lay-type","month").html(y.month[d.month]),lay(u[1]).attr("lay-type","year").html(d.year)),m&&(n.range?!e&&"init"===a||(o.listYM=[[(o.startDate||n.dateTime).year,(o.startDate||n.dateTime).month+1],[o.endDate.year,o.endDate.month+1]],o.list(n.type,0).list(n.type,1),"time"===n.type?o.setBtnStatus("\u65f6\u95f4",lay.extend({},o.systemDate(),o.startTime),lay.extend({},o.systemDate(),o.endTime)):o.setBtnStatus(!0)):(o.listYM=[[d.year,d.month+1]],o.list(n.type,0))),n.range&&"init"===a&&(o.rangeLinked?(s=o.getAsYM(d.year,d.month,t?"sub":null),o.calendar(lay.extend({},d,{year:s[0],month:s[1]}),1-t)):o.calendar(null,1-t)),n.range||(c=["hours","minutes","seconds"],o.limit({elem:lay(o.footer).find(".laydate-btns-now"),date:o.systemDate(),index:0,time:c}),o.limit({elem:lay(o.footer).find(C),index:0,time:c})),o.setBtnStatus(),lay(o.shortcut).find("li."+x).removeClass(x),n.range&&!m&&"init"!==a&&o.stampRange(),o},I.prototype.list=function(n,i){var l,r,e,o,d=this,s=d.config,y=d.rangeLinked?s.dateTime:[s.dateTime,d.endDate][i],m=d.lang(),t=s.range&&"date"!==s.type&&"datetime"!==s.type,c=lay.elem("ul",{"class":w+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),a=d.elemHeader[i],u=lay(a[2]).find("span"),h=d.elemCont[i||0],f=lay(h).find("."+w)[0],p="cn"===s.lang,g=p?"\u5e74":"",v=d.listYM[i]||{},D=["hours","minutes","seconds"],T=["startTime","endTime"][i];return v[0]<1&&(v[0]=1),"year"===n?(e=l=v[0]-7,l<1&&(e=l=1),lay.each(new Array(15),function(e){var t=lay.elem("li",{"lay-ym":l}),a={year:l,month:0,date:1};l==v[0]&&lay(t).addClass(x),t.innerHTML=l+g,c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n}),l++}),lay(u[p?0:1]).attr("lay-ym",l-8+"-"+v[1]).html(e+g+" - "+(l-1)+g)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:v[0],month:e,date:1};e+1==v[1]&&lay(t).addClass(x),t.innerHTML=m.month[e]+(p?"\u6708":""),c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n})}),lay(u[p?0:1]).attr("lay-ym",v[0]+"-"+v[1]).html(v[0]+g)):"time"===n&&(r=function(){lay(c).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){d.limit({elem:lay(t),date:[{hours:e},{hours:d[T].hours,minutes:e},{hours:d[T].hours,minutes:d[T].minutes,seconds:e}][a],index:i,time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),s.range||d.limit({elem:lay(d.footer).find(C),date:d[T],inedx:0,time:["hours","minutes","seconds"]})},s.range?d[T]||(d[T]="startTime"===T?y:d.endDate):d[T]=y,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

                                    "+m.time[t]+"

                                      "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
                                    ",c.appendChild(a)}),r()),f&&h.removeChild(f),h.appendChild(c),"year"===n||"month"===n?(lay(d.elemMain[i]).addClass("laydate-ym-show"),lay(c).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(k)||(d.rangeLinked?lay.extend(y,{year:"year"===n?e:v[0],month:"year"===n?v[1]-1:e}):y[n]=e,"year"===s.type||"month"===s.type?(lay(c).find("."+x).removeClass(x),lay(this).addClass(x),"month"===s.type&&"year"===n&&(d.listYM[i][0]=e,t&&((i?d.endDate:y).year=e),d.list("month",i))):(d.checkDate("limit").calendar(y,i,"init"),d.closeList()),d.setBtnStatus(),!s.range&&s.autoConfirm&&("month"===s.type&&"month"===n||"year"===s.type&&"year"===n)&&d.setValue(d.parse()).done().remove(),d.autoCalendarModel.auto&&!d.rangeLinked?d.choose(lay(h).find("td.layui-this"),i):d.endState&&d.done(null,"change"),lay(d.footer).find("."+L).removeClass(k))})):(e=lay.elem("span",{"class":M}),o=function(){lay(c).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(d[T][D[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(k))return a.scrollTop=30*(e-2),!0})})},u=lay(a[2]).find("."+M),o(),e.innerHTML=s.range?[m.startTime,m.endTime][i]:m.timeTips,lay(d.elemMain[i]).addClass("laydate-time-show"),u[0]&&u.remove(),a[2].appendChild(e),lay(c).find("ol").each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(k)||(s.range?d[T][D[t]]=e:y[D[t]]=e,lay(a).find("."+x).removeClass(x),lay(this).addClass(x),r(),o(),(d.endDate||"time"===s.type||"datetime"===s.type&&s.fullPanel)&&d.done(null,"change"),d.setBtnStatus())})})),d},I.prototype.listYM=[],I.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+w).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+M).remove()},I.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(C);i.range&&"time"!==i.type&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t})||n.limit({date:a})?r.addClass(k):r[i?"addClass":"removeClass"](k),e&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout))},I.prototype.parse=function(e,t){var a=this,n=a.config,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},a.rangeLinked?a.startDate:n.dateTime,a.startTime):n.dateTime),t=D.parse(t,a.format,1);return n.range&&e===undefined?t+" "+a.rangeStr+" "+a.parse("end"):t},I.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},I.prototype.getDateTime=function(e){return this.newDate(e).getTime()},I.prototype.setValue=function(e){var t=this,a=t.config,n=a.elem[0];return"static"===a.position||(e=e||"",t.isInput(n)?lay(n).val(e):(a=t.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+t.rangeStr+" ")),a[0].val(e[0]||""),a[1].val(e[1]||"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e))),t},I.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+E),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html()&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300)))},I.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},I.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(C).addClass(k),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(o+" "+x),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?o:x),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.thisDateTime(1-a)})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(e=n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date,o=n.startDate,n.startDate=lay.extend({},n.endDate,e?{}:n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,e?{}:n.endTime),e&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o)),r&&(i.dateTime=lay.extend({},n.startDate))),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(o=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:o[0],month:o[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},I.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(t).hasClass(k)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(k))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(k))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(t).hasClass(k))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},I.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),o=l.range&&("year"===l.type||"month"===l.type),d=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(d).find(".laydate-year-list")[0],a=lay(d).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),o&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(C),date:{year:s[0]}})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))}}},I.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+L).addClass(k))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},I.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},I.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){D.thisId!==a.id&&t.render()}),a.elem[0].eventHandler=!0,a.eventElem.on(a.trigger,e),t.unbind=function(){t.remove(),a.elem.off(a.trigger,e),a.elem.removeAttr("lay-key"),a.elem.removeAttr(d),a.elem[0].eventHandler=!1,a.eventElem.off(a.trigger,e),a.eventElem.removeAttr("lay-key"),delete s.that[a.id]})},s.that={},s.getThis=function(e){var t=s.that[e];return!t&&n&&layui.hint().error(e?a+" instance with ID '"+e+"' not found":"ID argument required"),t},l.run=function(n){n(v).on("mousedown",function(e){var t,a;!D.thisId||(t=s.getThis(D.thisId))&&(a=t.config,e.target!==a.elem[0]&&e.target!==a.eventElem[0]&&e.target!==n(a.closeStop)[0]&&t.remove())}).on("keydown",function(e){var t;!D.thisId||(t=s.getThis(D.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===I.thisElemDate&&(e.preventDefault(),n(t.footer).find(C)[0].click())}),n(i).on("resize",function(){if(D.thisId){var e=s.getThis(D.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},D.render=function(e){e=new I(e);return s.call(e)},D.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},D.getInst=function(e){e=s.getThis(e);if(e)return e.inst},D.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},D.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},D.close=function(e){e=s.getThis(e||D.thisId);if(e)return e.remove()},D.parse=function(a,n,i){return a=a||{},n=((n="string"==typeof n?s.formatArr(n):n)||[]).concat(),lay.each(n,function(e,t){/yyyy|y/.test(t)?n[e]=lay.digit(a.year,t.length):/MM|M/.test(t)?n[e]=lay.digit(a.month+(i||0),t.length):/dd|d/.test(t)?n[e]=lay.digit(a.date,t.length):/HH|H/.test(t)?n[e]=lay.digit(a.hours,t.length):/mm|m/.test(t)?n[e]=lay.digit(a.minutes,t.length):/ss|s/.test(t)&&(n[e]=lay.digit(a.seconds,t.length))}),n.join("")},D.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},n?(D.ready(),layui.define("lay",function(e){D.path=layui.cache.dir,l.run(lay),e(a,D)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),D}):(D.ready(),l.run(i.lay),i.laydate=D)}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(T,M){var f=[],g=T.document,c=f.slice,O=f.concat,R=f.push,P=f.indexOf,B={},W=B.toString,m=B.hasOwnProperty,y={},e="1.12.4",C=function(e,t){return new C.fn.init(e,t)},I=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,$=/^-ms-/,z=/-([\da-z])/gi,X=function(e,t){return t.toUpperCase()};function U(e){var t=!!e&&"length"in e&&e.length,n=C.type(e);return"function"!==n&&!C.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+a+")"+a+"*"),ee=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),te=new RegExp(G),ne=new RegExp("^"+s+"$"),f={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),TAG:new RegExp("^("+s+"|[*])"),ATTR:new RegExp("^"+J),PSEUDO:new RegExp("^"+G),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},re=/^(?:input|select|textarea|button)$/i,ie=/^h\d$/i,c=/^[^{]+\{\s*\[native \w/,oe=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ae=/[+~]/,se=/'|\\/g,d=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig"),p=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)},ue=function(){C()};try{D.apply(n=V.call(v.childNodes),v.childNodes),n[v.childNodes.length].nodeType}catch(F){D={apply:n.length?function(e,t){U.apply(e,V.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function H(e,t,n,r){var i,o,a,s,u,l,c,f,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!r&&((t?t.ownerDocument||t:v)!==E&&C(t),t=t||E,N)){if(11!==p&&(l=oe.exec(e)))if(i=l[1]){if(9===p){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&y(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return D.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&g.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(i)),n}if(g.qsa&&!A[e+" "]&&(!m||!m.test(e))){if(1!==p)d=t,f=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(se,"\\$&"):t.setAttribute("id",s=k),o=(c=w(e)).length,u=ne.test(s)?"#"+s:"[id='"+s+"']";o--;)c[o]=u+" "+_(c[o]);f=c.join(","),d=ae.test(e)&&de(t.parentNode)||t}if(f)try{return D.apply(n,d.querySelectorAll(f)),n}catch(h){}finally{s===k&&t.removeAttribute("id")}}}return P(e.replace(L,"$1"),t,n,r)}function le(){var n=[];function r(e,t){return n.push(e+" ")>b.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function q(e){return e[k]=!0,e}function h(e){var t=E.createElement("div");try{return!!e(t)}catch(F){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function ce(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function x(a){return q(function(o){return o=+o,q(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function de(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in g=H.support={},O=H.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},C=H.setDocument=function(e){var e=e?e.ownerDocument||e:v;return e!==E&&9===e.nodeType&&e.documentElement&&(t=(E=e).documentElement,N=!O(E),(e=E.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",ue,!1):e.attachEvent&&e.attachEvent("onunload",ue)),g.attributes=h(function(e){return e.className="i",!e.getAttribute("className")}),g.getElementsByTagName=h(function(e){return e.appendChild(E.createComment("")),!e.getElementsByTagName("*").length}),g.getElementsByClassName=c.test(E.getElementsByClassName),g.getById=h(function(e){return t.appendChild(e).id=k,!E.getElementsByName||!E.getElementsByName(k).length}),g.getById?(b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&N)return(e=t.getElementById(e))?[e]:[]},b.filter.ID=function(e){var t=e.replace(d,p);return function(e){return e.getAttribute("id")===t}}):(delete b.find.ID,b.filter.ID=function(e){var t=e.replace(d,p);return function(e){e="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}}),b.find.TAG=g.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):g.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=g.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&N)return t.getElementsByClassName(e)},r=[],m=[],(g.qsa=c.test(E.querySelectorAll))&&(h(function(e){t.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+a+"*(?:value|"+Y+")"),e.querySelectorAll("[id~="+k+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||m.push(".#.+[+~]")}),h(function(e){var t=E.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(g.matchesSelector=c.test(i=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&h(function(e){g.disconnectedMatch=i.call(e,"div"),i.call(e,"[s!='']:x"),r.push("!=",G)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),e=c.test(t.compareDocumentPosition),y=e||c.test(t.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=e?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!g.sortDetached&&t.compareDocumentPosition(e)===n?e===E||e.ownerDocument===v&&y(v,e)?-1:t===E||t.ownerDocument===v&&y(v,t)?1:u?j(u,e)-j(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===E?-1:t===E?1:i?-1:o?1:u?j(u,e)-j(u,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?fe(a[r],s[r]):a[r]===v?-1:s[r]===v?1:0}),E},H.matches=function(e,t){return H(e,null,null,t)},H.matchesSelector=function(e,t){if((e.ownerDocument||e)!==E&&C(e),t=t.replace(ee,"='$1']"),g.matchesSelector&&N&&!A[t+" "]&&(!r||!r.test(t))&&(!m||!m.test(t)))try{var n=i.call(e,t);if(n||g.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(F){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(d,p),e[3]=(e[3]||e[4]||e[5]||"").replace(d,p),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||H.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&H.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return f.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&te.test(n)&&(t=w(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(d,p).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=H.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1(?:<\/\1>|)$/,G=/^.[^:#\[\.,]*$/;function K(e,n,r){if(C.isFunction(n))return C.grep(e,function(e,t){return!!n.call(e,t,e)!==r});if(n.nodeType)return C.grep(e,function(e){return e===n!==r});if("string"==typeof n){if(G.test(n))return C.filter(n,e,r);n=C.filter(n,e)}return C.grep(e,function(e){return-1)[^>]*|#([\w-]*))$/,ee=((C.fn.init=function(e,t,n){if(!e)return this;if(n=n||Q,"string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):C.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(C):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),C.makeArray(e,this));if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Z.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:g,!0)),J.test(r[1])&&C.isPlainObject(t))for(var r in t)C.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}return this.context=g,this.selector=e,this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
                                    a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
                                    ","
                                    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
                                    "],tr:[2,"","
                                    "],col:[2,"","
                                    "],td:[3,"","
                                    "],_default:y.htmlSerialize?[0,"",""]:[1,"X
                                    ","
                                    "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
                                    t
                                    ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",(nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight)),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o&&(i.left=o)),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
                                    a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1===this.nodeType&&(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined||(this.value=e))})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"
                                    ":"";return a.zIndex=o,t([a.shade?'
                                    ':"",'
                                    '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
                                    ':''):"")+((1!=a.type||!e)&&a.content||"")+'
                                    '+(n=[],l&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
                                    "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t=0,i=a.btn.length;t'+a.btn[t]+"";return'
                                    '+e+"
                                    "}():"")+(a.resize?'':"")+"
                                    "],s,m('
                                    ')),this},t.pt.creat=function(){var e,t,i,n,a,o=this,s=o.config,l=o.index,r="object"==typeof(f=s.content),c=m("body");if(s.id&&m("."+y[0]).find("#"+s.id)[0])return e=m("#"+s.id).closest("."+y[0]),t=e.attr("times"),i=e.data("config"),n=m("#"+y.SHADE+t),void("min"===(e.data("maxminStatus")||{})?h.restore(t):i.hideOnClose&&(n.show(),e.show()));switch(s.removeFocus&&document.activeElement.blur(),"string"==typeof s.area&&(s.area="auto"===s.area?["",""]:[s.area,""]),s.shift&&(s.anim=s.shift),6==h.ie&&(s.fixed=!1),s.type){case 0:s.btn="btn"in s?s.btn:u.btn[0],h.closeAll("dialog");break;case 2:var f=s.content=r?s.content:[s.content||"","auto"];s.content='';break;case 3:delete s.title,delete s.closeBtn,-1===s.icon&&s.icon,h.closeAll("loading");break;case 4:r||(s.content=[s.content,"body"]),s.follow=s.content[1],s.content=s.content[0]+'',delete s.title,s.tips="object"==typeof s.tips?s.tips:[s.tips,!0],s.tipsMore||h.closeAll("tips")}o.vessel(r,function(e,t,i){c.append(e[0]),r?2==s.type||4==s.type?m("body").append(e[1]):f.parents("."+y[0])[0]||(f.data("display",f.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+y[0]+l).find("."+y[5]).before(t)):c.append(e[1]),m("#"+y.MOVE)[0]||c.append(u.moveElem=i),o.layero=m("#"+y[0]+l),o.shadeo=m("#"+y.SHADE+l),s.scrollbar||y.html.css("overflow","hidden").attr("layer-full",l)}).auto(l),o.shadeo.css({"background-color":s.shade[1]||"#000",opacity:s.shade[0]||s.shade}),2==s.type&&6==h.ie&&o.layero.find("iframe").attr("src",f[0]),4==s.type?o.tips():(o.offset(),parseInt(u.getStyle(document.getElementById(y.MOVE),"z-index"))||(o.layero.css("visibility","hidden"),h.ready(function(){o.offset(),o.layero.css("visibility","visible")}))),s.fixed&&!u.events.resize[o.index]&&(u.events.resize[o.index]=function(){o.resize()},d.on("resize",u.events.resize[o.index])),s.time<=0||setTimeout(function(){h.close(o.index)},s.time),o.move().callback(),y.anim[s.anim]&&(a="layer-anim "+y.anim[s.anim],o.layero.addClass(a).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(a)})),o.layero.data("config",s)},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+y[0]+e),n=(""===t.area[0]&&0t.maxWidth&&i.width(t.maxWidth)),[i.innerWidth(),i.innerHeight()]),a=i.find(y[1]).outerHeight()||0,o=i.find("."+y[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+y[5])):t.fixed&&n[1]>=d.height()&&(n[1]=d.height(),e("."+y[5])):e("."+y[5]),this},t.pt.offset=function(){var e=this,t=e.config,i=e.layero,n=[i.outerWidth(),i.outerHeight()],a="object"==typeof t.offset;e.offsetTop=(d.height()-n[1])/2,e.offsetLeft=(d.width()-n[0])/2,a?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=d.width()-n[0]:"b"===t.offset?e.offsetTop=d.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=d.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=d.width()-n[0]):"rb"===t.offset?(e.offsetTop=d.height()-n[1],e.offsetLeft=d.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?d.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?d.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=d.scrollTop(),e.offsetLeft+=d.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=d.height()-(i.find(y[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0d.width()&&(o=d.width()-180-(u.minStackArr.edgeIndex=u.minStackArr.edgeIndex||0,u.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(l.left=o,l.top=d.height()-n,a||u.minStackIndex++,r.attr("minLeft",o)),r.attr("position",s),h.style(e,l,!0),i.hide(),"page"===r.attr("type")&&r.find(y[4]).hide(),u.rescollbar(e),c.hide())},h.restore=function(e){var t=m("#"+y[0]+e),i=m("#"+y.SHADE+e),n=t.attr("area").split(","),a=t.attr("type");t.removeData("maxminStatus"),h.style(e,{width:n[0],height:n[1],top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===a&&t.find(y[4]).show(),u.rescollbar(e),i.show()},h.full=function(t){var i=m("#"+y[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&h.restore(t),i.data("maxminStatus","max"),u.record(i),y.html.attr("layer-full")||y.html.css("overflow","hidden").attr("layer-full",t),clearTimeout(void 0),setTimeout(function(){var e="fixed"===i.css("position");h.style(t,{top:e?0:d.scrollTop(),left:e?0:d.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},h.title=function(e,t){m("#"+y[0]+(t||h.index)).find(y[1]).html(e)},h.close=function(o,s){var l,e,r=(t=m("."+y[0]).find("#"+o).closest("."+y[0]))[0]?(o=t.attr("times"),t):m("#"+y[0]+o),c=r.attr("type"),t=r.data("config")||{},f=t.id&&t.hideOnClose;r[0]&&(l={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[t.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(f)return r.removeClass("layer-anim "+l),r.hide();if(c===u.type[1]&&"object"===r.attr("conType")){r.children(":not(."+y[5]+")").remove();for(var t=r.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===u.type[2])try{var n=m("#"+y[4]+o)[0];n.contentWindow.document.write(""),n.contentWindow.close(),r.find("."+y[5])[0].removeChild(n)}catch(a){}r[0].innerHTML="",r.remove()}"function"==typeof u.end[o]&&u.end[o](),delete u.end[o],"function"==typeof s&&s(),u.events.resize[o]&&(d.off("resize",u.events.resize[o]),delete u.events.resize[o])},m("#"+y.SHADE+o)[f?"hide":"remove"](),t.isOutAnim&&r.addClass("layer-anim "+l),6==h.ie&&u.reselect(),u.rescollbar(o),"string"==typeof r.attr("minLeft")&&(u.minStackIndex--,u.minStackArr.push(r.attr("minLeft"))),h.ie&&h.ie<10||!t.isOutAnim?e():setTimeout(function(){e()},200))},h.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+y[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&h.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},h.closeLast=function(e){h.close(m(".layui-layer-"+(e=e||"page")+":last").attr("times"))},h.cache||{}),g=function(e){return i.skin?" "+i.skin+" "+i.skin+"-"+e:""};h.prompt=function(i,n){var e="",t="";"function"==typeof(i=i||{})&&(n=i),i.area&&(e='style="width: '+(o=i.area)[0]+"; height: "+o[1]+';"',delete i.area),i.placeholder&&(t=' placeholder="'+i.placeholder+'"');var a,o=2==i.formType?'":'",s=i.success;return delete i.success,h.open(m.extend({type:1,btn:["确定","取消"],content:o,skin:"layui-layer-prompt"+g("prompt"),maxWidth:d.width(),success:function(e){(a=e.find(".layui-layer-input")).val(i.value||"").focus(),"function"==typeof s&&s(e)},resize:!1,yes:function(e){var t=a.val();t.length>(i.maxlength||500)?h.tips("最多输入"+(i.maxlength||500)+"个字数",a,{tips:1}):n&&n(t,e,a)}},i))},h.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,h.open(m.extend({type:1,skin:"layui-layer-tab"+g("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
                                      '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
                                    ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},h.photos=function(n,e,a){var o={};if((n=n||{}).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},s=i.data||[],l=i.start||0,r=(o.imgIndex=1+(0|l),n.img=n.img||"img",n.success);if(delete n.success,t){if(0===s.length)return h.msg("没有图片")}else{var c=m(n.photos),f=function(){s=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),s.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===s.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");h.photos(m.extend(n,{photos:{start:e,data:s,tab:n.tab},full:n.full}),!0)}),!e)return}o.imgprev=function(e){o.imgIndex--,o.imgIndex<1&&(o.imgIndex=s.length),o.tabimg(e)},o.imgnext=function(e,t){o.imgIndex++,o.imgIndex>s.length&&(o.imgIndex=1,t)||o.tabimg(e)},o.keyup=function(e){var t;o.end||(t=e.keyCode,e.preventDefault(),37===t?o.imgprev(!0):39===t?o.imgnext(!0):27===t&&h.close(o.index))},o.tabimg=function(e){if(!(s.length<=1))return i.start=o.imgIndex-1,h.close(o.index),h.photos(n,!0,e)},o.event=function(){o.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),o.imgprev(!0)}),o.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),o.imgnext(!0)}),m(document).on("keyup",o.keyup)},o.loadi=h.load(1,{shade:!("shade"in n)&&.9,scrollbar:!1});var t=s[l].src,d=function(e){h.close(o.loadi);var t,i=s[l].alt||"";a&&(n.anim=-1),o.index=h.open(m.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[m(p).width()-100,m(p).height()-100],!n.full&&(e[0]>t[0]||e[1]>t[1])&&((t=[e[0]/t[0],e[1]/t[1]])[1]'+i+''+(t=['
                                    '],1','','',"
                                    "].join("")),n.hideFooter||t.push(['
                                    ','
                                    ',"

                                    "+i+"

                                    ",""+o.imgIndex+" / "+s.length+"",'\u67e5\u770b\u539f\u56fe',"
                                    ","
                                    "].join("")),t.push("
                                    "),t.join(""))+"
                                    ",success:function(e,t){o.bigimg=e.find(".layui-layer-phimg"),o.imgsee=e.find(".layui-layer-imgbar"),o.event(e),n.tab&&n.tab(s[l],e),"function"==typeof r&&r(e)},end:function(){o.end=!0,m(document).off("keyup",o.keyup)}},n))},u=function(){h.close(o.loadi),h.msg("当前图片地址异常
                                    是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){1").addClass(a));layui.each(i.bars,function(e,t){var n=s('
                                  • ');n.addClass(t.icon).attr({"lay-type":t.type,style:t.style||(i.bgcolor?"background-color: "+i.bgcolor:"")}).html(t.content),n.on("click",function(){var e=s(this).attr("lay-type");"top"===e&&("body"===i.target?s("html,body"):c).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,e)}),"object"===layui.type(i.on)&&layui.each(i.on,function(e,t){n.on(e,function(){var e=s(this).attr("lay-type");"function"==typeof t&&t.call(this,e)})}),"top"===t.type&&(n.addClass("layui-fixbar-top"),o=n),u.append(n)}),l.find("."+a).remove(),"object"==typeof i.css&&u.css(i.css),l.append(u),o&&(t=function t(){return c.scrollTop()>=i.margin?e||(o.show(),e=1):e&&(o.hide(),e=0),t}()),c.on("scroll",function(){t&&(clearTimeout(n),n=setTimeout(function(){t()},100))})},countdown:function(e,t,n){var i=this,o="function"==typeof t,a=new Date(e).getTime(),r=new Date(!t||o?(new Date).getTime():t).getTime(),a=a-r,l=[Math.floor(a/864e5),Math.floor(a/36e5)%24,Math.floor(a/6e4)%60,Math.floor(a/1e3)%60],o=(o&&(n=t),setTimeout(function(){i.countdown(e,r+1e3,n)},1e3));return n&&n(0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e},unescape:function(e){return e!==undefined&&null!==e||(e=""),(e+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(e){var t=(e=e||{}).window||window.open(e.url||"",e.target,e.specs);e.url||(t.document.open("text/html","replace"),t.document.write(e.content||""),t.document.close())},toVisibleArea:function(e){var t,n,i,o,a,r,l,c;(e=s.extend({margin:160,duration:200,type:"y"},e)).scrollElem[0]&&e.thisElem[0]&&(t=e.scrollElem,l=e.thisElem,i=(a="y"===e.type)?"top":"left",o=t[n=a?"scrollTop":"scrollLeft"](),a=t[a?"height":"width"](),r=t.offset()[i],c={},((l=l.offset()[i]-r)>a-e.margin||l."+h,k=function(e){var i=this;i.index=++p.index,i.config=s.extend({},i.config,p.config,e),i.init()};k.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:300,shade:0},k.prototype.reload=function(e,i){var t=this;t.config=s.extend({},t.config,e),t.init(!0,i)},k.prototype.init=function(e,i){var t,n=this,a=n.config,l=s(a.elem);return 1');return 0No data
                                  • '),e},u=function(r,e){return layui.each(e,function(e,i){var t,n=i.child&&0",(t="href"in i?''+l+"":l,n?'
                                    '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
                                    ":'
                                    '+t+"
                                    "),""].join(""))).data("item",i),n&&(a=s('
                                    '),t=s("
                                      "),"parent"===o?(a.append(u(t,i.child)),l.append(a)):l.append(u(t,i.child))),r.append(l))}),r},a=['
                                      ',"
                                      "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(m+"_opened")||(l.elemView=s("."+f+'[lay-id="'+d.id+'"]'),"reloadData"===i&&l.elemView.length?l.elemView.html(d.content||n()):(l.elemView=s(a),l.elemView.append(d.content||n()),d.className&&l.elemView.addClass(d.className),d.style&&l.elemView.attr("style",d.style),p.thisId=d.id,l.remove(),t.append(l.elemView),d.elem.data(m+"_opened",!0),e=d.shade?'
                                      ':"",l.elemView.before(e),"mouseenter"===d.trigger&&l.elemView.on("mouseenter",function(){clearTimeout(y.timer)}).on("mouseleave",function(){l.delayRemove()})),l.position(),(y.prevElem=l.elemView).data("prevElem",d.elem),l.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),l.elemView.find(".layui-menu li").on("click",function(e){var i=s(this),t=i.data("item")||{},n=t.child&&0n.width()&&(t.addClass(V),(i=t[0].getBoundingClientRect()).left<0&&t.removeClass(V)),i.bottom>n.height()&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5)))}).on("mouseleave",t,function(e){var i=s(this).children("."+C);i.removeClass(V),i.css("margin-top",0)}),p.close=function(e){e=y.getThis(e);return e?(e.remove(),y.call(e)):this},p.reload=function(e,i,t){e=y.getThis(e);return e?(e.reload(i,t),y.call(e)):this},p.reloadData=function(){var t=s.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),p.reload.apply(null,t)},p.render=function(e){e=new k(e);return y.call(e)},e(r,p)});layui.define(["jquery","lay"],function(e){"use strict";var g=layui.$,c=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var i=this;return i.config=g.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},t="slider",v="layui-disabled",x="layui-slider-bar",b="layui-slider-wrap",T="layui-slider-wrap-btn",w="layui-slider-tips",M="layui-slider-input-txt",L="layui-slider-hover",i=function(e){var i=this;i.index=++m.index,i.config=g.extend({},i.config,m.config,e),i.render()};i.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},i.prototype.render=function(){var a=this,n=a.config,e=g(n.elem);if(1n.min?e:n.min,n.value[1]=i>n.min?i:n.min,n.value[0]=n.value[0]>n.max?n.max:n.value[0],n.value[1]=n.value[1]>n.max?n.max:n.value[1],i=Math.floor((n.value[0]-n.min)/(n.max-n.min)*100),t=(s=Math.floor((n.value[1]-n.min)/(n.max-n.min)*100))-i+"%",i+="%",s+="%"):("object"==typeof n.value&&(n.value=Math.min.apply(null,n.value)),n.valuen.max&&(n.value=n.max),t=Math.floor((n.value-n.min)/(n.max-n.min)*100)+"%");var l,e=n.disabled?"#c2c2c2":n.theme,i='
                                      '+(n.tips?'
                                      ':"")+'
                                      '+(n.range?'
                                      ':"")+"
                                      ",t=g(n.elem),s=t.next(".layui-slider");if(s[0]&&s.remove(),a.elemTemp=g(i),n.range?(a.elemTemp.find("."+b).eq(0).data("value",n.value[0]),a.elemTemp.find("."+b).eq(1).data("value",n.value[1])):a.elemTemp.find("."+b).data("value",n.value),t.html(a.elemTemp),"vertical"===n.type&&a.elemTemp.height(n.height+"px"),n.showstep){for(var o=(n.max-n.min)/n.step,r="",u=1;u<1+o;u++){var d=100*u/o;d<100&&(r+='
                                      ')}a.elemTemp.append(r)}n.input&&!n.range&&(e=g('
                                      '),t.css("position","relative"),t.append(e),t.find("."+M).children("input").val(n.value),"vertical"===n.type?e.css({left:0,top:-48}):a.elemTemp.css("margin-right",e.outerWidth()+15)),n.disabled?(a.elemTemp.addClass(v),a.elemTemp.find("."+T).addClass(v)):a.slide(),a.elemTemp.find("."+T).on("mouseover",function(){var e="vertical"===n.type?n.height:a.elemTemp[0].offsetWidth,i=a.elemTemp.find("."+b),t=("vertical"===n.type?e-g(this).parent()[0].offsetTop-i.height():g(this).parent()[0].offsetLeft)/e*100,i=g(this).parent().data("value"),e=n.setTips?n.setTips(i):i;a.elemTemp.find("."+w).html(e),clearTimeout(l),l=setTimeout(function(){"vertical"===n.type?a.elemTemp.find("."+w).css({bottom:t+"%","margin-bottom":"20px",display:"inline-block"}):a.elemTemp.find("."+w).css({left:t+"%",display:"inline-block"})},300)}).on("mouseout",function(){clearTimeout(l),a.elemTemp.find("."+w).css("display","none")})},i.prototype.slide=function(e,i,t){var o=this,r=o.config,u=o.elemTemp,d=function(){return"vertical"===r.type?r.height:u[0].offsetWidth},c=u.find("."+b),m=u.next(".layui-slider-input"),v=m.children("."+M).children("input").val(),p=100/((r.max-r.min)/Math.ceil(r.step)),f=function(e,i,t){e=(e=100<(e=100a[1]&&a.reverse(),o.value=r.range?a:l,r.change&&r.change(o.value),"done"===t&&r.done&&r.done(o.value)},h=function(e){var i=e/d()*100/p,t=Math.round(i)*p;return t=e==d()?Math.ceil(i)*p:t},y=g(['
                                      d()?d():i)/d()*100/p;f(i,l),s.addClass(L),u.find("."+w).show(),e.preventDefault()},i=function(){s.removeClass(L),u.find("."+w).hide()},t=function(){i&&i(),y.remove(),r.done&&r.done(o.value)},g("#LAY-slider-moving")[0]||g("body").append(y),y.on("mousemove",e),y.on("mouseup",t).on("mouseleave",t)})}),u.on("click",function(e){var i=g("."+T),t=g(this);!i.is(event.target)&&0===i.has(event.target).length&&i.length&&(t=(i=(i=(i="vertical"===r.type?d()-e.clientY+t.offset().top-g(window).scrollTop():e.clientX-t.offset().left-g(window).scrollLeft())<0?0:i)>d()?d():i)/d()*100/p,i=r.range?"vertical"===r.type?Math.abs(i-parseInt(g(c[0]).css("bottom")))>Math.abs(i-parseInt(g(c[1]).css("bottom")))?1:0:Math.abs(i-c[0].offsetLeft)>Math.abs(i-c[1].offsetLeft)?1:0:0,f(t,i,"done"),e.preventDefault())}),m.children(".layui-slider-input-btn").children("i").each(function(i){g(this).on("click",function(){v=m.children("."+M).children("input").val();var e=((v=1==i?v-r.stepr.max?r.max:Number(v)+r.step)-r.min)/(r.max-r.min)*100/p;f(e,0,"done")})});var a=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)r.max?r.max:e,((this.value=e)-r.min)/(r.max-r.min)*100/p);f(e,0,"done")};m.children("."+M).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),a.call(this))}).on("change",a)},i.prototype.events=function(){this.config},m.render=function(e){e=new i(e);return function(){var t=this,a=t.config;return{setValue:function(e,i){return e=(e=e>a.max?a.max:e)',"",'','',"","","
                                      "].join("")),r=i.elem=m(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),r.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:r.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,r=e.elemColorBox[0],t=e.elemPicker=m(['
                                      ','
                                      ','
                                      ','
                                      ','
                                      ','
                                      ',"
                                      ",'
                                      ','
                                      ',"
                                      ","
                                      ",'
                                      ','
                                      ','
                                      ',"
                                      ","
                                      ",i.predefine?(o=['
                                      '],layui.each(i.colors,function(e,i){o.push(['
                                      ','
                                      ',"
                                      "].join(""))}),o.push("
                                      "),o.join("")):"",'
                                      ','
                                      ','',"
                                      ",'
                                      ','','',"","
                                      "].join(""));e.elemColorBox.find("."+C)[0];m(a)[0]&&m(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),m("body").append(t)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=r.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=m("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close&&i.close(this.color)),this},d.prototype.position=function(){var e=this,i=e.config;return t.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),r=i.elemPicker.find("."+M),t=o[0].style.backgroundColor;t?(e=Y(L(t)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?r.find("input").val(t):"rgba"===o?(o=L(t),3===(t.match(/[0-9]{1,3}/g)||[]).length?(r.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+T).css("left",280)):(r.find("input").val(t),t=280*t.slice(t.lastIndexOf(",")+1,t.length-1),i.elemPicker.find("."+T).css("left",t)),i.elemPicker.find("."+D)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):r.find("input").val("#"+F(e))):(i.select(0,100,100),r.find("input").val(""),i.elemPicker.find("."+D)[0].style.background="",i.elemPicker.find("."+T).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),r=n.elemPicker.find("."+E),f=n.elemPicker.find("."+D),u=n.elemPicker.find("."+T),g=e[0].offsetTop/180*360,p=100-(r[0].offsetTop+3)/180*100,h=(r[0].offsetLeft+3)/260*100,v=Math.round(u[0].offsetLeft/280*100)/100,b=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),y=function(e,i,o,r){n.select(e,i,o);var t=j({h:e,s:i,b:o}),e=F({h:e,s:i,b:o}),i=n.elemPicker.find("."+M).find("input");b.addClass(x).removeClass(P),c[0].style.background="rgb("+t.r+", "+t.g+", "+t.b+")","torgb"===a?i.val("rgb("+t.r+", "+t.g+", "+t.b+")"):"rgba"===a?(u.css("left",280*r),i.val("rgba("+t.r+", "+t.g+", "+t.b+", "+r+")"),c[0].style.background="rgba("+t.r+", "+t.g+", "+t.b+", "+r+")",f[0].style.background="linear-gradient(to right, rgba("+t.r+", "+t.g+", "+t.b+", 0), rgb("+t.r+", "+t.g+", "+t.b+"))"):i.val("#"+e),l.change&&l.change(n.elemPicker.find("."+M).find("input").val())},o=m(['
                                      '].join("")),k=function(e){m("#LAY-colorpicker-moving")[0]||m("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var r=this.offsetTop,t=e.clientY;k(function(e){var i=r+(e.clientY-t),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;y(g=o,h,p,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-m(this).offset().top+H.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;y(g=i,h,p,v),e.preventDefault()}),r.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),k(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),r=d[0].offsetHeight-3,t=d[0].offsetWidth-3,t=((o=t<(o=o<-3?-3:o)?t:o)+3)/260*100,o=100-((i=r<(i=i<-3?-3:i)?r:i)+3)/180*100;y(g,h=t,p=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-m(this).offset().top-3+H.scrollTop(),o=e.clientX-m(this).offset().left-3+H.scrollLeft(),o=((i=i<-3?-3:i)>this.offsetHeight-3&&(i=this.offsetHeight-3),((o=(o=o<-3?-3:o)>this.offsetWidth-3?this.offsetWidth-3:o)+3)/260*100),i=100-(i+3)/180*100;y(g,h=o,p=i,v),layui.stope(e),e.preventDefault(),r.trigger(e,"mousedown")}),u.on("mousedown",function(e){var r=this.offsetLeft,t=e.clientX;k(function(e){var i=r+(e.clientX-t),o=f[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);y(g,h,p,v=o),e.preventDefault()}),e.preventDefault()}),f.on("click",function(e){var i=e.clientX-m(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);y(g,h,p,v=i),e.preventDefault()}),i.each(function(){m(this).on("click",function(){m(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(L(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);g=i.h,h=i.s,p=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,y(i.h,i.s,i.b,o)})})},d.prototype.select=function(e,i,o,r){this.config;var t=F({h:e,s:100,b:100}),e=(F({h:e,s:i,b:o}),e/360*180),o=180-o/100*180-3,i=i/100*260-3;this.elemPicker.find("."+B).css("top",e),this.elemPicker.find("."+I)[0].style.background="#"+t,this.elemPicker.find("."+E).css({top:o,left:i})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+M+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,r,t,n,l=d.val();if(-1>16,g:(65280&t)>>8,b:255&t},r=Y(n),s[0].style.background=o="#"+F(r),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i)return c.select(r.h,r.s,r.b,i),void(a.change&&a.change(o));c.color=l,a.done&&a.done(l),c.removePicker()}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=m(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=m(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),m(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,r;!n.thisId||(i=l.getThis(n.thisId))&&(o=i.config,r=i.elemColorBox.find("."+C),m(e.target).hasClass(c)||m(e.target).parents("."+c)[0]||m(e.target).hasClass(a.replace(/\./g,""))||m(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(L(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),r[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),H.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!m(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(r,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),o="element",c="layui-this",h="layui-show",r=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,o,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(r),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
                                      '+(i.content||"")+"
                                      "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),g.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(r).find('>li[lay-id="'+i+'"]');return g.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(r).find('>li[lay-id="'+i+'"]');return g.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(this).index();g.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",l="layui-nav-bar",p="layui-nav-tree",b="layui-nav-child",v="layui-nav-more",m="layui-anim layui-anim-upbit",g={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(c).siblings().removeClass(c),i.eq(t).addClass(h).siblings().removeClass(h)),layui.event.call(this,o,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(c)&&(i.next()[0]&&i.next().is("li")?g.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&g.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){g.tabAuto()},50),layui.event.call(this,o,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t,i=u(this),a=i.children(".layui-tab-title"),e=(i.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),e=u('');c===window&&d.ie,i.attr("lay-allowclose")&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||((t=u('')).on("click",g.tabDelete),i.append(t))}),"string"!=typeof i.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(t=a.find("li").eq(0).height())+t/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(e),i.attr("overflow",""),e.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),i.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.parents(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+b),n="string"==typeof e.attr("lay-unselect");"javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+c).removeClass(c),e.addClass(c)),i.hasClass(p)&&(l.removeClass(m),l[0]&&(e["none"===l.css("display")?"addClass":"removeClass"](f+"ed"),"all"===i.attr("lay-shrink")&&e.siblings().removeClass(f+"ed"))),layui.event.call(this,o,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,o,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){g.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+l)[0]||(i.append(a),(i.hasClass(p)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+b);i.hasClass(p)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(m),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+v).addClass(v+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(p)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+b).removeClass(h),i.find("."+v).removeClass(v+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(p)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+b)[0]&&!t.children("."+v)[0]&&t.append(''),t.off("click",g.clickThis).on("click",g.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",g.collapse).on("click",g.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",g.tabClick),u(window).on("resize",g.tabAuto),t(o,a)});layui.define(["lay","layer"],function(e){"use strict";var y=layui.$,t=layui.layer,F=layui.device(),i={config:{},set:function(e){var t=this;return t.config=y.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,n,e,t)}},n="upload",a="layui-upload-file",o="layui-upload-form",b="layui-upload-iframe",x="layui-upload-choose",w=function(e){var t=this;t.config=y.extend({},t.config,i.config,e),t.render()};w.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1},w.prototype.render=function(e){var t=this;(e=t.config).elem=y(e.elem),e.bindAction=y(e.bindAction),t.file(),t.events()},w.prototype.file=function(){var e=this,t=e.config,i=e.elemFile=y(['"].join("")),n=t.elem.next();(n.hasClass(a)||n.hasClass(o))&&n.remove(),F.ie&&F.ie<10&&t.elem.wrap('
                                      '),e.isFile()?(e.elemFile=t.elem,t.field=t.elem[0].name):t.elem.after(i),F.ie&&F.ie<10&&e.initIE()},w.prototype.initIE=function(){var i,e=this.config,t=y(''),n=y(['
                                      ',"
                                      "].join(""));y("#"+b)[0]||y("body").append(t),e.elem.next().hasClass(o)||(this.elemFile.wrap(n),e.elem.next("."+o).append((i=[],layui.each(e.data,function(e,t){t="function"==typeof t?t():t,i.push('')}),i.join(""))))},w.prototype.msg=function(e){return t.msg(e,{icon:2,shift:6})},w.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},w.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,t){var i=new FileReader;i.readAsDataURL(t),i.onload=function(){n&&n(e,t,this.result)}})},w.prototype.upload=function(e,t){var i,n,a,o,l=this,r=l.config,u=l.elemFile[0],c=function(){return e||l.files||l.chooseFiles||u.files},s=function(){var t=0,a=0,e=c(),o=function(){r.multiple&&t+a===l.fileLength&&"function"==typeof r.allDone&&r.allDone({total:l.fileLength,successful:t,failed:a})};layui.each(e,function(i,e){var n=new FormData,e=(layui.each(r.data,function(e,t){t="function"==typeof t?t():t,n.append(e,t)}),n.append(r.field,e),{url:r.url,type:"post",data:n,contentType:!1,processData:!1,dataType:"json",headers:r.headers||{},success:function(e){t++,p(i,e),o()},error:function(e){a++,l.msg(["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
                                      ")),d(i),o()}});"function"==typeof r.progress&&(e.xhr=function(){var e=y.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var t;e.lengthComputable&&(t=Math.floor(e.loaded/e.total*100),r.progress(t,(r.item||r.elem)[0],e,i))}),e}),y.ajax(e)})},f=function(){var n=y("#"+b);l.elemFile.parent().submit(),clearInterval(w.timer),w.timer=setInterval(function(){var e,t=n.contents().find("body");try{e=t.text()}catch(i){l.msg("Cross-domain requests are not supported"),clearInterval(w.timer),d()}e&&(clearInterval(w.timer),t.html(""),p(0,e))},30)},p=function(e,t){if(l.elemFile.next("."+x).remove(),u.value="","json"===r.force&&"object"!=typeof t)try{t=JSON.parse(t)}catch(i){return t={},l.msg("Please return JSON data format")}"function"==typeof r.done&&r.done(t,e||0,function(e){l.upload(e)})},d=function(e){r.auto&&(u.value=""),"function"==typeof r.error&&r.error(e||0,function(e){l.upload(e)})},m=r.exts,h=(n=[],layui.each(e||l.chooseFiles,function(e,t){n.push(t.name)}),n),g={preview:function(e){l.preview(e)},upload:function(e,t){var i={};i[e]=t,l.upload(i)},pushFile:function(){return l.files=l.files||{},layui.each(l.chooseFiles,function(e,t){l.files[e]=t}),l.files},resetFile:function(e,t,i){t=new File([t],i);l.files=l.files||{},l.files[e]=t}},v={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[r.accept]||"\u6587\u4ef6",h=0===h.length?u.value.match(/[^\/\\]+\..+/g)||[]||"":h;if(0!==h.length){switch(r.accept){case"file":layui.each(h,function(e,t){if(m&&!RegExp(".\\.("+m+")$","i").test(escape(t)))return i=!0});break;case"video":layui.each(h,function(e,t){if(!RegExp(".\\.("+(m||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(t)))return i=!0});break;case"audio":layui.each(h,function(e,t){if(!RegExp(".\\.("+(m||"mp3|wav|mid")+")$","i").test(escape(t)))return i=!0});break;default:layui.each(h,function(e,t){if(!RegExp(".\\.("+(m||"jpg|png|gif|bmp|jpeg|svg")+")$","i").test(escape(t)))return i=!0})}if(i)return l.msg("\u9009\u62e9\u7684"+v+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),u.value="";if("choose"!==t&&!r.auto||(r.choose&&r.choose(g),"choose"!==t)){if(l.fileLength=(a=0,v=c(),layui.each(v,function(){a++}),a),r.number&&l.fileLength>r.number)return l.msg("\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+r.number+" \u4e2a\u6587\u4ef6
                                      \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+l.fileLength+" \u4e2a\u6587\u4ef6");if(01024*r.size&&(t=1<=(t=r.size/1024)?t.toFixed(2)+"MB":r.size+"KB",u.value="",o=t)}),o)return l.msg("\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!r.before||!1!==r.before(g))F.ie?(9'+e+"")},r=function(){var e=y(this);(e.attr("lay-data")||e.attr("lay-options"))&&(n.config=y.extend({},a,lay.options(this,{attr:e.attr("lay-data")?"lay-data":null})))};a.elem.off("upload.start").on("upload.start",function(){var e=y(this);r.call(this),n.config.item=e,n.elemFile[0].click()}),F.ie&&F.ie<10||a.elem.off("upload.over").on("upload.over",function(){y(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){y(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,t){var i=y(this),t=t.originalEvent.dataTransfer.files||[];i.removeAttr("lay-over"),r.call(this),o(t),a.auto?n.upload():l(t)}),n.elemFile.off("upload.change").on("upload.change",function(){var e=this.files||[];r.call(this),o(e),a.auto?n.upload():l(e)}),a.bindAction.off("upload.action").on("upload.action",function(){n.upload()}),a.elem.data("haveEvents")||(n.elemFile.on("change",function(){y(this).trigger("upload.change")}),a.elem.on("click",function(){n.isFile()||y(this).trigger("upload.start")}),a.drag&&a.elem.on("dragover",function(e){e.preventDefault(),y(this).trigger("upload.over")}).on("dragleave",function(e){y(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),y(this).trigger("upload.drop",e)}),a.bindAction.on("click",function(){y(this).trigger("upload.action")}),a.elem.data("haveEvents",!0))},i.render=function(e){e=new w(e);return function(){var t=this;return{upload:function(e){t.upload.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}}.call(e)},e(n,i)});layui.define(["lay","layer","util"],function(e){"use strict";var b=layui.$,y=layui.layer,d=layui.util,l=layui.hint(),w=(layui.device(),"form"),o=".layui-form",T="layui-this",$="layui-hide",q="layui-disabled",t=function(){this.config={verify:{required:[/[\S]+/,"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"],phone:[/^1\d{10}$/,"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7"],email:[/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"],url:[/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/,"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"],number:function(e){if(isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:[/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"],identity:[/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u8eab\u4efd\u8bc1\u53f7"]},verIncludelRequired:!1,autocomplete:null}},i=(t.prototype.set=function(e){return b.extend(!0,this.config,e),this},t.prototype.verify=function(e){return b.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return b(o+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,w,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=b(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;b(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=b(o+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){e=e||a.find("input,textarea");i.autocomplete&&e.attr("autocomplete",i.autocomplete),a.find("input[lay-affix],textarea[lay-affix]").each(function(){var l=b(this),r=l.attr("lay-affix"),s="layui-input-suffix",o="layui-input-affix",e=l.is("[disabled]")||l.is("[readonly]"),c=function(e,t){(e=b(e))[0]&&e[b.trim(t)?"removeClass":"addClass"]($)},n=function(t){t=b.extend({},u[r]||{value:r},t,lay.options(l[0]));var i=b('
                                      '),e=b(''),a=(i.append(e),t.split&&i.addClass("layui-input-split"),l.next("."+o)),n=(a[0]&&a.remove(),l.next("."+s));n[0]?((a=n.find("."+o))[0]&&a.remove(),n.prepend(i),l.css("padding-right",function(){return(l.closest(".layui-input-group")[0]?0:n.outerWidth())+i.outerWidth()})):(i.addClass(s),l.after(i)),"auto"===t.show&&c(i,l.val()),l.on("input propertychange",function(){var e=this.value;"auto"===t.show&&c(i,e)}),e.on("click",function(){var e=l.attr("lay-filter");b(this).hasClass(q)||("function"==typeof t.click&&t.click.call(this,l,t),layui.event.call(this,w,"input-affix("+e+")",{elem:l[0],affix:r,options:t}))})},u={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),c(b(this).parent(),null)},show:"auto",disabled:e}};n()})},select:function(e){var p,c="\u8bf7\u9009\u62e9",m="layui-form-select",g="layui-select-title",x="layui-select-none",k="",e=e||a.find("select"),C=function(e,t){b(e.target).parent().hasClass(g)&&!t||(b("."+m).removeClass(m+"ed "+m+"up"),p&&k&&p.val(k)),p=null},u=function(a,e,t){var s,r,i,n,o,l,c=b(this),u=a.find("."+g),d=u.find("input"),f=a.find("dl"),h=f.children("dd"),y=f.children("dt"),v=this.selectedIndex;e||(r=c.attr("lay-search"),i=function(){var e=a.offset().top+a.outerHeight()+5-F.scrollTop(),t=f.outerHeight();v=c[0].selectedIndex,a.addClass(m+"ed"),h.removeClass($),y.removeClass($),s=null,h.removeClass(T),0<=v&&h.eq(v).addClass(T),e+t>F.height()&&t<=e&&a.addClass(m+"up"),o()},n=function(e){a.removeClass(m+"ed "+m+"up"),d.blur(),s=null,e||l(d.val(),function(e){var t=c[0].selectedIndex;e&&(k=b(c[0].options[t]).html(),0===t&&k===d.attr("placeholder")&&(k=""),d.val(k||""))})},o=function(){var e,t,i=f.children("dd."+T);i[0]&&(e=i.position().top,t=f.height(),i=i.height(),t\u65e0\u5339\u914d\u9879

                                      '):f.find("."+x).remove()},"keyup"),""===t&&(c.val(""),f.find("."+T).removeClass(T),(c[0].options[0]||{}).value||f.children("dd:eq(0)").addClass(T),f.find("."+x).remove()),o()}).on("blur",function(e){var t=c[0].selectedIndex;p=d,k=b(c[0].options[t]).text(),0===t&&k===d.attr("placeholder")&&(k=""),setTimeout(function(){l(d.val(),function(e){k||d.val("")},"blur")},200)}),h.on("click",function(){var e=b(this),t=e.attr("lay-value"),i=c.attr("lay-filter");return e.hasClass(q)||(e.hasClass("layui-select-tips")?d.val(""):(d.val(e.text()),e.addClass(T)),e.siblings().removeClass(T),c.val(t).removeClass("layui-form-danger"),layui.event.call(this,w,"select("+i+")",{elem:c[0],value:t,othis:a}),n(!0)),!1}),a.find("dl>dt").on("click",function(e){return!1}),b(document).off("click",C).on("click",C))};e.each(function(e,t){var i=b(this),a=i.next("."+m),n=this.disabled,l=t.value,r=b(t.options[t.selectedIndex]),t=t.options[0];if("string"==typeof i.attr("lay-ignore"))return i.show();var s,o="string"==typeof i.attr("lay-search"),t=t&&!t.value&&t.innerHTML||c,r=b(['
                                      ','
                                      ','','
                                      ','
                                      ',(t=i.find("*"),s=[],layui.each(t,function(e,t){var i=t.tagName.toLowerCase();0!==e||t.value||"optgroup"===i?"optgroup"===i?s.push("
                                      "+t.label+"
                                      "):s.push('
                                      '+b.trim(t.innerHTML)+"
                                      "):s.push('
                                      '+b.trim(t.innerHTML||c)+"
                                      ")}),0===s.length&&s.push('
                                      \u6ca1\u6709\u9009\u9879
                                      '),s.join("")+"
                                      "),"
                                      "].join(""));a[0]&&a.remove(),i.after(r),u.call(this,r,n,o)})},checkbox:function(e){var o={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],"switch":["layui-form-switch","layui-form-onswitch","switch"],SUBTRA:"layui-icon-indeterminate"},e=e||a.find("input[type=checkbox]");e.each(function(e,t){var i=b(this),a=i.attr("lay-skin")||"primary",n=d.escape(b.trim(t.title||(t.title=i.attr("lay-text")||""))),l=this.disabled,r=o[a]||o.checkbox,s=i.next("."+r[0]);if(s[0]&&s.remove(),i.next("[lay-checkbox]")[0]&&(n=i.next().html()||""),n="switch"===a?n.split("|"):[n],"string"==typeof i.attr("lay-ignore"))return i.show();l=b(['
                                      ",(s={checkbox:[n[0]?"
                                      "+n[0]+"
                                      ":"primary"===a?"":"
                                      ",''].join(""),"switch":"
                                      "+((t.checked?n[0]:n[1])||"")+"
                                      "})[a]||s.checkbox,"
                                      "].join(""));i.after(l),function(a,n){var l=b(this);a.on("click",function(){var e=b(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+o.SUBTRA).removeClass(o.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],w,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var r="layui-form-radio",s=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=b(this),a=i.next("."+r),n=this.disabled;if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();n=b(['
                                      ','',"
                                      "+(a=d.escape(t.title||""),a=i.next("[lay-radio]")[0]?i.next().html():a)+"
                                      ","
                                      "].join(""));i.after(n),function(a){var n=b(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(o),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=b(this).next("."+r);this.checked=!1,e.removeClass(r+"ed"),e.find(".layui-icon").removeClass(l+" "+s[0]).addClass(s[1])}),n[0].checked=!0,a.addClass(r+"ed"),a.find(".layui-icon").addClass(l+" "+s[0]),layui.event.call(n[0],w,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,n)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?b(e).is(o)?(a=b(e),t()):e.each(function(e,t){var i=b(t);i.closest(o).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u=null,d=this.config,f=d.verify,h="layui-form-danger";return!(e=b(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=b(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=b.trim(s.val());if(s.removeClass(h),layui.each(t,function(e,t){var i="",a=f[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n&&(d.verIncludelRequired||"required"===t||c&&"required"!==t))return"tips"===o?y.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?y.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&y.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(h),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i=b(this),e="string"==typeof e?e:i.attr("lay-filter"),a=this.getFormElem?this.getFormElem(e):i.parents(o).eq(0),n=a.find("*[lay-verify]");if(!r.validate(n))return!1;n=r.getValue(null,a),a={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?a:i.parents("form"))[0],field:n};return"function"==typeof t&&t(a),layui.event.call(this,w,"submit("+e+")",a)}),r=new t,t=b(document),F=b(window);b(function(){r.render()}),t.on("reset",o,function(){var e=b(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",o,i).on("click","*[lay-submit]",i),e(w,r)});layui.define(["lay","laytpl","laypage","form","util"],function(e){"use strict";var p=layui.$,c=layui.lay,m=layui.laytpl,O=layui.laypage,f=layui.layer,v=layui.form,g=layui.util,y=layui.hint(),b=layui.device(),x={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var t=this;return t.config=p.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,T,e,t)}},k=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){x.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=k.that[e];return t||y.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=k.config[e];return t||y.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},w=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content,t=(("escape"in a?a:t).escape&&(i=g.escape(i)),e.text&&a.exportTemplet||a.templet||a.toolbar);return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(p(t).html()||String(i)).render(p.extend({LAY_COL:a},e.tplData))),e.text?p("
                                      "+i+"
                                      ").text():i},T="table",t=".layui-table",N="layui-hide",h="layui-hide-v",L="layui-none",R="layui-table-view",o=".layui-table-header",D=".layui-table-body",_=".layui-table-pageview",A=".layui-table-sort",E="layui-table-edit",W="layui-table-hover",j="laytable-cell-group",H="layui-table-col-special",M="layui-table-tool-panel",S="LAY_TABLE_MOVE_DICT",a=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
                                      ','
                                      ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
                                      ","
                                      "].join("")},i=['',"","
                                      "].join(""),r=[,"{{# if(d.data.toolbar){ }}",'
                                      ','
                                      ','
                                      ',"
                                      ","{{# } }}",'
                                      ',"{{# if(d.data.loading){ }}",'
                                      ','',"
                                      ","{{# } }}","{{# var left, right; }}",'
                                      ',a(),"
                                      ",'
                                      ',i,"
                                      ","{{# if(left){ }}",'
                                      ','
                                      ',a({fixed:!0}),"
                                      ",'
                                      ',i,"
                                      ","
                                      ","{{# }; }}","{{# if(right){ }}",'
                                      ','
                                      ',a({fixed:"right"}),'
                                      ',"
                                      ",'
                                      ',i,"
                                      ","
                                      ","{{# }; }}","
                                      ","{{# if(d.data.totalRow){ }}",'
                                      ','','',"
                                      ","
                                      ","{{# } }}",'
                                      ','
                                      ',"
                                      ",""].join(""),I=p(window),F=p(document),n=function(e){this.index=++x.index,this.config=p.extend({},this.config,x.config,e),this.render()},d=(n.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},n.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=p(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(k.that[i]=t,(k.config[i]=a).request=p.extend({pageName:"page",limitName:"limit"},a.request),a.response=p.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-\d+$/.test(a.height)?(t.fullHeightGap=a.height.split("-")[1],a.height=I.height()-t.fullHeightGap):a.height&&/^#\w+\S*-\d+$/.test(a.height)&&(i=a.height.split("-"),t.parentHeightGap=i.pop(),t.parentDiv=i.join("-"),a.height=p(t.parentDiv).height()-t.parentHeightGap);var l,e=a.elem,i=e.next("."+R),n=t.elem=p("
                                      ");n.addClass((l=[R,R+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr({"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,"lay-id":a.id,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))}).html(m(r,{open:"{{",close:"}}"}).render({data:a,index:t.index})),i[0]&&i.remove(),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(D),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(".layui-table-fixed-r"),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},n.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},n.prototype.setInit=function(e){var l,a,d=this,c=d.config;if(c.clientWidth=c.width||(l=function(e){var t,a=(e=e||c.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return c.clientWidth;c.height=c.maxHeight||c.height,c.css&&-1===c.css.indexOf(R)&&(a=c.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+R+"-"+d.index+" "+t)}),c.css=a.join("}"));var r=function(a,e,i,l){var n,o;l?(l.key=[c.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,d.initOpts(l),(n=a+(parseInt(l.rowspan)||1))
                                      ','
                                      ','
                                      '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=p(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
                                      ')}),this.layTool.find(".layui-table-tool-self").html(l.join(""))},n.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=p('
                                      ');t.pagebar&&((e=p(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},n.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](N),t.colspan2=l,t.hide=l<1,(a=i.data("parentkey"))&&this.setParentCol(e,a))},n.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},n.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+j)).css("width",0),layui.each(e.get().reverse(),function(){var e=p(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){p(this).hasClass(N)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.getCssRule(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"
                                      ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(N),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(h),t.layPage.find(_).addClass(h),x.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth()},n.prototype.page=1,n.prototype.pullData=function(t,a){var e,i,l=this,n=l.config,o=n.request,d=n.response,c=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:a.type})},r=function(e){l.setColsWidth(),"function"==typeof n.done&&n.done(e,t,e[d.countName])};a=a||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),a.renderData?((e={})[d.dataName]=x.cache[l.key],e[d.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[d.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=p.extend({},l.totalRow)),l.renderData({res:e,curr:t,count:e[d.countName],type:a.type}),c(),r(e)):n.url?(i={},n.page&&(i[o.pageName]=t,i[o.limitName]=n.limit),o=p.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(),p.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[d.statusName]!=d.statusCode?l.errorView(e[d.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+d.statusName+'": '+d.statusCode):(l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:t,count:e[d.countName],type:a.type}),c(),n.time=(new Date).getTime()-l.startTime+" ms"),r(e)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=t*n.limit-n.limit,o=n.data.concat(),e[d.dataName]=n.page?o.splice(i,n.limit):o,e[d.countName]=n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=p.extend({},n.totalRow)),l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:t,count:e[d.countName],type:a.type}),c(),r(e))},n.prototype.eachCols=function(e){return x.eachCols(null,e,this.config.cols),this},n.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return y.error(t),{}}},n.prototype.getTrHtml=function(t,a,l,e){var u=this,y=u.config,n=e&&e.trs||[],h=e&&e.trs_fixed||[],f=e&&e.trs_fixed_r||[];return l=l||1,layui.each(t,function(o,d){var i=[],c=[],r=[],s=o+y.limit*(l-1)+1;if("object"!=typeof d){t[o]=d={LAY_KEY:d};try{x.cache[u.key][o]=d}catch(e){}}"array"===layui.type(d)&&0===d.length||(d[x.config.numbersName]=s,a||(d[x.config.indexName]=o),u.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=d[e];n!==undefined&&null!==n||(n=""),l.colGroup||(t=['','
                                      "+function(){var e,t=p.extend(!0,{LAY_COL:l},d),a=x.config.checkName,i=x.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return t[a]&&(u.thisCheckedRowIndex=o),'';case"numbers":return s}return l.toolbar?m(p(l.toolbar).html()||"").render(t):w.call(u,{item3:l,content:n,tplData:t})}(),"
                                      "].join(""),i.push(t),l.fixed&&"right"!==l.fixed&&c.push(t),"right"===l.fixed&&r.push(t))}),n.push(''+i.join("")+""),h.push(''+c.join("")+""),f.push(''+r.join("")+""))}),{trs:n,trs_fixed:h,trs_fixed_r:f}},x.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},n.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,d=t[i.response.dataName]||[],t=t[i.response.totalRowName],c=[],r=[],s=[],u=function(){if(i.HAS_SET_COLS_PATCH||a.setColsPatch(),i.HAS_SET_COLS_PATCH=!0,a.thisCheckedRowIndex="",!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(d,o,l,{trs:c,trs_fixed:r,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+L).remove(),a.layMain.find("tbody").html(c.join("")),a.layFixLeft.find("tbody").html(r.join("")),a.layFixRight.find("tbody").html(s.join("")),a.renderForm(),"number"==typeof a.thisCheckedRowIndex&&a.setRowChecked({type:"radio",index:a.thisCheckedRowIndex},!0),a.syncCheckAll(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,f.close(a.tipsIndex)};return x.cache[a.key]=d,a.layTotal[0==d.length?"addClass":"removeClass"](h),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](N),a.layPage.find(_)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](h),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(N),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(N),void(i.page&&(i.page=p.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,O.render(i.page)))))},x.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},n.prototype.renderTotal=function(e,o){var d,c=this,r=c.config,s={};r.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||c.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),c.dataTotal=[],d=[],c.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&w.call(c,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&c.dataTotal.push({field:t.field,total:p("
                                      "+l+"
                                      ").text()}),['','
                                      "+("string"==typeof(a=t.totalRow||r.totalRow)?m(a).render(p.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
                                      "].join(""));d.push(n)}),e=c.layTotal.find(".layui-table-patch"),c.layTotal.find("tbody").html(""+d.join("")+(e.length?e.get(0).outerHTML:"")+""))},n.prototype.getColElem=function(e,t){this.config;return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},n.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},n.prototype.setRowChecked=function(a,e){var t,i,l=this,n=l.config,o="layui-table-click",d=l.layBody.find("tr"+("all"===a.index?"":'[data-index="'+a.index+'"]'));"all"!==(a=p.extend({type:"checkbox"},a)).index&&d.addClass(o).siblings("tr").removeClass(o),a.selectedStyle||e||(o=x.cache[l.key],t="checked"in a,i=function(e){return"radio"===a.type||(t?a.checked:!e)},layui.each(o,function(e,t){a.index===e||"all"===a.index?t[n.checkName]=i(t[n.checkName]):"radio"===a.type&&delete t[n.checkName]}),(e=d.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[a.type]||"checkbox")+'"]')).prop("checked",i(e.last().prop("checked"))),l.syncCheckAll(),l.renderForm(a.type))},n.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=x.cache[t.key];"string"==typeof(l=l||{}).field&&(d=l.field,t.layHeader.find("th").each(function(e,t){var a=p(this),i=a.data("field");if(i===l.field)return l.field=a,d=i,!1}));try{var d=d||l.field.data("field"),c=l.field.data("key");if(t.sortKey&&!l.pull&&d===t.sortKey.field&&l.type===t.sortKey.sort)return;var r=t.layHeader.find("th .laytable-cell-"+c).find(A);t.layHeader.find("th").find(A).removeAttr("lay-sort"),r.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){y.error("Table modules: sort field '"+d+"' not matched")}t.sortKey={field:d,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,d,null,!0):"desc"===l.type?e=layui.sort(o,d,!0,!0):(e=layui.sort(o,x.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:d,type:l.type},layui.event.call(l.field,T,"sort("+n+")",p.extend({config:i},i.initSort)))},n.prototype.loading=function(e){var t=this;t.config.loading&&(e?(t.layInit&&t.layInit.remove(),delete t.layInit,t.layBox.find(".layui-table-init").remove()):(t.layInit=p(['
                                      ','',"
                                      "].join("")),t.layBox.append(t.layInit)))},n.prototype.setCheckData=function(a,i,l){var n=this.config,e=x.cache[this.key];e[a]&&"array"!==layui.type(e[a])&&layui.each(e,function(e,t){a===e?t[n.checkName]=i:l&&delete t[n.checkName]})},n.prototype.syncCheckAll=function(){var e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),a=function(a){return e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),a};t[0]&&(x.checkStatus(e.key).isAll?(t[0].checked||(t.prop("checked",!0),e.renderForm("checkbox")),a(!0)):(t[0].checked&&(t.prop("checked",!1),e.renderForm("checkbox")),a(!1)))},n.prototype.getCssRule=function(a,i){var e=this.elem.find("style")[0],e=e.sheet||e.styleSheet||{},e=e.cssRules||e.rules;layui.each(e,function(e,t){if(t.selectorText===".laytable-cell-"+a)return i(t),!0})},n.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=I.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap&&(l=p(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135),1
                                      ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(D).css("height",t.height()>=n?n:"auto"),e.layFixRight[x.cache[e.key]&&x.cache[e.key].length&&0');a.html(t),u.height&&a.css("max-height",u.height-(s.layTool.outerHeight()||50)),i.find("."+M)[0]||i.append(a),s.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),f.close(s.tipsIndex),t){case"LAYTABLE_COLS":l({list:(a=[],s.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
                                    • "+(t.fieldTitle||t.title||t.field)+"
                                    • ").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=p(e.elem),t=this.checked,a=e.data("key"),i=s.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,s.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](N),l!=i.hide&&s.setParentCol(!t,e),s.resize(),layui.event.call(this,T,"colToggled("+c+")",{col:i,config:u}))})}});break;case"LAYTABLE_EXPORT":b.ie?f.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):l({list:['
                                    • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
                                    • ','
                                    • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
                                    • '].join(""),done:function(e,t){t.on("click",function(){var e=p(this).data("type");x.exportFile.call(s,u.id,null,e)})}});break;case"LAYTABLE_PRINT":var n=window.open("about:blank","_blank"),o=[""].join(""),d=p(s.layHeader.html());d.append(s.layMain.find("table").html()),d.append(s.layTotal.find("table").html()),d.find("th.layui-table-patch").remove(),d.find("thead>tr>th."+H).filter(function(e,t){return!p(t).children("."+j).length}).remove(),d.find("tbody>tr>td."+H).remove(),n.document.write(o+d.prop("outerHTML")),n.document.close(),layui.device("edg").edg?(n.onafterprint=n.close,n.print()):(n.print(),n.close())}layui.event.call(this,T,"toolbar("+c+")",p.extend({event:t,config:u},{}))}),s.layPagebar.on("click","*[lay-event]",function(e){var t=p(this).attr("lay-event");layui.event.call(this,T,"pagebar("+c+")",p.extend({event:t,config:u},{}))}),e.on("mousemove",function(e){var t=p(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||k.eventMoveElem||(d.allowResize=t.width()-e<=10,o.css("cursor",d.allowResize?"col-resize":""))}).on("mouseleave",function(){p(this);k.eventMoveElem||o.css("cursor","")}).on("mousedown",function(e){var t,a=p(this);d.allowResize&&(t=a.data("key"),e.preventDefault(),d.offset=[e.clientX,e.clientY],s.getCssRule(t,function(e){var t=e.style.width||a.outerWidth();d.rule=e,d.ruleWidth=parseFloat(t),d.minWidth=a.data("minwidth")||u.cellMinWidth,d.maxWidth=a.data("maxwidth")||u.cellMaxWidth}),a.data(S,d),k.eventMoveElem=a)}),k.docEvent||F.on("mousemove",function(e){var t,a;k.eventMoveElem&&(t=k.eventMoveElem.data(S)||{},k.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule&&(e=t.ruleWidth+e.clientX-t.offset[0],a=k.eventMoveElem.closest("."+R).attr("lay-id"),(a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(k.eventMoveElem),f.close(s.tipsIndex))))}).on("mouseup",function(e){var t,a,i,l,n;k.eventMoveElem&&(i=(t=k.eventMoveElem).closest("."+R).attr("lay-id"),(a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),d={},o.css("cursor",""),a.scrollPatch(),t.removeData(S),delete k.eventMoveElem,a.getCssRule(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],T,"colResized("+n+")",{col:l,config:a.config})})))}),k.docEvent=!0,e.on("click",function(e){var t=p(this),a=t.find(A),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");s.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(A+" .layui-edge ").on("click",function(e){var t=p(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?s.sort({field:t,type:"asc",fromEvent:!0}):s.sort({field:t,type:"desc",fromEvent:!0})}),s.commonMember=function(e){var t=p(this).parents("tr").eq(0).data("index"),c=s.layBody.find('tr[data-index="'+t+'"]'),r=(r=x.cache[s.key]||[])[t]||{},a={tr:c,config:u,data:x.clearCacheKey(r),index:t,del:function(){x.cache[s.key][t]=[],c.remove(),s.scrollPatch()},update:function(e,d){e=e||{},layui.each(e,function(i,l){var n=c.children('td[data-field="'+i+'"]'),o=n.children(y);r[i]=a.data[i]=l,s.eachCols(function(e,t){var a;t.field==i?(o.html(w.call(s,{item3:t,content:l,tplData:p.extend({LAY_COL:t},r)})),n.data("content",l)):d&&(t.templet||t.toolbar)&&(e=c.children('td[data-field="'+(t.field||e)+'"]'),a=r[t.field],e.children(y).html(w.call(s,{item3:t,content:a,tplData:p.extend({LAY_COL:t},r)})),e.data("content",a))})}),s.renderForm()},setRowChecked:function(e){s.setRowChecked(p.extend({index:t},e))}};return p.extend(a,e)}),i=(s.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=p(this),a=t.closest("td"),t=t.prev(),i=s.layBody.find('input[name="layTableCheckbox"]'),l=t.parents("tr").eq(0).data("index"),n=t[0].checked,o="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(o?(i.each(function(e,t){t.checked=n,s.setCheckData(e,n)}),s.syncCheckAll(),s.renderForm("checkbox")):(s.setCheckData(l,n),s.syncCheckAll(),layui.stope(e)),layui.event.call(t[0],T,"checkbox("+c+")",r.call(t[0],{checked:n,type:o?"all":"one",getCol:function(){return s.col(a.data("key"))}})))}),s.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=p(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;s.setCheckData(l,i,"radio"),s.setRowChecked({type:"radio",index:l},!0),layui.event.call(t[0],T,"radio("+c+")",r.call(t[0],{checked:i,getCol:function(){return s.col(a.data("key"))}}))}),s.layBody.on("mouseenter","tr",function(){var e=p(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").addClass(W)}).on("mouseleave","tr",function(){var e=p(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").removeClass(W)}).on("click","tr",function(e){var t=".layui-form-checkbox,.layui-form-radio,[lay-unrow]",a=p(this).find(t);p(e.target).is(t)||a[0]&&p.contains(a[0],e.target)||i.call(this,"row")}).on("dblclick","tr",function(){i.call(this,"rowDouble")}).on("contextmenu","tr",function(e){u.defaultContextmenu||e.preventDefault(),i.call(this,"rowContextmenu")}),function(e){var t=p(this);t.data("off")||layui.event.call(this,T,e+"("+c+")",r.call(t.children("td")[0]))}),n=function(e,t){var a,i,l,n;(e=p(e)).data("off")||(a=e.data("field"),n=e.data("key"),n=s.col(n),i=e.closest("tr").data("index"),i=x.cache[s.key][i],l=e.children(y),(n="function"==typeof n.edit?n.edit(i):n.edit)&&((n=p("textarea"===n?'':''))[0].value=e.data("content")||i[a]||l.text(),e.find("."+E)[0]||e.append(n),n.focus(),t&&layui.stope(t)))},l=(s.layBody.on("change","."+E,function(){var e=p(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=x.cache[s.key][e],l=r.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return s.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],T,"edit("+c+")",l)}).on("blur","."+E,function(){p(this).remove()}),s.layBody.on(u.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),s.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=p(this),a=t.children(y);t.data("off")||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.outerWidth()||0
                                      '))},a=function(e){var t=p(this).parent().children(y);s.tipsIndex=f.tips(['
                                      ',t.html(),"
                                      ",''].join(""),t[0],{tips:[3,""],time:-1,anim:-1,maxWidth:b.ios||b.android?300:s.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){f.close(t)})}}),layui.stope(e)},h=(s.layBody.on("click","."+l,function(e){a.call(this,e)}),s.layTotal.on("click","."+l,function(e){a.call(this,e)}),function(e){var t=p(this),a=t.closest("td"),i=t.parents("tr").eq(0).data("index");layui.event.call(this,T,(e||"tool")+"("+c+")",r.call(this,{event:t.attr("lay-event"),getCol:function(){return s.col(a.data("key"))}})),s.setRowChecked({type:"radio",index:i},!0)});s.layBody.on("click","*[lay-event]",function(e){h.call(this),layui.stope(e)}).on("dblclick","*[lay-event]",function(e){h.call(this,"toolDouble"),layui.stope(e)}),s.layMain.on("scroll",function(){var e=p(this),t=e.scrollLeft(),e=e.scrollTop();s.layHeader.scrollLeft(t),s.layTotal.scrollLeft(t),s.layFixed.find(D).scrollTop(e),f.close(s.tipsIndex)}),I.on("resize",function(){s.resize()})},F.on("click",function(){F.trigger("table.remove.tool.panel")}),F.on("table.remove.tool.panel",function(){p("."+M).remove()}),x.init=function(i,o){o=o||{};var e="object"==typeof i?i:p("string"==typeof i?'table[lay-filter="'+i+'"]':t+"[lay-data], "+t+"[lay-options]"),d="Table element property lay-data configuration item has a syntax error: ";return e.each(function(){var l,e=p(this),t=e.attr("lay-data"),t=c.options(this,{attr:t?"lay-data":null,errorText:d+(t||e.attr("lay-options"))}),n=p.extend({elem:this,cols:[],data:[],skin:e.attr("lay-skin"),size:e.attr("lay-size"),even:"string"==typeof e.attr("lay-even")},x.config,o,t),a=(i&&e.hide(),e.find("thead>tr").each(function(i){n.cols[i]=[],p(this).children().each(function(e){var t=p(this),a=t.attr("lay-data"),a=c.options(this,{attr:a?"lay-data":null,errorText:d+(a||t.attr("lay-options"))}),t=p.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||0,rowspan:parseInt(t.attr("rowspan"))||0},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=x.render(n);!a.length||o.data||t.config.url||(l=0,x.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=p(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},k.that={},k.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),d(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')))}),d.push(n.join(","))}),r&&layui.each(r.dataTotal,function(e,t){c[t.field]||i.push(t.total+"\t")}),o.join(",")+"\r\n"+d.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},x.getOptions=l,x.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](N),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](N),n.setParentCol(i,t)))})})),p("."+M).remove(),n.resize())},x.reload=function(e,t,a,i){if(l(e))return e=C(e),e.reload(t,a,i),k.call(e)},x.reloadData=function(){var a=p.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","totalRow","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),x.reload.apply(null,a)},x.render=function(e){e=new n(e);return k.call(e)},x.clearCacheKey=function(e){return delete(e=p.extend({},e))[x.config.checkName],delete e[x.config.indexName],delete e[x.config.numbersName],delete e[x.config.disabledName],e},p(function(){x.init()}),e(T,x)});layui.define(["table"],function(e){"use strict";var B=layui.$,x=layui.form,j=layui.table,y=layui.hint(),P={config:{},on:j.on,eachCols:j.eachCols,index:j.index,set:function(e){var t=this;return t.config=B.extend({},t.config,e),t},resize:j.resize,getOptions:j.getOptions,hideCol:j.hideCol,renderData:j.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){P.reloadData(n,e,t)}}},F=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},q="layui-hide",L=".layui-table-main",Y=".layui-table-fixed-l",R=".layui-table-fixed-r",h="layui-table-tree",H="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",f="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",X="LAY_EXPAND",z="LAY_HAS_EXPANDED",V="LAY_ASYNC_STATUS",t=function(e){var t=this;t.index=++P.index,t.config=B.extend(!0,{},t.config,P.config,e),t.init(),t.render()},u=function(n,i,e){var l=j.cache[n];layui.each(e||l,function(e,t){var a=t[H];-1!==a.indexOf("-")&&(l[a]=t),t[i]&&u(n,i,t[i])})},l=function(i,a,e){var l=F(i),t=("reloadData"!==e&&(l.status={expand:{}}),B.extend(!0,{},l.getOptions(),a)),n=t.tree,r=n.customName.children,d=n.customName.id,o=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,j.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},t.cols),a.parseData),c=a.done;t.url?e&&(!o||o.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(o)&&(a=o.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=l.flatToTree(a[t])),s(a[t],function(e){e[X]=X in e?e[X]:e[d]!==undefined&&l.status.expand[e[d]]},r),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),l.initData(a[t]),a},a.parseData.mod=!0):(a.data=a.data||[],n.data.isSimpleData&&(a.data=l.flatToTree(a.data)),a.initSort&&a.initSort.type&&layui.sort(a.data,a.initSort.field,"desc"===a.initSort.type,!0),l.initData(a.data)),e&&(!c||c.mod)||(a.done=function(){var e,t=arguments,a=this.elem.next(),n=(l.updateStatus(null,{LAY_HAS_EXPANDED:!1}),u(i,r),a.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(n.length&&(e=P.checkStatus(i),n.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),l.renderTreeTable(a),"function"===layui.type(c))return c.apply(this,t)},a.done.mod=!0)};t.prototype.init=function(){var e=this.config,t=j.render(B.extend({},e,{data:[],url:"",done:null})),a=t.config.id;(i.that[a]=this).tableIns=t,l(a,e)},t.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0},data:{isSimpleData:!1,rootPid:null},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},t.prototype.getOptions=function(){return this.tableIns?j.getOptions(this.tableIns.config.id):this.config},t.prototype.flatToTree=function(e){var a,n,i,t,l,r,d,o=this.getOptions(),c=o.tree,u=c.customName,o=o.id;return e=e||j.cache[o],o=e,a=u.id,n=u.pid,i=u.children,t=c.data.rootPid,a=a||"id",n=n||"parentId",i=i||"children",d={},layui.each(o,function(e,t){l=a+t[a],d[l]=B.extend({},t),d[l][i]=[]}),layui.each(d,function(e,t){(r=a+t[n])&&d[r]&&d[r][i].push(t)}),Object.values(d).filter(function(e){return t?e[n]===t:!e[n]})},t.prototype.treeToFlat=function(e,n,i){var l=this,r=l.getOptions().tree.customName,d=r.children,o=r.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=B.extend({},t);a[d]=null,a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[d],t[r.id],e))}),c},t.prototype.getTreeNode=function(e){var t=this;if(!e)return y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e");var a=t.getOptions(),n=a.tree;a.id,n.customName;return{data:e,dataIndex:e[H],getParentNode:function(){return t.getNodeByIndex(e[f])}}},t.prototype.getNodeByIndex=function(t){var e=this,a=e.getNodeDataByIndex(t);if(!a)return y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e");var n=e.getOptions(),i=(n.tree.customName.parent,n.id),n={data:a,dataIndex:a[H],getParentNode:function(){return e.getNodeByIndex(a[f])},update:function(e){return P.updateNode(i,t,e)},remove:function(){return P.removeNode(i,t)},expand:function(e){return P.expandNode(i,B.extend({},e,{index:t}))},setChecked:function(e){return P.setRowChecked(i,B.extend({},e,{index:t}))}};return n.dataIndex=t,n},t.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=P.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[H],!0}),i)return this.getNodeByIndex(i)},t.prototype.getNodeDataByIndex=function(a,e,t){var n=this.getOptions(),i=n.tree,l=n.id,r=j.cache[l][a];if("delete"!==t&&r)return B.extend(r,t),e?B.extend({},r):r;for(var r=this.getTableData(),d=(a+="").split("-"),o=r,c=n.url||1
                                      ');var D=function(e){y[V]="success",y[f.children]=e,c.initData(y[f.children],y[H]),J(t,!0,!p&&n,i,l)},T=b.format;if("function"===layui.type(T))return T(y,o,D),h;var _=B.extend({},b.where||o.where),T=b.autoParam,T=(layui.each(T,function(e,t){t=t.split("=");_[t[0].trim()]=y[(t[1]||t[0]).trim()]}),b.contentType||o.contentType),k=(T&&0==T.indexOf("application/json")&&(_=JSON.stringify(_)),b.method||o.method),S=b.dataType||o.dataType,O=b.jsonpCallback||o.jsonpCallback,w=b.headers||o.headers,A=b.parseData||o.parseData,E=b.response||o.response;return B.ajax({type:k||"get",url:C,contentType:T,data:_,dataType:S||"json",jsonpCallback:O,headers:w||{},success:function(e){(e="function"==typeof A?A.call(o,e)||e:e)[E.statusName]!=E.statusCode?(y[V]="error",g.html('')):D(e[E.dataName])},error:function(e,t){y[V]="error","function"==typeof o.error&&o.error(e,t)}}),h}m=y[z]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((b=o.initSort).type?layui.sort(v,b.field,"desc"===b.type,!0):layui.sort(v,j.config.indexName,null,!0)),c.initData(y[f.children],y[H]),k=j.getTrHtml(d,v,null,null,e),N={trs:B(k.trs.join("")),trs_fixed:B(k.trs_fixed.join("")),trs_fixed_r:B(k.trs_fixed_r.join(""))},I=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){N.trs.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":I}),N.trs_fixed.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":I}),N.trs_fixed_r.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":I})}),r.find(L).find('tbody tr[lay-data-index="'+e+'"]').after(N.trs),r.find(Y).find('tbody tr[lay-data-index="'+e+'"]').after(N.trs_fixed),r.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(N.trs_fixed_r),c.renderTreeTable(N.trs,I),n&&!p&&layui.each(v,function(e,t){J({dataIndex:t[H],trElem:r.find('tr[lay-data-index="'+t[H]+'"]').first(),tableViewElem:r,tableId:d,options:o},a,n,i,l)}))}else n&&!p?(layui.each(v,function(e,t){J({dataIndex:t[H],trElem:r.find('tr[lay-data-index="'+t[H]+'"]').first(),tableViewElem:r,tableId:d,options:o},a,n,i,l)}),r.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")).addClass(q)):(C=c.treeToFlat(v,y[f.id],e),r.find(C.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")).addClass(q));return U("resize-"+d,function(){P.resize(d)},0)(),l&&"loading"!==y[V]&&(T=u.callback.onExpand,"function"===layui.type(T)&&T(d,y,x)),h},g=(P.expandNode=function(e,t){var a,n,i,e=F(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),J({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},P.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=F(a);if(t){var n=t.getOptions(),i=n.tree,l=n.elem.next(),r=i.customName.isParent,d=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=P.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[r]&&!t[V])return!(c=!1)}),!c)return void layui.each(P.getData(a),function(e,t){P.expandNode(a,{index:t[H],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[r]&&!t[z])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[r]||o)&&(e[X]=!0,e[d]!==undefined&&(t.status.expand[e[d]]=!0))}),l.find('tbody tr[data-level!="0"]').removeClass(q),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[r]||o)&&(e[X]=!0,e[z]=!0,e[d]!==undefined&&(t.status.expand[e[d]]=!0))}),n.initSort&&n.initSort.type&&(!n.url||n.autoSort))return P.sort(a);var f,n=j.getTrHtml(a,e),s={trs:B(n.trs.join("")),trs_fixed:B(n.trs_fixed.join("")),trs_fixed_r:B(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[H].split("-").length-1;f={"data-index":t[H],"lay-data-index":t[H],"data-level":a},s.trs.eq(e).attr(f),s.trs_fixed.eq(e).attr(f),s.trs_fixed_r.eq(e).attr(f)}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(s[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[r]||o)&&(e[X]=!1,e[d]!==undefined&&(t.status.expand[e[d]]=!1))}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(q),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);P.resize(a)}},t.prototype.renderTreeTable=function(e,t,a){var n=this,i=n.getOptions(),l=i.elem.next(),r=(l.hasClass(h)||l.addClass(h),i.id),d=i.tree||{},o=(d.data,d.view||{}),c=d.customName||{},u=c.isParent,f=(l.attr("lay-filter"),n),s=((t=t||0)||(l.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(j.cache[r],function(e,t){l.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[H]),l.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[H]),l.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[H])})),null),y=c.name,p=o.indent||14;layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=B(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=l.find('tr[lay-data-index="'+n+'"]'),(a=f.getNodeDataByIndex(n))[X]&&a[u]&&((s=s||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
                                      ',a[X]?o.flexIconOpen:o.flexIconClose,"
                                      ",o.showIcon?'
                                      '+(a[c.icon]||o.icon||(a[u]?a[X]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
                                      ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),J({trElem:i},null,null,null,!0)}))}),!1!==a&&s?layui.each(s,function(e,t){e=l.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),J({trElem:e.first()},!0)}):U("renderTreeTable-"+r,function(){i.hasNumberCol&&g(n),x.render(B('.layui-table-tree[lay-id="'+r+'"]'))},0)()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),r=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(j.cache[e.id]),function(e,t){a.getNodeDataByIndex(t[H]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),r.eq(e).find(".laytable-cell-numbers").html(n)})}),s=(t.prototype.render=function(e){var t=this;t.tableIns=j["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,B.extend(!0,{},t.config)),t.config=t.tableIns.config},t.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),l(n.config.id,e,a||!0),n.config=B.extend(t,{},n.config,e),n.render(a)},P.reloadData=function(){var e=B.extend(!0,[],arguments);return e[3]="reloadData",P.reload.apply(null,e)},function(e,a,n){var i=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):B.extend(t,a),i.push(B.extend({},t)),i=i.concat(s(t[n],a,n))}),i}),r=(t.prototype.updateStatus=function(e,t){var a=this.getOptions(),n=a.tree;return e=e||j.cache[a.id],s(e,t,n.customName.children)},t.prototype.getTableData=function(){var e=this.getOptions();return e.url?j.cache[e.id]:e.data},P.updateStatus=function(e,t,a){var e=F(e),n=e.getOptions();return a=a||(n.url?j.cache[n.id]:n.data),e.updateStatus(a,t)},P.sort=function(e){var t,a,n,i,l=F(e);l&&(a=(t=l.getOptions()).initSort,t.url?t.autoSort&&(n=l.initData(),(i={})[t.response.dataName]=n,"function"==typeof t.done&&t.done(i,l.page,l.count)):(a.type?layui.sort(t.data,a.field,"desc"===a.type,!0):layui.sort(t.data,j.config.indexName,null,!0),l.initData(t.data),P.reloadData(e)))},function(n){var t=n.config.id,i=F(t),a=n.data=P.getNodeDataByIndex(t,n.index),l=a[H],r=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(B.extend(i.getNodeDataByIndex(l),e[0]),r.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){P.removeNode(t,a)},n.setRowChecked=function(e){P.setRowChecked(t,{index:a,checked:e})}}),o=(P.updateNode=function(e,a,t){var n,i,l,r,d,o=F(e);o&&((r=o.getOptions()).tree,r=(n=r.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=r.attr("data-index"),l=r.attr("data-level"),t&&(r=o.getNodeDataByIndex(a,!1,t),d=j.getTrHtml(e,[r]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(B(d[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l)))},P.removeNode=function(e,t){var a,n,i,l,r,d=F(e);d&&(r=(a=d.getOptions()).tree,n=a.elem.next(),i=[],t=d.getNodeDataByIndex("string"===layui.type(t)?t:t[H],!1,"delete"),l=d.getNodeDataByIndex(t[f]),d.updateCheckStatus(l),l=d.treeToFlat([t],t[r.customName.pid],t[f]),layui.each(l,function(e,t){i.push('tr[lay-data-index="'+t[H]+'"]')}),n.find(i.join(",")).remove(),r=d.initData(),layui.each(d.treeToFlat(r),function(e,t){t[m]&&t[m]!==t[H]&&n.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[H],"lay-data-index":t[H]})}),layui.each(j.cache[e],function(e,t){n.find('tr[data-level="0"][lay-data-index="'+t[H]+'"]').attr("data-index",e)}),a.hasNumberCol&&g(d))},P.addNodes=function(e,t){var a=F(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),r=(t=t||{}).parentIndex,d=t.index,o=t.data,t=t.focus,c=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,d="number"===layui.type(d)?d:-1,o=B.extend(!0,[],layui.isArray(o)?o:[o]);a.getTableData();if(c){var u=i.customName.isParent,f=i.customName.children;c[u]=!0;var s=(s=c[f])?(y=s.splice(-1===d?s.length:d),c[f]=s.concat(o,y)):c[f]=o,f=(a.updateStatus(s,function(e){(e[u]||i.view.showFlexIconIfNotParent)&&(e[z]=!1)}),a.treeToFlat(s));l.find(f.map(function(e){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")).remove(),a.initData(),c[z]=!1,c[V]="local",J({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var y=j.cache[e].splice(-1===d?j.cache[e].length:d);if(j.cache[e]=j.cache[e].concat(o,y),n.url||(n.page?(s=n.page,n.data.splice.apply(n.data,[s.limit*(s.curr-1),s.limit].concat(j.cache[e]))):n.data=j.cache[e]),a.initData(),l.find(".layui-none").length)return j.renderData(e),o;var p,f=j.getTrHtml(e,o),x={trs:B(f.trs.join("")),trs_fixed:B(f.trs_fixed.join("")),trs_fixed_r:B(f.trs_fixed_r.join(""))},r=(layui.each(o,function(e,t){p={"data-index":t[H],"lay-data-index":t[H],"data-level":"0"},x.trs.eq(e).attr(p),x.trs_fixed.eq(e).attr(p),x.trs_fixed_r.eq(e).attr(p)}),parseInt(o[0][H])-1),s=l.find(L),n=l.find(Y),f=l.find(R);-1==r?(s.find('tr[data-level="0"][data-index="0"]').before(x.trs),n.find('tr[data-level="0"][data-index="0"]').before(x.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(x.trs_fixed_r)):-1===d?(s.find("tbody").append(x.trs),n.find("tbody").append(x.trs_fixed),f.find("tbody").append(x.trs_fixed_r)):(r=y[0][m],s.find('tr[data-level="0"][data-index="'+r+'"]').before(x.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(x.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(x.trs_fixed_r)),layui.each(j.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[H]+'"]').attr("data-index",e)}),a.renderTreeTable(l.find(o.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")))}return a.updateCheckStatus(c),P.resize(e),t&&l.find(L).find('tr[lay-data-index="'+o[0][H]+'"]').get(0).scrollIntoViewIfNeeded(),o}},P.checkStatus=function(e,n){var i,t,a;if(F(e))return i=j.config.checkName,t=P.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each(j.cache[e],function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},P.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&P.sort(e)}),P.on("row",function(e){e.config.elem.next().hasClass(h)&&r(e)}),P.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(r(e),(t.tree||{}).view.dblClickExpand&&J({trElem:e.tr.first()},null,null,null,!0))}),P.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&r(e)}),P.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&r(e)}),P.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(r(e),e.field===t.tree.customName.name&&((a={})[e.field]=e.value,e.update(a)))}),P.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=F(t),r(e),o.call(a,e.tr,e.checked))}),t.prototype.updateCheckStatus=function(e,t){var a=this.getOptions(),n=(a.tree,a.id),i=a.elem.next(),l=j.config.checkName,r=(e&&(a=this.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(a,function(e,t){x.render(i.find('tr[lay-data-index="'+t[H]+'"] input[name="layTableCheckbox"]:not(:disabled)').prop({checked:t[l],indeterminate:t[b]}))})),!0),d=!1;return layui.each(j.cache[n],function(e,t){(t[l]||t[b])&&(d=!0),t[l]||(r=!1)}),d=d&&!r,x.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:d})),r},t.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=j.config.checkName,t=t.customName.children,r=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0
                                      ')),a=(e.tree(n),i.elem=u(i.elem));if(a[0]){if(e.key=i.id||e.index,e.elem=n,e.elemNone=u('
                                      '+i.text.none+"
                                      "),a.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=u(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(N),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(N)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(l,e){var r=this,c=r.config,e=e||c.data;layui.each(e,function(e,i){var n=i.children&&0
                                      "),t=u(['
                                      ','
                                      ','
                                      ',c.showLine?n?'':'':'',c.showCheckbox?'':"",c.isJump&&i.href?''+(i.title||i.label||c.text.defaultNodeName)+"":''+(i.title||i.label||c.text.defaultNodeName)+"","
                                      ",function(){if(!c.edit)return"";var n={add:'',update:'',del:''},a=['
                                      '];return!0===c.edit&&(c.edit=["update","del"]),"object"==typeof c.edit?(layui.each(c.edit,function(e,i){a.push(n[i]||"")}),a.join("")+"
                                      "):void 0}(),"
                                      "].join(""));n&&(t.append(a),r.tree(a,i.children)),l.append(t),t.prev("."+f)[0]&&t.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),n||t.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),r.spread(t,i),c.showCheckbox&&(i.checked&&r.checkids.push(i.id),r.checkClick(t,i)),c.edit&&r.operate(t,i)})},l.prototype.spread=function(a,e){var t=this.config,i=a.children("."+m),n=i.children("."+x),l=i.find("."+C),i=i.find("."+b),r=t.onlyIconControl?l:n,c="";r.on("click",function(e){var i=a.children("."+g),n=(r.children(".layui-icon")[0]?r:r.find(".layui-tree-icon")).children(".layui-icon");i[0]?a.hasClass(w)?(a.removeClass(w),i.slideUp(200),n.removeClass(v).addClass(k)):(a.addClass(w),i.slideDown(200),n.addClass(v).removeClass(k),t.accordion&&((i=a.siblings("."+f)).removeClass(w),i.children("."+g).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(v).addClass(k))):c="normal"}),i.on("click",function(){u(this).hasClass(d)||(c=a.hasClass(w)?t.onlyIconControl?"open":"close":t.onlyIconControl?"close":"open",t.click&&t.click({elem:a,state:c,data:e}))})},l.prototype.setCheckbox=function(e,i,n){this.config;var t,l=n.prop("checked");n.prop("disabled")||("object"!=typeof i.children&&!e.find("."+g)[0]||e.find("."+g).find('input[same="layuiTreeCheck"]').each(function(){this.disabled||(this.checked=l)}),(t=function(e){var i,n,a;e.parents("."+f)[0]&&(n=(e=e.parent("."+g)).parent(),a=e.prev().find('input[same="layuiTreeCheck"]'),l?a.prop("checked",l):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||a.prop("checked",!1)),t(n))})(e),this.renderForm("checkbox"))},l.prototype.checkClick=function(n,a){var t=this,l=t.config;n.children("."+m).children("."+x).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=u(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(n,a,e),l.oncheck&&l.oncheck({elem:n,checked:i,data:a}))})},l.prototype.operate=function(c,d){var s=this,o=s.config,e=c.children("."+m),h=e.children("."+x);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=u(this).data("type"),a=c.children("."+g),t={data:d,type:e,elem:c};if("add"==e){a[0]||(o.showLine?(h.find("."+C).addClass("layui-tree-icon"),h.find("."+C).children(".layui-icon").addClass(k).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(y),c.append('
                                      '));var n,l=o.operate&&o.operate(t),r={};if(r.title=o.text.defaultNodeName,r.id=l,s.tree(c.children("."+g),[r]),o.showLine&&(a[0]?(a.hasClass(L)||a.addClass(L),c.find("."+g).each(function(){u(this).children("."+f).last().addClass(N)}),(a.children("."+f).last().prev().hasClass(N)?a.children("."+f).last().prev():a.children("."+f).last()).removeClass(N),!c.parent("."+g)[0]&&c.next()[0]&&a.children("."+f).last().removeClass(N)):(l=c.siblings("."+f),n=1,r=c.parent("."+g),layui.each(l,function(e,i){u(i).children("."+g)[0]||(n=0)}),1==n?(l.children("."+g).addClass(T),l.children("."+g).children("."+f).removeClass(N),c.children("."+g).addClass(T),r.removeClass(L),r.children("."+f).last().children("."+g).children("."+f).last().addClass(N)):c.children("."+g).children("."+f).addClass(N))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(c.children("."+g).children("."+f).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+b).html(),h.children("."+b).html(""),h.append(''),h.children(".layui-tree-editInput").val(l).focus(),i=function(e){var i=(i=e.val().trim())||o.text.defaultNodeName;e.remove(),h.children("."+b).html(i),t.data.title=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(u(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(u(this)))})):p.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d.title||"")+'" \u5417\uff1f',function(e){if(o.operate&&o.operate(t),t.status="remove",p.close(e),!c.prev("."+f)[0]&&!c.next("."+f)[0]&&!c.parent("."+g)[0])return c.remove(),void s.elem.append(s.elemNone);var l,n,i;c.siblings("."+f).children("."+m)[0]?(o.showCheckbox&&(l=function(e){var i,n,a,t;e.parents("."+f)[0]&&(i=e.siblings("."+f).children("."+m),n=(e=e.parent("."+g).prev()).find('input[same="layuiTreeCheck"]')[0],a=1,(t=0)==n.checked&&(i.each(function(e,i){i=u(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(a=0),i.disabled||(t=1)}),1==a&&1==t&&(n.checked=!0,s.renderForm("checkbox"),l(e.parent("."+f)))))})(c),o.showLine&&(e=c.siblings("."+f),n=1,i=c.parent("."+g),layui.each(e,function(e,i){u(i).children("."+g)[0]||(n=0)}),1==n?(a[0]||(i.removeClass(L),e.children("."+g).addClass(T),e.children("."+g).children("."+f).removeClass(N)),(c.next()[0]?i.children("."+f).last():c.prev()).children("."+g).children("."+f).last().addClass(N),c.next()[0]||c.parents("."+f)[1]||c.parents("."+f).eq(0).next()[0]||c.prev("."+f).addClass(N)):!c.next()[0]&&c.hasClass(N)&&c.prev().addClass(N))):(e=c.parent("."+g).prev(),o.showLine?(e.find("."+C).removeClass("layui-tree-icon"),e.find("."+C).children(".layui-icon").removeClass(v).addClass("layui-icon-file"),(i=e.parents("."+g).eq(0)).addClass(L),i.children("."+f).each(function(){u(this).children("."+g).children("."+f).last().addClass(N)})):e.find(".layui-tree-iconArrow").addClass(y),c.parents("."+f).eq(0).removeClass(w),c.parent("."+g).remove()),c.remove()})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=u(this),n=e.val(),e=e.nextAll(),a=[];e.find("."+b).each(function(){var i,e=u(this).parents("."+m);-1!=u(this).html().indexOf(n)&&(a.push(u(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+g)[0]&&i(e.parent("."+g).parent("."+f))})(e.parent("."+f)))}),e.find("."+m).each(function(){var e=u(this).parent("."+f);e.hasClass("layui-tree-searchShow")||e.addClass(y)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:a})}),i.elem.find(".layui-tree-search").on("keydown",function(){u(this).nextAll().find("."+m).each(function(){u(this).parent("."+f).removeClass("layui-tree-searchShow "+y)}),u(".layui-tree-emptyText")[0]&&u(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var e=this.config,i=[],n=[],t=(this.elem.find(".layui-form-checked").each(function(){i.push(u(this).prev()[0].value)}),function(e,a){layui.each(e,function(e,n){layui.each(i,function(e,i){if(n.id==i)return delete(i=u.extend({},n)).children,a.push(i),n.children&&(i.children=[],t(n.children,i.children)),!0})})});return t(u.extend({},e.data),n),n},l.prototype.setChecked=function(l){this.config;this.elem.find("."+f).each(function(e,i){var n=u(this).data("id"),a=u(i).children("."+m).find('input[same="layuiTreeCheck"]'),t=a.next();if("number"==typeof l){if(n.toString()==l.toString())return a[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==n.toString()&&!a[0].checked)return t.click(),!0})})},t.that={},t.config={},a.reload=function(e,i){e=t.that[e];return e.reload(i),t.call(e)},a.getChecked=function(e){return t.that[e].getChecked()},a.setChecked=function(e,i){return t.that[e].setChecked(i)},a.render=function(e){e=new l(e);return t.call(e)},e(n,a)});layui.define(["laytpl","form"],function(e){"use strict";var s=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=s.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},d="layui-hide",h="layui-btn-disabled",r="layui-none",c="layui-transfer-box",u="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
                                      ','
                                      ','","
                                      ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
                                        ',"
                                        "].join("")},p=['
                                        ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
                                        ','",'","
                                        ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
                                        "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=s.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=s.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=s(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=s(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+c),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
                                      • ",'',"
                                      • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(r){var c=this,o=c.config;r=r||{},c.layBox.each(function(e){var t=s(this),a=t.find("."+f),t=t.find("."+u).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=s(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),c.layBtn.eq(e)[l?"removeClass":"addClass"](h),r.stopNone||(i=a.children("li:not(."+d+")").length,c.noneView(a,i?"":o.text.none))}),c.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=s('

                                        '+(t||"")+"

                                        ");e.find("."+r)[0]&&e.find("."+r).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){s(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=s.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),r=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+c).find("."+f).append(t.clone()),t.remove(),r.push(a[0].value),i.setValue()):l.each(function(e){s(this).find("."+f).children("li").each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+c).find("."+f).append(e.clone()),e.remove(),r.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+c).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(r),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=s(this).prev(),t=e[0].checked,a=e.parents("."+c).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=s(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent();a[0].disabled||n.transfer(i.data("index"),t)}),n.layBtn.on("click",function(){var e=s(this),t=e.data("index");e.hasClass(h)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=s(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](d),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+d).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,t=layui.lay,o=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,r,e,i)}}),r="carousel",d="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",m="layui-carousel-next",l="layui-carousel-arrow",f="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,o.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(d),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+l)[0]&&e.elem.find("."+l).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
                                          ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
                                        "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+f)[0]&&n.elem.find("."+f).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(m),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(d+" "+c+" "+m+" "+s+" "+u),t.eq(a.index).addClass(d),n.haveSlide=!1},300),n.elemInd.find("li").eq(a.index).addClass(d).siblings().removeClass(d),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,r,"change("+l+")",e))},i.prototype.events=function(){var e=this,i=e.config;i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){"always"!==e.config.autoplay&&clearInterval(e.timer)}).on("mouseleave",function(){"always"!==e.config.autoplay&&e.autoplay()}),i.elem.data("haveEvents",!0))},o.render=function(e){return new i(e)},e(r,o)});layui.define(["jquery","lay"],function(e){"use strict";var s=layui.jquery,r=layui.lay,c={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var a=this;return a.config=s.extend({},a.config,e),a},on:function(e,a){return layui.onevent.call(this,l,e,a)}},l="rate",f="layui-icon-rate",h="layui-icon-rate-solid",o="layui-icon-rate-half",u="layui-icon-rate-solid layui-icon-rate-half",v="layui-icon-rate layui-icon-rate-half",a=function(e){var a=this;a.index=++c.index,a.config=s.extend({},a.config,c.config,e),a.render()};a.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},a.prototype.render=function(){var e=this,a=e.config,l=s(a.elem);if(1a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
                                          "),t=1;t<=a.length;t++){var o='
                                        • ";a.half&&parseInt(a.value)!==a.value&&t==Math.ceil(a.value)?n=n+'
                                        • ":n+=o}n+="
                                        "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,u=l.next(".layui-rate");u[0]&&u.remove(),e.elemTemp=s(n),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var i=this.config,n=this.elemTemp,t=n.find("i").width();n.children("li").each(function(e){var a=e+1,l=s(this);l.on("click",function(e){i.value=a,i.half&&e.pageX-s(this).offset().left<=t/2&&(i.value=i.value-.5),i.text&&n.next("span").text(i.value+"\u661f"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),l.on("mousemove",function(e){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+a+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&e.pageX-s(this).offset().left<=t/2&&l.children("i").addClass(o).removeClass(h)}),l.on("mouseleave",function(){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+Math.floor(i.value)+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&parseInt(i.value)!==i.value&&n.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})})},a.prototype.events=function(){this.config},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(l){"use strict";var g=layui.$,e=function(l){};e.prototype.load=function(l){var t,i,n,e,r,o,a,c,m,s,u,f,y,d=this,p=0,h=g((l=l||{}).elem);if(h[0])return e=g(l.scrollElem||document),r=l.mb||50,o=!("isAuto"in l)||l.isAuto,a=l.end||"\u6ca1\u6709\u66f4\u591a\u4e86",c=l.scrollElem&&l.scrollElem!==document,m="\u52a0\u8f7d\u66f4\u591a",s=g('"),h.find(".layui-flow-more")[0]||h.append(s),u=function(l,e){l=g(l),s.before(l),(e=0==e||null)?s.html(a):s.find("a").html(m),i=e,t=null,y&&y()},f=function(){t=!0,s.find("a").html(''),"function"==typeof l.done&&l.done(++p,u)},f(),s.find("a").on("click",function(){g(this);i||t||f()}),l.isLazyimg&&(y=d.lazyimg({elem:l.elem+" img",scrollElem:l.scrollElem})),o&&e.on("scroll",function(){var e=g(this),o=e.scrollTop();n&&clearTimeout(n),!i&&h.width()&&(n=setTimeout(function(){var l=(c?e:g(window)).height();(c?e.prop("scrollHeight"):document.documentElement.scrollHeight)-o-l<=r&&(t||f())},100))}),d},e.prototype.lazyimg=function(l){var e,c=this,m=0,s=g((l=l||{}).scrollElem||document),u=l.elem||"img",f=l.scrollElem&&l.scrollElem!==document,y=function(e,l){var o,t=s.scrollTop(),l=t+l,i=f?e.offset().top-s.offset().top+t:e.offset().top;t<=i&&i<=l&&e.attr("lay-src")&&(o=e.attr("lay-src"),layui.img(o,function(){var l=c.lazyimg.elem.eq(m);e.attr("src",o).removeAttr("lay-src"),l[0]&&n(l),m++},function(){c.lazyimg.elem.eq(m);e.removeAttr("lay-src")}))},n=function(l,e){var o=(f?e||s:g(window)).height(),t=s.scrollTop(),i=t+o;if(c.lazyimg.elem=g(u),l)y(l,o);else for(var n=0;n"),preview:"Preview"}},x=function(e){return _.trim(e).replace(/^\n|\n$/,"")};e("code",function(e){var M=e=_.extend(!0,{},a,e);e.elem=_(e.elem),e.elem[0]&&layui.each(e.elem.get().reverse(),function(e,a){var t,l,i,o,n,s,c,d,r,u,y=_(a),E=_.extend(!0,{},M,lay.options(a),(t={},layui.each(["title","height","encode","skin","about"],function(e,a){var i=y.attr("lay-"+a);"string"==typeof i&&(t[a]=i)}),t)),p=y.data("code")||(i=[],y.children("textarea").each(function(){i.push(x(this.value))}),0===i.length&&i.push(x(y.html())),i),f=(y.data("code",p),{copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e,a){if("function"==typeof E.onCopy)E.onCopy(l);else try{navigator.clipboard.writeText(C.unescape(l)).then(function(){g.msg("\u5df2\u590d\u5236",{icon:1})})}catch(i){g.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}}}),v=(E.preview&&(a="LAY-CODE-DF-"+e,r=E.layout||["code","preview"],o="iframe"===E.preview,L=_('
                                        '),d=_('
                                        '),n=_('
                                        '),u=_('
                                        '),s=_('
                                        '),m=y.parent("."+T.ELEM_PREVIEW),v=y.prev("."+T.ELEM_TAB),h=y.next("."+T.ELEM_ITEM+"-preview"),E.id&&L.attr("id",E.id),L.addClass(E.className),d.attr("lay-filter",a),E.encode=!0,layui.each(r,function(e,a){var i=_('
                                      • ');0===e&&i.addClass("layui-this"),i.html(E.text[a]),n.append(i)}),_.extend(f,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e,a){var i=e.closest("."+T.ELEM_PREVIEW),t="layui-icon-"+this.className,l="layui-icon-screen-restore",o=this.title,n=_("html,body"),s="layui-scollbar-hide";e.hasClass(t)?(i.addClass(T.ELEM_FULL),e.removeClass(t).addClass(l),e.attr("title",o[1]),n.addClass(s)):(i.removeClass(T.ELEM_FULL),e.removeClass(l).addClass(t),e.attr("title",o[0]),n.removeClass(s))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e,a){C.openWin({content:l})}}}),E.copy&&("array"===layui.type(E.tools)?-1===E.tools.indexOf("copy")&&E.tools.unshift("copy"):E.tools=["copy"]),s.on("click",">i",function(){var e=_(this),a=e.data("type");"function"==typeof f[a].event&&f[a].event(e,a),"function"==typeof E.toolsEvent&&E.toolsEvent(e,a)}),layui.each(E.tools,function(e,a){var i=f[a]&&f[a].className||a,t=f[a].title||[""];s.append('')}),v[0]&&v.remove(),h[0]&&h.remove(),m[0]&&y.unwrap(),d.append(n),E.tools&&d.append(s),y.wrap(L).addClass(T.ELEM_ITEM).before(d),o&&u.html(''),c=function(e){var a=e.children("iframe")[0],i=(o&&a?a.srcdoc=p.join(""):e.html(p.join("")),{container:e,render:function(){b.render(e.find(".layui-form")),w.render()}});setTimeout(function(){"function"==typeof E.done&&E.done(i)},3)},"preview"===r[0]?(u.addClass(T.ELEM_SHOW),y.before(u),c(u)):y.addClass(T.ELEM_SHOW).after(u),E.codeStyle=[E.style,E.codeStyle].join(""),E.previewStyle=[E.style,E.previewStyle].join(""),u.attr("style",E.previewStyle),w.on("tab("+a+")",function(e){var a=_(this),i=_(e.elem).closest("."+T.ELEM_PREVIEW).find("."+T.ELEM_ITEM),e=i.eq(e.index);i.removeClass(T.ELEM_SHOW),e.addClass(T.ELEM_SHOW),"preview"===a.attr("lay-id")&&c(e)})),E.ln?"ol":"ul"),h=_("<"+v+' class="layui-code-'+v+'">'),m=_('
                                        '),L=(y.addClass("layui-code-view layui-box"),E.skin&&("notepad"===E.skin&&(E.skin="dark"),y.removeClass("layui-code-dark layui-code-light"),y.addClass("layui-code-"+E.skin)),l=p.join(""));"function"==typeof E.codeParse&&(L=l=E.codeParse(L)),L=(L=E.encode?C.escape(L):L).replace(/[\r\t\n]+/g,"
                                      • "),y.html(h.html("
                                      • "+L+"
                                      • ")),E.header&&!y.children("."+T.ELEM_TITLE)[0]&&(m.html((E.title||E.text.code)+(E.about?'
                                        '+E.about+"
                                        ":"")),y.prepend(m)),E.elem.length===e+1&&"function"==typeof E.allDone&&E.allDone(),0<(d=Math.floor(h.find("li").length/100))&&h.css("margin-left",d+"px"),E.height&&h.css("max-height",E.height),h.attr("style",E.codeStyle),E.copy&&!E.preview&&(r=_(['','',""].join("")),u=y.children("."+T.ELEM_COPY),(h[0].style.height||h[0].style.maxHeight)&&r.addClass(T.ELEM_COPY+"-offset"),u[0]&&u.remove(),y.append(r),r.on("click",function(){f.copy.event()}))})})}),layui["layui.all"]||layui.addcss("modules/code.css?v=3","skincodecss"); \ No newline at end of file +/** v2.8.17 | MIT Licensed */;!function(d){"use strict";var t,h=d.document,m={modules:{},status:{},timeout:10,event:{}},o=function(){this.v="2.8.17"},e=d.LAYUI_GLOBAL||{},v=(t=h.currentScript?h.currentScript.src:function(){for(var t,e=h.scripts,n=e.length-1,o=n;01e3*m.timeout/4?g(u+" is not a valid module","error"):void(m.status[u]?c():setTimeout(o,4))}())}function c(){e.push(layui[u]),11e3*m.timeout/4?g(u+" is not a valid module","error"):void("string"==typeof m.modules[u]&&m.status[u]?c():setTimeout(f,4))}():((p=h.createElement("script"))["async"]=!0,p.charset="utf-8",p.src=y+((i=!0===m.version?m.v||(new Date).getTime():m.version||"")?"?v="+i:""),a.appendChild(p),!p.attachEvent||p.attachEvent.toString&&p.attachEvent.toString().indexOf("[native code")<0||b?p.addEventListener("load",function(t){s(t,y)},!1):p.attachEvent("onreadystatechange",function(t){s(t,y)}),m.modules[u]=y),r},o.prototype.disuse=function(t){var n=this;return t=n.isArray(t)?t:[t],n.each(t,function(t,e){m.status[e],delete n[e],delete N[e],delete n.modules[e],delete m.status[e],delete m.modules[e]}),n},o.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t[t.getPropertyValue?"getPropertyValue":"getAttribute"](e)},o.prototype.link=function(n,o,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof o?o:t)||n).replace(/\.|\//g,""),u="creating",l=0;return i.href=n+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"!=typeof o||function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(n+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):o()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},o.prototype.addcss=function(t,e,n){return layui.link(m.dir+"css/"+t,e,n)},m.callback={},o.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},o.prototype.img=function(t,e,n){var o=new Image;if(o.src=t,o.complete)return e(o);o.onload=function(){o.onload=null,"function"==typeof e&&e(o)},o.onerror=function(t){o.onerror=null,"function"==typeof n&&n(t)}},o.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},o.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),o.prototype.extend=function(t){for(var e in t=t||{})this[e]||this.modules[e]?g(e+" Module already exists","error"):this.modules[e]=t[e];return this},o.prototype.router=o.prototype.hash=function(t){var n={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),n.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),n.search[e[0]]=e[1]):n.path.push(e)})),n},o.prototype.url=function(t){var r,e,n=this;return{pathname:(t?((t.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(r={},e=(t?((t.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),n.each(e,function(t,e){var n=e.indexOf("="),o=n<0?e.substr(0,e.length):0!==n&&e.substr(0,n);o&&(r[o]=0(s.innerHeight||h.documentElement.clientHeight)},d.getStyleRules=function(t,n){if(t)return t=t.sheet||t.styleSheet||{},t=t.cssRules||t.rules,"function"==typeof n&&layui.each(t,function(t,e){if(n(e,t))return!0}),t},d.style=function(t){t=t||{};var e=d.elem("style"),n=t.text||"",i=t.target;if(n)return"styleSheet"in e?(e.setAttribute("type","text/css"),e.styleSheet.cssText=n):e.innerHTML=n,e.id="LAY-STYLE-"+(t.id||(n=d.style.index||0,d.style.index++,"DF-"+n)),i&&((t=d(i).find("#"+e.id))[0]&&t.remove(),d(i).append(e)),e},d.position=function(t,e,n){var i,r,o,c,u,a,f,l;e&&(n=n||{},t!==h&&t!==d("body")[0]||(n.clickType="right"),i="right"===n.clickType?{left:(i=n.e||s.event||{}).clientX,top:i.clientY,right:i.clientX,bottom:i.clientY}:t.getBoundingClientRect(),f=e.offsetWidth,l=e.offsetHeight,r=function(t){return h.body[t=t?"scrollLeft":"scrollTop"]|h.documentElement[t]},o=function(t){return h.documentElement[t?"clientWidth":"clientHeight"]},c="margin"in n?n.margin:5,u=i.left,a=i.bottom,"center"===n.align?u-=(f-t.offsetWidth)/2:"right"===n.align&&(u=u-f+t.offsetWidth),(u=u+f+c>o("width")?o("width")-f-c:u)o()&&(i.top>l+c&&i.top<=o()?a=i.top-l-2*c:n.allowBottomOut||(a=o()-l-2*c)<0&&(a=0)),(f=n.position)&&(e.style.position=f),e.style.left=u+("fixed"===f?0:r(1))+"px",e.style.top=a+("fixed"===f?0:r())+"px",d.hasScrollbar()||(l=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&l.bottom+c>o()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){d.position(t,e,n)},50))))},d.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===h)return{};var t=d(t),n=e.attr||"lay-options",t=t.attr(n);try{return new Function("return "+(t||"{}"))()}catch(i){return layui.hint().error(e.errorText||[n+'="'+t+'"',"\n parseerror: "+i].join("\n"),"error"),{}}},d.isTopElem=function(n){var t=[h,d("body")[0]],i=!1;return d.each(t,function(t,e){if(e===n)return i=!0}),i},d.clipboard={writeText:function(t){var e=String(t.text);try{navigator.clipboard.writeText(e).then(t.done)["catch"](t.error)}catch(i){var n=h.createElement("textarea");n.value=e,n.style.position="fixed",n.style.opacity="0",n.style.top="0px",n.style.left="0px",h.body.appendChild(n),n.select();try{h.execCommand("copy"),"function"==typeof t.done&&t.done()}catch(r){"function"==typeof t.error&&t.error(r)}finally{n.remove?n.remove():h.body.removeChild(n)}}}},r.addStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),d.each(t,function(t,e){new RegExp("\\b"+e+"\\b").test(n)||(n=n+" "+e)}),n.replace(/^\s|\s$/,"")},r.removeStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),d.each(t,function(t,e){e=new RegExp("\\b"+e+"\\b");e.test(n)&&(n=n.replace(e,""))}),n.replace(/\s+/," ").replace(/^\s|\s$/,"")},r.fn.find=function(n){var i=[],r="object"==typeof n;return this.each(function(t,e){e=r&&e.contains(n)?n:e.querySelectorAll(n||null);d.each(e,function(t,e){i.push(e)})}),d(i)},r.fn.each=function(t){return d.each.call(this,this,t)},r.fn.addClass=function(n,i){return this.each(function(t,e){e.className=r[i?"removeStr":"addStr"](e.className,n)})},r.fn.removeClass=function(t){return this.addClass(t,!0)},r.fn.hasClass=function(n){var i=!1;return this.each(function(t,e){new RegExp("\\b"+n+"\\b").test(e.className)&&(i=!0)}),i},r.fn.css=function(e,i){var t=this,r=function(t){return isNaN(t)?t:t+"px"};return"string"!=typeof e||i!==undefined?t.each(function(t,n){"object"==typeof e?d.each(e,function(t,e){n.style[t]=r(e)}):n.style[e]=r(i)}):0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e}},i=function(e){return new RegExp(e,"g")},u=function(e,r){var n="Laytpl Error: ";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e},n=function(e,r){var n=this,e=(n.config=n.config||{},n.template=e,function(e){for(var r in e)n.config[r]=e[r]});e(c),e(r)},r=(n.prototype.tagExp=function(e,r,n){var c=this.config;return i((r||"")+c.open+["#([\\s\\S])+?","([^{#}])*?"][e||0]+c.close+(n||""))},n.prototype.parse=function(e,r){var n=this,c=n.config,t=e,o=i("^"+c.open+"#",""),p=i(c.close+"$","");if("string"!=typeof e)return e;e='"use strict";var view = "'+(e=e.replace(/\s+|\r|\t|\n/g," ").replace(i(c.open+"#"),c.open+"# ").replace(i(c.close+"}"),"} "+c.close).replace(/\\/g,"\\\\").replace(i(c.open+"!(.+?)!"+c.close),function(e){return e=e.replace(i("^"+c.open+"!"),"").replace(i("!"+c.close),"").replace(i(c.open+"|"+c.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(n.tagExp(),function(e){return'";'+(e=e.replace(o,"").replace(p,"")).replace(/\\(.)/g,"$1")+';view+="'}).replace(n.tagExp(1),function(e){var r='"+laytpl.escape(';return e.replace(/\s/g,"")===c.open+c.close?"":(e=e.replace(i(c.open+"|"+c.close),""),/^=/.test(e)?e=e.replace(/^=/,""):/^-/.test(e)&&(e=e.replace(/^-/,""),r='"+('),r+e.replace(/\\(.)/g,"$1")+')+"')}))+'";return view;';try{return n.cache=e=new Function("d, laytpl",e),e(r,l)}catch(a){return delete n.cache,u(a,t)}},n.prototype.render=function(e,r){e=e||{};var n=this,e=n.cache?n.cache(e,l):n.parse(n.template,e);return"function"==typeof r&&r(e),e},function(e,r){return new n(e,r)});r.config=function(e){for(var r in e=e||{})c[r]=e[r]},r.v="2.0.0",e("laytpl",r)});layui.define(function(e){"use strict";var r=document,u="getElementById",c="getElementsByTagName",a="layui-disabled",t=function(e){var a=this;a.config=e||{},a.config.index=++o.index,a.render(!0)},o=(t.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return e.elem.length===undefined?2:3},t.prototype.view=function(){var t,i,n=this.config,r=n.groups="groups"in n?Number(n.groups)||0:5,u=(n.layout="object"==typeof n.layout?n.layout:["prev","page","next"],n.count=Number(n.count)||0,n.curr=Number(n.curr)||1,n.limits="object"==typeof n.limits?n.limits:[10,20,30,40,50],n.limit=Number(n.limit)||10,n.pages=Math.ceil(n.count/n.limit)||1,n.curr>n.pages?n.curr=n.pages:n.curr<1&&(n.curr=1),r<0?r=1:r>n.pages&&(r=n.pages),n.prev="prev"in n?n.prev:"上一页",n.next="next"in n?n.next:"下一页",n.pages>r?Math.ceil((n.curr+(1'+n.prev+"":"",page:function(){var e=[];if(n.count<1)return"";1'+(n.first||1)+"");var a=Math.floor((r-1)/2),t=1n.pages?n.pages:a:r;for(i-t…');t<=i;t++)t===n.curr?e.push('"+t+""):e.push(''+t+"");return n.pages>r&&n.pages>i&&!1!==n.last&&(i+1…'),0!==r&&e.push(''+(n.last||n.pages)+"")),e.join("")}(),next:n.next?''+n.next+"":"",count:'\u5171 '+n.count+" \u6761",limit:(t=['"),refresh:['','',""].join(""),skip:['到第','','页',""].join("")};return['
                                        ',(i=[],layui.each(n.layout,function(e,a){l[a]&&i.push(l[a])}),i.join("")),"
                                        "].join("")},t.prototype.jump=function(e,a){if(e){var t=this,i=t.config,n=e.children,r=e[c]("button")[0],u=e[c]("input")[0],e=e[c]("select")[0],l=function(){var e=Number(u.value.replace(/\s|\D/g,""));e&&(i.curr=e,t.render())};if(a)return l();for(var s=0,p=n.length;si.pages||(i.curr=e,t.render())});e&&o.on(e,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),r&&o.on(r,"click",function(){l()})}},t.prototype.skip=function(t){var i,e;t&&(i=this,(e=t[c]("input")[0])&&o.on(e,"keyup",function(e){var a=this.value,e=e.keyCode;/^(37|38|39|40)$/.test(e)||(/\D/.test(a)&&(this.value=a.replace(/\D/,"")),13===e&&i.jump(t,!0))}))},t.prototype.render=function(e){var a=this,t=a.config,i=a.type(),n=a.view(),i=(2===i?t.elem&&(t.elem.innerHTML=n):3===i?t.elem.html(n):r[u](t.elem)&&(r[u](t.elem).innerHTML=n),t.jump&&t.jump(t,e),r[u]("layui-laypage-"+t.index));a.jump(i),t.hash&&!e&&(location.hash="!"+t.hash+"="+t.curr),a.skip(i)},{render:function(e){return new t(e).index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(a,e,t){return a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1),this}});e("laypage",o)});!function(i,v){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){D.path&&i.lay&&lay.layui&&lay.layui.link(D.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},d="layui-laydate-id",D={v:"5.5.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:e.laydate_dir||l.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",a=(n?"modules/":"")+"laydate.css?v="+D.v;return n?layui["layui.all"]?"function"==typeof e&&e():layui.addcss(a,e,t):l.link(a,e,t),this}},s=function(){var t=this,e=t.config.id;return(s.that[e]=t).inst={hint:function(e){t.hint.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}},a="laydate",x="layui-this",k="laydate-disabled",h=[100,2e5],T="layui-laydate-static",w="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",C=".laydate-btns-confirm",M="laydate-time-text",L="laydate-btns-time",E="layui-laydate-preview",S="layui-laydate-shade",I=function(e){var t,a=this,n=(a.index=++D.index,a.config=lay.extend({},a.config,D.config,e),lay(e.elem||a.config.elem));return 1\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
                                        \u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
                                        ","
                                        \u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
                                        Please re-select",invalidDate:"Invalid date",formatError:["The date format error
                                        Must be followed\uff1a
                                        ","
                                        It has been reset"],preview:"The selected result"}};return e[this.config.lang]||e.cn},I.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},I.prototype.init=function(){var r=this,o=r.config,e="static"===o.position,t={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};o.elem=lay(o.elem),o.eventElem=lay(o.eventElem),o.elem[0]&&("array"!==layui.type(o.theme)&&(o.theme=[o.theme]),o.fullPanel&&("datetime"!==o.type||o.range)&&delete o.fullPanel,r.rangeStr=o.range?"string"==typeof o.range?o.range:"-":"",r.rangeLinked=!(!o.range||!o.rangeLinked||"date"!==o.type&&"datetime"!==o.type),r.autoCalendarModel=function(){var e=r.rangeLinked;return r.rangeLinked=o.range&&("date"===o.type||"datetime"===o.type)&&(!r.startDate||!r.endDate||r.startDate&&r.endDate&&r.startDate.year===r.endDate.year&&r.startDate.month===r.endDate.month),lay(r.elem)[r.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),r.rangeLinked!=e},r.autoCalendarModel.auto=r.rangeLinked&&"auto"===o.rangeLinked,"array"===layui.type(o.range)&&(r.rangeElem=[lay(o.range[0]),lay(o.range[1])]),t[o.type]||(i.console&&console.error&&console.error("laydate type error:'"+o.type+"' is not supported"),o.type="date"),o.format===t.date&&(o.format=t[o.type]||t.date),r.format=s.formatArr(o.format),o.weekStart&&!/^[0-6]$/.test(o.weekStart)&&(t=r.lang(),o.weekStart=t.weeks.indexOf(o.weekStart),-1===o.weekStart&&(o.weekStart=0)),r.EXP_IF="",r.EXP_SPLIT="",lay.each(r.format,function(e,t){e=new RegExp(c).test(t)?"\\d{"+(new RegExp(c).test(r.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(t)?4:t.length:/^yyyy$/.test(t)?"1,4":/^y$/.test(t)?"1,308":"1,2")+"}":"\\"+t;r.EXP_IF=r.EXP_IF+e,r.EXP_SPLIT=r.EXP_SPLIT+"("+e+")"}),r.EXP_IF_ONE=new RegExp("^"+r.EXP_IF+"$"),r.EXP_IF=new RegExp("^"+(o.range?r.EXP_IF+"\\s\\"+r.rangeStr+"\\s"+r.EXP_IF:r.EXP_IF)+"$"),r.EXP_SPLIT=new RegExp("^"+r.EXP_SPLIT+"$",""),r.isInput(o.elem[0])||"focus"===o.trigger&&(o.trigger="click"),o.elem.attr("lay-key",r.index),o.eventElem.attr("lay-key",r.index),o.elem.attr(d,o.id),o.mark=lay.extend({},o.calendar&&"cn"===o.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},o.mark),lay.each(["min","max"],function(e,t){var a=[],n=[];if("number"==typeof o[t])var i=o[t],l=new Date,l=r.newDate({year:l.getFullYear(),month:l.getMonth(),date:l.getDate(),hours:e?23:0,minutes:e?59:0,seconds:e?59:0}).getTime(),e=new Date(i?i<864e5?l+864e5*i:i:l),a=[e.getFullYear(),e.getMonth()+1,e.getDate()],n=[e.getHours(),e.getMinutes(),e.getSeconds()];else if("string"==typeof o[t])a=(o[t].match(/\d+-\d+-\d+/)||[""])[0].split("-"),n=(o[t].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if("object"==typeof o[t])return o[t];o[t]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|n[0],minutes:0|n[1],seconds:0|n[2]}}),r.elemID="layui-laydate"+o.elem.attr("lay-key"),(o.show||e)&&r.render(),e||r.events(),o.value&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value)))},I.prototype.render=function(){var a,n,i,l,r=this,o=r.config,d=r.lang(),s="static"===o.position,y=r.elem=lay.elem("div",{id:r.elemID,"class":["layui-laydate",o.range?" layui-laydate-range":"",r.rangeLinked?" layui-laydate-linkage":"",s?" "+T:"",o.fullPanel?" laydate-theme-fullpanel":"",(a="",lay.each(o.theme,function(e,t){"default"===t||/^#/.test(t)||(a+=" laydate-theme-"+t)}),a)].join("")}),m=r.elemMain=[],c=r.elemHeader=[],u=r.elemCont=[],h=r.table=[],e=r.footer=lay.elem("div",{"class":"layui-laydate-footer"}),t=r.shortcut=lay.elem("ul",{"class":"layui-laydate-shortcut"}),f=(o.zIndex&&(y.style.zIndex=o.zIndex),lay.each(new Array(2),function(e){if(!o.range&&0'+d.timeTips+""),(o.range||"datetime"!==o.type||o.fullPanel)&&f.push(''),lay.each(o.btns,function(e,t){var a=d.tools[t]||"btn";o.range&&"now"===t||(s&&"clear"===t&&(a="cn"===o.lang?"\u91cd\u7f6e":"Reset"),n.push(''+a+""))}),f.push('"),f.join(""))),o.shortcuts&&(y.appendChild(t),lay(t).html((i=[],lay.each(o.shortcuts,function(e,t){i.push('
                                      • '+t.text+"
                                      • ")}),i.join(""))).find("li").on("click",function(e){var t=o.shortcuts[this.dataset.index]||{},t=("function"==typeof t.value?t.value():t.value)||[],n=(layui.isArray(t)||(t=[t]),o.type),t=(lay.each(t,function(e,t){var a=[o.dateTime,r.endDate][e];"time"===n&&"date"!==layui.type(t)?r.EXP_IF.test(t)&&(t=(t.match(r.EXP_SPLIT)||[]).slice(1),lay.extend(a,{hours:0|t[0],minutes:0|t[2],seconds:0|t[4]})):lay.extend(a,r.systemDate("date"===layui.type(t)?t:new Date(t))),"time"!==n&&"datetime"!==n||(r[["startTime","endTime"][e]]={hours:a.hours,minutes:a.minutes,seconds:a.seconds}),0===e?r.startDate=lay.extend({},a):r.endState=!0,"year"===n||"month"===n||"time"===n?r.listYM[e]=[a.year,a.month+1]:e&&r.autoCalendarModel.auto&&r.autoCalendarModel()}),r.checkDate("limit").calendar(null,null,"init"),lay(r.footer).find("."+L).removeClass(k));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(x),"static"!==o.position&&r.setValue(r.parse()).done().remove()})),lay.each(m,function(e,t){y.appendChild(t)}),o.showBottom&&y.appendChild(e),lay.elem("style")),p=[],g=!0,t=(lay.each(o.theme,function(e,t){if(g&&/^#/.test(t))return g=!(l=!0),void p.push(["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}",-1!==o.theme.indexOf("circle")?"":"#{{id}} .layui-this{background-color:{{theme}} !important;}","#{{id}} .laydate-day-now{color:{{theme}} !important;}","#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t));!g&&/^#/.test(t)&&p.push(["#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}","#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))}),o.shortcuts&&o.range&&p.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),p.length&&(p=p.join(""),"styleSheet"in f?(f.setAttribute("type","text/css"),f.styleSheet.cssText=p):f.innerHTML=p,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(f)),r.remove(I.thisElemDate),D.thisId=o.id,s?o.elem.append(y):(v.body.appendChild(y),r.position()),o.shade?'
                                        ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),I.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},I.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(T)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete D.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+S).remove()),t},I.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},I.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":r}));t.elem&&(a.innerHTML=(e="object"==typeof e?e||{}:{content:e}).content||"",lay(t.elem).find("."+r).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+r).remove()},"ms"in e?e.ms:3e3))},I.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),11h[1]&&(e.year=h[1],o=!0),11t&&(e.date=t,o=!0))},r=function(n,i,l){var r=["startTime","endTime"];i=(i.match(d.EXP_SPLIT)||[]).slice(1),l=l||0,s.range&&(d[r[l]]=d[r[l]]||{}),lay.each(d.format,function(e,t){var a=parseFloat(i[e]);i[e].lengthd.getDateTime(s.max)?(n=s.dateTime=lay.extend({},s.max),c=!0):d.getDateTime(n)d.getDateTime(s.max))&&(d.endDate=lay.extend({},s.max),c=!0),d.startTime={hours:s.dateTime.hours,minutes:s.dateTime.minutes,seconds:s.dateTime.seconds},d.endTime={hours:d.endDate.hours,minutes:d.endDate.minutes,seconds:d.endDate.seconds},"month"===s.type&&(s.dateTime.date=1,d.endDate.date=1)),c&&l&&(d.setValue(d.parse()),d.hint("value "+a.invalidDate+a.formatError[1])),d.startDate=d.startDate||l&&lay.extend({},s.dateTime),d.autoCalendarModel.auto&&d.autoCalendarModel(),d.endState=!s.range||!d.rangeLinked||!(!d.startDate||!d.endDate),e&&e(),d},I.prototype.mark=function(e,a){var n,t=this.config;return lay.each(t.mark,function(e,t){e=e.split("-");e[0]!=a[0]&&0!=e[0]||e[1]!=a[1]&&0!=e[1]||e[2]!=a[2]||(n=t||a[2])}),n&&e.find("div").html(''+n+""),this},I.prototype.holidays=function(n,i){var e=this.config,l=["","work"];return"array"!==layui.type(e.holidays)||lay.each(e.holidays,function(a,e){lay.each(e,function(e,t){t===n.attr("lay-ymd")&&n.find("div").html('"+i[2]+"")})}),this},I.prototype.limit=function(t){t=t||{};var i=this,e=i.config,l={},a=t.index>(t.time?0:41)?i.endDate:e.dateTime;return lay.each({now:lay.extend({},a,t.date||{}),min:e.min,max:e.max},function(e,a){var n;l[e]=i.newDate(lay.extend({year:a.year,month:"year"===t.type?0:a.month,date:"year"===t.type||"month"===t.type?1:a.date},(n={},lay.each(t.time,function(e,t){n[t]=a[t]}),n))).getTime()}),a=l.nowl.max,t.elem&&t.elem[a?"addClass":"removeClass"](k),a},I.prototype.thisDateTime=function(e){var t=this.config;return e?this.endDate:t.dateTime},I.prototype.calendar=function(e,t,a){t=t?1:0;var i,l,r,o=this,n=o.config,d=e||o.thisDateTime(t),s=new Date,y=o.lang(),m="date"!==n.type&&"datetime"!==n.type,c=lay(o.table[t]).find("td"),u=lay(o.elemHeader[t][2]).find("span");return d.yearh[1]&&(d.year=h[1],o.hint(y.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},d)),s.setFullYear(d.year,d.month,1),i=(s.getDay()+(7-n.weekStart))%7,l=D.getEndDate(d.month||12,d.year),r=D.getEndDate(d.month+1,d.year),lay.each(c,function(e,t){var a,n=[d.year,d.month];(t=lay(t)).removeAttr("class"),e"+n[2]+"
                                        "),o.mark(t,n).holidays(t,n).limit({elem:t,date:{year:n[0],month:n[1]-1,date:n[2]},index:e})}),lay(u[0]).attr("lay-ym",d.year+"-"+(d.month+1)),lay(u[1]).attr("lay-ym",d.year+"-"+(d.month+1)),"cn"===n.lang?(lay(u[0]).attr("lay-type","year").html(d.year+" \u5e74"),lay(u[1]).attr("lay-type","month").html(d.month+1+" \u6708")):(lay(u[0]).attr("lay-type","month").html(y.month[d.month]),lay(u[1]).attr("lay-type","year").html(d.year)),m&&(n.range?!e&&"init"===a||(o.listYM=[[(o.startDate||n.dateTime).year,(o.startDate||n.dateTime).month+1],[o.endDate.year,o.endDate.month+1]],o.list(n.type,0).list(n.type,1),"time"===n.type?o.setBtnStatus("\u65f6\u95f4",lay.extend({},o.systemDate(),o.startTime),lay.extend({},o.systemDate(),o.endTime)):o.setBtnStatus(!0)):(o.listYM=[[d.year,d.month+1]],o.list(n.type,0))),n.range&&"init"===a&&(o.rangeLinked?(s=o.getAsYM(d.year,d.month,t?"sub":null),o.calendar(lay.extend({},d,{year:s[0],month:s[1]}),1-t)):o.calendar(null,1-t)),n.range||(c=["hours","minutes","seconds"],o.limit({elem:lay(o.footer).find(".laydate-btns-now"),date:o.systemDate(),index:0,time:c}),o.limit({elem:lay(o.footer).find(C),index:0,time:c})),o.setBtnStatus(),lay(o.shortcut).find("li."+x).removeClass(x),n.range&&!m&&"init"!==a&&o.stampRange(),o},I.prototype.list=function(n,i){var l,r,e,o,d=this,s=d.config,y=d.rangeLinked?s.dateTime:[s.dateTime,d.endDate][i],m=d.lang(),t=s.range&&"date"!==s.type&&"datetime"!==s.type,c=lay.elem("ul",{"class":w+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),a=d.elemHeader[i],u=lay(a[2]).find("span"),h=d.elemCont[i||0],f=lay(h).find("."+w)[0],p="cn"===s.lang,g=p?"\u5e74":"",v=d.listYM[i]||{},D=["hours","minutes","seconds"],T=["startTime","endTime"][i];return v[0]<1&&(v[0]=1),"year"===n?(e=l=v[0]-7,l<1&&(e=l=1),lay.each(new Array(15),function(e){var t=lay.elem("li",{"lay-ym":l}),a={year:l,month:0,date:1};l==v[0]&&lay(t).addClass(x),t.innerHTML=l+g,c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n}),l++}),lay(u[p?0:1]).attr("lay-ym",l-8+"-"+v[1]).html(e+g+" - "+(l-1)+g)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:v[0],month:e,date:1};e+1==v[1]&&lay(t).addClass(x),t.innerHTML=m.month[e]+(p?"\u6708":""),c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n})}),lay(u[p?0:1]).attr("lay-ym",v[0]+"-"+v[1]).html(v[0]+g)):"time"===n&&(r=function(){lay(c).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){d.limit({elem:lay(t),date:[{hours:e},{hours:d[T].hours,minutes:e},{hours:d[T].hours,minutes:d[T].minutes,seconds:e}][a],index:i,time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),s.range||d.limit({elem:lay(d.footer).find(C),date:d[T],inedx:0,time:["hours","minutes","seconds"]})},s.range?d[T]||(d[T]="startTime"===T?y:d.endDate):d[T]=y,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

                                        "+m.time[t]+"

                                          "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
                                        ",c.appendChild(a)}),r()),f&&h.removeChild(f),h.appendChild(c),"year"===n||"month"===n?(lay(d.elemMain[i]).addClass("laydate-ym-show"),lay(c).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(k)||(d.rangeLinked?lay.extend(y,{year:"year"===n?e:v[0],month:"year"===n?v[1]-1:e}):y[n]=e,"year"===s.type||"month"===s.type?(lay(c).find("."+x).removeClass(x),lay(this).addClass(x),"month"===s.type&&"year"===n&&(d.listYM[i][0]=e,t&&((i?d.endDate:y).year=e),d.list("month",i))):(d.checkDate("limit").calendar(y,i,"init"),d.closeList()),d.setBtnStatus(),!s.range&&s.autoConfirm&&("month"===s.type&&"month"===n||"year"===s.type&&"year"===n)&&d.setValue(d.parse()).done().remove(),d.autoCalendarModel.auto&&!d.rangeLinked?d.choose(lay(h).find("td.layui-this"),i):d.endState&&d.done(null,"change"),lay(d.footer).find("."+L).removeClass(k))})):(e=lay.elem("span",{"class":M}),o=function(){lay(c).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(d[T][D[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(k))return a.scrollTop=30*(e-2),!0})})},u=lay(a[2]).find("."+M),o(),e.innerHTML=s.range?[m.startTime,m.endTime][i]:m.timeTips,lay(d.elemMain[i]).addClass("laydate-time-show"),u[0]&&u.remove(),a[2].appendChild(e),lay(c).find("ol").each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(k)||(s.range?d[T][D[t]]=e:y[D[t]]=e,lay(a).find("."+x).removeClass(x),lay(this).addClass(x),r(),o(),(d.endDate||"time"===s.type||"datetime"===s.type&&s.fullPanel)&&d.done(null,"change"),d.setBtnStatus())})})),d},I.prototype.listYM=[],I.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+w).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+M).remove()},I.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(C);i.range&&"time"!==i.type&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t})||n.limit({date:a})?r.addClass(k):r[i?"addClass":"removeClass"](k),e&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout))},I.prototype.parse=function(e,t){var a=this,n=a.config,i=a.rangeLinked?a.startDate:n.dateTime,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},i||n.dateTime,a.startTime):n.dateTime),i=D.parse(t,a.format,1);return n.range&&e===undefined?i+" "+a.rangeStr+" "+a.parse("end"):i},I.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},I.prototype.getDateTime=function(e){return this.newDate(e).getTime()},I.prototype.setValue=function(e){var t=this,a=t.config,n=a.elem[0];return"static"===a.position||(e=e||"",t.isInput(n)?lay(n).val(e):(a=t.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+t.rangeStr+" ")),a[0].val(e[0]||""),a[1].val(e[1]||"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e))),t},I.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+E),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html()&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300)))},I.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},I.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(C).addClass(k),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(o+" "+x),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?o:x),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.thisDateTime(1-a)})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(e=n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date,o=n.startDate,n.startDate=lay.extend({},n.endDate,e?{}:n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,e?{}:n.endTime),e&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o)),r&&(i.dateTime=lay.extend({},n.startDate))),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(o=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:o[0],month:o[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},I.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(t).hasClass(k)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(k))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(k))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(t).hasClass(k))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},I.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),o=l.range&&("year"===l.type||"month"===l.type),d=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(d).find(".laydate-year-list")[0],a=lay(d).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),o&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(C),date:{year:s[0]}})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))}}},I.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+L).addClass(k))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},I.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},I.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){D.thisId!==a.id&&t.render()}),a.elem[0].eventHandler=!0,a.eventElem.on(a.trigger,e),t.unbind=function(){t.remove(),a.elem.off(a.trigger,e),a.elem.removeAttr("lay-key"),a.elem.removeAttr(d),a.elem[0].eventHandler=!1,a.eventElem.off(a.trigger,e),a.eventElem.removeAttr("lay-key"),delete s.that[a.id]})},s.that={},s.getThis=function(e){var t=s.that[e];return!t&&n&&layui.hint().error(e?a+" instance with ID '"+e+"' not found":"ID argument required"),t},l.run=function(n){n(v).on("mousedown",function(e){var t,a;!D.thisId||(t=s.getThis(D.thisId))&&(a=t.config,e.target!==a.elem[0]&&e.target!==a.eventElem[0]&&e.target!==n(a.closeStop)[0]&&t.remove())}).on("keydown",function(e){var t;!D.thisId||(t=s.getThis(D.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===I.thisElemDate&&(e.preventDefault(),n(t.footer).find(C)[0].click())}),n(i).on("resize",function(){if(D.thisId){var e=s.getThis(D.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},D.render=function(e){e=new I(e);return s.call(e)},D.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},D.getInst=function(e){e=s.getThis(e);if(e)return e.inst},D.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},D.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},D.close=function(e){e=s.getThis(e||D.thisId);if(e)return e.remove()},D.parse=function(a,n,i){return a=a||{},n=((n="string"==typeof n?s.formatArr(n):n)||[]).concat(),lay.each(n,function(e,t){/yyyy|y/.test(t)?n[e]=lay.digit(a.year,t.length):/MM|M/.test(t)?n[e]=lay.digit(a.month+(i||0),t.length):/dd|d/.test(t)?n[e]=lay.digit(a.date,t.length):/HH|H/.test(t)?n[e]=lay.digit(a.hours,t.length):/mm|m/.test(t)?n[e]=lay.digit(a.minutes,t.length):/ss|s/.test(t)&&(n[e]=lay.digit(a.seconds,t.length))}),n.join("")},D.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},n?(D.ready(),layui.define("lay",function(e){D.path=layui.cache.dir,l.run(lay),e(a,D)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),D}):(D.ready(),l.run(i.lay),i.laydate=D)}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(T,M){var f=[],g=T.document,c=f.slice,O=f.concat,R=f.push,P=f.indexOf,B={},W=B.toString,m=B.hasOwnProperty,y={},e="1.12.4",C=function(e,t){return new C.fn.init(e,t)},I=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,$=/^-ms-/,z=/-([\da-z])/gi,X=function(e,t){return t.toUpperCase()};function U(e){var t=!!e&&"length"in e&&e.length,n=C.type(e);return"function"!==n&&!C.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+a+")"+a+"*"),ee=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),te=new RegExp(G),ne=new RegExp("^"+s+"$"),f={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),TAG:new RegExp("^("+s+"|[*])"),ATTR:new RegExp("^"+J),PSEUDO:new RegExp("^"+G),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},re=/^(?:input|select|textarea|button)$/i,ie=/^h\d$/i,c=/^[^{]+\{\s*\[native \w/,oe=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ae=/[+~]/,se=/'|\\/g,d=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig"),p=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)},ue=function(){C()};try{D.apply(n=V.call(v.childNodes),v.childNodes),n[v.childNodes.length].nodeType}catch(F){D={apply:n.length?function(e,t){U.apply(e,V.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function H(e,t,n,r){var i,o,a,s,u,l,c,f,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!r&&((t?t.ownerDocument||t:v)!==E&&C(t),t=t||E,N)){if(11!==p&&(l=oe.exec(e)))if(i=l[1]){if(9===p){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&y(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return D.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&g.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(i)),n}if(g.qsa&&!A[e+" "]&&(!m||!m.test(e))){if(1!==p)d=t,f=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(se,"\\$&"):t.setAttribute("id",s=k),o=(c=w(e)).length,u=ne.test(s)?"#"+s:"[id='"+s+"']";o--;)c[o]=u+" "+_(c[o]);f=c.join(","),d=ae.test(e)&&de(t.parentNode)||t}if(f)try{return D.apply(n,d.querySelectorAll(f)),n}catch(h){}finally{s===k&&t.removeAttribute("id")}}}return P(e.replace(L,"$1"),t,n,r)}function le(){var n=[];function r(e,t){return n.push(e+" ")>b.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function q(e){return e[k]=!0,e}function h(e){var t=E.createElement("div");try{return!!e(t)}catch(F){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function ce(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function x(a){return q(function(o){return o=+o,q(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function de(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in g=H.support={},O=H.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},C=H.setDocument=function(e){var e=e?e.ownerDocument||e:v;return e!==E&&9===e.nodeType&&e.documentElement&&(t=(E=e).documentElement,N=!O(E),(e=E.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",ue,!1):e.attachEvent&&e.attachEvent("onunload",ue)),g.attributes=h(function(e){return e.className="i",!e.getAttribute("className")}),g.getElementsByTagName=h(function(e){return e.appendChild(E.createComment("")),!e.getElementsByTagName("*").length}),g.getElementsByClassName=c.test(E.getElementsByClassName),g.getById=h(function(e){return t.appendChild(e).id=k,!E.getElementsByName||!E.getElementsByName(k).length}),g.getById?(b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&N)return(e=t.getElementById(e))?[e]:[]},b.filter.ID=function(e){var t=e.replace(d,p);return function(e){return e.getAttribute("id")===t}}):(delete b.find.ID,b.filter.ID=function(e){var t=e.replace(d,p);return function(e){e="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}}),b.find.TAG=g.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):g.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=g.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&N)return t.getElementsByClassName(e)},r=[],m=[],(g.qsa=c.test(E.querySelectorAll))&&(h(function(e){t.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+a+"*(?:value|"+Y+")"),e.querySelectorAll("[id~="+k+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||m.push(".#.+[+~]")}),h(function(e){var t=E.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(g.matchesSelector=c.test(i=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&h(function(e){g.disconnectedMatch=i.call(e,"div"),i.call(e,"[s!='']:x"),r.push("!=",G)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),e=c.test(t.compareDocumentPosition),y=e||c.test(t.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=e?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!g.sortDetached&&t.compareDocumentPosition(e)===n?e===E||e.ownerDocument===v&&y(v,e)?-1:t===E||t.ownerDocument===v&&y(v,t)?1:u?j(u,e)-j(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===E?-1:t===E?1:i?-1:o?1:u?j(u,e)-j(u,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?fe(a[r],s[r]):a[r]===v?-1:s[r]===v?1:0}),E},H.matches=function(e,t){return H(e,null,null,t)},H.matchesSelector=function(e,t){if((e.ownerDocument||e)!==E&&C(e),t=t.replace(ee,"='$1']"),g.matchesSelector&&N&&!A[t+" "]&&(!r||!r.test(t))&&(!m||!m.test(t)))try{var n=i.call(e,t);if(n||g.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(F){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(d,p),e[3]=(e[3]||e[4]||e[5]||"").replace(d,p),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||H.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&H.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return f.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&te.test(n)&&(t=w(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(d,p).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=H.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1(?:<\/\1>|)$/,G=/^.[^:#\[\.,]*$/;function K(e,n,r){if(C.isFunction(n))return C.grep(e,function(e,t){return!!n.call(e,t,e)!==r});if(n.nodeType)return C.grep(e,function(e){return e===n!==r});if("string"==typeof n){if(G.test(n))return C.filter(n,e,r);n=C.filter(n,e)}return C.grep(e,function(e){return-1)[^>]*|#([\w-]*))$/,ee=((C.fn.init=function(e,t,n){if(!e)return this;if(n=n||Q,"string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):C.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(C):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),C.makeArray(e,this));if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Z.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:g,!0)),J.test(r[1])&&C.isPlainObject(t))for(var r in t)C.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}return this.context=g,this.selector=e,this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
                                        a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
                                        ","
                                        "],area:[1,"",""],param:[1,"",""],thead:[1,"","
                                        "],tr:[2,"","
                                        "],col:[2,"","
                                        "],td:[3,"","
                                        "],_default:y.htmlSerialize?[0,"",""]:[1,"X
                                        ","
                                        "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
                                        t
                                        ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",(nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight)),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o&&(i.left=o)),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
                                        a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1===this.nodeType&&(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined||(this.value=e))})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"
                                        ":"";return a.zIndex=o,t([a.shade?'
                                        ':"",'
                                        '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
                                        ':''):"")+((1!=a.type||!e)&&a.content||"")+'
                                        '+(n=[],l&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
                                        "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t,i=0,n=a.btn.length;i'+a.btn[i]+"";return'
                                        '+e+"
                                        "}():"")+(a.resize?'':"")+"
                                        "],s,m('
                                        ')),this},t.pt.creat=function(){var e,t,i,n,a,o=this,s=o.config,l=o.index,r="object"==typeof(f=s.content),c=m("body");if(s.id&&m("."+y[0]).find("#"+s.id)[0])return e=m("#"+s.id).closest("."+y[0]),t=e.attr("times"),i=e.data("config"),n=m("#"+y.SHADE+t),void("min"===(e.data("maxminStatus")||{})?h.restore(t):i.hideOnClose&&(n.show(),e.show()));switch(s.removeFocus&&document.activeElement.blur(),"string"==typeof s.area&&(s.area="auto"===s.area?["",""]:[s.area,""]),s.shift&&(s.anim=s.shift),6==h.ie&&(s.fixed=!1),s.type){case 0:s.btn="btn"in s?s.btn:u.btn[0],h.closeAll("dialog");break;case 2:var f=s.content=r?s.content:[s.content||"","auto"];s.content='';break;case 3:delete s.title,delete s.closeBtn,-1===s.icon&&s.icon,h.closeAll("loading");break;case 4:r||(s.content=[s.content,"body"]),s.follow=s.content[1],s.content=s.content[0]+'',delete s.title,s.tips="object"==typeof s.tips?s.tips:[s.tips,!0],s.tipsMore||h.closeAll("tips")}o.vessel(r,function(e,t,i){c.append(e[0]),r?2==s.type||4==s.type?m("body").append(e[1]):f.parents("."+y[0])[0]||(f.data("display",f.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+y[0]+l).find("."+y[5]).before(t)):c.append(e[1]),m("#"+y.MOVE)[0]||c.append(u.moveElem=i),o.layero=m("#"+y[0]+l),o.shadeo=m("#"+y.SHADE+l),s.scrollbar||u.setScrollbar(l)}).auto(l),o.shadeo.css({"background-color":s.shade[1]||"#000",opacity:s.shade[0]||s.shade}),2==s.type&&6==h.ie&&o.layero.find("iframe").attr("src",f[0]),4==s.type?o.tips():(o.offset(),parseInt(u.getStyle(document.getElementById(y.MOVE),"z-index"))||(o.layero.css("visibility","hidden"),h.ready(function(){o.offset(),o.layero.css("visibility","visible")}))),s.fixed&&!u.events.resize[o.index]&&(u.events.resize[o.index]=function(){o.resize()},d.on("resize",u.events.resize[o.index])),s.time<=0||setTimeout(function(){h.close(o.index)},s.time),o.move().callback(),y.anim[s.anim]&&(a="layer-anim "+y.anim[s.anim],o.layero.addClass(a).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(a)})),o.layero.data("config",s)},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+y[0]+e),n=(""===t.area[0]&&0t.maxWidth&&i.width(t.maxWidth)),[i.innerWidth(),i.innerHeight()]),a=i.find(y[1]).outerHeight()||0,o=i.find("."+y[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+y[5])):t.fixed&&n[1]>=d.height()&&(n[1]=d.height(),e("."+y[5])):e("."+y[5]),this},t.pt.offset=function(){var e=this,t=e.config,i=e.layero,n=[i.outerWidth(),i.outerHeight()],a="object"==typeof t.offset;e.offsetTop=(d.height()-n[1])/2,e.offsetLeft=(d.width()-n[0])/2,a?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=d.width()-n[0]:"b"===t.offset?e.offsetTop=d.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=d.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=d.width()-n[0]):"rb"===t.offset?(e.offsetTop=d.height()-n[1],e.offsetLeft=d.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?d.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?d.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=d.scrollTop(),e.offsetLeft+=d.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=d.height()-(i.find(y[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0d.width()&&(o=d.width()-180-(u.minStackArr.edgeIndex=u.minStackArr.edgeIndex||0,u.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(l.left=o,l.top=d.height()-n,a||u.minStackIndex++,r.attr("minLeft",o)),r.attr("position",s),h.style(e,l,!0),i.hide(),"page"===r.attr("type")&&r.find(y[4]).hide(),u.restScrollbar(e),c.hide())},h.restore=function(e){var t=m("#"+y[0]+e),i=m("#"+y.SHADE+e),n=t.attr("area").split(","),a=t.attr("type"),o=t.data("config")||{};t.removeData("maxminStatus"),h.style(e,{width:n[0],height:n[1],top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===a&&t.find(y[4]).show(),o.scrollbar?u.restScrollbar(e):u.setScrollbar(e),i.show()},h.full=function(t){var i=m("#"+y[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&h.restore(t),i.data("maxminStatus","max"),u.record(i),y.html.attr("layer-full")||u.setScrollbar(t),setTimeout(function(){var e="fixed"===i.css("position");h.style(t,{top:e?0:d.scrollTop(),left:e?0:d.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},h.title=function(e,t){m("#"+y[0]+(t||h.index)).find(y[1]).html(e)},h.close=function(o,s){var l,e,r=(t=m("."+y[0]).children("#"+o).closest("."+y[0]))[0]?(o=t.attr("times"),t):m("#"+y[0]+o),c=r.attr("type"),t=r.data("config")||{},f=t.id&&t.hideOnClose;r[0]&&(l={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[t.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(f)return r.removeClass("layer-anim "+l),r.hide();if(c===u.type[1]&&"object"===r.attr("conType")){r.children(":not(."+y[5]+")").remove();for(var t=r.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===u.type[2])try{var n=m("#"+y[4]+o)[0];n.contentWindow.document.write(""),n.contentWindow.close(),r.find("."+y[5])[0].removeChild(n)}catch(a){}r[0].innerHTML="",r.remove()}"function"==typeof u.end[o]&&u.end[o](),delete u.end[o],"function"==typeof s&&s(),u.events.resize[o]&&(d.off("resize",u.events.resize[o]),delete u.events.resize[o])},m("#"+y.SHADE+o)[f?"hide":"remove"](),t.isOutAnim&&r.addClass("layer-anim "+l),6==h.ie&&u.reselect(),u.restScrollbar(o),"string"==typeof r.attr("minLeft")&&(u.minStackIndex--,u.minStackArr.push(r.attr("minLeft"))),h.ie&&h.ie<10||!t.isOutAnim?e():setTimeout(function(){e()},200))},h.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+y[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&h.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},h.closeLast=function(e){h.close(m(".layui-layer-"+(e=e||"page")+":last").attr("times"))},h.cache||{}),g=function(e){return i.skin?" "+i.skin+" "+i.skin+"-"+e:""};h.prompt=function(i,n){var e="",t="";"function"==typeof(i=i||{})&&(n=i),i.area&&(e='style="width: '+(o=i.area)[0]+"; height: "+o[1]+';"',delete i.area),i.placeholder&&(t=' placeholder="'+i.placeholder+'"');var a,o=2==i.formType?'":'",s=i.success;return delete i.success,h.open(m.extend({type:1,btn:["确定","取消"],content:o,skin:"layui-layer-prompt"+g("prompt"),maxWidth:d.width(),success:function(e){(a=e.find(".layui-layer-input")).val(i.value||"").focus(),"function"==typeof s&&s(e)},resize:!1,yes:function(e){var t=a.val();t.length>(i.maxlength||500)?h.tips("最多输入"+(i.maxlength||500)+"个字数",a,{tips:1}):n&&n(t,e,a)}},i))},h.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,h.open(m.extend({type:1,skin:"layui-layer-tab"+g("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
                                          '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
                                        ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},h.photos=function(n,e,a){var o={};if((n=m.extend(!0,{toolbar:!0,footer:!0},n)).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},s=i.data||[],l=i.start||0,r=n.success;if(o.imgIndex=1+(0|l),n.img=n.img||"img",delete n.success,t){if(0===s.length)return h.msg("没有图片")}else{var c=m(n.photos),f=function(){s=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),s.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===s.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");h.photos(m.extend(n,{photos:{start:e,data:s,tab:n.tab},full:n.full}),!0)}),!e)return}o.imgprev=function(e){o.imgIndex--,o.imgIndex<1&&(o.imgIndex=s.length),o.tabimg(e)},o.imgnext=function(e,t){o.imgIndex++,o.imgIndex>s.length&&(o.imgIndex=1,t)||o.tabimg(e)},o.keyup=function(e){var t;o.end||(t=e.keyCode,e.preventDefault(),37===t?o.imgprev(!0):39===t?o.imgnext(!0):27===t&&h.close(o.index))},o.tabimg=function(e){if(!(s.length<=1))return i.start=o.imgIndex-1,h.close(o.index),h.photos(n,!0,e)},o.isNumber=function(e){return"number"==typeof e&&!isNaN(e)},o.image={},o.getTransform=function(e){var t=[],i=e.rotate,n=e.scaleX,e=e.scale;return o.isNumber(i)&&0!==i&&t.push("rotate("+i+"deg)"),o.isNumber(n)&&1!==n&&t.push("scaleX("+n+")"),o.isNumber(e)&&t.push("scale("+e+")"),t.length?t.join(" "):"none"},o.event=function(e,i,n){o.main.find(".layui-layer-photos-prev").on("click",function(e){e.preventDefault(),o.imgprev(!0)}),o.main.find(".layui-layer-photos-next").on("click",function(e){e.preventDefault(),o.imgnext(!0)}),m(document).on("keyup",o.keyup),e.off("click").on("click","*[toolbar-event]",function(){var e=m(this);switch(e.attr("toolbar-event")){case"rotate":o.image.rotate=((o.image.rotate||0)+Number(e.attr("data-option")))%360,o.imgElem.css({transform:o.getTransform(o.image)});break;case"scalex":o.image.scaleX=-1===o.image.scaleX?1:-1,o.imgElem.css({transform:o.getTransform(o.image)});break;case"zoom":var t=Number(e.attr("data-option"));o.image.scale=(o.image.scale||1)+t,t<0&&o.image.scale<0-t&&(o.image.scale=0-t),o.imgElem.css({transform:o.getTransform(o.image)});break;case"reset":o.image.scaleX=1,o.image.scale=1,o.image.rotate=0,o.imgElem.css({transform:"none"});break;case"close":h.close(i)}n.offset(),n.auto(i)})},o.loadi=h.load(1,{shade:!("shade"in n)&&.9,scrollbar:!1});var t=s[l].src,d=function(e){h.close(o.loadi);var t,i=s[l].alt||"";a&&(n.anim=-1),o.index=h.open(m.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[m(p).width()-100,m(p).height()-100],!n.full&&(e[0]>t[0]||e[1]>t[1])&&((t=[e[0]/t[0],e[1]/t[1]])[1]'+i+''+(t=['
                                        '],1','','',"
                                        "].join("")),n.toolbar&&t.push(['
                                        ','','','','','','',"
                                        "].join("")),n.footer&&t.push(['"].join("")),t.push("
                                        "),t.join(""))+"",success:function(e,t,i){o.main=e.find(".layer-layer-photos-main"),o.footer=e.find(".layui-layer-photos-footer"),o.imgElem=o.main.children("img"),o.event(e,t,i),n.tab&&n.tab(s[l],e),"function"==typeof r&&r(e)},end:function(){o.end=!0,m(document).off("keyup",o.keyup)}},n))},u=function(){h.close(o.loadi),h.msg("当前图片地址异常
                                        是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){1").addClass(o));layui.each(i.bars,function(t,e){var n=s('
                                      • ');n.addClass(e.icon).attr({"lay-type":e.type,style:e.style||(i.bgcolor?"background-color: "+i.bgcolor:"")}).html(e.content),n.on("click",function(){var t=s(this).attr("lay-type");"top"===t&&("body"===i.target?s("html,body"):c).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,t)}),"object"===layui.type(i.on)&&layui.each(i.on,function(t,e){n.on(t,function(){var t=s(this).attr("lay-type");"function"==typeof e&&e.call(this,t)})}),"top"===e.type&&(n.addClass("layui-fixbar-top"),r=n),l.append(n)}),u.find("."+o).remove(),"object"==typeof i.css&&l.css(i.css),u.append(l),r&&(e=function e(){return c.scrollTop()>=i.margin?t||(r.show(),t=1):t&&(r.hide(),t=0),e}()),c.on("scroll",function(){e&&(clearTimeout(n),n=setTimeout(function(){e()},100))})},countdown:function(i){i=s.extend(!0,{date:new Date,now:new Date},i);var r=arguments,o=(1]|&(?=#[a-zA-Z0-9]+)/g.test(t+="")?t.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):t},unescape:function(t){return t!==undefined&&null!==t||(t=""),(t+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(t){var e=(t=t||{}).window||window.open(t.url||"",t.target,t.specs);t.url||(e.document.open("text/html","replace"),e.document.write(t.content||""),e.document.close())},toVisibleArea:function(t){var e,n,i,r,o,a,u,c;(t=s.extend({margin:160,duration:200,type:"y"},t)).scrollElem[0]&&t.thisElem[0]&&(e=t.scrollElem,u=t.thisElem,i=(o="y"===t.type)?"top":"left",r=e[n=o?"scrollTop":"scrollLeft"](),o=e[o?"height":"width"](),a=e.offset()[i],c={},((u=u.offset()[i]-a)>o-t.margin||u."+v,E=function(e){var i=this;i.index=++f.index,i.config=c.extend({},i.config,f.config,e),i.init()};E.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:300,shade:0},E.prototype.reload=function(e,i){var t=this;t.config=c.extend({},t.config,e),t.init(!0,i)},E.prototype.init=function(e,i){var t,n=this,a=n.config,l=c(a.elem);return 1');return 0No data
                                      • '),e},s=function(r,e){return layui.each(e,function(e,i){var t,n=i[u.children]&&0",(t="href"in i?''+l+"":l,n?'
                                        '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
                                        ":'
                                        '+t+"
                                        "),""].join(""))).data("item",i),n&&(a=c('
                                        '),t=c("
                                          "),"parent"===o?(a.append(s(t,i[u.children])),l.append(a)):l.append(s(t,i[u.children]))),r.append(l))}),r},a=['
                                          ',"
                                          "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(y+"_opened")||(l.elemView=c("."+g+'[lay-id="'+d.id+'"]'),"reloadData"===i&&l.elemView.length?l.elemView.html(d.content||n()):(l.elemView=c(a),l.elemView.append(d.content||n()),d.className&&l.elemView.addClass(d.className),d.style&&l.elemView.attr("style",d.style),f.thisId=d.id,l.remove(),t.append(l.elemView),d.elem.data(y+"_opened",!0),e=d.shade?'
                                          ':"",l.elemView.before(e),"mouseenter"===d.trigger&&l.elemView.on("mouseenter",function(){clearTimeout(h.timer)}).on("mouseleave",function(){l.delayRemove()})),l.position(),(h.prevElem=l.elemView).data("prevElem",d.elem),l.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),l.elemView.find(".layui-menu li").on("click",function(e){var i=c(this),t=i.data("item")||{},n=t[u.children]&&0n.width()&&(t.addClass(x),(i=t[0].getBoundingClientRect()).left<0&&t.removeClass(x)),i.bottom>n.height()&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5)))}).on("mouseleave",t,function(e){var i=c(this).children("."+V);i.removeClass(x),i.css("margin-top",0)}),f.close=function(e){e=h.getThis(e);return e?(e.remove(),h.call(e)):this},f.reload=function(e,i,t){e=h.getThis(e);return e?(e.reload(i,t),h.call(e)):this},f.reloadData=function(){var t=c.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),f.reload.apply(null,t)},f.render=function(e){e=new E(e);return h.call(e)},e(r,f)});layui.define(["jquery","lay"],function(e){"use strict";var g=layui.$,c=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var i=this;return i.config=g.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},t="slider",v="layui-disabled",x="layui-slider-bar",b="layui-slider-wrap",T="layui-slider-wrap-btn",w="layui-slider-tips",M="layui-slider-input-txt",L="layui-slider-hover",i=function(e){var i=this;i.index=++m.index,i.config=g.extend({},i.config,m.config,e),i.render()};i.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},i.prototype.render=function(){var a=this,n=a.config,e=g(n.elem);if(1n.min?e:n.min,n.value[1]=i>n.min?i:n.min,n.value[0]=n.value[0]>n.max?n.max:n.value[0],n.value[1]=n.value[1]>n.max?n.max:n.value[1],i=Math.floor((n.value[0]-n.min)/(n.max-n.min)*100),t=(s=Math.floor((n.value[1]-n.min)/(n.max-n.min)*100))-i+"%",i+="%",s+="%"):("object"==typeof n.value&&(n.value=Math.min.apply(null,n.value)),n.valuen.max&&(n.value=n.max),t=Math.floor((n.value-n.min)/(n.max-n.min)*100)+"%");var l,e=n.disabled?"#c2c2c2":n.theme,i='
                                          '+(n.tips?'
                                          ':"")+'
                                          '+(n.range?'
                                          ':"")+"
                                          ",t=g(n.elem),s=t.next(".layui-slider");if(s[0]&&s.remove(),a.elemTemp=g(i),n.range?(a.elemTemp.find("."+b).eq(0).data("value",n.value[0]),a.elemTemp.find("."+b).eq(1).data("value",n.value[1])):a.elemTemp.find("."+b).data("value",n.value),t.html(a.elemTemp),"vertical"===n.type&&a.elemTemp.height(n.height+"px"),n.showstep){for(var o=(n.max-n.min)/n.step,r="",u=1;u<1+o;u++){var d=100*u/o;d<100&&(r+='
                                          ')}a.elemTemp.append(r)}n.input&&!n.range&&(e=g('
                                          '),t.css("position","relative"),t.append(e),t.find("."+M).children("input").val(n.value),"vertical"===n.type?e.css({left:0,top:-48}):a.elemTemp.css("margin-right",e.outerWidth()+15)),n.disabled?(a.elemTemp.addClass(v),a.elemTemp.find("."+T).addClass(v)):a.slide(),a.elemTemp.find("."+T).on("mouseover",function(){var e="vertical"===n.type?n.height:a.elemTemp[0].offsetWidth,i=a.elemTemp.find("."+b),t=("vertical"===n.type?e-g(this).parent()[0].offsetTop-i.height():g(this).parent()[0].offsetLeft)/e*100,i=g(this).parent().data("value"),e=n.setTips?n.setTips(i):i;a.elemTemp.find("."+w).html(e),clearTimeout(l),l=setTimeout(function(){"vertical"===n.type?a.elemTemp.find("."+w).css({bottom:t+"%","margin-bottom":"20px",display:"inline-block"}):a.elemTemp.find("."+w).css({left:t+"%",display:"inline-block"})},300)}).on("mouseout",function(){clearTimeout(l),a.elemTemp.find("."+w).css("display","none")})},i.prototype.slide=function(e,i,t){var o=this,r=o.config,u=o.elemTemp,d=function(){return"vertical"===r.type?r.height:u[0].offsetWidth},c=u.find("."+b),m=u.next(".layui-slider-input"),v=m.children("."+M).children("input").val(),p=100/((r.max-r.min)/Math.ceil(r.step)),f=function(e,i,t){e=(e=100<(e=100a[1]&&a.reverse(),o.value=r.range?a:l,r.change&&r.change(o.value),"done"===t&&r.done&&r.done(o.value)},h=function(e){var i=e/d()*100/p,t=Math.round(i)*p;return t=e==d()?Math.ceil(i)*p:t},y=g(['
                                          d()?d():i)/d()*100/p;f(i,l),s.addClass(L),u.find("."+w).show(),e.preventDefault()},i=function(){s.removeClass(L),u.find("."+w).hide()},t=function(){i&&i(),y.remove(),r.done&&r.done(o.value)},g("#LAY-slider-moving")[0]||g("body").append(y),y.on("mousemove",e),y.on("mouseup",t).on("mouseleave",t)})}),u.on("click",function(e){var i=g("."+T),t=g(this);!i.is(event.target)&&0===i.has(event.target).length&&i.length&&(t=(i=(i=(i="vertical"===r.type?d()-e.clientY+t.offset().top-g(window).scrollTop():e.clientX-t.offset().left-g(window).scrollLeft())<0?0:i)>d()?d():i)/d()*100/p,i=r.range?"vertical"===r.type?Math.abs(i-parseInt(g(c[0]).css("bottom")))>Math.abs(i-parseInt(g(c[1]).css("bottom")))?1:0:Math.abs(i-c[0].offsetLeft)>Math.abs(i-c[1].offsetLeft)?1:0:0,f(t,i,"done"),e.preventDefault())}),m.children(".layui-slider-input-btn").children("i").each(function(i){g(this).on("click",function(){v=m.children("."+M).children("input").val();var e=((v=1==i?v-r.stepr.max?r.max:Number(v)+r.step)-r.min)/(r.max-r.min)*100/p;f(e,0,"done")})});var a=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)r.max?r.max:e,((this.value=e)-r.min)/(r.max-r.min)*100/p);f(e,0,"done")};m.children("."+M).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),a.call(this))}).on("change",a)},i.prototype.events=function(){this.config},m.render=function(e){e=new i(e);return function(){var t=this,a=t.config;return{setValue:function(e,i){return e=(e=e>a.max?a.max:e)',"",'','',"","","
                                          "].join("")),r=i.elem=m(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),r.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:r.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,r=e.elemColorBox[0],t=e.elemPicker=m(['
                                          ','
                                          ','
                                          ','
                                          ','
                                          ','
                                          ',"
                                          ",'
                                          ','
                                          ',"
                                          ","
                                          ",'
                                          ','
                                          ','
                                          ',"
                                          ","
                                          ",i.predefine?(o=['
                                          '],layui.each(i.colors,function(e,i){o.push(['
                                          ','
                                          ',"
                                          "].join(""))}),o.push("
                                          "),o.join("")):"",'
                                          ','
                                          ','',"
                                          ",'
                                          ','','',"","
                                          "].join(""));e.elemColorBox.find("."+C)[0];m(a)[0]&&m(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),m("body").append(t)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=r.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=m("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close&&i.close(this.color)),this},d.prototype.position=function(){var e=this,i=e.config;return t.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),r=i.elemPicker.find("."+M),t=o[0].style.backgroundColor;t?(e=Y(L(t)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?r.find("input").val(t):"rgba"===o?(o=L(t),3===(t.match(/[0-9]{1,3}/g)||[]).length?(r.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+T).css("left",280)):(r.find("input").val(t),t=280*t.slice(t.lastIndexOf(",")+1,t.length-1),i.elemPicker.find("."+T).css("left",t)),i.elemPicker.find("."+D)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):r.find("input").val("#"+F(e))):(i.select(0,100,100),r.find("input").val(""),i.elemPicker.find("."+D)[0].style.background="",i.elemPicker.find("."+T).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),r=n.elemPicker.find("."+E),f=n.elemPicker.find("."+D),u=n.elemPicker.find("."+T),g=e[0].offsetTop/180*360,p=100-(r[0].offsetTop+3)/180*100,h=(r[0].offsetLeft+3)/260*100,v=Math.round(u[0].offsetLeft/280*100)/100,b=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),y=function(e,i,o,r){n.select(e,i,o);var t=j({h:e,s:i,b:o}),e=F({h:e,s:i,b:o}),i=n.elemPicker.find("."+M).find("input");b.addClass(x).removeClass(P),c[0].style.background="rgb("+t.r+", "+t.g+", "+t.b+")","torgb"===a?i.val("rgb("+t.r+", "+t.g+", "+t.b+")"):"rgba"===a?(u.css("left",280*r),i.val("rgba("+t.r+", "+t.g+", "+t.b+", "+r+")"),c[0].style.background="rgba("+t.r+", "+t.g+", "+t.b+", "+r+")",f[0].style.background="linear-gradient(to right, rgba("+t.r+", "+t.g+", "+t.b+", 0), rgb("+t.r+", "+t.g+", "+t.b+"))"):i.val("#"+e),l.change&&l.change(n.elemPicker.find("."+M).find("input").val())},o=m(['
                                          '].join("")),k=function(e){m("#LAY-colorpicker-moving")[0]||m("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var r=this.offsetTop,t=e.clientY;k(function(e){var i=r+(e.clientY-t),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;y(g=o,h,p,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-m(this).offset().top+H.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;y(g=i,h,p,v),e.preventDefault()}),r.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),k(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),r=d[0].offsetHeight-3,t=d[0].offsetWidth-3,t=((o=t<(o=o<-3?-3:o)?t:o)+3)/260*100,o=100-((i=r<(i=i<-3?-3:i)?r:i)+3)/180*100;y(g,h=t,p=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-m(this).offset().top-3+H.scrollTop(),o=e.clientX-m(this).offset().left-3+H.scrollLeft(),o=((i=i<-3?-3:i)>this.offsetHeight-3&&(i=this.offsetHeight-3),((o=(o=o<-3?-3:o)>this.offsetWidth-3?this.offsetWidth-3:o)+3)/260*100),i=100-(i+3)/180*100;y(g,h=o,p=i,v),layui.stope(e),e.preventDefault(),r.trigger(e,"mousedown")}),u.on("mousedown",function(e){var r=this.offsetLeft,t=e.clientX;k(function(e){var i=r+(e.clientX-t),o=f[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);y(g,h,p,v=o),e.preventDefault()}),e.preventDefault()}),f.on("click",function(e){var i=e.clientX-m(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);y(g,h,p,v=i),e.preventDefault()}),i.each(function(){m(this).on("click",function(){m(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(L(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);g=i.h,h=i.s,p=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,y(i.h,i.s,i.b,o)})})},d.prototype.select=function(e,i,o,r){this.config;var t=F({h:e,s:100,b:100}),e=(F({h:e,s:i,b:o}),e/360*180),o=180-o/100*180-3,i=i/100*260-3;this.elemPicker.find("."+B).css("top",e),this.elemPicker.find("."+I)[0].style.background="#"+t,this.elemPicker.find("."+E).css({top:o,left:i})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+M+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,r,t,n,l=d.val();if(-1>16,g:(65280&t)>>8,b:255&t},r=Y(n),s[0].style.background=o="#"+F(r),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i)return c.select(r.h,r.s,r.b,i),void(a.change&&a.change(o));c.color=l,a.done&&a.done(l),c.removePicker()}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=m(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=m(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),m(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,r;!n.thisId||(i=l.getThis(n.thisId))&&(o=i.config,r=i.elemColorBox.find("."+C),m(e.target).hasClass(c)||m(e.target).parents("."+c)[0]||m(e.target).hasClass(a.replace(/\./g,""))||m(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(L(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),r[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),H.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!m(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(r,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),o="element",c="layui-this",h="layui-show",r=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,o,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(r),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
                                          '+(i.content||"")+"
                                          "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),g.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(r).find('>li[lay-id="'+i+'"]');return g.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(r).find('>li[lay-id="'+i+'"]');return g.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(this).index();g.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",l="layui-nav-bar",p="layui-nav-tree",b="layui-nav-child",v="layui-nav-more",m="layui-anim layui-anim-upbit",g={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(c).siblings().removeClass(c),i.eq(t).addClass(h).siblings().removeClass(h)),layui.event.call(this,o,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(c)&&(i.next()[0]&&i.next().is("li")?g.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&g.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){g.tabAuto()},50),layui.event.call(this,o,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t,i=u(this),a=i.children(".layui-tab-title"),e=(i.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),e=u('');c===window&&d.ie,i.attr("lay-allowclose")&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||((t=u('')).on("click",g.tabDelete),i.append(t))}),"string"!=typeof i.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(t=a.find("li").eq(0).height())+t/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(e),i.attr("overflow",""),e.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),i.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.parents(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+b),n="string"==typeof e.attr("lay-unselect");"javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+c).removeClass(c),e.addClass(c)),i.hasClass(p)&&(l.removeClass(m),l[0]&&(e["none"===l.css("display")?"addClass":"removeClass"](f+"ed"),"all"===i.attr("lay-shrink")&&e.siblings().removeClass(f+"ed"))),layui.event.call(this,o,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,o,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){g.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+l)[0]||(i.append(a),(i.hasClass(p)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+b);i.hasClass(p)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(m),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+v).addClass(v+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(p)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+b).removeClass(h),i.find("."+v).removeClass(v+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(p)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+b)[0]&&!t.children("."+v)[0]&&t.append(''),t.off("click",g.clickThis).on("click",g.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",g.collapse).on("click",g.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",g.tabClick),u(window).on("resize",g.tabAuto),t(o,a)});layui.define(["lay","layer"],function(e){"use strict";var x=layui.$,i=layui.layer,b=layui.device(),t={config:{},set:function(e){var i=this;return i.config=x.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,n,e,i)}},n="upload",a="layui-upload-file",o="layui-upload-form",F="layui-upload-iframe",w="layui-upload-choose",L="UPLOADING",j=function(e){var i=this;i.config=x.extend({},i.config,t.config,e),i.render()};j.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1,text:{"cross-domain":"Cross-domain requests are not supported","data-format-error":"Please return JSON data format","check-error":"",error:"","limit-number":null,"limit-size":null}},j.prototype.render=function(){var e=this,i=e.config;i.elem=x(i.elem),i.bindAction=x(i.bindAction),e.file(),e.events()},j.prototype.file=function(){var e=this,i=e.config,t=e.elemFile=x(['"].join("")),n=i.elem.next();(n.hasClass(a)||n.hasClass(o))&&n.remove(),b.ie&&b.ie<10&&i.elem.wrap('
                                          '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(t),b.ie&&b.ie<10&&e.initIE()},j.prototype.initIE=function(){var t,e=this.config,i=x(''),n=x(['
                                          ',"
                                          "].join(""));x("#"+F)[0]||x("body").append(i),e.elem.next().hasClass(o)||(this.elemFile.wrap(n),e.elem.next("."+o).append((t=[],layui.each(e.data,function(e,i){i="function"==typeof i?i():i,t.push('')}),t.join(""))))},j.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},j.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},j.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,i){var t=new FileReader;t.readAsDataURL(i),t.onload=function(){n&&n(e,i,this.result)}})},j.prototype.upload=function(e,i){var t,n,a,o,u=this,c=u.config,f=c.text||{},l=u.elemFile[0],s=function(){return e||u.files||u.chooseFiles||l.files},r=function(){var i=0,o=0,l=s(),r=function(){c.multiple&&i+o===u.fileLength&&"function"==typeof c.allDone&&c.allDone({total:u.fileLength,successful:i,failed:o})},t=function(t){var n=new FormData,a=function(e,i){if(i[L])return delete l[e],!0};if(layui.each(c.data,function(e,i){i="function"==typeof i?i():i,n.append(e,i)}),t.unified)layui.each(l,function(e,i){a(e,i)||(i[L]=!0,n.append(c.field,i))});else{if(a(t.index,t.file))return;n.append(c.field,t.file)}t.file[L]=!0;var e={url:c.url,type:"post",data:n,contentType:!1,processData:!1,headers:c.headers||{},success:function(e){c.unified?i+=u.fileLength:i++,d(t.index,e),r()},error:function(e){c.unified?o+=u.fileLength:o++,u.msg(f.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
                                          ")),m(t.index),r()}};c.dataType?e.dataType=c.dataType:"json"===c.force&&(e.dataType=c.force),"function"==typeof c.progress&&(e.xhr=function(){var e=x.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var i;e.lengthComputable&&(i=Math.floor(e.loaded/e.total*100),c.progress(i,(c.item||c.elem)[0],e,t.index))}),e}),x.ajax(e)};c.unified?t({unified:!0,index:0}):layui.each(l,function(e,i){t({index:e,file:i})})},p=function(){var n=x("#"+F);u.elemFile.parent().submit(),clearInterval(j.timer),j.timer=setInterval(function(){var e,i=n.contents().find("body");try{e=i.text()}catch(t){u.msg(f["cross-domain"]),clearInterval(j.timer),m()}e&&(clearInterval(j.timer),i.html(""),d(0,e))},30)},d=function(e,i){if(u.elemFile.next("."+w).remove(),l.value="","json"===c.force&&"object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},u.msg(f["data-format-error"])}"function"==typeof c.done&&c.done(i,e||0,function(e){u.upload(e)})},m=function(e){c.auto&&(l.value=""),"function"==typeof c.error&&c.error(e||0,function(e){u.upload(e)})},h=c.exts,g=(n=[],layui.each(e||u.chooseFiles,function(e,i){n.push(i.name)}),n),v={preview:function(e){u.preview(e)},upload:function(e,i){var t={};t[e]=i,u.upload(t)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,i){u.files[e]=i}),u.files},resetFile:function(e,i,t){i=new File([i],t);u.files=u.files||{},u.files[e]=i}},y={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[c.accept]||"\u6587\u4ef6",g=0===g.length?l.value.match(/[^\/\\]+\..+/g)||[]||"":g;if(0!==g.length){switch(c.accept){case"file":layui.each(g,function(e,i){if(h&&!RegExp(".\\.("+h+")$","i").test(escape(i)))return t=!0});break;case"video":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(i)))return t=!0});break;case"audio":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(i)))return t=!0});break;default:layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"jpg|png|gif|bmp|jpeg|svg")+")$","i").test(escape(i)))return t=!0})}if(t)return u.msg(f["check-error"]||"\u9009\u62e9\u7684"+y+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==i&&!c.auto||(c.choose&&c.choose(v),"choose"!==i)){if(u.fileLength=(a=0,y=s(),layui.each(y,function(){a++}),a),c.number&&u.fileLength>c.number)return u.msg("function"==typeof f["limit-number"]?f["limit-number"](c,u.fileLength):"\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+c.number+" \u4e2a\u6587\u4ef6
                                          \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+u.fileLength+" \u4e2a\u6587\u4ef6");if(01024*c.size&&(i=1<=(i=c.size/1024)?i.toFixed(2)+"MB":c.size+"KB",l.value="",o=i)}),o)return u.msg("function"==typeof f["limit-size"]?f["limit-size"](c,o):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!c.before||!1!==c.before(v))b.ie?(9'+e+"")},r=function(){var e=x(this);(e.attr("lay-data")||e.attr("lay-options"))&&(n.config=x.extend({},a,lay.options(this,{attr:e.attr("lay-data")?"lay-data":null})))};a.elem.off("upload.start").on("upload.start",function(){var e=x(this);r.call(this),n.config.item=e,n.elemFile[0].click()}),b.ie&&b.ie<10||a.elem.off("upload.over").on("upload.over",function(){x(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){x(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,i){var t=x(this),i=i.originalEvent.dataTransfer.files||[];t.removeAttr("lay-over"),r.call(this),o(i),a.auto?n.upload():l(i)}),n.elemFile.off("upload.change").on("upload.change",function(){var e=this.files||[];0!==e.length&&(r.call(this),o(e),a.auto?n.upload():l(e))}),a.bindAction.off("upload.action").on("upload.action",function(){n.upload()}),a.elem.data("haveEvents")||(n.elemFile.on("change",function(){x(this).trigger("upload.change")}),a.elem.on("click",function(){n.isFile()||x(this).trigger("upload.start")}),a.drag&&a.elem.on("dragover",function(e){e.preventDefault(),x(this).trigger("upload.over")}).on("dragleave",function(e){x(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),x(this).trigger("upload.drop",e)}),a.bindAction.on("click",function(){x(this).trigger("upload.action")}),a.elem.data("haveEvents",!0))},t.render=function(e){e=new j(e);return function(){var i=this;return{upload:function(e){i.upload.call(i,e)},reload:function(e){i.reload.call(i,e)},config:i.config}}.call(e)},e(n,t)});layui.define(["lay","layer","util"],function(e){"use strict";var C=layui.$,h=layui.layer,d=layui.util,l=layui.hint(),w=(layui.device(),"form"),o=".layui-form",T="layui-this",N="layui-hide",$="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e))return"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"},phone:function(e){if(e&&!/^1\d{10}$/.test(e))return"\u624b\u673a\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"},email:function(e){if(e&&!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))return"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"},url:function(e){if(e&&!/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/.test(e))return"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"},number:function(e){if(e&&isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:function(e){if(e&&!/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/.test(e))return"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"},identity:function(e){if(e&&!/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(e))return"\u8eab\u4efd\u8bc1\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"}},autocomplete:null}},i=(t.prototype.set=function(e){return C.extend(!0,this.config,e),this},t.prototype.verify=function(e){return C.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return C(o+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,w,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=C(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;C(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=C(o+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){e=e||a.find("input,textarea");i.autocomplete&&e.attr("autocomplete",i.autocomplete),a.find("input[lay-affix],textarea[lay-affix]").each(function(){var r=C(this),s=r.attr("lay-affix"),o="layui-input-wrap",c="layui-input-suffix",u="layui-input-affix",e=r.is("[disabled]")||r.is("[readonly]"),d=function(e,t){(e=C(e))[0]&&e[C.trim(t)?"removeClass":"addClass"](N)},n=function(i){i=C.extend({},f[s]||{value:s},i,lay.options(r[0]));var a,t=C('
                                          '),e=layui.isArray(i.value)?i.value:[i.value],e=C((a=[],layui.each(e,function(e,t){a.push('')}),a.join(""))),n=(t.append(e),i.split&&t.addClass("layui-input-split"),i.className&&t.addClass(i.className),r.next("."+u)),l=(n[0]&&n.remove(),r.parent().hasClass(o)||r.wrap('
                                          '),r.next("."+c));l[0]?((n=l.find("."+u))[0]&&n.remove(),l.prepend(t),r.css("padding-right",function(){return(r.closest(".layui-input-group")[0]?0:l.outerWidth())+t.outerWidth()})):(t.addClass(c),r.after(t)),"auto"===i.show&&d(t,r.val()),r.on("input propertychange",function(){var e=this.value;"auto"===i.show&&d(t,e)}),e.on("click",function(){var e=r.attr("lay-filter");C(this).hasClass($)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,w,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},f={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),d(C(this).parent(),null)},show:"auto",disabled:e},number:{value:["up","down"],split:!0,className:"layui-input-number",disabled:r.is("[disabled]"),click:function(e){var t=C(this).index(),i=e.val(),a=i,n=Number(e.attr("step"))||1,l=Number(e.attr("min")),r=Number(e.attr("max"));isNaN(i)||(i=Number(i),r<(i=(i=t?i-n:i+n)F.height()&&t<=e&&a.addClass(m+"up"),o()},n=function(e){a.removeClass(m+"ed "+m+"up"),d.blur(),s=null,e||l(d.val(),function(e){var t=c[0].selectedIndex;e&&(k=C(c[0].options[t]).html(),0===t&&k===d.attr("placeholder")&&(k=""),d.val(k||""))})},o=function(){var e,t,i=f.children("dd."+T);i[0]&&(e=i.position().top,t=f.height(),i=i.height(),t\u65e0\u5339\u914d\u9879

                                          '):f.find("."+x).remove()},"keyup"),""===t&&(c.val(""),f.find("."+T).removeClass(T),(c[0].options[0]||{}).value||f.children("dd:eq(0)").addClass(T),f.find("."+x).remove()),o()}).on("blur",function(e){var t=c[0].selectedIndex;p=d,k=C(c[0].options[t]).text(),0===t&&k===d.attr("placeholder")&&(k=""),setTimeout(function(){l(d.val(),function(e){k||d.val("")},"blur")},200)}),h.on("click",function(){var e=C(this),t=e.attr("lay-value"),i=c.attr("lay-filter");return e.hasClass($)||(e.hasClass("layui-select-tips")?d.val(""):(d.val(e.text()),e.addClass(T)),e.siblings().removeClass(T),c.val(t).removeClass("layui-form-danger"),layui.event.call(this,w,"select("+i+")",{elem:c[0],value:t,othis:a}),n(!0)),!1}),a.find("dl>dt").on("click",function(e){return!1}),C(document).off("click",b).on("click",b))};e.each(function(e,t){var i=C(this),a=i.next("."+m),n=this.disabled,l=t.value,r=C(t.options[t.selectedIndex]),t=t.options[0];if("string"==typeof i.attr("lay-ignore"))return i.show();var s,o="string"==typeof i.attr("lay-search"),t=t&&!t.value&&t.innerHTML||c,r=C(['
                                          ','
                                          ','','
                                          ','
                                          ',(t=i.find("*"),s=[],layui.each(t,function(e,t){var i=t.tagName.toLowerCase();0!==e||t.value||"optgroup"===i?"optgroup"===i?s.push("
                                          "+t.label+"
                                          "):s.push('
                                          '+C.trim(t.innerHTML)+"
                                          "):s.push('
                                          '+C.trim(t.innerHTML||c)+"
                                          ")}),0===s.length&&s.push('
                                          \u6ca1\u6709\u9009\u9879
                                          '),s.join("")+"
                                          "),"
                                          "].join(""));a[0]&&a.remove(),i.after(r),u.call(this,r,n,o)})},checkbox:function(e){var o={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],"switch":["layui-form-switch","layui-form-onswitch","switch"],SUBTRA:"layui-icon-indeterminate"},e=e||a.find("input[type=checkbox]");e.each(function(e,t){var i=C(this),a=i.attr("lay-skin")||"primary",n=d.escape(C.trim(t.title||(t.title=i.attr("lay-text")||""))),l=this.disabled,r=o[a]||o.checkbox,s=i.next("."+r[0]);if(s[0]&&s.remove(),i.next("[lay-checkbox]")[0]&&(n=i.next().html()||""),n="switch"===a?n.split("|"):[n],"string"==typeof i.attr("lay-ignore"))return i.show();l=C(['
                                          ",(s={checkbox:[n[0]?"
                                          "+n[0]+"
                                          ":"primary"===a?"":"
                                          ",''].join(""),"switch":"
                                          "+((t.checked?n[0]:n[1])||"")+"
                                          "})[a]||s.checkbox,"
                                          "].join(""));i.after(l),function(a,n){var l=C(this);a.on("click",function(){var e=C(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+o.SUBTRA).removeClass(o.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],w,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var r="layui-form-radio",s=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=C(this),a=i.next("."+r),n=this.disabled;if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();n=C(['
                                          ','',"
                                          "+(a=d.escape(t.title||""),a=i.next("[lay-radio]")[0]?i.next().html():a)+"
                                          ","
                                          "].join(""));i.after(n),function(a){var n=C(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(o),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=C(this).next("."+r);this.checked=!1,e.removeClass(r+"ed"),e.children(".layui-icon").removeClass(l+" "+s[0]).addClass(s[1])}),n[0].checked=!0,a.addClass(r+"ed"),a.children(".layui-icon").addClass(l+" "+s[0]),layui.event.call(n[0],w,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,n)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?C(e).is(o)?(a=C(e),t()):e.each(function(e,t){var i=C(t);i.closest(o).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u,d=this.config.verify,f="layui-form-danger";return!(e=C(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=C(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=C.trim(s.val());if(s.removeClass(f),layui.each(t,function(e,t){var i="",a=d[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n)return"tips"===o?h.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?h.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&h.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(f),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i=C(this),e="string"==typeof e?e:i.attr("lay-filter"),a=this.getFormElem?this.getFormElem(e):i.parents(o).eq(0),n=a.find("*[lay-verify]");if(!r.validate(n))return!1;n=r.getValue(null,a),a={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?a:i.parents("form"))[0],field:n};return"function"==typeof t&&t(a),layui.event.call(this,w,"submit("+e+")",a)}),r=new t,t=C(document),F=C(window);C(function(){r.render()}),t.on("reset",o,function(){var e=C(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",o,i).on("click","*[lay-submit]",i),e(w,r)});layui.define(["lay","laytpl","laypage","form","util"],function(n){"use strict";var f=layui.$,r=layui.lay,m=layui.laytpl,P=layui.laypage,p=layui.layer,v=layui.form,g=layui.util,b=layui.hint(),x=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var t=this;return t.config=f.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,N,e,t)}},w=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){k.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=w.that[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=w.config[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},T=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content;"numbers"===a.type&&(i=e.tplData[k.config.numbersName]);("escape"in a?a:t).escape&&(i=g.escape(i));t=e.text&&a.exportTemplet||a.templet||a.toolbar;return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(f(t).html()||String(i)).render(f.extend({LAY_COL:a},e.tplData))),e.text?f("
                                          "+i+"
                                          ").text():i},N="table",t=".layui-table",R="layui-hide",y="layui-hide-v",h="layui-none",L="layui-table-view",o=".layui-table-header",A=".layui-table-body",D=".layui-table-pageview",_=".layui-table-sort",E="layui-table-checked",W="layui-table-edit",j="layui-table-hover",z="laytable-cell-group",M="layui-table-col-special",H="layui-table-tool-panel",S="layui-table-expanded",F="LAY_TABLE_MOVE_DICT",e=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
                                          ','
                                          ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
                                          ","
                                          "].join("")},a=['',"","
                                          "].join(""),s=[,"{{# if(d.data.toolbar){ }}",'
                                          ','
                                          ','
                                          ',"
                                          ","{{# } }}",'
                                          ',"{{# if(d.data.loading){ }}",'
                                          ','',"
                                          ","{{# } }}","{{# var left, right; }}",'
                                          ',e(),"
                                          ",'
                                          ',a,"
                                          ","{{# if(left){ }}",'
                                          ','
                                          ',e({fixed:!0}),"
                                          ",'
                                          ',a,"
                                          ","
                                          ","{{# }; }}","{{# if(right){ }}",'
                                          ','
                                          ',e({fixed:"right"}),'
                                          ',"
                                          ",'
                                          ',a,"
                                          ","
                                          ","{{# }; }}","
                                          ","{{# if(d.data.totalRow){ }}",'
                                          ','','',"
                                          ","
                                          ","{{# } }}",'
                                          ','
                                          ',"
                                          "].join(""),d=f(window),I=f(document),i=function(e){this.index=++k.index,this.config=f.extend({},this.config,k.config,e),this.render()},c=(i.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},i.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=f(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(w.that[i]=t,(w.config[i]=a).request=f.extend({pageName:"page",limitName:"limit"},a.request),a.response=f.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-\d+$/.test(a.height)?(t.fullHeightGap=a.height.split("-")[1],a.height=d.height()-t.fullHeightGap):a.height&&/^#\w+\S*-\d+$/.test(a.height)&&(i=a.height.split("-"),t.parentHeightGap=i.pop(),t.parentDiv=i.join("-"),a.height=f(t.parentDiv).height()-t.parentHeightGap);var l,e=a.elem,i=e.next("."+L),n=t.elem=f("
                                          ");n.addClass((l=[L,L+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr({"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,"lay-id":a.id,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))}).html(m(s,{open:"{{",close:"}}"}).render({data:a,index:t.index})),t.renderStyle(),i[0]&&i.remove(),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(A),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(".layui-table-fixed-r"),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},i.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},i.prototype.setInit=function(e){var l,a,d=this,r=d.config;if(r.clientWidth=r.width||(l=function(e){var t,a=(e=e||r.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return r.clientWidth;r.height=r.maxHeight||r.height,r.css&&-1===r.css.indexOf(L)&&(a=r.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+L+"-"+d.index+" "+t)}),r.css=a.join("}"));var c=function(a,e,i,l){var n,o;l?(l.key=[r.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,d.initOpts(l),(n=a+(parseInt(l.rowspan)||1)) td:hover > .layui-table-cell{overflow: auto;}"],function(e,t){o.push(a+" "+t)})),l.css&&o.push(l.css),r.style({target:this.elem[0],text:o.join(""),id:"DF-table-"+n})},i.prototype.renderToolbar=function(){var e=this.config,t=['
                                          ','
                                          ','
                                          '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=f(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
                                          ')}),this.layTool.find(".layui-table-tool-self").html(l.join(""))},i.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=f('
                                          ');t.pagebar&&((e=f(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},i.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](R),t.colspan2=l,t.hide=l<1,(a=i.data("parentkey"))&&this.setParentCol(e,a))},i.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},i.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+z)).css("width",0),layui.each(e.get().reverse(),function(){var e=f(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){f(this).hasClass(R)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.cssRules(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"
                                          ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(R),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(D).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth()},i.prototype.page=1,i.prototype.pullData=function(a,t){var e,i,l=this,n=l.config,o=(n.HAS_SET_COLS_PATCH||l.setColsPatch(),n.HAS_SET_COLS_PATCH=!0,n.request),d=n.response,r=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:t.type})},c=function(e,t){l.setColsWidth(),"function"==typeof n.done&&n.done(e,a,e[d.countName],t)};t=t||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),t.renderData?((e={})[d.dataName]=k.cache[l.key],e[d.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[d.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},l.totalRow)),l.renderData({res:e,curr:a,count:e[d.countName],type:t.type,sort:!0}),c(e,"renderData")):n.url?(i={},n.page&&(i[o.pageName]=a,i[o.limitName]=n.limit),o=f.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(),f.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[d.statusName]!=d.statusCode?l.errorView(e[d.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+d.statusName+'": '+d.statusCode):(l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),n.time=(new Date).getTime()-l.startTime+" ms"),c(e)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=a*n.limit-n.limit,o=n.data.concat(),e[d.dataName]=n.page?o.splice(i,n.limit):o,e[d.countName]=n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},n.totalRow)),l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),c(e))},i.prototype.eachCols=function(e){return k.eachCols(null,e,this.config.cols),this},i.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return b.error(t),{}}},i.prototype.getTrHtml=function(a,l,n,e){var s=this,u=s.config,y=e&&e.trs||[],h=e&&e.trs_fixed||[],p=e&&e.trs_fixed_r||[];return n=n||1,layui.each(a,function(e,o){var i=[],d=[],r=[],c=e+u.limit*(n-1)+1;if("object"!=typeof o){a[e]=o={LAY_KEY:o};try{k.cache[s.key][e]=o}catch(t){}}"array"===layui.type(o)&&0===o.length||(o[k.config.numbersName]=c,l||(o[k.config.indexName]=e),s.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=o[e];n!==undefined&&null!==n||(n=""),l.colGroup||(e=['','
                                          "+function(){var e,t=f.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(f(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
                                          "].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&d.push(e),"right"===l.fixed&&r.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+E+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+d.join("")+""),p.push(""+r.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:p}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},i.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,d=t[i.response.dataName]||[],t=t[i.response.totalRowName],r=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(d,o,l,{trs:r,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(r.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,p.close(a.tipsIndex)};return k.cache[a.key]=d,a.layTotal[0==d.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](R),a.layPage.find(D)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](y),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(R),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(R),void(i.page&&(i.page=f.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,P.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},i.prototype.renderTotal=function(e,o){var d,r=this,c=r.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||r.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),r.dataTotal=[],d=[],r.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&T.call(r,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&r.dataTotal.push({field:t.field,total:f("
                                          "+l+"
                                          ").text()}),['','
                                          "+("string"==typeof(a=t.totalRow||c.totalRow)?m(a).render(f.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
                                          "].join(""));d.push(n)}),e=r.layTotal.find(".layui-table-patch"),r.layTotal.find("tbody").html(""+d.join("")+(e.length?e.get(0).outerHTML:"")+""))},i.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},i.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},i.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}),v.render(t))},i.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},i.prototype.setRowChecked=function(a){var e=this,i=e.config,l=e.layBody.find("tr"+("all"===a.index?"":'[data-index="'+a.index+'"]')),t=(a=f.extend({type:"checkbox"},a),k.cache[e.key]),n="checked"in a,o=function(e){return"radio"===a.type||(n?a.checked:!e)},t=(layui.each(t,function(e,t){"array"===layui.type(t)||t[i.disabledName]||(Number(a.index)===e||"all"===a.index?(e=t[i.checkName]=o(t[i.checkName]),l[e?"addClass":"removeClass"](E),"radio"===a.type&&l.siblings().removeClass(E)):"radio"===a.type&&delete t[i.checkName])}),l.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[a.type]||"checkbox")+'"]:not(:disabled)'));t.prop("checked",o(t.last().prop("checked"))),e.syncCheckAll(),e.renderForm(a.type)},i.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(d=l.field,t.layHeader.find("th").each(function(e,t){var a=f(this),i=a.data("field");if(i===l.field)return l.field=a,d=i,!1}));try{var d=d||l.field.data("field"),r=l.field.data("key");if(t.sortKey&&!l.pull&&d===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+r).find(_);t.layHeader.find("th").find(_).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){b.error("Table modules: sort field '"+d+"' not matched")}t.sortKey={field:d,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,d,null,!0):"desc"===l.type?e=layui.sort(o,d,!0,!0):(e=layui.sort(o,k.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:d,type:l.type},layui.event.call(l.field,N,"sort("+n+")",f.extend({config:i},i.initSort)))},i.prototype.loading=function(e){var t=this;t.config.loading&&(e?(t.layInit&&t.layInit.remove(),delete t.layInit,t.layBox.find(".layui-table-init").remove()):(t.layInit=f(['
                                          ','',"
                                          "].join("")),t.layBox.append(t.layInit)))},i.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];r.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),!0})},i.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=d.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap&&(l=f(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135),1
                                          ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(A).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0');a.html(t),u.height&&a.css("max-height",u.height-(s.layTool.outerHeight()||50)),i.find("."+H)[0]||i.append(a),s.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),I.trigger("table.tool.panel.remove"),p.close(s.tipsIndex),t){case"LAYTABLE_COLS":n({list:(a=[],s.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
                                        • "+(t.fieldTitle||t.title||t.field)+"
                                        • ").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=f(e.elem),t=this.checked,a=e.data("key"),i=s.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,s.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](R),l!=i.hide&&s.setParentCol(!t,e),s.resize(),layui.event.call(this,N,"colToggled("+c+")",{col:i,config:u}))})}});break;case"LAYTABLE_EXPORT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});x.ie?p.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):n({list:['
                                        • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
                                        • ','
                                        • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
                                        • '].join(""),done:function(e,t){t.on("click",function(){var e=f(this).data("type");k.exportFile.call(s,u.id,null,e)})}});break;case"LAYTABLE_PRINT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});var o=window.open("about:blank","_blank"),d=[""].join(""),r=f(s.layHeader.html());r.append(s.layMain.find("table").html()),r.append(s.layTotal.find("table").html()),r.find("th.layui-table-patch").remove(),r.find("thead>tr>th."+M).filter(function(e,t){return!f(t).children("."+z).length}).remove(),r.find("tbody>tr>td."+M).remove(),o.document.write(d+r.prop("outerHTML")),o.document.close(),layui.device("edg").edg?(o.onafterprint=o.close,o.print()):(o.print(),o.close())}layui.event.call(this,N,"toolbar("+c+")",f.extend({event:t,config:u},{}))}),s.layHeader.on("click","*[lay-event]",function(e){var t=f(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=s.col(t);layui.event.call(this,N,"colTool("+c+")",f.extend({event:a,config:u,col:t},{}))}),s.layPagebar.on("click","*[lay-event]",function(e){var t=f(this).attr("lay-event");layui.event.call(this,N,"pagebar("+c+")",f.extend({event:t,config:u},{}))}),e.on("mousemove",function(e){var t=f(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(d.allowResize=t.width()-e<=10,o.css("cursor",d.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||o.css("cursor","")}).on("mousedown",function(e){var t,a=f(this);d.allowResize&&(t=a.data("key"),e.preventDefault(),d.offset=[e.clientX,e.clientY],s.cssRules(t,function(e){var t=e.style.width||a.outerWidth();d.rule=e,d.ruleWidth=parseFloat(t),d.minWidth=a.data("minwidth")||u.cellMinWidth,d.maxWidth=a.data("maxwidth")||u.cellMaxWidth}),a.data(F,d),w.eventMoveElem=a)}),w.docEvent||I.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(F)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+L).attr("lay-id"),(a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),p.close(s.tipsIndex))))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+L).attr("lay-id"),(a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),d={},o.css("cursor",""),a.scrollPatch(),t.removeData(F),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],N,"colResized("+n+")",{col:l,config:a.config})})))}),w.docEvent=!0,e.on("click",function(e){var t=f(this),a=t.find(_),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");s.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(_+" .layui-edge ").on("click",function(e){var t=f(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?s.sort({field:t,type:"asc",fromEvent:!0}):s.sort({field:t,type:"desc",fromEvent:!0})}),s.commonMember=function(e){var t=f(this).parents("tr").eq(0).data("index"),r=s.layBody.find('tr[data-index="'+t+'"]'),c=(c=k.cache[s.key]||[])[t]||{},a={tr:r,config:u,data:k.clearCacheKey(c),dataCache:c,index:t,del:function(){k.cache[s.key][t]=[],r.remove(),s.scrollPatch()},update:function(e,d){e=e||{},layui.each(e,function(i,l){var n=r.children('td[data-field="'+i+'"]'),o=n.children(y);c[i]=a.data[i]=l,s.eachCols(function(e,t){var a;t.field==i?(o.html(T.call(s,{item3:t,content:l,tplData:f.extend({LAY_COL:t},c)})),n.data("content",l)):d&&(t.templet||t.toolbar)&&(e=r.children('td[data-field="'+(t.field||e)+'"]'),a=c[t.field],e.children(y).html(T.call(s,{item3:t,content:a,tplData:f.extend({LAY_COL:t},c)})),e.data("content",a))})}),s.renderForm()},setRowChecked:function(e){s.setRowChecked(f.extend({index:t},e))}};return f.extend(a,e)}),a=(s.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=(s.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?s.setRowChecked({index:"all",checked:l}):(s.setRowChecked({index:i,checked:l}),layui.stope(e)),layui.event.call(t[0],N,"checkbox("+c+")",r.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return s.col(a.data("key"))}})))}),s.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;s.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],N,"radio("+c+")",r.call(t[0],{checked:i,getCol:function(){return s.col(a.data("key"))}}))}),s.layBody.on("mouseenter","tr",function(){var e=f(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").addClass(j)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").removeClass(j)}).on("click","tr",function(e){var t=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");f(e.target).is(t)||f(e.target).closest(t)[0]||a.call(this,"row")}).on("dblclick","tr",function(){a.call(this,"rowDouble")}).on("contextmenu","tr",function(e){u.defaultContextmenu||e.preventDefault(),a.call(this,"rowContextmenu")}),function(e){var t=f(this);t.data("off")||layui.event.call(this,N,e+"("+c+")",r.call(t.children("td")[0]))}),n=function(e,t){var a,i,l,n;(e=f(e)).data("off")||(a=e.data("field"),n=e.data("key"),n=s.col(n),i=e.closest("tr").data("index"),i=k.cache[s.key][i],l=e.children(y),(n="function"==typeof n.edit?n.edit(i):n.edit)&&((n=f("textarea"===n?'':''))[0].value=e.data("content")||i[a]||l.text(),e.find("."+W)[0]||e.append(n),n.focus(),t&&layui.stope(t)))},i=(s.layBody.on("change","."+W,function(){var e=f(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[s.key][e],l=r.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return s.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],N,"edit("+c+")",l)}).on("blur","."+W,function(){f(this).remove()}),s.layBody.on(u.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),s.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=f(this),a=t.children(y);t.data("off")||t.parent().hasClass(S)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.outerWidth()||0
                                          '))},l=function(e){var t=f(this),a=t.parent(),i=a.data("key"),l=s.col(i),n=a.parent().data("index"),a=a.children(y),o="layui-table-cell-c",d=f('');"tips"===(l.expandedMode||u.cellExpandedMode)?s.tipsIndex=p.tips(['
                                          ',a.html(),"
                                          ",''].join(""),a[0],{tips:[3,""],time:-1,anim:-1,maxWidth:x.ios||x.android?300:s.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){p.close(t)})}}):(s.elem.find("."+o).trigger("click"),s.cssRules(i,function(e){var t=e.style.width,a=l.expandedWidth||u.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],f(this).children().each(function(e){var t=f(this),a=t.attr("lay-data"),a=r.options(this,{attr:a?"lay-data":null,errorText:d+(a||t.attr("lay-options"))}),t=f.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=f(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),c(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')))}),d.push(n.join(","))}),c&&layui.each(c.dataTotal,function(e,t){r[t.field]||i.push('"'+(t.total||"")+'"')}),o.join(",")+"\r\n"+d.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t)))})})),f("."+H).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return e=C(e),e.reload(t,a,i),w.call(e)},k.reloadData=function(){var a=f.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new i(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=f.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),n(N,k)});layui.define(["table"],function(e){"use strict";var B=layui.$,x=layui.form,j=layui.table,y=layui.hint(),P={config:{},on:j.on,eachCols:j.eachCols,index:j.index,set:function(e){var t=this;return t.config=B.extend({},t.config,e),t},resize:j.resize,getOptions:j.getOptions,hideCol:j.hideCol,renderData:j.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){P.reloadData(n,e,t)}}},F=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},L="layui-hide",q=".layui-table-main",R=".layui-table-fixed-l",Y=".layui-table-fixed-r",l="layui-table-checked",h="layui-table-tree",H="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",s="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",z="LAY_EXPAND",X="LAY_HAS_EXPANDED",V="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=function(e){var t=this;t.index=++P.index,t.config=B.extend(!0,{},t.config,P.config,e),t.init(),t.render()},f=function(n,i,e){var l=j.cache[n];layui.each(e||l,function(e,t){var a=t[H];-1!==a.indexOf("-")&&(l[a]=t),t[i]&&f(n,i,t[i])})},r=function(l,a,e){var r=F(l),d=("reloadData"!==e&&(r.status={expand:{}}),B.extend(!0,{},r.getOptions(),a)),n=d.tree,o=n.customName.children,i=n.customName.id,c=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,j.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},d.cols),a.parseData),u=a.done;d.url?e&&(!c||c.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(c)&&(a=c.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=r.flatToTree(a[t])),p(a[t],function(e){e[z]=z in e?e[z]:e[i]!==undefined&&r.status.expand[e[i]]},o),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),r.initData(a[t]),a},a.parseData.mod=!0):(a.data=a.data||[],n.data.isSimpleData&&(a.data=r.flatToTree(a.data)),r.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n=(a||delete r.isExpandAll,this.elem.next()),i=(r.updateStatus(null,{LAY_HAS_EXPANDED:!1}),f(l,o),n.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(i.length&&(e=P.checkStatus(l),i.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!a&&d.autoSort&&d.initSort&&d.initSort.type&&P.sort(l),r.renderTreeTable(n),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0)};t.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),j.render(B.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,r(a,e)},t.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},t.prototype.getOptions=function(){return this.tableIns?j.getOptions(this.tableIns.config.id):this.config},t.prototype.flatToTree=function(e){var a,n,i,t,l,r,d,o=this.getOptions(),c=o.tree,u=c.customName,o=o.id;return e=e||j.cache[o],o=e,a=u.id,n=u.pid,i=u.children,t=c.data.rootPid,a=a||"id",n=n||"parentId",i=i||"children",d={},layui.each(o,function(e,t){l=a+t[a],d[l]=B.extend({},t),d[l][i]=[]}),layui.each(d,function(e,t){(r=a+t[n])&&d[r]&&d[r][i].push(t)}),Object.values(d).filter(function(e){return t?e[n]===t:!e[n]})},t.prototype.treeToFlat=function(e,n,i){var l=this,r=l.getOptions().tree.customName,d=r.children,o=r.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=B.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[d],t[r.id],e))}),c},t.prototype.getTreeNode=function(e){var t=this;if(!e)return y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e");var a=t.getOptions(),n=a.tree;a.id,n.customName;return{data:e,dataIndex:e[H],getParentNode:function(){return t.getNodeByIndex(e[s])}}},t.prototype.getNodeByIndex=function(t){var e=this,a=e.getNodeDataByIndex(t);if(!a)return y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e");var n=e.getOptions(),i=(n.tree.customName.parent,n.id),n={data:a,dataIndex:a[H],getParentNode:function(){return e.getNodeByIndex(a[s])},update:function(e){return P.updateNode(i,t,e)},remove:function(){return P.removeNode(i,t)},expand:function(e){return P.expandNode(i,B.extend({},e,{index:t}))},setChecked:function(e){return P.setRowChecked(i,B.extend({},e,{index:t}))}};return n.dataIndex=t,n},t.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=P.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[H],!0}),i)return this.getNodeByIndex(i)},t.prototype.getNodeDataByIndex=function(a,e,t){var n=this.getOptions(),i=n.tree,l=n.id,r=j.cache[l][a];if("delete"!==t&&r)return B.extend(r,t),e?B.extend({},r):r;for(var r=this.getTableData(),d=(a+="").split("-"),o=r,c=n.url||1
                                          ');var D=function(e){y[V]="success",y[s.children]=e,c.initData(y[s.children],y[H]),J(t,!0,!p&&n,i,l)},T=b.format;if("function"===layui.type(T))return T(y,o,D),h;var k=B.extend({},b.where||o.where),T=b.autoParam,T=(layui.each(T,function(e,t){t=t.split("=");k[t[0].trim()]=y[(t[1]||t[0]).trim()]}),b.contentType||o.contentType),_=(T&&0==T.indexOf("application/json")&&(k=JSON.stringify(k)),b.method||o.method),O=b.dataType||o.dataType,w=b.jsonpCallback||o.jsonpCallback,S=b.headers||o.headers,A=b.parseData||o.parseData,E=b.response||o.response;return B.ajax({type:_||"get",url:I,contentType:T,data:k,dataType:O||"json",jsonpCallback:w,headers:S||{},success:function(e){(e="function"==typeof A?A.call(o,e)||e:e)[E.statusName]!=E.statusCode?(y[V]="error",g.html('')):D(e[E.dataName])},error:function(e,t){y[V]="error","function"==typeof o.error&&o.error(e,t)}}),h}m=y[X]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((b=o.initSort).type?layui.sort(v,b.field,"desc"===b.type,!0):layui.sort(v,j.config.indexName,null,!0)),c.initData(y[s.children],y[H]),_=j.getTrHtml(d,v,null,null,e),N={trs:B(_.trs.join("")),trs_fixed:B(_.trs_fixed.join("")),trs_fixed_r:B(_.trs_fixed_r.join(""))},C=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){N.trs.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":C}),N.trs_fixed.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":C}),N.trs_fixed_r.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":C})}),r.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(N.trs),r.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(N.trs_fixed),r.find(Y).find('tbody tr[lay-data-index="'+e+'"]').after(N.trs_fixed_r),c.renderTreeTable(N.trs,C),n&&!p&&layui.each(v,function(e,t){J({dataIndex:t[H],trElem:r.find('tr[lay-data-index="'+t[H]+'"]').first(),tableViewElem:r,tableId:d,options:o},a,n,i,l)}))}else c.isExpandAll=!1,n&&!p?(layui.each(v,function(e,t){J({dataIndex:t[H],trElem:r.find('tr[lay-data-index="'+t[H]+'"]').first(),tableViewElem:r,tableId:d,options:o},a,n,i,l)}),r.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")).addClass(L)):(I=c.treeToFlat(v,y[s.id],e),r.find(I.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")).addClass(L));return U("resize-"+d,function(){P.resize(d)},0)(),l&&"loading"!==y[V]&&(T=u.callback.onExpand,"function"===layui.type(T)&&T(d,y,x)),h},g=(P.expandNode=function(e,t){var a,n,i,e=F(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),J({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},P.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=F(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),r=i.customName.isParent,d=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=P.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[r]&&!t[V])return!(c=!1)}),!c)return void layui.each(P.getData(a),function(e,t){P.expandNode(a,{index:t[H],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[r]&&!t[X])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[r]||o)&&(e[z]=!0,e[d]!==undefined&&(t.status.expand[e[d]]=!0))}),l.find('tbody tr[data-level!="0"]').removeClass(L),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[r]||o)&&(e[z]=!0,e[X]=!0,e[d]!==undefined&&(t.status.expand[e[d]]=!0))}),n.initSort&&n.initSort.type&&n.autoSort)return P.sort(a);var s,n=j.getTrHtml(a,e),f={trs:B(n.trs.join("")),trs_fixed:B(n.trs_fixed.join("")),trs_fixed_r:B(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[H].split("-").length-1;s={"data-index":t[H],"lay-data-index":t[H],"data-level":a},f.trs.eq(e).attr(s),f.trs_fixed.eq(e).attr(s),f.trs_fixed_r.eq(e).attr(s)}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[r]||o)&&(e[z]=!1,e[d]!==undefined&&(t.status.expand[e[d]]=!1))}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(L),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);P.resize(a)}},t.prototype.renderTreeTable=function(e,t,a){var n=this,i=n.getOptions(),l=i.elem.next(),r=(l.hasClass(h)||l.addClass(h),i.id),d=i.tree||{},o=(d.data,d.view||{}),c=d.customName||{},u=c.isParent,s=(l.attr("lay-filter"),n),f=((t=t||0)||(l.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(j.cache[r],function(e,t){l.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[H]),l.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[H]),l.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[H])})),null),y=c.name,p=o.indent||14;if(layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=B(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=l.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[z]&&a[u]&&((f=f||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
                                          ',a[z]?o.flexIconOpen:o.flexIconClose,"
                                          ",o.showIcon?'
                                          '+(a[c.icon]||o.icon||(a[u]?a[z]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
                                          ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),J({trElem:i},null,null,null,!0)}))}),!t&&d.view.expandAllDefault&&n.isExpandAll===undefined)return P.expandAll(r,!0);!1!==a&&f?layui.each(f,function(e,t){e=l.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),J({trElem:e.first()},!0)}):U("renderTreeTable-"+r,function(){i.hasNumberCol&&g(n),x.render(B('.layui-table-tree[lay-id="'+r+'"]'))},0)()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),r=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(j.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[H]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),r.eq(e).find(".laytable-cell-numbers").html(n))})}),p=(t.prototype.render=function(e){var t=this;t.tableIns=j["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,B.extend(!0,{},t.config)),t.config=t.tableIns.config},t.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),r(n.getOptions().id,e,a||!0),n.config=B.extend(t,{},n.config,e),n.render(a)},P.reloadData=function(){var e=B.extend(!0,[],arguments);return e[3]="reloadData",P.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):B.extend(t,a),l.push(B.extend({},t)),i||(l=l.concat(p(t[n],a,n,i)))}),l}),o=(t.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||j.cache[n.id],p(e,t,i.customName.children,a)},t.prototype.getTableData=function(){var e=this.getOptions();return j.cache[e.id]},P.updateStatus=function(e,t,a){var e=F(e),n=e.getOptions();return a=a||(n.url?j.cache[n.id]:n.data),e.updateStatus(a,t)},P.sort=function(e){var t=F(e);t&&t.getOptions().autoSort&&(t.initData(),P.renderData(e))},function(n){var t=n.config.id,i=F(t),a=n.data=P.getNodeDataByIndex(t,n.index),l=a[H],r=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(B.extend(i.getNodeDataByIndex(l),e[0]),r.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){P.removeNode(t,a)},n.setRowChecked=function(e){P.setRowChecked(t,{index:a,checked:e})}}),c=(P.updateNode=function(e,a,t){var n,i,l,r,d,o=F(e);o&&((r=o.getOptions()).tree,r=(n=r.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=r.attr("data-index"),l=r.attr("data-level"),t&&(r=o.getNodeDataByIndex(a,!1,t),d=j.getTrHtml(e,[r]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(B(d[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l)))},P.removeNode=function(e,t){var a,n,i,l,r,d=F(e);d&&(r=(a=d.getOptions()).tree,n=a.elem.next(),i=[],t=d.getNodeDataByIndex("string"===layui.type(t)?t:t[H],!1,"delete"),l=d.getNodeDataByIndex(t[s]),d.updateCheckStatus(l),l=d.treeToFlat([t],t[r.customName.pid],t[s]),layui.each(l,function(e,t){i.push('tr[lay-data-index="'+t[H]+'"]')}),n.find(i.join(",")).remove(),r=d.initData(),layui.each(d.treeToFlat(r),function(e,t){t[m]&&t[m]!==t[H]&&n.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[H],"lay-data-index":t[H]})}),layui.each(j.cache[e],function(e,t){n.find('tr[data-level="0"][lay-data-index="'+t[H]+'"]').attr("data-index",e)}),a.hasNumberCol&&g(d),P.resize(e))},P.addNodes=function(e,t){var a=F(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),r=j.config.checkName,d=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(d="number"===layui.type(d)?d.toString():d)?a.getNodeDataByIndex(d):null,o="number"===layui.type(o)?o:-1,c=B.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){r in t||(t[r]=u[r])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[X]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")).remove(),a.initData(),u[X]=!1,u[V]="local",J({trElem:l.find('tr[lay-data-index="'+d+'"]')},!0)}else{var p=j.cache[e].splice(-1===o?j.cache[e].length:o);if(j.cache[e]=j.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(j.cache[e]))):n.data=j.cache[e]),a.initData(),l.find(".layui-none").length)return j.renderData(e),c;var x,f=j.getTrHtml(e,c),h={trs:B(f.trs.join("")),trs_fixed:B(f.trs_fixed.join("")),trs_fixed_r:B(f.trs_fixed_r.join(""))},d=(layui.each(c,function(e,t){x={"data-index":t[H],"lay-data-index":t[H],"data-level":"0"},h.trs.eq(e).attr(x),h.trs_fixed.eq(e).attr(x),h.trs_fixed_r.eq(e).attr(x)}),parseInt(c[0][H])-1),y=l.find(q),n=l.find(R),f=l.find(Y);-1==d?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(d=p[0][m],y.find('tr[data-level="0"][data-index="'+d+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+d+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+d+'"]').before(h.trs_fixed_r)),layui.each(j.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[H]+'"]').attr("data-index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")))}return a.updateCheckStatus(u),P.resize(e),t&&l.find(q).find('tr[lay-data-index="'+c[0][H]+'"]').get(0).scrollIntoViewIfNeeded(),c}},P.checkStatus=function(e,n){var i,t,a,l=F(e);if(l)return l=l.getOptions().tree,i=j.config.checkName,t=P.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each("all"===l.data.cascade?j.cache[e]:P.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},P.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&P.sort(e)}),P.on("row",function(e){e.config.elem.next().hasClass(h)&&o(e)}),P.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),(t.tree||{}).view.dblClickExpand&&J({trElem:e.tr.first()},null,null,null,!0))}),P.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),P.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),P.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),e.field===t.tree.customName.name&&((a={})[e.field]=e.value,e.update(a)))}),P.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=F(t),o(e),c.call(a,e.tr,e.checked))}),t.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=B(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},t.prototype.updateCheckStatus=function(e,t){var i=this,a=i.getOptions();if(!a.hasChecboxCol)return!1;var n=a.tree,l=a.id,r=a.elem.next(),d=j.config.checkName,o=n.data.cascade,c=(("all"===o||"parent"===o)&&e&&(o=i.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(o,function(e,t){var a=r.find('tr[lay-data-index="'+t[H]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[d];i.setRowCheckedClass(a.closest("tr"),n),x.render(a.prop({checked:n,indeterminate:t[b]}))})),!0),u=!1,e=(e="all"===n.data.cascade?j.cache[l]:P.getData(l,!0)).filter(function(e){return!e[a.disabledName]});return layui.each(e,function(e,t){if((t[d]||t[b])&&(u=!0),t[d]||(c=!1),u&&!c)return!0}),u=u&&!c,x.render(r.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:c,indeterminate:u})),c},t.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=j.config.checkName,t=t.customName.children,r=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
                                          '+i.text.none+"
                                          "),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(F),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(F)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(l,e){var c=this,r=c.config,d=r.customName,e=e||r.data;layui.each(e,function(e,i){var a=i[d.children]&&0"),t=p(['
                                          ','
                                          ','
                                          ',r.showLine?a?'':'':'',r.showCheckbox?'':"",r.isJump&&i.href?''+(i[d.title]||i.label||r.text.defaultNodeName)+"":''+(i[d.title]||i.label||r.text.defaultNodeName)+"","
                                          ",function(){if(!r.edit)return"";var a={add:'',update:'',del:''},n=['
                                          '];return!0===r.edit&&(r.edit=["update","del"]),"object"==typeof r.edit?(layui.each(r.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
                                          "):void 0}(),"
                                          "].join(""));a&&(t.append(n),c.tree(n,i[d.children])),l.append(t),t.prev("."+m)[0]&&t.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),a||t.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),c.spread(t,i),r.showCheckbox&&(i.checked&&c.checkids.push(i[d.id]),c.checkClick(t,i)),r.edit&&c.operate(t,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+x),i=e.children("."+b),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+k),e=e.find("."+g),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+w),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(N)?(n.removeClass(N),i.slideUp(200),a.removeClass(v).addClass(C),l.updateFieldValue(t,"spread",!1)):(n.addClass(N),i.slideDown(200),a.addClass(v).removeClass(C),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+m)).removeClass(N),i.children("."+w).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(v).addClass(C))):s="normal"}),e.on("click",function(){p(this).hasClass(o)||(s=n.hasClass(N)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+w)[0]||e.find("."+w).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+m)[0]&&(a=(e=e.parent("."+w)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+x).children("."+b).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+x),h=e.children("."+b);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+w),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+k).addClass("layui-tree-icon"),h.find("."+k).children(".layui-icon").addClass(C).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(f),r.append('
                                          '));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+w),[c]),o.showLine&&(n[0]?(n.hasClass(L)||n.addClass(L),r.find("."+w).each(function(){p(this).children("."+m).last().addClass(F)}),(n.children("."+m).last().prev().hasClass(F)?n.children("."+m).last().prev():n.children("."+m).last()).removeClass(F),!r.parent("."+w)[0]&&r.next()[0]&&n.children("."+m).last().removeClass(F)):(l=r.siblings("."+m),a=1,c=r.parent("."+w),layui.each(l,function(e,i){p(i).children("."+w)[0]||(a=0)}),1==a?(l.children("."+w).addClass(T),l.children("."+w).children("."+m).removeClass(F),r.children("."+w).addClass(T),c.removeClass(L),c.children("."+m).last().children("."+w).children("."+m).last().addClass(F)):r.children("."+w).children("."+m).addClass(F))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+w).children("."+m).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+g).html(),h.children("."+g).html(""),h.append(''),h.children(".layui-tree-editInput").val(l).focus(),i=function(e){var i=(i=e.val().trim())||o.text.defaultNodeName;e.remove(),h.children("."+g).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d[u.title]||"")+'" \u5417\uff1f',function(e){if(o.operate&&o.operate(t),t.status="remove",y.close(e),!r.prev("."+m)[0]&&!r.next("."+m)[0]&&!r.parent("."+w)[0])return r.remove(),void s.elem.append(s.elemNone);var l,a,i;r.siblings("."+m).children("."+x)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+m)[0]&&(i=e.siblings("."+m).children("."+x),a=(e=e.parent("."+w).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+m)))))})(r),o.showLine&&(e=r.siblings("."+m),a=1,i=r.parent("."+w),layui.each(e,function(e,i){p(i).children("."+w)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(L),e.children("."+w).addClass(T),e.children("."+w).children("."+m).removeClass(F)),(r.next()[0]?i.children("."+m).last():r.prev()).children("."+w).children("."+m).last().addClass(F),r.next()[0]||r.parents("."+m)[1]||r.parents("."+m).eq(0).next()[0]||r.prev("."+m).addClass(F)):!r.next()[0]&&r.hasClass(F)&&r.prev().addClass(F))):(e=r.parent("."+w).prev(),o.showLine?(e.find("."+k).removeClass("layui-tree-icon"),e.find("."+k).children(".layui-icon").removeClass(v).addClass("layui-icon-file"),(i=e.parents("."+w).eq(0)).addClass(L),i.children("."+m).each(function(){p(this).children("."+w).children("."+m).last().addClass(F)})):e.find(".layui-tree-iconArrow").addClass(f),r.parents("."+m).eq(0).removeClass(N),r.parent("."+w).remove()),r.remove()})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+g).each(function(){var i,e=p(this).parents("."+x);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+w)[0]&&i(e.parent("."+w).parent("."+m))})(e.parent("."+m)))}),e.find("."+x).each(function(){var e=p(this).parent("."+m);e.hasClass("layui-tree-searchShow")||e.addClass(f)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+x).each(function(){p(this).parent("."+m).removeClass("layui-tree-searchShow "+f)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+m).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+x).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var s=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=s.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},d="layui-hide",h="layui-btn-disabled",r="layui-none",c="layui-transfer-box",u="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
                                          ','
                                          ','","
                                          ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
                                            ',"
                                            "].join("")},p=['
                                            ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
                                            ','",'","
                                            ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
                                            "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=s.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=s.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=s(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=s(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+c),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
                                          • ",'',"
                                          • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(r){var c=this,o=c.config;r=r||{},c.layBox.each(function(e){var t=s(this),a=t.find("."+f),t=t.find("."+u).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=s(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),c.layBtn.eq(e)[l?"removeClass":"addClass"](h),r.stopNone||(i=a.children("li:not(."+d+")").length,c.noneView(a,i?"":o.text.none))}),c.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=s('

                                            '+(t||"")+"

                                            ");e.find("."+r)[0]&&e.find("."+r).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){s(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=s.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),r=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+c).find("."+f).append(t.clone()),t.remove(),r.push(a[0].value),i.setValue()):l.each(function(e){s(this).find("."+f).children("li").each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+c).find("."+f).append(e.clone()),e.remove(),r.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+c).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(r),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=s(this).prev(),t=e[0].checked,a=e.parents("."+c).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=s(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent();a[0].disabled||n.transfer(i.data("index"),t)}),n.layBtn.on("click",function(){var e=s(this),t=e.data("index");e.hasClass(h)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=s(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](d),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+d).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,t=layui.lay,o=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,r,e,i)}}),r="carousel",d="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",m="layui-carousel-next",l="layui-carousel-arrow",f="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,o.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(d),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+l)[0]&&e.elem.find("."+l).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
                                              ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
                                            "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+f)[0]&&n.elem.find("."+f).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(m),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(d+" "+c+" "+m+" "+s+" "+u),t.eq(a.index).addClass(d),n.haveSlide=!1},300),n.elemInd.find("li").eq(a.index).addClass(d).siblings().removeClass(d),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,r,"change("+l+")",e))},i.prototype.events=function(){var e=this,i=e.config;i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){"always"!==e.config.autoplay&&clearInterval(e.timer)}).on("mouseleave",function(){"always"!==e.config.autoplay&&e.autoplay()}),i.elem.data("haveEvents",!0))},o.render=function(e){return new i(e)},e(r,o)});layui.define(["jquery","lay"],function(e){"use strict";var s=layui.jquery,r=layui.lay,c={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var a=this;return a.config=s.extend({},a.config,e),a},on:function(e,a){return layui.onevent.call(this,l,e,a)}},l="rate",f="layui-icon-rate",h="layui-icon-rate-solid",o="layui-icon-rate-half",u="layui-icon-rate-solid layui-icon-rate-half",v="layui-icon-rate layui-icon-rate-half",a=function(e){var a=this;a.index=++c.index,a.config=s.extend({},a.config,c.config,e),a.render()};a.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},a.prototype.render=function(){var e=this,a=e.config,l=s(a.elem);if(1a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
                                              "),t=1;t<=a.length;t++){var o='
                                            • ";a.half&&parseInt(a.value)!==a.value&&t==Math.ceil(a.value)?n=n+'
                                            • ":n+=o}n+="
                                            "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,u=l.next(".layui-rate");u[0]&&u.remove(),e.elemTemp=s(n),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var i=this.config,n=this.elemTemp,t=n.find("i").width();n.children("li").each(function(e){var a=e+1,l=s(this);l.on("click",function(e){i.value=a,i.half&&e.pageX-s(this).offset().left<=t/2&&(i.value=i.value-.5),i.text&&n.next("span").text(i.value+"\u661f"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),l.on("mousemove",function(e){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+a+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&e.pageX-s(this).offset().left<=t/2&&l.children("i").addClass(o).removeClass(h)}),l.on("mouseleave",function(){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+Math.floor(i.value)+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&parseInt(i.value)!==i.value&&n.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})})},a.prototype.events=function(){},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(l){"use strict";var g=layui.$,e=function(l){};e.prototype.load=function(l){var t,i,o,n,e,r,a,c,m,s,u,f,y,d=this,p=0,h=g((l=l||{}).elem);if(h[0])return e=g(l.scrollElem||document),r=l.mb||50,a=!("isAuto"in l)||l.isAuto,c=l.end||"\u6ca1\u6709\u66f4\u591a\u4e86",m=l.scrollElem&&l.scrollElem!==document,s="\u52a0\u8f7d\u66f4\u591a",u=g('"),h.find(".layui-flow-more")[0]||h.append(u),f=function(l,e){l=g(l),u.before(l),(e=0==e||null)?u.html(c):u.find("a").html(s),i=e,t=null,o&&o()},y=function(){t=!0,u.find("a").html(''),"function"==typeof l.done&&l.done(++p,f)},y(),u.find("a").on("click",function(){g(this);i||t||y()}),l.isLazyimg&&(o=d.lazyimg({elem:l.elem+" img",scrollElem:l.scrollElem})),a&&e.on("scroll",function(){var e=g(this),o=e.scrollTop();n&&clearTimeout(n),!i&&h.width()&&(n=setTimeout(function(){var l=(m?e:g(window)).height();(m?e.prop("scrollHeight"):document.documentElement.scrollHeight)-o-l<=r&&(t||y())},100))}),d},e.prototype.lazyimg=function(l){var e,c=this,m=0,s=g((l=l||{}).scrollElem||document),u=l.elem||"img",f=l.scrollElem&&l.scrollElem!==document,y=function(e,l){var o,t=s.scrollTop(),l=t+l,i=f?e.offset().top-s.offset().top+t:e.offset().top;t<=i&&i<=l&&e.attr("lay-src")&&(o=e.attr("lay-src"),layui.img(o,function(){var l=c.lazyimg.elem.eq(m);e.attr("src",o).removeAttr("lay-src"),l[0]&&n(l),m++},function(){c.lazyimg.elem.eq(m);e.removeAttr("lay-src")}))},n=function(l,e){var o=(f?e||s:g(window)).height(),t=s.scrollTop(),i=t+o;if(c.lazyimg.elem=g(u),l)y(l,o);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},O=layui.code?layui.code.index+1e4:0,R=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var a={config:l=A.extend(!0,{},j,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,A.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},t=A(l.elem);if(1',l.ln?['
                                            ',S.digit(a+1)+".","
                                            "].join(""):"",'
                                            ',e||" ","
                                            ",""].join("")})}});if("reloadCode"===e)return h=c.join(""),h=t(h),n.children(".layui-code-wrap").html(h.html),a;var s,r,u,y,E,p,f=layui.code.index=++O,h=(n.attr("lay-code-index",f),W.CDDE_DATA_CLASS in n.data()),v=(h&&n.attr("class",n.data(W.CDDE_DATA_CLASS)||""),h||n.data(W.CDDE_DATA_CLASS,n.attr("class")),o=c.join("")),m=("function"==typeof l.codeParse&&(v=o=l.codeParse(v)),{copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var a=S.unescape(o);lay.clipboard.writeText({text:a,done:function(){N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}),"function"==typeof l.onCopy&&l.onCopy(a)}}}),L=(function x(){var e=n.parent("."+W.ELEM_PREVIEW),a=e.children("."+W.ELEM_TAB),t=e.children("."+W.ELEM_ITEM+"-preview");return a.remove(),t.remove(),e[0]&&n.unwrap(),x}(),l.preview&&(b="LAY-CODE-DF-"+f,C=l.layout||["code","preview"],s="iframe"===l.preview,E=A('
                                            '),_=A('
                                            '),r=A('
                                            '),p=A('
                                            '),u=A('
                                            '),l.id&&E.attr("id",l.id),E.addClass(l.className),_.attr("lay-filter",b),layui.each(C,function(e,a){var t=A('
                                          • ');0===e&&t.addClass("layui-this"),t.html(l.text[a]),r.append(t)}),A.extend(m,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,a=e.closest("."+W.ELEM_PREVIEW),t="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=A("html,body"),n="layui-scrollbar-hide";e.hasClass(t)?(a.addClass(W.ELEM_FULL),e.removeClass(t).addClass(i),e.attr("title",l[1]),o.addClass(n)):(a.removeClass(W.ELEM_FULL),e.removeClass(i).addClass(t),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){S.openWin({content:o})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=A(this),a=e.data("type"),e={elem:e,type:a,options:l,rawCode:c.join(""),finalCode:S.unescape(o)};m[a]&&"function"==typeof m[a].event&&m[a].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&(l.tools=[].concat(l.tools||[],l.addTools)),layui.each(l.tools,function(e,a){var t="object"==typeof a,i=t?a:m[a]||{className:a,title:[a]},l=i.className||i.type,o=i.title||[""],t=t?i.type||l:a;t&&(m[t]||((a={})[t]=i,A.extend(m,a)),u.append(''))}),n.addClass(W.ELEM_ITEM).wrap(E),_.append(r),l.tools&&_.append(u),n.before(_),s&&p.html(''),y=function(e){var a=e.children("iframe")[0],t=(s&&a?a.srcdoc=o:e.html(c.join("")),{container:e,render:function(){T.render(e.find(".layui-form")),I.render()}});setTimeout(function(){"function"==typeof l.done&&l.done(t)},3)},"preview"===C[0]?(p.addClass(W.ELEM_SHOW),n.before(p),y(p)):n.addClass(W.ELEM_SHOW).after(p),l.previewStyle=[l.style,l.previewStyle].join(""),p.attr("style",l.previewStyle),I.on("tab("+b+")",function(e){var a=A(this),t=A(e.elem).closest("."+W.ELEM_PREVIEW).find("."+W.ELEM_ITEM),e=t.eq(e.index);t.removeClass(W.ELEM_SHOW),e.addClass(W.ELEM_SHOW),"preview"===a.attr("lay-id")&&y(e),w()})),A('')),_=(n.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),l.theme||l.skin),C=(_&&(n.removeClass("layui-code-theme-dark layui-code-theme-light"),n.addClass("layui-code-theme-"+_)),l.highlighter&&n.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),l.encode&&(v=S.escape(v)),t(v)),M=C.lines,D=(n.html(L.html(C.html)),l.ln&&n.append('
                                            '),l.height&&L.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&L.attr("style",function(e,a){return(a||"")+l.codeStyle}),[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,a){e.style["padding-left"]=a+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,a){e.style.width=a+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,a){e.style.width=a+"px"}}]),g=lay.style({target:n[0],id:"DF-code-"+f,text:A.map(A.map(D,function(e){return e.selector}),function(e,a){return['.layui-code-view[lay-code-index="'+f+'"]',e].join(" ")}).join("")}),w=function x(){var e,i;return l.ln&&(e=Math.floor(M.length/100),i=L.children("."+W.ELEM_LINE).last().children("."+W.ELEM_LINE_NUM).outerWidth(),n.addClass(W.ELEM_LN_MODE),e&&i>W.LINE_RAW_WIDTH&&lay.getStyleRules(g,function(e,a){try{D[a].setValue(e,i)}catch(t){}})),x}(),b=(l.header&&((p=A('
                                            ')).html(l.title||l.text.code),n.prepend(p)),A('
                                            '));return l.copy&&!l.preview&&((_=A(['','',""].join(""))).on("click",function(){m.copy.event()}),b.append(_)),l.langMarker&&b.append(''+l.lang+""),l.about&&b.append(l.about),n.append(b),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+f&&"function"==typeof l.allDone&&l.allDone(),a})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss"); \ No newline at end of file diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 7c8d821..3231e94 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -147,7 +147,7 @@ layui.define(['jquery', 'tools', 'element', 'yaml', 'form', 'tabPage', 'menu', ' }); } else { bodyFrame.changePage({ - href: node.url, + href: node.url, type: node.openType }); } @@ -819,4 +819,4 @@ layui.define(['jquery', 'tools', 'element', 'yaml', 'form', 'tabPage', 'menu', ' }, 50)); exports('admin', pearAdmin); - }) + }) \ No newline at end of file -- Gitee From a12e6cf5d047182da90bcb37abedd69b9962347a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Wed, 27 Sep 2023 23:48:56 +0800 Subject: [PATCH 069/141] update --- admin/data/menu.json | 8 ++++++++ component/pear/css/module/nprogress.css | 8 ++++---- view/component/nprogress.html | 25 +++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 view/component/nprogress.html diff --git a/admin/data/menu.json b/admin/data/menu.json index f164d08..3ebff4e 100644 --- a/admin/data/menu.json +++ b/admin/data/menu.json @@ -60,6 +60,14 @@ "type": 1, "openType": "_component", "href": "view/component/toast.html" + }, + { + "id": 25, + "title": "路由过渡", + "icon": "layui-icon layui-icon-face-smile", + "type": 1, + "openType": "_component", + "href": "view/component/nprogress.html" } ] }, diff --git a/component/pear/css/module/nprogress.css b/component/pear/css/module/nprogress.css index 24c5cf1..a78f1c9 100644 --- a/component/pear/css/module/nprogress.css +++ b/component/pear/css/module/nprogress.css @@ -4,7 +4,7 @@ } #nprogress .bar { - background: #29d; + background: var(--global-primary-color); position: fixed; z-index: 999999; @@ -22,7 +22,7 @@ right: 0px; width: 100px; height: 100%; - box-shadow: 0 0 10px #29d, 0 0 5px #29d; + box-shadow: 0 0 10px var(--global-primary-color), 0 0 5px var(--global-primary-color); opacity: 1.0; -webkit-transform: rotate(3deg) translate(0px, -4px); @@ -45,8 +45,8 @@ box-sizing: border-box; border: solid 2px transparent; - border-top-color: #29d; - border-left-color: #29d; + border-top-color: var(--global-primary-color); + border-left-color: var(--global-primary-color); border-radius: 50%; -webkit-animation: nprogress-spinner 400ms linear infinite; diff --git a/view/component/nprogress.html b/view/component/nprogress.html new file mode 100644 index 0000000..b7cf45c --- /dev/null +++ b/view/component/nprogress.html @@ -0,0 +1,25 @@ +
                                            +
                                            +
                                            基础使用
                                            +
                                            + + +
                                            +
                                            +
                                            + + \ No newline at end of file -- Gitee From 874d7174ac9b9bdfea0bbbe8763da6d2a4dab804 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Wed, 25 Oct 2023 22:44:00 +0800 Subject: [PATCH 070/141] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20layui=20=E4=BE=9D?= =?UTF-8?q?=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/layui/css/layui.css | 2 +- component/layui/layui.js | 2 +- component/pear/module/menu.js | 2 -- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/component/layui/css/layui.css b/component/layui/css/layui.css index 45c04b7..d2c11e0 100644 --- a/component/layui/css/layui.css +++ b/component/layui/css/layui.css @@ -1 +1 @@ -blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{display:inline-block;border:none;vertical-align:middle}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h1,h2,h3,h4{font-weight:700}h5,h6{font-weight:500;font-size:100%}button,input,select,textarea{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:1.6;color:#333;color:rgba(0,0,0,.85);font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{height:0;line-height:0;margin:10px 0;padding:0;border:none!important;border-bottom:1px solid #eee!important;clear:both;overflow:hidden;background:0 0}a{color:#333;text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-clear-space{word-spacing:-5px}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.layui-edge{position:relative;display:inline-block;vertical-align:middle;width:0;height:0;border-width:6px;border-style:dashed;border-color:transparent;overflow:hidden}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-disabled,.layui-icon,.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-show-v{visibility:visible!important}.layui-hide-v{visibility:hidden!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=282);src:url(../font/iconfont.eot?v=282#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=282) format('woff2'),url(../font/iconfont.woff?v=282) format('woff'),url(../font/iconfont.ttf?v=282) format('truetype'),url(../font/iconfont.svg?v=282#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-leaf:before{content:"\e701"}.layui-icon-folder:before{content:"\eabe"}.layui-icon-folder-open:before{content:"\eac1"}.layui-icon-gitee:before{content:"\e69b"}.layui-icon-github:before{content:"\e6a7"}.layui-icon-disabled:before{content:"\e6cc"}.layui-icon-moon:before{content:"\e6c2"}.layui-icon-error:before{content:"\e693"}.layui-icon-success:before{content:"\e697"}.layui-icon-question:before{content:"\e699"}.layui-icon-lock:before{content:"\e69a"}.layui-icon-eye:before{content:"\e695"}.layui-icon-eye-invisible:before{content:"\e696"}.layui-icon-backspace:before{content:"\e694"}.layui-icon-tips-fill:before{content:"\eb2e"}.layui-icon-test:before{content:"\e692"}.layui-icon-clear:before{content:"\e788"}.layui-icon-heart-fill:before{content:"\e68f"}.layui-icon-light:before{content:"\e748"}.layui-icon-music:before{content:"\e690"}.layui-icon-time:before{content:"\e68d"}.layui-icon-ie:before{content:"\e7bb"}.layui-icon-firefox:before{content:"\e686"}.layui-icon-at:before{content:"\e687"}.layui-icon-bluetooth:before{content:"\e689"}.layui-icon-chrome:before{content:"\e68a"}.layui-icon-edge:before{content:"\e68b"}.layui-icon-heart:before{content:"\e68c"}.layui-icon-key:before{content:"\e683"}.layui-icon-android:before{content:"\e684"}.layui-icon-mike:before{content:"\e6dc"}.layui-icon-mute:before{content:"\e685"}.layui-icon-gift:before{content:"\e627"}.layui-icon-windows:before{content:"\e67f"}.layui-icon-ios:before{content:"\e680"}.layui-icon-logout:before{content:"\e682"}.layui-icon-wifi:before{content:"\e7e0"}.layui-icon-rss:before{content:"\e808"}.layui-icon-email:before{content:"\e618"}.layui-icon-reduce-circle:before{content:"\e616"}.layui-icon-transfer:before{content:"\e691"}.layui-icon-service:before{content:"\e626"}.layui-icon-addition:before{content:"\e624"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-slider:before{content:"\e714"}.layui-icon-print:before{content:"\e66d"}.layui-icon-export:before{content:"\e67d"}.layui-icon-cols:before{content:"\e610"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-username:before{content:"\e66f"}.layui-icon-password:before{content:"\e673"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-auz:before{content:"\e672"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-tips:before{content:"\e702"}.layui-icon-note:before{content:"\e66e"}.layui-icon-senior:before{content:"\e674"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-notice:before{content:"\e667"}.layui-icon-console:before{content:"\e665"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-set:before{content:"\e716"}.layui-icon-template:before{content:"\e663"}.layui-icon-app:before{content:"\e653"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-home:before{content:"\e68e"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-more:before{content:"\e65f"}.layui-icon-camera:before{content:"\e660"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-read:before{content:"\e705"}.layui-icon-location:before{content:"\e715"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-return:before{content:"\e65c"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-fire:before{content:"\e756"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-cart:before{content:"\e657"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-next:before{content:"\e65b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-user:before{content:"\e770"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-component:before{content:"\e857"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-pause:before{content:"\e651"}.layui-icon-play:before{content:"\e652"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-voice:before{content:"\e688"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-link:before{content:"\e64c"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-share:before{content:"\e641"}.layui-icon-edit:before{content:"\e642"}.layui-icon-delete:before{content:"\e640"}.layui-icon-engine:before{content:"\e628"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-table:before{content:"\e62d"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-water:before{content:"\e636"}.layui-icon-date:before{content:"\e637"}.layui-icon-layer:before{content:"\e638"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-form:before{content:"\e63c"}.layui-icon-file:before{content:"\e621"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-404:before{content:"\e61c"}.layui-icon-about:before{content:"\e60b"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-down:before{content:"\e61a"}.layui-icon-up:before{content:"\e619"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-search:before{content:"\e615"}.layui-icon-friends:before{content:"\e612"}.layui-icon-group:before{content:"\e613"}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-log:before{content:"\e60e"}.layui-icon-list:before{content:"\e60a"}.layui-icon-release:before{content:"\e609"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-ok:before{content:"\e605"}.layui-icon-help:before{content:"\e607"}.layui-icon-chat:before{content:"\e606"}.layui-icon-top:before{content:"\e604"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-star:before{content:"\e600"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-ok-circle:before{content:"\1005"}.layui-main{position:relative;width:1160px;margin:0 auto}.layui-header{position:relative;z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px;overflow-x:hidden}.layui-side-scroll{position:relative;width:220px;height:100%;overflow-x:hidden}.layui-body{position:relative;left:200px;right:0;top:0;bottom:0;z-index:900;width:auto;box-sizing:border-box}.layui-layout-body{overflow-x:hidden}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;right:0;background-color:#23292e}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:absolute;top:60px;padding-bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;z-index:990;height:44px;line-height:44px;padding:0 15px;box-shadow:-1px 0 4px rgb(0 0 0 / 12%);background-color:#fafafa}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#16baaa;font-size:16px;box-shadow:0 1px 2px 0 rgb(0 0 0 / 15%)}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:"";display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:767.98px){.layui-container{padding:0 15px}.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:720px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:960px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1150px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}@media screen and (min-width:1400px){.layui-container{width:1330px}.layui-hide-xl{display:none!important}.layui-show-xl-block{display:block!important}.layui-show-xl-inline{display:inline!important}.layui-show-xl-inline-block{display:inline-block!important}.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9{float:left}.layui-col-xl1{width:8.33333333%}.layui-col-xl2{width:16.66666667%}.layui-col-xl3{width:25%}.layui-col-xl4{width:33.33333333%}.layui-col-xl5{width:41.66666667%}.layui-col-xl6{width:50%}.layui-col-xl7{width:58.33333333%}.layui-col-xl8{width:66.66666667%}.layui-col-xl9{width:75%}.layui-col-xl10{width:83.33333333%}.layui-col-xl11{width:91.66666667%}.layui-col-xl12{width:100%}.layui-col-xl-offset1{margin-left:8.33333333%}.layui-col-xl-offset2{margin-left:16.66666667%}.layui-col-xl-offset3{margin-left:25%}.layui-col-xl-offset4{margin-left:33.33333333%}.layui-col-xl-offset5{margin-left:41.66666667%}.layui-col-xl-offset6{margin-left:50%}.layui-col-xl-offset7{margin-left:58.33333333%}.layui-col-xl-offset8{margin-left:66.66666667%}.layui-col-xl-offset9{margin-left:75%}.layui-col-xl-offset10{margin-left:83.33333333%}.layui-col-xl-offset11{margin-left:91.66666667%}.layui-col-xl-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-col-space32{margin:-16px}.layui-col-space32>*{padding:16px}.layui-padding-1{padding:4px!important}.layui-padding-2{padding:8px!important}.layui-padding-3{padding:16px!important}.layui-padding-4{padding:32px!important}.layui-padding-5{padding:48px!important}.layui-margin-1{margin:4px!important}.layui-margin-2{margin:8px!important}.layui-margin-3{margin:16px!important}.layui-margin-4{margin:32px!important}.layui-margin-5{margin:48px!important}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:1.8;border-left:5px solid #16b777;border-radius:0 2px 2px 0;background-color:#fafafa}.layui-quote-nm{border-style:solid;border-width:1px;border-left-width:5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px}.layui-field-title{margin:16px 0;border-width:0;border-top-width:1px}.layui-field-box{padding:15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#eee}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#16b777;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#5f5f5f}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#fafafa;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:1.6;color:#5f5f5f}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{position:relative;height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f8f8f8;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-card-body{position:relative;padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel{position:relative;border-width:1px;border-style:solid;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);background-color:#fff;color:#5f5f5f}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #eee;background-color:#fff}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-scrollbar-hide{overflow:hidden!important}.layui-bg-red{background-color:#ff5722!important;color:#fff!important}.layui-bg-orange{background-color:#ffb800!important;color:#fff!important}.layui-bg-green{background-color:#16baaa!important;color:#fff!important}.layui-bg-cyan{background-color:#2f4056!important;color:#fff!important}.layui-bg-blue{background-color:#1e9fff!important;color:#fff!important}.layui-bg-purple{background-color:#a233c6!important;color:#fff!important}.layui-bg-black{background-color:#2f363c!important;color:#fff!important}.layui-bg-gray{background-color:#fafafa!important;color:#5f5f5f!important}.layui-badge-rim,.layui-border,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-input-split,.layui-panel,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#eee}.layui-border{border-width:1px;border-style:solid;color:#5f5f5f!important}.layui-border-red{border-width:1px;border-style:solid;border-color:#ff5722!important;color:#ff5722!important}.layui-border-orange{border-width:1px;border-style:solid;border-color:#ffb800!important;color:#ffb800!important}.layui-border-green{border-width:1px;border-style:solid;border-color:#16baaa!important;color:#16baaa!important}.layui-border-cyan{border-width:1px;border-style:solid;border-color:#2f4056!important;color:#2f4056!important}.layui-border-blue{border-width:1px;border-style:solid;border-color:#1e9fff!important;color:#1e9fff!important}.layui-border-purple{border-width:1px;border-style:solid;border-color:#a233c6!important;color:#a233c6!important}.layui-border-black{border-width:1px;border-style:solid;border-color:#2f363c!important;color:#2f363c!important}.layui-timeline-item:before{background-color:#eee}.layui-text{line-height:1.8;font-size:14px}.layui-text h1,.layui-text h2,.layui-text h3,.layui-text h4,.layui-text h5,.layui-text h6{color:#3a3a3a}.layui-text h1{font-size:32px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text h4{font-size:16px}.layui-text h5{font-size:14px}.layui-text h6{font-size:13px}.layui-text ol,.layui-text ul{padding-left:15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text ol li{margin-top:5px;list-style-type:decimal}.layui-text-em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.layui-text p{margin:15px 0}.layui-text p:first-child{margin-top:0}.layui-text p:last-child{margin-bottom:0}.layui-text a:not(.layui-btn){color:#01aaed}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text blockquote:not(.layui-elem-quote){padding:5px 15px;border-left:5px solid #eee}.layui-text pre>code:not(.layui-code){padding:15px;font-family:"Courier New",Consolas,"Lucida Console"}.layui-font-12{font-size:12px!important}.layui-font-13{font-size:13px!important}.layui-font-14{font-size:14px!important}.layui-font-16{font-size:16px!important}.layui-font-18{font-size:18px!important}.layui-font-20{font-size:20px!important}.layui-font-22{font-size:22px!important}.layui-font-24{font-size:24px!important}.layui-font-26{font-size:26px!important}.layui-font-28{font-size:28px!important}.layui-font-30{font-size:30px!important}.layui-font-32{font-size:32px!important}.layui-font-red{color:#ff5722!important}.layui-font-orange{color:#ffb800!important}.layui-font-green{color:#16baaa!important}.layui-font-cyan{color:#2f4056!important}.layui-font-blue{color:#01aaed!important}.layui-font-purple{color:#a233c6!important}.layui-font-black{color:#000!important}.layui-font-gray{color:#c2c2c2!important}.layui-btn{display:inline-block;vertical-align:middle;height:38px;line-height:38px;border:1px solid transparent;padding:0 18px;background-color:#16baaa;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border-radius:2px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{word-spacing:-5px}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px;word-spacing:normal}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{padding:0 2px;vertical-align:middle\0;vertical-align:bottom}.layui-btn-primary{border-color:#d2d2d2;background:0 0;color:#5f5f5f}.layui-btn-primary:hover{border-color:#16baaa;color:#333}.layui-btn-normal{background-color:#1e9fff}.layui-btn-warm{background-color:#ffb800}.layui-btn-danger{background-color:#ff5722}.layui-btn-checked{background-color:#16b777}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border-color:#eee!important;background-color:#fbfbfb!important;color:#d2d2d2!important;cursor:not-allowed!important;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:12px!important}.layui-btn-group{display:inline-block;vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#d2d2d2;color:#16baaa}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #d2d2d2}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\9;border-width:1px;border-style:solid;background-color:#fff;color:rgba(0,0,0,.85);border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#d2d2d2!important}.layui-input:focus,.layui-textarea:focus{border-color:#16b777!important;box-shadow:0 0 0 3px rgba(22,183,119,.08)}.layui-textarea{position:relative;min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-input[disabled],.layui-textarea[disabled]{background-color:#fafafa}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{position:relative;margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{position:relative;float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block,.layui-input-inline{position:relative}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{position:relative;float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#ff5722!important;box-shadow:0 0 0 3px rgba(255,87,34,.08)}.layui-input-prefix,.layui-input-split,.layui-input-suffix,.layui-input-suffix .layui-input-affix{position:absolute;right:0;top:0;padding:0 10px;width:35px;height:100%;text-align:center;transition:all .3s;box-sizing:border-box}.layui-input-prefix{left:0;border-radius:2px 0 0 2px}.layui-input-suffix{right:0;border-radius:0 2px 2px 0}.layui-input-split{border-width:1px;border-style:solid}.layui-input-prefix .layui-icon,.layui-input-split .layui-icon,.layui-input-suffix .layui-icon{position:relative;font-size:16px;color:#5f5f5f;transition:all .3s}.layui-input-group{position:relative;display:table;box-sizing:border-box}.layui-input-group>*{display:table-cell;vertical-align:middle;position:relative}.layui-input-group .layui-input{padding-right:15px}.layui-input-group>.layui-input-prefix{width:auto;border-right:0}.layui-input-group>.layui-input-suffix{width:auto;border-left:0}.layui-input-group .layui-input-split{white-space:nowrap}.layui-input-wrap{position:relative;line-height:38px}.layui-input-wrap .layui-input{padding-right:35px}.layui-input-wrap .layui-input::-ms-clear,.layui-input-wrap .layui-input::-ms-reveal{display:none}.layui-input-wrap .layui-input-prefix+.layui-input,.layui-input-wrap .layui-input-prefix~* .layui-input{padding-left:35px}.layui-input-wrap .layui-input-split+.layui-input,.layui-input-wrap .layui-input-split~* .layui-input{padding-left:45px}.layui-input-wrap .layui-input-prefix~.layui-form-select{position:static}.layui-input-wrap .layui-input-prefix,.layui-input-wrap .layui-input-split,.layui-input-wrap .layui-input-suffix{pointer-events:none}.layui-input-wrap .layui-input:hover+.layui-input-split{border-color:#d2d2d2}.layui-input-wrap .layui-input:focus+.layui-input-split{border-color:#16b777}.layui-input-wrap .layui-input-prefix.layui-input-split{border-width:0;border-right-width:1px}.layui-input-affix{line-height:38px}.layui-input-suffix .layui-input-affix{right:auto;left:-35px}.layui-input-affix .layui-icon{color:rgba(0,0,0,.8);pointer-events:auto!important;cursor:pointer}.layui-input-affix .layui-icon-clear{color:rgba(0,0,0,.3)}.layui-input-affix .layui-icon:hover{color:rgba(0,0,0,.6)}.layui-input-wrap .layui-input-number{width:24px;padding:0}.layui-input-wrap .layui-input-number .layui-icon{position:absolute;right:0;width:100%;height:50%;line-height:normal;font-size:12px}.layui-input-wrap .layui-input-number .layui-icon:before{position:absolute;left:50%;top:50%;margin-top:-6px;margin-left:-6px}.layui-input-wrap .layui-input-number .layui-icon-up{top:0;border-bottom:1px solid #eee}.layui-input-wrap .layui-input-number .layui-icon-down{bottom:0}.layui-input-wrap .layui-input-number .layui-icon:hover{font-weight:700}.layui-input-wrap .layui-input[type=number]::-webkit-inner-spin-button,.layui-input-wrap .layui-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none!important}.layui-input-wrap .layui-input[type=number]{-moz-appearance:textfield}.layui-form-select{position:relative;color:#5f5f5f}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #eee;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#f8f8f8;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#f8f8f8;color:#16b777;font-weight:700}.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.layui-form-selected .layui-edge{margin-top:-3px\0}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;display:inline-block;vertical-align:middle;height:30px;line-height:30px;margin-right:10px;padding-right:30px;background-color:#fff;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox>*{display:inline-block;vertical-align:middle}.layui-form-checkbox>div{padding:0 11px;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.layui-form-checkbox>div>.layui-icon{line-height:normal}.layui-form-checkbox:hover>div{background-color:#c2c2c2}.layui-form-checkbox>i{position:absolute;right:0;top:0;width:30px;height:100%;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;color:rgba(255,255,255,0);font-size:20px;text-align:center;box-sizing:border-box}.layui-form-checkbox:hover>i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#16b777}.layui-form-checked:hover>div,.layui-form-checked>div{background-color:#16b777}.layui-form-checked:hover>i,.layui-form-checked>i{color:#16b777}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox.layui-checkbox-disabled>div{background-color:#eee!important}.layui-form [lay-checkbox]{display:none}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:24px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary]>div{margin-top:-1px;padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#5f5f5f}.layui-form-checkbox[lay-skin=primary]>i{right:auto;left:0;width:16px;height:16px;line-height:14px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover>i{border-color:#16b777;color:#fff}.layui-form-checked[lay-skin=primary]>i{border-color:#16b777!important;background-color:#16b777;color:#fff}.layui-checkbox-disabled[lay-skin=primary]>div{background:0 0!important}.layui-form-checked.layui-checkbox-disabled[lay-skin=primary]>i{background:#eee!important;border-color:#eee!important}.layui-checkbox-disabled[lay-skin=primary]:hover>i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate{border-color:#16b777}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate:before{content:'';display:inline-block;vertical-align:middle;position:relative;width:50%;height:1px;margin:-1px auto 0;background-color:#16b777}.layui-form-switch{position:relative;display:inline-block;vertical-align:middle;height:24px;line-height:22px;min-width:44px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;box-sizing:border-box;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>div{position:relative;top:0;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#16b777;background-color:#16b777}.layui-form-onswitch>i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch>div{margin-left:0;margin-right:21px;color:#fff!important}.layui-checkbox-disabled{border-color:#eee!important}.layui-checkbox-disabled>div{color:#c2c2c2!important}.layui-checkbox-disabled>i{border-color:#eee!important}.layui-checkbox-disabled:hover>i{color:#fff!important}.layui-form-radio{display:inline-block;vertical-align:middle;line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio>*{display:inline-block;vertical-align:middle;font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio:hover>*,.layui-form-radioed,.layui-form-radioed>i{color:#16b777}.layui-radio-disabled>i{color:#eee!important}.layui-radio-disabled>*{color:#c2c2c2!important}.layui-form [lay-radio]{display:none}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#fafafa;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0;border-right-width:1px}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto!important;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #eee}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-laypage a[data-page]{color:#333}.layui-laypage a{text-decoration:none!important;cursor:pointer}.layui-laypage a:hover{color:#16baaa}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#16baaa}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{display:inline-block;width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#16baaa!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px;clear:both}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{display:inline-block;vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;margin:10px 0;background-color:#fff;color:#5f5f5f}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:600}.layui-table-mend{background-color:#fff}.layui-table-click,.layui-table-hover,.layui-table[lay-even] tbody tr:nth-child(even){background-color:#f8f8f8}.layui-table-checked{background-color:#dbfbf0}.layui-table-checked.layui-table-click,.layui-table-checked.layui-table-hover{background-color:#abf8dd}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-mend,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#eee}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0;border-bottom-width:1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0;border-right-width:1px}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding-top:15px;padding-right:30px;padding-bottom:15px;padding-left:30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:50px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{padding-top:5px;padding-right:10px;padding-bottom:5px;padding-left:10px;font-size:12px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:30px;line-height:20px;padding-top:5px;padding-left:11px;padding-right:11px}.layui-table[lay-data],.layui-table[lay-options]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view{clear:both}.layui-table-view .layui-table{position:relative;width:auto;margin:0;border:0;border-collapse:separate}.layui-table-view .layui-table[lay-skin=line]{border-width:0;border-right-width:1px}.layui-table-view .layui-table[lay-skin=row]{border-width:0;border-bottom-width:1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:0;border-top:none;border-left:none}.layui-table-view .layui-table th [lay-event],.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td,.layui-table-view .layui-table th span{cursor:default}.layui-table-view .layui-table td[data-edit]{cursor:text}.layui-table-view .layui-table td[data-edit]:hover:after{position:absolute;left:0;top:0;width:100%;height:100%;box-sizing:border-box;border:1px solid #16b777;pointer-events:none;content:""}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px;line-height:16px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:199}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0;border-bottom-width:1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-column{position:relative;width:100%;min-height:41px;padding:8px 16px;border-width:0;border-bottom-width:1px}.layui-table-column .layui-btn-container{margin-bottom:-8px}.layui-table-column .layui-btn-container .layui-btn{margin-right:8px;margin-bottom:8px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;z-index:399;padding:5px 0!important;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-tool-panel li{padding:0 10px;margin:0!important;line-height:30px;list-style-type:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%}.layui-table-tool-panel li:hover{background-color:#f8f8f8}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{padding-left:28px}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0;border-left-width:1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#5f5f5f}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#5f5f5f}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:38px;line-height:28px;padding:6px 15px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-form-checkbox[lay-skin=primary]>div{padding-left:24px}.layui-table-cell .layui-table-link{color:#01aaed}.layui-table-cell .layui-btn{vertical-align:inherit}.layui-table-cell[align=center]{-webkit-box-pack:center}.layui-table-cell[align=right]{-webkit-box-pack:end}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{text-align:center;-webkit-box-pack:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:30px 15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0;border-left-width:1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px;border-width:0;border-left-width:1px}.layui-table-tool{position:relative;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0;border-bottom-width:1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-total{margin-bottom:-1px;border-width:0;border-top-width:1px;overflow:hidden}.layui-table-page{border-width:0;border-top-width:1px;margin-bottom:-1px;white-space:nowrap;overflow:hidden}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-11px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-pagebar{float:right;line-height:23px}.layui-table-pagebar .layui-btn-sm{margin-top:-1px}.layui-table-pagebar .layui-btn-xs{margin-top:2px}.layui-table-view select[lay-ignore]{display:inline-block}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;z-index:189;min-width:100%;min-height:100%;padding:5px 14px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15);background-color:#fff}.layui-table-edit:focus{border-color:#16b777!important}input.layui-input.layui-table-edit{height:100%}select.layui-table-edit{padding:0 0 0 10px;border-color:#d2d2d2}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:24px;height:100%;padding:5px 0;border-width:0;border-left-width:1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px;font-size:14px}.layui-table-grid-down:hover{background-color:#fbfbfb}.layui-table-expanded{height:95px}.layui-table-expanded .layui-table-cell,.layui-table-view .layui-table[lay-size=lg] .layui-table-expanded .layui-table-cell,.layui-table-view .layui-table[lay-size=sm] .layui-table-expanded .layui-table-cell{height:auto;max-height:94px;white-space:normal;text-overflow:clip}.layui-table-cell-c{position:absolute;bottom:-10px;right:50%;margin-right:-9px;width:20px;height:20px;line-height:18px;cursor:pointer;text-align:center;background-color:#fff;border:1px solid #eee;border-radius:50%;z-index:1000;transition:.3s all;font-size:14px}.layui-table-cell-c:hover{border-color:#16b777}.layui-table-expanded td:hover .layui-table-cell{overflow:auto}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-49px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#5f5f5f}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#5f5f5f;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-table-tree-nodeIcon{max-width:20px}.layui-table-tree-nodeIcon>*{width:100%}.layui-table-tree-flexIcon,.layui-table-tree-nodeIcon{margin-right:2px}.layui-table-tree-flexIcon{cursor:pointer}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-list{margin:11px 0}.layui-upload-choose{max-width:200px;padding:0 10px;color:#999;font-size:14px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-upload-drag{position:relative;display:inline-block;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#16baaa}.layui-upload-drag[lay-over]{border-color:#16baaa}.layui-upload-form{display:inline-block}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;display:inline-block;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-btn-container .layui-upload-choose{padding-left:0}.layui-menu{position:relative;margin:5px 0;background-color:#fff;box-sizing:border-box}.layui-menu *{box-sizing:border-box}.layui-menu li,.layui-menu-body-title,.layui-menu-body-title a{padding:5px 15px;color:initial}.layui-menu li{position:relative;margin:1px 0;line-height:26px;color:rgba(0,0,0,.8);font-size:14px;white-space:nowrap;cursor:pointer;transition:all .3s}.layui-menu li:hover{background-color:#f8f8f8}.layui-menu li.layui-disabled,.layui-menu li.layui-disabled *{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important}.layui-menu-item-parent:hover>.layui-menu-body-panel{display:block;animation-name:layui-fadein;animation-duration:.3s;animation-fill-mode:both;animation-delay:.2s}.layui-menu-item-group>.layui-menu-body-title,.layui-menu-item-parent>.layui-menu-body-title{padding-right:38px}.layui-menu .layui-menu-item-divider:hover,.layui-menu .layui-menu-item-group:hover,.layui-menu .layui-menu-item-none:hover{background:0 0;cursor:default}.layui-menu .layui-menu-item-group>ul{margin:5px 0 -5px}.layui-menu .layui-menu-item-group>.layui-menu-body-title{color:rgba(0,0,0,.35);user-select:none}.layui-menu .layui-menu-item-none{color:rgba(0,0,0,.35);cursor:default}.layui-menu .layui-menu-item-none{text-align:center}.layui-menu .layui-menu-item-divider{margin:5px 0;padding:0;height:0;line-height:0;border-bottom:1px solid #eee;overflow:hidden}.layui-menu .layui-menu-item-down:hover,.layui-menu .layui-menu-item-up:hover{cursor:pointer}.layui-menu .layui-menu-item-up>.layui-menu-body-title{color:rgba(0,0,0,.8)}.layui-menu .layui-menu-item-up>ul{visibility:hidden;height:0;overflow:hidden}.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon,.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon{color:#000}.layui-menu .layui-menu-item-down>ul{visibility:visible;height:auto}.layui-menu .layui-menu-item-checked,.layui-menu .layui-menu-item-checked2{background-color:#f8f8f8!important;color:#16b777}.layui-menu .layui-menu-item-checked a,.layui-menu .layui-menu-item-checked2 a{color:#16b777}.layui-menu .layui-menu-item-checked:after{position:absolute;right:-1px;top:0;bottom:0;border-right:3px solid #16b777;content:""}.layui-menu-body-title{position:relative;margin:-5px -15px;overflow:hidden;text-overflow:ellipsis}.layui-menu-body-title a{display:block;margin:-5px -15px;color:rgba(0,0,0,.8)}.layui-menu-body-title a:hover{transition:all .3s}.layui-menu-body-title>.layui-icon{position:absolute;right:15px;top:50%;margin-top:-6px;line-height:normal;font-size:14px}.layui-menu-body-title>.layui-icon:hover{transition:all .3s}.layui-menu-body-title>.layui-icon-right{right:14px}.layui-menu-body-panel{display:none;position:absolute;top:-7px;left:100%;z-index:1000;margin-left:13px;padding:5px 0}.layui-menu-body-panel:before{content:"";position:absolute;width:20px;left:-16px;top:0;bottom:0}.layui-menu-body-panel-left{left:auto;right:100%;margin:0 13px 0}.layui-menu-body-panel-left:before{left:auto;right:-16px}.layui-menu-lg li{line-height:32px}.layui-menu-lg .layui-menu-body-title a:hover,.layui-menu-lg li:hover{background:0 0;color:#16b777}.layui-menu-lg li .layui-menu-body-panel{margin-left:14px}.layui-menu-lg li .layui-menu-body-panel-left{margin:0 15px 0}.layui-dropdown{position:absolute;left:-999999px;top:-999999px;z-index:77777777;margin:5px 0;min-width:100px}.layui-dropdown:before{content:"";position:absolute;width:100%;height:6px;left:0;top:-6px}.layui-dropdown-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}.layui-nav{position:relative;padding:0 15px;background-color:#2f363c;color:#fff;border-radius:2px;font-size:0;box-sizing:border-box}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;margin-top:0;list-style:none;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar{content:"";position:absolute;left:0;top:0;width:0;height:3px;background-color:#16b777;transition:all .2s;-webkit-transition:all .2s;pointer-events:none}.layui-nav-bar{z-index:1000}.layui-nav[lay-bar=disabled] .layui-nav-bar{display:none}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff;text-decoration:none}.layui-nav .layui-this:after{top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{position:absolute;top:0;right:3px;left:auto!important;margin-top:0;font-size:12px;cursor:pointer;transition:all .2s;-webkit-transition:all .2s}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{transform:rotate(180deg)}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #eee;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap;box-sizing:border-box}.layui-nav .layui-nav-child a{color:#5f5f5f;color:rgba(0,0,0,.8)}.layui-nav .layui-nav-child a:hover{background-color:#f8f8f8;color:rgba(0,0,0,.8)}.layui-nav-child dd{margin:1px 0;position:relative}.layui-nav-child dd.layui-this{background-color:#f8f8f8;color:#000}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-child-r{left:auto;right:0}.layui-nav-child-c{text-align:center}.layui-nav.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:40px}.layui-nav-tree .layui-nav-item a{position:relative;height:40px;line-height:40px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item>a{padding-top:5px;padding-bottom:5px}.layui-nav-tree .layui-nav-more{right:15px}.layui-nav-tree .layui-nav-item>a .layui-nav-more{padding:5px 0}.layui-nav-tree .layui-nav-bar{width:5px;height:0}.layui-side .layui-nav-tree .layui-nav-bar{width:2px}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#16baaa;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-bar{background-color:#16baaa}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;box-shadow:none}.layui-nav-tree .layui-nav-child dd{margin:0}.layui-nav-tree .layui-nav-child a{color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child,.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-itemed>.layui-nav-child{display:block;background-color:rgba(0,0,0,.3)!important}.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-nav-tree.layui-bg-gray a,.layui-nav.layui-bg-gray .layui-nav-item a{color:#373737;color:rgba(0,0,0,.8)}.layui-nav-tree.layui-bg-gray{padding:6px 0}.layui-nav-tree.layui-bg-gray .layui-nav-itemed>a{color:#000!important}.layui-nav.layui-bg-gray .layui-this a{color:#16b777}.layui-nav-tree.layui-bg-gray .layui-nav-itemed>.layui-nav-child{padding-left:11px;background:0 0!important}.layui-nav-tree.layui-bg-gray .layui-nav-item>a{padding-top:0;padding-bottom:0}.layui-nav-tree.layui-bg-gray .layui-nav-item>a .layui-nav-more{padding:0}.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this,.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this a,.layui-nav-tree.layui-bg-gray .layui-this,.layui-nav-tree.layui-bg-gray .layui-this>a{background:0 0!important;color:#16b777!important;font-weight:700}.layui-nav-tree.layui-bg-gray .layui-nav-bar{background-color:#16b777}.layui-breadcrumb{visibility:hidden;font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#16b777!important}.layui-breadcrumb a cite{color:#5f5f5f;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab .layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{position:relative;line-height:40px;min-width:65px;margin:0;padding:0 15px;text-align:center;cursor:pointer}.layui-tab .layui-tab-title li a{display:block;padding:0 15px;margin:0 -15px}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:"";width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#eee;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:15px 0}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#ff5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#16baaa}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #16b777}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#fafafa}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#16b777}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#16b777;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#ff5722}.layui-timeline-item:before{content:"";position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:first-child:before{display:block}.layui-timeline-item:last-child:before{display:none}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px;line-height:22px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#ff5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#5f5f5f}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-5px 6px 0}.layui-nav .layui-badge{margin-top:-10px}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\0;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:none 0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\0;opacity:1;left:20px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#eee;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind ul li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:16px;bottom:16px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9f9f9f;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#5f5f5f;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #d9d9d9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{display:block;position:relative;padding:15px;line-height:20px;border:1px solid #eee;border-left-width:6px;background-color:#fff;color:#333;font-family:"Courier New",Consolas,"Lucida Console";font-size:12px}.layui-transfer-box,.layui-transfer-header,.layui-transfer-search{border-width:0;border-style:solid;border-color:#eee}.layui-transfer-box{position:relative;display:inline-block;vertical-align:middle;border-width:1px;width:200px;height:360px;border-radius:2px;background-color:#fff}.layui-transfer-box .layui-form-checkbox{width:100%;margin:0!important}.layui-transfer-header{height:38px;line-height:38px;padding:0 11px;border-bottom-width:1px}.layui-transfer-search{position:relative;padding:11px;border-bottom-width:1px}.layui-transfer-search .layui-input{height:32px;padding-left:30px;font-size:12px}.layui-transfer-search .layui-icon-search{position:absolute;left:20px;top:50%;line-height:normal;margin-top:-8px;color:#5f5f5f}.layui-transfer-active{margin:0 15px;display:inline-block;vertical-align:middle}.layui-transfer-active .layui-btn{display:block;margin:0;padding:0 15px;background-color:#16b777;border-color:#16b777;color:#fff}.layui-transfer-active .layui-btn-disabled{background-color:#fbfbfb;border-color:#eee;color:#d2d2d2}.layui-transfer-active .layui-btn:first-child{margin-bottom:15px}.layui-transfer-active .layui-btn .layui-icon{margin:0;font-size:14px!important}.layui-transfer-data{padding:5px 0;overflow:auto}.layui-transfer-data li{height:32px;line-height:32px;margin-top:0!important;padding:0 11px;list-style-type:none!important}.layui-transfer-data li:hover{background-color:#f8f8f8;transition:.5s all}.layui-transfer-data .layui-none{padding:15px 11px;text-align:center;color:#999}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:11px 6px 11px 0;font-size:0}.layui-rate li{margin-top:0!important}.layui-rate li i.layui-icon{font-size:20px;color:#ffb800}.layui-rate li i.layui-icon{margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:38px;height:38px;border:1px solid #eee;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:44px;height:44px;line-height:30px}.layui-colorpicker.layui-colorpicker-sm{width:30px;height:30px;line-height:20px;padding:3px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:16px;padding:1px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#fff;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;left:-999999px;top:-999999px;z-index:77777777;width:280px;margin:5px 0;padding:7px;background:#fff;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #fff;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#5f5f5f}.layui-slider{height:4px;background:#eee;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#fff;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:77777777;white-space:nowrap;display:none;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#fff;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:"";position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #eee;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-14px;box-sizing:border-box}.layui-slider-input-btn{position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #eee}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #eee}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none;padding-right:21px}.layui-slider-input-btn i:hover{color:#16baaa}.layui-slider-vertical{width:4px;margin-left:33px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-tree{line-height:22px}.layui-tree .layui-form-checkbox{margin:0!important}.layui-tree-set{width:100%;position:relative}.layui-tree-pack{display:none;padding-left:20px;position:relative}.layui-tree-line .layui-tree-pack{padding-left:27px}.layui-tree-line .layui-tree-set .layui-tree-set:after{content:"";position:absolute;top:14px;left:-9px;width:17px;height:0;border-top:1px dotted #c0c4cc}.layui-tree-entry{position:relative;padding:3px 0;height:26px;white-space:nowrap}.layui-tree-entry:hover{background-color:#eee}.layui-tree-line .layui-tree-entry:hover{background-color:rgba(0,0,0,0)}.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color:#999;text-decoration:underline;transition:.3s}.layui-tree-main{display:inline-block;vertical-align:middle;cursor:pointer;padding-right:10px}.layui-tree-line .layui-tree-set:before{content:"";position:absolute;top:0;left:-9px;width:0;height:100%;border-left:1px dotted #c0c4cc}.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height:13px}.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height:0}.layui-tree-iconClick{display:inline-block;vertical-align:middle;position:relative;height:20px;line-height:20px;margin:0 10px;color:#c0c4cc}.layui-tree-icon{height:14px;line-height:12px;width:14px;text-align:center;border:1px solid #c0c4cc}.layui-tree-iconClick .layui-icon{font-size:18px}.layui-tree-icon .layui-icon{font-size:12px;color:#5f5f5f}.layui-tree-iconArrow{padding:0 5px}.layui-tree-iconArrow:after{content:"";position:absolute;left:4px;top:3px;z-index:100;width:0;height:0;border-width:5px;border-style:solid;border-color:transparent transparent transparent #c0c4cc;transition:.5s}.layui-tree-spread>.layui-tree-entry .layui-tree-iconClick>.layui-tree-iconArrow:after{transform:rotate(90deg) translate(3px,4px)}.layui-tree-txt{display:inline-block;vertical-align:middle;color:#555}.layui-tree-search{margin-bottom:15px;color:#5f5f5f}.layui-tree-btnGroup{visibility:hidden;display:inline-block;vertical-align:middle;position:relative}.layui-tree-btnGroup .layui-icon{display:inline-block;vertical-align:middle;padding:0 2px;cursor:pointer}.layui-tree-btnGroup .layui-icon:hover{color:#999;transition:.3s}.layui-tree-entry:hover .layui-tree-btnGroup{visibility:visible}.layui-tree-editInput{position:relative;display:inline-block;vertical-align:middle;height:20px;line-height:20px;padding:0;border:none;background-color:rgba(0,0,0,.05)}.layui-tree-emptyText{text-align:center;color:#999}.layui-anim{-webkit-animation-duration:.3s;-webkit-animation-fill-mode:both;animation-duration:.3s;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .2s;-webkit-transition:all .2s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,15px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,15px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@keyframes layui-down{0%{opacity:.3;transform:translate3d(0,-100%,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-down{animation-name:layui-down}@keyframes layui-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-downbit{animation-name:layui-downbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@keyframes layui-scalesmall{0%{opacity:.3;transform:scale(1.5)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall{animation-name:layui-scalesmall}@keyframes layui-scalesmall-spring{0%{opacity:.3;transform:scale(1.5)}80%{opacity:.8;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall-spring{animation-name:layui-scalesmall-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout}html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-wrap{font-size:13px;font-family:"Courier New",Consolas,"Lucida Console"}.layui-code-view{display:block;position:relative;padding:0!important;border:1px solid #eee;border-left-width:6px;background-color:#fff;color:#333}.layui-code-view pre{margin:0!important}.layui-code-header{position:relative;z-index:3;padding:0 11px;height:40px;line-height:40px;border-bottom:1px solid #eee;background-color:#fafafa;font-size:12px}.layui-code-header>.layui-code-header-about{position:absolute;right:11px;top:0;color:#b7b7b7}.layui-code-header-about>a{padding-left:10px}.layui-code-wrap{position:relative;display:block;z-index:1;margin:0!important;padding:11px 0!important;overflow-x:hidden;overflow-y:auto}.layui-code-line{position:relative;line-height:19px;margin:0!important}.layui-code-line-number{position:absolute;left:0;top:0;padding:0 8px;min-width:45px;height:100%;text-align:right;user-select:none;white-space:nowrap;overflow:hidden}.layui-code-line-content{padding:0 11px;word-wrap:break-word;white-space:pre-wrap}.layui-code-ln-mode>.layui-code-wrap>.layui-code-line{padding-left:45px}.layui-code-ln-side{position:absolute;left:0;top:0;bottom:0;z-index:0;width:45px;border-right:1px solid #eee;border-color:rgb(126 122 122 / 15%);background-color:#fafafa;pointer-events:none}.layui-code-nowrap>.layui-code-wrap{overflow:auto}.layui-code-nowrap>.layui-code-wrap>.layui-code-line>.layui-code-line-content{white-space:pre;word-wrap:normal}.layui-code-nowrap>.layui-code-ln-side{border-right-width:0!important;background:0 0!important}.layui-code-fixbar{position:absolute;top:8px;right:11px;padding-right:45px;z-index:5}.layui-code-fixbar>span{position:absolute;right:0;top:0;padding:0 8px;color:#777;transition:all .3s}.layui-code-fixbar>span:hover{color:#16b777}.layui-code-copy{display:none;cursor:pointer}.layui-code-preview>.layui-code-view>.layui-code-fixbar .layui-code-copy{display:none!important}.layui-code-view:hover>.layui-code-fixbar .layui-code-copy{display:block}.layui-code-view:hover>.layui-code-fixbar .layui-code-lang-marker{display:none}.layui-code-theme-dark{border-width:1px;border-color:rgb(126 122 122 / 15%);background-color:#1f1f1f;color:#ccc}.layui-code-theme-dark>.layui-code-ln-side{border-right-color:#2a2a2a;background:0 0;color:#6e7681}.layui-code textarea{display:none}.layui-code-preview>.layui-code,.layui-code-preview>.layui-code-view{margin:0}.layui-code-preview>.layui-tab{position:relative;z-index:1;margin-bottom:0}.layui-code-preview>.layui-tab>.layui-tab-title{border-width:0}.layui-code-preview .layui-code-item{display:none}.layui-code-item-preview{position:relative;padding:16px;overflow:auto}.layui-code-item-preview>iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.layui-code-tools{position:absolute;right:11px;top:8px;line-height:normal}.layui-code-tools>i{display:inline-block;margin-left:6px;padding:3px;cursor:pointer}.layui-code-tools>i.layui-icon-file-b{color:#999}.layui-code-tools>i:hover{color:#16b777}.layui-code-full{position:fixed;left:0;top:0;z-index:1111111;width:100%;height:100%;background-color:#fff}.layui-code-full .layui-code-item{width:100%!important;border-width:0!important;border-top-width:1px!important}.layui-code-full .layui-code-item,.layui-code-full .layui-code-view,.layui-code-full .layui-code-wrap{height:calc(100vh - 51px)!important;box-sizing:border-box}.layui-code-view.layui-code-hl{line-height:20px!important;border-left-width:1px}.layui-code-view.layui-code-hl>.layui-code-ln-side{background-color:transparent}.layui-code-theme-dark.layui-code-hl,.layui-code-theme-dark.layui-code-hl>.layui-code-ln-side{border-color:rgb(126 122 122 / 15%)}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate,.layui-laydate *{box-sizing:border-box}.layui-laydate{position:absolute;z-index:99999999;margin:5px 0;border-radius:2px;font-size:14px;line-height:normal;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}.layui-laydate-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate{animation-name:laydate-downbit}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;padding:0 5px;color:#999;font-size:18px;cursor:pointer}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-set-ym span{padding:0 10px;cursor:pointer}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:0;text-align:center}.layui-laydate-content th{font-weight:400}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.laydate-day-holidays:before{position:absolute;left:0;top:0;font-size:12px;transform:scale(.7)}.laydate-day-holidays:before{content:'\4F11';color:#ff5722}.laydate-day-holidays[type=work]:before{content:'\73ED';color:inherit}.layui-laydate .layui-this .laydate-day-holidays:before{color:#fff}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px}.layui-laydate-footer span{display:inline-block;vertical-align:top;height:26px;line-height:24px;padding:0 10px;border:1px solid #c9c9c9;border-radius:2px;background-color:#fff;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .3s}.layui-laydate-footer span:hover{color:#16b777}.layui-laydate-footer span.layui-laydate-preview{cursor:default;border-color:transparent!important}.layui-laydate-footer span.layui-laydate-preview:hover{color:#777}.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left:0}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{margin:0 0 0 -1px;border-radius:0}.laydate-footer-btns span:first-child{border-radius:2px 0 0 2px}.laydate-footer-btns span:last-child{border-radius:0 2px 2px 0}.layui-laydate-shortcut{width:80px;padding:6px 0;display:inline-block;vertical-align:top;overflow:auto;max-height:276px;text-align:center}.layui-laydate-shortcut+.layui-laydate-main{display:inline-block;border-left:1px solid #e2e2e2}.layui-laydate-shortcut>li{padding:5px 8px;cursor:pointer;line-height:18px}.layui-laydate .layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;box-sizing:border-box;background-color:#fff}.layui-laydate .layui-laydate-list>li{position:relative;display:inline-block;width:33.3%;height:36px;line-height:36px;margin:3px 0;vertical-align:middle;text-align:center;cursor:pointer;list-style:none}.layui-laydate .laydate-month-list>li{width:25%;margin:17px 0}.layui-laydate .laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.layui-laydate .laydate-time-list p{position:relative;top:-4px;margin:0;line-height:29px}.layui-laydate .laydate-time-list ol{height:181px;overflow:hidden}.layui-laydate .laydate-time-list>li:hover ol{overflow-y:auto}.layui-laydate .laydate-time-list ol li{width:130%;padding-left:33px;height:30px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px;color:#ff5722}.layui-laydate-range{width:546px}.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle;max-width:50%}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-y,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#777}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#16b777}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{color:#333}.layui-laydate-content td{color:#777}.layui-laydate-content td.laydate-day-now{color:#16b777}.layui-laydate-content td.laydate-day-now:after{content:'';position:absolute;width:100%;height:30px;left:0;top:0;border:1px solid #16b777;box-sizing:border-box}.layui-laydate-linkage .layui-laydate-content td.laydate-selected>div{background-color:#00f7de}.layui-laydate-linkage .laydate-selected:hover>div{background-color:#00f7de!important}.layui-laydate-content td.laydate-selected:after,.layui-laydate-content td:hover:after{content:none}.layui-laydate-content td>div:hover,.layui-laydate-list li:hover,.layui-laydate-shortcut>li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.layui-laydate-linkage .laydate-selected.laydate-day-next>div,.layui-laydate-linkage .laydate-selected.laydate-day-prev>div{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#ff5722}.laydate-day-mark::after{background-color:#16b777}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#16b777}.layui-laydate .layui-this,.layui-laydate .layui-this>div{background-color:#16baaa!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content td>div{padding:7px 0;height:100%}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#16baaa}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead{border:1px solid #e2e2e2}.layui-laydate-linkage.laydate-theme-grid .laydate-selected,.layui-laydate-linkage.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#16baaa!important}.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-next,.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}.laydate-theme-grid .layui-laydate-content td>div{height:29px;margin-top:-1px}.laydate-theme-circle .layui-laydate-content td.layui-this>div,.laydate-theme-circle .layui-laydate-content td>div{width:28px;height:28px;line-height:28px;border-radius:14px;margin:0 4px;padding:0}.layui-laydate.laydate-theme-circle .layui-laydate-content table td.layui-this{background-color:transparent!important}.laydate-theme-grid.laydate-theme-circle .layui-laydate-content td>div{margin:0 3.5px}.laydate-theme-fullpanel .layui-laydate-main{width:526px}.laydate-theme-fullpanel .layui-laydate-list{width:252px;left:272px}.laydate-theme-fullpanel .laydate-set-ym span{display:none}.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-theme-fullpanel .laydate-time-show .layui-laydate-header .layui-icon{display:inline-block!important}.laydate-theme-fullpanel .laydate-btns-time{display:none}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch}.layui-layer{top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-btn a,.layui-layer-setwin span{display:inline-block;vertical-align:middle;*display:inline;*zoom:1}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes layer-slide-down{from{transform:translate3d(0,-100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-down-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,-100%,0)}}.layer-anim-slide-down{animation-name:layer-slide-down}.layer-anim-slide-down-out{animation-name:layer-slide-down-out}@keyframes layer-slide-left{from{transform:translate3d(100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-left-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(100%,0,0)}}.layer-anim-slide-left{animation-name:layer-slide-left}.layer-anim-slide-left-out{animation-name:layer-slide-left-out}@keyframes layer-slide-up{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-up-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,100%,0)}}.layer-anim-slide-up{animation-name:layer-slide-up}.layer-anim-slide-up-out{animation-name:layer-slide-up-out}@keyframes layer-slide-right{from{transform:translate3d(-100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-right-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(-100%,0,0)}}.layer-anim-slide-right{animation-name:layer-slide-right}.layer-anim-slide-right-out{animation-name:layer-slide-right-out}.layui-layer-title{padding:0 81px 0 16px;height:50px;line-height:50px;border-bottom:1px solid #f0f0f0;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:16px;font-size:0;line-height:initial}.layui-layer-setwin span{position:relative;width:16px;height:16px;line-height:18px;margin-left:10px;text-align:center;font-size:16px;cursor:pointer;color:#000;_overflow:hidden;box-sizing:border-box}.layui-layer-setwin .layui-layer-min:before{content:'';position:absolute;width:12px;border-bottom:1px solid #2e2d3c;left:50%;top:50%;margin:-.5px 0 0 -6px;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-max:after,.layui-layer-setwin .layui-layer-max:before{content:'';position:absolute;left:50%;top:50%;z-index:1;width:9px;height:9px;margin:-5px 0 0 -5px;border:1px solid #2e2d3c}.layui-layer-setwin .layui-layer-max:hover:after,.layui-layer-setwin .layui-layer-max:hover:before{border-color:#2d93ca}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-maxmin:after,.layui-layer-setwin .layui-layer-maxmin:before{width:7px;height:7px;margin:-3px 0 0 -3px;background-color:#fff}.layui-layer-setwin .layui-layer-maxmin:after{z-index:0;margin:-5px 0 0 -1px}.layui-layer-setwin .layui-layer-close{cursor:pointer}.layui-layer-setwin .layui-layer-close:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;color:#fff;background-color:#787878;padding:3px;border:3px solid;width:28px;height:28px;font-size:16px;font-weight:bolder;border-radius:50%;margin-left:0;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{opacity:unset;background-color:#3888f6}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:30px;line-height:30px;margin:5px 5px 0;padding:0 16px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none;box-sizing:border-box}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:transparent;background-color:#1e9fff;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:240px}.layui-layer-dialog .layui-layer-content{position:relative;padding:16px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-face{position:absolute;top:18px;left:16px;color:#959595;font-size:32px;_left:-40px}.layui-layer-dialog .layui-layer-content .layui-icon-tips{color:#f39b12}.layui-layer-dialog .layui-layer-content .layui-icon-success{color:#16b777}.layui-layer-dialog .layui-layer-content .layui-icon-error{top:19px;color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-question{color:#ffb800}.layui-layer-dialog .layui-layer-content .layui-icon-lock{color:#787878}.layui-layer-dialog .layui-layer-content .layui-icon-face-cry{color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-face-smile{color:#16b777}.layui-layer-rim{border:6px solid #8d8d8d;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #d3d4d3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-close{color:#fff}.layui-layer-hui .layui-layer-content{padding:11px 24px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:18px 24px 18px 58px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:76px;height:38px;line-height:38px;text-align:center}.layui-layer-loading-icon{font-size:38px;color:#959595}.layui-layer-loading2{text-align:center}.layui-layer-loading-2{position:relative;height:38px}.layui-layer-loading-2:after,.layui-layer-loading-2:before{content:'';position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;border:3px solid #d2d2d2;box-sizing:border-box}.layui-layer-loading-2:after{border-color:transparent;border-left-color:#1e9fff}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan .layui-layer-title{background:#4476a7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;border-top:1px solid #e9e7e7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#e9e7e7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#c9c5c5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92b8b1}.layui-layer-lan .layui-layer-setwin .layui-icon,.layui-layer-molv .layui-layer-setwin .layui-icon{color:#fff}.layui-layer-win10{border:1px solid #aaa;box-shadow:1px 1px 6px rgba(0,0,0,.3);border-radius:none}.layui-layer-win10 .layui-layer-title{height:32px;line-height:32px;padding-left:8px;border-bottom:none;font-size:12px}.layui-layer-win10 .layui-layer-setwin{right:0;top:0}.layui-layer-win10 .layui-layer-setwin span{margin-left:0;width:32px;height:32px;padding:8px}.layui-layer-win10.layui-layer-page .layui-layer-setwin span{width:38px}.layui-layer-win10 .layui-layer-setwin span:hover{background-color:#e5e5e5}.layui-layer-win10 .layui-layer-setwin span.layui-icon-close:hover{background-color:#e81123;color:#fff}.layui-layer-win10.layui-layer-dialog .layui-layer-content{padding:8px 16px 32px;color:#0033bc}.layui-layer-win10.layui-layer-dialog .layui-layer-padding{padding-top:18px;padding-left:58px}.layui-layer-win10 .layui-layer-btn{padding:5px 5px 10px;border-top:1px solid #dfdfdf;background-color:#f0f0f0}.layui-layer-win10 .layui-layer-btn a{height:20px;line-height:18px;background-color:#e1e1e1;border-color:#adadad;color:#000;font-size:12px;transition:all .3s}.layui-layer-win10 .layui-layer-btn a:hover{border-color:#2a8edd;background-color:#e5f1fb}.layui-layer-win10 .layui-layer-btn .layui-layer-btn0{border-color:#0078d7}.layui-layer-prompt .layui-layer-input{display:block;width:260px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:16px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;display:inline-block;vertical-align:top;border-left:1px solid transparent;border-right:1px solid transparent;min-width:80px;max-width:300px;padding:0 16px;text-align:center;cursor:default;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:51px;border-left-color:#eee;border-right-color:#eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left-color:transparent}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{background:0 0;box-shadow:none}.layui-layer-photos .layui-layer-content{overflow:visible;text-align:center}.layui-layer-photos .layer-layer-photos-main img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-photos-next,.layui-layer-photos-prev{position:fixed;top:50%;width:52px;height:52px;line-height:52px;margin-top:-26px;cursor:pointer;font-size:52px;color:#717171}.layui-layer-photos-prev{left:32px}.layui-layer-photos-next{right:32px}.layui-layer-photos-next:hover,.layui-layer-photos-prev:hover{color:#959595}.layui-layer-photos-toolbar{position:fixed;left:0;right:0;bottom:0;width:100%;height:52px;line-height:52px;background-color:#000\9;filter:Alpha(opacity=60);background-color:rgba(0,0,0,.32);color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:0}.layui-layer-photos-toolbar>*{display:inline-block;vertical-align:top;padding:0 16px;font-size:12px;color:#fff;*display:inline;*zoom:1}.layui-layer-photos-toolbar *{font-size:12px}.layui-layer-photos-header{top:0;bottom:auto}.layui-layer-photos-header>span{cursor:pointer}.layui-layer-photos-header>span:hover{background-color:rgba(51,51,51,.32)}.layui-layer-photos-header .layui-icon{font-size:18px}.layui-layer-photos-footer>h3{max-width:65%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-layer-photos-footer a:hover{text-decoration:underline}.layui-layer-photos-footer em{font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}} \ No newline at end of file +blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{display:inline-block;border:none;vertical-align:middle}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h1,h2,h3,h4{font-weight:700}h5,h6{font-weight:500;font-size:100%}button,input,select,textarea{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:1.6;color:#333;color:rgba(0,0,0,.85);font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{height:0;line-height:0;margin:10px 0;padding:0;border:none;border-bottom:1px solid #eee;clear:both;overflow:hidden;background:0 0}a{color:#333;text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-clear-space{word-spacing:-5px}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.layui-edge{position:relative;display:inline-block;vertical-align:middle;width:0;height:0;border-width:6px;border-style:dashed;border-color:transparent;overflow:hidden}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-disabled,.layui-icon,.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-show-v{visibility:visible!important}.layui-hide-v{visibility:hidden!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=282);src:url(../font/iconfont.eot?v=282#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=282) format('woff2'),url(../font/iconfont.woff?v=282) format('woff'),url(../font/iconfont.ttf?v=282) format('truetype'),url(../font/iconfont.svg?v=282#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-leaf:before{content:"\e701"}.layui-icon-folder:before{content:"\eabe"}.layui-icon-folder-open:before{content:"\eac1"}.layui-icon-gitee:before{content:"\e69b"}.layui-icon-github:before{content:"\e6a7"}.layui-icon-disabled:before{content:"\e6cc"}.layui-icon-moon:before{content:"\e6c2"}.layui-icon-error:before{content:"\e693"}.layui-icon-success:before{content:"\e697"}.layui-icon-question:before{content:"\e699"}.layui-icon-lock:before{content:"\e69a"}.layui-icon-eye:before{content:"\e695"}.layui-icon-eye-invisible:before{content:"\e696"}.layui-icon-backspace:before{content:"\e694"}.layui-icon-tips-fill:before{content:"\eb2e"}.layui-icon-test:before{content:"\e692"}.layui-icon-clear:before{content:"\e788"}.layui-icon-heart-fill:before{content:"\e68f"}.layui-icon-light:before{content:"\e748"}.layui-icon-music:before{content:"\e690"}.layui-icon-time:before{content:"\e68d"}.layui-icon-ie:before{content:"\e7bb"}.layui-icon-firefox:before{content:"\e686"}.layui-icon-at:before{content:"\e687"}.layui-icon-bluetooth:before{content:"\e689"}.layui-icon-chrome:before{content:"\e68a"}.layui-icon-edge:before{content:"\e68b"}.layui-icon-heart:before{content:"\e68c"}.layui-icon-key:before{content:"\e683"}.layui-icon-android:before{content:"\e684"}.layui-icon-mike:before{content:"\e6dc"}.layui-icon-mute:before{content:"\e685"}.layui-icon-gift:before{content:"\e627"}.layui-icon-windows:before{content:"\e67f"}.layui-icon-ios:before{content:"\e680"}.layui-icon-logout:before{content:"\e682"}.layui-icon-wifi:before{content:"\e7e0"}.layui-icon-rss:before{content:"\e808"}.layui-icon-email:before{content:"\e618"}.layui-icon-reduce-circle:before{content:"\e616"}.layui-icon-transfer:before{content:"\e691"}.layui-icon-service:before{content:"\e626"}.layui-icon-addition:before{content:"\e624"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-slider:before{content:"\e714"}.layui-icon-print:before{content:"\e66d"}.layui-icon-export:before{content:"\e67d"}.layui-icon-cols:before{content:"\e610"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-username:before{content:"\e66f"}.layui-icon-password:before{content:"\e673"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-auz:before{content:"\e672"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-tips:before{content:"\e702"}.layui-icon-note:before{content:"\e66e"}.layui-icon-senior:before{content:"\e674"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-notice:before{content:"\e667"}.layui-icon-console:before{content:"\e665"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-set:before{content:"\e716"}.layui-icon-template:before{content:"\e663"}.layui-icon-app:before{content:"\e653"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-home:before{content:"\e68e"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-more:before{content:"\e65f"}.layui-icon-camera:before{content:"\e660"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-read:before{content:"\e705"}.layui-icon-location:before{content:"\e715"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-return:before{content:"\e65c"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-fire:before{content:"\e756"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-cart:before{content:"\e657"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-next:before{content:"\e65b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-user:before{content:"\e770"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-component:before{content:"\e857"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-pause:before{content:"\e651"}.layui-icon-play:before{content:"\e652"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-voice:before{content:"\e688"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-link:before{content:"\e64c"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-share:before{content:"\e641"}.layui-icon-edit:before{content:"\e642"}.layui-icon-delete:before{content:"\e640"}.layui-icon-engine:before{content:"\e628"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-table:before{content:"\e62d"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-water:before{content:"\e636"}.layui-icon-date:before{content:"\e637"}.layui-icon-layer:before{content:"\e638"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-form:before{content:"\e63c"}.layui-icon-file:before{content:"\e621"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-404:before{content:"\e61c"}.layui-icon-about:before{content:"\e60b"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-down:before{content:"\e61a"}.layui-icon-up:before{content:"\e619"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-search:before{content:"\e615"}.layui-icon-friends:before{content:"\e612"}.layui-icon-group:before{content:"\e613"}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-log:before{content:"\e60e"}.layui-icon-list:before{content:"\e60a"}.layui-icon-release:before{content:"\e609"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-ok:before{content:"\e605"}.layui-icon-help:before{content:"\e607"}.layui-icon-chat:before{content:"\e606"}.layui-icon-top:before{content:"\e604"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-star:before{content:"\e600"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-ok-circle:before{content:"\1005"}.layui-main{position:relative;width:1160px;margin:0 auto}.layui-header{position:relative;z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px;overflow-x:hidden}.layui-side-scroll{position:relative;width:220px;height:100%;overflow-x:hidden}.layui-body{position:relative;left:200px;right:0;top:0;bottom:0;z-index:900;width:auto;box-sizing:border-box}.layui-layout-body{overflow-x:hidden}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;right:0;background-color:#23292e}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:absolute;top:60px;padding-bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;z-index:990;height:44px;line-height:44px;padding:0 15px;box-shadow:-1px 0 4px rgb(0 0 0 / 12%);background-color:#fafafa}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#16baaa;font-size:16px;box-shadow:0 1px 2px 0 rgb(0 0 0 / 15%)}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:"";display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:767.98px){.layui-container{padding:0 15px}.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:720px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:960px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1150px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}@media screen and (min-width:1400px){.layui-container{width:1330px}.layui-hide-xl{display:none!important}.layui-show-xl-block{display:block!important}.layui-show-xl-inline{display:inline!important}.layui-show-xl-inline-block{display:inline-block!important}.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9{float:left}.layui-col-xl1{width:8.33333333%}.layui-col-xl2{width:16.66666667%}.layui-col-xl3{width:25%}.layui-col-xl4{width:33.33333333%}.layui-col-xl5{width:41.66666667%}.layui-col-xl6{width:50%}.layui-col-xl7{width:58.33333333%}.layui-col-xl8{width:66.66666667%}.layui-col-xl9{width:75%}.layui-col-xl10{width:83.33333333%}.layui-col-xl11{width:91.66666667%}.layui-col-xl12{width:100%}.layui-col-xl-offset1{margin-left:8.33333333%}.layui-col-xl-offset2{margin-left:16.66666667%}.layui-col-xl-offset3{margin-left:25%}.layui-col-xl-offset4{margin-left:33.33333333%}.layui-col-xl-offset5{margin-left:41.66666667%}.layui-col-xl-offset6{margin-left:50%}.layui-col-xl-offset7{margin-left:58.33333333%}.layui-col-xl-offset8{margin-left:66.66666667%}.layui-col-xl-offset9{margin-left:75%}.layui-col-xl-offset10{margin-left:83.33333333%}.layui-col-xl-offset11{margin-left:91.66666667%}.layui-col-xl-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-col-space32{margin:-16px}.layui-col-space32>*{padding:16px}.layui-padding-1{padding:4px!important}.layui-padding-2{padding:8px!important}.layui-padding-3{padding:16px!important}.layui-padding-4{padding:32px!important}.layui-padding-5{padding:48px!important}.layui-margin-1{margin:4px!important}.layui-margin-2{margin:8px!important}.layui-margin-3{margin:16px!important}.layui-margin-4{margin:32px!important}.layui-margin-5{margin:48px!important}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:1.8;border-left:5px solid #16b777;border-radius:0 2px 2px 0;background-color:#fafafa}.layui-quote-nm{border-style:solid;border-width:1px;border-left-width:5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px}.layui-field-title{margin:16px 0;border-width:0;border-top-width:1px}.layui-field-box{padding:15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#eee}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#16b777;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#5f5f5f}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#fafafa;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:1.6;color:#5f5f5f}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{position:relative;height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f8f8f8;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-card-body{position:relative;padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel{position:relative;border-width:1px;border-style:solid;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);background-color:#fff;color:#5f5f5f}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #eee;background-color:#fff}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-scrollbar-hide{overflow:hidden!important}.layui-bg-red{background-color:#ff5722!important;color:#fff!important}.layui-bg-orange{background-color:#ffb800!important;color:#fff!important}.layui-bg-green{background-color:#16baaa!important;color:#fff!important}.layui-bg-cyan{background-color:#2f4056!important;color:#fff!important}.layui-bg-blue{background-color:#1e9fff!important;color:#fff!important}.layui-bg-purple{background-color:#a233c6!important;color:#fff!important}.layui-bg-black{background-color:#2f363c!important;color:#fff!important}.layui-bg-gray{background-color:#fafafa!important;color:#5f5f5f!important}.layui-badge-rim,.layui-border,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-input-split,.layui-panel,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#eee}.layui-border{border-width:1px;border-style:solid;color:#5f5f5f!important}.layui-border-red{border-width:1px;border-style:solid;border-color:#ff5722!important;color:#ff5722!important}.layui-border-orange{border-width:1px;border-style:solid;border-color:#ffb800!important;color:#ffb800!important}.layui-border-green{border-width:1px;border-style:solid;border-color:#16baaa!important;color:#16baaa!important}.layui-border-cyan{border-width:1px;border-style:solid;border-color:#2f4056!important;color:#2f4056!important}.layui-border-blue{border-width:1px;border-style:solid;border-color:#1e9fff!important;color:#1e9fff!important}.layui-border-purple{border-width:1px;border-style:solid;border-color:#a233c6!important;color:#a233c6!important}.layui-border-black{border-width:1px;border-style:solid;border-color:#2f363c!important;color:#2f363c!important}hr.layui-border-black,hr.layui-border-blue,hr.layui-border-cyan,hr.layui-border-green,hr.layui-border-orange,hr.layui-border-purple,hr.layui-border-red{border-width:0 0 1px}.layui-timeline-item:before{background-color:#eee}.layui-text{line-height:1.8;font-size:14px}.layui-text h1,.layui-text h2,.layui-text h3,.layui-text h4,.layui-text h5,.layui-text h6{color:#3a3a3a}.layui-text h1{font-size:32px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text h4{font-size:16px}.layui-text h5{font-size:14px}.layui-text h6{font-size:13px}.layui-text ol,.layui-text ul{padding-left:15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text ol li{margin-top:5px;list-style-type:decimal}.layui-text-em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.layui-text p{margin:15px 0}.layui-text p:first-child{margin-top:0}.layui-text p:last-child{margin-bottom:0}.layui-text a:not(.layui-btn){color:#01aaed}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text blockquote:not(.layui-elem-quote){padding:5px 15px;border-left:5px solid #eee}.layui-text pre>code:not(.layui-code){padding:15px;font-family:"Courier New",Consolas,"Lucida Console"}.layui-font-12{font-size:12px!important}.layui-font-13{font-size:13px!important}.layui-font-14{font-size:14px!important}.layui-font-16{font-size:16px!important}.layui-font-18{font-size:18px!important}.layui-font-20{font-size:20px!important}.layui-font-22{font-size:22px!important}.layui-font-24{font-size:24px!important}.layui-font-26{font-size:26px!important}.layui-font-28{font-size:28px!important}.layui-font-30{font-size:30px!important}.layui-font-32{font-size:32px!important}.layui-font-red{color:#ff5722!important}.layui-font-orange{color:#ffb800!important}.layui-font-green{color:#16baaa!important}.layui-font-cyan{color:#2f4056!important}.layui-font-blue{color:#01aaed!important}.layui-font-purple{color:#a233c6!important}.layui-font-black{color:#000!important}.layui-font-gray{color:#c2c2c2!important}.layui-btn{display:inline-block;vertical-align:middle;height:38px;line-height:38px;border:1px solid transparent;padding:0 18px;background-color:#16baaa;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border-radius:2px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{word-spacing:-5px}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px;word-spacing:normal}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{padding:0 2px;vertical-align:middle\0;vertical-align:bottom}.layui-btn-primary{border-color:#d2d2d2;background:0 0;color:#5f5f5f}.layui-btn-primary:hover{border-color:#16baaa;color:#333}.layui-btn-normal{background-color:#1e9fff}.layui-btn-warm{background-color:#ffb800}.layui-btn-danger{background-color:#ff5722}.layui-btn-checked{background-color:#16b777}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border-color:#eee!important;background-color:#fbfbfb!important;color:#d2d2d2!important;cursor:not-allowed!important;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:12px!important}.layui-btn-group{display:inline-block;vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#d2d2d2;color:#16baaa}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #d2d2d2}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\9;border-width:1px;border-style:solid;background-color:#fff;color:rgba(0,0,0,.85);border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#d2d2d2!important}.layui-input:focus,.layui-textarea:focus{border-color:#16b777!important;box-shadow:0 0 0 3px rgba(22,183,119,.08)}.layui-textarea{position:relative;min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-input[disabled],.layui-textarea[disabled]{background-color:#fafafa}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{position:relative;margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{position:relative;float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block,.layui-input-inline{position:relative}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{position:relative;float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#ff5722!important;box-shadow:0 0 0 3px rgba(255,87,34,.08)}.layui-input-prefix,.layui-input-split,.layui-input-suffix,.layui-input-suffix .layui-input-affix{position:absolute;right:0;top:0;padding:0 10px;width:35px;height:100%;text-align:center;transition:all .3s;box-sizing:border-box}.layui-input-prefix{left:0;border-radius:2px 0 0 2px}.layui-input-suffix{right:0;border-radius:0 2px 2px 0}.layui-input-split{border-width:1px;border-style:solid}.layui-input-prefix .layui-icon,.layui-input-split .layui-icon,.layui-input-suffix .layui-icon{position:relative;font-size:16px;color:#5f5f5f;transition:all .3s}.layui-input-group{position:relative;display:table;box-sizing:border-box}.layui-input-group>*{display:table-cell;vertical-align:middle;position:relative}.layui-input-group .layui-input{padding-right:15px}.layui-input-group>.layui-input-prefix{width:auto;border-right:0}.layui-input-group>.layui-input-suffix{width:auto;border-left:0}.layui-input-group .layui-input-split{white-space:nowrap}.layui-input-wrap{position:relative;line-height:38px}.layui-input-wrap .layui-input{padding-right:35px}.layui-input-wrap .layui-input::-ms-clear,.layui-input-wrap .layui-input::-ms-reveal{display:none}.layui-input-wrap .layui-input-prefix+.layui-input,.layui-input-wrap .layui-input-prefix~* .layui-input{padding-left:35px}.layui-input-wrap .layui-input-split+.layui-input,.layui-input-wrap .layui-input-split~* .layui-input{padding-left:45px}.layui-input-wrap .layui-input-prefix~.layui-form-select{position:static}.layui-input-wrap .layui-input-prefix,.layui-input-wrap .layui-input-split,.layui-input-wrap .layui-input-suffix{pointer-events:none}.layui-input-wrap .layui-input:hover+.layui-input-split{border-color:#d2d2d2}.layui-input-wrap .layui-input:focus+.layui-input-split{border-color:#16b777}.layui-input-wrap .layui-input.layui-form-danger:focus+.layui-input-split{border-color:#ff5722}.layui-input-wrap .layui-input-prefix.layui-input-split{border-width:0;border-right-width:1px}.layui-input-affix{line-height:38px}.layui-input-suffix .layui-input-affix{right:auto;left:-35px}.layui-input-affix .layui-icon{color:rgba(0,0,0,.8);pointer-events:auto!important;cursor:pointer}.layui-input-affix .layui-icon-clear{color:rgba(0,0,0,.3)}.layui-input-affix .layui-icon:hover{color:rgba(0,0,0,.6)}.layui-input-wrap .layui-input-number{width:24px;padding:0}.layui-input-wrap .layui-input-number .layui-icon{position:absolute;right:0;width:100%;height:50%;line-height:normal;font-size:12px}.layui-input-wrap .layui-input-number .layui-icon:before{position:absolute;left:50%;top:50%;margin-top:-6px;margin-left:-6px}.layui-input-wrap .layui-input-number .layui-icon-up{top:0;border-bottom:1px solid #eee}.layui-input-wrap .layui-input-number .layui-icon-down{bottom:0}.layui-input-wrap .layui-input-number .layui-icon:hover{font-weight:700}.layui-input-wrap .layui-input[type=number]::-webkit-inner-spin-button,.layui-input-wrap .layui-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none!important}.layui-input-wrap .layui-input[type=number]{-moz-appearance:textfield}.layui-form-select{position:relative;color:#5f5f5f}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #eee;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#f8f8f8;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#f8f8f8;color:#16b777;font-weight:700}.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.layui-form-selected .layui-edge{margin-top:-3px\0}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;display:inline-block;vertical-align:middle;height:30px;line-height:30px;margin-right:10px;padding-right:30px;background-color:#fff;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox>*{display:inline-block;vertical-align:middle}.layui-form-checkbox>div{padding:0 11px;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.layui-form-checkbox>div>.layui-icon{line-height:normal}.layui-form-checkbox:hover>div{background-color:#c2c2c2}.layui-form-checkbox>i{position:absolute;right:0;top:0;width:30px;height:100%;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;color:rgba(255,255,255,0);font-size:20px;text-align:center;box-sizing:border-box}.layui-form-checkbox:hover>i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#16b777}.layui-form-checked:hover>div,.layui-form-checked>div{background-color:#16b777}.layui-form-checked:hover>i,.layui-form-checked>i{color:#16b777}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox.layui-checkbox-disabled>div{background-color:#eee!important}.layui-form [lay-checkbox]{display:none}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:24px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary]>div{margin-top:-1px;padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#5f5f5f}.layui-form-checkbox[lay-skin=primary]>i{right:auto;left:0;width:16px;height:16px;line-height:14px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover>i{border-color:#16b777;color:#fff}.layui-form-checked[lay-skin=primary]>i{border-color:#16b777!important;background-color:#16b777;color:#fff}.layui-checkbox-disabled[lay-skin=primary]>div{background:0 0!important}.layui-form-checked.layui-checkbox-disabled[lay-skin=primary]>i{background:#eee!important;border-color:#eee!important}.layui-checkbox-disabled[lay-skin=primary]:hover>i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate{border-color:#16b777}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate:before{content:'';display:inline-block;vertical-align:middle;position:relative;width:50%;height:1px;margin:-1px auto 0;background-color:#16b777}.layui-form-switch{position:relative;display:inline-block;vertical-align:middle;height:24px;line-height:22px;min-width:44px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;box-sizing:border-box;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>div{position:relative;top:0;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#16b777;background-color:#16b777}.layui-form-onswitch>i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch>div{margin-left:0;margin-right:21px;color:#fff!important}.layui-checkbox-disabled{border-color:#eee!important}.layui-checkbox-disabled>div{color:#c2c2c2!important}.layui-checkbox-disabled>i{border-color:#eee!important}.layui-checkbox-disabled:hover>i{color:#fff!important}.layui-form-radio{display:inline-block;vertical-align:middle;line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio>*{display:inline-block;vertical-align:middle;font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio:hover>*,.layui-form-radioed,.layui-form-radioed>i{color:#16b777}.layui-radio-disabled>i{color:#eee!important}.layui-radio-disabled>*{color:#c2c2c2!important}.layui-form [lay-radio]{display:none}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#fafafa;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0;border-right-width:1px}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto!important;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #eee}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-laypage a[data-page]{color:#333}.layui-laypage a{text-decoration:none!important;cursor:pointer}.layui-laypage a:hover{color:#16baaa}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#16baaa}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{display:inline-block;width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#16baaa!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px;clear:both}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{display:inline-block;vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;margin:10px 0;background-color:#fff;color:#5f5f5f}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:600}.layui-table-mend{background-color:#fff}.layui-table-click,.layui-table-hover,.layui-table[lay-even] tbody tr:nth-child(even){background-color:#f8f8f8}.layui-table-checked{background-color:#dbfbf0}.layui-table-checked.layui-table-click,.layui-table-checked.layui-table-hover{background-color:#abf8dd}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-mend,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#eee}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0;border-bottom-width:1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0;border-right-width:1px}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding-top:15px;padding-right:30px;padding-bottom:15px;padding-left:30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:50px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{padding-top:5px;padding-right:10px;padding-bottom:5px;padding-left:10px;font-size:12px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:30px;line-height:20px;padding-top:5px;padding-left:11px;padding-right:11px}.layui-table[lay-data],.layui-table[lay-options]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view{clear:both}.layui-table-view .layui-table{position:relative;width:auto;margin:0;border:0;border-collapse:separate}.layui-table-view .layui-table[lay-skin=line]{border-width:0;border-right-width:1px}.layui-table-view .layui-table[lay-skin=row]{border-width:0;border-bottom-width:1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:0;border-top:none;border-left:none}.layui-table-view .layui-table th [lay-event],.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td,.layui-table-view .layui-table th span{cursor:default}.layui-table-view .layui-table td[data-edit]{cursor:text}.layui-table-view .layui-table td[data-edit]:hover:after{position:absolute;left:0;top:0;width:100%;height:100%;box-sizing:border-box;border:1px solid #16b777;pointer-events:none;content:""}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px;line-height:16px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:199}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0;border-bottom-width:1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-column{position:relative;width:100%;min-height:41px;padding:8px 16px;border-width:0;border-bottom-width:1px}.layui-table-column .layui-btn-container{margin-bottom:-8px}.layui-table-column .layui-btn-container .layui-btn{margin-right:8px;margin-bottom:8px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;z-index:399;padding:5px 0!important;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-tool-panel li{padding:0 10px;margin:0!important;line-height:30px;list-style-type:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%}.layui-table-tool-panel li:hover{background-color:#f8f8f8}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{padding-left:28px}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0;border-left-width:1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#5f5f5f}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#5f5f5f}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:38px;line-height:28px;padding:6px 15px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-form-checkbox[lay-skin=primary]>div{padding-left:24px}.layui-table-cell .layui-table-link{color:#01aaed}.layui-table-cell .layui-btn{vertical-align:inherit}.layui-table-cell[align=center]{-webkit-box-pack:center}.layui-table-cell[align=right]{-webkit-box-pack:end}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{text-align:center;-webkit-box-pack:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:30px 15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0;border-left-width:1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px;border-width:0;border-left-width:1px}.layui-table-tool{position:relative;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0;border-bottom-width:1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-total{margin-bottom:-1px;border-width:0;border-top-width:1px;overflow:hidden}.layui-table-page{border-width:0;border-top-width:1px;margin-bottom:-1px;white-space:nowrap;overflow:hidden}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-11px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-pagebar{float:right;line-height:23px}.layui-table-pagebar .layui-btn-sm{margin-top:-1px}.layui-table-pagebar .layui-btn-xs{margin-top:2px}.layui-table-view select[lay-ignore]{display:inline-block}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;z-index:189;min-width:100%;min-height:100%;padding:5px 14px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15);background-color:#fff}.layui-table-edit:focus{border-color:#16b777!important}input.layui-input.layui-table-edit{height:100%}select.layui-table-edit{padding:0 0 0 10px;border-color:#d2d2d2}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:24px;height:100%;padding:5px 0;border-width:0;border-left-width:1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px;font-size:14px}.layui-table-grid-down:hover{background-color:#fbfbfb}.layui-table-expanded{height:95px}.layui-table-expanded .layui-table-cell,.layui-table-view .layui-table[lay-size=lg] .layui-table-expanded .layui-table-cell,.layui-table-view .layui-table[lay-size=sm] .layui-table-expanded .layui-table-cell{height:auto;max-height:94px;white-space:normal;text-overflow:clip}.layui-table-cell-c{position:absolute;bottom:-10px;right:50%;margin-right:-9px;width:20px;height:20px;line-height:18px;cursor:pointer;text-align:center;background-color:#fff;border:1px solid #eee;border-radius:50%;z-index:1000;transition:.3s all;font-size:14px}.layui-table-cell-c:hover{border-color:#16b777}.layui-table-expanded td:hover .layui-table-cell{overflow:auto}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-49px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#5f5f5f}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#5f5f5f;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-table-tree-nodeIcon{max-width:20px}.layui-table-tree-nodeIcon>*{width:100%}.layui-table-tree-flexIcon,.layui-table-tree-nodeIcon{margin-right:2px}.layui-table-tree-flexIcon{cursor:pointer}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-list{margin:11px 0}.layui-upload-choose{max-width:200px;padding:0 10px;color:#999;font-size:14px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-upload-drag{position:relative;display:inline-block;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#16baaa}.layui-upload-drag[lay-over]{border-color:#16baaa}.layui-upload-form{display:inline-block}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;display:inline-block;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-btn-container .layui-upload-choose{padding-left:0}.layui-menu{position:relative;margin:5px 0;background-color:#fff;box-sizing:border-box}.layui-menu *{box-sizing:border-box}.layui-menu li,.layui-menu-body-title,.layui-menu-body-title a{padding:5px 15px;color:initial}.layui-menu li{position:relative;margin:0 0 1px;line-height:26px;color:rgba(0,0,0,.8);font-size:14px;white-space:nowrap;cursor:pointer;transition:all .3s}.layui-menu li:hover{background-color:#f8f8f8}.layui-menu li.layui-disabled,.layui-menu li.layui-disabled *{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important}.layui-menu-item-parent:hover>.layui-menu-body-panel{display:block;animation-name:layui-fadein;animation-duration:.3s;animation-fill-mode:both;animation-delay:.2s}.layui-menu-item-group>.layui-menu-body-title,.layui-menu-item-parent>.layui-menu-body-title{padding-right:38px}.layui-menu .layui-menu-item-divider:hover,.layui-menu .layui-menu-item-group:hover,.layui-menu .layui-menu-item-none:hover{background:0 0;cursor:default}.layui-menu .layui-menu-item-group>ul{margin:5px 0 -5px}.layui-menu .layui-menu-item-group>.layui-menu-body-title{color:rgba(0,0,0,.35);user-select:none}.layui-menu .layui-menu-item-none{color:rgba(0,0,0,.35);cursor:default}.layui-menu .layui-menu-item-none{text-align:center}.layui-menu .layui-menu-item-divider{margin:5px 0;padding:0;height:0;line-height:0;border-bottom:1px solid #eee;overflow:hidden}.layui-menu .layui-menu-item-down:hover,.layui-menu .layui-menu-item-up:hover{cursor:pointer}.layui-menu .layui-menu-item-up>.layui-menu-body-title{color:rgba(0,0,0,.8)}.layui-menu .layui-menu-item-up>ul{visibility:hidden;height:0;overflow:hidden}.layui-menu .layui-menu-item-down>.layui-menu-body-title>.layui-icon-down{transform:rotate(180deg)}.layui-menu .layui-menu-item-up>.layui-menu-body-title>.layui-icon-up{transform:rotate(-180deg)}.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon,.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon{color:#000}.layui-menu .layui-menu-item-down>ul{visibility:visible;height:auto}.layui-menu .layui-menu-item-checked,.layui-menu .layui-menu-item-checked2{background-color:#f8f8f8!important;color:#16b777}.layui-menu .layui-menu-item-checked a,.layui-menu .layui-menu-item-checked2 a{color:#16b777}.layui-menu .layui-menu-item-checked:after{position:absolute;right:-1px;top:0;bottom:0;border-right:3px solid #16b777;content:""}.layui-menu-body-title{position:relative;margin:-5px -15px;overflow:hidden;text-overflow:ellipsis}.layui-menu-body-title a{display:block;margin:-5px -15px;color:rgba(0,0,0,.8)}.layui-menu-body-title a:hover{transition:all .3s}.layui-menu-body-title>.layui-icon{position:absolute;right:15px;top:50%;margin-top:-6px;line-height:normal;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-menu-body-title>.layui-icon:hover{transition:all .3s}.layui-menu-body-title>.layui-icon-right{right:14px}.layui-menu-body-panel{display:none;position:absolute;top:-7px;left:100%;z-index:1000;margin-left:13px;padding:5px 0}.layui-menu-body-panel:before{content:"";position:absolute;width:20px;left:-16px;top:0;bottom:0}.layui-menu-body-panel-left{left:auto;right:100%;margin:0 13px 0}.layui-menu-body-panel-left:before{left:auto;right:-16px}.layui-menu-lg li{line-height:32px}.layui-menu-lg .layui-menu-body-title a:hover,.layui-menu-lg li:hover{background:0 0;color:#16b777}.layui-menu-lg li .layui-menu-body-panel{margin-left:14px}.layui-menu-lg li .layui-menu-body-panel-left{margin:0 15px 0}.layui-dropdown{position:absolute;left:-999999px;top:-999999px;z-index:77777777;margin:5px 0;min-width:100px}.layui-dropdown:before{content:"";position:absolute;width:100%;height:6px;left:0;top:-6px}.layui-dropdown-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}.layui-nav{position:relative;padding:0 15px;background-color:#2f363c;color:#fff;border-radius:2px;font-size:0;box-sizing:border-box}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;margin-top:0;list-style:none;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar{content:"";position:absolute;left:0;top:0;width:0;height:3px;background-color:#16b777;transition:all .2s;-webkit-transition:all .2s;pointer-events:none}.layui-nav-bar{z-index:1000}.layui-nav[lay-bar=disabled] .layui-nav-bar{display:none}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff;text-decoration:none}.layui-nav .layui-this:after{top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{position:absolute;top:0;right:3px;left:auto!important;margin-top:0;font-size:12px;cursor:pointer;transition:all .2s;-webkit-transition:all .2s}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{transform:rotate(180deg)}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #eee;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap;box-sizing:border-box}.layui-nav .layui-nav-child a{color:#5f5f5f;color:rgba(0,0,0,.8)}.layui-nav .layui-nav-child a:hover{background-color:#f8f8f8;color:rgba(0,0,0,.8)}.layui-nav-child dd{margin:1px 0;position:relative}.layui-nav-child dd.layui-this{background-color:#f8f8f8;color:#000}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-child-r{left:auto;right:0}.layui-nav-child-c{text-align:center}.layui-nav.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:40px}.layui-nav-tree .layui-nav-item a{position:relative;height:40px;line-height:40px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item>a{padding-top:5px;padding-bottom:5px}.layui-nav-tree .layui-nav-more{right:15px}.layui-nav-tree .layui-nav-item>a .layui-nav-more{padding:5px 0}.layui-nav-tree .layui-nav-bar{width:5px;height:0}.layui-side .layui-nav-tree .layui-nav-bar{width:2px}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#16baaa;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-bar{background-color:#16baaa}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;background-color:rgba(0,0,0,.3);box-shadow:none}.layui-nav-tree .layui-nav-child dd{margin:0}.layui-nav-tree .layui-nav-child a{color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-itemed>.layui-nav-child,.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-nav-tree.layui-bg-gray a,.layui-nav.layui-bg-gray .layui-nav-item a{color:#373737;color:rgba(0,0,0,.8)}.layui-nav-tree.layui-bg-gray .layui-nav-itemed>a{color:#000!important}.layui-nav.layui-bg-gray .layui-this a{color:#16b777}.layui-nav-tree.layui-bg-gray .layui-nav-child{padding-left:11px;background:0 0}.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this,.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this a,.layui-nav-tree.layui-bg-gray .layui-this,.layui-nav-tree.layui-bg-gray .layui-this>a{background:0 0!important;color:#16b777!important;font-weight:700}.layui-nav-tree.layui-bg-gray .layui-nav-bar{background-color:#16b777}.layui-breadcrumb{visibility:hidden;font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#16b777!important}.layui-breadcrumb a cite{color:#5f5f5f;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab .layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{position:relative;line-height:40px;min-width:65px;margin:0;padding:0 15px;text-align:center;cursor:pointer}.layui-tab .layui-tab-title li a{display:block;padding:0 15px;margin:0 -15px}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:"";width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#eee;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:15px 0}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#ff5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#16baaa}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #16b777}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#fafafa}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#16b777}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#16b777;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#ff5722}.layui-timeline-item:before{content:"";position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:first-child:before{display:block}.layui-timeline-item:last-child:before{display:none}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px;line-height:22px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#ff5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#5f5f5f}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-5px 6px 0}.layui-nav .layui-badge{margin-top:-10px}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\0;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:none 0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\0;opacity:1;left:20px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#eee;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind ul li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:16px;bottom:16px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9f9f9f;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#5f5f5f;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #d9d9d9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{display:block;position:relative;padding:15px;line-height:20px;border:1px solid #eee;border-left-width:6px;background-color:#fff;color:#333;font-family:"Courier New",Consolas,"Lucida Console";font-size:12px}.layui-transfer-box,.layui-transfer-header,.layui-transfer-search{border-width:0;border-style:solid;border-color:#eee}.layui-transfer-box{position:relative;display:inline-block;vertical-align:middle;border-width:1px;width:200px;height:360px;border-radius:2px;background-color:#fff}.layui-transfer-box .layui-form-checkbox{width:100%;margin:0!important}.layui-transfer-header{height:38px;line-height:38px;padding:0 11px;border-bottom-width:1px}.layui-transfer-search{position:relative;padding:11px;border-bottom-width:1px}.layui-transfer-search .layui-input{height:32px;padding-left:30px;font-size:12px}.layui-transfer-search .layui-icon-search{position:absolute;left:20px;top:50%;line-height:normal;margin-top:-8px;color:#5f5f5f}.layui-transfer-active{margin:0 15px;display:inline-block;vertical-align:middle}.layui-transfer-active .layui-btn{display:block;margin:0;padding:0 15px;background-color:#16b777;border-color:#16b777;color:#fff}.layui-transfer-active .layui-btn-disabled{background-color:#fbfbfb;border-color:#eee;color:#d2d2d2}.layui-transfer-active .layui-btn:first-child{margin-bottom:15px}.layui-transfer-active .layui-btn .layui-icon{margin:0;font-size:14px!important}.layui-transfer-data{padding:5px 0;overflow:auto}.layui-transfer-data li{height:32px;line-height:32px;margin-top:0!important;padding:0 11px;list-style-type:none!important}.layui-transfer-data li:hover{background-color:#f8f8f8;transition:.5s all}.layui-transfer-data .layui-none{padding:15px 11px;text-align:center;color:#999}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:11px 6px 11px 0;font-size:0}.layui-rate li{margin-top:0!important}.layui-rate li i.layui-icon{font-size:20px;color:#ffb800}.layui-rate li i.layui-icon{margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:38px;height:38px;border:1px solid #eee;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:44px;height:44px;line-height:30px}.layui-colorpicker.layui-colorpicker-sm{width:30px;height:30px;line-height:20px;padding:3px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:16px;padding:1px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#fff;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;left:-999999px;top:-999999px;z-index:77777777;width:280px;margin:5px 0;padding:7px;background:#fff;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #fff;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#5f5f5f}.layui-slider{height:4px;background:#eee;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#fff;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:77777777;white-space:nowrap;display:none;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#fff;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:"";position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #eee;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-14px;box-sizing:border-box}.layui-slider-input-btn{position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #eee}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #eee}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none;padding-right:21px}.layui-slider-input-btn i:hover{color:#16baaa}.layui-slider-vertical{width:4px;margin-left:33px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-tree{line-height:22px}.layui-tree .layui-form-checkbox{margin:0!important}.layui-tree-set{width:100%;position:relative}.layui-tree-pack{display:none;padding-left:20px;position:relative}.layui-tree-line .layui-tree-pack{padding-left:27px}.layui-tree-line .layui-tree-set .layui-tree-set:after{content:"";position:absolute;top:14px;left:-9px;width:17px;height:0;border-top:1px dotted #c0c4cc}.layui-tree-entry{position:relative;padding:3px 0;height:26px;white-space:nowrap}.layui-tree-entry:hover{background-color:#eee}.layui-tree-line .layui-tree-entry:hover{background-color:rgba(0,0,0,0)}.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color:#999;text-decoration:underline;transition:.3s}.layui-tree-main{display:inline-block;vertical-align:middle;cursor:pointer;padding-right:10px}.layui-tree-line .layui-tree-set:before{content:"";position:absolute;top:0;left:-9px;width:0;height:100%;border-left:1px dotted #c0c4cc}.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height:13px}.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height:0}.layui-tree-iconClick{display:inline-block;vertical-align:middle;position:relative;height:20px;line-height:20px;margin:0 10px;color:#c0c4cc}.layui-tree-icon{height:14px;line-height:12px;width:14px;text-align:center;border:1px solid #c0c4cc}.layui-tree-iconClick .layui-icon{font-size:18px}.layui-tree-icon .layui-icon{font-size:12px;color:#5f5f5f}.layui-tree-iconArrow{padding:0 5px}.layui-tree-iconArrow:after{content:"";position:absolute;left:4px;top:3px;z-index:100;width:0;height:0;border-width:5px;border-style:solid;border-color:transparent transparent transparent #c0c4cc;transition:.5s}.layui-tree-spread>.layui-tree-entry .layui-tree-iconClick>.layui-tree-iconArrow:after{transform:rotate(90deg) translate(3px,4px)}.layui-tree-txt{display:inline-block;vertical-align:middle;color:#555}.layui-tree-search{margin-bottom:15px;color:#5f5f5f}.layui-tree-btnGroup{visibility:hidden;display:inline-block;vertical-align:middle;position:relative}.layui-tree-btnGroup .layui-icon{display:inline-block;vertical-align:middle;padding:0 2px;cursor:pointer}.layui-tree-btnGroup .layui-icon:hover{color:#999;transition:.3s}.layui-tree-entry:hover .layui-tree-btnGroup{visibility:visible}.layui-tree-editInput{position:relative;display:inline-block;vertical-align:middle;height:20px;line-height:20px;padding:0;border:none;background-color:rgba(0,0,0,.05)}.layui-tree-emptyText{text-align:center;color:#999}.layui-anim{-webkit-animation-duration:.3s;-webkit-animation-fill-mode:both;animation-duration:.3s;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .2s;-webkit-transition:all .2s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,15px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,15px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@keyframes layui-down{0%{opacity:.3;transform:translate3d(0,-100%,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-down{animation-name:layui-down}@keyframes layui-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-downbit{animation-name:layui-downbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@keyframes layui-scalesmall{0%{opacity:.3;transform:scale(1.5)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall{animation-name:layui-scalesmall}@keyframes layui-scalesmall-spring{0%{opacity:.3;transform:scale(1.5)}80%{opacity:.8;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall-spring{animation-name:layui-scalesmall-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout}html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-wrap{font-size:13px;font-family:"Courier New",Consolas,"Lucida Console"}.layui-code-view{display:block;position:relative;padding:0!important;border:1px solid #eee;border-left-width:6px;background-color:#fff;color:#333}.layui-code-view pre{margin:0!important}.layui-code-header{position:relative;z-index:3;padding:0 11px;height:40px;line-height:40px;border-bottom:1px solid #eee;background-color:#fafafa;font-size:12px}.layui-code-header>.layui-code-header-about{position:absolute;right:11px;top:0;color:#b7b7b7}.layui-code-header-about>a{padding-left:10px}.layui-code-wrap{position:relative;display:block;z-index:1;margin:0!important;padding:11px 0!important;overflow-x:hidden;overflow-y:auto}.layui-code-line{position:relative;line-height:19px;margin:0!important}.layui-code-line-number{position:absolute;left:0;top:0;padding:0 8px;min-width:45px;height:100%;text-align:right;user-select:none;white-space:nowrap;overflow:hidden}.layui-code-line-content{padding:0 11px;word-wrap:break-word;white-space:pre-wrap}.layui-code-ln-mode>.layui-code-wrap>.layui-code-line{padding-left:45px}.layui-code-ln-side{position:absolute;left:0;top:0;bottom:0;z-index:0;width:45px;border-right:1px solid #eee;border-color:rgb(126 122 122 / 15%);background-color:#fafafa;pointer-events:none}.layui-code-nowrap>.layui-code-wrap{overflow:auto}.layui-code-nowrap>.layui-code-wrap>.layui-code-line>.layui-code-line-content{white-space:pre;word-wrap:normal}.layui-code-nowrap>.layui-code-ln-side{border-right-width:0!important;background:0 0!important}.layui-code-fixbar{position:absolute;top:8px;right:11px;padding-right:45px;z-index:5}.layui-code-fixbar>span{position:absolute;right:0;top:0;padding:0 8px;color:#777;transition:all .3s}.layui-code-fixbar>span:hover{color:#16b777}.layui-code-copy{display:none;cursor:pointer}.layui-code-preview>.layui-code-view>.layui-code-fixbar .layui-code-copy{display:none!important}.layui-code-view:hover>.layui-code-fixbar .layui-code-copy{display:block}.layui-code-view:hover>.layui-code-fixbar .layui-code-lang-marker{display:none}.layui-code-theme-dark,.layui-code-theme-dark>.layui-code-header{border-color:rgb(126 122 122 / 15%);background-color:#1f1f1f}.layui-code-theme-dark{border-width:1px;color:#ccc}.layui-code-theme-dark>.layui-code-ln-side{border-right-color:#2a2a2a;background:0 0;color:#6e7681}.layui-code textarea{display:none}.layui-code-preview>.layui-code,.layui-code-preview>.layui-code-view{margin:0}.layui-code-preview>.layui-tab{position:relative;z-index:1;margin-bottom:0}.layui-code-preview>.layui-tab>.layui-tab-title{border-width:0}.layui-code-preview .layui-code-item{display:none}.layui-code-item-preview{position:relative;padding:16px}.layui-code-item-preview>iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.layui-code-tools{position:absolute;right:11px;top:8px;line-height:normal}.layui-code-tools>i{display:inline-block;margin-left:6px;padding:3px;cursor:pointer}.layui-code-tools>i.layui-icon-file-b{color:#999}.layui-code-tools>i:hover{color:#16b777}.layui-code-full{position:fixed;left:0;top:0;z-index:1111111;width:100%;height:100%;background-color:#fff}.layui-code-full .layui-code-item{width:100%!important;border-width:0!important;border-top-width:1px!important}.layui-code-full .layui-code-item,.layui-code-full .layui-code-view,.layui-code-full .layui-code-wrap{height:calc(100vh - 51px)!important;box-sizing:border-box}.layui-code-full .layui-code-item-preview{overflow:auto}.layui-code-view.layui-code-hl{line-height:20px!important;border-left-width:1px}.layui-code-view.layui-code-hl>.layui-code-ln-side{background-color:transparent}.layui-code-theme-dark.layui-code-hl,.layui-code-theme-dark.layui-code-hl>.layui-code-ln-side{border-color:rgb(126 122 122 / 15%)}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate,.layui-laydate *{box-sizing:border-box}.layui-laydate{position:absolute;z-index:99999999;margin:5px 0;border-radius:2px;font-size:14px;line-height:normal;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}.layui-laydate-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate{animation-name:laydate-downbit}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;padding:0 5px;color:#999;font-size:18px;cursor:pointer}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-set-ym span{padding:0 10px;cursor:pointer}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:0;text-align:center}.layui-laydate-content th{font-weight:400}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.laydate-day-holidays:before{position:absolute;left:0;top:0;font-size:12px;transform:scale(.7)}.laydate-day-holidays:before{content:'\4F11';color:#ff5722}.laydate-day-holidays[type=work]:before{content:'\73ED';color:inherit}.layui-laydate .layui-this .laydate-day-holidays:before{color:#fff}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px}.layui-laydate-footer span{display:inline-block;vertical-align:top;height:26px;line-height:24px;padding:0 10px;border:1px solid #c9c9c9;border-radius:2px;background-color:#fff;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .3s}.layui-laydate-footer span:hover{color:#16b777}.layui-laydate-footer span.layui-laydate-preview{cursor:default;border-color:transparent!important}.layui-laydate-footer span.layui-laydate-preview:hover{color:#777}.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left:0}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{margin:0 0 0 -1px;border-radius:0}.laydate-footer-btns span:first-child{border-radius:2px 0 0 2px}.laydate-footer-btns span:last-child{border-radius:0 2px 2px 0}.layui-laydate-shortcut{width:80px;padding:6px 0;display:inline-block;vertical-align:top;overflow:auto;max-height:276px;text-align:center}.layui-laydate-shortcut+.layui-laydate-main{display:inline-block;border-left:1px solid #e2e2e2}.layui-laydate-shortcut>li{padding:5px 8px;cursor:pointer;line-height:18px}.layui-laydate .layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;box-sizing:border-box;background-color:#fff}.layui-laydate .layui-laydate-list>li{position:relative;display:inline-block;width:33.3%;height:36px;line-height:36px;margin:3px 0;vertical-align:middle;text-align:center;cursor:pointer;list-style:none}.layui-laydate .laydate-month-list>li{width:25%;margin:17px 0}.layui-laydate .laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.layui-laydate .laydate-time-list p{position:relative;top:-4px;margin:0;line-height:29px}.layui-laydate .laydate-time-list ol{height:181px;overflow:hidden}.layui-laydate .laydate-time-list>li:hover ol{overflow-y:auto}.layui-laydate .laydate-time-list ol li{width:130%;padding-left:33px;height:30px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px;color:#ff5722}.layui-laydate-range{width:546px}.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle;max-width:50%}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-y,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#777}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#16b777}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{color:#333}.layui-laydate-content td{color:#777}.layui-laydate-content td.laydate-day-now{color:#16b777}.layui-laydate-content td.laydate-day-now:after{content:'';position:absolute;width:100%;height:30px;left:0;top:0;border:1px solid #16b777;box-sizing:border-box}.layui-laydate-linkage .layui-laydate-content td.laydate-selected>div{background-color:#00f7de}.layui-laydate-linkage .laydate-selected:hover>div{background-color:#00f7de!important}.layui-laydate-content td.laydate-selected:after,.layui-laydate-content td:hover:after{content:none}.layui-laydate-content td>div:hover,.layui-laydate-list li:hover,.layui-laydate-shortcut>li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.layui-laydate-linkage .laydate-selected.laydate-day-next>div,.layui-laydate-linkage .laydate-selected.laydate-day-prev>div{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#ff5722}.laydate-day-mark::after{background-color:#16b777}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#16b777}.layui-laydate .layui-this,.layui-laydate .layui-this>div{background-color:#16baaa!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content td>div{padding:7px 0;height:100%}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#16baaa}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead{border:1px solid #e2e2e2}.layui-laydate-linkage.laydate-theme-grid .laydate-selected,.layui-laydate-linkage.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#16baaa!important}.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-next,.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}.laydate-theme-grid .layui-laydate-content td>div{height:29px;margin-top:-1px}.laydate-theme-circle .layui-laydate-content td.layui-this>div,.laydate-theme-circle .layui-laydate-content td>div{width:28px;height:28px;line-height:28px;border-radius:14px;margin:0 4px;padding:0}.layui-laydate.laydate-theme-circle .layui-laydate-content table td.layui-this{background-color:transparent!important}.laydate-theme-grid.laydate-theme-circle .layui-laydate-content td>div{margin:0 3.5px}.laydate-theme-fullpanel .layui-laydate-main{width:526px}.laydate-theme-fullpanel .layui-laydate-list{width:252px;left:272px}.laydate-theme-fullpanel .laydate-set-ym span{display:none}.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-theme-fullpanel .laydate-time-show .layui-laydate-header .layui-icon{display:inline-block!important}.laydate-theme-fullpanel .laydate-btns-time{display:none}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch}.layui-layer{top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-btn a,.layui-layer-setwin span{display:inline-block;vertical-align:middle;*display:inline;*zoom:1}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes layer-slide-down{from{transform:translate3d(0,-100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-down-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,-100%,0)}}.layer-anim-slide-down{animation-name:layer-slide-down}.layer-anim-slide-down-out{animation-name:layer-slide-down-out}@keyframes layer-slide-left{from{transform:translate3d(100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-left-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(100%,0,0)}}.layer-anim-slide-left{animation-name:layer-slide-left}.layer-anim-slide-left-out{animation-name:layer-slide-left-out}@keyframes layer-slide-up{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-up-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,100%,0)}}.layer-anim-slide-up{animation-name:layer-slide-up}.layer-anim-slide-up-out{animation-name:layer-slide-up-out}@keyframes layer-slide-right{from{transform:translate3d(-100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-right-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(-100%,0,0)}}.layer-anim-slide-right{animation-name:layer-slide-right}.layer-anim-slide-right-out{animation-name:layer-slide-right-out}.layui-layer-title{padding:0 81px 0 16px;height:50px;line-height:50px;border-bottom:1px solid #f0f0f0;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:16px;font-size:0;line-height:initial}.layui-layer-setwin span{position:relative;width:16px;height:16px;line-height:18px;margin-left:10px;text-align:center;font-size:16px;cursor:pointer;color:#000;_overflow:hidden;box-sizing:border-box}.layui-layer-setwin .layui-layer-min:before{content:'';position:absolute;width:12px;border-bottom:1px solid #2e2d3c;left:50%;top:50%;margin:-.5px 0 0 -6px;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-max:after,.layui-layer-setwin .layui-layer-max:before{content:'';position:absolute;left:50%;top:50%;z-index:1;width:9px;height:9px;margin:-5px 0 0 -5px;border:1px solid #2e2d3c}.layui-layer-setwin .layui-layer-max:hover:after,.layui-layer-setwin .layui-layer-max:hover:before{border-color:#2d93ca}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-maxmin:after,.layui-layer-setwin .layui-layer-maxmin:before{width:7px;height:7px;margin:-3px 0 0 -3px;background-color:#fff}.layui-layer-setwin .layui-layer-maxmin:after{z-index:0;margin:-5px 0 0 -1px}.layui-layer-setwin .layui-layer-close{cursor:pointer}.layui-layer-setwin .layui-layer-close:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;color:#fff;background-color:#787878;padding:3px;border:3px solid;width:28px;height:28px;font-size:16px;font-weight:bolder;border-radius:50%;margin-left:0;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{opacity:unset;background-color:#3888f6}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:30px;line-height:30px;margin:5px 5px 0;padding:0 16px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none;box-sizing:border-box}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:transparent;background-color:#1e9fff;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:240px}.layui-layer-dialog .layui-layer-content{position:relative;padding:16px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-face{position:absolute;top:18px;left:16px;color:#959595;font-size:32px;_left:-40px}.layui-layer-dialog .layui-layer-content .layui-icon-tips{color:#f39b12}.layui-layer-dialog .layui-layer-content .layui-icon-success{color:#16b777}.layui-layer-dialog .layui-layer-content .layui-icon-error{top:19px;color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-question{color:#ffb800}.layui-layer-dialog .layui-layer-content .layui-icon-lock{color:#787878}.layui-layer-dialog .layui-layer-content .layui-icon-face-cry{color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-face-smile{color:#16b777}.layui-layer-rim{border:6px solid #8d8d8d;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #d3d4d3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-close{color:#fff}.layui-layer-hui .layui-layer-content{padding:11px 24px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:18px 24px 18px 58px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:76px;height:38px;line-height:38px;text-align:center}.layui-layer-loading-icon{font-size:38px;color:#959595}.layui-layer-loading2{text-align:center}.layui-layer-loading-2{position:relative;height:38px}.layui-layer-loading-2:after,.layui-layer-loading-2:before{content:'';position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;border:3px solid #d2d2d2;box-sizing:border-box}.layui-layer-loading-2:after{border-color:transparent;border-left-color:#1e9fff}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan .layui-layer-title{background:#4476a7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;border-top:1px solid #e9e7e7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#e9e7e7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#c9c5c5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92b8b1}.layui-layer-lan .layui-layer-setwin .layui-icon,.layui-layer-molv .layui-layer-setwin .layui-icon{color:#fff}.layui-layer-win10{border:1px solid #aaa;box-shadow:1px 1px 6px rgba(0,0,0,.3);border-radius:none}.layui-layer-win10 .layui-layer-title{height:32px;line-height:32px;padding-left:8px;border-bottom:none;font-size:12px}.layui-layer-win10 .layui-layer-setwin{right:0;top:0}.layui-layer-win10 .layui-layer-setwin span{margin-left:0;width:32px;height:32px;padding:8px}.layui-layer-win10.layui-layer-page .layui-layer-setwin span{width:38px}.layui-layer-win10 .layui-layer-setwin span:hover{background-color:#e5e5e5}.layui-layer-win10 .layui-layer-setwin span.layui-icon-close:hover{background-color:#e81123;color:#fff}.layui-layer-win10.layui-layer-dialog .layui-layer-content{padding:8px 16px 32px;color:#0033bc}.layui-layer-win10.layui-layer-dialog .layui-layer-padding{padding-top:18px;padding-left:58px}.layui-layer-win10 .layui-layer-btn{padding:5px 5px 10px;border-top:1px solid #dfdfdf;background-color:#f0f0f0}.layui-layer-win10 .layui-layer-btn a{height:20px;line-height:18px;background-color:#e1e1e1;border-color:#adadad;color:#000;font-size:12px;transition:all .3s}.layui-layer-win10 .layui-layer-btn a:hover{border-color:#2a8edd;background-color:#e5f1fb}.layui-layer-win10 .layui-layer-btn .layui-layer-btn0{border-color:#0078d7}.layui-layer-prompt .layui-layer-input{display:block;width:260px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:16px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;display:inline-block;vertical-align:top;border-left:1px solid transparent;border-right:1px solid transparent;min-width:80px;max-width:300px;padding:0 16px;text-align:center;cursor:default;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:51px;border-left-color:#eee;border-right-color:#eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left-color:transparent}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{background:0 0;box-shadow:none}.layui-layer-photos .layui-layer-content{overflow:visible;text-align:center}.layui-layer-photos .layer-layer-photos-main img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-photos-next,.layui-layer-photos-prev{position:fixed;top:50%;width:52px;height:52px;line-height:52px;margin-top:-26px;cursor:pointer;font-size:52px;color:#717171}.layui-layer-photos-prev{left:32px}.layui-layer-photos-next{right:32px}.layui-layer-photos-next:hover,.layui-layer-photos-prev:hover{color:#959595}.layui-layer-photos-toolbar{position:fixed;left:0;right:0;bottom:0;width:100%;height:52px;line-height:52px;background-color:#000\9;filter:Alpha(opacity=60);background-color:rgba(0,0,0,.32);color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:0}.layui-layer-photos-toolbar>*{display:inline-block;vertical-align:top;padding:0 16px;font-size:12px;color:#fff;*display:inline;*zoom:1}.layui-layer-photos-toolbar *{font-size:12px}.layui-layer-photos-header{top:0;bottom:auto}.layui-layer-photos-header>span{cursor:pointer}.layui-layer-photos-header>span:hover{background-color:rgba(51,51,51,.32)}.layui-layer-photos-header .layui-icon{font-size:18px}.layui-layer-photos-footer>h3{max-width:65%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-layer-photos-footer a:hover{text-decoration:underline}.layui-layer-photos-footer em{font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}} \ No newline at end of file diff --git a/component/layui/layui.js b/component/layui/layui.js index 781123d..72d6201 100644 --- a/component/layui/layui.js +++ b/component/layui/layui.js @@ -1 +1 @@ -/** v2.8.17 | MIT Licensed */;!function(d){"use strict";var t,h=d.document,m={modules:{},status:{},timeout:10,event:{}},o=function(){this.v="2.8.17"},e=d.LAYUI_GLOBAL||{},v=(t=h.currentScript?h.currentScript.src:function(){for(var t,e=h.scripts,n=e.length-1,o=n;01e3*m.timeout/4?g(u+" is not a valid module","error"):void(m.status[u]?c():setTimeout(o,4))}())}function c(){e.push(layui[u]),11e3*m.timeout/4?g(u+" is not a valid module","error"):void("string"==typeof m.modules[u]&&m.status[u]?c():setTimeout(f,4))}():((p=h.createElement("script"))["async"]=!0,p.charset="utf-8",p.src=y+((i=!0===m.version?m.v||(new Date).getTime():m.version||"")?"?v="+i:""),a.appendChild(p),!p.attachEvent||p.attachEvent.toString&&p.attachEvent.toString().indexOf("[native code")<0||b?p.addEventListener("load",function(t){s(t,y)},!1):p.attachEvent("onreadystatechange",function(t){s(t,y)}),m.modules[u]=y),r},o.prototype.disuse=function(t){var n=this;return t=n.isArray(t)?t:[t],n.each(t,function(t,e){m.status[e],delete n[e],delete N[e],delete n.modules[e],delete m.status[e],delete m.modules[e]}),n},o.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t[t.getPropertyValue?"getPropertyValue":"getAttribute"](e)},o.prototype.link=function(n,o,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof o?o:t)||n).replace(/\.|\//g,""),u="creating",l=0;return i.href=n+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"!=typeof o||function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(n+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):o()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},o.prototype.addcss=function(t,e,n){return layui.link(m.dir+"css/"+t,e,n)},m.callback={},o.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},o.prototype.img=function(t,e,n){var o=new Image;if(o.src=t,o.complete)return e(o);o.onload=function(){o.onload=null,"function"==typeof e&&e(o)},o.onerror=function(t){o.onerror=null,"function"==typeof n&&n(t)}},o.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},o.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),o.prototype.extend=function(t){for(var e in t=t||{})this[e]||this.modules[e]?g(e+" Module already exists","error"):this.modules[e]=t[e];return this},o.prototype.router=o.prototype.hash=function(t){var n={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),n.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),n.search[e[0]]=e[1]):n.path.push(e)})),n},o.prototype.url=function(t){var r,e,n=this;return{pathname:(t?((t.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(r={},e=(t?((t.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),n.each(e,function(t,e){var n=e.indexOf("="),o=n<0?e.substr(0,e.length):0!==n&&e.substr(0,n);o&&(r[o]=0(s.innerHeight||h.documentElement.clientHeight)},d.getStyleRules=function(t,n){if(t)return t=t.sheet||t.styleSheet||{},t=t.cssRules||t.rules,"function"==typeof n&&layui.each(t,function(t,e){if(n(e,t))return!0}),t},d.style=function(t){t=t||{};var e=d.elem("style"),n=t.text||"",i=t.target;if(n)return"styleSheet"in e?(e.setAttribute("type","text/css"),e.styleSheet.cssText=n):e.innerHTML=n,e.id="LAY-STYLE-"+(t.id||(n=d.style.index||0,d.style.index++,"DF-"+n)),i&&((t=d(i).find("#"+e.id))[0]&&t.remove(),d(i).append(e)),e},d.position=function(t,e,n){var i,r,o,c,u,a,f,l;e&&(n=n||{},t!==h&&t!==d("body")[0]||(n.clickType="right"),i="right"===n.clickType?{left:(i=n.e||s.event||{}).clientX,top:i.clientY,right:i.clientX,bottom:i.clientY}:t.getBoundingClientRect(),f=e.offsetWidth,l=e.offsetHeight,r=function(t){return h.body[t=t?"scrollLeft":"scrollTop"]|h.documentElement[t]},o=function(t){return h.documentElement[t?"clientWidth":"clientHeight"]},c="margin"in n?n.margin:5,u=i.left,a=i.bottom,"center"===n.align?u-=(f-t.offsetWidth)/2:"right"===n.align&&(u=u-f+t.offsetWidth),(u=u+f+c>o("width")?o("width")-f-c:u)o()&&(i.top>l+c&&i.top<=o()?a=i.top-l-2*c:n.allowBottomOut||(a=o()-l-2*c)<0&&(a=0)),(f=n.position)&&(e.style.position=f),e.style.left=u+("fixed"===f?0:r(1))+"px",e.style.top=a+("fixed"===f?0:r())+"px",d.hasScrollbar()||(l=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&l.bottom+c>o()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){d.position(t,e,n)},50))))},d.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===h)return{};var t=d(t),n=e.attr||"lay-options",t=t.attr(n);try{return new Function("return "+(t||"{}"))()}catch(i){return layui.hint().error(e.errorText||[n+'="'+t+'"',"\n parseerror: "+i].join("\n"),"error"),{}}},d.isTopElem=function(n){var t=[h,d("body")[0]],i=!1;return d.each(t,function(t,e){if(e===n)return i=!0}),i},d.clipboard={writeText:function(t){var e=String(t.text);try{navigator.clipboard.writeText(e).then(t.done)["catch"](t.error)}catch(i){var n=h.createElement("textarea");n.value=e,n.style.position="fixed",n.style.opacity="0",n.style.top="0px",n.style.left="0px",h.body.appendChild(n),n.select();try{h.execCommand("copy"),"function"==typeof t.done&&t.done()}catch(r){"function"==typeof t.error&&t.error(r)}finally{n.remove?n.remove():h.body.removeChild(n)}}}},r.addStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),d.each(t,function(t,e){new RegExp("\\b"+e+"\\b").test(n)||(n=n+" "+e)}),n.replace(/^\s|\s$/,"")},r.removeStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),d.each(t,function(t,e){e=new RegExp("\\b"+e+"\\b");e.test(n)&&(n=n.replace(e,""))}),n.replace(/\s+/," ").replace(/^\s|\s$/,"")},r.fn.find=function(n){var i=[],r="object"==typeof n;return this.each(function(t,e){e=r&&e.contains(n)?n:e.querySelectorAll(n||null);d.each(e,function(t,e){i.push(e)})}),d(i)},r.fn.each=function(t){return d.each.call(this,this,t)},r.fn.addClass=function(n,i){return this.each(function(t,e){e.className=r[i?"removeStr":"addStr"](e.className,n)})},r.fn.removeClass=function(t){return this.addClass(t,!0)},r.fn.hasClass=function(n){var i=!1;return this.each(function(t,e){new RegExp("\\b"+n+"\\b").test(e.className)&&(i=!0)}),i},r.fn.css=function(e,i){var t=this,r=function(t){return isNaN(t)?t:t+"px"};return"string"!=typeof e||i!==undefined?t.each(function(t,n){"object"==typeof e?d.each(e,function(t,e){n.style[t]=r(e)}):n.style[e]=r(i)}):0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e}},i=function(e){return new RegExp(e,"g")},u=function(e,r){var n="Laytpl Error: ";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e},n=function(e,r){var n=this,e=(n.config=n.config||{},n.template=e,function(e){for(var r in e)n.config[r]=e[r]});e(c),e(r)},r=(n.prototype.tagExp=function(e,r,n){var c=this.config;return i((r||"")+c.open+["#([\\s\\S])+?","([^{#}])*?"][e||0]+c.close+(n||""))},n.prototype.parse=function(e,r){var n=this,c=n.config,t=e,o=i("^"+c.open+"#",""),p=i(c.close+"$","");if("string"!=typeof e)return e;e='"use strict";var view = "'+(e=e.replace(/\s+|\r|\t|\n/g," ").replace(i(c.open+"#"),c.open+"# ").replace(i(c.close+"}"),"} "+c.close).replace(/\\/g,"\\\\").replace(i(c.open+"!(.+?)!"+c.close),function(e){return e=e.replace(i("^"+c.open+"!"),"").replace(i("!"+c.close),"").replace(i(c.open+"|"+c.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(n.tagExp(),function(e){return'";'+(e=e.replace(o,"").replace(p,"")).replace(/\\(.)/g,"$1")+';view+="'}).replace(n.tagExp(1),function(e){var r='"+laytpl.escape(';return e.replace(/\s/g,"")===c.open+c.close?"":(e=e.replace(i(c.open+"|"+c.close),""),/^=/.test(e)?e=e.replace(/^=/,""):/^-/.test(e)&&(e=e.replace(/^-/,""),r='"+('),r+e.replace(/\\(.)/g,"$1")+')+"')}))+'";return view;';try{return n.cache=e=new Function("d, laytpl",e),e(r,l)}catch(a){return delete n.cache,u(a,t)}},n.prototype.render=function(e,r){e=e||{};var n=this,e=n.cache?n.cache(e,l):n.parse(n.template,e);return"function"==typeof r&&r(e),e},function(e,r){return new n(e,r)});r.config=function(e){for(var r in e=e||{})c[r]=e[r]},r.v="2.0.0",e("laytpl",r)});layui.define(function(e){"use strict";var r=document,u="getElementById",c="getElementsByTagName",a="layui-disabled",t=function(e){var a=this;a.config=e||{},a.config.index=++o.index,a.render(!0)},o=(t.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return e.elem.length===undefined?2:3},t.prototype.view=function(){var t,i,n=this.config,r=n.groups="groups"in n?Number(n.groups)||0:5,u=(n.layout="object"==typeof n.layout?n.layout:["prev","page","next"],n.count=Number(n.count)||0,n.curr=Number(n.curr)||1,n.limits="object"==typeof n.limits?n.limits:[10,20,30,40,50],n.limit=Number(n.limit)||10,n.pages=Math.ceil(n.count/n.limit)||1,n.curr>n.pages?n.curr=n.pages:n.curr<1&&(n.curr=1),r<0?r=1:r>n.pages&&(r=n.pages),n.prev="prev"in n?n.prev:"上一页",n.next="next"in n?n.next:"下一页",n.pages>r?Math.ceil((n.curr+(1'+n.prev+"":"",page:function(){var e=[];if(n.count<1)return"";1'+(n.first||1)+"");var a=Math.floor((r-1)/2),t=1n.pages?n.pages:a:r;for(i-t…');t<=i;t++)t===n.curr?e.push('"+t+""):e.push(''+t+"");return n.pages>r&&n.pages>i&&!1!==n.last&&(i+1…'),0!==r&&e.push(''+(n.last||n.pages)+"")),e.join("")}(),next:n.next?''+n.next+"":"",count:'\u5171 '+n.count+" \u6761",limit:(t=['"),refresh:['','',""].join(""),skip:['到第','','页',""].join("")};return['
                                            ',(i=[],layui.each(n.layout,function(e,a){l[a]&&i.push(l[a])}),i.join("")),"
                                            "].join("")},t.prototype.jump=function(e,a){if(e){var t=this,i=t.config,n=e.children,r=e[c]("button")[0],u=e[c]("input")[0],e=e[c]("select")[0],l=function(){var e=Number(u.value.replace(/\s|\D/g,""));e&&(i.curr=e,t.render())};if(a)return l();for(var s=0,p=n.length;si.pages||(i.curr=e,t.render())});e&&o.on(e,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),r&&o.on(r,"click",function(){l()})}},t.prototype.skip=function(t){var i,e;t&&(i=this,(e=t[c]("input")[0])&&o.on(e,"keyup",function(e){var a=this.value,e=e.keyCode;/^(37|38|39|40)$/.test(e)||(/\D/.test(a)&&(this.value=a.replace(/\D/,"")),13===e&&i.jump(t,!0))}))},t.prototype.render=function(e){var a=this,t=a.config,i=a.type(),n=a.view(),i=(2===i?t.elem&&(t.elem.innerHTML=n):3===i?t.elem.html(n):r[u](t.elem)&&(r[u](t.elem).innerHTML=n),t.jump&&t.jump(t,e),r[u]("layui-laypage-"+t.index));a.jump(i),t.hash&&!e&&(location.hash="!"+t.hash+"="+t.curr),a.skip(i)},{render:function(e){return new t(e).index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(a,e,t){return a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1),this}});e("laypage",o)});!function(i,v){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){D.path&&i.lay&&lay.layui&&lay.layui.link(D.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},d="layui-laydate-id",D={v:"5.5.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:e.laydate_dir||l.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",a=(n?"modules/":"")+"laydate.css?v="+D.v;return n?layui["layui.all"]?"function"==typeof e&&e():layui.addcss(a,e,t):l.link(a,e,t),this}},s=function(){var t=this,e=t.config.id;return(s.that[e]=t).inst={hint:function(e){t.hint.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}},a="laydate",x="layui-this",k="laydate-disabled",h=[100,2e5],T="layui-laydate-static",w="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",C=".laydate-btns-confirm",M="laydate-time-text",L="laydate-btns-time",E="layui-laydate-preview",S="layui-laydate-shade",I=function(e){var t,a=this,n=(a.index=++D.index,a.config=lay.extend({},a.config,D.config,e),lay(e.elem||a.config.elem));return 1\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
                                            \u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
                                            ","
                                            \u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
                                            Please re-select",invalidDate:"Invalid date",formatError:["The date format error
                                            Must be followed\uff1a
                                            ","
                                            It has been reset"],preview:"The selected result"}};return e[this.config.lang]||e.cn},I.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},I.prototype.init=function(){var r=this,o=r.config,e="static"===o.position,t={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};o.elem=lay(o.elem),o.eventElem=lay(o.eventElem),o.elem[0]&&("array"!==layui.type(o.theme)&&(o.theme=[o.theme]),o.fullPanel&&("datetime"!==o.type||o.range)&&delete o.fullPanel,r.rangeStr=o.range?"string"==typeof o.range?o.range:"-":"",r.rangeLinked=!(!o.range||!o.rangeLinked||"date"!==o.type&&"datetime"!==o.type),r.autoCalendarModel=function(){var e=r.rangeLinked;return r.rangeLinked=o.range&&("date"===o.type||"datetime"===o.type)&&(!r.startDate||!r.endDate||r.startDate&&r.endDate&&r.startDate.year===r.endDate.year&&r.startDate.month===r.endDate.month),lay(r.elem)[r.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),r.rangeLinked!=e},r.autoCalendarModel.auto=r.rangeLinked&&"auto"===o.rangeLinked,"array"===layui.type(o.range)&&(r.rangeElem=[lay(o.range[0]),lay(o.range[1])]),t[o.type]||(i.console&&console.error&&console.error("laydate type error:'"+o.type+"' is not supported"),o.type="date"),o.format===t.date&&(o.format=t[o.type]||t.date),r.format=s.formatArr(o.format),o.weekStart&&!/^[0-6]$/.test(o.weekStart)&&(t=r.lang(),o.weekStart=t.weeks.indexOf(o.weekStart),-1===o.weekStart&&(o.weekStart=0)),r.EXP_IF="",r.EXP_SPLIT="",lay.each(r.format,function(e,t){e=new RegExp(c).test(t)?"\\d{"+(new RegExp(c).test(r.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(t)?4:t.length:/^yyyy$/.test(t)?"1,4":/^y$/.test(t)?"1,308":"1,2")+"}":"\\"+t;r.EXP_IF=r.EXP_IF+e,r.EXP_SPLIT=r.EXP_SPLIT+"("+e+")"}),r.EXP_IF_ONE=new RegExp("^"+r.EXP_IF+"$"),r.EXP_IF=new RegExp("^"+(o.range?r.EXP_IF+"\\s\\"+r.rangeStr+"\\s"+r.EXP_IF:r.EXP_IF)+"$"),r.EXP_SPLIT=new RegExp("^"+r.EXP_SPLIT+"$",""),r.isInput(o.elem[0])||"focus"===o.trigger&&(o.trigger="click"),o.elem.attr("lay-key",r.index),o.eventElem.attr("lay-key",r.index),o.elem.attr(d,o.id),o.mark=lay.extend({},o.calendar&&"cn"===o.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},o.mark),lay.each(["min","max"],function(e,t){var a=[],n=[];if("number"==typeof o[t])var i=o[t],l=new Date,l=r.newDate({year:l.getFullYear(),month:l.getMonth(),date:l.getDate(),hours:e?23:0,minutes:e?59:0,seconds:e?59:0}).getTime(),e=new Date(i?i<864e5?l+864e5*i:i:l),a=[e.getFullYear(),e.getMonth()+1,e.getDate()],n=[e.getHours(),e.getMinutes(),e.getSeconds()];else if("string"==typeof o[t])a=(o[t].match(/\d+-\d+-\d+/)||[""])[0].split("-"),n=(o[t].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if("object"==typeof o[t])return o[t];o[t]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|n[0],minutes:0|n[1],seconds:0|n[2]}}),r.elemID="layui-laydate"+o.elem.attr("lay-key"),(o.show||e)&&r.render(),e||r.events(),o.value&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value)))},I.prototype.render=function(){var a,n,i,l,r=this,o=r.config,d=r.lang(),s="static"===o.position,y=r.elem=lay.elem("div",{id:r.elemID,"class":["layui-laydate",o.range?" layui-laydate-range":"",r.rangeLinked?" layui-laydate-linkage":"",s?" "+T:"",o.fullPanel?" laydate-theme-fullpanel":"",(a="",lay.each(o.theme,function(e,t){"default"===t||/^#/.test(t)||(a+=" laydate-theme-"+t)}),a)].join("")}),m=r.elemMain=[],c=r.elemHeader=[],u=r.elemCont=[],h=r.table=[],e=r.footer=lay.elem("div",{"class":"layui-laydate-footer"}),t=r.shortcut=lay.elem("ul",{"class":"layui-laydate-shortcut"}),f=(o.zIndex&&(y.style.zIndex=o.zIndex),lay.each(new Array(2),function(e){if(!o.range&&0'+d.timeTips+""),(o.range||"datetime"!==o.type||o.fullPanel)&&f.push(''),lay.each(o.btns,function(e,t){var a=d.tools[t]||"btn";o.range&&"now"===t||(s&&"clear"===t&&(a="cn"===o.lang?"\u91cd\u7f6e":"Reset"),n.push(''+a+""))}),f.push('"),f.join(""))),o.shortcuts&&(y.appendChild(t),lay(t).html((i=[],lay.each(o.shortcuts,function(e,t){i.push('
                                          • '+t.text+"
                                          • ")}),i.join(""))).find("li").on("click",function(e){var t=o.shortcuts[this.dataset.index]||{},t=("function"==typeof t.value?t.value():t.value)||[],n=(layui.isArray(t)||(t=[t]),o.type),t=(lay.each(t,function(e,t){var a=[o.dateTime,r.endDate][e];"time"===n&&"date"!==layui.type(t)?r.EXP_IF.test(t)&&(t=(t.match(r.EXP_SPLIT)||[]).slice(1),lay.extend(a,{hours:0|t[0],minutes:0|t[2],seconds:0|t[4]})):lay.extend(a,r.systemDate("date"===layui.type(t)?t:new Date(t))),"time"!==n&&"datetime"!==n||(r[["startTime","endTime"][e]]={hours:a.hours,minutes:a.minutes,seconds:a.seconds}),0===e?r.startDate=lay.extend({},a):r.endState=!0,"year"===n||"month"===n||"time"===n?r.listYM[e]=[a.year,a.month+1]:e&&r.autoCalendarModel.auto&&r.autoCalendarModel()}),r.checkDate("limit").calendar(null,null,"init"),lay(r.footer).find("."+L).removeClass(k));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(x),"static"!==o.position&&r.setValue(r.parse()).done().remove()})),lay.each(m,function(e,t){y.appendChild(t)}),o.showBottom&&y.appendChild(e),lay.elem("style")),p=[],g=!0,t=(lay.each(o.theme,function(e,t){if(g&&/^#/.test(t))return g=!(l=!0),void p.push(["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}",-1!==o.theme.indexOf("circle")?"":"#{{id}} .layui-this{background-color:{{theme}} !important;}","#{{id}} .laydate-day-now{color:{{theme}} !important;}","#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t));!g&&/^#/.test(t)&&p.push(["#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}","#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))}),o.shortcuts&&o.range&&p.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),p.length&&(p=p.join(""),"styleSheet"in f?(f.setAttribute("type","text/css"),f.styleSheet.cssText=p):f.innerHTML=p,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(f)),r.remove(I.thisElemDate),D.thisId=o.id,s?o.elem.append(y):(v.body.appendChild(y),r.position()),o.shade?'
                                            ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),I.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},I.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(T)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete D.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+S).remove()),t},I.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},I.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":r}));t.elem&&(a.innerHTML=(e="object"==typeof e?e||{}:{content:e}).content||"",lay(t.elem).find("."+r).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+r).remove()},"ms"in e?e.ms:3e3))},I.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),11h[1]&&(e.year=h[1],o=!0),11t&&(e.date=t,o=!0))},r=function(n,i,l){var r=["startTime","endTime"];i=(i.match(d.EXP_SPLIT)||[]).slice(1),l=l||0,s.range&&(d[r[l]]=d[r[l]]||{}),lay.each(d.format,function(e,t){var a=parseFloat(i[e]);i[e].lengthd.getDateTime(s.max)?(n=s.dateTime=lay.extend({},s.max),c=!0):d.getDateTime(n)d.getDateTime(s.max))&&(d.endDate=lay.extend({},s.max),c=!0),d.startTime={hours:s.dateTime.hours,minutes:s.dateTime.minutes,seconds:s.dateTime.seconds},d.endTime={hours:d.endDate.hours,minutes:d.endDate.minutes,seconds:d.endDate.seconds},"month"===s.type&&(s.dateTime.date=1,d.endDate.date=1)),c&&l&&(d.setValue(d.parse()),d.hint("value "+a.invalidDate+a.formatError[1])),d.startDate=d.startDate||l&&lay.extend({},s.dateTime),d.autoCalendarModel.auto&&d.autoCalendarModel(),d.endState=!s.range||!d.rangeLinked||!(!d.startDate||!d.endDate),e&&e(),d},I.prototype.mark=function(e,a){var n,t=this.config;return lay.each(t.mark,function(e,t){e=e.split("-");e[0]!=a[0]&&0!=e[0]||e[1]!=a[1]&&0!=e[1]||e[2]!=a[2]||(n=t||a[2])}),n&&e.find("div").html(''+n+""),this},I.prototype.holidays=function(n,i){var e=this.config,l=["","work"];return"array"!==layui.type(e.holidays)||lay.each(e.holidays,function(a,e){lay.each(e,function(e,t){t===n.attr("lay-ymd")&&n.find("div").html('"+i[2]+"")})}),this},I.prototype.limit=function(t){t=t||{};var i=this,e=i.config,l={},a=t.index>(t.time?0:41)?i.endDate:e.dateTime;return lay.each({now:lay.extend({},a,t.date||{}),min:e.min,max:e.max},function(e,a){var n;l[e]=i.newDate(lay.extend({year:a.year,month:"year"===t.type?0:a.month,date:"year"===t.type||"month"===t.type?1:a.date},(n={},lay.each(t.time,function(e,t){n[t]=a[t]}),n))).getTime()}),a=l.nowl.max,t.elem&&t.elem[a?"addClass":"removeClass"](k),a},I.prototype.thisDateTime=function(e){var t=this.config;return e?this.endDate:t.dateTime},I.prototype.calendar=function(e,t,a){t=t?1:0;var i,l,r,o=this,n=o.config,d=e||o.thisDateTime(t),s=new Date,y=o.lang(),m="date"!==n.type&&"datetime"!==n.type,c=lay(o.table[t]).find("td"),u=lay(o.elemHeader[t][2]).find("span");return d.yearh[1]&&(d.year=h[1],o.hint(y.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},d)),s.setFullYear(d.year,d.month,1),i=(s.getDay()+(7-n.weekStart))%7,l=D.getEndDate(d.month||12,d.year),r=D.getEndDate(d.month+1,d.year),lay.each(c,function(e,t){var a,n=[d.year,d.month];(t=lay(t)).removeAttr("class"),e"+n[2]+"
                                            "),o.mark(t,n).holidays(t,n).limit({elem:t,date:{year:n[0],month:n[1]-1,date:n[2]},index:e})}),lay(u[0]).attr("lay-ym",d.year+"-"+(d.month+1)),lay(u[1]).attr("lay-ym",d.year+"-"+(d.month+1)),"cn"===n.lang?(lay(u[0]).attr("lay-type","year").html(d.year+" \u5e74"),lay(u[1]).attr("lay-type","month").html(d.month+1+" \u6708")):(lay(u[0]).attr("lay-type","month").html(y.month[d.month]),lay(u[1]).attr("lay-type","year").html(d.year)),m&&(n.range?!e&&"init"===a||(o.listYM=[[(o.startDate||n.dateTime).year,(o.startDate||n.dateTime).month+1],[o.endDate.year,o.endDate.month+1]],o.list(n.type,0).list(n.type,1),"time"===n.type?o.setBtnStatus("\u65f6\u95f4",lay.extend({},o.systemDate(),o.startTime),lay.extend({},o.systemDate(),o.endTime)):o.setBtnStatus(!0)):(o.listYM=[[d.year,d.month+1]],o.list(n.type,0))),n.range&&"init"===a&&(o.rangeLinked?(s=o.getAsYM(d.year,d.month,t?"sub":null),o.calendar(lay.extend({},d,{year:s[0],month:s[1]}),1-t)):o.calendar(null,1-t)),n.range||(c=["hours","minutes","seconds"],o.limit({elem:lay(o.footer).find(".laydate-btns-now"),date:o.systemDate(),index:0,time:c}),o.limit({elem:lay(o.footer).find(C),index:0,time:c})),o.setBtnStatus(),lay(o.shortcut).find("li."+x).removeClass(x),n.range&&!m&&"init"!==a&&o.stampRange(),o},I.prototype.list=function(n,i){var l,r,e,o,d=this,s=d.config,y=d.rangeLinked?s.dateTime:[s.dateTime,d.endDate][i],m=d.lang(),t=s.range&&"date"!==s.type&&"datetime"!==s.type,c=lay.elem("ul",{"class":w+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),a=d.elemHeader[i],u=lay(a[2]).find("span"),h=d.elemCont[i||0],f=lay(h).find("."+w)[0],p="cn"===s.lang,g=p?"\u5e74":"",v=d.listYM[i]||{},D=["hours","minutes","seconds"],T=["startTime","endTime"][i];return v[0]<1&&(v[0]=1),"year"===n?(e=l=v[0]-7,l<1&&(e=l=1),lay.each(new Array(15),function(e){var t=lay.elem("li",{"lay-ym":l}),a={year:l,month:0,date:1};l==v[0]&&lay(t).addClass(x),t.innerHTML=l+g,c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n}),l++}),lay(u[p?0:1]).attr("lay-ym",l-8+"-"+v[1]).html(e+g+" - "+(l-1)+g)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:v[0],month:e,date:1};e+1==v[1]&&lay(t).addClass(x),t.innerHTML=m.month[e]+(p?"\u6708":""),c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n})}),lay(u[p?0:1]).attr("lay-ym",v[0]+"-"+v[1]).html(v[0]+g)):"time"===n&&(r=function(){lay(c).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){d.limit({elem:lay(t),date:[{hours:e},{hours:d[T].hours,minutes:e},{hours:d[T].hours,minutes:d[T].minutes,seconds:e}][a],index:i,time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),s.range||d.limit({elem:lay(d.footer).find(C),date:d[T],inedx:0,time:["hours","minutes","seconds"]})},s.range?d[T]||(d[T]="startTime"===T?y:d.endDate):d[T]=y,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

                                            "+m.time[t]+"

                                              "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
                                            ",c.appendChild(a)}),r()),f&&h.removeChild(f),h.appendChild(c),"year"===n||"month"===n?(lay(d.elemMain[i]).addClass("laydate-ym-show"),lay(c).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(k)||(d.rangeLinked?lay.extend(y,{year:"year"===n?e:v[0],month:"year"===n?v[1]-1:e}):y[n]=e,"year"===s.type||"month"===s.type?(lay(c).find("."+x).removeClass(x),lay(this).addClass(x),"month"===s.type&&"year"===n&&(d.listYM[i][0]=e,t&&((i?d.endDate:y).year=e),d.list("month",i))):(d.checkDate("limit").calendar(y,i,"init"),d.closeList()),d.setBtnStatus(),!s.range&&s.autoConfirm&&("month"===s.type&&"month"===n||"year"===s.type&&"year"===n)&&d.setValue(d.parse()).done().remove(),d.autoCalendarModel.auto&&!d.rangeLinked?d.choose(lay(h).find("td.layui-this"),i):d.endState&&d.done(null,"change"),lay(d.footer).find("."+L).removeClass(k))})):(e=lay.elem("span",{"class":M}),o=function(){lay(c).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(d[T][D[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(k))return a.scrollTop=30*(e-2),!0})})},u=lay(a[2]).find("."+M),o(),e.innerHTML=s.range?[m.startTime,m.endTime][i]:m.timeTips,lay(d.elemMain[i]).addClass("laydate-time-show"),u[0]&&u.remove(),a[2].appendChild(e),lay(c).find("ol").each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(k)||(s.range?d[T][D[t]]=e:y[D[t]]=e,lay(a).find("."+x).removeClass(x),lay(this).addClass(x),r(),o(),(d.endDate||"time"===s.type||"datetime"===s.type&&s.fullPanel)&&d.done(null,"change"),d.setBtnStatus())})})),d},I.prototype.listYM=[],I.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+w).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+M).remove()},I.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(C);i.range&&"time"!==i.type&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t})||n.limit({date:a})?r.addClass(k):r[i?"addClass":"removeClass"](k),e&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout))},I.prototype.parse=function(e,t){var a=this,n=a.config,i=a.rangeLinked?a.startDate:n.dateTime,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},i||n.dateTime,a.startTime):n.dateTime),i=D.parse(t,a.format,1);return n.range&&e===undefined?i+" "+a.rangeStr+" "+a.parse("end"):i},I.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},I.prototype.getDateTime=function(e){return this.newDate(e).getTime()},I.prototype.setValue=function(e){var t=this,a=t.config,n=a.elem[0];return"static"===a.position||(e=e||"",t.isInput(n)?lay(n).val(e):(a=t.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+t.rangeStr+" ")),a[0].val(e[0]||""),a[1].val(e[1]||"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e))),t},I.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+E),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html()&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300)))},I.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},I.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(C).addClass(k),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(o+" "+x),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?o:x),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.thisDateTime(1-a)})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(e=n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date,o=n.startDate,n.startDate=lay.extend({},n.endDate,e?{}:n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,e?{}:n.endTime),e&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o)),r&&(i.dateTime=lay.extend({},n.startDate))),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(o=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:o[0],month:o[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},I.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(t).hasClass(k)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(k))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(k))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(t).hasClass(k))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},I.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),o=l.range&&("year"===l.type||"month"===l.type),d=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(d).find(".laydate-year-list")[0],a=lay(d).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),o&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(C),date:{year:s[0]}})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))}}},I.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+L).addClass(k))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},I.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},I.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){D.thisId!==a.id&&t.render()}),a.elem[0].eventHandler=!0,a.eventElem.on(a.trigger,e),t.unbind=function(){t.remove(),a.elem.off(a.trigger,e),a.elem.removeAttr("lay-key"),a.elem.removeAttr(d),a.elem[0].eventHandler=!1,a.eventElem.off(a.trigger,e),a.eventElem.removeAttr("lay-key"),delete s.that[a.id]})},s.that={},s.getThis=function(e){var t=s.that[e];return!t&&n&&layui.hint().error(e?a+" instance with ID '"+e+"' not found":"ID argument required"),t},l.run=function(n){n(v).on("mousedown",function(e){var t,a;!D.thisId||(t=s.getThis(D.thisId))&&(a=t.config,e.target!==a.elem[0]&&e.target!==a.eventElem[0]&&e.target!==n(a.closeStop)[0]&&t.remove())}).on("keydown",function(e){var t;!D.thisId||(t=s.getThis(D.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===I.thisElemDate&&(e.preventDefault(),n(t.footer).find(C)[0].click())}),n(i).on("resize",function(){if(D.thisId){var e=s.getThis(D.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},D.render=function(e){e=new I(e);return s.call(e)},D.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},D.getInst=function(e){e=s.getThis(e);if(e)return e.inst},D.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},D.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},D.close=function(e){e=s.getThis(e||D.thisId);if(e)return e.remove()},D.parse=function(a,n,i){return a=a||{},n=((n="string"==typeof n?s.formatArr(n):n)||[]).concat(),lay.each(n,function(e,t){/yyyy|y/.test(t)?n[e]=lay.digit(a.year,t.length):/MM|M/.test(t)?n[e]=lay.digit(a.month+(i||0),t.length):/dd|d/.test(t)?n[e]=lay.digit(a.date,t.length):/HH|H/.test(t)?n[e]=lay.digit(a.hours,t.length):/mm|m/.test(t)?n[e]=lay.digit(a.minutes,t.length):/ss|s/.test(t)&&(n[e]=lay.digit(a.seconds,t.length))}),n.join("")},D.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},n?(D.ready(),layui.define("lay",function(e){D.path=layui.cache.dir,l.run(lay),e(a,D)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),D}):(D.ready(),l.run(i.lay),i.laydate=D)}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(T,M){var f=[],g=T.document,c=f.slice,O=f.concat,R=f.push,P=f.indexOf,B={},W=B.toString,m=B.hasOwnProperty,y={},e="1.12.4",C=function(e,t){return new C.fn.init(e,t)},I=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,$=/^-ms-/,z=/-([\da-z])/gi,X=function(e,t){return t.toUpperCase()};function U(e){var t=!!e&&"length"in e&&e.length,n=C.type(e);return"function"!==n&&!C.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+a+")"+a+"*"),ee=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),te=new RegExp(G),ne=new RegExp("^"+s+"$"),f={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),TAG:new RegExp("^("+s+"|[*])"),ATTR:new RegExp("^"+J),PSEUDO:new RegExp("^"+G),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},re=/^(?:input|select|textarea|button)$/i,ie=/^h\d$/i,c=/^[^{]+\{\s*\[native \w/,oe=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ae=/[+~]/,se=/'|\\/g,d=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig"),p=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)},ue=function(){C()};try{D.apply(n=V.call(v.childNodes),v.childNodes),n[v.childNodes.length].nodeType}catch(F){D={apply:n.length?function(e,t){U.apply(e,V.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function H(e,t,n,r){var i,o,a,s,u,l,c,f,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!r&&((t?t.ownerDocument||t:v)!==E&&C(t),t=t||E,N)){if(11!==p&&(l=oe.exec(e)))if(i=l[1]){if(9===p){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&y(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return D.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&g.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(i)),n}if(g.qsa&&!A[e+" "]&&(!m||!m.test(e))){if(1!==p)d=t,f=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(se,"\\$&"):t.setAttribute("id",s=k),o=(c=w(e)).length,u=ne.test(s)?"#"+s:"[id='"+s+"']";o--;)c[o]=u+" "+_(c[o]);f=c.join(","),d=ae.test(e)&&de(t.parentNode)||t}if(f)try{return D.apply(n,d.querySelectorAll(f)),n}catch(h){}finally{s===k&&t.removeAttribute("id")}}}return P(e.replace(L,"$1"),t,n,r)}function le(){var n=[];function r(e,t){return n.push(e+" ")>b.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function q(e){return e[k]=!0,e}function h(e){var t=E.createElement("div");try{return!!e(t)}catch(F){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function ce(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function x(a){return q(function(o){return o=+o,q(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function de(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in g=H.support={},O=H.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},C=H.setDocument=function(e){var e=e?e.ownerDocument||e:v;return e!==E&&9===e.nodeType&&e.documentElement&&(t=(E=e).documentElement,N=!O(E),(e=E.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",ue,!1):e.attachEvent&&e.attachEvent("onunload",ue)),g.attributes=h(function(e){return e.className="i",!e.getAttribute("className")}),g.getElementsByTagName=h(function(e){return e.appendChild(E.createComment("")),!e.getElementsByTagName("*").length}),g.getElementsByClassName=c.test(E.getElementsByClassName),g.getById=h(function(e){return t.appendChild(e).id=k,!E.getElementsByName||!E.getElementsByName(k).length}),g.getById?(b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&N)return(e=t.getElementById(e))?[e]:[]},b.filter.ID=function(e){var t=e.replace(d,p);return function(e){return e.getAttribute("id")===t}}):(delete b.find.ID,b.filter.ID=function(e){var t=e.replace(d,p);return function(e){e="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}}),b.find.TAG=g.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):g.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=g.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&N)return t.getElementsByClassName(e)},r=[],m=[],(g.qsa=c.test(E.querySelectorAll))&&(h(function(e){t.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+a+"*(?:value|"+Y+")"),e.querySelectorAll("[id~="+k+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||m.push(".#.+[+~]")}),h(function(e){var t=E.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(g.matchesSelector=c.test(i=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&h(function(e){g.disconnectedMatch=i.call(e,"div"),i.call(e,"[s!='']:x"),r.push("!=",G)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),e=c.test(t.compareDocumentPosition),y=e||c.test(t.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=e?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!g.sortDetached&&t.compareDocumentPosition(e)===n?e===E||e.ownerDocument===v&&y(v,e)?-1:t===E||t.ownerDocument===v&&y(v,t)?1:u?j(u,e)-j(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===E?-1:t===E?1:i?-1:o?1:u?j(u,e)-j(u,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?fe(a[r],s[r]):a[r]===v?-1:s[r]===v?1:0}),E},H.matches=function(e,t){return H(e,null,null,t)},H.matchesSelector=function(e,t){if((e.ownerDocument||e)!==E&&C(e),t=t.replace(ee,"='$1']"),g.matchesSelector&&N&&!A[t+" "]&&(!r||!r.test(t))&&(!m||!m.test(t)))try{var n=i.call(e,t);if(n||g.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(F){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(d,p),e[3]=(e[3]||e[4]||e[5]||"").replace(d,p),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||H.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&H.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return f.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&te.test(n)&&(t=w(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(d,p).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=H.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1(?:<\/\1>|)$/,G=/^.[^:#\[\.,]*$/;function K(e,n,r){if(C.isFunction(n))return C.grep(e,function(e,t){return!!n.call(e,t,e)!==r});if(n.nodeType)return C.grep(e,function(e){return e===n!==r});if("string"==typeof n){if(G.test(n))return C.filter(n,e,r);n=C.filter(n,e)}return C.grep(e,function(e){return-1)[^>]*|#([\w-]*))$/,ee=((C.fn.init=function(e,t,n){if(!e)return this;if(n=n||Q,"string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):C.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(C):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),C.makeArray(e,this));if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Z.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:g,!0)),J.test(r[1])&&C.isPlainObject(t))for(var r in t)C.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}return this.context=g,this.selector=e,this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
                                            a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
                                            ","
                                            "],area:[1,"",""],param:[1,"",""],thead:[1,"","
                                            "],tr:[2,"","
                                            "],col:[2,"","
                                            "],td:[3,"","
                                            "],_default:y.htmlSerialize?[0,"",""]:[1,"X
                                            ","
                                            "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
                                            t
                                            ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",(nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight)),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o&&(i.left=o)),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
                                            a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1===this.nodeType&&(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined||(this.value=e))})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"
                                            ":"";return a.zIndex=o,t([a.shade?'
                                            ':"",'
                                            '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
                                            ':''):"")+((1!=a.type||!e)&&a.content||"")+'
                                            '+(n=[],l&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
                                            "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t,i=0,n=a.btn.length;i'+a.btn[i]+"";return'
                                            '+e+"
                                            "}():"")+(a.resize?'':"")+"
                                            "],s,m('
                                            ')),this},t.pt.creat=function(){var e,t,i,n,a,o=this,s=o.config,l=o.index,r="object"==typeof(f=s.content),c=m("body");if(s.id&&m("."+y[0]).find("#"+s.id)[0])return e=m("#"+s.id).closest("."+y[0]),t=e.attr("times"),i=e.data("config"),n=m("#"+y.SHADE+t),void("min"===(e.data("maxminStatus")||{})?h.restore(t):i.hideOnClose&&(n.show(),e.show()));switch(s.removeFocus&&document.activeElement.blur(),"string"==typeof s.area&&(s.area="auto"===s.area?["",""]:[s.area,""]),s.shift&&(s.anim=s.shift),6==h.ie&&(s.fixed=!1),s.type){case 0:s.btn="btn"in s?s.btn:u.btn[0],h.closeAll("dialog");break;case 2:var f=s.content=r?s.content:[s.content||"","auto"];s.content='';break;case 3:delete s.title,delete s.closeBtn,-1===s.icon&&s.icon,h.closeAll("loading");break;case 4:r||(s.content=[s.content,"body"]),s.follow=s.content[1],s.content=s.content[0]+'',delete s.title,s.tips="object"==typeof s.tips?s.tips:[s.tips,!0],s.tipsMore||h.closeAll("tips")}o.vessel(r,function(e,t,i){c.append(e[0]),r?2==s.type||4==s.type?m("body").append(e[1]):f.parents("."+y[0])[0]||(f.data("display",f.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+y[0]+l).find("."+y[5]).before(t)):c.append(e[1]),m("#"+y.MOVE)[0]||c.append(u.moveElem=i),o.layero=m("#"+y[0]+l),o.shadeo=m("#"+y.SHADE+l),s.scrollbar||u.setScrollbar(l)}).auto(l),o.shadeo.css({"background-color":s.shade[1]||"#000",opacity:s.shade[0]||s.shade}),2==s.type&&6==h.ie&&o.layero.find("iframe").attr("src",f[0]),4==s.type?o.tips():(o.offset(),parseInt(u.getStyle(document.getElementById(y.MOVE),"z-index"))||(o.layero.css("visibility","hidden"),h.ready(function(){o.offset(),o.layero.css("visibility","visible")}))),s.fixed&&!u.events.resize[o.index]&&(u.events.resize[o.index]=function(){o.resize()},d.on("resize",u.events.resize[o.index])),s.time<=0||setTimeout(function(){h.close(o.index)},s.time),o.move().callback(),y.anim[s.anim]&&(a="layer-anim "+y.anim[s.anim],o.layero.addClass(a).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(a)})),o.layero.data("config",s)},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+y[0]+e),n=(""===t.area[0]&&0t.maxWidth&&i.width(t.maxWidth)),[i.innerWidth(),i.innerHeight()]),a=i.find(y[1]).outerHeight()||0,o=i.find("."+y[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+y[5])):t.fixed&&n[1]>=d.height()&&(n[1]=d.height(),e("."+y[5])):e("."+y[5]),this},t.pt.offset=function(){var e=this,t=e.config,i=e.layero,n=[i.outerWidth(),i.outerHeight()],a="object"==typeof t.offset;e.offsetTop=(d.height()-n[1])/2,e.offsetLeft=(d.width()-n[0])/2,a?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=d.width()-n[0]:"b"===t.offset?e.offsetTop=d.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=d.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=d.width()-n[0]):"rb"===t.offset?(e.offsetTop=d.height()-n[1],e.offsetLeft=d.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?d.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?d.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=d.scrollTop(),e.offsetLeft+=d.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=d.height()-(i.find(y[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0d.width()&&(o=d.width()-180-(u.minStackArr.edgeIndex=u.minStackArr.edgeIndex||0,u.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(l.left=o,l.top=d.height()-n,a||u.minStackIndex++,r.attr("minLeft",o)),r.attr("position",s),h.style(e,l,!0),i.hide(),"page"===r.attr("type")&&r.find(y[4]).hide(),u.restScrollbar(e),c.hide())},h.restore=function(e){var t=m("#"+y[0]+e),i=m("#"+y.SHADE+e),n=t.attr("area").split(","),a=t.attr("type"),o=t.data("config")||{};t.removeData("maxminStatus"),h.style(e,{width:n[0],height:n[1],top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===a&&t.find(y[4]).show(),o.scrollbar?u.restScrollbar(e):u.setScrollbar(e),i.show()},h.full=function(t){var i=m("#"+y[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&h.restore(t),i.data("maxminStatus","max"),u.record(i),y.html.attr("layer-full")||u.setScrollbar(t),setTimeout(function(){var e="fixed"===i.css("position");h.style(t,{top:e?0:d.scrollTop(),left:e?0:d.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},h.title=function(e,t){m("#"+y[0]+(t||h.index)).find(y[1]).html(e)},h.close=function(o,s){var l,e,r=(t=m("."+y[0]).children("#"+o).closest("."+y[0]))[0]?(o=t.attr("times"),t):m("#"+y[0]+o),c=r.attr("type"),t=r.data("config")||{},f=t.id&&t.hideOnClose;r[0]&&(l={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[t.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(f)return r.removeClass("layer-anim "+l),r.hide();if(c===u.type[1]&&"object"===r.attr("conType")){r.children(":not(."+y[5]+")").remove();for(var t=r.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===u.type[2])try{var n=m("#"+y[4]+o)[0];n.contentWindow.document.write(""),n.contentWindow.close(),r.find("."+y[5])[0].removeChild(n)}catch(a){}r[0].innerHTML="",r.remove()}"function"==typeof u.end[o]&&u.end[o](),delete u.end[o],"function"==typeof s&&s(),u.events.resize[o]&&(d.off("resize",u.events.resize[o]),delete u.events.resize[o])},m("#"+y.SHADE+o)[f?"hide":"remove"](),t.isOutAnim&&r.addClass("layer-anim "+l),6==h.ie&&u.reselect(),u.restScrollbar(o),"string"==typeof r.attr("minLeft")&&(u.minStackIndex--,u.minStackArr.push(r.attr("minLeft"))),h.ie&&h.ie<10||!t.isOutAnim?e():setTimeout(function(){e()},200))},h.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+y[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&h.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},h.closeLast=function(e){h.close(m(".layui-layer-"+(e=e||"page")+":last").attr("times"))},h.cache||{}),g=function(e){return i.skin?" "+i.skin+" "+i.skin+"-"+e:""};h.prompt=function(i,n){var e="",t="";"function"==typeof(i=i||{})&&(n=i),i.area&&(e='style="width: '+(o=i.area)[0]+"; height: "+o[1]+';"',delete i.area),i.placeholder&&(t=' placeholder="'+i.placeholder+'"');var a,o=2==i.formType?'":'",s=i.success;return delete i.success,h.open(m.extend({type:1,btn:["确定","取消"],content:o,skin:"layui-layer-prompt"+g("prompt"),maxWidth:d.width(),success:function(e){(a=e.find(".layui-layer-input")).val(i.value||"").focus(),"function"==typeof s&&s(e)},resize:!1,yes:function(e){var t=a.val();t.length>(i.maxlength||500)?h.tips("最多输入"+(i.maxlength||500)+"个字数",a,{tips:1}):n&&n(t,e,a)}},i))},h.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,h.open(m.extend({type:1,skin:"layui-layer-tab"+g("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
                                              '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
                                            ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},h.photos=function(n,e,a){var o={};if((n=m.extend(!0,{toolbar:!0,footer:!0},n)).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},s=i.data||[],l=i.start||0,r=n.success;if(o.imgIndex=1+(0|l),n.img=n.img||"img",delete n.success,t){if(0===s.length)return h.msg("没有图片")}else{var c=m(n.photos),f=function(){s=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),s.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===s.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");h.photos(m.extend(n,{photos:{start:e,data:s,tab:n.tab},full:n.full}),!0)}),!e)return}o.imgprev=function(e){o.imgIndex--,o.imgIndex<1&&(o.imgIndex=s.length),o.tabimg(e)},o.imgnext=function(e,t){o.imgIndex++,o.imgIndex>s.length&&(o.imgIndex=1,t)||o.tabimg(e)},o.keyup=function(e){var t;o.end||(t=e.keyCode,e.preventDefault(),37===t?o.imgprev(!0):39===t?o.imgnext(!0):27===t&&h.close(o.index))},o.tabimg=function(e){if(!(s.length<=1))return i.start=o.imgIndex-1,h.close(o.index),h.photos(n,!0,e)},o.isNumber=function(e){return"number"==typeof e&&!isNaN(e)},o.image={},o.getTransform=function(e){var t=[],i=e.rotate,n=e.scaleX,e=e.scale;return o.isNumber(i)&&0!==i&&t.push("rotate("+i+"deg)"),o.isNumber(n)&&1!==n&&t.push("scaleX("+n+")"),o.isNumber(e)&&t.push("scale("+e+")"),t.length?t.join(" "):"none"},o.event=function(e,i,n){o.main.find(".layui-layer-photos-prev").on("click",function(e){e.preventDefault(),o.imgprev(!0)}),o.main.find(".layui-layer-photos-next").on("click",function(e){e.preventDefault(),o.imgnext(!0)}),m(document).on("keyup",o.keyup),e.off("click").on("click","*[toolbar-event]",function(){var e=m(this);switch(e.attr("toolbar-event")){case"rotate":o.image.rotate=((o.image.rotate||0)+Number(e.attr("data-option")))%360,o.imgElem.css({transform:o.getTransform(o.image)});break;case"scalex":o.image.scaleX=-1===o.image.scaleX?1:-1,o.imgElem.css({transform:o.getTransform(o.image)});break;case"zoom":var t=Number(e.attr("data-option"));o.image.scale=(o.image.scale||1)+t,t<0&&o.image.scale<0-t&&(o.image.scale=0-t),o.imgElem.css({transform:o.getTransform(o.image)});break;case"reset":o.image.scaleX=1,o.image.scale=1,o.image.rotate=0,o.imgElem.css({transform:"none"});break;case"close":h.close(i)}n.offset(),n.auto(i)})},o.loadi=h.load(1,{shade:!("shade"in n)&&.9,scrollbar:!1});var t=s[l].src,d=function(e){h.close(o.loadi);var t,i=s[l].alt||"";a&&(n.anim=-1),o.index=h.open(m.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[m(p).width()-100,m(p).height()-100],!n.full&&(e[0]>t[0]||e[1]>t[1])&&((t=[e[0]/t[0],e[1]/t[1]])[1]'+i+''+(t=['
                                            '],1','','',"
                                            "].join("")),n.toolbar&&t.push(['
                                            ','','','','','','',"
                                            "].join("")),n.footer&&t.push(['"].join("")),t.push("
                                            "),t.join(""))+"",success:function(e,t,i){o.main=e.find(".layer-layer-photos-main"),o.footer=e.find(".layui-layer-photos-footer"),o.imgElem=o.main.children("img"),o.event(e,t,i),n.tab&&n.tab(s[l],e),"function"==typeof r&&r(e)},end:function(){o.end=!0,m(document).off("keyup",o.keyup)}},n))},u=function(){h.close(o.loadi),h.msg("当前图片地址异常
                                            是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){1").addClass(o));layui.each(i.bars,function(t,e){var n=s('
                                          • ');n.addClass(e.icon).attr({"lay-type":e.type,style:e.style||(i.bgcolor?"background-color: "+i.bgcolor:"")}).html(e.content),n.on("click",function(){var t=s(this).attr("lay-type");"top"===t&&("body"===i.target?s("html,body"):c).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,t)}),"object"===layui.type(i.on)&&layui.each(i.on,function(t,e){n.on(t,function(){var t=s(this).attr("lay-type");"function"==typeof e&&e.call(this,t)})}),"top"===e.type&&(n.addClass("layui-fixbar-top"),r=n),l.append(n)}),u.find("."+o).remove(),"object"==typeof i.css&&l.css(i.css),u.append(l),r&&(e=function e(){return c.scrollTop()>=i.margin?t||(r.show(),t=1):t&&(r.hide(),t=0),e}()),c.on("scroll",function(){e&&(clearTimeout(n),n=setTimeout(function(){e()},100))})},countdown:function(i){i=s.extend(!0,{date:new Date,now:new Date},i);var r=arguments,o=(1]|&(?=#[a-zA-Z0-9]+)/g.test(t+="")?t.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):t},unescape:function(t){return t!==undefined&&null!==t||(t=""),(t+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(t){var e=(t=t||{}).window||window.open(t.url||"",t.target,t.specs);t.url||(e.document.open("text/html","replace"),e.document.write(t.content||""),e.document.close())},toVisibleArea:function(t){var e,n,i,r,o,a,u,c;(t=s.extend({margin:160,duration:200,type:"y"},t)).scrollElem[0]&&t.thisElem[0]&&(e=t.scrollElem,u=t.thisElem,i=(o="y"===t.type)?"top":"left",r=e[n=o?"scrollTop":"scrollLeft"](),o=e[o?"height":"width"](),a=e.offset()[i],c={},((u=u.offset()[i]-a)>o-t.margin||u."+v,E=function(e){var i=this;i.index=++f.index,i.config=c.extend({},i.config,f.config,e),i.init()};E.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:300,shade:0},E.prototype.reload=function(e,i){var t=this;t.config=c.extend({},t.config,e),t.init(!0,i)},E.prototype.init=function(e,i){var t,n=this,a=n.config,l=c(a.elem);return 1');return 0No data
                                          • '),e},s=function(r,e){return layui.each(e,function(e,i){var t,n=i[u.children]&&0",(t="href"in i?''+l+"":l,n?'
                                            '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
                                            ":'
                                            '+t+"
                                            "),""].join(""))).data("item",i),n&&(a=c('
                                            '),t=c("
                                              "),"parent"===o?(a.append(s(t,i[u.children])),l.append(a)):l.append(s(t,i[u.children]))),r.append(l))}),r},a=['
                                              ',"
                                              "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(y+"_opened")||(l.elemView=c("."+g+'[lay-id="'+d.id+'"]'),"reloadData"===i&&l.elemView.length?l.elemView.html(d.content||n()):(l.elemView=c(a),l.elemView.append(d.content||n()),d.className&&l.elemView.addClass(d.className),d.style&&l.elemView.attr("style",d.style),f.thisId=d.id,l.remove(),t.append(l.elemView),d.elem.data(y+"_opened",!0),e=d.shade?'
                                              ':"",l.elemView.before(e),"mouseenter"===d.trigger&&l.elemView.on("mouseenter",function(){clearTimeout(h.timer)}).on("mouseleave",function(){l.delayRemove()})),l.position(),(h.prevElem=l.elemView).data("prevElem",d.elem),l.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),l.elemView.find(".layui-menu li").on("click",function(e){var i=c(this),t=i.data("item")||{},n=t[u.children]&&0n.width()&&(t.addClass(x),(i=t[0].getBoundingClientRect()).left<0&&t.removeClass(x)),i.bottom>n.height()&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5)))}).on("mouseleave",t,function(e){var i=c(this).children("."+V);i.removeClass(x),i.css("margin-top",0)}),f.close=function(e){e=h.getThis(e);return e?(e.remove(),h.call(e)):this},f.reload=function(e,i,t){e=h.getThis(e);return e?(e.reload(i,t),h.call(e)):this},f.reloadData=function(){var t=c.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),f.reload.apply(null,t)},f.render=function(e){e=new E(e);return h.call(e)},e(r,f)});layui.define(["jquery","lay"],function(e){"use strict";var g=layui.$,c=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var i=this;return i.config=g.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},t="slider",v="layui-disabled",x="layui-slider-bar",b="layui-slider-wrap",T="layui-slider-wrap-btn",w="layui-slider-tips",M="layui-slider-input-txt",L="layui-slider-hover",i=function(e){var i=this;i.index=++m.index,i.config=g.extend({},i.config,m.config,e),i.render()};i.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},i.prototype.render=function(){var a=this,n=a.config,e=g(n.elem);if(1n.min?e:n.min,n.value[1]=i>n.min?i:n.min,n.value[0]=n.value[0]>n.max?n.max:n.value[0],n.value[1]=n.value[1]>n.max?n.max:n.value[1],i=Math.floor((n.value[0]-n.min)/(n.max-n.min)*100),t=(s=Math.floor((n.value[1]-n.min)/(n.max-n.min)*100))-i+"%",i+="%",s+="%"):("object"==typeof n.value&&(n.value=Math.min.apply(null,n.value)),n.valuen.max&&(n.value=n.max),t=Math.floor((n.value-n.min)/(n.max-n.min)*100)+"%");var l,e=n.disabled?"#c2c2c2":n.theme,i='
                                              '+(n.tips?'
                                              ':"")+'
                                              '+(n.range?'
                                              ':"")+"
                                              ",t=g(n.elem),s=t.next(".layui-slider");if(s[0]&&s.remove(),a.elemTemp=g(i),n.range?(a.elemTemp.find("."+b).eq(0).data("value",n.value[0]),a.elemTemp.find("."+b).eq(1).data("value",n.value[1])):a.elemTemp.find("."+b).data("value",n.value),t.html(a.elemTemp),"vertical"===n.type&&a.elemTemp.height(n.height+"px"),n.showstep){for(var o=(n.max-n.min)/n.step,r="",u=1;u<1+o;u++){var d=100*u/o;d<100&&(r+='
                                              ')}a.elemTemp.append(r)}n.input&&!n.range&&(e=g('
                                              '),t.css("position","relative"),t.append(e),t.find("."+M).children("input").val(n.value),"vertical"===n.type?e.css({left:0,top:-48}):a.elemTemp.css("margin-right",e.outerWidth()+15)),n.disabled?(a.elemTemp.addClass(v),a.elemTemp.find("."+T).addClass(v)):a.slide(),a.elemTemp.find("."+T).on("mouseover",function(){var e="vertical"===n.type?n.height:a.elemTemp[0].offsetWidth,i=a.elemTemp.find("."+b),t=("vertical"===n.type?e-g(this).parent()[0].offsetTop-i.height():g(this).parent()[0].offsetLeft)/e*100,i=g(this).parent().data("value"),e=n.setTips?n.setTips(i):i;a.elemTemp.find("."+w).html(e),clearTimeout(l),l=setTimeout(function(){"vertical"===n.type?a.elemTemp.find("."+w).css({bottom:t+"%","margin-bottom":"20px",display:"inline-block"}):a.elemTemp.find("."+w).css({left:t+"%",display:"inline-block"})},300)}).on("mouseout",function(){clearTimeout(l),a.elemTemp.find("."+w).css("display","none")})},i.prototype.slide=function(e,i,t){var o=this,r=o.config,u=o.elemTemp,d=function(){return"vertical"===r.type?r.height:u[0].offsetWidth},c=u.find("."+b),m=u.next(".layui-slider-input"),v=m.children("."+M).children("input").val(),p=100/((r.max-r.min)/Math.ceil(r.step)),f=function(e,i,t){e=(e=100<(e=100a[1]&&a.reverse(),o.value=r.range?a:l,r.change&&r.change(o.value),"done"===t&&r.done&&r.done(o.value)},h=function(e){var i=e/d()*100/p,t=Math.round(i)*p;return t=e==d()?Math.ceil(i)*p:t},y=g(['
                                              d()?d():i)/d()*100/p;f(i,l),s.addClass(L),u.find("."+w).show(),e.preventDefault()},i=function(){s.removeClass(L),u.find("."+w).hide()},t=function(){i&&i(),y.remove(),r.done&&r.done(o.value)},g("#LAY-slider-moving")[0]||g("body").append(y),y.on("mousemove",e),y.on("mouseup",t).on("mouseleave",t)})}),u.on("click",function(e){var i=g("."+T),t=g(this);!i.is(event.target)&&0===i.has(event.target).length&&i.length&&(t=(i=(i=(i="vertical"===r.type?d()-e.clientY+t.offset().top-g(window).scrollTop():e.clientX-t.offset().left-g(window).scrollLeft())<0?0:i)>d()?d():i)/d()*100/p,i=r.range?"vertical"===r.type?Math.abs(i-parseInt(g(c[0]).css("bottom")))>Math.abs(i-parseInt(g(c[1]).css("bottom")))?1:0:Math.abs(i-c[0].offsetLeft)>Math.abs(i-c[1].offsetLeft)?1:0:0,f(t,i,"done"),e.preventDefault())}),m.children(".layui-slider-input-btn").children("i").each(function(i){g(this).on("click",function(){v=m.children("."+M).children("input").val();var e=((v=1==i?v-r.stepr.max?r.max:Number(v)+r.step)-r.min)/(r.max-r.min)*100/p;f(e,0,"done")})});var a=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)r.max?r.max:e,((this.value=e)-r.min)/(r.max-r.min)*100/p);f(e,0,"done")};m.children("."+M).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),a.call(this))}).on("change",a)},i.prototype.events=function(){this.config},m.render=function(e){e=new i(e);return function(){var t=this,a=t.config;return{setValue:function(e,i){return e=(e=e>a.max?a.max:e)',"",'','',"","","
                                              "].join("")),r=i.elem=m(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),r.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:r.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,r=e.elemColorBox[0],t=e.elemPicker=m(['
                                              ','
                                              ','
                                              ','
                                              ','
                                              ','
                                              ',"
                                              ",'
                                              ','
                                              ',"
                                              ","
                                              ",'
                                              ','
                                              ','
                                              ',"
                                              ","
                                              ",i.predefine?(o=['
                                              '],layui.each(i.colors,function(e,i){o.push(['
                                              ','
                                              ',"
                                              "].join(""))}),o.push("
                                              "),o.join("")):"",'
                                              ','
                                              ','',"
                                              ",'
                                              ','','',"","
                                              "].join(""));e.elemColorBox.find("."+C)[0];m(a)[0]&&m(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),m("body").append(t)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=r.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=m("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close&&i.close(this.color)),this},d.prototype.position=function(){var e=this,i=e.config;return t.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),r=i.elemPicker.find("."+M),t=o[0].style.backgroundColor;t?(e=Y(L(t)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?r.find("input").val(t):"rgba"===o?(o=L(t),3===(t.match(/[0-9]{1,3}/g)||[]).length?(r.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+T).css("left",280)):(r.find("input").val(t),t=280*t.slice(t.lastIndexOf(",")+1,t.length-1),i.elemPicker.find("."+T).css("left",t)),i.elemPicker.find("."+D)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):r.find("input").val("#"+F(e))):(i.select(0,100,100),r.find("input").val(""),i.elemPicker.find("."+D)[0].style.background="",i.elemPicker.find("."+T).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),r=n.elemPicker.find("."+E),f=n.elemPicker.find("."+D),u=n.elemPicker.find("."+T),g=e[0].offsetTop/180*360,p=100-(r[0].offsetTop+3)/180*100,h=(r[0].offsetLeft+3)/260*100,v=Math.round(u[0].offsetLeft/280*100)/100,b=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),y=function(e,i,o,r){n.select(e,i,o);var t=j({h:e,s:i,b:o}),e=F({h:e,s:i,b:o}),i=n.elemPicker.find("."+M).find("input");b.addClass(x).removeClass(P),c[0].style.background="rgb("+t.r+", "+t.g+", "+t.b+")","torgb"===a?i.val("rgb("+t.r+", "+t.g+", "+t.b+")"):"rgba"===a?(u.css("left",280*r),i.val("rgba("+t.r+", "+t.g+", "+t.b+", "+r+")"),c[0].style.background="rgba("+t.r+", "+t.g+", "+t.b+", "+r+")",f[0].style.background="linear-gradient(to right, rgba("+t.r+", "+t.g+", "+t.b+", 0), rgb("+t.r+", "+t.g+", "+t.b+"))"):i.val("#"+e),l.change&&l.change(n.elemPicker.find("."+M).find("input").val())},o=m(['
                                              '].join("")),k=function(e){m("#LAY-colorpicker-moving")[0]||m("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var r=this.offsetTop,t=e.clientY;k(function(e){var i=r+(e.clientY-t),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;y(g=o,h,p,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-m(this).offset().top+H.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;y(g=i,h,p,v),e.preventDefault()}),r.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),k(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),r=d[0].offsetHeight-3,t=d[0].offsetWidth-3,t=((o=t<(o=o<-3?-3:o)?t:o)+3)/260*100,o=100-((i=r<(i=i<-3?-3:i)?r:i)+3)/180*100;y(g,h=t,p=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-m(this).offset().top-3+H.scrollTop(),o=e.clientX-m(this).offset().left-3+H.scrollLeft(),o=((i=i<-3?-3:i)>this.offsetHeight-3&&(i=this.offsetHeight-3),((o=(o=o<-3?-3:o)>this.offsetWidth-3?this.offsetWidth-3:o)+3)/260*100),i=100-(i+3)/180*100;y(g,h=o,p=i,v),layui.stope(e),e.preventDefault(),r.trigger(e,"mousedown")}),u.on("mousedown",function(e){var r=this.offsetLeft,t=e.clientX;k(function(e){var i=r+(e.clientX-t),o=f[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);y(g,h,p,v=o),e.preventDefault()}),e.preventDefault()}),f.on("click",function(e){var i=e.clientX-m(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);y(g,h,p,v=i),e.preventDefault()}),i.each(function(){m(this).on("click",function(){m(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(L(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);g=i.h,h=i.s,p=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,y(i.h,i.s,i.b,o)})})},d.prototype.select=function(e,i,o,r){this.config;var t=F({h:e,s:100,b:100}),e=(F({h:e,s:i,b:o}),e/360*180),o=180-o/100*180-3,i=i/100*260-3;this.elemPicker.find("."+B).css("top",e),this.elemPicker.find("."+I)[0].style.background="#"+t,this.elemPicker.find("."+E).css({top:o,left:i})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+M+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,r,t,n,l=d.val();if(-1>16,g:(65280&t)>>8,b:255&t},r=Y(n),s[0].style.background=o="#"+F(r),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i)return c.select(r.h,r.s,r.b,i),void(a.change&&a.change(o));c.color=l,a.done&&a.done(l),c.removePicker()}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=m(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=m(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),m(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,r;!n.thisId||(i=l.getThis(n.thisId))&&(o=i.config,r=i.elemColorBox.find("."+C),m(e.target).hasClass(c)||m(e.target).parents("."+c)[0]||m(e.target).hasClass(a.replace(/\./g,""))||m(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(L(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),r[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),H.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!m(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(r,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),o="element",c="layui-this",h="layui-show",r=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,o,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(r),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
                                              '+(i.content||"")+"
                                              "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),g.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(r).find('>li[lay-id="'+i+'"]');return g.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(r).find('>li[lay-id="'+i+'"]');return g.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(this).index();g.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",l="layui-nav-bar",p="layui-nav-tree",b="layui-nav-child",v="layui-nav-more",m="layui-anim layui-anim-upbit",g={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(c).siblings().removeClass(c),i.eq(t).addClass(h).siblings().removeClass(h)),layui.event.call(this,o,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(c)&&(i.next()[0]&&i.next().is("li")?g.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&g.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){g.tabAuto()},50),layui.event.call(this,o,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t,i=u(this),a=i.children(".layui-tab-title"),e=(i.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),e=u('');c===window&&d.ie,i.attr("lay-allowclose")&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||((t=u('')).on("click",g.tabDelete),i.append(t))}),"string"!=typeof i.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(t=a.find("li").eq(0).height())+t/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(e),i.attr("overflow",""),e.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),i.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.parents(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+b),n="string"==typeof e.attr("lay-unselect");"javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+c).removeClass(c),e.addClass(c)),i.hasClass(p)&&(l.removeClass(m),l[0]&&(e["none"===l.css("display")?"addClass":"removeClass"](f+"ed"),"all"===i.attr("lay-shrink")&&e.siblings().removeClass(f+"ed"))),layui.event.call(this,o,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,o,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){g.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+l)[0]||(i.append(a),(i.hasClass(p)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+b);i.hasClass(p)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(m),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+v).addClass(v+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(p)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+b).removeClass(h),i.find("."+v).removeClass(v+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(p)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+b)[0]&&!t.children("."+v)[0]&&t.append(''),t.off("click",g.clickThis).on("click",g.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",g.collapse).on("click",g.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",g.tabClick),u(window).on("resize",g.tabAuto),t(o,a)});layui.define(["lay","layer"],function(e){"use strict";var x=layui.$,i=layui.layer,b=layui.device(),t={config:{},set:function(e){var i=this;return i.config=x.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,n,e,i)}},n="upload",a="layui-upload-file",o="layui-upload-form",F="layui-upload-iframe",w="layui-upload-choose",L="UPLOADING",j=function(e){var i=this;i.config=x.extend({},i.config,t.config,e),i.render()};j.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1,text:{"cross-domain":"Cross-domain requests are not supported","data-format-error":"Please return JSON data format","check-error":"",error:"","limit-number":null,"limit-size":null}},j.prototype.render=function(){var e=this,i=e.config;i.elem=x(i.elem),i.bindAction=x(i.bindAction),e.file(),e.events()},j.prototype.file=function(){var e=this,i=e.config,t=e.elemFile=x(['"].join("")),n=i.elem.next();(n.hasClass(a)||n.hasClass(o))&&n.remove(),b.ie&&b.ie<10&&i.elem.wrap('
                                              '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(t),b.ie&&b.ie<10&&e.initIE()},j.prototype.initIE=function(){var t,e=this.config,i=x(''),n=x(['
                                              ',"
                                              "].join(""));x("#"+F)[0]||x("body").append(i),e.elem.next().hasClass(o)||(this.elemFile.wrap(n),e.elem.next("."+o).append((t=[],layui.each(e.data,function(e,i){i="function"==typeof i?i():i,t.push('')}),t.join(""))))},j.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},j.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},j.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,i){var t=new FileReader;t.readAsDataURL(i),t.onload=function(){n&&n(e,i,this.result)}})},j.prototype.upload=function(e,i){var t,n,a,o,u=this,c=u.config,f=c.text||{},l=u.elemFile[0],s=function(){return e||u.files||u.chooseFiles||l.files},r=function(){var i=0,o=0,l=s(),r=function(){c.multiple&&i+o===u.fileLength&&"function"==typeof c.allDone&&c.allDone({total:u.fileLength,successful:i,failed:o})},t=function(t){var n=new FormData,a=function(e,i){if(i[L])return delete l[e],!0};if(layui.each(c.data,function(e,i){i="function"==typeof i?i():i,n.append(e,i)}),t.unified)layui.each(l,function(e,i){a(e,i)||(i[L]=!0,n.append(c.field,i))});else{if(a(t.index,t.file))return;n.append(c.field,t.file)}t.file[L]=!0;var e={url:c.url,type:"post",data:n,contentType:!1,processData:!1,headers:c.headers||{},success:function(e){c.unified?i+=u.fileLength:i++,d(t.index,e),r()},error:function(e){c.unified?o+=u.fileLength:o++,u.msg(f.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
                                              ")),m(t.index),r()}};c.dataType?e.dataType=c.dataType:"json"===c.force&&(e.dataType=c.force),"function"==typeof c.progress&&(e.xhr=function(){var e=x.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var i;e.lengthComputable&&(i=Math.floor(e.loaded/e.total*100),c.progress(i,(c.item||c.elem)[0],e,t.index))}),e}),x.ajax(e)};c.unified?t({unified:!0,index:0}):layui.each(l,function(e,i){t({index:e,file:i})})},p=function(){var n=x("#"+F);u.elemFile.parent().submit(),clearInterval(j.timer),j.timer=setInterval(function(){var e,i=n.contents().find("body");try{e=i.text()}catch(t){u.msg(f["cross-domain"]),clearInterval(j.timer),m()}e&&(clearInterval(j.timer),i.html(""),d(0,e))},30)},d=function(e,i){if(u.elemFile.next("."+w).remove(),l.value="","json"===c.force&&"object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},u.msg(f["data-format-error"])}"function"==typeof c.done&&c.done(i,e||0,function(e){u.upload(e)})},m=function(e){c.auto&&(l.value=""),"function"==typeof c.error&&c.error(e||0,function(e){u.upload(e)})},h=c.exts,g=(n=[],layui.each(e||u.chooseFiles,function(e,i){n.push(i.name)}),n),v={preview:function(e){u.preview(e)},upload:function(e,i){var t={};t[e]=i,u.upload(t)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,i){u.files[e]=i}),u.files},resetFile:function(e,i,t){i=new File([i],t);u.files=u.files||{},u.files[e]=i}},y={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[c.accept]||"\u6587\u4ef6",g=0===g.length?l.value.match(/[^\/\\]+\..+/g)||[]||"":g;if(0!==g.length){switch(c.accept){case"file":layui.each(g,function(e,i){if(h&&!RegExp(".\\.("+h+")$","i").test(escape(i)))return t=!0});break;case"video":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(i)))return t=!0});break;case"audio":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(i)))return t=!0});break;default:layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"jpg|png|gif|bmp|jpeg|svg")+")$","i").test(escape(i)))return t=!0})}if(t)return u.msg(f["check-error"]||"\u9009\u62e9\u7684"+y+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==i&&!c.auto||(c.choose&&c.choose(v),"choose"!==i)){if(u.fileLength=(a=0,y=s(),layui.each(y,function(){a++}),a),c.number&&u.fileLength>c.number)return u.msg("function"==typeof f["limit-number"]?f["limit-number"](c,u.fileLength):"\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+c.number+" \u4e2a\u6587\u4ef6
                                              \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+u.fileLength+" \u4e2a\u6587\u4ef6");if(01024*c.size&&(i=1<=(i=c.size/1024)?i.toFixed(2)+"MB":c.size+"KB",l.value="",o=i)}),o)return u.msg("function"==typeof f["limit-size"]?f["limit-size"](c,o):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!c.before||!1!==c.before(v))b.ie?(9'+e+"")},r=function(){var e=x(this);(e.attr("lay-data")||e.attr("lay-options"))&&(n.config=x.extend({},a,lay.options(this,{attr:e.attr("lay-data")?"lay-data":null})))};a.elem.off("upload.start").on("upload.start",function(){var e=x(this);r.call(this),n.config.item=e,n.elemFile[0].click()}),b.ie&&b.ie<10||a.elem.off("upload.over").on("upload.over",function(){x(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){x(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,i){var t=x(this),i=i.originalEvent.dataTransfer.files||[];t.removeAttr("lay-over"),r.call(this),o(i),a.auto?n.upload():l(i)}),n.elemFile.off("upload.change").on("upload.change",function(){var e=this.files||[];0!==e.length&&(r.call(this),o(e),a.auto?n.upload():l(e))}),a.bindAction.off("upload.action").on("upload.action",function(){n.upload()}),a.elem.data("haveEvents")||(n.elemFile.on("change",function(){x(this).trigger("upload.change")}),a.elem.on("click",function(){n.isFile()||x(this).trigger("upload.start")}),a.drag&&a.elem.on("dragover",function(e){e.preventDefault(),x(this).trigger("upload.over")}).on("dragleave",function(e){x(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),x(this).trigger("upload.drop",e)}),a.bindAction.on("click",function(){x(this).trigger("upload.action")}),a.elem.data("haveEvents",!0))},t.render=function(e){e=new j(e);return function(){var i=this;return{upload:function(e){i.upload.call(i,e)},reload:function(e){i.reload.call(i,e)},config:i.config}}.call(e)},e(n,t)});layui.define(["lay","layer","util"],function(e){"use strict";var C=layui.$,h=layui.layer,d=layui.util,l=layui.hint(),w=(layui.device(),"form"),o=".layui-form",T="layui-this",N="layui-hide",$="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e))return"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"},phone:function(e){if(e&&!/^1\d{10}$/.test(e))return"\u624b\u673a\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"},email:function(e){if(e&&!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))return"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"},url:function(e){if(e&&!/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/.test(e))return"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"},number:function(e){if(e&&isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:function(e){if(e&&!/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/.test(e))return"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"},identity:function(e){if(e&&!/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(e))return"\u8eab\u4efd\u8bc1\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"}},autocomplete:null}},i=(t.prototype.set=function(e){return C.extend(!0,this.config,e),this},t.prototype.verify=function(e){return C.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return C(o+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,w,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=C(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;C(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=C(o+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){e=e||a.find("input,textarea");i.autocomplete&&e.attr("autocomplete",i.autocomplete),a.find("input[lay-affix],textarea[lay-affix]").each(function(){var r=C(this),s=r.attr("lay-affix"),o="layui-input-wrap",c="layui-input-suffix",u="layui-input-affix",e=r.is("[disabled]")||r.is("[readonly]"),d=function(e,t){(e=C(e))[0]&&e[C.trim(t)?"removeClass":"addClass"](N)},n=function(i){i=C.extend({},f[s]||{value:s},i,lay.options(r[0]));var a,t=C('
                                              '),e=layui.isArray(i.value)?i.value:[i.value],e=C((a=[],layui.each(e,function(e,t){a.push('')}),a.join(""))),n=(t.append(e),i.split&&t.addClass("layui-input-split"),i.className&&t.addClass(i.className),r.next("."+u)),l=(n[0]&&n.remove(),r.parent().hasClass(o)||r.wrap('
                                              '),r.next("."+c));l[0]?((n=l.find("."+u))[0]&&n.remove(),l.prepend(t),r.css("padding-right",function(){return(r.closest(".layui-input-group")[0]?0:l.outerWidth())+t.outerWidth()})):(t.addClass(c),r.after(t)),"auto"===i.show&&d(t,r.val()),r.on("input propertychange",function(){var e=this.value;"auto"===i.show&&d(t,e)}),e.on("click",function(){var e=r.attr("lay-filter");C(this).hasClass($)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,w,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},f={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),d(C(this).parent(),null)},show:"auto",disabled:e},number:{value:["up","down"],split:!0,className:"layui-input-number",disabled:r.is("[disabled]"),click:function(e){var t=C(this).index(),i=e.val(),a=i,n=Number(e.attr("step"))||1,l=Number(e.attr("min")),r=Number(e.attr("max"));isNaN(i)||(i=Number(i),r<(i=(i=t?i-n:i+n)F.height()&&t<=e&&a.addClass(m+"up"),o()},n=function(e){a.removeClass(m+"ed "+m+"up"),d.blur(),s=null,e||l(d.val(),function(e){var t=c[0].selectedIndex;e&&(k=C(c[0].options[t]).html(),0===t&&k===d.attr("placeholder")&&(k=""),d.val(k||""))})},o=function(){var e,t,i=f.children("dd."+T);i[0]&&(e=i.position().top,t=f.height(),i=i.height(),t\u65e0\u5339\u914d\u9879

                                              '):f.find("."+x).remove()},"keyup"),""===t&&(c.val(""),f.find("."+T).removeClass(T),(c[0].options[0]||{}).value||f.children("dd:eq(0)").addClass(T),f.find("."+x).remove()),o()}).on("blur",function(e){var t=c[0].selectedIndex;p=d,k=C(c[0].options[t]).text(),0===t&&k===d.attr("placeholder")&&(k=""),setTimeout(function(){l(d.val(),function(e){k||d.val("")},"blur")},200)}),h.on("click",function(){var e=C(this),t=e.attr("lay-value"),i=c.attr("lay-filter");return e.hasClass($)||(e.hasClass("layui-select-tips")?d.val(""):(d.val(e.text()),e.addClass(T)),e.siblings().removeClass(T),c.val(t).removeClass("layui-form-danger"),layui.event.call(this,w,"select("+i+")",{elem:c[0],value:t,othis:a}),n(!0)),!1}),a.find("dl>dt").on("click",function(e){return!1}),C(document).off("click",b).on("click",b))};e.each(function(e,t){var i=C(this),a=i.next("."+m),n=this.disabled,l=t.value,r=C(t.options[t.selectedIndex]),t=t.options[0];if("string"==typeof i.attr("lay-ignore"))return i.show();var s,o="string"==typeof i.attr("lay-search"),t=t&&!t.value&&t.innerHTML||c,r=C(['
                                              ','
                                              ','','
                                              ','
                                              ',(t=i.find("*"),s=[],layui.each(t,function(e,t){var i=t.tagName.toLowerCase();0!==e||t.value||"optgroup"===i?"optgroup"===i?s.push("
                                              "+t.label+"
                                              "):s.push('
                                              '+C.trim(t.innerHTML)+"
                                              "):s.push('
                                              '+C.trim(t.innerHTML||c)+"
                                              ")}),0===s.length&&s.push('
                                              \u6ca1\u6709\u9009\u9879
                                              '),s.join("")+"
                                              "),"
                                              "].join(""));a[0]&&a.remove(),i.after(r),u.call(this,r,n,o)})},checkbox:function(e){var o={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],"switch":["layui-form-switch","layui-form-onswitch","switch"],SUBTRA:"layui-icon-indeterminate"},e=e||a.find("input[type=checkbox]");e.each(function(e,t){var i=C(this),a=i.attr("lay-skin")||"primary",n=d.escape(C.trim(t.title||(t.title=i.attr("lay-text")||""))),l=this.disabled,r=o[a]||o.checkbox,s=i.next("."+r[0]);if(s[0]&&s.remove(),i.next("[lay-checkbox]")[0]&&(n=i.next().html()||""),n="switch"===a?n.split("|"):[n],"string"==typeof i.attr("lay-ignore"))return i.show();l=C(['
                                              ",(s={checkbox:[n[0]?"
                                              "+n[0]+"
                                              ":"primary"===a?"":"
                                              ",''].join(""),"switch":"
                                              "+((t.checked?n[0]:n[1])||"")+"
                                              "})[a]||s.checkbox,"
                                              "].join(""));i.after(l),function(a,n){var l=C(this);a.on("click",function(){var e=C(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+o.SUBTRA).removeClass(o.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],w,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var r="layui-form-radio",s=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=C(this),a=i.next("."+r),n=this.disabled;if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();n=C(['
                                              ','',"
                                              "+(a=d.escape(t.title||""),a=i.next("[lay-radio]")[0]?i.next().html():a)+"
                                              ","
                                              "].join(""));i.after(n),function(a){var n=C(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(o),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=C(this).next("."+r);this.checked=!1,e.removeClass(r+"ed"),e.children(".layui-icon").removeClass(l+" "+s[0]).addClass(s[1])}),n[0].checked=!0,a.addClass(r+"ed"),a.children(".layui-icon").addClass(l+" "+s[0]),layui.event.call(n[0],w,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,n)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?C(e).is(o)?(a=C(e),t()):e.each(function(e,t){var i=C(t);i.closest(o).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u,d=this.config.verify,f="layui-form-danger";return!(e=C(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=C(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=C.trim(s.val());if(s.removeClass(f),layui.each(t,function(e,t){var i="",a=d[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n)return"tips"===o?h.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?h.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&h.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(f),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i=C(this),e="string"==typeof e?e:i.attr("lay-filter"),a=this.getFormElem?this.getFormElem(e):i.parents(o).eq(0),n=a.find("*[lay-verify]");if(!r.validate(n))return!1;n=r.getValue(null,a),a={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?a:i.parents("form"))[0],field:n};return"function"==typeof t&&t(a),layui.event.call(this,w,"submit("+e+")",a)}),r=new t,t=C(document),F=C(window);C(function(){r.render()}),t.on("reset",o,function(){var e=C(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",o,i).on("click","*[lay-submit]",i),e(w,r)});layui.define(["lay","laytpl","laypage","form","util"],function(n){"use strict";var f=layui.$,r=layui.lay,m=layui.laytpl,P=layui.laypage,p=layui.layer,v=layui.form,g=layui.util,b=layui.hint(),x=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var t=this;return t.config=f.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,N,e,t)}},w=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){k.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=w.that[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=w.config[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},T=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content;"numbers"===a.type&&(i=e.tplData[k.config.numbersName]);("escape"in a?a:t).escape&&(i=g.escape(i));t=e.text&&a.exportTemplet||a.templet||a.toolbar;return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(f(t).html()||String(i)).render(f.extend({LAY_COL:a},e.tplData))),e.text?f("
                                              "+i+"
                                              ").text():i},N="table",t=".layui-table",R="layui-hide",y="layui-hide-v",h="layui-none",L="layui-table-view",o=".layui-table-header",A=".layui-table-body",D=".layui-table-pageview",_=".layui-table-sort",E="layui-table-checked",W="layui-table-edit",j="layui-table-hover",z="laytable-cell-group",M="layui-table-col-special",H="layui-table-tool-panel",S="layui-table-expanded",F="LAY_TABLE_MOVE_DICT",e=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
                                              ','
                                              ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
                                              ","
                                              "].join("")},a=['',"","
                                              "].join(""),s=[,"{{# if(d.data.toolbar){ }}",'
                                              ','
                                              ','
                                              ',"
                                              ","{{# } }}",'
                                              ',"{{# if(d.data.loading){ }}",'
                                              ','',"
                                              ","{{# } }}","{{# var left, right; }}",'
                                              ',e(),"
                                              ",'
                                              ',a,"
                                              ","{{# if(left){ }}",'
                                              ','
                                              ',e({fixed:!0}),"
                                              ",'
                                              ',a,"
                                              ","
                                              ","{{# }; }}","{{# if(right){ }}",'
                                              ','
                                              ',e({fixed:"right"}),'
                                              ',"
                                              ",'
                                              ',a,"
                                              ","
                                              ","{{# }; }}","
                                              ","{{# if(d.data.totalRow){ }}",'
                                              ','','',"
                                              ","
                                              ","{{# } }}",'
                                              ','
                                              ',"
                                              "].join(""),d=f(window),I=f(document),i=function(e){this.index=++k.index,this.config=f.extend({},this.config,k.config,e),this.render()},c=(i.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},i.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=f(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(w.that[i]=t,(w.config[i]=a).request=f.extend({pageName:"page",limitName:"limit"},a.request),a.response=f.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-\d+$/.test(a.height)?(t.fullHeightGap=a.height.split("-")[1],a.height=d.height()-t.fullHeightGap):a.height&&/^#\w+\S*-\d+$/.test(a.height)&&(i=a.height.split("-"),t.parentHeightGap=i.pop(),t.parentDiv=i.join("-"),a.height=f(t.parentDiv).height()-t.parentHeightGap);var l,e=a.elem,i=e.next("."+L),n=t.elem=f("
                                              ");n.addClass((l=[L,L+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr({"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,"lay-id":a.id,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))}).html(m(s,{open:"{{",close:"}}"}).render({data:a,index:t.index})),t.renderStyle(),i[0]&&i.remove(),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(A),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(".layui-table-fixed-r"),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},i.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},i.prototype.setInit=function(e){var l,a,d=this,r=d.config;if(r.clientWidth=r.width||(l=function(e){var t,a=(e=e||r.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return r.clientWidth;r.height=r.maxHeight||r.height,r.css&&-1===r.css.indexOf(L)&&(a=r.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+L+"-"+d.index+" "+t)}),r.css=a.join("}"));var c=function(a,e,i,l){var n,o;l?(l.key=[r.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,d.initOpts(l),(n=a+(parseInt(l.rowspan)||1)) td:hover > .layui-table-cell{overflow: auto;}"],function(e,t){o.push(a+" "+t)})),l.css&&o.push(l.css),r.style({target:this.elem[0],text:o.join(""),id:"DF-table-"+n})},i.prototype.renderToolbar=function(){var e=this.config,t=['
                                              ','
                                              ','
                                              '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=f(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
                                              ')}),this.layTool.find(".layui-table-tool-self").html(l.join(""))},i.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=f('
                                              ');t.pagebar&&((e=f(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},i.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](R),t.colspan2=l,t.hide=l<1,(a=i.data("parentkey"))&&this.setParentCol(e,a))},i.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},i.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+z)).css("width",0),layui.each(e.get().reverse(),function(){var e=f(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){f(this).hasClass(R)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.cssRules(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"
                                              ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(R),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(D).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth()},i.prototype.page=1,i.prototype.pullData=function(a,t){var e,i,l=this,n=l.config,o=(n.HAS_SET_COLS_PATCH||l.setColsPatch(),n.HAS_SET_COLS_PATCH=!0,n.request),d=n.response,r=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:t.type})},c=function(e,t){l.setColsWidth(),"function"==typeof n.done&&n.done(e,a,e[d.countName],t)};t=t||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),t.renderData?((e={})[d.dataName]=k.cache[l.key],e[d.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[d.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},l.totalRow)),l.renderData({res:e,curr:a,count:e[d.countName],type:t.type,sort:!0}),c(e,"renderData")):n.url?(i={},n.page&&(i[o.pageName]=a,i[o.limitName]=n.limit),o=f.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(),f.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[d.statusName]!=d.statusCode?l.errorView(e[d.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+d.statusName+'": '+d.statusCode):(l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),n.time=(new Date).getTime()-l.startTime+" ms"),c(e)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=a*n.limit-n.limit,o=n.data.concat(),e[d.dataName]=n.page?o.splice(i,n.limit):o,e[d.countName]=n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},n.totalRow)),l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),c(e))},i.prototype.eachCols=function(e){return k.eachCols(null,e,this.config.cols),this},i.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return b.error(t),{}}},i.prototype.getTrHtml=function(a,l,n,e){var s=this,u=s.config,y=e&&e.trs||[],h=e&&e.trs_fixed||[],p=e&&e.trs_fixed_r||[];return n=n||1,layui.each(a,function(e,o){var i=[],d=[],r=[],c=e+u.limit*(n-1)+1;if("object"!=typeof o){a[e]=o={LAY_KEY:o};try{k.cache[s.key][e]=o}catch(t){}}"array"===layui.type(o)&&0===o.length||(o[k.config.numbersName]=c,l||(o[k.config.indexName]=e),s.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=o[e];n!==undefined&&null!==n||(n=""),l.colGroup||(e=['','
                                              "+function(){var e,t=f.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(f(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
                                              "].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&d.push(e),"right"===l.fixed&&r.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+E+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+d.join("")+""),p.push(""+r.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:p}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},i.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,d=t[i.response.dataName]||[],t=t[i.response.totalRowName],r=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(d,o,l,{trs:r,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(r.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,p.close(a.tipsIndex)};return k.cache[a.key]=d,a.layTotal[0==d.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](R),a.layPage.find(D)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](y),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(R),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(R),void(i.page&&(i.page=f.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,P.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},i.prototype.renderTotal=function(e,o){var d,r=this,c=r.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||r.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),r.dataTotal=[],d=[],r.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&T.call(r,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&r.dataTotal.push({field:t.field,total:f("
                                              "+l+"
                                              ").text()}),['','
                                              "+("string"==typeof(a=t.totalRow||c.totalRow)?m(a).render(f.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
                                              "].join(""));d.push(n)}),e=r.layTotal.find(".layui-table-patch"),r.layTotal.find("tbody").html(""+d.join("")+(e.length?e.get(0).outerHTML:"")+""))},i.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},i.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},i.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}),v.render(t))},i.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},i.prototype.setRowChecked=function(a){var e=this,i=e.config,l=e.layBody.find("tr"+("all"===a.index?"":'[data-index="'+a.index+'"]')),t=(a=f.extend({type:"checkbox"},a),k.cache[e.key]),n="checked"in a,o=function(e){return"radio"===a.type||(n?a.checked:!e)},t=(layui.each(t,function(e,t){"array"===layui.type(t)||t[i.disabledName]||(Number(a.index)===e||"all"===a.index?(e=t[i.checkName]=o(t[i.checkName]),l[e?"addClass":"removeClass"](E),"radio"===a.type&&l.siblings().removeClass(E)):"radio"===a.type&&delete t[i.checkName])}),l.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[a.type]||"checkbox")+'"]:not(:disabled)'));t.prop("checked",o(t.last().prop("checked"))),e.syncCheckAll(),e.renderForm(a.type)},i.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(d=l.field,t.layHeader.find("th").each(function(e,t){var a=f(this),i=a.data("field");if(i===l.field)return l.field=a,d=i,!1}));try{var d=d||l.field.data("field"),r=l.field.data("key");if(t.sortKey&&!l.pull&&d===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+r).find(_);t.layHeader.find("th").find(_).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){b.error("Table modules: sort field '"+d+"' not matched")}t.sortKey={field:d,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,d,null,!0):"desc"===l.type?e=layui.sort(o,d,!0,!0):(e=layui.sort(o,k.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:d,type:l.type},layui.event.call(l.field,N,"sort("+n+")",f.extend({config:i},i.initSort)))},i.prototype.loading=function(e){var t=this;t.config.loading&&(e?(t.layInit&&t.layInit.remove(),delete t.layInit,t.layBox.find(".layui-table-init").remove()):(t.layInit=f(['
                                              ','',"
                                              "].join("")),t.layBox.append(t.layInit)))},i.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];r.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),!0})},i.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=d.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap&&(l=f(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135),1
                                              ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(A).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0');a.html(t),u.height&&a.css("max-height",u.height-(s.layTool.outerHeight()||50)),i.find("."+H)[0]||i.append(a),s.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),I.trigger("table.tool.panel.remove"),p.close(s.tipsIndex),t){case"LAYTABLE_COLS":n({list:(a=[],s.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
                                            • "+(t.fieldTitle||t.title||t.field)+"
                                            • ").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=f(e.elem),t=this.checked,a=e.data("key"),i=s.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,s.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](R),l!=i.hide&&s.setParentCol(!t,e),s.resize(),layui.event.call(this,N,"colToggled("+c+")",{col:i,config:u}))})}});break;case"LAYTABLE_EXPORT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});x.ie?p.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):n({list:['
                                            • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
                                            • ','
                                            • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
                                            • '].join(""),done:function(e,t){t.on("click",function(){var e=f(this).data("type");k.exportFile.call(s,u.id,null,e)})}});break;case"LAYTABLE_PRINT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});var o=window.open("about:blank","_blank"),d=[""].join(""),r=f(s.layHeader.html());r.append(s.layMain.find("table").html()),r.append(s.layTotal.find("table").html()),r.find("th.layui-table-patch").remove(),r.find("thead>tr>th."+M).filter(function(e,t){return!f(t).children("."+z).length}).remove(),r.find("tbody>tr>td."+M).remove(),o.document.write(d+r.prop("outerHTML")),o.document.close(),layui.device("edg").edg?(o.onafterprint=o.close,o.print()):(o.print(),o.close())}layui.event.call(this,N,"toolbar("+c+")",f.extend({event:t,config:u},{}))}),s.layHeader.on("click","*[lay-event]",function(e){var t=f(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=s.col(t);layui.event.call(this,N,"colTool("+c+")",f.extend({event:a,config:u,col:t},{}))}),s.layPagebar.on("click","*[lay-event]",function(e){var t=f(this).attr("lay-event");layui.event.call(this,N,"pagebar("+c+")",f.extend({event:t,config:u},{}))}),e.on("mousemove",function(e){var t=f(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(d.allowResize=t.width()-e<=10,o.css("cursor",d.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||o.css("cursor","")}).on("mousedown",function(e){var t,a=f(this);d.allowResize&&(t=a.data("key"),e.preventDefault(),d.offset=[e.clientX,e.clientY],s.cssRules(t,function(e){var t=e.style.width||a.outerWidth();d.rule=e,d.ruleWidth=parseFloat(t),d.minWidth=a.data("minwidth")||u.cellMinWidth,d.maxWidth=a.data("maxwidth")||u.cellMaxWidth}),a.data(F,d),w.eventMoveElem=a)}),w.docEvent||I.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(F)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+L).attr("lay-id"),(a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),p.close(s.tipsIndex))))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+L).attr("lay-id"),(a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),d={},o.css("cursor",""),a.scrollPatch(),t.removeData(F),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],N,"colResized("+n+")",{col:l,config:a.config})})))}),w.docEvent=!0,e.on("click",function(e){var t=f(this),a=t.find(_),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");s.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(_+" .layui-edge ").on("click",function(e){var t=f(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?s.sort({field:t,type:"asc",fromEvent:!0}):s.sort({field:t,type:"desc",fromEvent:!0})}),s.commonMember=function(e){var t=f(this).parents("tr").eq(0).data("index"),r=s.layBody.find('tr[data-index="'+t+'"]'),c=(c=k.cache[s.key]||[])[t]||{},a={tr:r,config:u,data:k.clearCacheKey(c),dataCache:c,index:t,del:function(){k.cache[s.key][t]=[],r.remove(),s.scrollPatch()},update:function(e,d){e=e||{},layui.each(e,function(i,l){var n=r.children('td[data-field="'+i+'"]'),o=n.children(y);c[i]=a.data[i]=l,s.eachCols(function(e,t){var a;t.field==i?(o.html(T.call(s,{item3:t,content:l,tplData:f.extend({LAY_COL:t},c)})),n.data("content",l)):d&&(t.templet||t.toolbar)&&(e=r.children('td[data-field="'+(t.field||e)+'"]'),a=c[t.field],e.children(y).html(T.call(s,{item3:t,content:a,tplData:f.extend({LAY_COL:t},c)})),e.data("content",a))})}),s.renderForm()},setRowChecked:function(e){s.setRowChecked(f.extend({index:t},e))}};return f.extend(a,e)}),a=(s.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=(s.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?s.setRowChecked({index:"all",checked:l}):(s.setRowChecked({index:i,checked:l}),layui.stope(e)),layui.event.call(t[0],N,"checkbox("+c+")",r.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return s.col(a.data("key"))}})))}),s.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;s.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],N,"radio("+c+")",r.call(t[0],{checked:i,getCol:function(){return s.col(a.data("key"))}}))}),s.layBody.on("mouseenter","tr",function(){var e=f(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").addClass(j)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").removeClass(j)}).on("click","tr",function(e){var t=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");f(e.target).is(t)||f(e.target).closest(t)[0]||a.call(this,"row")}).on("dblclick","tr",function(){a.call(this,"rowDouble")}).on("contextmenu","tr",function(e){u.defaultContextmenu||e.preventDefault(),a.call(this,"rowContextmenu")}),function(e){var t=f(this);t.data("off")||layui.event.call(this,N,e+"("+c+")",r.call(t.children("td")[0]))}),n=function(e,t){var a,i,l,n;(e=f(e)).data("off")||(a=e.data("field"),n=e.data("key"),n=s.col(n),i=e.closest("tr").data("index"),i=k.cache[s.key][i],l=e.children(y),(n="function"==typeof n.edit?n.edit(i):n.edit)&&((n=f("textarea"===n?'':''))[0].value=e.data("content")||i[a]||l.text(),e.find("."+W)[0]||e.append(n),n.focus(),t&&layui.stope(t)))},i=(s.layBody.on("change","."+W,function(){var e=f(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[s.key][e],l=r.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return s.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],N,"edit("+c+")",l)}).on("blur","."+W,function(){f(this).remove()}),s.layBody.on(u.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),s.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=f(this),a=t.children(y);t.data("off")||t.parent().hasClass(S)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.outerWidth()||0
                                              '))},l=function(e){var t=f(this),a=t.parent(),i=a.data("key"),l=s.col(i),n=a.parent().data("index"),a=a.children(y),o="layui-table-cell-c",d=f('');"tips"===(l.expandedMode||u.cellExpandedMode)?s.tipsIndex=p.tips(['
                                              ',a.html(),"
                                              ",''].join(""),a[0],{tips:[3,""],time:-1,anim:-1,maxWidth:x.ios||x.android?300:s.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){p.close(t)})}}):(s.elem.find("."+o).trigger("click"),s.cssRules(i,function(e){var t=e.style.width,a=l.expandedWidth||u.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],f(this).children().each(function(e){var t=f(this),a=t.attr("lay-data"),a=r.options(this,{attr:a?"lay-data":null,errorText:d+(a||t.attr("lay-options"))}),t=f.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=f(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),c(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')))}),d.push(n.join(","))}),c&&layui.each(c.dataTotal,function(e,t){r[t.field]||i.push('"'+(t.total||"")+'"')}),o.join(",")+"\r\n"+d.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t)))})})),f("."+H).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return e=C(e),e.reload(t,a,i),w.call(e)},k.reloadData=function(){var a=f.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new i(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=f.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),n(N,k)});layui.define(["table"],function(e){"use strict";var B=layui.$,x=layui.form,j=layui.table,y=layui.hint(),P={config:{},on:j.on,eachCols:j.eachCols,index:j.index,set:function(e){var t=this;return t.config=B.extend({},t.config,e),t},resize:j.resize,getOptions:j.getOptions,hideCol:j.hideCol,renderData:j.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){P.reloadData(n,e,t)}}},F=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},L="layui-hide",q=".layui-table-main",R=".layui-table-fixed-l",Y=".layui-table-fixed-r",l="layui-table-checked",h="layui-table-tree",H="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",s="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",z="LAY_EXPAND",X="LAY_HAS_EXPANDED",V="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=function(e){var t=this;t.index=++P.index,t.config=B.extend(!0,{},t.config,P.config,e),t.init(),t.render()},f=function(n,i,e){var l=j.cache[n];layui.each(e||l,function(e,t){var a=t[H];-1!==a.indexOf("-")&&(l[a]=t),t[i]&&f(n,i,t[i])})},r=function(l,a,e){var r=F(l),d=("reloadData"!==e&&(r.status={expand:{}}),B.extend(!0,{},r.getOptions(),a)),n=d.tree,o=n.customName.children,i=n.customName.id,c=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,j.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},d.cols),a.parseData),u=a.done;d.url?e&&(!c||c.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(c)&&(a=c.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=r.flatToTree(a[t])),p(a[t],function(e){e[z]=z in e?e[z]:e[i]!==undefined&&r.status.expand[e[i]]},o),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),r.initData(a[t]),a},a.parseData.mod=!0):(a.data=a.data||[],n.data.isSimpleData&&(a.data=r.flatToTree(a.data)),r.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n=(a||delete r.isExpandAll,this.elem.next()),i=(r.updateStatus(null,{LAY_HAS_EXPANDED:!1}),f(l,o),n.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(i.length&&(e=P.checkStatus(l),i.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!a&&d.autoSort&&d.initSort&&d.initSort.type&&P.sort(l),r.renderTreeTable(n),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0)};t.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),j.render(B.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,r(a,e)},t.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},t.prototype.getOptions=function(){return this.tableIns?j.getOptions(this.tableIns.config.id):this.config},t.prototype.flatToTree=function(e){var a,n,i,t,l,r,d,o=this.getOptions(),c=o.tree,u=c.customName,o=o.id;return e=e||j.cache[o],o=e,a=u.id,n=u.pid,i=u.children,t=c.data.rootPid,a=a||"id",n=n||"parentId",i=i||"children",d={},layui.each(o,function(e,t){l=a+t[a],d[l]=B.extend({},t),d[l][i]=[]}),layui.each(d,function(e,t){(r=a+t[n])&&d[r]&&d[r][i].push(t)}),Object.values(d).filter(function(e){return t?e[n]===t:!e[n]})},t.prototype.treeToFlat=function(e,n,i){var l=this,r=l.getOptions().tree.customName,d=r.children,o=r.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=B.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[d],t[r.id],e))}),c},t.prototype.getTreeNode=function(e){var t=this;if(!e)return y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e");var a=t.getOptions(),n=a.tree;a.id,n.customName;return{data:e,dataIndex:e[H],getParentNode:function(){return t.getNodeByIndex(e[s])}}},t.prototype.getNodeByIndex=function(t){var e=this,a=e.getNodeDataByIndex(t);if(!a)return y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e");var n=e.getOptions(),i=(n.tree.customName.parent,n.id),n={data:a,dataIndex:a[H],getParentNode:function(){return e.getNodeByIndex(a[s])},update:function(e){return P.updateNode(i,t,e)},remove:function(){return P.removeNode(i,t)},expand:function(e){return P.expandNode(i,B.extend({},e,{index:t}))},setChecked:function(e){return P.setRowChecked(i,B.extend({},e,{index:t}))}};return n.dataIndex=t,n},t.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=P.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[H],!0}),i)return this.getNodeByIndex(i)},t.prototype.getNodeDataByIndex=function(a,e,t){var n=this.getOptions(),i=n.tree,l=n.id,r=j.cache[l][a];if("delete"!==t&&r)return B.extend(r,t),e?B.extend({},r):r;for(var r=this.getTableData(),d=(a+="").split("-"),o=r,c=n.url||1
                                              ');var D=function(e){y[V]="success",y[s.children]=e,c.initData(y[s.children],y[H]),J(t,!0,!p&&n,i,l)},T=b.format;if("function"===layui.type(T))return T(y,o,D),h;var k=B.extend({},b.where||o.where),T=b.autoParam,T=(layui.each(T,function(e,t){t=t.split("=");k[t[0].trim()]=y[(t[1]||t[0]).trim()]}),b.contentType||o.contentType),_=(T&&0==T.indexOf("application/json")&&(k=JSON.stringify(k)),b.method||o.method),O=b.dataType||o.dataType,w=b.jsonpCallback||o.jsonpCallback,S=b.headers||o.headers,A=b.parseData||o.parseData,E=b.response||o.response;return B.ajax({type:_||"get",url:I,contentType:T,data:k,dataType:O||"json",jsonpCallback:w,headers:S||{},success:function(e){(e="function"==typeof A?A.call(o,e)||e:e)[E.statusName]!=E.statusCode?(y[V]="error",g.html('')):D(e[E.dataName])},error:function(e,t){y[V]="error","function"==typeof o.error&&o.error(e,t)}}),h}m=y[X]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((b=o.initSort).type?layui.sort(v,b.field,"desc"===b.type,!0):layui.sort(v,j.config.indexName,null,!0)),c.initData(y[s.children],y[H]),_=j.getTrHtml(d,v,null,null,e),N={trs:B(_.trs.join("")),trs_fixed:B(_.trs_fixed.join("")),trs_fixed_r:B(_.trs_fixed_r.join(""))},C=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){N.trs.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":C}),N.trs_fixed.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":C}),N.trs_fixed_r.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":C})}),r.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(N.trs),r.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(N.trs_fixed),r.find(Y).find('tbody tr[lay-data-index="'+e+'"]').after(N.trs_fixed_r),c.renderTreeTable(N.trs,C),n&&!p&&layui.each(v,function(e,t){J({dataIndex:t[H],trElem:r.find('tr[lay-data-index="'+t[H]+'"]').first(),tableViewElem:r,tableId:d,options:o},a,n,i,l)}))}else c.isExpandAll=!1,n&&!p?(layui.each(v,function(e,t){J({dataIndex:t[H],trElem:r.find('tr[lay-data-index="'+t[H]+'"]').first(),tableViewElem:r,tableId:d,options:o},a,n,i,l)}),r.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")).addClass(L)):(I=c.treeToFlat(v,y[s.id],e),r.find(I.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")).addClass(L));return U("resize-"+d,function(){P.resize(d)},0)(),l&&"loading"!==y[V]&&(T=u.callback.onExpand,"function"===layui.type(T)&&T(d,y,x)),h},g=(P.expandNode=function(e,t){var a,n,i,e=F(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),J({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},P.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=F(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),r=i.customName.isParent,d=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=P.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[r]&&!t[V])return!(c=!1)}),!c)return void layui.each(P.getData(a),function(e,t){P.expandNode(a,{index:t[H],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[r]&&!t[X])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[r]||o)&&(e[z]=!0,e[d]!==undefined&&(t.status.expand[e[d]]=!0))}),l.find('tbody tr[data-level!="0"]').removeClass(L),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[r]||o)&&(e[z]=!0,e[X]=!0,e[d]!==undefined&&(t.status.expand[e[d]]=!0))}),n.initSort&&n.initSort.type&&n.autoSort)return P.sort(a);var s,n=j.getTrHtml(a,e),f={trs:B(n.trs.join("")),trs_fixed:B(n.trs_fixed.join("")),trs_fixed_r:B(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[H].split("-").length-1;s={"data-index":t[H],"lay-data-index":t[H],"data-level":a},f.trs.eq(e).attr(s),f.trs_fixed.eq(e).attr(s),f.trs_fixed_r.eq(e).attr(s)}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[r]||o)&&(e[z]=!1,e[d]!==undefined&&(t.status.expand[e[d]]=!1))}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(L),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);P.resize(a)}},t.prototype.renderTreeTable=function(e,t,a){var n=this,i=n.getOptions(),l=i.elem.next(),r=(l.hasClass(h)||l.addClass(h),i.id),d=i.tree||{},o=(d.data,d.view||{}),c=d.customName||{},u=c.isParent,s=(l.attr("lay-filter"),n),f=((t=t||0)||(l.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(j.cache[r],function(e,t){l.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[H]),l.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[H]),l.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[H])})),null),y=c.name,p=o.indent||14;if(layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=B(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=l.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[z]&&a[u]&&((f=f||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
                                              ',a[z]?o.flexIconOpen:o.flexIconClose,"
                                              ",o.showIcon?'
                                              '+(a[c.icon]||o.icon||(a[u]?a[z]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
                                              ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),J({trElem:i},null,null,null,!0)}))}),!t&&d.view.expandAllDefault&&n.isExpandAll===undefined)return P.expandAll(r,!0);!1!==a&&f?layui.each(f,function(e,t){e=l.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),J({trElem:e.first()},!0)}):U("renderTreeTable-"+r,function(){i.hasNumberCol&&g(n),x.render(B('.layui-table-tree[lay-id="'+r+'"]'))},0)()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),r=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(j.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[H]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),r.eq(e).find(".laytable-cell-numbers").html(n))})}),p=(t.prototype.render=function(e){var t=this;t.tableIns=j["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,B.extend(!0,{},t.config)),t.config=t.tableIns.config},t.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),r(n.getOptions().id,e,a||!0),n.config=B.extend(t,{},n.config,e),n.render(a)},P.reloadData=function(){var e=B.extend(!0,[],arguments);return e[3]="reloadData",P.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):B.extend(t,a),l.push(B.extend({},t)),i||(l=l.concat(p(t[n],a,n,i)))}),l}),o=(t.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||j.cache[n.id],p(e,t,i.customName.children,a)},t.prototype.getTableData=function(){var e=this.getOptions();return j.cache[e.id]},P.updateStatus=function(e,t,a){var e=F(e),n=e.getOptions();return a=a||(n.url?j.cache[n.id]:n.data),e.updateStatus(a,t)},P.sort=function(e){var t=F(e);t&&t.getOptions().autoSort&&(t.initData(),P.renderData(e))},function(n){var t=n.config.id,i=F(t),a=n.data=P.getNodeDataByIndex(t,n.index),l=a[H],r=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(B.extend(i.getNodeDataByIndex(l),e[0]),r.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){P.removeNode(t,a)},n.setRowChecked=function(e){P.setRowChecked(t,{index:a,checked:e})}}),c=(P.updateNode=function(e,a,t){var n,i,l,r,d,o=F(e);o&&((r=o.getOptions()).tree,r=(n=r.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=r.attr("data-index"),l=r.attr("data-level"),t&&(r=o.getNodeDataByIndex(a,!1,t),d=j.getTrHtml(e,[r]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(B(d[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l)))},P.removeNode=function(e,t){var a,n,i,l,r,d=F(e);d&&(r=(a=d.getOptions()).tree,n=a.elem.next(),i=[],t=d.getNodeDataByIndex("string"===layui.type(t)?t:t[H],!1,"delete"),l=d.getNodeDataByIndex(t[s]),d.updateCheckStatus(l),l=d.treeToFlat([t],t[r.customName.pid],t[s]),layui.each(l,function(e,t){i.push('tr[lay-data-index="'+t[H]+'"]')}),n.find(i.join(",")).remove(),r=d.initData(),layui.each(d.treeToFlat(r),function(e,t){t[m]&&t[m]!==t[H]&&n.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[H],"lay-data-index":t[H]})}),layui.each(j.cache[e],function(e,t){n.find('tr[data-level="0"][lay-data-index="'+t[H]+'"]').attr("data-index",e)}),a.hasNumberCol&&g(d),P.resize(e))},P.addNodes=function(e,t){var a=F(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),r=j.config.checkName,d=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(d="number"===layui.type(d)?d.toString():d)?a.getNodeDataByIndex(d):null,o="number"===layui.type(o)?o:-1,c=B.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){r in t||(t[r]=u[r])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[X]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")).remove(),a.initData(),u[X]=!1,u[V]="local",J({trElem:l.find('tr[lay-data-index="'+d+'"]')},!0)}else{var p=j.cache[e].splice(-1===o?j.cache[e].length:o);if(j.cache[e]=j.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(j.cache[e]))):n.data=j.cache[e]),a.initData(),l.find(".layui-none").length)return j.renderData(e),c;var x,f=j.getTrHtml(e,c),h={trs:B(f.trs.join("")),trs_fixed:B(f.trs_fixed.join("")),trs_fixed_r:B(f.trs_fixed_r.join(""))},d=(layui.each(c,function(e,t){x={"data-index":t[H],"lay-data-index":t[H],"data-level":"0"},h.trs.eq(e).attr(x),h.trs_fixed.eq(e).attr(x),h.trs_fixed_r.eq(e).attr(x)}),parseInt(c[0][H])-1),y=l.find(q),n=l.find(R),f=l.find(Y);-1==d?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(d=p[0][m],y.find('tr[data-level="0"][data-index="'+d+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+d+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+d+'"]').before(h.trs_fixed_r)),layui.each(j.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[H]+'"]').attr("data-index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")))}return a.updateCheckStatus(u),P.resize(e),t&&l.find(q).find('tr[lay-data-index="'+c[0][H]+'"]').get(0).scrollIntoViewIfNeeded(),c}},P.checkStatus=function(e,n){var i,t,a,l=F(e);if(l)return l=l.getOptions().tree,i=j.config.checkName,t=P.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each("all"===l.data.cascade?j.cache[e]:P.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},P.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&P.sort(e)}),P.on("row",function(e){e.config.elem.next().hasClass(h)&&o(e)}),P.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),(t.tree||{}).view.dblClickExpand&&J({trElem:e.tr.first()},null,null,null,!0))}),P.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),P.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),P.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),e.field===t.tree.customName.name&&((a={})[e.field]=e.value,e.update(a)))}),P.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=F(t),o(e),c.call(a,e.tr,e.checked))}),t.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=B(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},t.prototype.updateCheckStatus=function(e,t){var i=this,a=i.getOptions();if(!a.hasChecboxCol)return!1;var n=a.tree,l=a.id,r=a.elem.next(),d=j.config.checkName,o=n.data.cascade,c=(("all"===o||"parent"===o)&&e&&(o=i.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(o,function(e,t){var a=r.find('tr[lay-data-index="'+t[H]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[d];i.setRowCheckedClass(a.closest("tr"),n),x.render(a.prop({checked:n,indeterminate:t[b]}))})),!0),u=!1,e=(e="all"===n.data.cascade?j.cache[l]:P.getData(l,!0)).filter(function(e){return!e[a.disabledName]});return layui.each(e,function(e,t){if((t[d]||t[b])&&(u=!0),t[d]||(c=!1),u&&!c)return!0}),u=u&&!c,x.render(r.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:c,indeterminate:u})),c},t.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=j.config.checkName,t=t.customName.children,r=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
                                              '+i.text.none+"
                                              "),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(F),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(F)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(l,e){var c=this,r=c.config,d=r.customName,e=e||r.data;layui.each(e,function(e,i){var a=i[d.children]&&0"),t=p(['
                                              ','
                                              ','
                                              ',r.showLine?a?'':'':'',r.showCheckbox?'':"",r.isJump&&i.href?''+(i[d.title]||i.label||r.text.defaultNodeName)+"":''+(i[d.title]||i.label||r.text.defaultNodeName)+"","
                                              ",function(){if(!r.edit)return"";var a={add:'',update:'',del:''},n=['
                                              '];return!0===r.edit&&(r.edit=["update","del"]),"object"==typeof r.edit?(layui.each(r.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
                                              "):void 0}(),"
                                              "].join(""));a&&(t.append(n),c.tree(n,i[d.children])),l.append(t),t.prev("."+m)[0]&&t.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),a||t.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),c.spread(t,i),r.showCheckbox&&(i.checked&&c.checkids.push(i[d.id]),c.checkClick(t,i)),r.edit&&c.operate(t,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+x),i=e.children("."+b),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+k),e=e.find("."+g),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+w),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(N)?(n.removeClass(N),i.slideUp(200),a.removeClass(v).addClass(C),l.updateFieldValue(t,"spread",!1)):(n.addClass(N),i.slideDown(200),a.addClass(v).removeClass(C),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+m)).removeClass(N),i.children("."+w).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(v).addClass(C))):s="normal"}),e.on("click",function(){p(this).hasClass(o)||(s=n.hasClass(N)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+w)[0]||e.find("."+w).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+m)[0]&&(a=(e=e.parent("."+w)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+x).children("."+b).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+x),h=e.children("."+b);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+w),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+k).addClass("layui-tree-icon"),h.find("."+k).children(".layui-icon").addClass(C).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(f),r.append('
                                              '));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+w),[c]),o.showLine&&(n[0]?(n.hasClass(L)||n.addClass(L),r.find("."+w).each(function(){p(this).children("."+m).last().addClass(F)}),(n.children("."+m).last().prev().hasClass(F)?n.children("."+m).last().prev():n.children("."+m).last()).removeClass(F),!r.parent("."+w)[0]&&r.next()[0]&&n.children("."+m).last().removeClass(F)):(l=r.siblings("."+m),a=1,c=r.parent("."+w),layui.each(l,function(e,i){p(i).children("."+w)[0]||(a=0)}),1==a?(l.children("."+w).addClass(T),l.children("."+w).children("."+m).removeClass(F),r.children("."+w).addClass(T),c.removeClass(L),c.children("."+m).last().children("."+w).children("."+m).last().addClass(F)):r.children("."+w).children("."+m).addClass(F))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+w).children("."+m).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+g).html(),h.children("."+g).html(""),h.append(''),h.children(".layui-tree-editInput").val(l).focus(),i=function(e){var i=(i=e.val().trim())||o.text.defaultNodeName;e.remove(),h.children("."+g).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d[u.title]||"")+'" \u5417\uff1f',function(e){if(o.operate&&o.operate(t),t.status="remove",y.close(e),!r.prev("."+m)[0]&&!r.next("."+m)[0]&&!r.parent("."+w)[0])return r.remove(),void s.elem.append(s.elemNone);var l,a,i;r.siblings("."+m).children("."+x)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+m)[0]&&(i=e.siblings("."+m).children("."+x),a=(e=e.parent("."+w).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+m)))))})(r),o.showLine&&(e=r.siblings("."+m),a=1,i=r.parent("."+w),layui.each(e,function(e,i){p(i).children("."+w)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(L),e.children("."+w).addClass(T),e.children("."+w).children("."+m).removeClass(F)),(r.next()[0]?i.children("."+m).last():r.prev()).children("."+w).children("."+m).last().addClass(F),r.next()[0]||r.parents("."+m)[1]||r.parents("."+m).eq(0).next()[0]||r.prev("."+m).addClass(F)):!r.next()[0]&&r.hasClass(F)&&r.prev().addClass(F))):(e=r.parent("."+w).prev(),o.showLine?(e.find("."+k).removeClass("layui-tree-icon"),e.find("."+k).children(".layui-icon").removeClass(v).addClass("layui-icon-file"),(i=e.parents("."+w).eq(0)).addClass(L),i.children("."+m).each(function(){p(this).children("."+w).children("."+m).last().addClass(F)})):e.find(".layui-tree-iconArrow").addClass(f),r.parents("."+m).eq(0).removeClass(N),r.parent("."+w).remove()),r.remove()})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+g).each(function(){var i,e=p(this).parents("."+x);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+w)[0]&&i(e.parent("."+w).parent("."+m))})(e.parent("."+m)))}),e.find("."+x).each(function(){var e=p(this).parent("."+m);e.hasClass("layui-tree-searchShow")||e.addClass(f)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+x).each(function(){p(this).parent("."+m).removeClass("layui-tree-searchShow "+f)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+m).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+x).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var s=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=s.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},d="layui-hide",h="layui-btn-disabled",r="layui-none",c="layui-transfer-box",u="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
                                              ','
                                              ','","
                                              ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
                                                ',"
                                                "].join("")},p=['
                                                ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
                                                ','",'","
                                                ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
                                                "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=s.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=s.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=s(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=s(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+c),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
                                              • ",'',"
                                              • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(r){var c=this,o=c.config;r=r||{},c.layBox.each(function(e){var t=s(this),a=t.find("."+f),t=t.find("."+u).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=s(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),c.layBtn.eq(e)[l?"removeClass":"addClass"](h),r.stopNone||(i=a.children("li:not(."+d+")").length,c.noneView(a,i?"":o.text.none))}),c.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=s('

                                                '+(t||"")+"

                                                ");e.find("."+r)[0]&&e.find("."+r).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){s(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=s.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),r=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+c).find("."+f).append(t.clone()),t.remove(),r.push(a[0].value),i.setValue()):l.each(function(e){s(this).find("."+f).children("li").each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+c).find("."+f).append(e.clone()),e.remove(),r.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+c).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(r),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=s(this).prev(),t=e[0].checked,a=e.parents("."+c).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=s(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent();a[0].disabled||n.transfer(i.data("index"),t)}),n.layBtn.on("click",function(){var e=s(this),t=e.data("index");e.hasClass(h)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=s(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](d),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+d).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,t=layui.lay,o=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,r,e,i)}}),r="carousel",d="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",m="layui-carousel-next",l="layui-carousel-arrow",f="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,o.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(d),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+l)[0]&&e.elem.find("."+l).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
                                                  ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
                                                "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+f)[0]&&n.elem.find("."+f).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(m),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(d+" "+c+" "+m+" "+s+" "+u),t.eq(a.index).addClass(d),n.haveSlide=!1},300),n.elemInd.find("li").eq(a.index).addClass(d).siblings().removeClass(d),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,r,"change("+l+")",e))},i.prototype.events=function(){var e=this,i=e.config;i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){"always"!==e.config.autoplay&&clearInterval(e.timer)}).on("mouseleave",function(){"always"!==e.config.autoplay&&e.autoplay()}),i.elem.data("haveEvents",!0))},o.render=function(e){return new i(e)},e(r,o)});layui.define(["jquery","lay"],function(e){"use strict";var s=layui.jquery,r=layui.lay,c={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var a=this;return a.config=s.extend({},a.config,e),a},on:function(e,a){return layui.onevent.call(this,l,e,a)}},l="rate",f="layui-icon-rate",h="layui-icon-rate-solid",o="layui-icon-rate-half",u="layui-icon-rate-solid layui-icon-rate-half",v="layui-icon-rate layui-icon-rate-half",a=function(e){var a=this;a.index=++c.index,a.config=s.extend({},a.config,c.config,e),a.render()};a.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},a.prototype.render=function(){var e=this,a=e.config,l=s(a.elem);if(1a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
                                                  "),t=1;t<=a.length;t++){var o='
                                                • ";a.half&&parseInt(a.value)!==a.value&&t==Math.ceil(a.value)?n=n+'
                                                • ":n+=o}n+="
                                                "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,u=l.next(".layui-rate");u[0]&&u.remove(),e.elemTemp=s(n),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var i=this.config,n=this.elemTemp,t=n.find("i").width();n.children("li").each(function(e){var a=e+1,l=s(this);l.on("click",function(e){i.value=a,i.half&&e.pageX-s(this).offset().left<=t/2&&(i.value=i.value-.5),i.text&&n.next("span").text(i.value+"\u661f"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),l.on("mousemove",function(e){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+a+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&e.pageX-s(this).offset().left<=t/2&&l.children("i").addClass(o).removeClass(h)}),l.on("mouseleave",function(){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+Math.floor(i.value)+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&parseInt(i.value)!==i.value&&n.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})})},a.prototype.events=function(){},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(l){"use strict";var g=layui.$,e=function(l){};e.prototype.load=function(l){var t,i,o,n,e,r,a,c,m,s,u,f,y,d=this,p=0,h=g((l=l||{}).elem);if(h[0])return e=g(l.scrollElem||document),r=l.mb||50,a=!("isAuto"in l)||l.isAuto,c=l.end||"\u6ca1\u6709\u66f4\u591a\u4e86",m=l.scrollElem&&l.scrollElem!==document,s="\u52a0\u8f7d\u66f4\u591a",u=g('"),h.find(".layui-flow-more")[0]||h.append(u),f=function(l,e){l=g(l),u.before(l),(e=0==e||null)?u.html(c):u.find("a").html(s),i=e,t=null,o&&o()},y=function(){t=!0,u.find("a").html(''),"function"==typeof l.done&&l.done(++p,f)},y(),u.find("a").on("click",function(){g(this);i||t||y()}),l.isLazyimg&&(o=d.lazyimg({elem:l.elem+" img",scrollElem:l.scrollElem})),a&&e.on("scroll",function(){var e=g(this),o=e.scrollTop();n&&clearTimeout(n),!i&&h.width()&&(n=setTimeout(function(){var l=(m?e:g(window)).height();(m?e.prop("scrollHeight"):document.documentElement.scrollHeight)-o-l<=r&&(t||y())},100))}),d},e.prototype.lazyimg=function(l){var e,c=this,m=0,s=g((l=l||{}).scrollElem||document),u=l.elem||"img",f=l.scrollElem&&l.scrollElem!==document,y=function(e,l){var o,t=s.scrollTop(),l=t+l,i=f?e.offset().top-s.offset().top+t:e.offset().top;t<=i&&i<=l&&e.attr("lay-src")&&(o=e.attr("lay-src"),layui.img(o,function(){var l=c.lazyimg.elem.eq(m);e.attr("src",o).removeAttr("lay-src"),l[0]&&n(l),m++},function(){c.lazyimg.elem.eq(m);e.removeAttr("lay-src")}))},n=function(l,e){var o=(f?e||s:g(window)).height(),t=s.scrollTop(),i=t+o;if(c.lazyimg.elem=g(u),l)y(l,o);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},O=layui.code?layui.code.index+1e4:0,R=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var a={config:l=A.extend(!0,{},j,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,A.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},t=A(l.elem);if(1',l.ln?['
                                                ',S.digit(a+1)+".","
                                                "].join(""):"",'
                                                ',e||" ","
                                                ",""].join("")})}});if("reloadCode"===e)return h=c.join(""),h=t(h),n.children(".layui-code-wrap").html(h.html),a;var s,r,u,y,E,p,f=layui.code.index=++O,h=(n.attr("lay-code-index",f),W.CDDE_DATA_CLASS in n.data()),v=(h&&n.attr("class",n.data(W.CDDE_DATA_CLASS)||""),h||n.data(W.CDDE_DATA_CLASS,n.attr("class")),o=c.join("")),m=("function"==typeof l.codeParse&&(v=o=l.codeParse(v)),{copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var a=S.unescape(o);lay.clipboard.writeText({text:a,done:function(){N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}),"function"==typeof l.onCopy&&l.onCopy(a)}}}),L=(function x(){var e=n.parent("."+W.ELEM_PREVIEW),a=e.children("."+W.ELEM_TAB),t=e.children("."+W.ELEM_ITEM+"-preview");return a.remove(),t.remove(),e[0]&&n.unwrap(),x}(),l.preview&&(b="LAY-CODE-DF-"+f,C=l.layout||["code","preview"],s="iframe"===l.preview,E=A('
                                                '),_=A('
                                                '),r=A('
                                                '),p=A('
                                                '),u=A('
                                                '),l.id&&E.attr("id",l.id),E.addClass(l.className),_.attr("lay-filter",b),layui.each(C,function(e,a){var t=A('
                                              • ');0===e&&t.addClass("layui-this"),t.html(l.text[a]),r.append(t)}),A.extend(m,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,a=e.closest("."+W.ELEM_PREVIEW),t="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=A("html,body"),n="layui-scrollbar-hide";e.hasClass(t)?(a.addClass(W.ELEM_FULL),e.removeClass(t).addClass(i),e.attr("title",l[1]),o.addClass(n)):(a.removeClass(W.ELEM_FULL),e.removeClass(i).addClass(t),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){S.openWin({content:o})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=A(this),a=e.data("type"),e={elem:e,type:a,options:l,rawCode:c.join(""),finalCode:S.unescape(o)};m[a]&&"function"==typeof m[a].event&&m[a].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&(l.tools=[].concat(l.tools||[],l.addTools)),layui.each(l.tools,function(e,a){var t="object"==typeof a,i=t?a:m[a]||{className:a,title:[a]},l=i.className||i.type,o=i.title||[""],t=t?i.type||l:a;t&&(m[t]||((a={})[t]=i,A.extend(m,a)),u.append(''))}),n.addClass(W.ELEM_ITEM).wrap(E),_.append(r),l.tools&&_.append(u),n.before(_),s&&p.html(''),y=function(e){var a=e.children("iframe")[0],t=(s&&a?a.srcdoc=o:e.html(c.join("")),{container:e,render:function(){T.render(e.find(".layui-form")),I.render()}});setTimeout(function(){"function"==typeof l.done&&l.done(t)},3)},"preview"===C[0]?(p.addClass(W.ELEM_SHOW),n.before(p),y(p)):n.addClass(W.ELEM_SHOW).after(p),l.previewStyle=[l.style,l.previewStyle].join(""),p.attr("style",l.previewStyle),I.on("tab("+b+")",function(e){var a=A(this),t=A(e.elem).closest("."+W.ELEM_PREVIEW).find("."+W.ELEM_ITEM),e=t.eq(e.index);t.removeClass(W.ELEM_SHOW),e.addClass(W.ELEM_SHOW),"preview"===a.attr("lay-id")&&y(e),w()})),A('')),_=(n.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),l.theme||l.skin),C=(_&&(n.removeClass("layui-code-theme-dark layui-code-theme-light"),n.addClass("layui-code-theme-"+_)),l.highlighter&&n.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),l.encode&&(v=S.escape(v)),t(v)),M=C.lines,D=(n.html(L.html(C.html)),l.ln&&n.append('
                                                '),l.height&&L.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&L.attr("style",function(e,a){return(a||"")+l.codeStyle}),[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,a){e.style["padding-left"]=a+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,a){e.style.width=a+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,a){e.style.width=a+"px"}}]),g=lay.style({target:n[0],id:"DF-code-"+f,text:A.map(A.map(D,function(e){return e.selector}),function(e,a){return['.layui-code-view[lay-code-index="'+f+'"]',e].join(" ")}).join("")}),w=function x(){var e,i;return l.ln&&(e=Math.floor(M.length/100),i=L.children("."+W.ELEM_LINE).last().children("."+W.ELEM_LINE_NUM).outerWidth(),n.addClass(W.ELEM_LN_MODE),e&&i>W.LINE_RAW_WIDTH&&lay.getStyleRules(g,function(e,a){try{D[a].setValue(e,i)}catch(t){}})),x}(),b=(l.header&&((p=A('
                                                ')).html(l.title||l.text.code),n.prepend(p)),A('
                                                '));return l.copy&&!l.preview&&((_=A(['','',""].join(""))).on("click",function(){m.copy.event()}),b.append(_)),l.langMarker&&b.append(''+l.lang+""),l.about&&b.append(l.about),n.append(b),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+f&&"function"==typeof l.allDone&&l.allDone(),a})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss"); \ No newline at end of file +/** v2.8.18-rc.2 | MIT Licensed */;!function(d){"use strict";var t,h=d.document,m={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.8.18-rc.2"},e=d.LAYUI_GLOBAL||{},v=(t=h.currentScript?h.currentScript.src:function(){for(var t,e=h.scripts,o=e.length-1,n=o;01e3*m.timeout/4?g(s+" is not a valid module","error"):void(m.status[s]?y():setTimeout(n,4))}())}function y(){e.push(layui[s]),11e3*m.timeout/4?g(s+" is not a valid module","error"):void("string"==typeof m.modules[s]&&m.status[s]?y():setTimeout(f,4))}():((r=h.createElement("script"))["async"]=!0,r.charset="utf-8",r.src=i+((u=!0===m.version?m.v||(new Date).getTime():m.version||"")?"?v="+u:""),l.appendChild(r),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||b?r.addEventListener("load",function(t){p(t,i)},!1):r.attachEvent("onreadystatechange",function(t){p(t,i)}),m.modules[s]=i)),a},n.prototype.disuse=function(t){var o=this;return t=o.isArray(t)?t:[t],o.each(t,function(t,e){m.status[e],delete o[e],delete N[e],delete o.modules[e],delete m.status[e],delete m.modules[e]}),o},n.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t[t.getPropertyValue?"getPropertyValue":"getAttribute"](e)},n.prototype.link=function(o,n,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof n?n:t)||o).replace(/\.|\//g,""),u="creating",l=0;return i.href=o+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"==typeof n&&function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(o+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):n()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},n.prototype.addcss=function(t,e,o){return layui.link(m.dir+"css/"+t,e,o)},m.callback={},n.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},n.prototype.img=function(t,e,o){var n=new Image;if(n.src=t,n.complete)return e(n);n.onload=function(){n.onload=null,"function"==typeof e&&e(n)},n.onerror=function(t){n.onerror=null,"function"==typeof o&&o(t)}},n.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},n.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),n.prototype.extend=function(t){for(var e in t=t||{})this[e]||this.modules[e]?g(e+" Module already exists","error"):this.modules[e]=t[e];return this},n.prototype.router=n.prototype.hash=function(t){var o={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),o.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),o.search[e[0]]=e[1]):o.path.push(e)})),o},n.prototype.url=function(t){var r,e,o=this;return{pathname:(t?((t.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(r={},e=(t?((t.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),o.each(e,function(t,e){var o=e.indexOf("="),n=o<0?e.substr(0,e.length):0!==o&&e.substr(0,o);n&&(r[n]=0(s.innerHeight||h.documentElement.clientHeight)},d.getStyleRules=function(t,n){if(t)return t=(t=t.sheet||t.styleSheet||{}).cssRules||t.rules,"function"==typeof n&&layui.each(t,function(t,e){if(n(e,t))return!0}),t},d.style=function(t){t=t||{};var e=d.elem("style"),n=t.text||"",i=t.target;if(n)return"styleSheet"in e?(e.setAttribute("type","text/css"),e.styleSheet.cssText=n):e.innerHTML=n,e.id="LAY-STYLE-"+(t.id||(n=d.style.index||0,d.style.index++,"DF-"+n)),i&&((t=d(i).find("#"+e.id))[0]&&t.remove(),d(i).append(e)),e},d.position=function(t,e,n){var i,r,o,c,u,a,f,l;e&&(n=n||{},t!==h&&t!==d("body")[0]||(n.clickType="right"),i="right"===n.clickType?{left:(i=n.e||s.event||{}).clientX,top:i.clientY,right:i.clientX,bottom:i.clientY}:t.getBoundingClientRect(),f=e.offsetWidth,l=e.offsetHeight,r=function(t){return h.body[t=t?"scrollLeft":"scrollTop"]|h.documentElement[t]},o=function(t){return h.documentElement[t?"clientWidth":"clientHeight"]},c="margin"in n?n.margin:5,u=i.left,a=i.bottom,"center"===n.align?u-=(f-t.offsetWidth)/2:"right"===n.align&&(u=u-f+t.offsetWidth),(u=u+f+c>o("width")?o("width")-f-c:u)o()&&(i.top>l+c&&i.top<=o()?a=i.top-l-2*c:n.allowBottomOut||(a=o()-l-2*c)<0&&(a=0)),(f=n.position)&&(e.style.position=f),e.style.left=u+("fixed"===f?0:r(1))+"px",e.style.top=a+("fixed"===f?0:r())+"px",d.hasScrollbar()||(l=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&l.bottom+c>o()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){d.position(t,e,n)},50))))},d.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===h)return{};var t=d(t),n=e.attr||"lay-options",t=t.attr(n);try{return new Function("return "+(t||"{}"))()}catch(i){return layui.hint().error(e.errorText||[n+'="'+t+'"',"\n parseerror: "+i].join("\n"),"error"),{}}},d.isTopElem=function(n){var t=[h,d("body")[0]],i=!1;return d.each(t,function(t,e){if(e===n)return i=!0}),i},d.clipboard={writeText:function(t){var e=String(t.text);try{navigator.clipboard.writeText(e).then(t.done)["catch"](t.error)}catch(i){var n=h.createElement("textarea");n.value=e,n.style.position="fixed",n.style.opacity="0",n.style.top="0px",n.style.left="0px",h.body.appendChild(n),n.select();try{h.execCommand("copy"),"function"==typeof t.done&&t.done()}catch(r){"function"==typeof t.error&&t.error(r)}finally{n.remove?n.remove():h.body.removeChild(n)}}}},r.addStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),d.each(t,function(t,e){new RegExp("\\b"+e+"\\b").test(n)||(n=n+" "+e)}),n.replace(/^\s|\s$/,"")},r.removeStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),d.each(t,function(t,e){e=new RegExp("\\b"+e+"\\b");e.test(n)&&(n=n.replace(e,""))}),n.replace(/\s+/," ").replace(/^\s|\s$/,"")},r.fn.find=function(n){var i=[],r="object"==typeof n;return this.each(function(t,e){e=r&&e.contains(n)?n:e.querySelectorAll(n||null);d.each(e,function(t,e){i.push(e)})}),d(i)},r.fn.each=function(t){return d.each.call(this,this,t)},r.fn.addClass=function(n,i){return this.each(function(t,e){e.className=r[i?"removeStr":"addStr"](e.className,n)})},r.fn.removeClass=function(t){return this.addClass(t,!0)},r.fn.hasClass=function(n){var i=!1;return this.each(function(t,e){new RegExp("\\b"+n+"\\b").test(e.className)&&(i=!0)}),i},r.fn.css=function(e,i){var t=this,r=function(t){return isNaN(t)?t:t+"px"};return"string"!=typeof e||i!==undefined?t.each(function(t,n){"object"==typeof e?d.each(e,function(t,e){n.style[t]=r(e)}):n.style[e]=r(i)}):0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e}},i=function(e){return new RegExp(e,"g")},u=function(e,r){var n="Laytpl Error: ";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e},n=function(e,r){var n=this,e=(n.config=n.config||{},n.template=e,function(e){for(var r in e)n.config[r]=e[r]});e(c),e(r)},r=(n.prototype.tagExp=function(e,r,n){var c=this.config;return i((r||"")+c.open+["#([\\s\\S])+?","([^{#}])*?"][e||0]+c.close+(n||""))},n.prototype.parse=function(e,r){var n=this,c=n.config,t=e,o=i("^"+c.open+"#",""),p=i(c.close+"$","");if("string"!=typeof e)return e;e='"use strict";var view = "'+(e=e.replace(/\s+|\r|\t|\n/g," ").replace(i(c.open+"#"),c.open+"# ").replace(i(c.close+"}"),"} "+c.close).replace(/\\/g,"\\\\").replace(i(c.open+"!(.+?)!"+c.close),function(e){return e=e.replace(i("^"+c.open+"!"),"").replace(i("!"+c.close),"").replace(i(c.open+"|"+c.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(n.tagExp(),function(e){return'";'+(e=e.replace(o,"").replace(p,"")).replace(/\\(.)/g,"$1")+';view+="'}).replace(n.tagExp(1),function(e){var r='"+laytpl.escape(';return e.replace(/\s/g,"")===c.open+c.close?"":(e=e.replace(i(c.open+"|"+c.close),""),/^=/.test(e)?e=e.replace(/^=/,""):/^-/.test(e)&&(e=e.replace(/^-/,""),r='"+('),r+e.replace(/\\(.)/g,"$1")+')+"')}))+'";return view;';try{return n.cache=e=new Function("d, laytpl",e),e(r,l)}catch(a){return delete n.cache,u(a,t)}},n.prototype.render=function(e,r){e=e||{};var n=this,e=n.cache?n.cache(e,l):n.parse(n.template,e);return"function"==typeof r&&r(e),e},function(e,r){return new n(e,r)});r.config=function(e){for(var r in e=e||{})c[r]=e[r]},r.v="2.0.0",e("laytpl",r)});layui.define(function(e){"use strict";var r=document,u="getElementById",c="getElementsByTagName",a="layui-disabled",t=function(e){var a=this;a.config=e||{},a.config.index=++o.index,a.render(!0)},o=(t.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return e.elem.length===undefined?2:3},t.prototype.view=function(){var e,i,t,n=this.config,r=n.groups="groups"in n?Number(n.groups)||0:5,u=(n.layout="object"==typeof n.layout?n.layout:["prev","page","next"],n.count=Number(n.count)||0,n.curr=Number(n.curr)||1,n.limits="object"==typeof n.limits?n.limits:[10,20,30,40,50],n.limit=Number(n.limit)||10,n.pages=Math.ceil(n.count/n.limit)||1,n.curr>n.pages?n.curr=n.pages:n.curr<1&&(n.curr=1),r<0?r=1:r>n.pages&&(r=n.pages),n.prev="prev"in n?n.prev:"上一页",n.next="next"in n?n.next:"下一页",n.pages>r?Math.ceil((n.curr+(1'+n.prev+"":"",page:function(){var e=[];if(n.count<1)return"";1'+(n.first||1)+"");var a=Math.floor((r-1)/2),t=1n.pages?n.pages:a:r;for(i-t…');t<=i;t++)t===n.curr?e.push('"+t+""):e.push(''+t+"");return n.pages>r&&n.pages>i&&!1!==n.last&&(i+1…'),0!==r)&&e.push(''+(n.last||n.pages)+""),e.join("")}(),next:n.next?''+n.next+"":"",count:'\u5171 '+n.count+" \u6761",limit:(i=['"),refresh:['','',""].join(""),skip:[''+(e="object"==typeof n.skipText?n.skipText:["到第","页","确定"])[0],'',e[1]+'",""].join("")};return['
                                                ',(t=[],layui.each(n.layout,function(e,a){l[a]&&t.push(l[a])}),t.join("")),"
                                                "].join("")},t.prototype.jump=function(e,a){if(e){var t=this,i=t.config,n=e.children,r=e[c]("button")[0],u=e[c]("input")[0],e=e[c]("select")[0],l=function(){var e=Number(u.value.replace(/\s|\D/g,""));e&&(i.curr=e,t.render())};if(a)return l();for(var s=0,p=n.length;si.pages||(i.curr=e,t.render())});e&&o.on(e,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),r&&o.on(r,"click",function(){l()})}},t.prototype.skip=function(t){var i,e;t&&(i=this,e=t[c]("input")[0])&&o.on(e,"keyup",function(e){var a=this.value,e=e.keyCode;/^(37|38|39|40)$/.test(e)||(/\D/.test(a)&&(this.value=a.replace(/\D/,"")),13===e&&i.jump(t,!0))})},t.prototype.render=function(e){var a=this,t=a.config,i=a.type(),n=a.view(),i=(2===i?t.elem&&(t.elem.innerHTML=n):3===i?t.elem.html(n):r[u](t.elem)&&(r[u](t.elem).innerHTML=n),t.jump&&t.jump(t,e),r[u]("layui-laypage-"+t.index));a.jump(i),t.hash&&!e&&(location.hash="!"+t.hash+"="+t.curr),a.skip(i)},{render:function(e){return new t(e).index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(a,e,t){return a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1),this}});e("laypage",o)});!function(i,v){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){D.path&&i.lay&&lay.layui&&lay.layui.link(D.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},d="layui-laydate-id",D={v:"5.5.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:e.laydate_dir||l.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",a=(n?"modules/":"")+"laydate.css?v="+D.v;return n?layui["layui.all"]?"function"==typeof e&&e():layui.addcss(a,e,t):l.link(a,e,t),this}},s=function(){var t=this,e=t.config.id;return(s.that[e]=t).inst={hint:function(e){t.hint.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}},a="laydate",x="layui-this",k="laydate-disabled",h=[100,2e5],T="layui-laydate-static",w="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",C=".laydate-btns-confirm",M="laydate-time-text",L="laydate-btns-time",E="layui-laydate-preview",S="layui-laydate-shade",I=function(e){var t,a=this,n=(a.index=++D.index,a.config=lay.extend({},a.config,D.config,e),lay(e.elem||a.config.elem));return 1\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
                                                \u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
                                                ","
                                                \u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
                                                Please re-select",invalidDate:"Invalid date",formatError:["The date format error
                                                Must be followed\uff1a
                                                ","
                                                It has been reset"],preview:"The selected result"}};return e[this.config.lang]||e.cn},I.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},I.prototype.init=function(){var r=this,o=r.config,e="static"===o.position,t={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};o.elem=lay(o.elem),o.eventElem=lay(o.eventElem),o.elem[0]&&("array"!==layui.type(o.theme)&&(o.theme=[o.theme]),o.fullPanel&&("datetime"!==o.type||o.range)&&delete o.fullPanel,r.rangeStr=o.range?"string"==typeof o.range?o.range:"-":"",r.rangeLinked=!(!o.range||!o.rangeLinked||"date"!==o.type&&"datetime"!==o.type),r.autoCalendarModel=function(){var e=r.rangeLinked;return r.rangeLinked=o.range&&("date"===o.type||"datetime"===o.type)&&(!r.startDate||!r.endDate||r.startDate&&r.endDate&&r.startDate.year===r.endDate.year&&r.startDate.month===r.endDate.month),lay(r.elem)[r.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),r.rangeLinked!=e},r.autoCalendarModel.auto=r.rangeLinked&&"auto"===o.rangeLinked,"array"===layui.type(o.range)&&(r.rangeElem=[lay(o.range[0]),lay(o.range[1])]),t[o.type]||(i.console&&console.error&&console.error("laydate type error:'"+o.type+"' is not supported"),o.type="date"),o.format===t.date&&(o.format=t[o.type]||t.date),r.format=s.formatArr(o.format),o.weekStart&&!/^[0-6]$/.test(o.weekStart)&&(t=r.lang(),o.weekStart=t.weeks.indexOf(o.weekStart),-1===o.weekStart)&&(o.weekStart=0),r.EXP_IF="",r.EXP_SPLIT="",lay.each(r.format,function(e,t){e=new RegExp(c).test(t)?"\\d{"+(new RegExp(c).test(r.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(t)?4:t.length:/^yyyy$/.test(t)?"1,4":/^y$/.test(t)?"1,308":"1,2")+"}":"\\"+t;r.EXP_IF=r.EXP_IF+e,r.EXP_SPLIT=r.EXP_SPLIT+"("+e+")"}),r.EXP_IF_ONE=new RegExp("^"+r.EXP_IF+"$"),r.EXP_IF=new RegExp("^"+(o.range?r.EXP_IF+"\\s\\"+r.rangeStr+"\\s"+r.EXP_IF:r.EXP_IF)+"$"),r.EXP_SPLIT=new RegExp("^"+r.EXP_SPLIT+"$",""),r.isInput(o.elem[0])||"focus"===o.trigger&&(o.trigger="click"),o.elem.attr("lay-key",r.index),o.eventElem.attr("lay-key",r.index),o.elem.attr(d,o.id),o.mark=lay.extend({},o.calendar&&"cn"===o.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},o.mark),lay.each(["min","max"],function(e,t){var a=[],n=[];if("number"==typeof o[t])var i=o[t],l=new Date,l=r.newDate({year:l.getFullYear(),month:l.getMonth(),date:l.getDate(),hours:e?23:0,minutes:e?59:0,seconds:e?59:0}).getTime(),e=new Date(i?i<864e5?l+864e5*i:i:l),a=[e.getFullYear(),e.getMonth()+1,e.getDate()],n=[e.getHours(),e.getMinutes(),e.getSeconds()];else if("string"==typeof o[t])a=(o[t].match(/\d+-\d+-\d+/)||[""])[0].split("-"),n=(o[t].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if("object"==typeof o[t])return o[t];o[t]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|n[0],minutes:0|n[1],seconds:0|n[2]}}),r.elemID="layui-laydate"+o.elem.attr("lay-key"),(o.show||e)&&r.render(),e||r.events(),o.value)&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value))},I.prototype.render=function(){var a,n,i,l,r=this,o=r.config,d=r.lang(),s="static"===o.position,y=r.elem=lay.elem("div",{id:r.elemID,"class":["layui-laydate",o.range?" layui-laydate-range":"",r.rangeLinked?" layui-laydate-linkage":"",s?" "+T:"",o.fullPanel?" laydate-theme-fullpanel":"",(a="",lay.each(o.theme,function(e,t){"default"===t||/^#/.test(t)||(a+=" laydate-theme-"+t)}),a)].join("")}),m=r.elemMain=[],c=r.elemHeader=[],u=r.elemCont=[],h=r.table=[],e=r.footer=lay.elem("div",{"class":"layui-laydate-footer"}),t=r.shortcut=lay.elem("ul",{"class":"layui-laydate-shortcut"}),f=(o.zIndex&&(y.style.zIndex=o.zIndex),lay.each(new Array(2),function(e){if(!o.range&&0'+d.timeTips+""),(o.range||"datetime"!==o.type||o.fullPanel)&&f.push(''),lay.each(o.btns,function(e,t){var a=d.tools[t]||"btn";o.range&&"now"===t||(s&&"clear"===t&&(a="cn"===o.lang?"\u91cd\u7f6e":"Reset"),n.push(''+a+""))}),f.push('"),f.join(""))),o.shortcuts&&(y.appendChild(t),lay(t).html((i=[],lay.each(o.shortcuts,function(e,t){i.push('
                                              • '+t.text+"
                                              • ")}),i.join(""))).find("li").on("click",function(e){var t=o.shortcuts[this.dataset.index]||{},t=("function"==typeof t.value?t.value():t.value)||[],n=(layui.isArray(t)||(t=[t]),o.type),t=(lay.each(t,function(e,t){var a=[o.dateTime,r.endDate][e];"time"===n&&"date"!==layui.type(t)?r.EXP_IF.test(t)&&(t=(t.match(r.EXP_SPLIT)||[]).slice(1),lay.extend(a,{hours:0|t[0],minutes:0|t[2],seconds:0|t[4]})):lay.extend(a,r.systemDate("date"===layui.type(t)?t:new Date(t))),"time"!==n&&"datetime"!==n||(r[["startTime","endTime"][e]]={hours:a.hours,minutes:a.minutes,seconds:a.seconds}),0===e?r.startDate=lay.extend({},a):r.endState=!0,"year"===n||"month"===n||"time"===n?r.listYM[e]=[a.year,a.month+1]:e&&r.autoCalendarModel.auto&&r.autoCalendarModel()}),r.checkDate("limit").calendar(null,null,"init"),lay(r.footer).find("."+L).removeClass(k));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(x),"static"!==o.position&&r.setValue(r.parse()).done().remove()})),lay.each(m,function(e,t){y.appendChild(t)}),o.showBottom&&y.appendChild(e),lay.elem("style")),p=[],g=!0,t=(lay.each(o.theme,function(e,t){g&&/^#/.test(t)?(g=!(l=!0),p.push(["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}",-1!==o.theme.indexOf("circle")?"":"#{{id}} .layui-this{background-color:{{theme}} !important;}","#{{id}} .laydate-day-now{color:{{theme}} !important;}","#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))):!g&&/^#/.test(t)&&p.push(["#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}","#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))}),o.shortcuts&&o.range&&p.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),p.length&&(p=p.join(""),"styleSheet"in f?(f.setAttribute("type","text/css"),f.styleSheet.cssText=p):f.innerHTML=p,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(f)),r.remove(I.thisElemDate),D.thisId=o.id,s?o.elem.append(y):(v.body.appendChild(y),r.position()),o.shade?'
                                                ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),I.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},I.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(T)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete D.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+S).remove()),t},I.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},I.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":r}));t.elem&&(a.innerHTML=(e="object"==typeof e?e||{}:{content:e}).content||"",lay(t.elem).find("."+r).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+r).remove()},"ms"in e?e.ms:3e3))},I.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),11h[1]&&(e.year=h[1],o=!0),11t)&&(e.date=t,o=!0)},u=function(n,i,l){var r=["startTime","endTime"];i=(i.match(d.EXP_SPLIT)||[]).slice(1),l=l||0,s.range&&(d[r[l]]=d[r[l]]||{}),lay.each(d.format,function(e,t){var a=parseFloat(i[e]);i[e].lengthd.getDateTime(s.max)?(r=s.dateTime=lay.extend({},s.max),i=!0):d.getDateTime(r)d.getDateTime(s.max))&&(d.endDate=lay.extend({},s.max),i=!0),d.startTime={hours:s.dateTime.hours,minutes:s.dateTime.minutes,seconds:s.dateTime.seconds},d.endTime={hours:d.endDate.hours,minutes:d.endDate.minutes,seconds:d.endDate.seconds},"month"===s.type)&&(s.dateTime.date=1,d.endDate.date=1),i&&m&&(d.setValue(d.parse()),d.hint("value "+l.invalidDate+l.formatError[1])),d.startDate=d.startDate||m&&lay.extend({},s.dateTime),d.autoCalendarModel.auto&&d.autoCalendarModel(),d.endState=!s.range||!d.rangeLinked||!(!d.startDate||!d.endDate),e&&e()),d},I.prototype.mark=function(e,a){var n,t=this.config;return lay.each(t.mark,function(e,t){e=e.split("-");e[0]!=a[0]&&0!=e[0]||e[1]!=a[1]&&0!=e[1]||e[2]!=a[2]||(n=t||a[2])}),n&&e.find("div").html(''+n+""),this},I.prototype.holidays=function(n,i){var e=this.config,l=["","work"];return"array"===layui.type(e.holidays)&&lay.each(e.holidays,function(a,e){lay.each(e,function(e,t){t===n.attr("lay-ymd")&&n.find("div").html('"+i[2]+"")})}),this},I.prototype.limit=function(t){t=t||{};var i=this,e=i.config,l={},a=t.index>(t.time?0:41)?i.endDate:e.dateTime;return lay.each({now:lay.extend({},a,t.date||{}),min:e.min,max:e.max},function(e,a){var n;l[e]=i.newDate(lay.extend({year:a.year,month:"year"===t.type?0:a.month,date:"year"===t.type||"month"===t.type?1:a.date},(n={},lay.each(t.time,function(e,t){n[t]=a[t]}),n))).getTime()}),a=l.nowh[1]&&(d.year=h[1],o.hint(y.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},d)),s.setFullYear(d.year,d.month,1),i=(s.getDay()+(7-n.weekStart))%7,l=D.getEndDate(d.month||12,d.year),r=D.getEndDate(d.month+1,d.year),lay.each(c,function(e,t){var a,n=[d.year,d.month];(t=lay(t)).removeAttr("class"),e"+n[2]+"
                                                "),o.mark(t,n).holidays(t,n).limit({elem:t,date:{year:n[0],month:n[1]-1,date:n[2]},index:e})}),lay(u[0]).attr("lay-ym",d.year+"-"+(d.month+1)),lay(u[1]).attr("lay-ym",d.year+"-"+(d.month+1)),"cn"===n.lang?(lay(u[0]).attr("lay-type","year").html(d.year+" \u5e74"),lay(u[1]).attr("lay-type","month").html(d.month+1+" \u6708")):(lay(u[0]).attr("lay-type","month").html(y.month[d.month]),lay(u[1]).attr("lay-type","year").html(d.year)),m&&(n.range?!e&&"init"===a||(o.listYM=[[(o.startDate||n.dateTime).year,(o.startDate||n.dateTime).month+1],[o.endDate.year,o.endDate.month+1]],o.list(n.type,0).list(n.type,1),"time"===n.type?o.setBtnStatus("\u65f6\u95f4",lay.extend({},o.systemDate(),o.startTime),lay.extend({},o.systemDate(),o.endTime)):o.setBtnStatus(!0)):(o.listYM=[[d.year,d.month+1]],o.list(n.type,0))),n.range&&"init"===a&&(o.rangeLinked?(s=o.getAsYM(d.year,d.month,t?"sub":null),o.calendar(lay.extend({},d,{year:s[0],month:s[1]}),1-t)):o.calendar(null,1-t)),n.range||(c=["hours","minutes","seconds"],o.limit({elem:lay(o.footer).find(".laydate-btns-now"),date:o.systemDate(),index:0,time:c}),o.limit({elem:lay(o.footer).find(C),index:0,time:c})),o.setBtnStatus(),lay(o.shortcut).find("li."+x).removeClass(x),n.range&&!m&&"init"!==a&&o.stampRange(),o},I.prototype.list=function(n,i){var l,r,e,o,d=this,s=d.config,y=d.rangeLinked?s.dateTime:[s.dateTime,d.endDate][i],m=d.lang(),t=s.range&&"date"!==s.type&&"datetime"!==s.type,c=lay.elem("ul",{"class":w+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),a=d.elemHeader[i],u=lay(a[2]).find("span"),h=d.elemCont[i||0],f=lay(h).find("."+w)[0],p="cn"===s.lang,g=p?"\u5e74":"",v=d.listYM[i]||{},D=["hours","minutes","seconds"],T=["startTime","endTime"][i];return v[0]<1&&(v[0]=1),"year"===n?(e=l=v[0]-7,l<1&&(e=l=1),lay.each(new Array(15),function(e){var t=lay.elem("li",{"lay-ym":l}),a={year:l,month:0,date:1};l==v[0]&&lay(t).addClass(x),t.innerHTML=l+g,c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n}),l++}),lay(u[p?0:1]).attr("lay-ym",l-8+"-"+v[1]).html(e+g+" - "+(l-1)+g)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:v[0],month:e,date:1};e+1==v[1]&&lay(t).addClass(x),t.innerHTML=m.month[e]+(p?"\u6708":""),c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n})}),lay(u[p?0:1]).attr("lay-ym",v[0]+"-"+v[1]).html(v[0]+g)):"time"===n&&(r=function(){lay(c).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){d.limit({elem:lay(t),date:[{hours:e},{hours:d[T].hours,minutes:e},{hours:d[T].hours,minutes:d[T].minutes,seconds:e}][a],index:i,time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),s.range||d.limit({elem:lay(d.footer).find(C),date:d[T],inedx:0,time:["hours","minutes","seconds"]})},s.range?d[T]||(d[T]="startTime"===T?y:d.endDate):d[T]=y,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

                                                "+m.time[t]+"

                                                  "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
                                                ",c.appendChild(a)}),r()),f&&h.removeChild(f),h.appendChild(c),"year"===n||"month"===n?(lay(d.elemMain[i]).addClass("laydate-ym-show"),lay(c).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(k)||(d.rangeLinked?lay.extend(y,{year:"year"===n?e:v[0],month:"year"===n?v[1]-1:e}):y[n]=e,"year"===s.type||"month"===s.type?(lay(c).find("."+x).removeClass(x),lay(this).addClass(x),"month"===s.type&&"year"===n&&(d.listYM[i][0]=e,t&&((i?d.endDate:y).year=e),d.list("month",i))):(d.checkDate("limit").calendar(y,i,"init"),d.closeList()),d.setBtnStatus(),!s.range&&s.autoConfirm&&("month"===s.type&&"month"===n||"year"===s.type&&"year"===n)&&d.setValue(d.parse()).done().remove(),d.autoCalendarModel.auto&&!d.rangeLinked?d.choose(lay(h).find("td.layui-this"),i):d.endState&&d.done(null,"change"),lay(d.footer).find("."+L).removeClass(k))})):(e=lay.elem("span",{"class":M}),o=function(){lay(c).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(d[T][D[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(k))return a.scrollTop=30*(e-2),!0})})},u=lay(a[2]).find("."+M),o(),e.innerHTML=s.range?[m.startTime,m.endTime][i]:m.timeTips,lay(d.elemMain[i]).addClass("laydate-time-show"),u[0]&&u.remove(),a[2].appendChild(e),lay(c).find("ol").each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(k)||(s.range?d[T][D[t]]=e:y[D[t]]=e,lay(a).find("."+x).removeClass(x),lay(this).addClass(x),r(),o(),(d.endDate||"time"===s.type||"datetime"===s.type&&s.fullPanel)&&d.done(null,"change"),d.setBtnStatus())})})),d},I.prototype.listYM=[],I.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+w).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+M).remove()},I.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(C);i.range&&"time"!==i.type&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t})||n.limit({date:a})?r.addClass(k):r[i?"addClass":"removeClass"](k),e)&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout)},I.prototype.parse=function(e,t){var a=this,n=a.config,i=a.rangeLinked?a.startDate:n.dateTime,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},i||n.dateTime,a.startTime):n.dateTime),i=D.parse(t,a.format,1);return n.range&&e===undefined?i+" "+a.rangeStr+" "+a.parse("end"):i},I.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},I.prototype.getDateTime=function(e){return this.newDate(e).getTime()},I.prototype.setValue=function(e){var t=this,a=t.config,n=a.elem[0];return"static"!==a.position&&(e=e||"",t.isInput(n)?lay(n).val(e):(a=t.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+t.rangeStr+" ")),a[0].val(e[0]||""),a[1].val(e[1]||"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e))),t},I.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+E),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html())&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300))},I.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},I.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(C).addClass(k),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(o+" "+x),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?o:x),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.thisDateTime(1-a)})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(e=n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date,o=n.startDate,n.startDate=lay.extend({},n.endDate,e?{}:n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,e?{}:n.endTime),e)&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o),r)&&(i.dateTime=lay.extend({},n.startDate)),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(o=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:o[0],month:o[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},I.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(t).hasClass(k)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(k))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(k))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(t).hasClass(k))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},I.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),o=l.range&&("year"===l.type||"month"===l.type),d=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(d).find(".laydate-year-list")[0],a=lay(d).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),o&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(C),date:{year:s[0]}})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))}}},I.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+L).addClass(k))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},I.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},I.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){D.thisId!==a.id&&t.render()}),a.elem[0].eventHandler=!0,a.eventElem.on(a.trigger,e),t.unbind=function(){t.remove(),a.elem.off(a.trigger,e),a.elem.removeAttr("lay-key"),a.elem.removeAttr(d),a.elem[0].eventHandler=!1,a.eventElem.off(a.trigger,e),a.eventElem.removeAttr("lay-key"),delete s.that[a.id]})},s.that={},s.getThis=function(e){var t=s.that[e];return!t&&n&&layui.hint().error(e?a+" instance with ID '"+e+"' not found":"ID argument required"),t},l.run=function(n){n(v).on("mousedown",function(e){var t,a;D.thisId&&(t=s.getThis(D.thisId))&&(a=t.config,e.target===a.elem[0]||e.target===a.eventElem[0]||e.target===n(a.closeStop)[0]||a.elem[0]&&a.elem[0].contains(e.target)||t.remove())}).on("keydown",function(e){var t;D.thisId&&(t=s.getThis(D.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===I.thisElemDate&&(e.preventDefault(),n(t.footer).find(C)[0].click())}),n(i).on("resize",function(){if(D.thisId){var e=s.getThis(D.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},D.render=function(e){e=new I(e);return s.call(e)},D.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},D.getInst=function(e){e=s.getThis(e);if(e)return e.inst},D.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},D.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},D.close=function(e){e=s.getThis(e||D.thisId);if(e)return e.remove()},D.parse=function(a,n,i){return a=a||{},n=((n="string"==typeof n?s.formatArr(n):n)||[]).concat(),lay.each(n,function(e,t){/yyyy|y/.test(t)?n[e]=lay.digit(a.year,t.length):/MM|M/.test(t)?n[e]=lay.digit(a.month+(i||0),t.length):/dd|d/.test(t)?n[e]=lay.digit(a.date,t.length):/HH|H/.test(t)?n[e]=lay.digit(a.hours,t.length):/mm|m/.test(t)?n[e]=lay.digit(a.minutes,t.length):/ss|s/.test(t)&&(n[e]=lay.digit(a.seconds,t.length))}),n.join("")},D.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},n?(D.ready(),layui.define("lay",function(e){D.path=layui.cache.dir,l.run(lay),e(a,D)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),D}):(D.ready(),l.run(i.lay),i.laydate=D)}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(T,M){var f=[],g=T.document,c=f.slice,O=f.concat,R=f.push,P=f.indexOf,B={},W=B.toString,m=B.hasOwnProperty,y={},e="1.12.4",C=function(e,t){return new C.fn.init(e,t)},I=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,$=/^-ms-/,z=/-([\da-z])/gi,X=function(e,t){return t.toUpperCase()};function U(e){var t=!!e&&"length"in e&&e.length,n=C.type(e);return"function"!==n&&!C.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+a+")"+a+"*"),ee=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),te=new RegExp(G),ne=new RegExp("^"+s+"$"),f={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),TAG:new RegExp("^("+s+"|[*])"),ATTR:new RegExp("^"+J),PSEUDO:new RegExp("^"+G),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},re=/^(?:input|select|textarea|button)$/i,ie=/^h\d$/i,c=/^[^{]+\{\s*\[native \w/,oe=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ae=/[+~]/,se=/'|\\/g,d=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig"),p=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)},ue=function(){C()};try{D.apply(n=V.call(v.childNodes),v.childNodes),n[v.childNodes.length].nodeType}catch(F){D={apply:n.length?function(e,t){U.apply(e,V.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function H(e,t,n,r){var i,o,a,s,u,l,c,f,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!r&&((t?t.ownerDocument||t:v)!==E&&C(t),t=t||E,N)){if(11!==p&&(l=oe.exec(e)))if(i=l[1]){if(9===p){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&y(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return D.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&g.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(i)),n}if(g.qsa&&!A[e+" "]&&(!m||!m.test(e))){if(1!==p)d=t,f=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(se,"\\$&"):t.setAttribute("id",s=k),o=(c=w(e)).length,u=ne.test(s)?"#"+s:"[id='"+s+"']";o--;)c[o]=u+" "+_(c[o]);f=c.join(","),d=ae.test(e)&&de(t.parentNode)||t}if(f)try{return D.apply(n,d.querySelectorAll(f)),n}catch(h){}finally{s===k&&t.removeAttribute("id")}}}return P(e.replace(L,"$1"),t,n,r)}function le(){var n=[];function r(e,t){return n.push(e+" ")>b.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function q(e){return e[k]=!0,e}function h(e){var t=E.createElement("div");try{return!!e(t)}catch(F){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function ce(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function x(a){return q(function(o){return o=+o,q(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function de(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in g=H.support={},O=H.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},C=H.setDocument=function(e){var e=e?e.ownerDocument||e:v;return e!==E&&9===e.nodeType&&e.documentElement&&(t=(E=e).documentElement,N=!O(E),(e=E.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",ue,!1):e.attachEvent&&e.attachEvent("onunload",ue)),g.attributes=h(function(e){return e.className="i",!e.getAttribute("className")}),g.getElementsByTagName=h(function(e){return e.appendChild(E.createComment("")),!e.getElementsByTagName("*").length}),g.getElementsByClassName=c.test(E.getElementsByClassName),g.getById=h(function(e){return t.appendChild(e).id=k,!E.getElementsByName||!E.getElementsByName(k).length}),g.getById?(b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&N)return(e=t.getElementById(e))?[e]:[]},b.filter.ID=function(e){var t=e.replace(d,p);return function(e){return e.getAttribute("id")===t}}):(delete b.find.ID,b.filter.ID=function(e){var t=e.replace(d,p);return function(e){e="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}}),b.find.TAG=g.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):g.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=g.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&N)return t.getElementsByClassName(e)},r=[],m=[],(g.qsa=c.test(E.querySelectorAll))&&(h(function(e){t.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+a+"*(?:value|"+Y+")"),e.querySelectorAll("[id~="+k+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||m.push(".#.+[+~]")}),h(function(e){var t=E.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(g.matchesSelector=c.test(i=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&h(function(e){g.disconnectedMatch=i.call(e,"div"),i.call(e,"[s!='']:x"),r.push("!=",G)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),e=c.test(t.compareDocumentPosition),y=e||c.test(t.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=e?function(e,t){var n;return e===t?(l=!0,0):(n=!e.compareDocumentPosition-!t.compareDocumentPosition)||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!g.sortDetached&&t.compareDocumentPosition(e)===n?e===E||e.ownerDocument===v&&y(v,e)?-1:t===E||t.ownerDocument===v&&y(v,t)?1:u?j(u,e)-j(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===E?-1:t===E?1:i?-1:o?1:u?j(u,e)-j(u,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?fe(a[r],s[r]):a[r]===v?-1:s[r]===v?1:0}),E},H.matches=function(e,t){return H(e,null,null,t)},H.matchesSelector=function(e,t){if((e.ownerDocument||e)!==E&&C(e),t=t.replace(ee,"='$1']"),g.matchesSelector&&N&&!A[t+" "]&&(!r||!r.test(t))&&(!m||!m.test(t)))try{var n=i.call(e,t);if(n||g.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(F){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(d,p),e[3]=(e[3]||e[4]||e[5]||"").replace(d,p),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||H.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&H.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return f.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&te.test(n)&&(t=(t=w(n,!0))&&n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(d,p).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=H.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1(?:<\/\1>|)$/,G=/^.[^:#\[\.,]*$/;function K(e,n,r){if(C.isFunction(n))return C.grep(e,function(e,t){return!!n.call(e,t,e)!==r});if(n.nodeType)return C.grep(e,function(e){return e===n!==r});if("string"==typeof n){if(G.test(n))return C.filter(n,e,r);n=C.filter(n,e)}return C.grep(e,function(e){return-1)[^>]*|#([\w-]*))$/,ee=((C.fn.init=function(e,t,n){if(e){if(n=n||Q,"string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):C.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(C):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),C.makeArray(e,this));if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Z.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:g,!0)),J.test(r[1])&&C.isPlainObject(t))for(var r in t)C.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r])}else{if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}this.context=g,this.selector=e}}return this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
                                                a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
                                                ","
                                                "],area:[1,"",""],param:[1,"",""],thead:[1,"","
                                                "],tr:[2,"","
                                                "],col:[2,"","
                                                "],td:[3,"","
                                                "],_default:y.htmlSerialize?[0,"",""]:[1,"X
                                                ","
                                                "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
                                                t
                                                ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o)&&(i.left=o),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
                                                a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1!==this.nodeType||(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined)||(this.value=e)})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this)},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"
                                                ":"";return a.zIndex=o,t([a.shade?'
                                                ':"",'
                                                '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
                                                ':''):"")+((1!=a.type||!e)&&a.content||"")+'
                                                '+(n=[],l&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
                                                "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t,i=0,n=a.btn.length;i'+a.btn[i]+"";return'
                                                '+e+"
                                                "}():"")+(a.resize?'':"")+"
                                                "],s,m('
                                                ')),this},t.pt.creat=function(){var e,t,i,n,a,o=this,s=o.config,l=o.index,r="object"==typeof(f=s.content),c=m("body");if(s.id&&m("."+y[0]).find("#"+s.id)[0])e=m("#"+s.id).closest("."+y[0]),t=e.attr("times"),i=e.data("config"),n=m("#"+y.SHADE+t),"min"===(e.data("maxminStatus")||{})?h.restore(t):i.hideOnClose&&(n.show(),e.show());else{switch(s.removeFocus&&document.activeElement.blur(),"string"==typeof s.area&&(s.area="auto"===s.area?["",""]:[s.area,""]),s.shift&&(s.anim=s.shift),6==h.ie&&(s.fixed=!1),s.type){case 0:s.btn="btn"in s?s.btn:u.btn[0],h.closeAll("dialog");break;case 2:var f=s.content=r?s.content:[s.content||"","auto"];s.content='';break;case 3:delete s.title,delete s.closeBtn,-1===s.icon&&s.icon,h.closeAll("loading");break;case 4:r||(s.content=[s.content,"body"]),s.follow=s.content[1],s.content=s.content[0]+'',delete s.title,s.tips="object"==typeof s.tips?s.tips:[s.tips,!0],s.tipsMore||h.closeAll("tips")}o.vessel(r,function(e,t,i){c.append(e[0]),r?2==s.type||4==s.type?m("body").append(e[1]):f.parents("."+y[0])[0]||(f.data("display",f.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+y[0]+l).find("."+y[5]).before(t)):c.append(e[1]),m("#"+y.MOVE)[0]||c.append(u.moveElem=i),o.layero=m("#"+y[0]+l),o.shadeo=m("#"+y.SHADE+l),s.scrollbar||u.setScrollbar(l)}).auto(l),o.shadeo.css({"background-color":s.shade[1]||"#000",opacity:s.shade[0]||s.shade}),2==s.type&&6==h.ie&&o.layero.find("iframe").attr("src",f[0]),4==s.type?o.tips():(o.offset(),parseInt(u.getStyle(document.getElementById(y.MOVE),"z-index"))||(o.layero.css("visibility","hidden"),h.ready(function(){o.offset(),o.layero.css("visibility","visible")}))),!s.fixed||u.events.resize[o.index]||(u.events.resize[o.index]=function(){o.resize()},d.on("resize",u.events.resize[o.index])),s.time<=0||setTimeout(function(){h.close(o.index)},s.time),o.move().callback(),y.anim[s.anim]&&(a="layer-anim "+y.anim[s.anim],o.layero.addClass(a).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(a)})),o.layero.data("config",s)}},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+y[0]+e),n=(""===t.area[0]&&0t.maxWidth)&&i.width(t.maxWidth),[i.innerWidth(),i.innerHeight()]),a=i.find(y[1]).outerHeight()||0,o=i.find("."+y[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+y[5])):t.fixed&&n[1]>=d.height()&&(n[1]=d.height(),e("."+y[5])):e("."+y[5]),this},t.pt.offset=function(){var e=this,t=e.config,i=e.layero,n=[i.outerWidth(),i.outerHeight()],a="object"==typeof t.offset;e.offsetTop=(d.height()-n[1])/2,e.offsetLeft=(d.width()-n[0])/2,a?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=d.width()-n[0]:"b"===t.offset?e.offsetTop=d.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=d.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=d.width()-n[0]):"rb"===t.offset?(e.offsetTop=d.height()-n[1],e.offsetLeft=d.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?d.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?d.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=d.scrollTop(),e.offsetLeft+=d.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=d.height()-(i.find(y[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0d.width()&&(o=d.width()-180-(u.minStackArr.edgeIndex=u.minStackArr.edgeIndex||0,u.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(l.left=o,l.top=d.height()-n,a||u.minStackIndex++,r.attr("minLeft",o)),r.attr("position",s),h.style(e,l,!0),i.hide(),"page"===r.attr("type")&&r.find(y[4]).hide(),u.restScrollbar(e),c.hide())},h.restore=function(e){var t=m("#"+y[0]+e),i=m("#"+y.SHADE+e),n=t.attr("area").split(","),a=t.attr("type"),o=t.data("config")||{};t.removeData("maxminStatus"),h.style(e,{width:n[0],height:n[1],top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===a&&t.find(y[4]).show(),o.scrollbar?u.restScrollbar(e):u.setScrollbar(e),i.show()},h.full=function(t){var i=m("#"+y[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&h.restore(t),i.data("maxminStatus","max"),u.record(i),y.html.attr("layer-full")||u.setScrollbar(t),setTimeout(function(){var e="fixed"===i.css("position");h.style(t,{top:e?0:d.scrollTop(),left:e?0:d.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},h.title=function(e,t){m("#"+y[0]+(t||h.index)).find(y[1]).html(e)},h.close=function(o,s){var l,e,r=(t=m("."+y[0]).children("#"+o).closest("."+y[0]))[0]?(o=t.attr("times"),t):m("#"+y[0]+o),c=r.attr("type"),t=r.data("config")||{},f=t.id&&t.hideOnClose;r[0]&&(l={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[t.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(f)return r.removeClass("layer-anim "+l),r.hide();if(c===u.type[1]&&"object"===r.attr("conType")){r.children(":not(."+y[5]+")").remove();for(var t=r.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===u.type[2])try{var n=m("#"+y[4]+o)[0];n.contentWindow.document.write(""),n.contentWindow.close(),r.find("."+y[5])[0].removeChild(n)}catch(a){}r[0].innerHTML="",r.remove()}"function"==typeof u.end[o]&&u.end[o](),delete u.end[o],"function"==typeof s&&s(),u.events.resize[o]&&(d.off("resize",u.events.resize[o]),delete u.events.resize[o])},m("#"+y.SHADE+o)[f?"hide":"remove"](),t.isOutAnim&&r.addClass("layer-anim "+l),6==h.ie&&u.reselect(),u.restScrollbar(o),"string"==typeof r.attr("minLeft")&&(u.minStackIndex--,u.minStackArr.push(r.attr("minLeft"))),h.ie&&h.ie<10||!t.isOutAnim?e():setTimeout(function(){e()},200))},h.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+y[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&h.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},h.closeLast=function(e){h.close(m(".layui-layer-"+(e=e||"page")+":last").attr("times"))},h.cache||{}),g=function(e){return i.skin?" "+i.skin+" "+i.skin+"-"+e:""};h.prompt=function(i,n){var e="",t="";"function"==typeof(i=i||{})&&(n=i),i.area&&(e='style="width: '+(o=i.area)[0]+"; height: "+o[1]+';"',delete i.area),i.placeholder&&(t=' placeholder="'+i.placeholder+'"');var a,o=2==i.formType?'":'",s=i.success;return delete i.success,h.open(m.extend({type:1,btn:["确定","取消"],content:o,skin:"layui-layer-prompt"+g("prompt"),maxWidth:d.width(),success:function(e){(a=e.find(".layui-layer-input")).val(i.value||"").focus(),"function"==typeof s&&s(e)},resize:!1,yes:function(e){var t=a.val();t.length>(i.maxlength||500)?h.tips("最多输入"+(i.maxlength||500)+"个字数",a,{tips:1}):n&&n(t,e,a)}},i))},h.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,h.open(m.extend({type:1,skin:"layui-layer-tab"+g("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
                                                  '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
                                                ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},h.photos=function(n,e,a){var o={};if((n=m.extend(!0,{toolbar:!0,footer:!0},n)).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},s=i.data||[],l=i.start||0,r=n.success;if(o.imgIndex=1+(0|l),n.img=n.img||"img",delete n.success,t){if(0===s.length)return h.msg("没有图片")}else{var c=m(n.photos),f=function(){s=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),s.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===s.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");h.photos(m.extend(n,{photos:{start:e,data:s,tab:n.tab},full:n.full}),!0)}),!e)return}o.imgprev=function(e){o.imgIndex--,o.imgIndex<1&&(o.imgIndex=s.length),o.tabimg(e)},o.imgnext=function(e,t){o.imgIndex++,o.imgIndex>s.length&&(o.imgIndex=1,t)||o.tabimg(e)},o.keyup=function(e){var t;o.end||(t=e.keyCode,e.preventDefault(),37===t?o.imgprev(!0):39===t?o.imgnext(!0):27===t&&h.close(o.index))},o.tabimg=function(e){if(!(s.length<=1))return i.start=o.imgIndex-1,h.close(o.index),h.photos(n,!0,e)},o.isNumber=function(e){return"number"==typeof e&&!isNaN(e)},o.image={},o.getTransform=function(e){var t=[],i=e.rotate,n=e.scaleX,e=e.scale;return o.isNumber(i)&&0!==i&&t.push("rotate("+i+"deg)"),o.isNumber(n)&&1!==n&&t.push("scaleX("+n+")"),o.isNumber(e)&&t.push("scale("+e+")"),t.length?t.join(" "):"none"},o.event=function(e,i,n){o.main.find(".layui-layer-photos-prev").on("click",function(e){e.preventDefault(),o.imgprev(!0)}),o.main.find(".layui-layer-photos-next").on("click",function(e){e.preventDefault(),o.imgnext(!0)}),m(document).on("keyup",o.keyup),e.off("click").on("click","*[toolbar-event]",function(){var e=m(this);switch(e.attr("toolbar-event")){case"rotate":o.image.rotate=((o.image.rotate||0)+Number(e.attr("data-option")))%360,o.imgElem.css({transform:o.getTransform(o.image)});break;case"scalex":o.image.scaleX=-1===o.image.scaleX?1:-1,o.imgElem.css({transform:o.getTransform(o.image)});break;case"zoom":var t=Number(e.attr("data-option"));o.image.scale=(o.image.scale||1)+t,t<0&&o.image.scale<0-t&&(o.image.scale=0-t),o.imgElem.css({transform:o.getTransform(o.image)});break;case"reset":o.image.scaleX=1,o.image.scale=1,o.image.rotate=0,o.imgElem.css({transform:"none"});break;case"close":h.close(i)}n.offset(),n.auto(i)})},o.loadi=h.load(1,{shade:!("shade"in n)&&.9,scrollbar:!1});var t=s[l].src,d=function(e){h.close(o.loadi);var t,i=s[l].alt||"";a&&(n.anim=-1),o.index=h.open(m.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[m(p).width()-100,m(p).height()-100],!n.full&&(t[0]'+i+''+(t=['
                                                '],1','','',"
                                                "].join("")),n.toolbar&&t.push(['
                                                ','','','','','','',"
                                                "].join("")),n.footer&&t.push(['"].join("")),t.push("
                                                "),t.join(""))+"",success:function(e,t,i){o.main=e.find(".layer-layer-photos-main"),o.footer=e.find(".layui-layer-photos-footer"),o.imgElem=o.main.children("img"),o.event(e,t,i),n.tab&&n.tab(s[l],e),"function"==typeof r&&r(e)},end:function(){o.end=!0,m(document).off("keyup",o.keyup)}},n))},u=function(){h.close(o.loadi),h.msg("当前图片地址异常
                                                是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){1").addClass(r));layui.each(i.bars,function(t,e){var n=s('
                                              • ');n.addClass(e.icon).attr({"lay-type":e.type,style:e.style||(i.bgcolor?"background-color: "+i.bgcolor:"")}).html(e.content),n.on("click",function(){var t=s(this).attr("lay-type");"top"===t&&("body"===i.target?s("html,body"):u).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,t)}),"object"===layui.type(i.on)&&layui.each(i.on,function(t,e){n.on(t,function(){var t=s(this).attr("lay-type");"function"==typeof e&&e.call(this,t)})}),"top"===e.type&&(n.addClass("layui-fixbar-top"),o=n),l.append(n)}),c.find("."+r).remove(),"object"==typeof i.css&&l.css(i.css),c.append(l),o&&(e=function e(){return u.scrollTop()>=i.margin?t||(o.show(),t=1):t&&(o.hide(),t=0),e}()),u.on("scroll",function(){e&&(clearTimeout(n),n=setTimeout(function(){e()},100))})},countdown:function(i){i=s.extend(!0,{date:new Date,now:new Date},i);var o=arguments,r=(1]|&(?=#[a-zA-Z0-9]+)/g.test(t+="")?t.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):t},unescape:function(t){return t!==undefined&&null!==t||(t=""),(t+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(t){var e=(t=t||{}).window||window.open(t.url||"",t.target,t.specs);t.url||(e.document.open("text/html","replace"),e.document.write(t.content||""),e.document.close())},toVisibleArea:function(t){var e,n,i,o,r,a,c,u;(t=s.extend({margin:160,duration:200,type:"y"},t)).scrollElem[0]&&t.thisElem[0]&&(e=t.scrollElem,c=t.thisElem,i=(r="y"===t.type)?"top":"left",o=e[n=r?"scrollTop":"scrollLeft"](),r=e[r?"height":"width"](),a=e.offset()[i],u={},(c=c.offset()[i]-a)>r-t.margin||c."+v,E=function(e){var i=this;i.index=++h.index,i.config=c.extend({},i.config,h.config,e),i.init()};E.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:300,shade:0,accordion:!1},E.prototype.reload=function(e,i){var t=this;t.config=c.extend({},t.config,e),t.init(!0,i)},E.prototype.init=function(e,i){var t,n=this,a=n.config,l=c(a.elem);return 1');return 0No data
                                              • '),e},s=function(r,e){return layui.each(e,function(e,i){var t,n=i[u.children]&&0",(t="href"in i?''+l+"":l,n?'
                                                '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
                                                ":'
                                                '+t+"
                                                "),""].join(""))).data("item",i),n&&(a=c('
                                                '),t=c("
                                                  "),"parent"===o?(a.append(s(t,i[u.children])),l.append(a)):l.append(s(t,i[u.children]))),r.append(l))}),r},a=['
                                                  ',"
                                                  "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(y+"_opened")||(l.elemView=c("."+g+'[lay-id="'+d.id+'"]'),"reloadData"===i&&l.elemView.length?l.elemView.html(d.content||n()):(l.elemView=c(a),l.elemView.append(d.content||n()),d.className&&l.elemView.addClass(d.className),d.style&&l.elemView.attr("style",d.style),h.thisId=d.id,l.remove(),t.append(l.elemView),d.elem.data(y+"_opened",!0),e=d.shade?'
                                                  ':"",l.elemView.before(e),"mouseenter"===d.trigger&&l.elemView.on("mouseenter",function(){clearTimeout(f.timer)}).on("mouseleave",function(){l.delayRemove()})),l.position(),(f.prevElem=l.elemView).data("prevElem",d.elem),l.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),l.elemView.find(".layui-menu li").on("click",function(e){var i=c(this),t=i.data("item")||{},n=t[u.children]&&0n.width()&&(t.addClass(b),(i=t[0].getBoundingClientRect()).left<0)&&t.removeClass(b),i.bottom>n.height())&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5))}).on("mouseleave",t,function(e){var i=c(this).children("."+x);i.removeClass(b),i.css("margin-top",0)}),h.close=function(e){e=f.getThis(e);return e?(e.remove(),f.call(e)):this},h.reload=function(e,i,t){e=f.getThis(e);return e?(e.reload(i,t),f.call(e)):this},h.reloadData=function(){var t=c.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),h.reload.apply(null,t)},h.render=function(e){e=new E(e);return f.call(e)},e(r,h)});layui.define(["jquery","lay"],function(e){"use strict";var g=layui.$,c=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var i=this;return i.config=g.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},t="slider",v="layui-disabled",x="layui-slider-bar",b="layui-slider-wrap",T="layui-slider-wrap-btn",w="layui-slider-tips",M="layui-slider-input-txt",L="layui-slider-hover",i=function(e){var i=this;i.index=++m.index,i.config=g.extend({},i.config,m.config,e),i.render()};i.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},i.prototype.render=function(){var a=this,n=a.config,e=g(n.elem);if(1n.max&&(n.value=n.max),t=Math.floor((n.value-n.min)/(n.max-n.min)*100)+"%");var l,e=n.disabled?"#c2c2c2":n.theme,i='
                                                  '+(n.tips?'
                                                  ':"")+'
                                                  '+(n.range?'
                                                  ':"")+"
                                                  ",t=g(n.elem),s=t.next(".layui-slider");if(s[0]&&s.remove(),a.elemTemp=g(i),n.range?(a.elemTemp.find("."+b).eq(0).data("value",n.value[0]),a.elemTemp.find("."+b).eq(1).data("value",n.value[1])):a.elemTemp.find("."+b).data("value",n.value),t.html(a.elemTemp),"vertical"===n.type&&a.elemTemp.height(n.height+"px"),n.showstep){for(var o=(n.max-n.min)/n.step,r="",d=1;d<1+o;d++){var u=100*d/o;u<100&&(r+='
                                                  ')}a.elemTemp.append(r)}n.input&&!n.range&&(e=g('
                                                  '),t.css("position","relative"),t.append(e),t.find("."+M).children("input").val(n.value),"vertical"===n.type?e.css({left:0,top:-48}):a.elemTemp.css("margin-right",e.outerWidth()+15)),n.disabled?(a.elemTemp.addClass(v),a.elemTemp.find("."+T).addClass(v)):a.slide(),a.elemTemp.find("."+T).on("mouseover",function(){var e="vertical"===n.type?n.height:a.elemTemp[0].offsetWidth,i=a.elemTemp.find("."+b),t=("vertical"===n.type?e-g(this).parent()[0].offsetTop-i.height():g(this).parent()[0].offsetLeft)/e*100,i=g(this).parent().data("value"),e=n.setTips?n.setTips(i):i;a.elemTemp.find("."+w).html(e),clearTimeout(l),l=setTimeout(function(){"vertical"===n.type?a.elemTemp.find("."+w).css({bottom:t+"%","margin-bottom":"20px",display:"inline-block"}):a.elemTemp.find("."+w).css({left:t+"%",display:"inline-block"})},300)}).on("mouseout",function(){clearTimeout(l),a.elemTemp.find("."+w).css("display","none")})},i.prototype.slide=function(e,i,t){var o=this,r=o.config,d=o.elemTemp,u=function(){return"vertical"===r.type?r.height:d[0].offsetWidth},c=d.find("."+b),m=d.next(".layui-slider-input"),v=m.children("."+M).children("input").val(),p=100/((r.max-r.min)/Math.ceil(r.step)),f=function(e,i,t){e=(e=100<(e=100a[1]&&a.reverse(),o.value=r.range?a:l,r.change&&r.change(o.value),"done"===t&&r.done&&r.done(o.value)},h=function(e){var i=e/u()*100/p,t=Math.round(i)*p;return t=e==u()?Math.ceil(i)*p:t},y=g(['
                                                  u()?u():i)/u()*100/p;f(i,l),s.addClass(L),d.find("."+w).show(),e.preventDefault()},i=function(){s.removeClass(L),d.find("."+w).hide()},t=function(){i&&i(),y.remove(),r.done&&r.done(o.value)},g("#LAY-slider-moving")[0]||g("body").append(y),y.on("mousemove",e),y.on("mouseup",t).on("mouseleave",t)})}),d.on("click",function(e){var i=g("."+T),t=g(this);!i.is(event.target)&&0===i.has(event.target).length&&i.length&&(t=(i=(i=(i="vertical"===r.type?u()-e.clientY+t.offset().top-g(window).scrollTop():e.clientX-t.offset().left-g(window).scrollLeft())<0?0:i)>u()?u():i)/u()*100/p,i=r.range?"vertical"===r.type?Math.abs(i-parseInt(g(c[0]).css("bottom")))>Math.abs(i-parseInt(g(c[1]).css("bottom")))?1:0:Math.abs(i-c[0].offsetLeft)>Math.abs(i-c[1].offsetLeft)?1:0:0,f(t,i,"done"),e.preventDefault())}),m.children(".layui-slider-input-btn").children("i").each(function(i){g(this).on("click",function(){v=m.children("."+M).children("input").val();var e=((v=1==i?v-r.stepr.max?r.max:Number(v)+r.step)-r.min)/(r.max-r.min)*100/p;f(e,0,"done")})});var a=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)r.max?r.max:e,((this.value=e)-r.min)/(r.max-r.min)*100/p);f(e,0,"done")};m.children("."+M).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),a.call(this))}).on("change",a)},i.prototype.events=function(){this.config},m.render=function(e){e=new i(e);return function(){var t=this,a=t.config;return{setValue:function(e,i){return e=(e=e>a.max?a.max:e)',"",'','',"","","
                                                  "].join("")),r=i.elem=m(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),r.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:r.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,r=e.elemColorBox[0],t=e.elemPicker=m(['
                                                  ','
                                                  ','
                                                  ','
                                                  ','
                                                  ','
                                                  ',"
                                                  ",'
                                                  ','
                                                  ',"
                                                  ","
                                                  ",'
                                                  ','
                                                  ','
                                                  ',"
                                                  ","
                                                  ",i.predefine?(o=['
                                                  '],layui.each(i.colors,function(e,i){o.push(['
                                                  ','
                                                  ',"
                                                  "].join(""))}),o.push("
                                                  "),o.join("")):"",'
                                                  ','
                                                  ','',"
                                                  ",'
                                                  ','','',"","
                                                  "].join(""));e.elemColorBox.find("."+C)[0];m(a)[0]&&m(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),m("body").append(t)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=r.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=m("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close)&&i.close(this.color),this},d.prototype.position=function(){var e=this,i=e.config;return t.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),r=i.elemPicker.find("."+M),t=o[0].style.backgroundColor;t?(e=Y(L(t)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?r.find("input").val(t):"rgba"===o?(o=L(t),3===(t.match(/[0-9]{1,3}/g)||[]).length?(r.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+T).css("left",280)):(r.find("input").val(t),t=280*t.slice(t.lastIndexOf(",")+1,t.length-1),i.elemPicker.find("."+T).css("left",t)),i.elemPicker.find("."+D)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):r.find("input").val("#"+F(e))):(i.select(0,100,100),r.find("input").val(""),i.elemPicker.find("."+D)[0].style.background="",i.elemPicker.find("."+T).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),r=n.elemPicker.find("."+E),f=n.elemPicker.find("."+D),u=n.elemPicker.find("."+T),g=e[0].offsetTop/180*360,p=100-(r[0].offsetTop+3)/180*100,h=(r[0].offsetLeft+3)/260*100,v=Math.round(u[0].offsetLeft/280*100)/100,b=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),y=function(e,i,o,r){n.select(e,i,o);var t=j({h:e,s:i,b:o}),e=F({h:e,s:i,b:o}),i=n.elemPicker.find("."+M).find("input");b.addClass(x).removeClass(P),c[0].style.background="rgb("+t.r+", "+t.g+", "+t.b+")","torgb"===a?i.val("rgb("+t.r+", "+t.g+", "+t.b+")"):"rgba"===a?(u.css("left",280*r),i.val("rgba("+t.r+", "+t.g+", "+t.b+", "+r+")"),c[0].style.background="rgba("+t.r+", "+t.g+", "+t.b+", "+r+")",f[0].style.background="linear-gradient(to right, rgba("+t.r+", "+t.g+", "+t.b+", 0), rgb("+t.r+", "+t.g+", "+t.b+"))"):i.val("#"+e),l.change&&l.change(n.elemPicker.find("."+M).find("input").val())},o=m(['
                                                  '].join("")),k=function(e){m("#LAY-colorpicker-moving")[0]||m("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var r=this.offsetTop,t=e.clientY;k(function(e){var i=r+(e.clientY-t),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;y(g=o,h,p,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-m(this).offset().top+H.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;y(g=i,h,p,v),e.preventDefault()}),r.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),k(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),r=d[0].offsetHeight-3,t=d[0].offsetWidth-3,t=((o=t<(o=o<-3?-3:o)?t:o)+3)/260*100,o=100-((i=r<(i=i<-3?-3:i)?r:i)+3)/180*100;y(g,h=t,p=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-m(this).offset().top-3+H.scrollTop(),o=e.clientX-m(this).offset().left-3+H.scrollLeft(),o=((i=i<-3?-3:i)>this.offsetHeight-3&&(i=this.offsetHeight-3),((o=(o=o<-3?-3:o)>this.offsetWidth-3?this.offsetWidth-3:o)+3)/260*100),i=100-(i+3)/180*100;y(g,h=o,p=i,v),layui.stope(e),e.preventDefault(),r.trigger(e,"mousedown")}),u.on("mousedown",function(e){var r=this.offsetLeft,t=e.clientX;k(function(e){var i=r+(e.clientX-t),o=f[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);y(g,h,p,v=o),e.preventDefault()}),e.preventDefault()}),f.on("click",function(e){var i=e.clientX-m(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);y(g,h,p,v=i),e.preventDefault()}),i.each(function(){m(this).on("click",function(){m(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(L(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);g=i.h,h=i.s,p=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,y(i.h,i.s,i.b,o)})})},d.prototype.select=function(e,i,o,r){this.config;var t=F({h:e,s:100,b:100}),e=(F({h:e,s:i,b:o}),e/360*180),o=180-o/100*180-3,i=i/100*260-3;this.elemPicker.find("."+B).css("top",e),this.elemPicker.find("."+I)[0].style.background="#"+t,this.elemPicker.find("."+E).css({top:o,left:i})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+M+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,r,t,n,l=d.val();-1>16,g:(65280&t)>>8,b:255&t},r=Y(n),s[0].style.background=o="#"+F(r),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i?(c.select(r.h,r.s,r.b,i),a.change&&a.change(o)):(c.color=l,a.done&&a.done(l),c.removePicker())}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=m(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=m(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),m(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,r;n.thisId&&(i=l.getThis(n.thisId))&&(o=i.config,r=i.elemColorBox.find("."+C),m(e.target).hasClass(c)||m(e.target).parents("."+c)[0]||m(e.target).hasClass(a.replace(/\./g,""))||m(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(L(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),r[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),H.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!m(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(r,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),c="element",r="layui-this",h="layui-show",o=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,c,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(o),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
                                                  '+(i.content||"")+"
                                                  "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),C.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(this).index();C.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",p="layui-nav-bar",b="layui-nav-tree",v="layui-nav-child",m="layui-nav-more",g="layui-anim layui-anim-upbit",C={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(r).siblings().removeClass(r),i.eq(t).addClass(h).siblings().removeClass(h)),layui.event.call(this,c,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(r)&&(i.next()[0]&&i.next().is("li")?C.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&C.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){C.tabAuto()},50),layui.event.call(this,c,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t,i=u(this),a=i.children(".layui-tab-title"),e=(i.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),e=u('');c===window&&d.ie,i.attr("lay-allowclose")&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||((t=u('')).on("click",C.tabDelete),i.append(t))}),"string"!=typeof i.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(t=a.find("li").eq(0).height())+t/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(e),i.attr("overflow",""),e.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),i.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.closest(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+v),n="string"==typeof e.attr("lay-unselect");if("javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+r).removeClass(r),e.addClass(r)),i.hasClass(b)){var n=f+"ed",s=!e.hasClass(n),o=function(){u(this).css({display:""}),i.children("."+p).css({opacity:0})};if(l.is(":animated"))return;l.removeClass(g),l[0]&&(s?(l.slideDown(200,o),e.addClass(n)):(e.removeClass(n),l.show().slideUp(200,o)),"string"!=typeof i.attr("lay-accordion")&&"all"!==i.attr("lay-shrink")||((s=e.siblings("."+n)).removeClass(n),s.children("."+v).show().stop().slideUp(200,o)))}layui.event.call(this,c,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,c,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){C.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+p)[0]||(i.append(a),(i.hasClass(b)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+v);i.hasClass(b)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(g),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+m).addClass(m+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(b)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+v).removeClass(h),i.find("."+m).removeClass(m+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(b)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+v)[0]&&!t.children("."+m)[0]&&t.append(''),t.off("click",C.clickThis).on("click",C.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",C.collapse).on("click",C.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",C.tabClick),u(window).on("resize",C.tabAuto),t(c,a)});layui.define(["lay","layer"],function(e){"use strict";var x=layui.$,a=layui.lay,i=layui.layer,b=layui.device(),t="upload",r="layui_"+t+"_index",o={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var i=this;return i.config=x.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var i=this,e=i.config.id;return{upload:function(e){i.upload.call(i,e)},reload:function(e){i.reload.call(i,e)},config:(l.that[e]=i).config}},u="layui-upload-file",f="layui-upload-form",F="layui-upload-iframe",w="layui-upload-choose",L="UPLOADING",j=function(e){var i=this;i.index=++o.index,i.config=x.extend({},i.config,o.config,e),i.render()};j.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1,text:{"cross-domain":"Cross-domain requests are not supported","data-format-error":"Please return JSON data format","check-error":"",error:"","limit-number":null,"limit-size":null}},j.prototype.reload=function(e){var i=this;i.config=x.extend({},i.config,e),i.render(!0)},j.prototype.render=function(e){var i=this,t=i.config,n=x(t.elem);return 1"].join("")),n=i.elem.next();(n.hasClass(u)||n.hasClass(f))&&n.remove(),b.ie&&b.ie<10&&i.elem.wrap('
                                                  '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(t),b.ie&&b.ie<10&&e.initIE()},j.prototype.initIE=function(){var t,e=this.config,i=x(''),n=x(['
                                                  ',"
                                                  "].join(""));x("#"+F)[0]||x("body").append(i),e.elem.next().hasClass(f)||(this.elemFile.wrap(n),e.elem.next("."+f).append((t=[],layui.each(e.data,function(e,i){i="function"==typeof i?i():i,t.push('')}),t.join(""))))},j.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},j.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},j.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,i){var t=new FileReader;t.readAsDataURL(i),t.onload=function(){n&&n(e,i,this.result)}})},j.prototype.upload=function(e,i){var t,n,a,o,u=this,f=u.config,c=f.text||{},l=u.elemFile[0],s=function(){return e||u.files||u.chooseFiles||l.files},r=function(){var a=0,o=0,l=s(),r=function(){f.multiple&&a+o===u.fileLength&&"function"==typeof f.allDone&&f.allDone({total:u.fileLength,successful:a,failed:o})},t=function(t){var n=new FormData,i=function(e){t.unified?layui.each(l,function(e,i){delete i[L]}):delete e[L]};if(layui.each(f.data,function(e,i){i="function"==typeof i?i():i,n.append(e,i)}),t.unified)layui.each(l,function(e,i){i[L]||(i[L]=!0,n.append(f.field,i))});else{if(t.file[L])return;n.append(f.field,t.file),t.file[L]=!0}var e={url:f.url,type:"post",data:n,dataType:f.dataType||"json",contentType:!1,processData:!1,headers:f.headers||{},success:function(e){f.unified?a+=u.fileLength:a++,p(t.index,e),r(t.index),i(t.file)},error:function(e){f.unified?o+=u.fileLength:o++,u.msg(c.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
                                                  ")),m(t.index),r(t.index),i(t.file)}};"function"==typeof f.progress&&(e.xhr=function(){var e=x.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var i;e.lengthComputable&&(i=Math.floor(e.loaded/e.total*100),f.progress(i,(f.item||f.elem)[0],e,t.index))}),e}),x.ajax(e)};f.unified?t({unified:!0,index:0}):layui.each(l,function(e,i){t({index:e,file:i})})},d=function(){var n=x("#"+F);u.elemFile.parent().submit(),clearInterval(j.timer),j.timer=setInterval(function(){var e,i=n.contents().find("body");try{e=i.text()}catch(t){u.msg(c["cross-domain"]),clearInterval(j.timer),m()}e&&(clearInterval(j.timer),i.html(""),p(0,e))},30)},p=function(e,i){if(u.elemFile.next("."+w).remove(),l.value="","json"===f.force&&"object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},u.msg(c["data-format-error"])}"function"==typeof f.done&&f.done(i,e||0,function(e){u.upload(e)})},m=function(e){f.auto&&(l.value=""),"function"==typeof f.error&&f.error(e||0,function(e){u.upload(e)})},h=f.exts,g=(n=[],layui.each(e||u.chooseFiles,function(e,i){n.push(i.name)}),n),v={preview:function(e){u.preview(e)},upload:function(e,i){var t={};t[e]=i,u.upload(t)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,i){u.files[e]=i}),u.files},resetFile:function(e,i,t){i=new File([i],t);u.files=u.files||{},u.files[e]=i}},y={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[f.accept]||"\u6587\u4ef6",g=0===g.length?l.value.match(/[^\/\\]+\..+/g)||[]:g;if(0!==g.length){switch(f.accept){case"file":layui.each(g,function(e,i){if(h&&!RegExp(".\\.("+h+")$","i").test(escape(i)))return t=!0});break;case"video":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(i)))return t=!0});break;case"audio":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(i)))return t=!0});break;default:layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"jpg|png|gif|bmp|jpeg|svg")+")$","i").test(escape(i)))return t=!0})}if(t)return u.msg(c["check-error"]||"\u9009\u62e9\u7684"+y+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==i&&!f.auto||(f.choose&&f.choose(v),"choose"!==i)){if(u.fileLength=(a=0,y=s(),layui.each(y,function(){a++}),a),f.number&&u.fileLength>f.number)return u.msg("function"==typeof c["limit-number"]?c["limit-number"](f,u.fileLength):"\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+f.number+" \u4e2a\u6587\u4ef6
                                                  \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+u.fileLength+" \u4e2a\u6587\u4ef6");if(01024*f.size&&(i=1<=(i=f.size/1024)?i.toFixed(2)+"MB":f.size+"KB",l.value="",o=i)}),o)return u.msg("function"==typeof c["limit-size"]?c["limit-size"](f,o):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!f.before||!1!==f.before(v))b.ie?(9'+e+"")};a.elem.off("upload.start").on("upload.start",function(){var e=x(this);n.config.item=e,n.elemFile[0].click()}),b.ie&&b.ie<10||a.elem.off("upload.over").on("upload.over",function(){x(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){x(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,i){var t=x(this),i=i.originalEvent.dataTransfer.files||[];t.removeAttr("lay-over"),o(i),a.auto?n.upload():l(i)}),n.elemFile.on("change",function(){var e=this.files||[];0!==e.length&&(o(e),a.auto?n.upload():l(e))}),a.bindAction.off("upload.action").on("upload.action",function(){n.upload()}),a.elem.data(r)||(a.elem.on("click",function(){n.isFile()||x(this).trigger("upload.start")}),a.drag&&a.elem.on("dragover",function(e){e.preventDefault(),x(this).trigger("upload.over")}).on("dragleave",function(e){x(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),x(this).trigger("upload.drop",e)}),a.bindAction.on("click",function(){x(this).trigger("upload.action")}),a.elem.data(r,a.id))},l.that={},l.getThis=function(e){var i=l.that[e];return i||hint.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},o.render=function(e){e=new j(e);return l.call(e)},e(t,o)});layui.define(["lay","layer","util"],function(e){"use strict";var C=layui.$,h=layui.layer,d=layui.util,l=layui.hint(),w=(layui.device(),"form"),o=".layui-form",N="layui-this",T="layui-hide",$="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e))return"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"},phone:function(e){if(e&&!/^1\d{10}$/.test(e))return"\u624b\u673a\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"},email:function(e){if(e&&!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))return"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"},url:function(e){if(e&&!/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/.test(e))return"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"},number:function(e){if(e&&isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:function(e){if(e&&!/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/.test(e))return"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"},identity:function(e){if(e&&!/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(e))return"\u8eab\u4efd\u8bc1\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"}},autocomplete:null}},i=(t.prototype.set=function(e){return C.extend(!0,this.config,e),this},t.prototype.verify=function(e){return C.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return C(o+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,w,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=C(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;C(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=C(o+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){var e=e||a.find("input,textarea"),t=(i.autocomplete&&e.attr("autocomplete",i.autocomplete),function(e,t){var i=e.val(),a=Number(i),n=Number(e.attr("step"))||1,l=Number(e.attr("min")),r=Number(e.attr("max")),s=Number(e.attr("lay-precision")),o="blur"===t&&""===i;isNaN(a)||("click"===t&&(a=!!C(this).index()?a-n:a+n),t=function(e){return((e.toString().match(/\.(\d+$)/)||[])[1]||"").length},s=0<=s?s:Math.max(t(n),t(i)),o||(r<=(a=a<=l?l:a)&&(a=r),s&&(a=a.toFixed(s)),e.val(a)),(n={increment:e.next().find(".layui-icon-up"),decrement:e.next().find(".layui-icon-down")}).increment[r<=a&&!o?"addClass":"removeClass"]($),n.decrement[a<=l&&!o?"addClass":"removeClass"]($))});a.find("input[lay-affix],textarea[lay-affix]").each(function(){var r=C(this),s=r.attr("lay-affix"),o="layui-input-wrap",c="layui-input-suffix",u="layui-input-affix",e=r.is("[disabled]")||r.is("[readonly]"),d=function(e,t){(e=C(e))[0]&&e[C.trim(t)?"removeClass":"addClass"](T)},n=function(i){i=C.extend({},f[s]||{value:s},i,lay.options(r[0]));var a,t=C('
                                                  '),e=layui.isArray(i.value)?i.value:[i.value],e=C((a=[],layui.each(e,function(e,t){a.push('')}),a.join(""))),n=(t.append(e),i.split&&t.addClass("layui-input-split"),i.className&&t.addClass(i.className),r.next("."+u)),l=(n[0]&&n.remove(),r.parent().hasClass(o)||r.wrap('
                                                  '),r.next("."+c));l[0]?((n=l.find("."+u))[0]&&n.remove(),l.prepend(t),r.css("padding-right",function(){return(r.closest(".layui-input-group")[0]?0:l.outerWidth())+t.outerWidth()})):(t.addClass(c),r.after(t)),"auto"===i.show&&d(t,r.val()),r.on("input propertychange",function(){var e=this.value;"auto"===i.show&&d(t,e)}),r.on("blur",function(){"function"==typeof i.blur&&i.blur.call(this,r,i)}),e.on("click",function(){var e=r.attr("lay-filter");C(this).hasClass($)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,w,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},f={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),d(C(this).parent(),null)},show:"auto",disabled:e},number:{value:["up","down"],split:!0,className:"layui-input-number",disabled:r.is("[disabled]"),click:function(e){t.call(this,e,"click")},blur:function(e){t.call(this,e,"blur")}}};n()})},select:function(e){var p,c="\u8bf7\u9009\u62e9",m="layui-form-select",x="layui-select-title",g="layui-select-none",b="",e=e||a.find("select"),k=function(e,t){C(e.target).parent().hasClass(x)&&!t||(C("."+m).removeClass(m+"ed "+m+"up"),p&&b&&p.val(b)),p=null},u=function(a,e,t){var s,r,i,n,o,l,c=C(this),u=a.find("."+x),d=u.find("input"),f=a.find("dl"),h=f.children("dd"),y=f.children("dt"),v=this.selectedIndex;e||(r=c.attr("lay-search"),i=function(){var e=a.offset().top+a.outerHeight()+5-F.scrollTop(),t=f.outerHeight();v=c[0].selectedIndex,a.addClass(m+"ed"),h.removeClass(T),y.removeClass(T),s=null,h.removeClass(N),0<=v&&h.eq(v).addClass(N),e+t>F.height()&&t<=e&&a.addClass(m+"up"),o()},n=function(e){a.removeClass(m+"ed "+m+"up"),d.blur(),s=null,e||l(d.val(),function(e){var t=c[0].selectedIndex;e&&(b=C(c[0].options[t]).html(),0===t&&b===d.attr("placeholder")&&(b=""),d.val(b||""))})},o=function(){var e,t,i=f.children("dd."+N);i[0]&&(e=i.position().top,t=f.height(),i=i.height(),t\u65e0\u5339\u914d\u9879

                                                  '):f.find("."+g).remove()},"keyup"),""===t&&(c.val(""),f.find("."+N).removeClass(N),(c[0].options[0]||{}).value||f.children("dd:eq(0)").addClass(N),f.find("."+g).remove()),o()}).on("blur",function(e){var t=c[0].selectedIndex;p=d,b=C(c[0].options[t]).text(),0===t&&b===d.attr("placeholder")&&(b=""),setTimeout(function(){l(d.val(),function(e){b||d.val("")},"blur")},200)}),h.on("click",function(){var e=C(this),t=e.attr("lay-value"),i=c.attr("lay-filter");return e.hasClass($)||(e.hasClass("layui-select-tips")?d.val(""):(d.val(e.text()),e.addClass(N)),e.siblings().removeClass(N),c.val(t).removeClass("layui-form-danger"),layui.event.call(this,w,"select("+i+")",{elem:c[0],value:t,othis:a}),n(!0)),!1}),a.find("dl>dt").on("click",function(e){return!1}),C(document).off("click",k).on("click",k))};e.each(function(e,t){var i=C(this),a=i.next("."+m),n=this.disabled,l=t.value,r=C(t.options[t.selectedIndex]),t=t.options[0];if("string"==typeof i.attr("lay-ignore"))return i.show();var s,o="string"==typeof i.attr("lay-search"),t=t&&!t.value&&t.innerHTML||c,r=C(['
                                                  ','
                                                  ','','
                                                  ','
                                                  ',(t=i.find("*"),s=[],layui.each(t,function(e,t){var i=t.tagName.toLowerCase();0!==e||t.value||"optgroup"===i?s.push("optgroup"===i?"
                                                  "+t.label+"
                                                  ":'
                                                  '+C.trim(t.innerHTML)+"
                                                  "):s.push('
                                                  '+C.trim(t.innerHTML||c)+"
                                                  ")}),0===s.length&&s.push('
                                                  \u6ca1\u6709\u9009\u9879
                                                  '),s.join("")+"
                                                  "),"
                                                  "].join(""));a[0]&&a.remove(),i.after(r),u.call(this,r,n,o)})},checkbox:function(e){var o={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],"switch":["layui-form-switch","layui-form-onswitch","switch"],SUBTRA:"layui-icon-indeterminate"},e=e||a.find("input[type=checkbox]");e.each(function(e,t){var i=C(this),a=i.attr("lay-skin")||"primary",n=d.escape(C.trim(t.title||(t.title=i.attr("lay-text")||""))),l=this.disabled,r=o[a]||o.checkbox,s=i.next("."+r[0]);if(s[0]&&s.remove(),i.next("[lay-checkbox]")[0]&&(n=i.next().html()||""),n="switch"===a?n.split("|"):[n],"string"==typeof i.attr("lay-ignore"))return i.show();l=C(['
                                                  ",(s={checkbox:[n[0]?"
                                                  "+n[0]+"
                                                  ":"primary"===a?"":"
                                                  ",''].join(""),"switch":"
                                                  "+((t.checked?n[0]:n[1])||"")+"
                                                  "})[a]||s.checkbox,"
                                                  "].join(""));i.after(l),function(a,n){var l=C(this);a.on("click",function(){var e=C(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+o.SUBTRA).removeClass(o.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],w,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var r="layui-form-radio",s=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=C(this),a=i.next("."+r),n=this.disabled;if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();n=C(['
                                                  ','',"
                                                  "+(a=d.escape(t.title||""),a=i.next("[lay-radio]")[0]?i.next().html():a)+"
                                                  ","
                                                  "].join(""));i.after(n),function(a){var n=C(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(o),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=C(this).next("."+r);this.checked=!1,e.removeClass(r+"ed"),e.children(".layui-icon").removeClass(l+" "+s[0]).addClass(s[1])}),n[0].checked=!0,a.addClass(r+"ed"),a.children(".layui-icon").addClass(l+" "+s[0]),layui.event.call(n[0],w,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,n)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?C(e).is(o)?(a=C(e),t()):e.each(function(e,t){var i=C(t);i.closest(o).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u,d=this.config.verify,f="layui-form-danger";return!(e=C(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=C(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=C.trim(s.val());if(s.removeClass(f),layui.each(t,function(e,t){var i="",a=d[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n)return"tips"===o?h.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?h.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&h.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(f),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i={},a=C(this),e="string"==typeof e?e:a.attr("lay-filter"),n=this.getFormElem?this.getFormElem(e):a.parents(o).eq(0),l=n.find("*[lay-verify]");return!!r.validate(l)&&(i=r.getValue(null,n),l={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?n:a.parents("form"))[0],field:i},"function"==typeof t&&t(l),layui.event.call(this,w,"submit("+e+")",l))}),r=new t,t=C(document),F=C(window);C(function(){r.render()}),t.on("reset",o,function(){var e=C(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",o,i).on("click","*[lay-submit]",i),e(w,r)});layui.define(["lay","laytpl","laypage","form","util"],function(n){"use strict";var f=layui.$,r=layui.lay,m=layui.laytpl,P=layui.laypage,p=layui.layer,v=layui.form,g=layui.util,b=layui.hint(),x=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var t=this;return t.config=f.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,N,e,t)}},w=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){k.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=w.that[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=w.config[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},T=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content;"numbers"===a.type&&(i=e.tplData[k.config.numbersName]);("escape"in a?a:t).escape&&(i=g.escape(i));t=e.text&&a.exportTemplet||a.templet||a.toolbar;return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(f(t).html()||String(i)).render(f.extend({LAY_COL:a},e.tplData))),e.text?f("
                                                  "+i+"
                                                  ").text():i},N="table",t=".layui-table",R="layui-hide",y="layui-hide-v",h="layui-none",L="layui-table-view",o=".layui-table-header",A=".layui-table-body",D=".layui-table-pageview",_=".layui-table-sort",E="layui-table-checked",W="layui-table-edit",j="layui-table-hover",z="laytable-cell-group",M="layui-table-col-special",H="layui-table-tool-panel",S="layui-table-expanded",F="LAY_TABLE_MOVE_DICT",e=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
                                                  ','
                                                  ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
                                                  ","
                                                  "].join("")},a=['',"","
                                                  "].join(""),s=[,"{{# if(d.data.toolbar){ }}",'
                                                  ','
                                                  ','
                                                  ',"
                                                  ","{{# } }}",'
                                                  ',"{{# if(d.data.loading){ }}",'
                                                  ','',"
                                                  ","{{# } }}","{{# var left, right; }}",'
                                                  ',e(),"
                                                  ",'
                                                  ',a,"
                                                  ","{{# if(left){ }}",'
                                                  ','
                                                  ',e({fixed:!0}),"
                                                  ",'
                                                  ',a,"
                                                  ","
                                                  ","{{# }; }}","{{# if(right){ }}",'
                                                  ','
                                                  ',e({fixed:"right"}),'
                                                  ',"
                                                  ",'
                                                  ',a,"
                                                  ","
                                                  ","{{# }; }}","
                                                  ","{{# if(d.data.totalRow){ }}",'
                                                  ','','',"
                                                  ","
                                                  ","{{# } }}",'
                                                  ','
                                                  ',"
                                                  "].join(""),d=f(window),I=f(document),i=function(e){this.index=++k.index,this.config=f.extend({},this.config,k.config,e),this.render()},c=(i.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},i.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=f(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(w.that[i]=t,(w.config[i]=a).request=f.extend({pageName:"page",limitName:"limit"},a.request),a.response=f.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-\d+$/.test(a.height)?(t.fullHeightGap=a.height.split("-")[1],a.height=d.height()-t.fullHeightGap):a.height&&/^#\w+\S*-\d+$/.test(a.height)&&(i=a.height.split("-"),t.parentHeightGap=i.pop(),t.parentDiv=i.join("-"),a.height=f(t.parentDiv).height()-t.parentHeightGap);var l,e=a.elem,i=e.next("."+L),n=t.elem=f("
                                                  ");n.addClass((l=[L,L+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr({"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,"lay-id":a.id,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))}).html(m(s,{open:"{{",close:"}}"}).render({data:a,index:t.index})),t.renderStyle(),i[0]&&i.remove(),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(A),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(".layui-table-fixed-r"),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},i.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},i.prototype.setInit=function(e){var l,a,d=this,r=d.config;if(r.clientWidth=r.width||(l=function(e){var t,a=(e=e||r.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return r.clientWidth;r.height=r.maxHeight||r.height,r.css&&-1===r.css.indexOf(L)&&(a=r.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+L+"-"+d.index+" "+t)}),r.css=a.join("}"));var c=function(a,e,i,l){var n,o;l?(l.key=[r.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,d.initOpts(l),(n=a+(parseInt(l.rowspan)||1)) td:hover > .layui-table-cell{overflow: auto;}"].concat(x.ie?[".layui-table-edit{height: "+i+";}","td[data-edit]:hover:after{height: "+i+";}"]:[]),function(e,t){t&&o.push(a+" "+t)})),l.css&&o.push(l.css),r.style({target:this.elem[0],text:o.join(""),id:"DF-table-"+n})},i.prototype.renderToolbar=function(){var e=this.config,t=['
                                                  ','
                                                  ','
                                                  '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=f(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
                                                  ')}),this.layTool.find(".layui-table-tool-self").html(l.join(""))},i.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=f('
                                                  ');t.pagebar&&((e=f(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},i.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](R),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},i.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},i.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+z)).css("width",0),layui.each(e.get().reverse(),function(){var e=f(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){f(this).hasClass(R)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.cssRules(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"
                                                  ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(R),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(D).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth()},i.prototype.page=1,i.prototype.pullData=function(a,t){var e,i,l=this,n=l.config,o=(n.HAS_SET_COLS_PATCH||l.setColsPatch(),n.HAS_SET_COLS_PATCH=!0,n.request),d=n.response,r=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:t.type})},c=function(e,t){l.setColsWidth(),"function"==typeof n.done&&n.done(e,a,e[d.countName],t)};t=t||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),t.renderData?((e={})[d.dataName]=k.cache[l.key],e[d.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[d.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},l.totalRow)),l.renderData({res:e,curr:a,count:e[d.countName],type:t.type,sort:!0}),c(e,"renderData")):n.url?(i={},n.page&&(i[o.pageName]=a,i[o.limitName]=n.limit),o=f.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(),f.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},complete:function(e,t){"function"==typeof n.complete&&n.complete(e,t)},success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[d.statusName]!=d.statusCode?l.errorView(e[d.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+d.statusName+'": '+d.statusCode):(l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),n.time=(new Date).getTime()-l.startTime+" ms"),c(e)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=a*n.limit-n.limit,o=n.data.concat(),e[d.dataName]=n.page?o.splice(i,n.limit):o,e[d.countName]=n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},n.totalRow)),l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),c(e))},i.prototype.eachCols=function(e){return k.eachCols(null,e,this.config.cols),this},i.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return b.error(t),{}}},i.prototype.getTrHtml=function(a,l,n,e){var s=this,u=s.config,y=e&&e.trs||[],h=e&&e.trs_fixed||[],p=e&&e.trs_fixed_r||[];return n=n||1,layui.each(a,function(e,o){var i=[],d=[],r=[],c=e+u.limit*(n-1)+1;if("object"!=typeof o){a[e]=o={LAY_KEY:o};try{k.cache[s.key][e]=o}catch(t){}}"array"===layui.type(o)&&0===o.length||(o[k.config.numbersName]=c,l||(o[k.config.indexName]=e),s.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=o[e];n!==undefined&&null!==n||(n=""),l.colGroup||(e=['','
                                                  "+function(){var e,t=f.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(f(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
                                                  "].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&d.push(e),"right"===l.fixed&&r.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+E+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+d.join("")+""),p.push(""+r.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:p}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},i.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,d=t[i.response.dataName]||[],t=t[i.response.totalRowName],r=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(d,o,l,{trs:r,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(r.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,p.close(a.tipsIndex)};return k.cache[a.key]=d,a.layTotal[0==d.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](R),a.layPage.find(D)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](y),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(R),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(R),void(i.page&&(i.page=f.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,P.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},i.prototype.renderTotal=function(e,o){var d,r=this,c=r.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||r.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),r.dataTotal=[],d=[],r.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&T.call(r,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&r.dataTotal.push({field:t.field,total:f("
                                                  "+l+"
                                                  ").text()}),['','
                                                  "+("string"==typeof(a=t.totalRow||c.totalRow)?m(a).render(f.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
                                                  "].join(""));d.push(n)}),e=r.layTotal.find(".layui-table-patch"),r.layTotal.find("tbody").html(""+d.join("")+(e.length?e.get(0).outerHTML:"")+""))},i.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},i.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},i.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}),v.render(t))},i.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},i.prototype.setRowChecked=function(a){var e=this,i=e.config,l=e.layBody.find("tr"+("all"===a.index?"":'[data-index="'+a.index+'"]')),t=(a=f.extend({type:"checkbox"},a),k.cache[e.key]),n="checked"in a,o=function(e){return"radio"===a.type||(n?a.checked:!e)},t=(layui.each(t,function(e,t){"array"===layui.type(t)||t[i.disabledName]||(Number(a.index)===e||"all"===a.index?(e=t[i.checkName]=o(t[i.checkName]),l[e?"addClass":"removeClass"](E),"radio"===a.type&&l.siblings().removeClass(E)):"radio"===a.type&&delete t[i.checkName])}),l.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[a.type]||"checkbox")+'"]:not(:disabled)'));t.prop("checked",o(t.last().prop("checked"))),e.syncCheckAll(),e.renderForm(a.type)},i.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(d=l.field,t.layHeader.find("th").each(function(e,t){var a=f(this),i=a.data("field");if(i===l.field)return l.field=a,d=i,!1}));try{var d=d||l.field.data("field"),r=l.field.data("key");if(t.sortKey&&!l.pull&&d===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+r).find(_);t.layHeader.find("th").find(_).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){b.error("Table modules: sort field '"+d+"' not matched")}t.sortKey={field:d,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,d,null,!0):"desc"===l.type?e=layui.sort(o,d,!0,!0):(e=layui.sort(o,k.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:d,type:l.type},layui.event.call(l.field,N,"sort("+n+")",f.extend({config:i},i.initSort)))},i.prototype.loading=function(e){var t=this;t.config.loading&&(e?(t.layInit&&t.layInit.remove(),delete t.layInit,t.layBox.find(".layui-table-init").remove()):(t.layInit=f(['
                                                  ','',"
                                                  "].join("")),t.layBox.append(t.layInit)))},i.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];r.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),!0})},i.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=d.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap&&(l=f(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135),1
                                                  ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(A).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0');a.html(t),u.height&&a.css("max-height",u.height-(s.layTool.outerHeight()||50)),i.find("."+H)[0]||i.append(a),s.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),I.trigger("table.tool.panel.remove"),p.close(s.tipsIndex),t){case"LAYTABLE_COLS":n({list:(a=[],s.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
                                                • "+(t.fieldTitle||t.title||t.field)+"
                                                • ").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=f(e.elem),t=this.checked,a=e.data("key"),i=s.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,s.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](R),l!=i.hide&&s.setParentCol(!t,e),s.resize(),layui.event.call(this,N,"colToggled("+c+")",{col:i,config:u}))})}});break;case"LAYTABLE_EXPORT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});x.ie?p.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):n({list:['
                                                • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
                                                • ','
                                                • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
                                                • '].join(""),done:function(e,t){t.on("click",function(){var e=f(this).data("type");k.exportFile.call(s,u.id,null,e)})}});break;case"LAYTABLE_PRINT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});var o=window.open("about:blank","_blank"),d=[""].join(""),r=f(s.layHeader.html());r.append(s.layMain.find("table").html()),r.append(s.layTotal.find("table").html()),r.find("th.layui-table-patch").remove(),r.find("thead>tr>th."+M).filter(function(e,t){return!f(t).children("."+z).length}).remove(),r.find("tbody>tr>td."+M).remove(),o.document.write(d+r.prop("outerHTML")),o.document.close(),layui.device("edg").edg?(o.onafterprint=o.close,o.print()):(o.print(),o.close())}layui.event.call(this,N,"toolbar("+c+")",f.extend({event:t,config:u},{}))}),s.layHeader.on("click","*[lay-event]",function(e){var t=f(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=s.col(t);layui.event.call(this,N,"colTool("+c+")",f.extend({event:a,config:u,col:t},{}))}),s.layPagebar.on("click","*[lay-event]",function(e){var t=f(this).attr("lay-event");layui.event.call(this,N,"pagebar("+c+")",f.extend({event:t,config:u},{}))}),e.on("mousemove",function(e){var t=f(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(d.allowResize=t.width()-e<=10,o.css("cursor",d.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||o.css("cursor","")}).on("mousedown",function(e){var t,a=f(this);d.allowResize&&(t=a.data("key"),e.preventDefault(),d.offset=[e.clientX,e.clientY],s.cssRules(t,function(e){var t=e.style.width||a.outerWidth();d.rule=e,d.ruleWidth=parseFloat(t),d.minWidth=a.data("minwidth")||u.cellMinWidth,d.maxWidth=a.data("maxwidth")||u.cellMaxWidth}),a.data(F,d),w.eventMoveElem=a)}),w.docEvent||I.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(F)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+L).attr("lay-id"),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),p.close(s.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+L).attr("lay-id"),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),d={},o.css("cursor",""),a.scrollPatch(),t.removeData(F),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],N,"colResized("+n+")",{col:l,config:a.config})}))}),w.docEvent=!0,e.on("click",function(e){var t=f(this),a=t.find(_),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");s.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(_+" .layui-edge ").on("click",function(e){var t=f(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?s.sort({field:t,type:"asc",fromEvent:!0}):s.sort({field:t,type:"desc",fromEvent:!0})}),s.commonMember=function(e){var t=f(this).parents("tr").eq(0).data("index"),r=s.layBody.find('tr[data-index="'+t+'"]'),c=(c=k.cache[s.key]||[])[t]||{},a={tr:r,config:u,data:k.clearCacheKey(c),dataCache:c,index:t,del:function(){k.cache[s.key][t]=[],r.remove(),s.scrollPatch()},update:function(e,d){e=e||{},layui.each(e,function(i,l){var n=r.children('td[data-field="'+i+'"]'),o=n.children(y);c[i]=a.data[i]=l,s.eachCols(function(e,t){var a;t.field==i?(o.html(T.call(s,{item3:t,content:l,tplData:f.extend({LAY_COL:t},c)})),n.data("content",l)):d&&(t.templet||t.toolbar)&&(e=r.children('td[data-field="'+(t.field||e)+'"]'),a=c[t.field],e.children(y).html(T.call(s,{item3:t,content:a,tplData:f.extend({LAY_COL:t},c)})),e.data("content",a))})}),s.renderForm()},setRowChecked:function(e){s.setRowChecked(f.extend({index:t},e))}};return f.extend(a,e)}),a=(s.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=(s.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?s.setRowChecked({index:"all",checked:l}):(s.setRowChecked({index:i,checked:l}),layui.stope(e)),layui.event.call(t[0],N,"checkbox("+c+")",r.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return s.col(a.data("key"))}})))}),s.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;s.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],N,"radio("+c+")",r.call(t[0],{checked:i,getCol:function(){return s.col(a.data("key"))}}))}),s.layBody.on("mouseenter","tr",function(){var e=f(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").addClass(j)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").removeClass(j)}).on("click","tr",function(e){var t=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");f(e.target).is(t)||f(e.target).closest(t)[0]||a.call(this,"row")}).on("dblclick","tr",function(){a.call(this,"rowDouble")}).on("contextmenu","tr",function(e){u.defaultContextmenu||e.preventDefault(),a.call(this,"rowContextmenu")}),function(e){var t=f(this);t.data("off")||layui.event.call(this,N,e+"("+c+")",r.call(t.children("td")[0]))}),n=function(e,t){var a,i,l,n;(e=f(e)).data("off")||(a=e.data("field"),n=e.data("key"),n=s.col(n),i=e.closest("tr").data("index"),i=k.cache[s.key][i],l=e.children(y),(n="function"==typeof n.edit?n.edit(i):n.edit)&&((n=f("textarea"===n?'':''))[0].value=e.data("content")||i[a]||l.text(),e.find("."+W)[0]||e.append(n),n.focus(),t)&&layui.stope(t))},i=(s.layBody.on("change","."+W,function(){var e=f(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[s.key][e],l=r.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return s.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],N,"edit("+c+")",l)}).on("blur","."+W,function(){f(this).remove()}),s.layBody.on(u.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),s.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=f(this),a=t.children(y);t.data("off")||t.parent().hasClass(S)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.outerWidth()||0
                                                  '))},l=function(e){var t=f(this),a=t.parent(),i=a.data("key"),l=s.col(i),n=a.parent().data("index"),a=a.children(y),o="layui-table-cell-c",d=f('');"tips"===(l.expandedMode||u.cellExpandedMode)?s.tipsIndex=p.tips(['
                                                  ',a.html(),"
                                                  ",''].join(""),a[0],{tips:[3,""],time:-1,anim:-1,maxWidth:x.ios||x.android?300:s.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){p.close(t)})}}):(s.elem.find("."+o).trigger("click"),s.cssRules(i,function(e){var t=e.style.width,a=l.expandedWidth||u.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],f(this).children().each(function(e){var t=f(this),a=t.attr("lay-data"),a=r.options(this,{attr:a?"lay-data":null,errorText:d+(a||t.attr("lay-options"))}),t=f.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=f(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),c(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')))}),d.push(n.join(","))}),c&&layui.each(c.dataTotal,function(e,t){r[t.field]||i.push('"'+(t.total||"")+'"')}),o.join(",")+"\r\n"+d.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l)&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))})})),f("."+H).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return(e=C(e)).reload(t,a,i),w.call(e)},k.reloadData=function(){var a=f.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new i(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=f.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),n(N,k)});layui.define(["table"],function(e){"use strict";var E=layui.$,x=layui.form,B=layui.table,y=layui.hint(),j={config:{},on:B.on,eachCols:B.eachCols,index:B.index,set:function(e){var t=this;return t.config=E.extend({},t.config,e),t},resize:B.resize,getOptions:B.getOptions,hideCol:B.hideCol,renderData:B.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){j.reloadData(n,e,t)}}},P=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},F="layui-hide",L=".layui-table-main",q=".layui-table-fixed-l",R=".layui-table-fixed-r",l="layui-table-checked",h="layui-table-tree",Y="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",s="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",H="LAY_EXPAND",z="LAY_HAS_EXPANDED",X="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=function(e){var t=this;t.index=++j.index,t.config=E.extend(!0,{},t.config,j.config,e),t.init(),t.render()},f=function(n,i,e){var l=B.cache[n];layui.each(e||l,function(e,t){var a=t[Y];-1!==a.indexOf("-")&&(l[a]=t),t[i]&&f(n,i,t[i])})},d=function(l,a,e){var d=P(l),r=("reloadData"!==e&&(d.status={expand:{}}),E.extend(!0,{},d.getOptions(),a)),n=r.tree,o=n.customName.children,i=n.customName.id,c=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,B.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},r.cols),a.parseData),u=a.done;r.url?e&&(!c||c.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(c)&&(a=c.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=d.flatToTree(a[t])),p(a[t],function(e){e[H]=H in e?e[H]:e[i]!==undefined&&d.status.expand[e[i]]},o),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),d.initData(a[t]),a},a.parseData.mod=!0):(a.data=a.data||[],n.data.isSimpleData&&(a.data=d.flatToTree(a.data)),d.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n=(a||delete d.isExpandAll,this.elem.next()),i=(d.updateStatus(null,{LAY_HAS_EXPANDED:!1}),f(l,o),n.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(i.length&&(e=j.checkStatus(l),i.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!a&&r.autoSort&&r.initSort&&r.initSort.type&&j.sort(l),d.renderTreeTable(n),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0)};t.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),B.render(E.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},t.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},t.prototype.getOptions=function(){return this.tableIns?B.getOptions(this.tableIns.config.id):this.config},t.prototype.flatToTree=function(e){var a,n,i,t,l,d,r,o=this.getOptions(),c=o.tree,u=c.customName,o=o.id;return e=e||B.cache[o],o=e,a=u.id,n=u.pid,i=u.children,t=c.data.rootPid,a=a||"id",n=n||"parentId",i=i||"children",r={},layui.each(o,function(e,t){l=a+t[a],r[l]=E.extend({},t),r[l][i]=[]}),layui.each(r,function(e,t){(d=a+t[n])&&r[d]&&r[d][i].push(t)}),Object.values(r).filter(function(e){return t?e[n]===t:!e[n]})},t.prototype.treeToFlat=function(e,n,i){var l=this,d=l.getOptions().tree.customName,r=d.children,o=d.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=E.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},t.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[Y],getParentNode:function(){return n.getNodeByIndex(e[s])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeByIndex=function(t){var a,e,n=this,i=n.getNodeDataByIndex(t);return i?((e=n.getOptions()).tree.customName.parent,a=e.id,(e={data:i,dataIndex:i[Y],getParentNode:function(){return n.getNodeByIndex(i[s])},update:function(e){return j.updateNode(a,t,e)},remove:function(){return j.removeNode(a,t)},expand:function(e){return j.expandNode(a,E.extend({},e,{index:t}))},setChecked:function(e){return j.setRowChecked(a,E.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=j.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[Y],!0}),i)return this.getNodeByIndex(i)},t.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=B.cache[n],l=n[e];if("delete"!==a&&l)return E.extend(l,a),t?E.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o
                                                  '),N=function(e){y[X]="success",y[s.children]=e,c.initData(y[s.children],y[Y]),U(t,!0,!p&&n,i,l)},C=m.format,"function"===layui.type(C)?C(y,o,N):(I=E.extend({},m.where||o.where),C=m.autoParam,layui.each(C,function(e,t){t=t.split("=");I[t[0].trim()]=y[(t[1]||t[0]).trim()]}),(C=m.contentType||o.contentType)&&0==C.indexOf("application/json")&&(I=JSON.stringify(I)),w=m.method||o.method,D=m.dataType||o.dataType,T=m.jsonpCallback||o.jsonpCallback,k=m.headers||o.headers,_=m.parseData||o.parseData,O=m.response||o.response,E.ajax({type:w||"get",url:b,contentType:C,data:I,dataType:D||"json",jsonpCallback:T,headers:k||{},success:function(e){(e="function"==typeof _?_.call(o,e)||e:e)[O.statusName]!=O.statusCode?(y[X]="error",g.html('')):N(e[O.dataName])},error:function(e,t){y[X]="error","function"==typeof o.error&&o.error(e,t)}})),h;y[z]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((m=o.initSort).type?layui.sort(v,m.field,"desc"===m.type,!0):layui.sort(v,B.config.indexName,null,!0)),c.initData(y[s.children],y[Y]),w=B.getTrHtml(r,v,null,null,e),S={trs:E(w.trs.join("")),trs_fixed:E(w.trs_fixed.join("")),trs_fixed_r:E(w.trs_fixed_r.join(""))},A=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){S.trs.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed_r.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A})}),d.find(L).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs),d.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed),d.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed_r),c.renderTreeTable(S.trs,A),n)&&!p&&layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)})}else c.isExpandAll=!1,(n&&!p?(layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)}),d.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(","))):(b=c.treeToFlat(v,y[s.id],e),d.find(b.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))).addClass(F);V("resize-"+r,function(){j.resize(r)},0)(),l&&"loading"!==y[X]&&(C=u.callback.onExpand,"function"===layui.type(C))&&C(r,y,x)}return h},g=(j.expandNode=function(e,t){var a,n,i,e=P(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),U({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},j.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=P(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),d=i.customName.isParent,r=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=j.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[X])return!(c=!1)}),!c)return void layui.each(j.getData(a),function(e,t){j.expandNode(a,{index:t[Y],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[z])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),l.find('tbody tr[data-level!="0"]').removeClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[z]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return j.sort(a);var s,n=B.getTrHtml(a,e),f={trs:E(n.trs.join("")),trs_fixed:E(n.trs_fixed.join("")),trs_fixed_r:E(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[Y].split("-").length-1;s={"data-index":t[Y],"lay-data-index":t[Y],"data-level":a},f.trs.eq(e).attr(s),f.trs_fixed.eq(e).attr(s),f.trs_fixed_r.eq(e).attr(s)}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!1,e[r]!==undefined)&&(t.status.expand[e[r]]=!1)}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);j.resize(a)}},t.prototype.renderTreeTable=function(e,t,a){var n=this,i=n.getOptions(),l=i.elem.next(),d=(l.hasClass(h)||l.addClass(h),i.id),r=i.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(l.attr("lay-filter"),n),f=((t=t||0)||(l.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(B.cache[d],function(e,t){l.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y])})),null),y=c.name,p=o.indent||14;if(layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=E(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=l.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[H]&&a[u]&&((f=f||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
                                                  ',a[H]?o.flexIconOpen:o.flexIconClose,"
                                                  ",o.showIcon?'
                                                  '+(a[c.icon]||o.icon||(a[u]?a[H]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
                                                  ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),U({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&n.isExpandAll===undefined)return j.expandAll(d,!0);!1!==a&&f?layui.each(f,function(e,t){e=l.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),U({trElem:e.first()},!0)}):V("renderTreeTable-"+d,function(){i.hasNumberCol&&g(n),x.render(E('.layui-table-tree[lay-id="'+d+'"]'))},0)()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),d=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(B.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[Y]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),d.eq(e).find(".laytable-cell-numbers").html(n))})}),p=(t.prototype.render=function(e){var t=this;t.tableIns=B["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,E.extend(!0,{},t.config)),t.config=t.tableIns.config},t.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),d(n.getOptions().id,e,a||!0),n.config=E.extend(t,{},n.config,e),n.render(a)},j.reloadData=function(){var e=E.extend(!0,[],arguments);return e[3]="reloadData",j.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):E.extend(t,a),l.push(E.extend({},t)),i||(l=l.concat(p(t[n],a,n,i)))}),l}),o=(t.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||B.cache[n.id],p(e,t,i.customName.children,a)},t.prototype.getTableData=function(){var e=this.getOptions();return B.cache[e.id]},j.updateStatus=function(e,t,a){var e=P(e),n=e.getOptions();return a=a||(n.url?B.cache[n.id]:n.data),e.updateStatus(a,t)},j.sort=function(e){var t=P(e);t&&t.getOptions().autoSort&&(t.initData(),j.renderData(e))},function(n){var t=n.config.id,i=P(t),a=n.data=j.getNodeDataByIndex(t,n.index),l=a[Y],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(E.extend(i.getNodeDataByIndex(l),e[0]),d.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){j.removeNode(t,a)},n.setRowChecked=function(e){j.setRowChecked(t,{index:a,checked:e})}}),u=(j.updateNode=function(e,a,t){var n,i,l,d,r,o=P(e);o&&((d=o.getOptions()).tree,d=(n=d.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=d.attr("data-index"),l=d.attr("data-level"),t)&&(d=o.getNodeDataByIndex(a,!1,t),r=B.getTrHtml(e,[d]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(E(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},j.removeNode=function(e,t){var a,n,i,l,d,r=P(e);r&&(d=(a=r.getOptions()).tree,n=a.elem.next(),i=[],t=r.getNodeDataByIndex("string"===layui.type(t)?t:t[Y],!1,"delete"),l=r.getNodeDataByIndex(t[s]),r.updateCheckStatus(l),l=r.treeToFlat([t],t[d.customName.pid],t[s]),layui.each(l,function(e,t){i.push('tr[lay-data-index="'+t[Y]+'"]')}),n.find(i.join(",")).remove(),d=r.initData(),layui.each(r.treeToFlat(d),function(e,t){t[m]&&t[m]!==t[Y]&&n.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[Y],"lay-data-index":t[Y]})}),layui.each(B.cache[e],function(e,t){n.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.hasNumberCol&&g(r),j.resize(e))},j.addNodes=function(e,t){var a=P(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=B.config.checkName,r=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,o="number"===layui.type(o)?o:-1,c=E.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){d in t||(t[d]=u[d])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[z]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")).remove(),a.initData(),u[z]=!1,u[X]="local",U({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=B.cache[e].splice(-1===o?B.cache[e].length:o);if(B.cache[e]=B.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(B.cache[e]))):n.data=B.cache[e]),a.initData(),l.find(".layui-none").length)return B.renderData(e),c;var x,f=B.getTrHtml(e,c),h={trs:E(f.trs.join("")),trs_fixed:E(f.trs_fixed.join("")),trs_fixed_r:E(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[Y],"lay-data-index":t[Y],"data-level":"0"},h.trs.eq(e).attr(x),h.trs_fixed.eq(e).attr(x),h.trs_fixed_r.eq(e).attr(x)}),parseInt(c[0][Y])-1),y=l.find(L),n=l.find(q),f=l.find(R);-1==r?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(r=p[0][m],y.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed_r)),layui.each(B.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))}return a.updateCheckStatus(u),j.resize(e),t&&l.find(L).find('tr[lay-data-index="'+c[0][Y]+'"]').get(0).scrollIntoViewIfNeeded(),c}},j.checkStatus=function(e,n){var i,t,a,l=P(e);if(l)return l=l.getOptions().tree,i=B.config.checkName,t=j.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each("all"===l.data.cascade?B.cache[e]:j.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},j.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&j.sort(e)}),j.on("row",function(e){e.config.elem.next().hasClass(h)&&o(e)}),j.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),(t.tree||{}).view.dblClickExpand)&&U({trElem:e.tr.first()},null,null,null,!0)}),j.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),j.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=P(t),o(e),u.call(a,e.tr,e.checked))}),t.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=E(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},t.prototype.updateCheckStatus=function(e,t){var a,n,i,l,d,r,o,c=this,u=c.getOptions();return!!u.hasChecboxCol&&(a=u.tree,n=u.id,i=u.elem.next(),l=B.config.checkName,"all"!==(d=a.data.cascade)&&"parent"!==d||!e||(d=c.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(d,function(e,t){var a=i.find('tr[lay-data-index="'+t[Y]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),x.render(a.prop({checked:n,indeterminate:t[b]}))})),o=!(r=!0),e=(e="all"===a.data.cascade?B.cache[n]:j.getData(n,!0)).filter(function(e){return!e[u.disabledName]}),layui.each(e,function(e,t){if((t[l]||t[b])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}),o=o&&!r,x.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o})),r)},t.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=B.config.checkName,t=t.customName.children,d=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
                                                  '+i.text.none+"
                                                  "),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(F),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(F)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(r,e){var d=this,s=d.config,o=s.customName,e=e||s.data;layui.each(e,function(e,i){var a,n,t=i[o.children]&&0"),c=p(['
                                                  ','
                                                  ','
                                                  ',s.showLine?t?'':'':'',s.showCheckbox?'':"",s.isJump&&i.href?''+(i[o.title]||i.label||s.text.defaultNodeName)+"":''+(i[o.title]||i.label||s.text.defaultNodeName)+"","
                                                  ",s.edit?(a={add:'',update:'',del:''},n=['
                                                  '],!0===s.edit&&(s.edit=["update","del"]),"object"==typeof s.edit?(layui.each(s.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
                                                  "):void 0):"","
                                                  "].join(""));t&&(c.append(l),d.tree(l,i[o.children])),r.append(c),c.prev("."+m)[0]&&c.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),t||c.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),d.spread(c,i),s.showCheckbox&&(i.checked&&d.checkids.push(i[o.id]),d.checkClick(c,i)),s.edit&&d.operate(c,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+x),i=e.children("."+b),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+k),e=e.find("."+g),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+w),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(N)?(n.removeClass(N),i.slideUp(200),a.removeClass(v).addClass(C),l.updateFieldValue(t,"spread",!1)):(n.addClass(N),i.slideDown(200),a.addClass(v).removeClass(C),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+m)).removeClass(N),i.children("."+w).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(v).addClass(C))):s="normal"}),e.on("click",function(){p(this).hasClass(u)||(s=n.hasClass(N)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+w)[0]||e.find("."+w).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+m)[0]&&(a=(e=e.parent("."+w)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+x).children("."+b).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+x),h=e.children("."+b);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+w),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+k).addClass("layui-tree-icon"),h.find("."+k).children(".layui-icon").addClass(C).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(f),r.append('
                                                  '));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+w),[c]),o.showLine&&(n[0]?(n.hasClass(L)||n.addClass(L),r.find("."+w).each(function(){p(this).children("."+m).last().addClass(F)}),(n.children("."+m).last().prev().hasClass(F)?n.children("."+m).last().prev():n.children("."+m).last()).removeClass(F),!r.parent("."+w)[0]&&r.next()[0]&&n.children("."+m).last().removeClass(F)):(l=r.siblings("."+m),a=1,c=r.parent("."+w),layui.each(l,function(e,i){p(i).children("."+w)[0]||(a=0)}),(1==a?(l.children("."+w).addClass(T),l.children("."+w).children("."+m).removeClass(F),r.children("."+w).addClass(T),c.removeClass(L),c.children("."+m).last().children("."+w).children("."+m).last()):r.children("."+w).children("."+m)).addClass(F))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+w).children("."+m).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+g).html(),h.children("."+g).html(""),h.append(''),h.children(".layui-tree-editInput").val(l).focus(),i=function(e){var i=e.val().trim()||o.text.defaultNodeName;e.remove(),h.children("."+g).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d[u.title]||"")+'" \u5417\uff1f',function(e){var l,a,i;o.operate&&o.operate(t),t.status="remove",y.close(e),r.prev("."+m)[0]||r.next("."+m)[0]||r.parent("."+w)[0]?(r.siblings("."+m).children("."+x)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+m)[0]&&(i=e.siblings("."+m).children("."+x),a=(e=e.parent("."+w).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked)&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n)&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+m)))})(r),o.showLine&&(e=r.siblings("."+m),a=1,i=r.parent("."+w),layui.each(e,function(e,i){p(i).children("."+w)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(L),e.children("."+w).addClass(T),e.children("."+w).children("."+m).removeClass(F)),(r.next()[0]?i.children("."+m).last():r.prev()).children("."+w).children("."+m).last().addClass(F),r.next()[0]||r.parents("."+m)[1]||r.parents("."+m).eq(0).next()[0]||r.prev("."+m).addClass(F)):!r.next()[0]&&r.hasClass(F)&&r.prev().addClass(F))):(e=r.parent("."+w).prev(),o.showLine?(e.find("."+k).removeClass("layui-tree-icon"),e.find("."+k).children(".layui-icon").removeClass(v).addClass("layui-icon-file"),(i=e.parents("."+w).eq(0)).addClass(L),i.children("."+m).each(function(){p(this).children("."+w).children("."+m).last().addClass(F)})):e.find(".layui-tree-iconArrow").addClass(f),r.parents("."+m).eq(0).removeClass(N),r.parent("."+w).remove()),r.remove()):(r.remove(),s.elem.append(s.elemNone))})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+g).each(function(){var i,e=p(this).parents("."+x);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+w)[0]&&i(e.parent("."+w).parent("."+m))})(e.parent("."+m)))}),e.find("."+x).each(function(){var e=p(this).parent("."+m);e.hasClass("layui-tree-searchShow")||e.addClass(f)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+x).each(function(){p(this).parent("."+m).removeClass("layui-tree-searchShow "+f)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+m).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+x).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var s=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=s.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},d="layui-hide",h="layui-btn-disabled",r="layui-none",c="layui-transfer-box",u="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
                                                  ','
                                                  ','","
                                                  ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
                                                    ',"
                                                    "].join("")},p=['
                                                    ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
                                                    ','",'","
                                                    ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
                                                    "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=s.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=s.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=s(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=s(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+c),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
                                                  • ",'',"
                                                  • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(r){var c=this,o=c.config;r=r||{},c.layBox.each(function(e){var t=s(this),a=t.find("."+f),t=t.find("."+u).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=s(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),c.layBtn.eq(e)[l?"removeClass":"addClass"](h),r.stopNone||(i=a.children("li:not(."+d+")").length,c.noneView(a,i?"":o.text.none))}),c.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=s('

                                                    '+(t||"")+"

                                                    ");e.find("."+r)[0]&&e.find("."+r).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){s(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=s.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),r=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+c).find("."+f).append(t.clone()),t.remove(),r.push(a[0].value),i.setValue()):l.each(function(e){s(this).find("."+f).children("li").each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+c).find("."+f).append(e.clone()),e.remove(),r.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+c).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(r),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=s(this).prev(),t=e[0].checked,a=e.parents("."+c).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=s(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent();a[0].disabled||n.transfer(i.data("index"),t)}),n.layBtn.on("click",function(){var e=s(this),t=e.data("index");e.hasClass(h)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=s(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](d),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+d).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,t=layui.lay,o=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,r,e,i)}}),r="carousel",d="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",m="layui-carousel-next",l="layui-carousel-arrow",f="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,o.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(d),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+l)[0]&&e.elem.find("."+l).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
                                                      ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
                                                    "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+f)[0]&&n.elem.find("."+f).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(m),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(d+" "+c+" "+m+" "+s+" "+u),t.eq(a.index).addClass(d),n.haveSlide=!1},350),n.elemInd.find("li").eq(a.index).addClass(d).siblings().removeClass(d),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,r,"change("+l+")",e))},i.prototype.events=function(){var e=this,i=e.config;i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){"always"!==e.config.autoplay&&clearInterval(e.timer)}).on("mouseleave",function(){"always"!==e.config.autoplay&&e.autoplay()}),i.elem.data("haveEvents",!0))},o.render=function(e){return new i(e)},e(r,o)});layui.define(["jquery","lay"],function(e){"use strict";var s=layui.jquery,r=layui.lay,c={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var a=this;return a.config=s.extend({},a.config,e),a},on:function(e,a){return layui.onevent.call(this,l,e,a)}},l="rate",f="layui-icon-rate",h="layui-icon-rate-solid",o="layui-icon-rate-half",u="layui-icon-rate-solid layui-icon-rate-half",v="layui-icon-rate layui-icon-rate-half",a=function(e){var a=this;a.index=++c.index,a.config=s.extend({},a.config,c.config,e),a.render()};a.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},a.prototype.render=function(){var e=this,a=e.config,l=s(a.elem);if(1a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
                                                      "),t=1;t<=a.length;t++){var o='
                                                    • ";a.half&&parseInt(a.value)!==a.value&&t==Math.ceil(a.value)?n=n+'
                                                    • ":n+=o}n+="
                                                    "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,u=l.next(".layui-rate");u[0]&&u.remove(),e.elemTemp=s(n),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var i=this.config,n=this.elemTemp,t=n.find("i").width();n.children("li").each(function(e){var a=e+1,l=s(this);l.on("click",function(e){i.value=a,i.half&&e.pageX-s(this).offset().left<=t/2&&(i.value=i.value-.5),i.text&&n.next("span").text(i.value+"\u661f"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),l.on("mousemove",function(e){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+a+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&e.pageX-s(this).offset().left<=t/2&&l.children("i").addClass(o).removeClass(h)}),l.on("mouseleave",function(){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+Math.floor(i.value)+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&parseInt(i.value)!==i.value&&n.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})})},a.prototype.events=function(){},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(l){"use strict";var g=layui.$,e=function(l){};e.prototype.load=function(l){var t,i,o,n,e,r,a,c,m,s,u,f,y,d=this,p=0,h=g((l=l||{}).elem);if(h[0])return e=g(l.scrollElem||document),r=l.mb||50,a=!("isAuto"in l)||l.isAuto,c=l.end||"\u6ca1\u6709\u66f4\u591a\u4e86",m=l.scrollElem&&l.scrollElem!==document,u=g('"),h.find(".layui-flow-more")[0]||h.append(u),f=function(l,e){l=g(l),u.before(l),(e=0==e||null)?u.html(c):u.find("a").html(s),i=e,t=null,o&&o()},(y=function(){t=!0,u.find("a").html(''),"function"==typeof l.done&&l.done(++p,f)})(),u.find("a").on("click",function(){g(this);i||t||y()}),l.isLazyimg&&(o=d.lazyimg({elem:l.elem+" img",scrollElem:l.scrollElem})),a&&e.on("scroll",function(){var e=g(this),o=e.scrollTop();n&&clearTimeout(n),!i&&h.width()&&(n=setTimeout(function(){var l=(m?e:g(window)).height();(m?e.prop("scrollHeight"):document.documentElement.scrollHeight)-o-l<=r&&(t||y())},100))}),d},e.prototype.lazyimg=function(l){var e,c=this,m=0,s=g((l=l||{}).scrollElem||document),u=l.elem||"img",f=l.scrollElem&&l.scrollElem!==document,y=function(e,l){var o,t=s.scrollTop(),l=t+l,i=f?e.offset().top-s.offset().top+t:e.offset().top;t<=i&&i<=l&&e.attr("lay-src")&&(o=e.attr("lay-src"),layui.img(o,function(){var l=c.lazyimg.elem.eq(m);e.attr("src",o).removeAttr("lay-src"),l[0]&&n(l),m++},function(){c.lazyimg.elem.eq(m);e.removeAttr("lay-src")}))},n=function(l,e){var o=(f?e||s:g(window)).height(),t=s.scrollTop(),i=t+o;if(c.lazyimg.elem=g(u),l)y(l,o);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},W=layui.code?layui.code.index+1e4:0,R=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var o,i,t,a,n,d,c,s,r,u,y,p,E,f,h,v,m,L,_,M,C,g={config:l=x.extend(!0,{},T,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,x.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},w=x(l.elem);return 1',l.ln?['
                                                    ',D.digit(t+1)+".","
                                                    "].join(""):"",'
                                                    ',e||" ","
                                                    ",""].join("")})}},a=l.code,n=function(e){return"function"==typeof l.codeParse?l.codeParse(e,l):e},"reloadCode"===e?o.children(".layui-code-wrap").html(w(n(a)).html):(d=layui.code.index=++W,o.attr("lay-code-index",d),(M=A.CDDE_DATA_CLASS in o.data())&&o.attr("class",o.data(A.CDDE_DATA_CLASS)||""),M||o.data(A.CDDE_DATA_CLASS,o.attr("class")),c={copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var t=D.unescape(n(l.code));lay.clipboard.writeText({text:t,done:function(){N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}),"function"==typeof l.onCopy&&l.onCopy(t)}}},function b(){var e=o.parent("."+A.ELEM_PREVIEW),t=e.children("."+A.ELEM_TAB),a=e.children("."+A.ELEM_ITEM+"-preview");return t.remove(),a.remove(),e[0]&&o.unwrap(),b}(),l.preview&&(M="LAY-CODE-DF-"+d,f=l.layout||["code","preview"],s="iframe"===l.preview,E=x('
                                                    '),C=x('
                                                    '),r=x('
                                                    '),_=x('
                                                    '),u=x('
                                                    '),l.id&&E.attr("id",l.id),E.addClass(l.className),C.attr("lay-filter",M),layui.each(f,function(e,t){var a=x('
                                                  • ');0===e&&a.addClass("layui-this"),a.html(l.text[t]),r.append(a)}),x.extend(c,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,t=e.closest("."+A.ELEM_PREVIEW),a="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=x("html,body"),n="layui-scrollbar-hide";e.hasClass(a)?(t.addClass(A.ELEM_FULL),e.removeClass(a).addClass(i),e.attr("title",l[1]),o.addClass(n)):(t.removeClass(A.ELEM_FULL),e.removeClass(i).addClass(a),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){D.openWin({content:n(l.code)})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=x(this),t=e.data("type"),e={elem:e,type:t,options:l,rawCode:l.code,finalCode:D.unescape(n(l.code))};c[t]&&"function"==typeof c[t].event&&c[t].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&l.tools&&(l.tools=[].concat(l.tools,l.addTools)),layui.each(l.tools,function(e,t){var a="object"==typeof t,i=a?t:c[t]||{className:t,title:[t]},l=i.className||i.type,o=i.title||[""],a=a?i.type||l:t;a&&(c[a]||((t={})[a]=i,x.extend(c,t)),u.append(''))}),o.addClass(A.ELEM_ITEM).wrap(E),C.append(r),l.tools&&C.append(u),o.before(C),s&&_.html(''),y=function(e){var t=e.children("iframe")[0];s&&t?t.srcdoc=n(l.code):e.html(l.code),setTimeout(function(){"function"==typeof l.done&&l.done({container:e,options:l,render:function(){I.render(e.find(".layui-form")),S.render()}})},3)},"preview"===f[0]?(_.addClass(A.ELEM_SHOW),o.before(_),y(_)):o.addClass(A.ELEM_SHOW).after(_),l.previewStyle=[l.style,l.previewStyle].join(""),_.attr("style",l.previewStyle),S.on("tab("+M+")",function(e){var t=x(this),a=x(e.elem).closest("."+A.ELEM_PREVIEW).find("."+A.ELEM_ITEM),e=a.eq(e.index);a.removeClass(A.ELEM_SHOW),e.addClass(A.ELEM_SHOW),"preview"===t.attr("lay-id")&&y(e),L()})),p=x(''),o.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),(C=l.theme||l.skin)&&(o.removeClass("layui-code-theme-dark layui-code-theme-light"),o.addClass("layui-code-theme-"+C)),l.highlighter&&o.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),f=w(l.encode?D.escape(n(a)):a),h=f.lines,o.html(p.html(f.html)),l.ln&&o.append('
                                                    '),l.height&&p.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&p.attr("style",function(e,t){return(t||"")+l.codeStyle}),v=[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,t){e.style["padding-left"]=t+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,t){e.style.width=t+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,t){e.style.width=t+"px"}}],m=lay.style({target:o[0],id:"DF-code-"+d,text:x.map(x.map(v,function(e){return e.selector}),function(e,t){return['.layui-code-view[lay-code-index="'+d+'"]',e].join(" ")}).join("")}),L=function b(){var e,i;return l.ln&&(e=Math.floor(h.length/100),i=p.children("."+A.ELEM_LINE).last().children("."+A.ELEM_LINE_NUM).outerWidth(),o.addClass(A.ELEM_LN_MODE),e)&&A.LINE_RAW_WIDTH
                                                  • ')).html(l.title||l.text.code),o.prepend(_)),M=x('
                                                    '),l.copy&&!l.preview&&((C=x(['','',""].join(""))).on("click",function(){c.copy.event()}),M.append(C)),l.langMarker&&M.append(''+l.lang+""),l.about&&M.append(l.about),o.append(M),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+d&&"function"==typeof l.allDone&&l.allDone())),g})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss"); \ No newline at end of file diff --git a/component/pear/module/menu.js b/component/pear/module/menu.js index c125f0f..8f8715b 100644 --- a/component/pear/module/menu.js +++ b/component/pear/module/menu.js @@ -458,7 +458,6 @@ layui.define(['table', 'jquery', 'element'], function (exports) { function downShow(option) { $("body #" + option.elem).on("click", "a[menu-type='0']", function () { if (!$("#" + option.elem).is(".pear-nav-mini")) { - var superEle = $(this).parent(); var ele = $(this).next('.layui-nav-child'); var heights = ele.children("dd").length * 48; @@ -484,7 +483,6 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }); }); } else { - $(this).parent().addClass("layui-nav-itemed"); ele.animate({ height: "0px" }, 240, function () { -- Gitee From c06670acdd3a90c998256bb4917dfab8b15abe4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Tue, 7 Nov 2023 09:38:49 +0800 Subject: [PATCH 071/141] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/pear/module/admin.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index 3231e94..1e19f76 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -118,6 +118,8 @@ layui.define(['jquery', 'tools', 'element', 'yaml', 'form', 'tabPage', 'menu', ' /** * @since Pear Admin 4.0 + * + * 菜单搜索 */ this.menuSearchRender = function (options) { menuSearch.render({ @@ -157,6 +159,11 @@ layui.define(['jquery', 'tools', 'element', 'yaml', 'form', 'tabPage', 'menu', ' }) } + /** + * @since Pear Admin 4.0 + * + * 消息中心 + */ this.messageCenterRender = function (options) { messageCenter.render({ elem: '.message', @@ -170,6 +177,11 @@ layui.define(['jquery', 'tools', 'element', 'yaml', 'form', 'tabPage', 'menu', ' $(".layui-logo .title").html(param.logo.title); } + /** + * @since Pear Admin 4.0 + * + * 侧边菜单 + */ this.menuRender = function (param) { sideMenu = menu.render({ elem: 'sideMenu', @@ -193,6 +205,11 @@ layui.define(['jquery', 'tools', 'element', 'yaml', 'form', 'tabPage', 'menu', ' }); } + /** + * @since Pear Admin 4.0 + * + * 视图容器 + */ this.bodyRender = function (param) { body.on("click", ".refresh", function () { @@ -282,6 +299,11 @@ layui.define(['jquery', 'tools', 'element', 'yaml', 'form', 'tabPage', 'menu', ' document.documentElement.style.setProperty(variableKey, variableVal); } + /** + * @since Pear Admin 4.0 + * + * 主题配置 + */ this.themeRender = function (option) { if (option.theme.allowCustom === false) { $(".setting").remove(); @@ -436,6 +458,11 @@ layui.define(['jquery', 'tools', 'element', 'yaml', 'form', 'tabPage', 'menu', ' } }; + /** + * @since Pear Admin 4.0 + * + * 页面刷新 + */ function refresh() { var refreshA = $(".refresh a"); refreshA.removeClass("layui-icon-refresh-1"); @@ -454,6 +481,11 @@ layui.define(['jquery', 'tools', 'element', 'yaml', 'form', 'tabPage', 'menu', ' }, 600) } + /** + * @since Pear Admin 4.0 + * + * 菜单折叠 + */ function collapse() { sideMenu.collapse(); var admin = $(".pear-admin"); -- Gitee From 73346b8785bc886ebea1b857a5dd6e29d6f51c95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=A1=E5=AE=85=E7=94=B7?= <530765310@qq.com> Date: Wed, 8 Nov 2023 14:13:31 +0000 Subject: [PATCH 072/141] =?UTF-8?q?update=20component/pear/module/tabPage.?= =?UTF-8?q?js.=20=E8=BF=99=E4=B8=AAtypes=E6=9C=89=E4=BD=9C=E7=94=A8?= =?UTF-8?q?=E5=90=97=20=E5=9B=A0=E4=B8=BA=E6=B2=A1=E6=9C=89type=E5=80=BC?= =?UTF-8?q?=EF=BC=8C=E6=A0=87=E7=AD=BE=E7=9A=84class=E4=B8=BApear-tab=20un?= =?UTF-8?q?defined=20layui-tab-rollTool=20layui-tab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 御宅男 <530765310@qq.com> --- component/pear/module/tabPage.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/component/pear/module/tabPage.js b/component/pear/module/tabPage.js index c6b6c5f..b8f3715 100644 --- a/component/pear/module/tabPage.js +++ b/component/pear/module/tabPage.js @@ -453,7 +453,6 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { function createTab(option) { var type = ""; - var types = option.type + " "; if (option.roll == true) { type = "layui-tab-roll"; } @@ -463,7 +462,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { if (option.roll == true && option.tool != false) { type = "layui-tab-rollTool"; } - var tab = '
                                                    '; var title = '');return 0No data'),e},u=function(r,e){return layui.each(e,function(e,i){var t,n=i[s.children]&&0",(t="href"in i?''+l+"":l,n?'
                                                    '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
                                                    ":'
                                                    '+t+"
                                                    "),""].join(""))).data("item",i),n&&(a=c('
                                                    '),t=c("
                                                      "),"parent"===o?(a.append(u(t,i[s.children])),l.append(a)):l.append(u(t,i[s.children]))),r.append(l))}),r},a=['
                                                      ',"
                                                      "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(y+"_opened")||(l.elemView=c("."+g+'[lay-id="'+d.id+'"]'),"reloadData"===i&&l.elemView.length?l.elemView.html(d.content||n()):(l.elemView=c(a),l.elemView.append(d.content||n()),d.className&&l.elemView.addClass(d.className),d.style&&l.elemView.attr("style",d.style),f.thisId=d.id,l.remove(),t.append(l.elemView),d.elem.data(y+"_opened",!0),e=d.shade?'
                                                      ':"",l.elemView.before(e),"mouseenter"===d.trigger&&l.elemView.on("mouseenter",function(){clearTimeout(h.timer)}).on("mouseleave",function(){l.delayRemove()})),l.position(),(h.prevElem=l.elemView).data("prevElem",d.elem),l.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),l.elemView.find(".layui-menu li").on("click",function(e){var i=c(this),t=i.data("item")||{},n=t[s.children]&&0n.width()&&(t.addClass(x),(i=t[0].getBoundingClientRect()).left<0)&&t.removeClass(x),i.bottom>n.height())&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5))}).on("mouseleave",t,function(e){var i=c(this).children("."+C);i.removeClass(x),i.css("margin-top",0)}),f.close=function(e){e=h.getThis(e);return e?(e.remove(),h.call(e)):this},f.reload=function(e,i,t){e=h.getThis(e);return e?(e.reload(i,t),h.call(e)):this},f.reloadData=function(){var t=c.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),f.reload.apply(null,t)},f.render=function(e){e=new E(e);return h.call(e)},e(r,f)});layui.define(["jquery","lay"],function(e){"use strict";var g=layui.$,c=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var i=this;return i.config=g.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},t="slider",v="layui-disabled",x="layui-slider-bar",b="layui-slider-wrap",T="layui-slider-wrap-btn",w="layui-slider-tips",M="layui-slider-input-txt",L="layui-slider-hover",i=function(e){var i=this;i.index=++m.index,i.config=g.extend({},i.config,m.config,e),i.render()};i.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},i.prototype.render=function(){var a=this,n=a.config,e=g(n.elem);if(1n.max&&(n.value=n.max),t=Math.floor((n.value-n.min)/(n.max-n.min)*100)+"%");var l,e=n.disabled?"#c2c2c2":n.theme,i='
                                                      '+(n.tips?'
                                                      ':"")+'
                                                      '+(n.range?'
                                                      ':"")+"
                                                      ",t=g(n.elem),s=t.next(".layui-slider");if(s[0]&&s.remove(),a.elemTemp=g(i),n.range?(a.elemTemp.find("."+b).eq(0).data("value",n.value[0]),a.elemTemp.find("."+b).eq(1).data("value",n.value[1])):a.elemTemp.find("."+b).data("value",n.value),t.html(a.elemTemp),"vertical"===n.type&&a.elemTemp.height(n.height+"px"),n.showstep){for(var o=(n.max-n.min)/n.step,r="",d=1;d<1+o;d++){var u=100*d/o;u<100&&(r+='
                                                      ')}a.elemTemp.append(r)}n.input&&!n.range&&(e=g('
                                                      '),t.css("position","relative"),t.append(e),t.find("."+M).children("input").val(n.value),"vertical"===n.type?e.css({left:0,top:-48}):a.elemTemp.css("margin-right",e.outerWidth()+15)),n.disabled?(a.elemTemp.addClass(v),a.elemTemp.find("."+T).addClass(v)):a.slide(),a.elemTemp.find("."+T).on("mouseover",function(){var e="vertical"===n.type?n.height:a.elemTemp[0].offsetWidth,i=a.elemTemp.find("."+b),t=("vertical"===n.type?e-g(this).parent()[0].offsetTop-i.height():g(this).parent()[0].offsetLeft)/e*100,i=g(this).parent().data("value"),e=n.setTips?n.setTips(i):i;a.elemTemp.find("."+w).html(e),clearTimeout(l),l=setTimeout(function(){"vertical"===n.type?a.elemTemp.find("."+w).css({bottom:t+"%","margin-bottom":"20px",display:"inline-block"}):a.elemTemp.find("."+w).css({left:t+"%",display:"inline-block"})},300)}).on("mouseout",function(){clearTimeout(l),a.elemTemp.find("."+w).css("display","none")})},i.prototype.slide=function(e,i,t){var o=this,r=o.config,d=o.elemTemp,u=function(){return"vertical"===r.type?r.height:d[0].offsetWidth},c=d.find("."+b),m=d.next(".layui-slider-input"),v=m.children("."+M).children("input").val(),p=100/((r.max-r.min)/Math.ceil(r.step)),f=function(e,i,t){e=(e=100<(e=100a[1]&&a.reverse(),o.value=r.range?a:l,r.change&&r.change(o.value),"done"===t&&r.done&&r.done(o.value)},h=function(e){var i=e/u()*100/p,t=Math.round(i)*p;return t=e==u()?Math.ceil(i)*p:t},y=g(['
                                                      u()?u():i)/u()*100/p;f(i,l),s.addClass(L),d.find("."+w).show(),e.preventDefault()},i=function(){s.removeClass(L),d.find("."+w).hide()},t=function(){i&&i(),y.remove(),r.done&&r.done(o.value)},g("#LAY-slider-moving")[0]||g("body").append(y),y.on("mousemove",e),y.on("mouseup",t).on("mouseleave",t)})}),d.on("click",function(e){var i=g("."+T),t=g(this);!i.is(event.target)&&0===i.has(event.target).length&&i.length&&(t=(i=(i=(i="vertical"===r.type?u()-e.clientY+t.offset().top-g(window).scrollTop():e.clientX-t.offset().left-g(window).scrollLeft())<0?0:i)>u()?u():i)/u()*100/p,i=r.range?"vertical"===r.type?Math.abs(i-parseInt(g(c[0]).css("bottom")))>Math.abs(i-parseInt(g(c[1]).css("bottom")))?1:0:Math.abs(i-c[0].offsetLeft)>Math.abs(i-c[1].offsetLeft)?1:0:0,f(t,i,"done"),e.preventDefault())}),m.children(".layui-slider-input-btn").children("i").each(function(i){g(this).on("click",function(){v=m.children("."+M).children("input").val();var e=((v=1==i?v-r.stepr.max?r.max:Number(v)+r.step)-r.min)/(r.max-r.min)*100/p;f(e,0,"done")})});var a=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)r.max?r.max:e,((this.value=e)-r.min)/(r.max-r.min)*100/p);f(e,0,"done")};m.children("."+M).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),a.call(this))}).on("change",a)},i.prototype.events=function(){this.config},m.render=function(e){e=new i(e);return function(){var t=this,a=t.config;return{setValue:function(e,i){return e=(e=e>a.max?a.max:e)',"",'','',"","","
                                                      "].join("")),r=i.elem=k(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),r.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:r.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,r=e.elemColorBox[0],t=e.elemPicker=k(['
                                                      ','
                                                      ','
                                                      ','
                                                      ','
                                                      ','
                                                      ',"
                                                      ",'
                                                      ','
                                                      ',"
                                                      ","
                                                      ",'
                                                      ','
                                                      ','
                                                      ',"
                                                      ","
                                                      ",i.predefine?(o=['
                                                      '],layui.each(i.colors,function(e,i){o.push(['
                                                      ','
                                                      ',"
                                                      "].join(""))}),o.push("
                                                      "),o.join("")):"",'
                                                      ','
                                                      ','',"
                                                      ",'
                                                      ','','',"","
                                                      "].join(""));e.elemColorBox.find("."+C)[0];k(a)[0]&&k(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),k("body").append(t)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=r.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=k("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close)&&i.close(this.color),this},d.prototype.position=function(){var e=this,i=e.config;return t.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),r=i.elemPicker.find("."+M),t=o[0].style.backgroundColor;t?(e=Y(L(t)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?r.find("input").val(t):"rgba"===o?(o=L(t),3===(t.match(/[0-9]{1,3}/g)||[]).length?(r.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+T).css("left",280)):(r.find("input").val(t),t=280*t.slice(t.lastIndexOf(",")+1,t.length-1),i.elemPicker.find("."+T).css("left",t)),i.elemPicker.find("."+D)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):r.find("input").val("#"+F(e))):(i.select(0,100,100),r.find("input").val(""),i.elemPicker.find("."+D)[0].style.background="",i.elemPicker.find("."+T).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),r=n.elemPicker.find("."+E),f=n.elemPicker.find("."+D),u=n.elemPicker.find("."+T),g=e[0].offsetTop/180*360,p=100-(r[0].offsetTop+3)/180*100,h=(r[0].offsetLeft+3)/260*100,v=Math.round(u[0].offsetLeft/280*100)/100,b=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),y=function(e,i,o,r){n.select(e,i,o);var t=j({h:e,s:i,b:o}),e=F({h:e,s:i,b:o}),i=n.elemPicker.find("."+M).find("input");b.addClass(x).removeClass(P),c[0].style.background="rgb("+t.r+", "+t.g+", "+t.b+")","torgb"===a?i.val("rgb("+t.r+", "+t.g+", "+t.b+")"):"rgba"===a?(u.css("left",280*r),i.val("rgba("+t.r+", "+t.g+", "+t.b+", "+r+")"),c[0].style.background="rgba("+t.r+", "+t.g+", "+t.b+", "+r+")",f[0].style.background="linear-gradient(to right, rgba("+t.r+", "+t.g+", "+t.b+", 0), rgb("+t.r+", "+t.g+", "+t.b+"))"):i.val("#"+e),l.change&&l.change(k.trim(n.elemPicker.find("."+M).find("input").val()))},o=k(['
                                                      '].join("")),m=function(e){k("#LAY-colorpicker-moving")[0]||k("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var r=this.offsetTop,t=e.clientY;m(function(e){var i=r+(e.clientY-t),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;y(g=o,h,p,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-k(this).offset().top+H.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;y(g=i,h,p,v),e.preventDefault()}),r.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),m(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),r=d[0].offsetHeight-3,t=d[0].offsetWidth-3,t=((o=t<(o=o<-3?-3:o)?t:o)+3)/260*100,o=100-((i=r<(i=i<-3?-3:i)?r:i)+3)/180*100;y(g,h=t,p=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-k(this).offset().top-3+H.scrollTop(),o=e.clientX-k(this).offset().left-3+H.scrollLeft(),o=((i=i<-3?-3:i)>this.offsetHeight-3&&(i=this.offsetHeight-3),((o=(o=o<-3?-3:o)>this.offsetWidth-3?this.offsetWidth-3:o)+3)/260*100),i=100-(i+3)/180*100;y(g,h=o,p=i,v),layui.stope(e),e.preventDefault(),r.trigger(e,"mousedown")}),u.on("mousedown",function(e){var r=this.offsetLeft,t=e.clientX;m(function(e){var i=r+(e.clientX-t),o=f[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);y(g,h,p,v=o),e.preventDefault()}),e.preventDefault()}),f.on("click",function(e){var i=e.clientX-k(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);y(g,h,p,v=i),e.preventDefault()}),i.each(function(){k(this).on("click",function(){k(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(L(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);g=i.h,h=i.s,p=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,y(i.h,i.s,i.b,o)})})},d.prototype.select=function(e,i,o,r){this.config;var t=F({h:e,s:100,b:100}),e=(F({h:e,s:i,b:o}),e/360*180),o=180-o/100*180-3,i=i/100*260-3;this.elemPicker.find("."+B).css("top",e),this.elemPicker.find("."+I)[0].style.background="#"+t,this.elemPicker.find("."+E).css({top:o,left:i})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+M+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,r,t,n,l=k.trim(d.val());-1>16,g:(65280&t)>>8,b:255&t},r=Y(n),s[0].style.background=o="#"+F(r),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i?(c.select(r.h,r.s,r.b,i),a.change&&a.change(o)):(c.color=l,a.done&&a.done(l),c.removePicker())}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=k(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=k(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),k(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,r;n.thisId&&(i=l.getThis(n.thisId))&&(o=i.config,r=i.elemColorBox.find("."+C),k(e.target).hasClass(c)||k(e.target).parents("."+c)[0]||k(e.target).hasClass(a.replace(/\./g,""))||k(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(L(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),r[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),H.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!k(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(r,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),c="element",r="layui-this",h="layui-show",o=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,c,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(o),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
                                                      '+(i.content||"")+"
                                                      "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),C.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(this).index();C.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",p="layui-nav-bar",b="layui-nav-tree",v="layui-nav-child",m="layui-nav-more",g="layui-anim layui-anim-upbit",C={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(r).siblings().removeClass(r),i.eq(t).addClass(h).siblings().removeClass(h)),layui.event.call(this,c,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(r)&&(i.next()[0]&&i.next().is("li")?C.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&C.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){C.tabAuto()},50),layui.event.call(this,c,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t,i=u(this),a=i.children(".layui-tab-title"),e=(i.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),e=u('');c===window&&d.ie,i.attr("lay-allowclose")&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||((t=u('')).on("click",C.tabDelete),i.append(t))}),"string"!=typeof i.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(t=a.find("li").eq(0).height())+t/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(e),i.attr("overflow",""),e.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),i.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.closest(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+v),n="string"==typeof e.attr("lay-unselect");if("javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+r).removeClass(r),e.addClass(r)),i.hasClass(b)){var n=f+"ed",s=!e.hasClass(n),o=function(){u(this).css({display:""}),i.children("."+p).css({opacity:0})};if(l.is(":animated"))return;l.removeClass(g),l[0]&&(s?(l.slideDown(200,o),e.addClass(n)):(e.removeClass(n),l.show().slideUp(200,o)),"string"!=typeof i.attr("lay-accordion")&&"all"!==i.attr("lay-shrink")||((s=e.siblings("."+n)).removeClass(n),s.children("."+v).show().stop().slideUp(200,o)))}layui.event.call(this,c,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,c,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){C.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+p)[0]||(i.append(a),(i.hasClass(b)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+v);i.hasClass(b)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(g),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+m).addClass(m+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(b)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+v).removeClass(h),i.find("."+m).removeClass(m+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(b)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+v)[0]&&!t.children("."+m)[0]&&t.append(''),t.off("click",C.clickThis).on("click",C.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",C.collapse).on("click",C.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",C.tabClick),u(window).on("resize",C.tabAuto),t(c,a)});layui.define(["lay","layer"],function(e){"use strict";var x=layui.$,a=layui.lay,i=layui.layer,b=layui.device(),t="upload",r="layui_"+t+"_index",o={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var i=this;return i.config=x.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var i=this,e=i.config.id;return{upload:function(e){i.upload.call(i,e)},reload:function(e){i.reload.call(i,e)},config:(l.that[e]=i).config}},u="layui-upload-file",f="layui-upload-form",F="layui-upload-iframe",w="layui-upload-choose",L="UPLOADING",j=function(e){var i=this;i.index=++o.index,i.config=x.extend({},i.config,o.config,e),i.render()};j.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1,text:{"cross-domain":"Cross-domain requests are not supported","data-format-error":"Please return JSON data format","check-error":"",error:"","limit-number":null,"limit-size":null}},j.prototype.reload=function(e){var i=this;i.config=x.extend({},i.config,e),i.render(!0)},j.prototype.render=function(e){var i=this,t=i.config,n=x(t.elem);return 1"].join("")),n=i.elem.next();(n.hasClass(u)||n.hasClass(f))&&n.remove(),b.ie&&b.ie<10&&i.elem.wrap('
                                                      '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(t),b.ie&&b.ie<10&&e.initIE()},j.prototype.initIE=function(){var t,e=this.config,i=x(''),n=x(['
                                                      ',"
                                                      "].join(""));x("#"+F)[0]||x("body").append(i),e.elem.next().hasClass(f)||(this.elemFile.wrap(n),e.elem.next("."+f).append((t=[],layui.each(e.data,function(e,i){i="function"==typeof i?i():i,t.push('')}),t.join(""))))},j.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},j.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},j.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,i){var t=new FileReader;t.readAsDataURL(i),t.onload=function(){n&&n(e,i,this.result)}})},j.prototype.upload=function(e,i){var t,n,a,o,u=this,f=u.config,c=f.text||{},l=u.elemFile[0],s=function(){return e||u.files||u.chooseFiles||l.files},r=function(){var a=0,o=0,l=s(),r=function(){f.multiple&&a+o===u.fileLength&&"function"==typeof f.allDone&&f.allDone({total:u.fileLength,successful:a,failed:o})},t=function(t){var n=new FormData,i=function(e){t.unified?layui.each(l,function(e,i){delete i[L]}):delete e[L]};if(layui.each(f.data,function(e,i){i="function"==typeof i?i():i,n.append(e,i)}),t.unified)layui.each(l,function(e,i){i[L]||(i[L]=!0,n.append(f.field,i))});else{if(t.file[L])return;n.append(f.field,t.file),t.file[L]=!0}var e={url:f.url,type:"post",data:n,dataType:f.dataType||"json",contentType:!1,processData:!1,headers:f.headers||{},success:function(e){f.unified?a+=u.fileLength:a++,p(t.index,e),r(t.index),i(t.file)},error:function(e){f.unified?o+=u.fileLength:o++,u.msg(c.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
                                                      ")),m(t.index),r(t.index),i(t.file)}};"function"==typeof f.progress&&(e.xhr=function(){var e=x.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var i;e.lengthComputable&&(i=Math.floor(e.loaded/e.total*100),f.progress(i,(f.item||f.elem)[0],e,t.index))}),e}),x.ajax(e)};f.unified?t({unified:!0,index:0}):layui.each(l,function(e,i){t({index:e,file:i})})},d=function(){var n=x("#"+F);u.elemFile.parent().submit(),clearInterval(j.timer),j.timer=setInterval(function(){var e,i=n.contents().find("body");try{e=i.text()}catch(t){u.msg(c["cross-domain"]),clearInterval(j.timer),m()}e&&(clearInterval(j.timer),i.html(""),p(0,e))},30)},p=function(e,i){if(u.elemFile.next("."+w).remove(),l.value="","json"===f.force&&"object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},u.msg(c["data-format-error"])}"function"==typeof f.done&&f.done(i,e||0,function(e){u.upload(e)})},m=function(e){f.auto&&(l.value=""),"function"==typeof f.error&&f.error(e||0,function(e){u.upload(e)})},h=f.exts,g=(n=[],layui.each(e||u.chooseFiles,function(e,i){n.push(i.name)}),n),v={preview:function(e){u.preview(e)},upload:function(e,i){var t={};t[e]=i,u.upload(t)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,i){u.files[e]=i}),u.files},resetFile:function(e,i,t){i=new File([i],t);u.files=u.files||{},u.files[e]=i}},y={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[f.accept]||"\u6587\u4ef6",g=0===g.length?l.value.match(/[^\/\\]+\..+/g)||[]:g;if(0!==g.length){switch(f.accept){case"file":layui.each(g,function(e,i){if(h&&!RegExp(".\\.("+h+")$","i").test(escape(i)))return t=!0});break;case"video":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(i)))return t=!0});break;case"audio":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(i)))return t=!0});break;default:layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"jpg|png|gif|bmp|jpeg|svg")+")$","i").test(escape(i)))return t=!0})}if(t)return u.msg(c["check-error"]||"\u9009\u62e9\u7684"+y+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==i&&!f.auto||(f.choose&&f.choose(v),"choose"!==i)){if(u.fileLength=(a=0,y=s(),layui.each(y,function(){a++}),a),f.number&&u.fileLength>f.number)return u.msg("function"==typeof c["limit-number"]?c["limit-number"](f,u.fileLength):"\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+f.number+" \u4e2a\u6587\u4ef6
                                                      \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+u.fileLength+" \u4e2a\u6587\u4ef6");if(01024*f.size&&(i=1<=(i=f.size/1024)?i.toFixed(2)+"MB":f.size+"KB",l.value="",o=i)}),o)return u.msg("function"==typeof c["limit-size"]?c["limit-size"](f,o):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!f.before||!1!==f.before(v))b.ie?(9'+e+"")};a.elem.off("upload.start").on("upload.start",function(){var e=x(this);n.config.item=e,n.elemFile[0].click()}),b.ie&&b.ie<10||a.elem.off("upload.over").on("upload.over",function(){x(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){x(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,i){var t=x(this),i=i.originalEvent.dataTransfer.files||[];t.removeAttr("lay-over"),o(i),a.auto?n.upload():l(i)}),n.elemFile.on("change",function(){var e=this.files||[];0!==e.length&&(o(e),a.auto?n.upload():l(e))}),a.bindAction.off("upload.action").on("upload.action",function(){n.upload()}),a.elem.data(r)||(a.elem.on("click",function(){n.isFile()||x(this).trigger("upload.start")}),a.drag&&a.elem.on("dragover",function(e){e.preventDefault(),x(this).trigger("upload.over")}).on("dragleave",function(e){x(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),x(this).trigger("upload.drop",e)}),a.bindAction.on("click",function(){x(this).trigger("upload.action")}),a.elem.data(r,a.id))},l.that={},l.getThis=function(e){var i=l.that[e];return i||hint.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},o.render=function(e){e=new j(e);return l.call(e)},e(t,o)});layui.define(["lay","layer","util"],function(e){"use strict";var C=layui.$,h=layui.layer,d=layui.util,l=layui.hint(),w=(layui.device(),"form"),o=".layui-form",N="layui-this",T="layui-hide",$="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e))return"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"},phone:function(e){if(e&&!/^1\d{10}$/.test(e))return"\u624b\u673a\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"},email:function(e){if(e&&!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))return"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"},url:function(e){if(e&&!/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/.test(e))return"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"},number:function(e){if(e&&isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:function(e){if(e&&!/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/.test(e))return"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"},identity:function(e){if(e&&!/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(e))return"\u8eab\u4efd\u8bc1\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"}},autocomplete:null}},i=(t.prototype.set=function(e){return C.extend(!0,this.config,e),this},t.prototype.verify=function(e){return C.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return C(o+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,w,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=C(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;C(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=C(o+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){var e=e||a.find("input,textarea"),t=(i.autocomplete&&e.attr("autocomplete",i.autocomplete),function(e,t){var i=e.val(),a=Number(i),n=Number(e.attr("step"))||1,l=Number(e.attr("min")),r=Number(e.attr("max")),s=Number(e.attr("lay-precision")),o="click"!==t&&""===i,c="init"===t;isNaN(a)||("click"===t&&(a=!!C(this).index()?a-n:a+n),t=function(e){return((e.toString().match(/\.(\d+$)/)||[])[1]||"").length},s=0<=s?s:Math.max(t(n),t(i)),o||(c||r<=(a=a<=l?l:a)&&(a=r),s&&(a=a.toFixed(s)),e.val(a)),e[(a'),e=layui.isArray(i.value)?i.value:[i.value],e=C((a=[],layui.each(e,function(e,t){a.push('')}),a.join(""))),n=(t.append(e),i.split&&t.addClass("layui-input-split"),i.className&&t.addClass(i.className),r.next("."+u)),l=(n[0]&&n.remove(),r.parent().hasClass(o)||r.wrap('
                                                      '),r.next("."+c));l[0]?((n=l.find("."+u))[0]&&n.remove(),l.prepend(t),r.css("padding-right",function(){return(r.closest(".layui-input-group")[0]?0:l.outerWidth())+t.outerWidth()})):(t.addClass(c),r.after(t)),"auto"===i.show&&d(t,r.val()),"function"==typeof i.init&&i.init.call(this,r,i),r.on("input propertychange",function(){var e=this.value;"auto"===i.show&&d(t,e)}),r.on("blur",function(){"function"==typeof i.blur&&i.blur.call(this,r,i)}),e.on("click",function(){var e=r.attr("lay-filter");C(this).hasClass($)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,w,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},f={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),d(C(this).parent(),null)},show:"auto",disabled:e},number:{value:["up","down"],split:!0,className:"layui-input-number",disabled:r.is("[disabled]"),init:function(e){t.call(this,e,"init")},click:function(e){t.call(this,e,"click")},blur:function(e){t.call(this,e,"blur")}}};n()})},select:function(e){var p,c="\u8bf7\u9009\u62e9",m="layui-form-select",g="layui-select-title",x="layui-select-none",b="",e=e||a.find("select"),k=function(e,t){C(e.target).parent().hasClass(g)&&!t||(C("."+m).removeClass(m+"ed "+m+"up"),p&&b&&p.val(b)),p=null},u=function(a,e,t){var s,r,i,n,o,l,c=C(this),u=a.find("."+g),d=u.find("input"),f=a.find("dl"),h=f.children("dd"),y=f.children("dt"),v=this.selectedIndex;e||(r=c.attr("lay-search"),i=function(){var e=a.offset().top+a.outerHeight()+5-F.scrollTop(),t=f.outerHeight();v=c[0].selectedIndex,a.addClass(m+"ed"),h.removeClass(T),y.removeClass(T),s=null,h.removeClass(N),0<=v&&h.eq(v).addClass(N),e+t>F.height()&&t<=e&&a.addClass(m+"up"),o()},n=function(e){a.removeClass(m+"ed "+m+"up"),d.blur(),s=null,e||l(d.val(),function(e){var t=c[0].selectedIndex;e&&(b=C(c[0].options[t]).html(),0===t&&b===d.attr("placeholder")&&(b=""),d.val(b||""))})},o=function(){var e,t,i=f.children("dd."+N);i[0]&&(e=i.position().top,t=f.height(),i=i.height(),t\u65e0\u5339\u914d\u9879

                                                      '):f.find("."+x).remove()},"keyup"),""===t&&(c.val(""),f.find("."+N).removeClass(N),(c[0].options[0]||{}).value||f.children("dd:eq(0)").addClass(N),f.find("."+x).remove()),o()}).on("blur",function(e){var t=c[0].selectedIndex;p=d,b=C(c[0].options[t]).text(),0===t&&b===d.attr("placeholder")&&(b=""),setTimeout(function(){l(d.val(),function(e){b||d.val("")},"blur")},200)}),h.on("click",function(){var e=C(this),t=e.attr("lay-value"),i=c.attr("lay-filter");return e.hasClass($)||(e.hasClass("layui-select-tips")?d.val(""):(d.val(e.text()),e.addClass(N)),e.siblings().removeClass(N),c.val(t).removeClass("layui-form-danger"),layui.event.call(this,w,"select("+i+")",{elem:c[0],value:t,othis:a}),n(!0)),!1}),a.find("dl>dt").on("click",function(e){return!1}),C(document).off("click",k).on("click",k))};e.each(function(e,t){var i=C(this),a=i.next("."+m),n=this.disabled,l=t.value,r=C(t.options[t.selectedIndex]),t=t.options[0];if("string"==typeof i.attr("lay-ignore"))return i.show();var s,o="string"==typeof i.attr("lay-search"),t=t&&!t.value&&t.innerHTML||c,r=C(['
                                                      ','
                                                      ','','
                                                      ','
                                                      ',(t=i.find("*"),s=[],layui.each(t,function(e,t){var i=t.tagName.toLowerCase();0!==e||t.value||"optgroup"===i?s.push("optgroup"===i?"
                                                      "+t.label+"
                                                      ":'
                                                      '+C.trim(t.innerHTML)+"
                                                      "):s.push('
                                                      '+C.trim(t.innerHTML||c)+"
                                                      ")}),0===s.length&&s.push('
                                                      \u6ca1\u6709\u9009\u9879
                                                      '),s.join("")+"
                                                      "),"
                                                      "].join(""));a[0]&&a.remove(),i.after(r),u.call(this,r,n,o)})},checkbox:function(e){var o={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],"switch":["layui-form-switch","layui-form-onswitch","switch"],SUBTRA:"layui-icon-indeterminate"},e=e||a.find("input[type=checkbox]");e.each(function(e,t){var i=C(this),a=i.attr("lay-skin")||"primary",n=d.escape(C.trim(t.title||(t.title=i.attr("lay-text")||""))),l=this.disabled,r=o[a]||o.checkbox,s=i.next("."+r[0]);if(s[0]&&s.remove(),i.next("[lay-checkbox]")[0]&&(n=i.next().html()||""),n="switch"===a?n.split("|"):[n],"string"==typeof i.attr("lay-ignore"))return i.show();l=C(['
                                                      ",(s={checkbox:[n[0]?"
                                                      "+n[0]+"
                                                      ":"primary"===a?"":"
                                                      ",''].join(""),"switch":"
                                                      "+((t.checked?n[0]:n[1])||"")+"
                                                      "})[a]||s.checkbox,"
                                                      "].join(""));i.after(l),function(a,n){var l=C(this);a.on("click",function(){var e=C(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+o.SUBTRA).removeClass(o.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],w,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var r="layui-form-radio",s=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=C(this),a=i.next("."+r),n=this.disabled;if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();n=C(['
                                                      ','',"
                                                      "+(a=d.escape(t.title||""),a=i.next("[lay-radio]")[0]?i.next().html():a)+"
                                                      ","
                                                      "].join(""));i.after(n),function(a){var n=C(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(o),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=C(this).next("."+r);this.checked=!1,e.removeClass(r+"ed"),e.children(".layui-icon").removeClass(l+" "+s[0]).addClass(s[1])}),n[0].checked=!0,a.addClass(r+"ed"),a.children(".layui-icon").addClass(l+" "+s[0]),layui.event.call(n[0],w,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,n)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?C(e).is(o)?(a=C(e),t()):e.each(function(e,t){var i=C(t);i.closest(o).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u,d=this.config.verify,f="layui-form-danger";return!(e=C(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=C(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=C.trim(s.val());if(s.removeClass(f),layui.each(t,function(e,t){var i="",a=d[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n)return"tips"===o?h.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?h.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&h.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(f),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i={},a=C(this),e="string"==typeof e?e:a.attr("lay-filter"),n=this.getFormElem?this.getFormElem(e):a.parents(o).eq(0),l=n.find("*[lay-verify]");return!!r.validate(l)&&(i=r.getValue(null,n),l={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?n:a.parents("form"))[0],field:i},"function"==typeof t&&t(l),layui.event.call(this,w,"submit("+e+")",l))}),r=new t,t=C(document),F=C(window);C(function(){r.render()}),t.on("reset",o,function(){var e=C(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",o,i).on("click","*[lay-submit]",i),e(w,r)});layui.define(["lay","laytpl","laypage","form","util"],function(n){"use strict";var f=layui.$,r=layui.lay,m=layui.laytpl,I=layui.laypage,p=layui.layer,v=layui.form,g=layui.util,b=layui.hint(),x=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var t=this;return t.config=f.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,N,e,t)}},w=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){k.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=w.that[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=w.config[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},T=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content;"numbers"===a.type&&(i=e.tplData[k.config.numbersName]);("escape"in a?a:t).escape&&(i=g.escape(i));t=e.text&&a.exportTemplet||a.templet||a.toolbar;return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(f(t).html()||String(i)).render(f.extend({LAY_COL:a},e.tplData))),e.text?f("
                                                      "+i+"
                                                      ").text():i},N="table",t=".layui-table",R="layui-hide",y="layui-hide-v",h="layui-none",D="layui-table-view",o=".layui-table-header",L=".layui-table-body",c=".layui-table-fixed-r",O=".layui-table-pageview",A=".layui-table-sort",E="layui-table-checked",_="layui-table-edit",M="layui-table-hover",P="laytable-cell-group",W="layui-table-col-special",j="layui-table-tool-panel",H="layui-table-expanded",S="LAY_TABLE_MOVE_DICT",e=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
                                                      ','
                                                      ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
                                                      ","
                                                      "].join("")},a=['',"","
                                                      "].join(""),u=[,"{{# if(d.data.toolbar){ }}",'
                                                      ','
                                                      ','
                                                      ',"
                                                      ","{{# } }}",'
                                                      ',"{{# if(d.data.loading){ }}",'
                                                      ','',"
                                                      ","{{# } }}","{{# var left, right; }}",'
                                                      ',e(),"
                                                      ",'
                                                      ',a,"
                                                      ","{{# if(left){ }}",'
                                                      ','
                                                      ',e({fixed:!0}),"
                                                      ",'
                                                      ',a,"
                                                      ","
                                                      ","{{# }; }}","{{# if(right){ }}",'
                                                      ','
                                                      ',e({fixed:"right"}),'
                                                      ',"
                                                      ",'
                                                      ',a,"
                                                      ","
                                                      ","{{# }; }}","
                                                      ","{{# if(d.data.totalRow){ }}",'
                                                      ','','',"
                                                      ","
                                                      ","{{# } }}",'
                                                      ','
                                                      ',"
                                                      "].join(""),d=f(window),F=f(document),i=function(e){this.index=++k.index,this.config=f.extend({},this.config,k.config,e),this.render()},s=(i.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},i.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=f(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(w.that[i]=t,(w.config[i]=a).request=f.extend({pageName:"page",limitName:"limit"},a.request),a.response=f.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-.+$/.test(a.height)?(t.fullHeightGap=a.height.split("-")[1],a.height=d.height()-(parseFloat(t.fullHeightGap)||0)):a.height&&/^#\w+\S*-.+$/.test(a.height)&&(i=a.height.split("-"),t.parentHeightGap=i.pop(),t.parentDiv=i.join("-"),a.height=f(t.parentDiv).height()-(parseFloat(t.parentHeightGap)||0));var l,e=a.elem,i=e.next("."+D),n=t.elem=f("
                                                      ");n.addClass((l=[D,D+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr({"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,"lay-id":a.id,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))}).html(m(u,{open:"{{",close:"}}"}).render({data:a,index:t.index})),t.renderStyle(),i[0]&&i.remove(),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(L),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(c),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},i.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},i.prototype.setInit=function(e){var l,a,d=this,r=d.config;if(r.clientWidth=r.width||(l=function(e){var t,a=(e=e||r.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return r.clientWidth;r.height=r.maxHeight||r.height,r.css&&-1===r.css.indexOf(D)&&(a=r.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+D+"-"+d.index+" "+t)}),r.css=a.join("}"));var c=function(a,e,i,l){var n,o;l?(l.key=[r.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,d.initOpts(l),(n=a+(parseInt(l.rowspan)||1)) td:hover > .layui-table-cell{overflow: auto;}"].concat(x.ie?[".layui-table-edit{height: "+i+";}","td[data-edit]:hover:after{height: "+i+";}"]:[]),function(e,t){t&&o.push(a+" "+t)})),l.css&&o.push(l.css),r.style({target:this.elem[0],text:o.join(""),id:"DF-table-"+n})},i.prototype.renderToolbar=function(){var e=this.config,t=['
                                                      ','
                                                      ','
                                                      '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=f(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
                                                      ')}),this.layTool.find(".layui-table-tool-self").html(l.join(""))},i.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=f('
                                                      ');t.pagebar&&((e=f(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},i.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](R),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},i.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},i.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+P)).css("width",0),layui.each(e.get().reverse(),function(){var e=f(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){f(this).hasClass(R)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.cssRules(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"
                                                      ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(R),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(O).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth()},i.prototype.page=1,i.prototype.pullData=function(a,t){var e,i,l=this,n=l.config,o=(n.HAS_SET_COLS_PATCH||l.setColsPatch(),n.HAS_SET_COLS_PATCH=!0,n.request),d=n.response,r=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:t.type})},c=function(e,t){l.setColsWidth(),"function"==typeof n.done&&n.done(e,a,e[d.countName],t)};t=t||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),t.renderData?((e={})[d.dataName]=k.cache[l.key],e[d.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[d.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},l.totalRow)),l.renderData({res:e,curr:a,count:e[d.countName],type:t.type,sort:!0}),c(e,"renderData")):n.url?(i={},n.page&&(i[o.pageName]=a,i[o.limitName]=n.limit),o=f.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(),f.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},complete:"function"==typeof n.complete?n.complete:undefined,success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[d.statusName]!=d.statusCode?l.errorView(e[d.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+d.statusName+'": '+d.statusCode):(l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),n.time=(new Date).getTime()-l.startTime+" ms"),c(e)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=a*n.limit-n.limit,o=n.data.concat(),e[d.dataName]=n.page?o.splice(i,n.limit):o,e[d.countName]=n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},n.totalRow)),l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),c(e))},i.prototype.eachCols=function(e){return k.eachCols(null,e,this.config.cols),this},i.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return b.error(t),{}}},i.prototype.getTrHtml=function(a,l,n,e){var s=this,u=s.config,y=e&&e.trs||[],h=e&&e.trs_fixed||[],p=e&&e.trs_fixed_r||[];return n=n||1,layui.each(a,function(e,o){var i=[],d=[],r=[],c=e+u.limit*(n-1)+1;if("object"!=typeof o){a[e]=o={LAY_KEY:o};try{k.cache[s.key][e]=o}catch(t){}}"array"===layui.type(o)&&0===o.length||(o[k.config.numbersName]=c,l||(o[k.config.indexName]=e),s.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=o[e];n!==undefined&&null!==n||(n=""),l.colGroup||(e=['','
                                                      "+function(){var e,t=f.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(f(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
                                                      "].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&d.push(e),"right"===l.fixed&&r.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+E+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+d.join("")+""),p.push(""+r.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:p}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},i.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,d=t[i.response.dataName]||[],t=t[i.response.totalRowName],r=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(d,o,l,{trs:r,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(r.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,p.close(a.tipsIndex)};return k.cache[a.key]=d,a.layTotal[0==d.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](R),a.layPage.find(O)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](y),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(R),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(R),void(i.page&&(i.page=f.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,I.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},i.prototype.renderTotal=function(e,o){var d,r=this,c=r.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||r.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),r.dataTotal=[],d=[],r.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&T.call(r,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&r.dataTotal.push({field:t.field,total:f("
                                                      "+l+"
                                                      ").text()}),['','
                                                      "+("string"==typeof(a=t.totalRow||c.totalRow)?m(a).render(f.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
                                                      "].join(""));d.push(n)}),e=r.layTotal.find(".layui-table-patch"),r.layTotal.find("tbody").html(""+d.join("")+(e.length?e.get(0).outerHTML:"")+""))},i.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},i.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},i.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}),v.render(t))},i.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},i.prototype.setRowChecked=function(a){var e=this,i=e.config,l=e.layBody.find("tr"+("all"===a.index?"":'[data-index="'+a.index+'"]')),t=(a=f.extend({type:"checkbox"},a),k.cache[e.key]),n="checked"in a,o=function(e){return"radio"===a.type||(n?a.checked:!e)},t=(layui.each(t,function(e,t){"array"===layui.type(t)||t[i.disabledName]||(Number(a.index)===e||"all"===a.index?(e=t[i.checkName]=o(t[i.checkName]),l[e?"addClass":"removeClass"](E),"radio"===a.type&&l.siblings().removeClass(E)):"radio"===a.type&&delete t[i.checkName])}),l.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[a.type]||"checkbox")+'"]:not(:disabled)')),d=t.last(),r=d.closest(c);("radio"===a.type&&r.hasClass(R)?t.first():t).prop("checked",o(d.prop("checked"))),e.syncCheckAll(),e.renderForm(a.type)},i.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(d=l.field,t.layHeader.find("th").each(function(e,t){var a=f(this),i=a.data("field");if(i===l.field)return l.field=a,d=i,!1}));try{var d=d||l.field.data("field"),r=l.field.data("key");if(t.sortKey&&!l.pull&&d===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+r).find(A);t.layHeader.find("th").find(A).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){b.error("Table modules: sort field '"+d+"' not matched")}t.sortKey={field:d,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,d,null,!0):"desc"===l.type?e=layui.sort(o,d,!0,!0):(e=layui.sort(o,k.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:d,type:l.type},layui.event.call(l.field,N,"sort("+n+")",f.extend({config:i},i.initSort)))},i.prototype.loading=function(e){var t=this;t.config.loading&&(e?(t.layInit&&t.layInit.remove(),delete t.layInit,t.layBox.find(".layui-table-init").remove()):(t.layInit=f(['
                                                      ','',"
                                                      "].join("")),t.layBox.append(t.layInit)))},i.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];r.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),!0})},i.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=d.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap&&(l=f(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135),1
                                                      ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(L).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0');a.html(t),u.height&&a.css("max-height",u.height-(s.layTool.outerHeight()||50)),i.find("."+j)[0]||i.append(a),s.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),p.close(s.tipsIndex),t){case"LAYTABLE_COLS":n({list:(a=[],s.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
                                                    • "+(t.fieldTitle||t.title||t.field)+"
                                                    • ").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=f(e.elem),t=this.checked,a=e.data("key"),i=s.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,s.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](R),l!=i.hide&&s.setParentCol(!t,e),s.resize(),layui.event.call(this,N,"colToggled("+c+")",{col:i,config:u}))})}});break;case"LAYTABLE_EXPORT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});x.ie?p.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):n({list:['
                                                    • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
                                                    • ','
                                                    • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
                                                    • '].join(""),done:function(e,t){t.on("click",function(){var e=f(this).data("type");k.exportFile.call(s,u.id,null,e)})}});break;case"LAYTABLE_PRINT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});var o=window.open("about:blank","_blank"),d=[""].join(""),r=f(s.layHeader.html());r.append(s.layMain.find("table").html()),r.append(s.layTotal.find("table").html()),r.find("th.layui-table-patch").remove(),r.find("thead>tr>th."+W).filter(function(e,t){return!f(t).children("."+P).length}).remove(),r.find("tbody>tr>td."+W).remove(),o.document.write(d+r.prop("outerHTML")),o.document.close(),layui.device("edg").edg?(o.onafterprint=o.close,o.print()):(o.print(),o.close())}layui.event.call(this,N,"toolbar("+c+")",f.extend({event:t,config:u},{}))}),s.layHeader.on("click","*[lay-event]",function(e){var t=f(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=s.col(t);layui.event.call(this,N,"colTool("+c+")",f.extend({event:a,config:u,col:t},{}))}),s.layPagebar.on("click","*[lay-event]",function(e){var t=f(this).attr("lay-event");layui.event.call(this,N,"pagebar("+c+")",f.extend({event:t,config:u},{}))}),e.on("mousemove",function(e){var t=f(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(d.allowResize=t.width()-e<=10,o.css("cursor",d.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||o.css("cursor","")}).on("mousedown",function(e){var t,a=f(this);d.allowResize&&(t=a.data("key"),e.preventDefault(),d.offset=[e.clientX,e.clientY],s.cssRules(t,function(e){var t=e.style.width||a.outerWidth();d.rule=e,d.ruleWidth=parseFloat(t),d.minWidth=a.data("minwidth")||u.cellMinWidth,d.maxWidth=a.data("maxwidth")||u.cellMaxWidth}),a.data(S,d),w.eventMoveElem=a)}),w.docEvent||F.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(S)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+D).attr("lay-id"),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),p.close(s.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+D).attr("lay-id"),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),d={},o.css("cursor",""),a.scrollPatch(),t.removeData(S),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],N,"colResized("+n+")",{col:l,config:a.config})}))}),w.docEvent=!0,e.on("click",function(e){var t=f(this),a=t.find(A),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");s.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(A+" .layui-edge ").on("click",function(e){var t=f(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?s.sort({field:t,type:"asc",fromEvent:!0}):s.sort({field:t,type:"desc",fromEvent:!0})}),s.commonMember=function(e){var t=f(this).parents("tr").eq(0).data("index"),r=s.layBody.find('tr[data-index="'+t+'"]'),c=(c=k.cache[s.key]||[])[t]||{},a={tr:r,config:u,data:k.clearCacheKey(c),dataCache:c,index:t,del:function(){k.cache[s.key][t]=[],r.remove(),s.scrollPatch()},update:function(e,d){e=e||{},layui.each(e,function(i,l){var n=r.children('td[data-field="'+i+'"]'),o=n.children(y);c[i]=a.data[i]=l,s.eachCols(function(e,t){var a;t.field==i?(o.html(T.call(s,{item3:t,content:l,tplData:f.extend({LAY_COL:t},c)})),n.data("content",l)):d&&(t.templet||t.toolbar)&&(e=r.children('td[data-field="'+(t.field||e)+'"]'),a=c[t.field],e.children(y).html(T.call(s,{item3:t,content:a,tplData:f.extend({LAY_COL:t},c)})),e.data("content",a))})}),s.renderForm()},setRowChecked:function(e){s.setRowChecked(f.extend({index:t},e))}};return f.extend(a,e)}),a=(s.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=(s.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?s.setRowChecked({index:"all",checked:l}):(s.setRowChecked({index:i,checked:l}),layui.stope(e)),layui.event.call(t[0],N,"checkbox("+c+")",r.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return s.col(a.data("key"))}})))}),s.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;s.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],N,"radio("+c+")",r.call(t[0],{checked:i,getCol:function(){return s.col(a.data("key"))}}))}),s.layBody.on("mouseenter","tr",function(){var e=f(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").addClass(M)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").removeClass(M)}).on("click","tr",function(e){var t=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");f(e.target).is(t)||f(e.target).closest(t)[0]||a.call(this,"row")}).on("dblclick","tr",function(){a.call(this,"rowDouble")}).on("contextmenu","tr",function(e){u.defaultContextmenu||e.preventDefault(),a.call(this,"rowContextmenu")}),function(e){var t=f(this);t.data("off")||layui.event.call(this,N,e+"("+c+")",r.call(t.children("td")[0]))}),n=function(e,t){var a,i,l;(e=f(e)).data("off")||(l=e.data("field"),i=e.data("key"),i=s.col(i),a=e.closest("tr").data("index"),a=k.cache[s.key][a],e.children(y),(i="function"==typeof i.edit?i.edit(a):i.edit)&&((i=f("textarea"===i?'':''))[0].value=(l=e.data("content")||a[l])===undefined||null===l?"":l,e.find("."+_)[0]||e.append(i),i.focus(),t)&&layui.stope(t))},i=(s.layBody.on("change","."+_,function(){var e=f(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[s.key][e],l=r.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return s.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],N,"edit("+c+")",l)}).on("blur","."+_,function(){f(this).remove()}),s.layBody.on(u.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),s.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=f(this),a=t.children(y);t.data("off")||t.parent().hasClass(H)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.outerWidth()||0
                                                      '))},l=function(e,t){var a=f(this),i=a.parent(),l=i.data("key"),n=s.col(l),o=i.parent().data("index"),i=i.children(y),d="layui-table-cell-c",r=f('');"tips"===(t=t||n.expandedMode||u.cellExpandedMode)?s.tipsIndex=p.tips(['
                                                      ',i.html(),"
                                                      ",''].join(""),i[0],{tips:[3,""],time:-1,anim:-1,maxWidth:x.ios||x.android?300:s.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){p.close(t)})}}):(s.elem.find("."+d).trigger("click"),s.cssRules(l,function(e){var t=e.style.width,a=n.expandedWidth||u.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],f(this).children().each(function(e){var t=f(this),a=t.attr("lay-data"),a=r.options(this,{attr:a?"lay-data":null,errorText:d+(a||t.attr("lay-options"))}),t=f.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=f(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),s(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')))}),d.push(n.join(","))}),c&&layui.each(c.dataTotal,function(e,t){r[t.field]||i.push('"'+(t.total||"")+'"')}),o.join(",")+"\r\n"+d.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l)&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))})})),f("."+j).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return(e=C(e)).reload(t,a,i),w.call(e)},k.reloadData=function(){var a=f.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new i(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=f.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),n(N,k)});layui.define(["table"],function(e){"use strict";var E=layui.$,x=layui.form,B=layui.table,y=layui.hint(),j={config:{},on:B.on,eachCols:B.eachCols,index:B.index,set:function(e){var t=this;return t.config=E.extend({},t.config,e),t},resize:B.resize,getOptions:B.getOptions,hideCol:B.hideCol,renderData:B.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){j.reloadData(n,e,t)}}},P=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},F="layui-hide",L=".layui-table-main",q=".layui-table-fixed-l",R=".layui-table-fixed-r",l="layui-table-checked",h="layui-table-tree",Y="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",s="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",H="LAY_EXPAND",z="LAY_HAS_EXPANDED",X="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=function(e){var t=this;t.index=++j.index,t.config=E.extend(!0,{},t.config,j.config,e),t.init(),t.render()},f=function(n,i,e){var l=B.cache[n];layui.each(e||l,function(e,t){var a=t[Y];-1!==a.indexOf("-")&&(l[a]=t),t[i]&&f(n,i,t[i])})},d=function(l,a,e){var d=P(l),r=("reloadData"!==e&&(d.status={expand:{}}),E.extend(!0,{},d.getOptions(),a)),n=r.tree,o=n.customName.children,i=n.customName.id,c=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,B.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},r.cols),a.parseData),u=a.done;r.url?e&&(!c||c.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(c)&&(a=c.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=d.flatToTree(a[t])),p(a[t],function(e){e[H]=H in e?e[H]:e[i]!==undefined&&d.status.expand[e[i]]},o),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),d.initData(a[t]),a},a.parseData.mod=!0):(a.data=a.data||[],n.data.isSimpleData&&(a.data=d.flatToTree(a.data)),d.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n=(a||delete d.isExpandAll,this.elem.next()),i=(d.updateStatus(null,{LAY_HAS_EXPANDED:!1}),f(l,o),n.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(i.length&&(e=j.checkStatus(l),i.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!a&&r.autoSort&&r.initSort&&r.initSort.type&&j.sort(l),d.renderTreeTable(n),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0)};t.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),B.render(E.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},t.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},t.prototype.getOptions=function(){return this.tableIns?B.getOptions(this.tableIns.config.id):this.config},t.prototype.flatToTree=function(e){var a,n,i,t,l,d,r,o=this.getOptions(),c=o.tree,u=c.customName,o=o.id;return e=e||B.cache[o],o=e,a=u.id,n=u.pid,i=u.children,t=c.data.rootPid,a=a||"id",n=n||"parentId",i=i||"children",r={},layui.each(o,function(e,t){l=a+t[a],r[l]=E.extend({},t),r[l][i]=[]}),layui.each(r,function(e,t){(d=a+t[n])&&r[d]&&r[d][i].push(t)}),Object.keys(r).map(function(e){return r[e]}).filter(function(e){return t?e[n]===t:!e[n]})},t.prototype.treeToFlat=function(e,n,i){var l=this,d=l.getOptions().tree.customName,r=d.children,o=d.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=E.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},t.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[Y],getParentNode:function(){return n.getNodeByIndex(e[s])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeByIndex=function(t){var a,e,n=this,i=n.getNodeDataByIndex(t);return i?((e=n.getOptions()).tree.customName.parent,a=e.id,(e={data:i,dataIndex:i[Y],getParentNode:function(){return n.getNodeByIndex(i[s])},update:function(e){return j.updateNode(a,t,e)},remove:function(){return j.removeNode(a,t)},expand:function(e){return j.expandNode(a,E.extend({},e,{index:t}))},setChecked:function(e){return j.setRowChecked(a,E.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=j.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[Y],!0}),i)return this.getNodeByIndex(i)},t.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=B.cache[n],l=n[e];if("delete"!==a&&l)return E.extend(l,a),t?E.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o
                                                      '),N=function(e){y[X]="success",y[s.children]=e,c.initData(y[s.children],y[Y]),U(t,!0,!p&&n,i,l)},C=m.format,"function"===layui.type(C)?C(y,o,N):(I=E.extend({},m.where||o.where),C=m.autoParam,layui.each(C,function(e,t){t=t.split("=");I[t[0].trim()]=y[(t[1]||t[0]).trim()]}),(C=m.contentType||o.contentType)&&0==C.indexOf("application/json")&&(I=JSON.stringify(I)),w=m.method||o.method,D=m.dataType||o.dataType,T=m.jsonpCallback||o.jsonpCallback,k=m.headers||o.headers,_=m.parseData||o.parseData,O=m.response||o.response,E.ajax({type:w||"get",url:b,contentType:C,data:I,dataType:D||"json",jsonpCallback:T,headers:k||{},success:function(e){(e="function"==typeof _?_.call(o,e)||e:e)[O.statusName]!=O.statusCode?(y[X]="error",g.html('')):N(e[O.dataName])},error:function(e,t){y[X]="error","function"==typeof o.error&&o.error(e,t)}})),h;y[z]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((m=o.initSort).type?layui.sort(v,m.field,"desc"===m.type,!0):layui.sort(v,B.config.indexName,null,!0)),c.initData(y[s.children],y[Y]),w=B.getTrHtml(r,v,null,null,e),S={trs:E(w.trs.join("")),trs_fixed:E(w.trs_fixed.join("")),trs_fixed_r:E(w.trs_fixed_r.join(""))},A=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){S.trs.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed_r.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A})}),d.find(L).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs),d.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed),d.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed_r),c.renderTreeTable(S.trs,A),n)&&!p&&layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)})}else c.isExpandAll=!1,(n&&!p?(layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)}),d.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(","))):(b=c.treeToFlat(v,y[s.id],e),d.find(b.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))).addClass(F);V("resize-"+r,function(){j.resize(r)},0)(),l&&"loading"!==y[X]&&(C=u.callback.onExpand,"function"===layui.type(C))&&C(r,y,x)}return h},g=(j.expandNode=function(e,t){var a,n,i,e=P(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),U({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},j.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=P(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),d=i.customName.isParent,r=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=j.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[X])return!(c=!1)}),!c)return void layui.each(j.getData(a),function(e,t){j.expandNode(a,{index:t[Y],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[z])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),l.find('tbody tr[data-level!="0"]').removeClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[z]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return j.sort(a);var s,n=B.getTrHtml(a,e),f={trs:E(n.trs.join("")),trs_fixed:E(n.trs_fixed.join("")),trs_fixed_r:E(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[Y].split("-").length-1;s={"data-index":t[Y],"lay-data-index":t[Y],"data-level":a},f.trs.eq(e).attr(s),f.trs_fixed.eq(e).attr(s),f.trs_fixed_r.eq(e).attr(s)}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!1,e[r]!==undefined)&&(t.status.expand[e[r]]=!1)}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);j.resize(a)}},t.prototype.renderTreeTable=function(e,t,a){var n=this,i=n.getOptions(),l=i.elem.next(),d=(l.hasClass(h)||l.addClass(h),i.id),r=i.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(l.attr("lay-filter"),n),f=((t=t||0)||(l.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(B.cache[d],function(e,t){l.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y])})),null),y=c.name,p=o.indent||14;if(layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=E(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=l.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[H]&&a[u]&&((f=f||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
                                                      ',a[H]?o.flexIconOpen:o.flexIconClose,"
                                                      ",o.showIcon?'
                                                      '+(a[c.icon]||o.icon||(a[u]?a[H]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
                                                      ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),U({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&n.isExpandAll===undefined)return j.expandAll(d,!0);!1!==a&&f?layui.each(f,function(e,t){e=l.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),U({trElem:e.first()},!0)}):V("renderTreeTable-"+d,function(){i.hasNumberCol&&g(n),x.render(E('.layui-table-tree[lay-id="'+d+'"]'))},0)()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),d=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(B.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[Y]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),d.eq(e).find(".laytable-cell-numbers").html(n))})}),p=(t.prototype.render=function(e){var t=this;t.tableIns=B["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,E.extend(!0,{},t.config)),t.config=t.tableIns.config},t.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),d(n.getOptions().id,e,a||!0),n.config=E.extend(t,{},n.config,e),n.render(a)},j.reloadData=function(){var e=E.extend(!0,[],arguments);return e[3]="reloadData",j.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):E.extend(t,a),l.push(E.extend({},t)),i||(l=l.concat(p(t[n],a,n,i)))}),l}),o=(t.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||B.cache[n.id],p(e,t,i.customName.children,a)},t.prototype.getTableData=function(){var e=this.getOptions();return B.cache[e.id]},j.updateStatus=function(e,t,a){var e=P(e),n=e.getOptions();return a=a||(n.url?B.cache[n.id]:n.data),e.updateStatus(a,t)},j.sort=function(e){var t=P(e);t&&t.getOptions().autoSort&&(t.initData(),j.renderData(e))},function(n){var t=n.config.id,i=P(t),a=n.data=j.getNodeDataByIndex(t,n.index),l=a[Y],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(E.extend(i.getNodeDataByIndex(l),e[0]),d.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){j.removeNode(t,a)},n.setRowChecked=function(e){j.setRowChecked(t,{index:a,checked:e})}}),u=(j.updateNode=function(e,a,t){var n,i,l,d,r,o=P(e);o&&((d=o.getOptions()).tree,d=(n=d.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=d.attr("data-index"),l=d.attr("data-level"),t)&&(d=o.getNodeDataByIndex(a,!1,t),r=B.getTrHtml(e,[d]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(E(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},j.removeNode=function(e,t){var a,n,i,l,d,r=P(e);r&&(d=(a=r.getOptions()).tree,n=a.elem.next(),i=[],t=r.getNodeDataByIndex("string"===layui.type(t)?t:t[Y],!1,"delete"),l=r.getNodeDataByIndex(t[s]),r.updateCheckStatus(l),l=r.treeToFlat([t],t[d.customName.pid],t[s]),layui.each(l,function(e,t){i.push('tr[lay-data-index="'+t[Y]+'"]')}),n.find(i.join(",")).remove(),d=r.initData(),layui.each(r.treeToFlat(d),function(e,t){t[m]&&t[m]!==t[Y]&&n.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[Y],"lay-data-index":t[Y]})}),layui.each(B.cache[e],function(e,t){n.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.hasNumberCol&&g(r),j.resize(e))},j.addNodes=function(e,t){var a=P(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=B.config.checkName,r=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,o="number"===layui.type(o)?o:-1,c=E.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){d in t||!u||(t[d]=u[d])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[z]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")).remove(),a.initData(),u[z]=!1,u[X]="local",U({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=B.cache[e].splice(-1===o?B.cache[e].length:o);if(B.cache[e]=B.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(B.cache[e]))):n.data=B.cache[e]),a.initData(),l.find(".layui-none").length)return B.renderData(e),c;var x,f=B.getTrHtml(e,c),h={trs:E(f.trs.join("")),trs_fixed:E(f.trs_fixed.join("")),trs_fixed_r:E(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[Y],"lay-data-index":t[Y],"data-level":"0"},h.trs.eq(e).attr(x),h.trs_fixed.eq(e).attr(x),h.trs_fixed_r.eq(e).attr(x)}),parseInt(c[0][Y])-1),y=l.find(L),n=l.find(q),f=l.find(R);-1==r?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(r=p[0][m],y.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed_r)),layui.each(B.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))}return a.updateCheckStatus(u),j.resize(e),t&&l.find(L).find('tr[lay-data-index="'+c[0][Y]+'"]').get(0).scrollIntoViewIfNeeded(),c}},j.checkStatus=function(e,n){var i,t,a,l=P(e);if(l)return l=l.getOptions().tree,i=B.config.checkName,t=j.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each("all"===l.data.cascade?B.cache[e]:j.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},j.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&j.sort(e)}),j.on("row",function(e){e.config.elem.next().hasClass(h)&&o(e)}),j.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),(t.tree||{}).view.dblClickExpand)&&U({trElem:e.tr.first()},null,null,null,!0)}),j.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),j.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=P(t),o(e),u.call(a,e.tr,e.checked))}),t.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=E(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},t.prototype.updateCheckStatus=function(e,t){var a,n,i,l,d,r,o,c=this,u=c.getOptions();return!!u.hasChecboxCol&&(a=u.tree,n=u.id,i=u.elem.next(),l=B.config.checkName,"all"!==(d=a.data.cascade)&&"parent"!==d||!e||(d=c.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(d,function(e,t){var a=i.find('tr[lay-data-index="'+t[Y]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),x.render(a.prop({checked:n,indeterminate:t[b]}))})),o=!(r=!0),e=(e="all"===a.data.cascade?B.cache[n]:j.getData(n,!0)).filter(function(e){return!e[u.disabledName]}),layui.each(e,function(e,t){if((t[l]||t[b])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}),o=o&&!r,x.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o})),r)},t.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=B.config.checkName,t=t.customName.children,d=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0
                                                      ')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
                                                      '+i.text.none+"
                                                      "),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(T),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(T)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(r,e){var d=this,s=d.config,o=s.customName,e=e||s.data;layui.each(e,function(e,i){var a,n,t=i[o.children]&&0
                                                      "),c=p(['
                                                      ','
                                                      ','
                                                      ',s.showLine?t?'':'':'',s.showCheckbox?'':"",s.isJump&&i.href?''+(i[o.title]||i.label||s.text.defaultNodeName)+"":''+(i[o.title]||i.label||s.text.defaultNodeName)+"","
                                                      ",s.edit?(a={add:'',update:'',del:''},n=['
                                                      '],!0===s.edit&&(s.edit=["update","del"]),"object"==typeof s.edit?(layui.each(s.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
                                                      "):void 0):"","
                                                      "].join(""));t&&(c.append(l),d.tree(l,i[o.children])),r.append(c),c.prev("."+k)[0]&&c.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),t||c.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),d.spread(c,i),s.showCheckbox&&(i.checked&&d.checkids.push(i[o.id]),d.checkClick(c,i)),s.edit&&d.operate(c,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+b),i=e.children("."+g),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+C),e=e.find("."+w),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+N),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(F)?(n.removeClass(F),i.slideUp(200),a.removeClass(x).addClass(v),l.updateFieldValue(t,"spread",!1)):(n.addClass(F),i.slideDown(200),a.addClass(x).removeClass(v),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+k)).removeClass(F),i.children("."+N).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(x).addClass(v))):s="normal"}),e.on("click",function(){p(this).hasClass(u)||(s=n.hasClass(F)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+N)[0]||e.find("."+N).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+k)[0]&&(a=(e=e.parent("."+N)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+b).children("."+g).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+b),h=e.children("."+g);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+N),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+C).addClass("layui-tree-icon"),h.find("."+C).children(".layui-icon").addClass(v).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(m),r.append('
                                                      '));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+N),[c]),o.showLine&&(n[0]?(n.hasClass(S)||n.addClass(S),r.find("."+N).each(function(){p(this).children("."+k).last().addClass(T)}),(n.children("."+k).last().prev().hasClass(T)?n.children("."+k).last().prev():n.children("."+k).last()).removeClass(T),!r.parent("."+N)[0]&&r.next()[0]&&n.children("."+k).last().removeClass(T)):(l=r.siblings("."+k),a=1,c=r.parent("."+N),layui.each(l,function(e,i){p(i).children("."+N)[0]||(a=0)}),(1==a?(l.children("."+N).addClass(L),l.children("."+N).children("."+k).removeClass(T),r.children("."+N).addClass(L),c.removeClass(S),c.children("."+k).last().children("."+N).children("."+k).last()):r.children("."+N).children("."+k)).addClass(T))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+N).children("."+k).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+w).html(),h.children("."+w).html(""),h.append(''),h.children(".layui-tree-editInput").val(f.unescape(l)).focus(),i=function(e){var i=e.val().trim()||o.text.defaultNodeName;e.remove(),h.children("."+w).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d[u.title]||"")+'" \u5417\uff1f',function(e){var l,a,i;o.operate&&o.operate(t),t.status="remove",y.close(e),r.prev("."+k)[0]||r.next("."+k)[0]||r.parent("."+N)[0]?(r.siblings("."+k).children("."+b)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+k)[0]&&(i=e.siblings("."+k).children("."+b),a=(e=e.parent("."+N).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked)&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n)&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+k)))})(r),o.showLine&&(e=r.siblings("."+k),a=1,i=r.parent("."+N),layui.each(e,function(e,i){p(i).children("."+N)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(S),e.children("."+N).addClass(L),e.children("."+N).children("."+k).removeClass(T)),(r.next()[0]?i.children("."+k).last():r.prev()).children("."+N).children("."+k).last().addClass(T),r.next()[0]||r.parents("."+k)[1]||r.parents("."+k).eq(0).next()[0]||r.prev("."+k).addClass(T)):!r.next()[0]&&r.hasClass(T)&&r.prev().addClass(T))):(e=r.parent("."+N).prev(),o.showLine?(e.find("."+C).removeClass("layui-tree-icon"),e.find("."+C).children(".layui-icon").removeClass(x).addClass("layui-icon-file"),(i=e.parents("."+N).eq(0)).addClass(S),i.children("."+k).each(function(){p(this).children("."+N).children("."+k).last().addClass(T)})):e.find(".layui-tree-iconArrow").addClass(m),r.parents("."+k).eq(0).removeClass(F),r.parent("."+N).remove()),r.remove()):(r.remove(),s.elem.append(s.elemNone))})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+w).each(function(){var i,e=p(this).parents("."+b);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+N)[0]&&i(e.parent("."+N).parent("."+k))})(e.parent("."+k)))}),e.find("."+b).each(function(){var e=p(this).parent("."+k);e.hasClass("layui-tree-searchShow")||e.addClass(m)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+b).each(function(){p(this).parent("."+k).removeClass("layui-tree-searchShow "+m)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+k).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+b).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var s=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=s.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},d="layui-hide",h="layui-btn-disabled",r="layui-none",c="layui-transfer-box",u="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
                                                      ','
                                                      ','","
                                                      ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
                                                        ',"
                                                        "].join("")},p=['
                                                        ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
                                                        ','",'","
                                                        ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
                                                        "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=s.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=s.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=s(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=s(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+c),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
                                                      • ",'',"
                                                      • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(r){var c=this,o=c.config;r=r||{},c.layBox.each(function(e){var t=s(this),a=t.find("."+f),t=t.find("."+u).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=s(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),c.layBtn.eq(e)[l?"removeClass":"addClass"](h),r.stopNone||(i=a.children("li:not(."+d+")").length,c.noneView(a,i?"":o.text.none))}),c.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=s('

                                                        '+(t||"")+"

                                                        ");e.find("."+r)[0]&&e.find("."+r).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){s(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=s.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),r=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+c).find("."+f).append(t.clone()),t.remove(),r.push(a[0].value),i.setValue()):l.each(function(e){s(this).find("."+f).children("li").each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+c).find("."+f).append(e.clone()),e.remove(),r.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+c).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(r),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=s(this).prev(),t=e[0].checked,a=e.parents("."+c).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=s(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent();a[0].disabled||n.transfer(i.data("index"),t)}),n.layBtn.on("click",function(){var e=s(this),t=e.data("index");e.hasClass(h)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=s(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](d),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+d).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,t=layui.lay,o=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,r,e,i)}}),r="carousel",d="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",m="layui-carousel-next",l="layui-carousel-arrow",f="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,o.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(d),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+l)[0]&&e.elem.find("."+l).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
                                                          ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
                                                        "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+f)[0]&&n.elem.find("."+f).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(m),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(d+" "+c+" "+m+" "+s+" "+u),t.eq(a.index).addClass(d),n.haveSlide=!1},350),n.elemInd.find("li").eq(a.index).addClass(d).siblings().removeClass(d),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,r,"change("+l+")",e))},i.prototype.events=function(){var e=this,i=e.config;i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){"always"!==e.config.autoplay&&clearInterval(e.timer)}).on("mouseleave",function(){"always"!==e.config.autoplay&&e.autoplay()}),i.elem.data("haveEvents",!0))},o.render=function(e){return new i(e)},e(r,o)});layui.define(["jquery","lay"],function(e){"use strict";var s=layui.jquery,r=layui.lay,c={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var a=this;return a.config=s.extend({},a.config,e),a},on:function(e,a){return layui.onevent.call(this,l,e,a)}},l="rate",f="layui-icon-rate",h="layui-icon-rate-solid",o="layui-icon-rate-half",u="layui-icon-rate-solid layui-icon-rate-half",v="layui-icon-rate layui-icon-rate-half",a=function(e){var a=this;a.index=++c.index,a.config=s.extend({},a.config,c.config,e),a.render()};a.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},a.prototype.render=function(){var e=this,a=e.config,l=s(a.elem);if(1a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
                                                          "),t=1;t<=a.length;t++){var o='
                                                        • ";a.half&&parseInt(a.value)!==a.value&&t==Math.ceil(a.value)?n=n+'
                                                        • ":n+=o}n+="
                                                        "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,u=l.next(".layui-rate");u[0]&&u.remove(),e.elemTemp=s(n),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var i=this.config,n=this.elemTemp,t=n.find("i").width();n.children("li").each(function(e){var a=e+1,l=s(this);l.on("click",function(e){i.value=a,i.half&&e.pageX-s(this).offset().left<=t/2&&(i.value=i.value-.5),i.text&&n.next("span").text(i.value+"\u661f"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),l.on("mousemove",function(e){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+a+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&e.pageX-s(this).offset().left<=t/2&&l.children("i").addClass(o).removeClass(h)}),l.on("mouseleave",function(){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+Math.floor(i.value)+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&parseInt(i.value)!==i.value&&n.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})})},a.prototype.events=function(){},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(l){"use strict";var g=layui.$,e=function(l){};e.prototype.load=function(l){var t,i,o,n,e,r,a,c,m,s,u,f,y,d=this,p=0,h=g((l=l||{}).elem);if(h[0])return e=g(l.scrollElem||document),r=l.mb||50,a=!("isAuto"in l)||l.isAuto,c=l.end||"\u6ca1\u6709\u66f4\u591a\u4e86",m=l.scrollElem&&l.scrollElem!==document,u=g('"),h.find(".layui-flow-more")[0]||h.append(u),f=function(l,e){l=g(l),u.before(l),(e=0==e||null)?u.html(c):u.find("a").html(s),i=e,t=null,o&&o()},(y=function(){t=!0,u.find("a").html(''),"function"==typeof l.done&&l.done(++p,f)})(),u.find("a").on("click",function(){g(this);i||t||y()}),l.isLazyimg&&(o=d.lazyimg({elem:l.elem+" img",scrollElem:l.scrollElem})),a&&e.on("scroll",function(){var e=g(this),o=e.scrollTop();n&&clearTimeout(n),!i&&h.width()&&(n=setTimeout(function(){var l=(m?e:g(window)).height();(m?e.prop("scrollHeight"):document.documentElement.scrollHeight)-o-l<=r&&(t||y())},100))}),d},e.prototype.lazyimg=function(l){var e,c=this,m=0,s=g((l=l||{}).scrollElem||document),u=l.elem||"img",f=l.scrollElem&&l.scrollElem!==document,y=function(e,l){var o,t=s.scrollTop(),l=t+l,i=f?e.offset().top-s.offset().top+t:e.offset().top;t<=i&&i<=l&&e.attr("lay-src")&&(o=e.attr("lay-src"),layui.img(o,function(){var l=c.lazyimg.elem.eq(m);e.attr("src",o).removeAttr("lay-src"),l[0]&&n(l),m++},function(){c.lazyimg.elem.eq(m);e.removeAttr("lay-src")}))},n=function(l,e){var o=(f?e||s:g(window)).height(),t=s.scrollTop(),i=t+o;if(c.lazyimg.elem=g(u),l)y(l,o);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},W=layui.code?layui.code.index+1e4:0,R=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var o,i,t,a,n,d,c,s,r,u,y,p,E,f,h,v,m,L,_,M,C,g={config:l=x.extend(!0,{},T,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,x.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},w=x(l.elem);return 1',l.ln?['
                                                        ',D.digit(t+1)+".","
                                                        "].join(""):"",'
                                                        ',e||" ","
                                                        ",""].join("")})}},a=l.code,n=function(e){return"function"==typeof l.codeParse?l.codeParse(e,l):e},"reloadCode"===e?o.children(".layui-code-wrap").html(w(n(a)).html):(d=layui.code.index=++W,o.attr("lay-code-index",d),(M=A.CDDE_DATA_CLASS in o.data())&&o.attr("class",o.data(A.CDDE_DATA_CLASS)||""),M||o.data(A.CDDE_DATA_CLASS,o.attr("class")),c={copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var t=D.unescape(n(l.code));lay.clipboard.writeText({text:t,done:function(){N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}),"function"==typeof l.onCopy&&l.onCopy(t)}}},function b(){var e=o.parent("."+A.ELEM_PREVIEW),t=e.children("."+A.ELEM_TAB),a=e.children("."+A.ELEM_ITEM+"-preview");return t.remove(),a.remove(),e[0]&&o.unwrap(),b}(),l.preview&&(M="LAY-CODE-DF-"+d,f=l.layout||["code","preview"],s="iframe"===l.preview,E=x('
                                                        '),C=x('
                                                        '),r=x('
                                                        '),_=x('
                                                        '),u=x('
                                                        '),l.id&&E.attr("id",l.id),E.addClass(l.className),C.attr("lay-filter",M),layui.each(f,function(e,t){var a=x('
                                                      • ');0===e&&a.addClass("layui-this"),a.html(l.text[t]),r.append(a)}),x.extend(c,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,t=e.closest("."+A.ELEM_PREVIEW),a="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=x("html,body"),n="layui-scrollbar-hide";e.hasClass(a)?(t.addClass(A.ELEM_FULL),e.removeClass(a).addClass(i),e.attr("title",l[1]),o.addClass(n)):(t.removeClass(A.ELEM_FULL),e.removeClass(i).addClass(a),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){D.openWin({content:n(l.code)})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=x(this),t=e.data("type"),e={elem:e,type:t,options:l,rawCode:l.code,finalCode:D.unescape(n(l.code))};c[t]&&"function"==typeof c[t].event&&c[t].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&l.tools&&(l.tools=[].concat(l.tools,l.addTools)),layui.each(l.tools,function(e,t){var a="object"==typeof t,i=a?t:c[t]||{className:t,title:[t]},l=i.className||i.type,o=i.title||[""],a=a?i.type||l:t;a&&(c[a]||((t={})[a]=i,x.extend(c,t)),u.append(''))}),o.addClass(A.ELEM_ITEM).wrap(E),C.append(r),l.tools&&C.append(u),o.before(C),s&&_.html(''),y=function(e){var t=e.children("iframe")[0];s&&t?t.srcdoc=n(l.code):e.html(l.code),setTimeout(function(){"function"==typeof l.done&&l.done({container:e,options:l,render:function(){I.render(e.find(".layui-form")),S.render()}})},3)},"preview"===f[0]?(_.addClass(A.ELEM_SHOW),o.before(_),y(_)):o.addClass(A.ELEM_SHOW).after(_),l.previewStyle=[l.style,l.previewStyle].join(""),_.attr("style",l.previewStyle),S.on("tab("+M+")",function(e){var t=x(this),a=x(e.elem).closest("."+A.ELEM_PREVIEW).find("."+A.ELEM_ITEM),e=a.eq(e.index);a.removeClass(A.ELEM_SHOW),e.addClass(A.ELEM_SHOW),"preview"===t.attr("lay-id")&&y(e),L()})),p=x(''),o.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),(C=l.theme||l.skin)&&(o.removeClass("layui-code-theme-dark layui-code-theme-light"),o.addClass("layui-code-theme-"+C)),l.highlighter&&o.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),f=w(l.encode?D.escape(n(a)):a),h=f.lines,o.html(p.html(f.html)),l.ln&&o.append('
                                                        '),l.height&&p.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&p.attr("style",function(e,t){return(t||"")+l.codeStyle}),v=[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,t){e.style["padding-left"]=t+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,t){e.style.width=t+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,t){e.style.width=t+"px"}}],m=lay.style({target:o[0],id:"DF-code-"+d,text:x.map(x.map(v,function(e){return e.selector}),function(e,t){return['.layui-code-view[lay-code-index="'+d+'"]',e].join(" ")}).join("")}),L=function b(){var e,i;return l.ln&&(e=Math.floor(h.length/100),i=p.children("."+A.ELEM_LINE).last().children("."+A.ELEM_LINE_NUM).outerWidth(),o.addClass(A.ELEM_LN_MODE),e)&&A.LINE_RAW_WIDTH
                                                      • ')).html(l.title||l.text.code),o.prepend(_)),M=x('
                                                        '),l.copy&&!l.preview&&((C=x(['','',""].join(""))).on("click",function(){c.copy.event()}),M.append(C)),l.langMarker&&M.append(''+l.lang+""),l.about&&M.append(l.about),o.append(M),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+d&&"function"==typeof l.allDone&&l.allDone())),g})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss"); \ No newline at end of file +/** v2.9.2 | MIT Licensed */;!function(d){"use strict";var t,h=d.document,m={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.9.2"},e=d.LAYUI_GLOBAL||{},v=(t=h.currentScript?h.currentScript.src:function(){for(var t,e=h.scripts,o=e.length-1,n=o;01e3*m.timeout/4?g(s+" is not a valid module","error"):void(m.status[s]?y():setTimeout(n,4))}())}function y(){e.push(layui[s]),11e3*m.timeout/4?g(s+" is not a valid module","error"):void("string"==typeof m.modules[s]&&m.status[s]?y():setTimeout(f,4))}():((r=h.createElement("script"))["async"]=!0,r.charset="utf-8",r.src=i+((u=!0===m.version?m.v||(new Date).getTime():m.version||"")?"?v="+u:""),l.appendChild(r),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||b?r.addEventListener("load",function(t){p(t,i)},!1):r.attachEvent("onreadystatechange",function(t){p(t,i)}),m.modules[s]=i)),a},n.prototype.disuse=function(t){var o=this;return t=o.isArray(t)?t:[t],o.each(t,function(t,e){m.status[e],delete o[e],delete N[e],delete o.modules[e],delete m.status[e],delete m.modules[e]}),o},n.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t[t.getPropertyValue?"getPropertyValue":"getAttribute"](e)},n.prototype.link=function(o,n,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof n?n:t)||o).replace(/\.|\//g,""),u="creating",l=0;return i.href=o+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"==typeof n&&function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(o+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):n()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},n.prototype.addcss=function(t,e,o){return layui.link(m.dir+"css/"+t,e,o)},m.callback={},n.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},n.prototype.img=function(t,e,o){var n=new Image;if(n.src=t,n.complete)return e(n);n.onload=function(){n.onload=null,"function"==typeof e&&e(n)},n.onerror=function(t){n.onerror=null,"function"==typeof o&&o(t)}},n.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},n.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),n.prototype.extend=function(t){for(var e in t=t||{})this[e]||this.modules[e]?g(e+" Module already exists","error"):this.modules[e]=t[e];return this},n.prototype.router=n.prototype.hash=function(t){var o={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),o.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),o.search[e[0]]=e[1]):o.path.push(e)})),o},n.prototype.url=function(t){var r,e,o=this;return{pathname:(t?((t.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(r={},e=(t?((t.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),o.each(e,function(t,e){var o=e.indexOf("="),n=o<0?e.substr(0,e.length):0!==o&&e.substr(0,o);n&&(r[n]=0(l.innerHeight||h.documentElement.clientHeight)},d.getStyleRules=function(t,n){if(t)return t=(t=t.sheet||t.styleSheet||{}).cssRules||t.rules,"function"==typeof n&&layui.each(t,function(t,e){if(n(e,t))return!0}),t},d.style=function(t){t=t||{};var e=d.elem("style"),n=t.text||"",i=t.target;if(n)return"styleSheet"in e?(e.setAttribute("type","text/css"),e.styleSheet.cssText=n):e.innerHTML=n,e.id="LAY-STYLE-"+(t.id||(n=d.style.index||0,d.style.index++,"DF-"+n)),i&&((t=d(i).find("#"+e.id))[0]&&t.remove(),d(i).append(e)),e},d.position=function(t,e,n){var i,o,r,c,u,a,s,f;e&&(n=n||{},t!==h&&t!==d("body")[0]||(n.clickType="right"),i="right"===n.clickType?{left:(i=n.e||l.event||{}).clientX,top:i.clientY,right:i.clientX,bottom:i.clientY}:t.getBoundingClientRect(),s=e.offsetWidth,f=e.offsetHeight,o=function(t){return h.body[t=t?"scrollLeft":"scrollTop"]|h.documentElement[t]},r=function(t){return h.documentElement[t?"clientWidth":"clientHeight"]},c="margin"in n?n.margin:5,u=i.left,a=i.bottom,"center"===n.align?u-=(s-t.offsetWidth)/2:"right"===n.align&&(u=u-s+t.offsetWidth),(u=u+s+c>r("width")?r("width")-s-c:u)r()&&(i.top>f+c&&i.top<=r()?a=i.top-f-2*c:n.allowBottomOut||(a=r()-f-2*c)<0&&(a=0)),(s=n.position)&&(e.style.position=s),e.style.left=u+("fixed"===s?0:o(1))+"px",e.style.top=a+("fixed"===s?0:o())+"px",d.hasScrollbar()||(f=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&f.bottom+c>r()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){d.position(t,e,n)},50))))},d.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===h)return{};var t=d(t),n=e.attr||"lay-options",t=t.attr(n);try{return new Function("return "+(t||"{}"))()}catch(i){return layui.hint().error(e.errorText||[n+'="'+t+'"',"\n parseerror: "+i].join("\n"),"error"),{}}},d.isTopElem=function(n){var t=[h,d("body")[0]],i=!1;return d.each(t,function(t,e){if(e===n)return i=!0}),i},d.clipboard={writeText:function(n){var i=String(n.text);function t(){var t=h.createElement("textarea");t.value=i,t.style.position="fixed",t.style.opacity="0",t.style.top="0px",t.style.left="0px",h.body.appendChild(t),t.select();try{h.execCommand("copy"),"function"==typeof n.done&&n.done()}catch(e){"function"==typeof n.error&&n.error(e)}finally{t.remove?t.remove():h.body.removeChild(t)}}navigator&&"clipboard"in navigator?navigator.clipboard.writeText(i).then(n.done,function(){t()}):t()}},d.passiveSupported=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});l.addEventListener("test",null,e),l.removeEventListener("test",null,e)}catch(n){}return t}(),d.touchEventsSupported=function(){return"ontouchstart"in l},d.touchSwipe=function(t,e){var n,i,o,r=e,c=d(t)[0];c&&d.touchEventsSupported()&&(n={pointerStart:{x:0,y:0},pointerEnd:{x:0,y:0},distanceX:0,distanceY:0,direction:"none",timeStart:null},e=function(t){1===t.touches.length&&(c.addEventListener("touchmove",i,!!d.passiveSupported&&{passive:!1}),c.addEventListener("touchend",o),c.addEventListener("touchcancel",o),n.timeStart=Date.now(),n.pointerStart.x=n.pointerEnd.x=t.touches[0].clientX,n.pointerStart.y=n.pointerEnd.y=t.touches[0].clientY,r.onTouchStart)&&r.onTouchStart(t,n)},i=function(t){t.preventDefault(),n.pointerEnd.x=t.touches[0].clientX,n.pointerEnd.y=t.touches[0].clientY,n.distanceX=n.pointerStart.x-n.pointerEnd.x,n.distanceY=n.pointerStart.y-n.pointerEnd.y,Math.abs(n.distanceX)>Math.abs(n.distanceY)?n.direction=0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e}},i=function(e){return new RegExp(e,"g")},u=function(e,r){var n="Laytpl Error: ";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e},n=function(e,r){var n=this,e=(n.config=n.config||{},n.template=e,function(e){for(var r in e)n.config[r]=e[r]});e(c),e(r)},r=(n.prototype.tagExp=function(e,r,n){var c=this.config;return i((r||"")+c.open+["#([\\s\\S])+?","([^{#}])*?"][e||0]+c.close+(n||""))},n.prototype.parse=function(e,r){var n=this,c=n.config,t=e,o=i("^"+c.open+"#",""),p=i(c.close+"$","");if("string"!=typeof e)return e;e='"use strict";var view = "'+(e=e.replace(/\s+|\r|\t|\n/g," ").replace(i(c.open+"#"),c.open+"# ").replace(i(c.close+"}"),"} "+c.close).replace(/\\/g,"\\\\").replace(i(c.open+"!(.+?)!"+c.close),function(e){return e=e.replace(i("^"+c.open+"!"),"").replace(i("!"+c.close),"").replace(i(c.open+"|"+c.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(n.tagExp(),function(e){return'";'+(e=e.replace(o,"").replace(p,"")).replace(/\\(.)/g,"$1")+';view+="'}).replace(n.tagExp(1),function(e){var r='"+laytpl.escape(';return e.replace(/\s/g,"")===c.open+c.close?"":(e=e.replace(i(c.open+"|"+c.close),""),/^=/.test(e)?e=e.replace(/^=/,""):/^-/.test(e)&&(e=e.replace(/^-/,""),r='"+('),r+e.replace(/\\(.)/g,"$1")+')+"')}))+'";return view;';try{return n.cache=e=new Function("d, laytpl",e),e(r,l)}catch(a){return delete n.cache,u(a,t)}},n.prototype.render=function(e,r){e=e||{};var n=this,e=n.cache?n.cache(e,l):n.parse(n.template,e);return"function"==typeof r&&r(e),e},function(e,r){return new n(e,r)});r.config=function(e){for(var r in e=e||{})c[r]=e[r]},r.v="2.0.0",e("laytpl",r)});layui.define(function(e){"use strict";var r=document,u="getElementById",c="getElementsByTagName",a="layui-disabled",t=function(e){var a=this;a.config=e||{},a.config.index=++o.index,a.render(!0)},o=(t.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return e.elem.length===undefined?2:3},t.prototype.view=function(){var i,e,t,n=this.config,r=n.groups="groups"in n?Number(n.groups)||0:5,u=(n.layout="object"==typeof n.layout?n.layout:["prev","page","next"],n.count=Number(n.count)||0,n.curr=Number(n.curr)||1,n.limits="object"==typeof n.limits?n.limits:[10,20,30,40,50],n.limit=Number(n.limit)||10,n.pages=Math.ceil(n.count/n.limit)||1,n.curr>n.pages?n.curr=n.pages:n.curr<1&&(n.curr=1),r<0?r=1:r>n.pages&&(r=n.pages),n.prev="prev"in n?n.prev:"上一页",n.next="next"in n?n.next:"下一页",n.pages>r?Math.ceil((n.curr+(1'+n.prev+"":"",page:function(){var e=[];if(n.count<1)return"";1'+(n.first||1)+"");var a=Math.floor((r-1)/2),t=1n.pages?n.pages:a:r;for(i-t…');t<=i;t++)t===n.curr?e.push('"+t+""):e.push(''+t+"");return n.pages>r&&n.pages>i&&!1!==n.last&&(i+1…'),0!==r)&&e.push(''+(n.last||n.pages)+""),e.join("")}(),next:n.next?''+n.next+"":"",count:''+(e="object"==typeof n.countText?n.countText:["\u5171 "," \u6761"])[0]+n.count+e[1]+"",limit:(i=['"),refresh:['','',""].join(""),skip:[''+(e="object"==typeof n.skipText?n.skipText:["到第","页","确定"])[0],'',e[1]+'",""].join("")};return['
                                                        ',(t=[],layui.each(n.layout,function(e,a){l[a]&&t.push(l[a])}),t.join("")),"
                                                        "].join("")},t.prototype.jump=function(e,a){if(e){var t=this,i=t.config,n=e.children,r=e[c]("button")[0],u=e[c]("input")[0],e=e[c]("select")[0],l=function(){var e=Number(u.value.replace(/\s|\D/g,""));e&&(i.curr=e,t.render())};if(a)return l();for(var s=0,p=n.length;si.pages||(i.curr=e,t.render())});e&&o.on(e,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),r&&o.on(r,"click",function(){l()})}},t.prototype.skip=function(t){var i,e;t&&(i=this,e=t[c]("input")[0])&&o.on(e,"keyup",function(e){var a=this.value,e=e.keyCode;/^(37|38|39|40)$/.test(e)||(/\D/.test(a)&&(this.value=a.replace(/\D/,"")),13===e&&i.jump(t,!0))})},t.prototype.render=function(e){var a=this,t=a.config,i=a.type(),n=a.view(),i=(2===i?t.elem&&(t.elem.innerHTML=n):3===i?t.elem.html(n):r[u](t.elem)&&(r[u](t.elem).innerHTML=n),t.jump&&t.jump(t,e),r[u]("layui-laypage-"+t.index));a.jump(i),t.hash&&!e&&(location.hash="!"+t.hash+"="+t.curr),a.skip(i)},{render:function(e){return new t(e).index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(a,e,t){return a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1),this}});e("laypage",o)});!function(i,v){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){D.path&&i.lay&&lay.layui&&lay.layui.link(D.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},a="laydate",d="layui-"+a+"-id",D={v:"5.5.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:e.laydate_dir||l.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",a=(n?"modules/":"")+"laydate.css?v="+D.v;return n?layui["layui.all"]?"function"==typeof e&&e():layui.addcss(a,e,t):l.link(a,e,t),this}},s=function(){var t=this,e=t.config.id;return(s.that[e]=t).inst={hint:function(e){t.hint.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}},x="layui-this",k="laydate-disabled",h=[100,2e5],T="layui-laydate-static",w="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",C=".laydate-btns-confirm",M="laydate-time-text",L="laydate-btns-time",E="layui-laydate-preview",S="layui-laydate-shade",I=function(e){var t,a=this,n=(a.index=++D.index,a.config=lay.extend({},a.config,D.config,e),lay(e.elem||a.config.elem));return 1\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
                                                        \u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
                                                        ","
                                                        \u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
                                                        Please re-select",invalidDate:"Invalid date",formatError:["The date format error
                                                        Must be followed\uff1a
                                                        ","
                                                        It has been reset"],preview:"The selected result"}};return e[this.config.lang]||e.cn},I.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},I.prototype.init=function(){var r=this,o=r.config,e="static"===o.position,t={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};o.elem=lay(o.elem),o.eventElem=lay(o.eventElem),o.elem[0]&&("array"!==layui.type(o.theme)&&(o.theme=[o.theme]),o.fullPanel&&("datetime"!==o.type||o.range)&&delete o.fullPanel,r.rangeStr=o.range?"string"==typeof o.range?o.range:"-":"",r.rangeLinked=!(!o.range||!o.rangeLinked||"date"!==o.type&&"datetime"!==o.type),r.autoCalendarModel=function(){var e=r.rangeLinked;return r.rangeLinked=o.range&&("date"===o.type||"datetime"===o.type)&&(!r.startDate||!r.endDate||r.startDate&&r.endDate&&r.startDate.year===r.endDate.year&&r.startDate.month===r.endDate.month),lay(r.elem)[r.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),r.rangeLinked!=e},r.autoCalendarModel.auto=r.rangeLinked&&"auto"===o.rangeLinked,"array"===layui.type(o.range)&&(r.rangeElem=[lay(o.range[0]),lay(o.range[1])]),t[o.type]||(i.console&&console.error&&console.error("laydate type error:'"+o.type+"' is not supported"),o.type="date"),o.format===t.date&&(o.format=t[o.type]||t.date),r.format=s.formatArr(o.format),o.weekStart&&!/^[0-6]$/.test(o.weekStart)&&(t=r.lang(),o.weekStart=t.weeks.indexOf(o.weekStart),-1===o.weekStart)&&(o.weekStart=0),r.EXP_IF="",r.EXP_SPLIT="",lay.each(r.format,function(e,t){e=new RegExp(c).test(t)?"\\d{"+(new RegExp(c).test(r.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(t)?4:t.length:/^yyyy$/.test(t)?"1,4":/^y$/.test(t)?"1,308":"1,2")+"}":"\\"+t;r.EXP_IF=r.EXP_IF+e,r.EXP_SPLIT=r.EXP_SPLIT+"("+e+")"}),r.EXP_IF_ONE=new RegExp("^"+r.EXP_IF+"$"),r.EXP_IF=new RegExp("^"+(o.range?r.EXP_IF+"\\s\\"+r.rangeStr+"\\s"+r.EXP_IF:r.EXP_IF)+"$"),r.EXP_SPLIT=new RegExp("^"+r.EXP_SPLIT+"$",""),r.isInput(o.elem[0])||"focus"===o.trigger&&(o.trigger="click"),o.elem.attr("lay-key",r.index),o.eventElem.attr("lay-key",r.index),o.elem.attr(d,o.id),o.mark=lay.extend({},o.calendar&&"cn"===o.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},o.mark),lay.each(["min","max"],function(e,t){var a=[],n=[];if("number"==typeof o[t])var i=o[t],l=new Date,l=r.newDate({year:l.getFullYear(),month:l.getMonth(),date:l.getDate(),hours:e?23:0,minutes:e?59:0,seconds:e?59:0}).getTime(),e=new Date(i?i<864e5?l+864e5*i:i:l),a=[e.getFullYear(),e.getMonth()+1,e.getDate()],n=[e.getHours(),e.getMinutes(),e.getSeconds()];else if("string"==typeof o[t])a=(o[t].match(/\d+-\d+-\d+/)||[""])[0].split("-"),n=(o[t].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if("object"==typeof o[t])return o[t];o[t]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|n[0],minutes:0|n[1],seconds:0|n[2]}}),r.elemID="layui-laydate"+o.elem.attr("lay-key"),(o.show||e)&&r.render(),e||r.events(),o.value)&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value))},I.prototype.render=function(){var a,n,i,l,r=this,o=r.config,d=r.lang(),s="static"===o.position,y=r.elem=lay.elem("div",{id:r.elemID,"class":["layui-laydate",o.range?" layui-laydate-range":"",r.rangeLinked?" layui-laydate-linkage":"",s?" "+T:"",o.fullPanel?" laydate-theme-fullpanel":"",(a="",lay.each(o.theme,function(e,t){"default"===t||/^#/.test(t)||(a+=" laydate-theme-"+t)}),a)].join("")}),m=r.elemMain=[],c=r.elemHeader=[],u=r.elemCont=[],h=r.table=[],e=r.footer=lay.elem("div",{"class":"layui-laydate-footer"}),t=r.shortcut=lay.elem("ul",{"class":"layui-laydate-shortcut"}),f=(o.zIndex&&(y.style.zIndex=o.zIndex),lay.each(new Array(2),function(e){if(!o.range&&0'+d.timeTips+""),(o.range||"datetime"!==o.type||o.fullPanel)&&f.push(''),lay.each(o.btns,function(e,t){var a=d.tools[t]||"btn";o.range&&"now"===t||(s&&"clear"===t&&(a="cn"===o.lang?"\u91cd\u7f6e":"Reset"),n.push(''+a+""))}),f.push('"),f.join(""))),o.shortcuts&&(y.appendChild(t),lay(t).html((i=[],lay.each(o.shortcuts,function(e,t){i.push('
                                                      • '+t.text+"
                                                      • ")}),i.join(""))).find("li").on("click",function(e){var t=o.shortcuts[this.dataset.index]||{},t=("function"==typeof t.value?t.value():t.value)||[],n=(layui.isArray(t)||(t=[t]),o.type),t=(lay.each(t,function(e,t){var a=[o.dateTime,r.endDate][e];"time"===n&&"date"!==layui.type(t)?r.EXP_IF.test(t)&&(t=(t.match(r.EXP_SPLIT)||[]).slice(1),lay.extend(a,{hours:0|t[0],minutes:0|t[2],seconds:0|t[4]})):lay.extend(a,r.systemDate("date"===layui.type(t)?t:new Date(t))),"time"!==n&&"datetime"!==n||(r[["startTime","endTime"][e]]={hours:a.hours,minutes:a.minutes,seconds:a.seconds}),0===e?r.startDate=lay.extend({},a):r.endState=!0,"year"===n||"month"===n||"time"===n?r.listYM[e]=[a.year,a.month+1]:e&&r.autoCalendarModel.auto&&r.autoCalendarModel()}),r.checkDate("limit").calendar(null,null,"init"),lay(r.footer).find("."+L).removeClass(k));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(x),"static"!==o.position&&r.setValue(r.parse()).done().remove()})),lay.each(m,function(e,t){y.appendChild(t)}),o.showBottom&&y.appendChild(e),lay.elem("style")),p=[],g=!0,t=(lay.each(o.theme,function(e,t){g&&/^#/.test(t)?(g=!(l=!0),p.push(["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}",-1!==o.theme.indexOf("circle")?"":"#{{id}} .layui-this{background-color:{{theme}} !important;}","#{{id}} .laydate-day-now{color:{{theme}} !important;}","#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))):!g&&/^#/.test(t)&&p.push(["#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}","#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))}),o.shortcuts&&o.range&&p.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),p.length&&(p=p.join(""),"styleSheet"in f?(f.setAttribute("type","text/css"),f.styleSheet.cssText=p):f.innerHTML=p,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(f)),r.remove(I.thisElemDate),D.thisId=o.id,s?o.elem.append(y):(v.body.appendChild(y),r.position()),o.shade?'
                                                        ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),I.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},I.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(T)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete D.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+S).remove()),t},I.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},I.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":r}));t.elem&&(a.innerHTML=(e="object"==typeof e?e||{}:{content:e}).content||"",lay(t.elem).find("."+r).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+r).remove()},"ms"in e?e.ms:3e3))},I.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),11h[1]&&(e.year=h[1],o=!0),11t)&&(e.date=t,o=!0)},u=function(n,i,l){var r=["startTime","endTime"];i=(i.match(d.EXP_SPLIT)||[]).slice(1),l=l||0,s.range&&(d[r[l]]=d[r[l]]||{}),lay.each(d.format,function(e,t){var a=parseFloat(i[e]);i[e].lengthd.getDateTime(s.max)?(r=s.dateTime=lay.extend({},s.max),i=!0):d.getDateTime(r)d.getDateTime(s.max))&&(d.endDate=lay.extend({},s.max),i=!0),d.startTime={hours:s.dateTime.hours,minutes:s.dateTime.minutes,seconds:s.dateTime.seconds},d.endTime={hours:d.endDate.hours,minutes:d.endDate.minutes,seconds:d.endDate.seconds},"month"===s.type)&&(s.dateTime.date=1,d.endDate.date=1),i&&m&&(d.setValue(d.parse()),d.hint("value "+l.invalidDate+l.formatError[1])),d.startDate=d.startDate||m&&lay.extend({},s.dateTime),d.autoCalendarModel.auto&&d.autoCalendarModel(),d.endState=!s.range||!d.rangeLinked||!(!d.startDate||!d.endDate),e&&e()),d},I.prototype.mark=function(e,a){var n,t=this.config;return lay.each(t.mark,function(e,t){e=e.split("-");e[0]!=a[0]&&0!=e[0]||e[1]!=a[1]&&0!=e[1]||e[2]!=a[2]||(n=t||a[2])}),n&&e.find("div").html(''+n+""),this},I.prototype.holidays=function(n,i){var e=this.config,l=["","work"];return"array"===layui.type(e.holidays)&&lay.each(e.holidays,function(a,e){lay.each(e,function(e,t){t===n.attr("lay-ymd")&&n.find("div").html('"+i[2]+"")})}),this},I.prototype.limit=function(t){t=t||{};var i=this,e=i.config,l={},a=t.index>(t.time?0:41)?i.endDate:e.dateTime;return lay.each({now:lay.extend({},a,t.date||{}),min:e.min,max:e.max},function(e,a){var n;l[e]=i.newDate(lay.extend({year:a.year,month:"year"===t.type?0:a.month,date:"year"===t.type||"month"===t.type?1:a.date},(n={},lay.each(t.time,function(e,t){n[t]=a[t]}),n))).getTime()}),a=l.nowh[1]&&(d.year=h[1],o.hint(y.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},d)),s.setFullYear(d.year,d.month,1),i=(s.getDay()+(7-n.weekStart))%7,l=D.getEndDate(d.month||12,d.year),r=D.getEndDate(d.month+1,d.year),lay.each(c,function(e,t){var a,n=[d.year,d.month];(t=lay(t)).removeAttr("class"),e"+n[2]+"
                                                        "),o.mark(t,n).holidays(t,n).limit({elem:t,date:{year:n[0],month:n[1]-1,date:n[2]},index:e})}),lay(u[0]).attr("lay-ym",d.year+"-"+(d.month+1)),lay(u[1]).attr("lay-ym",d.year+"-"+(d.month+1)),"cn"===n.lang?(lay(u[0]).attr("lay-type","year").html(d.year+" \u5e74"),lay(u[1]).attr("lay-type","month").html(d.month+1+" \u6708")):(lay(u[0]).attr("lay-type","month").html(y.month[d.month]),lay(u[1]).attr("lay-type","year").html(d.year)),m&&(n.range?!e&&"init"===a||(o.listYM=[[(o.startDate||n.dateTime).year,(o.startDate||n.dateTime).month+1],[o.endDate.year,o.endDate.month+1]],o.list(n.type,0).list(n.type,1),"time"===n.type?o.setBtnStatus("\u65f6\u95f4",lay.extend({},o.systemDate(),o.startTime),lay.extend({},o.systemDate(),o.endTime)):o.setBtnStatus(!0)):(o.listYM=[[d.year,d.month+1]],o.list(n.type,0))),n.range&&"init"===a&&(o.rangeLinked?(s=o.getAsYM(d.year,d.month,t?"sub":null),o.calendar(lay.extend({},d,{year:s[0],month:s[1]}),1-t)):o.calendar(null,1-t)),n.range||(c=["hours","minutes","seconds"],o.limit({elem:lay(o.footer).find(".laydate-btns-now"),date:o.systemDate(/^(datetime|time)$/.test(n.type)?new Date:null),index:0,time:c}),o.limit({elem:lay(o.footer).find(C),index:0,time:c})),o.setBtnStatus(),lay(o.shortcut).find("li."+x).removeClass(x),n.range&&!m&&"init"!==a&&o.stampRange(),o},I.prototype.list=function(n,i){var l,r,e,o,d=this,s=d.config,y=d.rangeLinked?s.dateTime:[s.dateTime,d.endDate][i],m=d.lang(),t=s.range&&"date"!==s.type&&"datetime"!==s.type,c=lay.elem("ul",{"class":w+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),a=d.elemHeader[i],u=lay(a[2]).find("span"),h=d.elemCont[i||0],f=lay(h).find("."+w)[0],p="cn"===s.lang,g=p?"\u5e74":"",v=d.listYM[i]||{},D=["hours","minutes","seconds"],T=["startTime","endTime"][i];return v[0]<1&&(v[0]=1),"year"===n?(e=l=v[0]-7,l<1&&(e=l=1),lay.each(new Array(15),function(e){var t=lay.elem("li",{"lay-ym":l}),a={year:l,month:0,date:1};l==v[0]&&lay(t).addClass(x),t.innerHTML=l+g,c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n}),l++}),lay(u[p?0:1]).attr("lay-ym",l-8+"-"+v[1]).html(e+g+" - "+(l-1)+g)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:v[0],month:e,date:1};e+1==v[1]&&lay(t).addClass(x),t.innerHTML=m.month[e]+(p?"\u6708":""),c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n})}),lay(u[p?0:1]).attr("lay-ym",v[0]+"-"+v[1]).html(v[0]+g)):"time"===n&&(r=function(){lay(c).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){d.limit({elem:lay(t),date:[{hours:e},{hours:d[T].hours,minutes:e},{hours:d[T].hours,minutes:d[T].minutes,seconds:e}][a],index:i,time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),s.range||d.limit({elem:lay(d.footer).find(C),date:d[T],index:0,time:["hours","minutes","seconds"]})},s.range?d[T]||(d[T]="startTime"===T?y:d.endDate):d[T]=y,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

                                                        "+m.time[t]+"

                                                          "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
                                                        ",c.appendChild(a)}),r()),f&&h.removeChild(f),h.appendChild(c),"year"===n||"month"===n?(lay(d.elemMain[i]).addClass("laydate-ym-show"),lay(c).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(k)||(d.rangeLinked?lay.extend(y,{year:"year"===n?e:v[0],month:"year"===n?v[1]-1:e}):y[n]=e,"year"===s.type||"month"===s.type?(lay(c).find("."+x).removeClass(x),lay(this).addClass(x),"month"===s.type&&"year"===n&&(d.listYM[i][0]=e,t&&((i?d.endDate:y).year=e),d.list("month",i))):(d.checkDate("limit").calendar(y,i,"init"),d.closeList()),d.setBtnStatus(),!s.range&&s.autoConfirm&&("month"===s.type&&"month"===n||"year"===s.type&&"year"===n)&&d.setValue(d.parse()).done().remove(),d.autoCalendarModel.auto&&!d.rangeLinked?d.choose(lay(h).find("td.layui-this"),i):d.endState&&d.done(null,"change"),lay(d.footer).find("."+L).removeClass(k))})):(e=lay.elem("span",{"class":M}),o=function(){lay(c).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(d[T][D[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(k))return a.scrollTop=30*(e-2),!0})})},u=lay(a[2]).find("."+M),o(),e.innerHTML=s.range?[m.startTime,m.endTime][i]:m.timeTips,lay(d.elemMain[i]).addClass("laydate-time-show"),u[0]&&u.remove(),a[2].appendChild(e),(f=lay(c).find("ol")).each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(k)||(s.range?d[T][D[t]]=e:y[D[t]]=e,lay(a).find("."+x).removeClass(x),lay(this).addClass(x),r(),o(),(d.endDate||"time"===s.type||"datetime"===s.type&&s.fullPanel)&&d.done(null,"change"),d.setBtnStatus())})}),lay.touchEventsSupported()&&f.on("touchstart",function(){this.style["overflow-y"]="auto"})),d},I.prototype.listYM=[],I.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+w).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+M).remove()},I.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(C);i.range&&"time"!==i.type&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t})||n.limit({date:a})?r.addClass(k):r[i?"addClass":"removeClass"](k),e)&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout)},I.prototype.parse=function(e,t){var a=this,n=a.config,i=a.rangeLinked?a.startDate:n.dateTime,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},i||n.dateTime,a.startTime):n.dateTime),i=D.parse(t,a.format,1);return n.range&&e===undefined?i+" "+a.rangeStr+" "+a.parse("end"):i},I.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},I.prototype.getDateTime=function(e){return this.newDate(e).getTime()},I.prototype.setValue=function(e){var t=this,a=t.config,n=a.elem[0];return"static"!==a.position&&(e=e||"",t.isInput(n)?lay(n).val(e):(a=t.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+t.rangeStr+" ")),a[0].val(e[0]||""),a[1].val(e[1]||"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e))),t},I.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+E),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html())&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300))},I.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},I.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(C).addClass(k),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(o+" "+x),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?o:x),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.thisDateTime(1-a)})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(e=n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date,o=n.startDate,n.startDate=lay.extend({},n.endDate,e?{}:n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,e?{}:n.endTime),e)&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o),r)&&(i.dateTime=lay.extend({},n.startDate)),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(o=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:o[0],month:o[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},I.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(t).hasClass(k)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(k))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(k))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(t).hasClass(k))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},I.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),o=l.range&&("year"===l.type||"month"===l.type),d=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(d).find(".laydate-year-list")[0],a=lay(d).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),o&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(C),date:{year:s[0]}})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))}}},I.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+L).addClass(k))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},I.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},I.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){D.thisId!==a.id&&t.render()}),a.elem[0].eventHandler=!0,a.eventElem.on(a.trigger,e),t.unbind=function(){t.remove(),a.elem.off(a.trigger,e),a.elem.removeAttr("lay-key"),a.elem.removeAttr(d),a.elem[0].eventHandler=!1,a.eventElem.off(a.trigger,e),a.eventElem.removeAttr("lay-key"),delete s.that[a.id]})},s.that={},s.getThis=function(e){var t=s.that[e];return!t&&n&&layui.hint().error(e?a+" instance with ID '"+e+"' not found":"ID argument required"),t},l.run=function(n){n(v).on("mousedown",function(e){var t,a;D.thisId&&(t=s.getThis(D.thisId))&&(a=t.config,e.target===a.elem[0]||e.target===a.eventElem[0]||e.target===n(a.closeStop)[0]||a.elem[0]&&a.elem[0].contains(e.target)||t.remove())}).on("keydown",function(e){var t;D.thisId&&(t=s.getThis(D.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===I.thisElemDate&&(e.preventDefault(),n(t.footer).find(C)[0].click())}),n(i).on("resize",function(){if(D.thisId){var e=s.getThis(D.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},D.render=function(e){e=new I(e);return s.call(e)},D.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},D.getInst=function(e){e=s.getThis(e);if(e)return e.inst},D.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},D.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},D.close=function(e){e=s.getThis(e||D.thisId);if(e)return e.remove()},D.parse=function(a,n,i){return a=a||{},n=((n="string"==typeof n?s.formatArr(n):n)||[]).concat(),lay.each(n,function(e,t){/yyyy|y/.test(t)?n[e]=lay.digit(a.year,t.length):/MM|M/.test(t)?n[e]=lay.digit(a.month+(i||0),t.length):/dd|d/.test(t)?n[e]=lay.digit(a.date,t.length):/HH|H/.test(t)?n[e]=lay.digit(a.hours,t.length):/mm|m/.test(t)?n[e]=lay.digit(a.minutes,t.length):/ss|s/.test(t)&&(n[e]=lay.digit(a.seconds,t.length))}),n.join("")},D.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},n?(D.ready(),layui.define("lay",function(e){D.path=layui.cache.dir,l.run(lay),e(a,D)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),D}):(D.ready(),l.run(i.lay),i.laydate=D)}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(T,M){var f=[],g=T.document,c=f.slice,O=f.concat,R=f.push,P=f.indexOf,B={},W=B.toString,m=B.hasOwnProperty,y={},e="1.12.4",C=function(e,t){return new C.fn.init(e,t)},I=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,$=/^-ms-/,z=/-([\da-z])/gi,X=function(e,t){return t.toUpperCase()};function U(e){var t=!!e&&"length"in e&&e.length,n=C.type(e);return"function"!==n&&!C.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+a+")"+a+"*"),ee=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),te=new RegExp(G),ne=new RegExp("^"+s+"$"),f={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),TAG:new RegExp("^("+s+"|[*])"),ATTR:new RegExp("^"+J),PSEUDO:new RegExp("^"+G),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},re=/^(?:input|select|textarea|button)$/i,ie=/^h\d$/i,c=/^[^{]+\{\s*\[native \w/,oe=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ae=/[+~]/,se=/'|\\/g,d=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig"),p=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)},ue=function(){C()};try{D.apply(n=V.call(v.childNodes),v.childNodes),n[v.childNodes.length].nodeType}catch(F){D={apply:n.length?function(e,t){U.apply(e,V.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function H(e,t,n,r){var i,o,a,s,u,l,c,f,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!r&&((t?t.ownerDocument||t:v)!==E&&C(t),t=t||E,N)){if(11!==p&&(l=oe.exec(e)))if(i=l[1]){if(9===p){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&y(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return D.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&g.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(i)),n}if(g.qsa&&!A[e+" "]&&(!m||!m.test(e))){if(1!==p)d=t,f=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(se,"\\$&"):t.setAttribute("id",s=k),o=(c=w(e)).length,u=ne.test(s)?"#"+s:"[id='"+s+"']";o--;)c[o]=u+" "+_(c[o]);f=c.join(","),d=ae.test(e)&&de(t.parentNode)||t}if(f)try{return D.apply(n,d.querySelectorAll(f)),n}catch(h){}finally{s===k&&t.removeAttribute("id")}}}return P(e.replace(L,"$1"),t,n,r)}function le(){var n=[];function r(e,t){return n.push(e+" ")>b.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function q(e){return e[k]=!0,e}function h(e){var t=E.createElement("div");try{return!!e(t)}catch(F){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function ce(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function x(a){return q(function(o){return o=+o,q(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function de(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in g=H.support={},O=H.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},C=H.setDocument=function(e){var e=e?e.ownerDocument||e:v;return e!==E&&9===e.nodeType&&e.documentElement&&(t=(E=e).documentElement,N=!O(E),(e=E.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",ue,!1):e.attachEvent&&e.attachEvent("onunload",ue)),g.attributes=h(function(e){return e.className="i",!e.getAttribute("className")}),g.getElementsByTagName=h(function(e){return e.appendChild(E.createComment("")),!e.getElementsByTagName("*").length}),g.getElementsByClassName=c.test(E.getElementsByClassName),g.getById=h(function(e){return t.appendChild(e).id=k,!E.getElementsByName||!E.getElementsByName(k).length}),g.getById?(b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&N)return(e=t.getElementById(e))?[e]:[]},b.filter.ID=function(e){var t=e.replace(d,p);return function(e){return e.getAttribute("id")===t}}):(delete b.find.ID,b.filter.ID=function(e){var t=e.replace(d,p);return function(e){e="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}}),b.find.TAG=g.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):g.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=g.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&N)return t.getElementsByClassName(e)},r=[],m=[],(g.qsa=c.test(E.querySelectorAll))&&(h(function(e){t.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+a+"*(?:value|"+Y+")"),e.querySelectorAll("[id~="+k+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||m.push(".#.+[+~]")}),h(function(e){var t=E.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(g.matchesSelector=c.test(i=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&h(function(e){g.disconnectedMatch=i.call(e,"div"),i.call(e,"[s!='']:x"),r.push("!=",G)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),e=c.test(t.compareDocumentPosition),y=e||c.test(t.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=e?function(e,t){var n;return e===t?(l=!0,0):(n=!e.compareDocumentPosition-!t.compareDocumentPosition)||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!g.sortDetached&&t.compareDocumentPosition(e)===n?e===E||e.ownerDocument===v&&y(v,e)?-1:t===E||t.ownerDocument===v&&y(v,t)?1:u?j(u,e)-j(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===E?-1:t===E?1:i?-1:o?1:u?j(u,e)-j(u,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?fe(a[r],s[r]):a[r]===v?-1:s[r]===v?1:0}),E},H.matches=function(e,t){return H(e,null,null,t)},H.matchesSelector=function(e,t){if((e.ownerDocument||e)!==E&&C(e),t=t.replace(ee,"='$1']"),g.matchesSelector&&N&&!A[t+" "]&&(!r||!r.test(t))&&(!m||!m.test(t)))try{var n=i.call(e,t);if(n||g.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(F){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(d,p),e[3]=(e[3]||e[4]||e[5]||"").replace(d,p),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||H.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&H.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return f.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&te.test(n)&&(t=(t=w(n,!0))&&n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(d,p).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=H.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1(?:<\/\1>|)$/,G=/^.[^:#\[\.,]*$/;function K(e,n,r){if(C.isFunction(n))return C.grep(e,function(e,t){return!!n.call(e,t,e)!==r});if(n.nodeType)return C.grep(e,function(e){return e===n!==r});if("string"==typeof n){if(G.test(n))return C.filter(n,e,r);n=C.filter(n,e)}return C.grep(e,function(e){return-1)[^>]*|#([\w-]*))$/,ee=((C.fn.init=function(e,t,n){if(e){if(n=n||Q,"string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):C.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(C):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),C.makeArray(e,this));if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Z.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:g,!0)),J.test(r[1])&&C.isPlainObject(t))for(var r in t)C.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r])}else{if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}this.context=g,this.selector=e}}return this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
                                                        a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
                                                        ","
                                                        "],area:[1,"",""],param:[1,"",""],thead:[1,"","
                                                        "],tr:[2,"","
                                                        "],col:[2,"","
                                                        "],td:[3,"","
                                                        "],_default:y.htmlSerialize?[0,"",""]:[1,"X
                                                        ","
                                                        "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
                                                        t
                                                        ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o)&&(i.left=o),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
                                                        a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1!==this.nodeType||(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined)||(this.value=e)})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this)},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"
                                                        ":"";return a.zIndex=o,t([a.shade?'
                                                        ':"",'
                                                        '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
                                                        ':''):"")+((1!=a.type||!e)&&a.content||"")+'
                                                        '+(n=[],l&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
                                                        "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t,i=0,n=a.btn.length;i'+a.btn[i]+"";return'
                                                        '+e+"
                                                        "}():"")+(a.resize?'':"")+"
                                                        "],s,m('
                                                        ')),this},t.pt.creat=function(){var e,t,i,n,a,o=this,s=o.config,l=o.index,r="object"==typeof(f=s.content),c=m("body");if(s.id&&m("."+u[0]).find("#"+s.id)[0])e=m("#"+s.id).closest("."+u[0]),t=e.attr("times"),i=e.data("config"),n=m("#"+u.SHADE+t),"min"===(e.data("maxminStatus")||{})?g.restore(t):i.hideOnClose&&(n.show(),e.show());else{switch(s.removeFocus&&document.activeElement.blur(),"string"==typeof s.area&&(s.area="auto"===s.area?["",""]:[s.area,""]),s.shift&&(s.anim=s.shift),6==g.ie&&(s.fixed=!1),s.type){case 0:s.btn="btn"in s?s.btn:d.btn[0],g.closeAll("dialog");break;case 2:var f=s.content=r?s.content:[s.content||"","auto"];s.content='';break;case 3:delete s.title,delete s.closeBtn,-1===s.icon&&s.icon,g.closeAll("loading");break;case 4:r||(s.content=[s.content,"body"]),s.follow=s.content[1],s.content=s.content[0]+'',delete s.title,s.tips="object"==typeof s.tips?s.tips:[s.tips,!0],s.tipsMore||g.closeAll("tips")}o.vessel(r,function(e,t,i){c.append(e[0]),r?2==s.type||4==s.type?m("body").append(e[1]):f.parents("."+u[0])[0]||(f.data("display",f.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+u[0]+l).find("."+u[5]).before(t)):c.append(e[1]),m("#"+u.MOVE)[0]||c.append(d.moveElem=i),o.layero=m("#"+u[0]+l),o.shadeo=m("#"+u.SHADE+l),s.scrollbar||d.setScrollbar(l)}).auto(l),o.shadeo.css({"background-color":s.shade[1]||"#000",opacity:s.shade[0]||s.shade}),2==s.type&&6==g.ie&&o.layero.find("iframe").attr("src",f[0]),4==s.type?o.tips():(o.offset(),parseInt(d.getStyle(document.getElementById(u.MOVE),"z-index"))||(o.layero.css("visibility","hidden"),g.ready(function(){o.offset(),o.layero.css("visibility","visible")}))),!s.fixed||d.events.resize[o.index]||(d.events.resize[o.index]=function(){o.resize()},h.on("resize",d.events.resize[o.index])),s.time<=0||setTimeout(function(){g.close(o.index)},s.time),o.move().callback(),u.anim[s.anim]&&(a="layer-anim "+u.anim[s.anim],o.layero.addClass(a).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(a)})),o.layero.data("config",s)}},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+u[0]+e),n=(""===t.area[0]&&0t.maxWidth)&&i.width(t.maxWidth),[i.innerWidth(),i.innerHeight()]),a=i.find(u[1]).outerHeight()||0,o=i.find("."+u[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+u[5])):t.fixed&&n[1]>=h.height()&&(n[1]=h.height(),e("."+u[5])):e("."+u[5]),this},t.pt.offset=function(){var e=this,t=e.config,i=e.layero,n=[i.outerWidth(),i.outerHeight()],a="object"==typeof t.offset;e.offsetTop=(h.height()-n[1])/2,e.offsetLeft=(h.width()-n[0])/2,a?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=h.width()-n[0]:"b"===t.offset?e.offsetTop=h.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=h.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=h.width()-n[0]):"rb"===t.offset?(e.offsetTop=h.height()-n[1],e.offsetLeft=h.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?h.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?h.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=h.scrollTop(),e.offsetLeft+=h.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=h.height()-(i.find(u[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0h.width()&&(o=h.width()-180-(d.minStackArr.edgeIndex=d.minStackArr.edgeIndex||0,d.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(l.left=o,l.top=h.height()-n,a||d.minStackIndex++,r.attr("minLeft",o)),r.attr("position",s),g.style(e,l,!0),i.hide(),"page"===r.attr("type")&&r.find(u[4]).hide(),d.restScrollbar(e),c.hide())},g.restore=function(e){var t=m("#"+u[0]+e),i=m("#"+u.SHADE+e),n=t.attr("area").split(","),a=t.attr("type"),o=t.data("config")||{};t.removeData("maxminStatus"),g.style(e,{width:n[0],height:n[1],top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===a&&t.find(u[4]).show(),o.scrollbar?d.restScrollbar(e):d.setScrollbar(e),i.show()},g.full=function(t){var i=m("#"+u[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&g.restore(t),i.data("maxminStatus","max"),d.record(i),u.html.attr("layer-full")||d.setScrollbar(t),setTimeout(function(){var e="fixed"===i.css("position");g.style(t,{top:e?0:h.scrollTop(),left:e?0:h.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},g.title=function(e,t){m("#"+u[0]+(t||g.index)).find(u[1]).html(e)},g.close=function(o,s){var l,e,r=(t=m("."+u[0]).children("#"+o).closest("."+u[0]))[0]?(o=t.attr("times"),t):m("#"+u[0]+o),c=r.attr("type"),t=r.data("config")||{},f=t.id&&t.hideOnClose;r[0]&&(l={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[t.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(f)return r.removeClass("layer-anim "+l),r.hide();if(c===d.type[1]&&"object"===r.attr("conType")){r.children(":not(."+u[5]+")").remove();for(var t=r.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===d.type[2])try{var n=m("#"+u[4]+o)[0];n.contentWindow.document.write(""),n.contentWindow.close(),r.find("."+u[5])[0].removeChild(n)}catch(a){}r[0].innerHTML="",r.remove()}"function"==typeof d.end[o]&&d.end[o](),delete d.end[o],"function"==typeof s&&s(),d.events.resize[o]&&(h.off("resize",d.events.resize[o]),delete d.events.resize[o])},m("#"+u.SHADE+o)[f?"hide":"remove"](),t.isOutAnim&&r.addClass("layer-anim "+l),6==g.ie&&d.reselect(),d.restScrollbar(o),"string"==typeof r.attr("minLeft")&&(d.minStackIndex--,d.minStackArr.push(r.attr("minLeft"))),g.ie&&g.ie<10||!t.isOutAnim?e():setTimeout(function(){e()},200))},g.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+u[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&g.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},g.closeLast=function(e,t){g.close(m(".layui-layer-"+(e=e||"page")+":last").attr("times"),t)},g.cache||{}),v=function(e){return i.skin?" "+i.skin+" "+i.skin+"-"+e:""};g.prompt=function(i,n){var e="",t="";"function"==typeof(i=i||{})&&(n=i),i.area&&(e='style="width: '+(o=i.area)[0]+"; height: "+o[1]+';"',delete i.area),i.placeholder&&(t=' placeholder="'+i.placeholder+'"');var a,o=2==i.formType?'":'",s=i.success;return delete i.success,g.open(m.extend({type:1,btn:["确定","取消"],content:o,skin:"layui-layer-prompt"+v("prompt"),maxWidth:h.width(),success:function(e){(a=e.find(".layui-layer-input")).val(i.value||"").focus(),"function"==typeof s&&s(e)},resize:!1,yes:function(e){var t=a.val();t.length>(i.maxlength||500)?g.tips("最多输入"+(i.maxlength||500)+"个字数",a,{tips:1}):n&&n(t,e,a)}},i))},g.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,g.open(m.extend({type:1,skin:"layui-layer-tab"+v("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
                                                          '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
                                                        ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},g.photos=function(n,e,a){var s={};if((n=m.extend(!0,{toolbar:!0,footer:!0},n)).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},o=i.data||[],l=i.start||0,r=n.success;if(s.imgIndex=1+(0|l),n.img=n.img||"img",delete n.success,t){if(0===o.length)return g.msg("没有图片")}else{var c=m(n.photos),f=function(){o=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),o.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===o.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");g.photos(m.extend(n,{photos:{start:e,data:o,tab:n.tab},full:n.full}),!0)}),!e)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=o.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>o.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){var t;s.end||(t=e.keyCode,e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&g.close(s.index))},s.tabimg=function(e){if(!(o.length<=1))return i.start=s.imgIndex-1,g.close(s.index),g.photos(n,!0,e)},s.isNumber=function(e){return"number"==typeof e&&!isNaN(e)},s.image={},s.getTransform=function(e){var t=[],i=e.rotate,n=e.scaleX,e=e.scale;return s.isNumber(i)&&0!==i&&t.push("rotate("+i+"deg)"),s.isNumber(n)&&1!==n&&t.push("scaleX("+n+")"),s.isNumber(e)&&t.push("scale("+e+")"),t.length?t.join(" "):"none"},s.event=function(e,i,n){var a,o;s.main.find(".layui-layer-photos-prev").on("click",function(e){e.preventDefault(),s.imgprev(!0)}),s.main.find(".layui-layer-photos-next").on("click",function(e){e.preventDefault(),s.imgnext(!0)}),m(document).on("keyup",s.keyup),e.off("click").on("click","*[toolbar-event]",function(){var e=m(this);switch(e.attr("toolbar-event")){case"rotate":s.image.rotate=((s.image.rotate||0)+Number(e.attr("data-option")))%360,s.imgElem.css({transform:s.getTransform(s.image)});break;case"scalex":s.image.scaleX=-1===s.image.scaleX?1:-1,s.imgElem.css({transform:s.getTransform(s.image)});break;case"zoom":var t=Number(e.attr("data-option"));s.image.scale=(s.image.scale||1)+t,t<0&&s.image.scale<0-t&&(s.image.scale=0-t),s.imgElem.css({transform:s.getTransform(s.image)});break;case"reset":s.image.scaleX=1,s.image.scale=1,s.image.rotate=0,s.imgElem.css({transform:"none"});break;case"close":g.close(i)}n.offset(),n.auto(i)}),s.main.on("mousewheel DOMMouseScroll",function(e){var t=e.originalEvent.wheelDelta||-e.originalEvent.detail,i=s.main.find('[toolbar-event="zoom"]');(0n)&&("left"===t.direction?s.imgnext(!0):"right"===t.direction&&s.imgprev(!0))},m.each([n.shadeo,s.main],function(e,t){a.touchSwipe(t,{onTouchEnd:o})}))},s.loadi=g.load(1,{shade:!("shade"in n)&&.9,scrollbar:!1});var t=o[l].src,d=function(e){g.close(s.loadi);var t,i=o[l].alt||"";a&&(n.anim=-1),s.index=g.open(m.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[m(p).width()-100,m(p).height()-100],!n.full&&(t[0]'+i+''+(t=['
                                                        '],1','','',"
                                                        "].join("")),n.toolbar&&t.push(['
                                                        ','','','','','','',"
                                                        "].join("")),n.footer&&t.push(['"].join("")),t.push(""),t.join(""))+"",success:function(e,t,i){s.main=e.find(".layer-layer-photos-main"),s.footer=e.find(".layui-layer-photos-footer"),s.imgElem=s.main.children("img"),s.event(e,t,i),n.tab&&n.tab(o[l],e),"function"==typeof r&&r(e)},end:function(){s.end=!0,m(document).off("keyup",s.keyup)}},n))},u=function(){g.close(s.loadi),g.msg("当前图片地址异常
                                                        是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){1").addClass(r));layui.each(i.bars,function(t,e){var n=s('
                                                      • ');n.addClass(e.icon).attr({"lay-type":e.type,style:e.style||(i.bgcolor?"background-color: "+i.bgcolor:"")}).html(e.content),n.on("click",function(){var t=s(this).attr("lay-type");"top"===t&&("body"===i.target?s("html,body"):u).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,t)}),"object"===layui.type(i.on)&&layui.each(i.on,function(t,e){n.on(t,function(){var t=s(this).attr("lay-type");"function"==typeof e&&e.call(this,t)})}),"top"===e.type&&(n.addClass("layui-fixbar-top"),o=n),l.append(n)}),c.find("."+r).remove(),"object"==typeof i.css&&l.css(i.css),c.append(l),o&&(e=function e(){return u.scrollTop()>=i.margin?t||(o.show(),t=1):t&&(o.hide(),t=0),e}()),u.on("scroll",function(){e&&(clearTimeout(n),n=setTimeout(function(){e()},100))})},countdown:function(i){i=s.extend(!0,{date:new Date,now:new Date},i);var o=arguments,r=(1]|&(?=#[a-zA-Z0-9]+)/g.test(t+="")?t.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):t},unescape:function(t){return t!==undefined&&null!==t||(t=""),(t+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(t){var e=(t=t||{}).window||window.open(t.url||"",t.target,t.specs);t.url||(e.document.open("text/html","replace"),e.document.write(t.content||""),e.document.close())},toVisibleArea:function(t){var e,n,i,o,r,a,c,u;(t=s.extend({margin:160,duration:200,type:"y"},t)).scrollElem[0]&&t.thisElem[0]&&(e=t.scrollElem,c=t.thisElem,i=(r="y"===t.type)?"top":"left",o=e[n=r?"scrollTop":"scrollLeft"](),r=e[r?"height":"width"](),a=e.offset()[i],u={},(c=c.offset()[i]-a)>r-t.margin||c."+v,E=function(e){var i=this;i.index=++h.index,i.config=c.extend({},i.config,h.config,e),i.init()};E.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:[200,300],shade:0,accordion:!1},E.prototype.reload=function(e,i){var t=this;t.config=c.extend({},t.config,e),t.init(!0,i)},E.prototype.init=function(e,i){var t,n=this,a=n.config,l=c(a.elem);return 1');return 0No data
                                                      • '),e},u=function(r,e){return layui.each(e,function(e,i){var t,n=i[s.children]&&0",(t="href"in i?''+l+"":l,n?'
                                                        '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
                                                        ":'
                                                        '+t+"
                                                        "),""].join(""))).data("item",i),n&&(a=c('
                                                        '),t=c("
                                                          "),"parent"===o?(a.append(u(t,i[s.children])),l.append(a)):l.append(u(t,i[s.children]))),r.append(l))}),r},a=['
                                                          ',"
                                                          "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(y+"_opened")||(l.elemView=c("."+g+'[lay-id="'+d.id+'"]'),"reloadData"===i&&l.elemView.length?l.elemView.html(d.content||n()):(l.elemView=c(a),l.elemView.append(d.content||n()),d.className&&l.elemView.addClass(d.className),d.style&&l.elemView.attr("style",d.style),h.thisId=d.id,l.remove(),t.append(l.elemView),d.elem.data(y+"_opened",!0),e=d.shade?'
                                                          ':"",l.elemView.before(e),"mouseenter"===d.trigger&&l.elemView.on("mouseenter",function(){clearTimeout(f.timer)}).on("mouseleave",function(){l.delayRemove()})),l.position(),(f.prevElem=l.elemView).data("prevElem",d.elem),l.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),l.elemView.find(".layui-menu li").on("click",function(e){var i=c(this),t=i.data("item")||{},n=t[s.children]&&0n.width()&&(t.addClass(x),(i=t[0].getBoundingClientRect()).left<0)&&t.removeClass(x),i.bottom>n.height())&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5))}).on("mouseleave",t,function(e){var i=c(this).children("."+C);i.removeClass(x),i.css("margin-top",0)}),h.close=function(e){e=f.getThis(e);return e?(e.remove(),f.call(e)):this},h.reload=function(e,i,t){e=f.getThis(e);return e?(e.reload(i,t),f.call(e)):this},h.reloadData=function(){var t=c.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),h.reload.apply(null,t)},h.render=function(e){e=new E(e);return f.call(e)},e(r,h)});layui.define(["jquery","lay"],function(e){"use strict";var g=layui.$,x=layui.lay,c={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=g.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,i,e,t)}},i="slider",v="layui-disabled",b="layui-slider-bar",T="layui-slider-wrap",w="layui-slider-wrap-btn",M="layui-slider-tips",L="layui-slider-input-txt",E="layui-slider-hover",t=function(e){var t=this;t.index=++c.index,t.config=g.extend({},t.config,c.config,e),t.render()};t.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},t.prototype.render=function(){var n=this,a=n.config,e=g(a.elem);if(1a.max&&(a.value=a.max),i=Math.floor((a.value-a.min)/(a.max-a.min)*100)+"%");var l,e=a.disabled?"#c2c2c2":a.theme,t='
                                                          '+(a.tips?'
                                                          ':"")+'
                                                          '+(a.range?'
                                                          ':"")+"
                                                          ",i=g(a.elem),s=i.next(".layui-slider");if(s[0]&&s.remove(),n.elemTemp=g(t),a.range?(n.elemTemp.find("."+T).eq(0).data("value",a.value[0]),n.elemTemp.find("."+T).eq(1).data("value",a.value[1])):n.elemTemp.find("."+T).data("value",a.value),i.html(n.elemTemp),"vertical"===a.type&&n.elemTemp.height(a.height+"px"),a.showstep){for(var o=(a.max-a.min)/a.step,r="",u=1;u<1+o;u++){var d=100*u/o;d<100&&(r+='
                                                          ')}n.elemTemp.append(r)}a.input&&!a.range&&(e=g('
                                                          '),i.css("position","relative"),i.append(e),i.find("."+L).children("input").val(a.value),"vertical"===a.type?e.css({left:0,top:-48}):n.elemTemp.css("margin-right",e.outerWidth()+15)),a.disabled?(n.elemTemp.addClass(v),n.elemTemp.find("."+w).addClass(v)):n.slide(),n.elemTemp.find("."+w).on("mouseover",function(){var e="vertical"===a.type?a.height:n.elemTemp[0].offsetWidth,t=n.elemTemp.find("."+T),i=("vertical"===a.type?e-g(this).parent()[0].offsetTop-t.height():g(this).parent()[0].offsetLeft)/e*100,t=g(this).parent().data("value"),e=a.setTips?a.setTips(t):t;n.elemTemp.find("."+M).html(e),clearTimeout(l),l=setTimeout(function(){"vertical"===a.type?n.elemTemp.find("."+M).css({bottom:i+"%","margin-bottom":"20px",display:"inline-block"}):n.elemTemp.find("."+M).css({left:i+"%",display:"inline-block"})},300)}).on("mouseout",function(){clearTimeout(l),n.elemTemp.find("."+M).css("display","none")})},t.prototype.slide=function(e,t,i){var u=this,d=u.config,c=u.elemTemp,v=function(){return"vertical"===d.type?d.height:c[0].offsetWidth},m=c.find("."+T),o=c.next(".layui-slider-input"),r=o.children("."+L).children("input").val(),p=100/((d.max-d.min)/Math.ceil(d.step)),f=function(e,t,i){e=(e=100<(e=100n[1]&&n.reverse(),u.value=d.range?n:l,d.change&&d.change(u.value),"done"===i&&d.done&&d.done(u.value)},h=function(e){var t=e/v()*100/p,i=Math.round(t)*p;return i=e==v()?Math.ceil(t)*p:i},y=g(['
                                                          v()?v():t)/v()*100/p;f(t,o),r.addClass(E),c.find("."+M).show(),e.preventDefault()},n=function(e){r.removeClass(E),setTimeout(function(){c.find("."+M).hide()},e)},a=function(){n&&n(x.touchEventsSupported()?1e3:0),y.remove(),d.done&&d.done(u.value),x.touchEventsSupported()&&(t[0].removeEventListener("touchmove",i,!!x.passiveSupported&&{passive:!1}),t[0].removeEventListener("touchend",a),t[0].removeEventListener("touchcancel",a))},g("#LAY-slider-moving")[0]||g("body").append(y),y.on("mousemove",i),y.on("mouseup",a).on("mouseleave",a),x.touchEventsSupported()&&(t[0].addEventListener("touchmove",i,!!x.passiveSupported&&{passive:!1}),t[0].addEventListener("touchend",a),t[0].addEventListener("touchcancel",a))})}),c.on("click",function(e){var t=g("."+w),i=g(this);!t.is(event.target)&&0===t.has(event.target).length&&t.length&&(i=(t=(t=(t="vertical"===d.type?v()-e.clientY+i.offset().top-g(window).scrollTop():e.clientX-i.offset().left-g(window).scrollLeft())<0?0:t)>v()?v():t)/v()*100/p,t=d.range?"vertical"===d.type?Math.abs(t-parseInt(g(m[0]).css("bottom")))>Math.abs(t-parseInt(g(m[1]).css("bottom")))?1:0:Math.abs(t-m[0].offsetLeft)>Math.abs(t-m[1].offsetLeft)?1:0:0,f(i,t,"done"),e.preventDefault())}),o.children(".layui-slider-input-btn").children("i").each(function(t){g(this).on("click",function(){r=o.children("."+L).children("input").val();var e=((r=1==t?r-d.stepd.max?d.max:Number(r)+d.step)-d.min)/(d.max-d.min)*100/p;f(e,0,"done")})});var n=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)d.max?d.max:e,((this.value=e)-d.min)/(d.max-d.min)*100/p);f(e,0,"done")};o.children("."+L).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),n.call(this))}).on("change",n)},t.prototype.events=function(){this.config},c.render=function(e){e=new t(e);return function(){var i=this,n=i.config;return{setValue:function(e,t){return e=(e=e>n.max?n.max:e)',"",'','',"","","
                                                          "].join("")),t=i.elem=k(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),t.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:t.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,t=e.elemColorBox[0],r=e.elemPicker=k(['
                                                          ','
                                                          ','
                                                          ','
                                                          ','
                                                          ','
                                                          ',"
                                                          ",'
                                                          ','
                                                          ',"
                                                          ","
                                                          ",'
                                                          ','
                                                          ','
                                                          ',"
                                                          ","
                                                          ",i.predefine?(o=['
                                                          '],layui.each(i.colors,function(e,i){o.push(['
                                                          ','
                                                          ',"
                                                          "].join(""))}),o.push("
                                                          "),o.join("")):"",'
                                                          ','
                                                          ','',"
                                                          ",'
                                                          ','','',"","
                                                          "].join(""));e.elemColorBox.find("."+C)[0];k(a)[0]&&k(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),k("body").append(r)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=t.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=k("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close)&&i.close(this.color),this},d.prototype.position=function(){var e=this,i=e.config;return r.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),t=i.elemPicker.find("."+M),r=o[0].style.backgroundColor;r?(e=Y(F(r)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?t.find("input").val(r):"rgba"===o?(o=F(r),3===(r.match(/[0-9]{1,3}/g)||[]).length?(t.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+D).css("left",280)):(t.find("input").val(r),r=280*r.slice(r.lastIndexOf(",")+1,r.length-1),i.elemPicker.find("."+D).css("left",r)),i.elemPicker.find("."+T)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):t.find("input").val("#"+j(e))):(i.select(0,100,100),t.find("input").val(""),i.elemPicker.find("."+T)[0].style.background="",i.elemPicker.find("."+D).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),t=n.elemPicker.find("."+E),u=n.elemPicker.find("."+T),f=n.elemPicker.find("."+D),p=e[0].offsetTop/180*360,h=100-(t[0].offsetTop+3)/180*100,g=(t[0].offsetLeft+3)/260*100,v=Math.round(f[0].offsetLeft/280*100)/100,y=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),m=function(e,i,o,t){n.select(e,i,o);var r=X({h:e,s:i,b:o}),e=j({h:e,s:i,b:o}),i=n.elemPicker.find("."+M).find("input");y.addClass(x).removeClass(P),c[0].style.background="rgb("+r.r+", "+r.g+", "+r.b+")","torgb"===a?i.val("rgb("+r.r+", "+r.g+", "+r.b+")"):"rgba"===a?(f.css("left",280*t),i.val("rgba("+r.r+", "+r.g+", "+r.b+", "+t+")"),c[0].style.background="rgba("+r.r+", "+r.g+", "+r.b+", "+t+")",u[0].style.background="linear-gradient(to right, rgba("+r.r+", "+r.g+", "+r.b+", 0), rgb("+r.r+", "+r.g+", "+r.b+"))"):i.val("#"+e),l.change&&l.change(k.trim(n.elemPicker.find("."+M).find("input").val()))},o=k(['
                                                          '].join("")),b=function(e){k("#LAY-colorpicker-moving")[0]||k("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var t=this.offsetTop,r=e.clientY;b(function(e){var i=t+(e.clientY-r),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;m(p=o,g,h,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-k(this).offset().top+L.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;m(p=i,g,h,v),e.preventDefault()}),t.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),b(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),t=d[0].offsetHeight-3,r=d[0].offsetWidth-3,r=((o=r<(o=o<-3?-3:o)?r:o)+3)/260*100,o=100-((i=t<(i=i<-3?-3:i)?t:i)+3)/180*100;m(p,g=r,h=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-k(this).offset().top-3+L.scrollTop(),o=e.clientX-k(this).offset().left-3+L.scrollLeft(),o=((i=i<-3?-3:i)>this.offsetHeight-3&&(i=this.offsetHeight-3),((o=(o=o<-3?-3:o)>this.offsetWidth-3?this.offsetWidth-3:o)+3)/260*100),i=100-(i+3)/180*100;m(p,g=o,h=i,v),layui.stope(e),e.preventDefault(),t.trigger(e,"mousedown")}),f.on("mousedown",function(e){var t=this.offsetLeft,r=e.clientX;b(function(e){var i=t+(e.clientX-r),o=u[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);m(p,g,h,v=o),e.preventDefault()}),e.preventDefault()}),u.on("click",function(e){var i=e.clientX-k(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);m(p,g,h,v=i),e.preventDefault()}),i.each(function(){k(this).on("click",function(){k(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(F(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);p=i.h,g=i.s,h=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,m(i.h,i.s,i.b,o)})}),r.touchEventsSupported()&&layui.each([{elem:s,eventType:"click"},{elem:u,eventType:"click"},{elem:d,eventType:"mousedown"}],function(e,t){r.touchSwipe(t.elem,{onTouchMove:function(e){var i,o;e=e,i=t.eventType,e=e.touches[0],(o=document.createEvent("MouseEvent")).initMouseEvent(i,!0,!0,window,1,e.screenX,e.screenY,e.clientX,e.clientY,!1,!1,!1,!1,0,null),e.target.dispatchEvent(o)}})})},d.prototype.select=function(e,i,o,t){this.config;var r=j({h:e,s:100,b:100}),e=(j({h:e,s:i,b:o}),e/360*180),o=180-o/100*180-3,i=i/100*260-3;this.elemPicker.find("."+B).css("top",e),this.elemPicker.find("."+I)[0].style.background="#"+r,this.elemPicker.find("."+E).css({top:o,left:i})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+M+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,t,r,n,l=k.trim(d.val());-1>16,g:(65280&r)>>8,b:255&r},t=Y(n),s[0].style.background=o="#"+j(t),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i?(c.select(t.h,t.s,t.b,i),a.change&&a.change(o)):(c.color=l,a.done&&a.done(l),c.removePicker())}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=k(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=k(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),k(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,t;n.thisId&&(i=l.getThis(n.thisId))&&(o=i.config,t=i.elemColorBox.find("."+C),k(e.target).hasClass(c)||k(e.target).parents("."+c)[0]||k(e.target).hasClass(a.replace(/\./g,""))||k(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(F(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),t[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),L.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!k(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(t,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),c="element",r="layui-this",h="layui-show",o=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,c,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(o),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
                                                          '+(i.content||"")+"
                                                          "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),C.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(this).index();C.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",p="layui-nav-bar",b="layui-nav-tree",v="layui-nav-child",m="layui-nav-more",g="layui-anim layui-anim-upbit",C={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(r).siblings().removeClass(r),i.eq(t).addClass(h).siblings().removeClass(h)),layui.event.call(this,c,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(r)&&(i.next()[0]&&i.next().is("li")?C.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&C.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){C.tabAuto()},50),layui.event.call(this,c,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t,i=u(this),a=i.children(".layui-tab-title"),e=(i.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),e=u('');c===window&&d.ie,i.attr("lay-allowclose")&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||((t=u('')).on("click",C.tabDelete),i.append(t))}),"string"!=typeof i.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(t=a.find("li").eq(0).height())+t/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(e),i.attr("overflow",""),e.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),i.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.closest(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+v),n="string"==typeof e.attr("lay-unselect");if("javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+r).removeClass(r),e.addClass(r)),i.hasClass(b)){var n=f+"ed",s=!e.hasClass(n),o=function(){u(this).css({display:""}),i.children("."+p).css({opacity:0})};if(l.is(":animated"))return;l.removeClass(g),l[0]&&(s?(l.slideDown(200,o),e.addClass(n)):(e.removeClass(n),l.show().slideUp(200,o)),"string"!=typeof i.attr("lay-accordion")&&"all"!==i.attr("lay-shrink")||((s=e.siblings("."+n)).removeClass(n),s.children("."+v).show().stop().slideUp(200,o)))}layui.event.call(this,c,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,c,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){C.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+p)[0]||(i.append(a),(i.hasClass(b)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+v);i.hasClass(b)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(g),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+m).addClass(m+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(b)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+v).removeClass(h),i.find("."+m).removeClass(m+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(b)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+v)[0]&&!t.children("."+m)[0]&&t.append(''),t.off("click",C.clickThis).on("click",C.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",C.collapse).on("click",C.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",C.tabClick),u(window).on("resize",C.tabAuto),t(c,a)});layui.define(["lay","layer"],function(e){"use strict";var x=layui.$,a=layui.lay,i=layui.layer,b=layui.device(),t="upload",r="layui_"+t+"_index",o={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var i=this;return i.config=x.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var i=this,e=i.config.id;return{upload:function(e){i.upload.call(i,e)},reload:function(e){i.reload.call(i,e)},config:(l.that[e]=i).config}},u="layui-upload-file",f="layui-upload-form",F="layui-upload-iframe",w="layui-upload-choose",L="UPLOADING",j=function(e){var i=this;i.index=++o.index,i.config=x.extend({},i.config,o.config,e),i.render()};j.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1,text:{"cross-domain":"Cross-domain requests are not supported","data-format-error":"Please return JSON data format","check-error":"",error:"","limit-number":null,"limit-size":null}},j.prototype.reload=function(e){var i=this;i.config=x.extend({},i.config,e),i.render(!0)},j.prototype.render=function(e){var i=this,t=i.config,n=x(t.elem);return 1"].join("")),n=i.elem.next();(n.hasClass(u)||n.hasClass(f))&&n.remove(),b.ie&&b.ie<10&&i.elem.wrap('
                                                          '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(t),b.ie&&b.ie<10&&e.initIE()},j.prototype.initIE=function(){var t,e=this.config,i=x(''),n=x(['
                                                          ',"
                                                          "].join(""));x("#"+F)[0]||x("body").append(i),e.elem.next().hasClass(f)||(this.elemFile.wrap(n),e.elem.next("."+f).append((t=[],layui.each(e.data,function(e,i){i="function"==typeof i?i():i,t.push('')}),t.join(""))))},j.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},j.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},j.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,i){var t=new FileReader;t.readAsDataURL(i),t.onload=function(){n&&n(e,i,this.result)}})},j.prototype.upload=function(e,i){var t,n,a,o,u=this,f=u.config,c=f.text||{},l=u.elemFile[0],s=function(){return e||u.files||u.chooseFiles||l.files},r=function(){var a=0,o=0,l=s(),r=function(){f.multiple&&a+o===u.fileLength&&"function"==typeof f.allDone&&f.allDone({total:u.fileLength,successful:a,failed:o})},t=function(t){var n=new FormData,i=function(e){t.unified?layui.each(l,function(e,i){delete i[L]}):delete e[L]};if(layui.each(f.data,function(e,i){i="function"==typeof i?i():i,n.append(e,i)}),t.unified)layui.each(l,function(e,i){i[L]||(i[L]=!0,n.append(f.field,i))});else{if(t.file[L])return;n.append(f.field,t.file),t.file[L]=!0}var e={url:f.url,type:"post",data:n,dataType:f.dataType||"json",contentType:!1,processData:!1,headers:f.headers||{},success:function(e){f.unified?a+=u.fileLength:a++,p(t.index,e),r(t.index),i(t.file)},error:function(e){f.unified?o+=u.fileLength:o++,u.msg(c.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
                                                          ")),m(t.index),r(t.index),i(t.file)}};"function"==typeof f.progress&&(e.xhr=function(){var e=x.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var i;e.lengthComputable&&(i=Math.floor(e.loaded/e.total*100),f.progress(i,(f.item||f.elem)[0],e,t.index))}),e}),x.ajax(e)};f.unified?t({unified:!0,index:0}):layui.each(l,function(e,i){t({index:e,file:i})})},d=function(){var n=x("#"+F);u.elemFile.parent().submit(),clearInterval(j.timer),j.timer=setInterval(function(){var e,i=n.contents().find("body");try{e=i.text()}catch(t){u.msg(c["cross-domain"]),clearInterval(j.timer),m()}e&&(clearInterval(j.timer),i.html(""),p(0,e))},30)},p=function(e,i){if(u.elemFile.next("."+w).remove(),l.value="","json"===f.force&&"object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},u.msg(c["data-format-error"])}"function"==typeof f.done&&f.done(i,e||0,function(e){u.upload(e)})},m=function(e){f.auto&&(l.value=""),"function"==typeof f.error&&f.error(e||0,function(e){u.upload(e)})},h=f.exts,g=(n=[],layui.each(e||u.chooseFiles,function(e,i){n.push(i.name)}),n),v={preview:function(e){u.preview(e)},upload:function(e,i){var t={};t[e]=i,u.upload(t)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,i){u.files[e]=i}),u.files},resetFile:function(e,i,t){i=new File([i],t);u.files=u.files||{},u.files[e]=i}},y={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[f.accept]||"\u6587\u4ef6",g=0===g.length?l.value.match(/[^\/\\]+\..+/g)||[]:g;if(0!==g.length){switch(f.accept){case"file":layui.each(g,function(e,i){if(h&&!RegExp(".\\.("+h+")$","i").test(escape(i)))return t=!0});break;case"video":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(i)))return t=!0});break;case"audio":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(i)))return t=!0});break;default:layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"jpg|png|gif|bmp|jpeg|svg")+")$","i").test(escape(i)))return t=!0})}if(t)return u.msg(c["check-error"]||"\u9009\u62e9\u7684"+y+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==i&&!f.auto||(f.choose&&f.choose(v),"choose"!==i)){if(u.fileLength=(a=0,y=s(),layui.each(y,function(){a++}),a),f.number&&u.fileLength>f.number)return u.msg("function"==typeof c["limit-number"]?c["limit-number"](f,u.fileLength):"\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+f.number+" \u4e2a\u6587\u4ef6
                                                          \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+u.fileLength+" \u4e2a\u6587\u4ef6");if(01024*f.size&&(i=1<=(i=f.size/1024)?i.toFixed(2)+"MB":f.size+"KB",l.value="",o=i)}),o)return u.msg("function"==typeof c["limit-size"]?c["limit-size"](f,o):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!f.before||!1!==f.before(v))b.ie?(9'+e+"")};a.elem.off("upload.start").on("upload.start",function(){var e=x(this);n.config.item=e,n.elemFile[0].click()}),b.ie&&b.ie<10||a.elem.off("upload.over").on("upload.over",function(){x(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){x(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,i){var t=x(this),i=i.originalEvent.dataTransfer.files||[];t.removeAttr("lay-over"),o(i),a.auto?n.upload():l(i)}),n.elemFile.on("change",function(){var e=this.files||[];0!==e.length&&(o(e),a.auto?n.upload():l(e))}),a.bindAction.off("upload.action").on("upload.action",function(){n.upload()}),a.elem.data(r)||(a.elem.on("click",function(){n.isFile()||x(this).trigger("upload.start")}),a.drag&&a.elem.on("dragover",function(e){e.preventDefault(),x(this).trigger("upload.over")}).on("dragleave",function(e){x(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),x(this).trigger("upload.drop",e)}),a.bindAction.on("click",function(){x(this).trigger("upload.action")}),a.elem.data(r,a.id))},l.that={},l.getThis=function(e){var i=l.that[e];return i||hint.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},o.render=function(e){e=new j(e);return l.call(e)},e(t,o)});layui.define(["lay","layer","util"],function(e){"use strict";var C=layui.$,h=layui.layer,d=layui.util,l=layui.hint(),w=(layui.device(),"form"),o=".layui-form",N="layui-this",T="layui-hide",$="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e))return"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"},phone:function(e){if(e&&!/^1\d{10}$/.test(e))return"\u624b\u673a\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"},email:function(e){if(e&&!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))return"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"},url:function(e){if(e&&!/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/.test(e))return"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"},number:function(e){if(e&&isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:function(e){if(e&&!/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/.test(e))return"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"},identity:function(e){if(e&&!/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(e))return"\u8eab\u4efd\u8bc1\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"}},autocomplete:null}},i=(t.prototype.set=function(e){return C.extend(!0,this.config,e),this},t.prototype.verify=function(e){return C.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return C(o+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,w,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=C(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;C(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=C(o+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){var e=e||a.find("input,textarea"),t=(i.autocomplete&&e.attr("autocomplete",i.autocomplete),function(e,t){var i=e.val(),a=Number(i),n=Number(e.attr("step"))||1,l=Number(e.attr("min")),r=Number(e.attr("max")),s=Number(e.attr("lay-precision")),o="click"!==t&&""===i,c="init"===t;isNaN(a)||("click"===t&&(a=!!C(this).index()?a-n:a+n),t=function(e){return((e.toString().match(/\.(\d+$)/)||[])[1]||"").length},s=0<=s?s:Math.max(t(n),t(i)),o||(c||r<=(a=a<=l?l:a)&&(a=r),s&&(a=a.toFixed(s)),e.val(a)),e[(a'),e=layui.isArray(i.value)?i.value:[i.value],e=C((a=[],layui.each(e,function(e,t){a.push('')}),a.join(""))),n=(t.append(e),i.split&&t.addClass("layui-input-split"),i.className&&t.addClass(i.className),r.next("."+u)),l=(n[0]&&n.remove(),r.parent().hasClass(o)||r.wrap('
                                                          '),r.next("."+c));l[0]?((n=l.find("."+u))[0]&&n.remove(),l.prepend(t),r.css("padding-right",function(){return(r.closest(".layui-input-group")[0]?0:l.outerWidth())+t.outerWidth()})):(t.addClass(c),r.after(t)),"auto"===i.show&&d(t,r.val()),"function"==typeof i.init&&i.init.call(this,r,i),r.on("input propertychange",function(){var e=this.value;"auto"===i.show&&d(t,e)}),r.on("blur",function(){"function"==typeof i.blur&&i.blur.call(this,r,i)}),e.on("click",function(){var e=r.attr("lay-filter");C(this).hasClass($)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,w,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},f={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),d(C(this).parent(),null)},show:"auto",disabled:e},number:{value:["up","down"],split:!0,className:"layui-input-number",disabled:r.is("[disabled]"),init:function(e){t.call(this,e,"init")},click:function(e){t.call(this,e,"click")},blur:function(e){t.call(this,e,"blur")}}};n()})},select:function(e){var p,c="\u8bf7\u9009\u62e9",m="layui-form-select",g="layui-select-title",x="layui-select-none",b="",e=e||a.find("select"),k=function(e,t){C(e.target).parent().hasClass(g)&&!t||(C("."+m).removeClass(m+"ed "+m+"up"),p&&b&&p.val(b)),p=null},u=function(a,e,t){var s,r,i,n,o,l,c=C(this),u=a.find("."+g),d=u.find("input"),f=a.find("dl"),h=f.children("dd"),y=f.children("dt"),v=this.selectedIndex;e||(r=c.attr("lay-search"),i=function(){var e=a.offset().top+a.outerHeight()+5-F.scrollTop(),t=f.outerHeight();v=c[0].selectedIndex,a.addClass(m+"ed"),h.removeClass(T),y.removeClass(T),s=null,h.removeClass(N),0<=v&&h.eq(v).addClass(N),e+t>F.height()&&t<=e&&a.addClass(m+"up"),o()},n=function(e){a.removeClass(m+"ed "+m+"up"),d.blur(),s=null,e||l(d.val(),function(e){var t=c[0].selectedIndex;e&&(b=C(c[0].options[t]).html(),0===t&&b===d.attr("placeholder")&&(b=""),d.val(b||""))})},o=function(){var e,t,i=f.children("dd."+N);i[0]&&(e=i.position().top,t=f.height(),i=i.height(),t\u65e0\u5339\u914d\u9879

                                                          '):f.find("."+x).remove()},"keyup"),""===t&&(c.val(""),f.find("."+N).removeClass(N),(c[0].options[0]||{}).value||f.children("dd:eq(0)").addClass(N),f.find("."+x).remove()),o()}).on("blur",function(e){var t=c[0].selectedIndex;p=d,b=C(c[0].options[t]).text(),0===t&&b===d.attr("placeholder")&&(b=""),setTimeout(function(){l(d.val(),function(e){b||d.val("")},"blur")},200)})),h.on("click",function(){var e=C(this),t=e.attr("lay-value"),i=c.attr("lay-filter");return e.hasClass($)||(e.hasClass("layui-select-tips")?d.val(""):(d.val(e.text()),e.addClass(N)),e.siblings().removeClass(N),c.val(t).removeClass("layui-form-danger"),layui.event.call(this,w,"select("+i+")",{elem:c[0],value:t,othis:a}),n(!0)),!1}),a.find("dl>dt").on("click",function(e){return!1}),C(document).off("click",k).on("click",k))};e.each(function(e,t){var i=C(this),a=i.next("."+m),n=this.disabled,l=t.value,r=C(t.options[t.selectedIndex]),t=t.options[0];if("string"==typeof i.attr("lay-ignore"))return i.show();var s,o="string"==typeof i.attr("lay-search"),t=t&&!t.value&&t.innerHTML||c,r=C(['
                                                          ','
                                                          ','','
                                                          ','
                                                          ',(t=i.find("*"),s=[],layui.each(t,function(e,t){var i=t.tagName.toLowerCase();0!==e||t.value||"optgroup"===i?s.push("optgroup"===i?"
                                                          "+t.label+"
                                                          ":'
                                                          '+C.trim(t.innerHTML)+"
                                                          "):s.push('
                                                          '+C.trim(t.innerHTML||c)+"
                                                          ")}),0===s.length&&s.push('
                                                          \u6ca1\u6709\u9009\u9879
                                                          '),s.join("")+"
                                                          "),"
                                                          "].join(""));a[0]&&a.remove(),i.after(r),u.call(this,r,n,o)})},checkbox:function(e){var o={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],"switch":["layui-form-switch","layui-form-onswitch","switch"],SUBTRA:"layui-icon-indeterminate"},e=e||a.find("input[type=checkbox]");e.each(function(e,t){var i=C(this),a=i.attr("lay-skin")||"primary",n=d.escape(C.trim(t.title||(t.title=i.attr("lay-text")||""))),l=this.disabled,r=o[a]||o.checkbox,s=i.next("."+r[0]);if(s[0]&&s.remove(),i.next("[lay-checkbox]")[0]&&(n=i.next().html()||""),n="switch"===a?n.split("|"):[n],"string"==typeof i.attr("lay-ignore"))return i.show();l=C(['
                                                          ",(s={checkbox:[n[0]?"
                                                          "+n[0]+"
                                                          ":"primary"===a?"":"
                                                          ",''].join(""),"switch":"
                                                          "+((t.checked?n[0]:n[1])||"")+"
                                                          "})[a]||s.checkbox,"
                                                          "].join(""));i.after(l),function(a,n){var l=C(this);a.on("click",function(){var e=C(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+o.SUBTRA).removeClass(o.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],w,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var r="layui-form-radio",s=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=C(this),a=i.next("."+r),n=this.disabled;if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();n=C(['
                                                          ','',"
                                                          "+(a=d.escape(t.title||""),a=i.next("[lay-radio]")[0]?i.next().html():a)+"
                                                          ","
                                                          "].join(""));i.after(n),function(a){var n=C(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(o),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=C(this).next("."+r);this.checked=!1,e.removeClass(r+"ed"),e.children(".layui-icon").removeClass(l+" "+s[0]).addClass(s[1])}),n[0].checked=!0,a.addClass(r+"ed"),a.children(".layui-icon").addClass(l+" "+s[0]),layui.event.call(n[0],w,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,n)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?C(e).is(o)?(a=C(e),t()):e.each(function(e,t){var i=C(t);i.closest(o).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u,d=this.config.verify,f="layui-form-danger";return!(e=C(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=C(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=C.trim(s.val());if(s.removeClass(f),layui.each(t,function(e,t){var i="",a=d[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n)return"tips"===o?h.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?h.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&h.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(f),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i={},a=C(this),e="string"==typeof e?e:a.attr("lay-filter"),n=this.getFormElem?this.getFormElem(e):a.parents(o).eq(0),l=n.find("*[lay-verify]");return!!r.validate(l)&&(i=r.getValue(null,n),l={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?n:a.parents("form"))[0],field:i},"function"==typeof t&&t(l),layui.event.call(this,w,"submit("+e+")",l))}),r=new t,t=C(document),F=C(window);C(function(){r.render()}),t.on("reset",o,function(){var e=C(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",o,i).on("click","*[lay-submit]",i),e(w,r)});layui.define(["lay","laytpl","laypage","form","util"],function(n){"use strict";var p=layui.$,r=layui.lay,m=layui.laytpl,O=layui.laypage,f=layui.layer,v=layui.form,g=layui.util,x=layui.hint(),b=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){return this.config=p.extend({},this.config,e),this},on:function(e,t){return layui.onevent.call(this,N,e,t)}},w=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){k.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=w.that[e];return t||x.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=w.config[e];return t||x.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},T=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content;"numbers"===a.type&&(i=e.tplData[k.config.numbersName]);("escape"in a?a:t).escape&&(i=g.escape(i));t=e.text&&a.exportTemplet||a.templet||a.toolbar;return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(function(e){try{return r(e).html()}catch(t){return e}}(t)||String(i)).render(p.extend({LAY_COL:a},e.tplData))),e.text?p("
                                                          "+i+"
                                                          ").text():i},N="table",t=".layui-table",R="layui-hide",y="layui-hide-v",h="layui-none",D="layui-table-view",o=".layui-table-header",L=".layui-table-body",u=".layui-table-fixed-r",I=".layui-table-pageview",A=".layui-table-sort",E="layui-table-checked",_="layui-table-edit",M="layui-table-hover",P="laytable-cell-group",W="layui-table-col-special",j="layui-table-tool-panel",H="layui-table-expanded",S="LAY_TABLE_MOVE_DICT",e=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
                                                          ','
                                                          ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
                                                          ","
                                                          "].join("")},a=['',"","
                                                          "].join(""),s=[,"{{# if(d.data.toolbar){ }}",'
                                                          ','
                                                          ','
                                                          ',"
                                                          ","{{# } }}",'
                                                          ',"{{# if(d.data.loading){ }}",'
                                                          ','',"
                                                          ","{{# } }}","{{# var left, right; }}",'
                                                          ',e(),"
                                                          ",'
                                                          ',a,"
                                                          ","{{# if(left){ }}",'
                                                          ','
                                                          ',e({fixed:!0}),"
                                                          ",'
                                                          ',a,"
                                                          ","
                                                          ","{{# }; }}","{{# if(right){ }}",'
                                                          ','
                                                          ',e({fixed:"right"}),'
                                                          ',"
                                                          ",'
                                                          ',a,"
                                                          ","
                                                          ","{{# }; }}","
                                                          ","{{# if(d.data.totalRow){ }}",'
                                                          ','','',"
                                                          ","
                                                          ","{{# } }}",'
                                                          ','
                                                          ',"
                                                          "].join(""),d=p(window),F=p(document),i=function(e){this.index=++k.index,this.config=p.extend({},this.config,k.config,e),this.render()},c=(i.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},i.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=p(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(w.that[i]=t,(w.config[i]=a).request=p.extend({pageName:"page",limitName:"limit"},a.request),a.response=p.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-.+$/.test(a.height)?(t.fullHeightGap=a.height.split("-")[1],a.height=d.height()-(parseFloat(t.fullHeightGap)||0)):a.height&&/^#\w+\S*-.+$/.test(a.height)?(i=a.height.split("-"),t.parentHeightGap=i.pop(),t.parentDiv=i.join("-"),a.height=p(t.parentDiv).height()-(parseFloat(t.parentHeightGap)||0)):"function"==typeof a.height&&(t.customHeightFunc=a.height,a.height=t.customHeightFunc());var l,e=a.elem,i=e.next("."+D),n=t.elem=p("
                                                          ");n.addClass((l=[D,D+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr({"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,"lay-id":a.id,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))}).html(m(s,{open:"{{",close:"}}"}).render({data:a,index:t.index})),t.renderStyle(),i[0]&&i.remove(),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(L),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(u),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},i.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},i.prototype.setInit=function(e){var l,a,d=this,r=d.config;if(r.clientWidth=r.width||(l=function(e){var t,a=(e=e||r.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return r.clientWidth;r.height=r.maxHeight||r.height,r.css&&-1===r.css.indexOf(D)&&(a=r.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+D+"-"+d.index+" "+t)}),r.css=a.join("}"));var c=function(a,e,i,l){var n,o;l?(l.key=[r.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,d.initOpts(l),(n=a+(parseInt(l.rowspan)||1)) td:hover > .layui-table-cell{overflow: auto;}"].concat(b.ie?[".layui-table-edit{height: "+i+";}","td[data-edit]:hover:after{height: "+i+";}"]:[]),function(e,t){t&&o.push(a+" "+t)})),l.css&&o.push(l.css),r.style({target:this.elem[0],text:o.join(""),id:"DF-table-"+n})},i.prototype.renderToolbar=function(){var e=this.config,t=['
                                                          ','
                                                          ','
                                                          '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=p(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
                                                          ')}),this.layTool.find(".layui-table-tool-self").html(l.join(""))},i.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=p('
                                                          ');t.pagebar&&((e=p(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},i.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](R),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},i.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},i.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+P)).css("width",0),layui.each(e.get().reverse(),function(){var e=p(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){p(this).hasClass(R)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.cssRules(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"
                                                          ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(R),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(I).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth()},i.prototype.page=1,i.prototype.pullData=function(a,t){var e,i,l=this,n=l.config,o=(n.HAS_SET_COLS_PATCH||l.setColsPatch(),n.HAS_SET_COLS_PATCH=!0,n.request),d=n.response,r=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:t.type})},c=function(e,t){l.setColsWidth(),"function"==typeof n.done&&n.done(e,a,e[d.countName],t)};t=t||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),t.renderData?((e={})[d.dataName]=k.cache[l.key],e[d.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[d.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=p.extend({},l.totalRow)),l.renderData({res:e,curr:a,count:e[d.countName],type:t.type,sort:!0}),c(e,"renderData")):n.url?(i={},n.page&&(i[o.pageName]=a,i[o.limitName]=n.limit),o=p.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(),p.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},complete:"function"==typeof n.complete?n.complete:undefined,success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[d.statusName]!=d.statusCode?l.errorView(e[d.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+d.statusName+'": '+d.statusCode):(l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),n.time=(new Date).getTime()-l.startTime+" ms"),c(e)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=a*n.limit-n.limit,o=n.data.concat(),e[d.dataName]=n.page?o.splice(i,n.limit):o,e[d.countName]=n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=p.extend({},n.totalRow)),l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),c(e))},i.prototype.eachCols=function(e){return k.eachCols(null,e,this.config.cols),this},i.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return x.error(t),{}}},i.prototype.getTrHtml=function(a,l,n,e){var s=this,u=s.config,y=e&&e.trs||[],h=e&&e.trs_fixed||[],f=e&&e.trs_fixed_r||[];return n=n||1,layui.each(a,function(e,o){var i=[],d=[],r=[],c=e+u.limit*(n-1)+1;if("object"!=typeof o){a[e]=o={LAY_KEY:o};try{k.cache[s.key][e]=o}catch(t){}}"array"===layui.type(o)&&0===o.length||(o[k.config.numbersName]=c,l||(o[k.config.indexName]=e),s.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=o[e];n!==undefined&&null!==n||(n=""),l.colGroup||(e=['','
                                                          "+function(){var e,t=p.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(p(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
                                                          "].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&d.push(e),"right"===l.fixed&&r.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+E+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+d.join("")+""),f.push(""+r.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:f}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},i.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,d=t[i.response.dataName]||[],t=t[i.response.totalRowName],r=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(d,o,l,{trs:r,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(r.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,f.close(a.tipsIndex)};return k.cache[a.key]=d,a.layTotal[0==d.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](R),a.layPage.find(I)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](y),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(R),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(R),void(i.page&&(i.page=p.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,O.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},i.prototype.renderTotal=function(e,o){var d,r=this,c=r.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||r.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),r.dataTotal=[],d=[],r.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&T.call(r,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&r.dataTotal.push({field:t.field,total:p("
                                                          "+l+"
                                                          ").text()}),['','
                                                          "+("string"==typeof(a=t.totalRow||c.totalRow)?m(a).render(p.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
                                                          "].join(""));d.push(n)}),e=r.layTotal.find(".layui-table-patch"),r.layTotal.find("tbody").html(""+d.join("")+(e.length?e.get(0).outerHTML:"")+""))},i.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},i.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},i.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}),v.render(t))},i.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},i.prototype.setRowChecked=function(i){var e=this,l=e.config,n="all"===i.index,o="array"===layui.type(i.index),d=(t=e.layBody.find("tr"),n?t:t.filter(o?function(){var e=p(this).data("index");return-1!==i.index.indexOf(e)}:'[data-index="'+i.index+'"]')),t=(i=p.extend({type:"checkbox"},i),k.cache[e.key]),a="checked"in i,r=function(e){return"radio"===i.type||(a?i.checked:!e)},t=(layui.each(t,function(e,t){var a;"array"===layui.type(t)||t[l.disabledName]||(n||(o?-1!==i.index.indexOf(e):Number(i.index)===e)?(a=t[l.checkName]=r(t[l.checkName]),(e=d.filter('[data-index="'+e+'"]'))[a?"addClass":"removeClass"](E),"radio"===i.type&&e.siblings().removeClass(E)):"radio"===i.type&&delete t[l.checkName])}),d.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[i.type]||"checkbox")+'"]:not(:disabled)')),c=t.last(),s=c.closest(u);("radio"===i.type&&s.hasClass(R)?t.first():t).prop("checked",r(c.prop("checked"))),e.syncCheckAll(),e.renderForm(i.type)},i.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(d=l.field,t.layHeader.find("th").each(function(e,t){var a=p(this),i=a.data("field");if(i===l.field)return l.field=a,d=i,!1}));try{var d=d||l.field.data("field"),r=l.field.data("key");if(t.sortKey&&!l.pull&&d===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+r).find(A);t.layHeader.find("th").find(A).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){x.error("Table modules: sort field '"+d+"' not matched")}t.sortKey={field:d,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,d,null,!0):"desc"===l.type?e=layui.sort(o,d,!0,!0):(e=layui.sort(o,k.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:d,type:l.type},layui.event.call(l.field,N,"sort("+n+")",p.extend({config:i},i.initSort)))},i.prototype.loading=function(e){var t=this;t.config.loading&&(e?(t.layInit&&t.layInit.remove(),delete t.layInit,t.layBox.find(".layui-table-init").remove()):(t.layInit=p(['
                                                          ','',"
                                                          "].join("")),t.layBox.append(t.layInit)))},i.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];r.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),!0})},i.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=d.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap?(l=p(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135):i.customHeightFunc&&(l=i.customHeightFunc())<135&&(l=135),1
                                                          ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(L).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0');a.html(t),u.height&&a.css("max-height",u.height-(s.layTool.outerHeight()||50)),i.find("."+j)[0]||i.append(a),s.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),f.close(s.tipsIndex),t){case"LAYTABLE_COLS":n({list:(a=[],s.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
                                                        • "+(t.fieldTitle||t.title||t.field)+"
                                                        • ").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=p(e.elem),t=this.checked,a=e.data("key"),i=s.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,s.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](R),l!=i.hide&&s.setParentCol(!t,e),s.resize(),layui.event.call(this,N,"colToggled("+c+")",{col:i,config:u}))})}});break;case"LAYTABLE_EXPORT":if(!l.length)return f.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});b.ie?f.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):n({list:['
                                                        • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
                                                        • ','
                                                        • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
                                                        • '].join(""),done:function(e,t){t.on("click",function(){var e=p(this).data("type");k.exportFile.call(s,u.id,null,e)})}});break;case"LAYTABLE_PRINT":if(!l.length)return f.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});var o=window.open("about:blank","_blank"),d=[""].join(""),r=p(s.layHeader.html());r.append(s.layMain.find("table").html()),r.append(s.layTotal.find("table").html()),r.find("th.layui-table-patch").remove(),r.find("thead>tr>th."+W).filter(function(e,t){return!p(t).children("."+P).length}).remove(),r.find("tbody>tr>td."+W).remove(),o.document.write(d+r.prop("outerHTML")),o.document.close(),layui.device("edg").edg?(o.onafterprint=o.close,o.print()):(o.print(),o.close())}layui.event.call(this,N,"toolbar("+c+")",p.extend({event:t,config:u},{}))}),s.layHeader.on("click","*[lay-event]",function(e){var t=p(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=s.col(t);layui.event.call(this,N,"colTool("+c+")",p.extend({event:a,config:u,col:t},{}))}),s.layPagebar.on("click","*[lay-event]",function(e){var t=p(this).attr("lay-event");layui.event.call(this,N,"pagebar("+c+")",p.extend({event:t,config:u},{}))}),e.on("mousemove",function(e){var t=p(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(d.allowResize=t.width()-e<=10,o.css("cursor",d.allowResize?"col-resize":""))}).on("mouseleave",function(){p(this);w.eventMoveElem||o.css("cursor","")}).on("mousedown",function(e){var t,a=p(this);d.allowResize&&(t=a.data("key"),e.preventDefault(),d.offset=[e.clientX,e.clientY],s.cssRules(t,function(e){var t=e.style.width||a.outerWidth();d.rule=e,d.ruleWidth=parseFloat(t),d.minWidth=a.data("minwidth")||u.cellMinWidth,d.maxWidth=a.data("maxwidth")||u.cellMaxWidth}),a.data(S,d),w.eventMoveElem=a)}),w.docEvent||F.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(S)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+D).attr("lay-id"),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),f.close(s.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+D).attr("lay-id"),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),d={},o.css("cursor",""),a.scrollPatch(),t.removeData(S),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],N,"colResized("+n+")",{col:l,config:a.config})}))}),w.docEvent=!0,e.on("click",function(e){var t=p(this),a=t.find(A),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");s.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(A+" .layui-edge ").on("click",function(e){var t=p(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?s.sort({field:t,type:"asc",fromEvent:!0}):s.sort({field:t,type:"desc",fromEvent:!0})}),s.commonMember=function(e){var t=p(this).parents("tr").eq(0).data("index"),r=s.layBody.find('tr[data-index="'+t+'"]'),c=(c=k.cache[s.key]||[])[t]||{},a={tr:r,config:u,data:k.clearCacheKey(c),dataCache:c,index:t,del:function(){k.cache[s.key][t]=[],r.remove(),s.scrollPatch()},update:function(e,d){e=e||{},layui.each(e,function(i,l){var n=r.children('td[data-field="'+i+'"]'),o=n.children(y);c[i]=a.data[i]=l,s.eachCols(function(e,t){var a;t.field==i?(o.html(T.call(s,{item3:t,content:l,tplData:p.extend({LAY_COL:t},c)})),n.data("content",l)):d&&(t.templet||t.toolbar)&&(e=r.children('td[data-field="'+(t.field||e)+'"]'),a=c[t.field],e.children(y).html(T.call(s,{item3:t,content:a,tplData:p.extend({LAY_COL:t},c)})),e.data("content",a))})}),s.renderForm()},setRowChecked:function(e){s.setRowChecked(p.extend({index:t},e))}};return p.extend(a,e)}),a=(s.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=p(this),a=t.closest("td"),t=t.prev(),i=(s.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?s.setRowChecked({index:"all",checked:l}):(s.setRowChecked({index:i,checked:l}),layui.stope(e)),layui.event.call(t[0],N,"checkbox("+c+")",r.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return s.col(a.data("key"))}})))}),s.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=p(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;s.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],N,"radio("+c+")",r.call(t[0],{checked:i,getCol:function(){return s.col(a.data("key"))}}))}),s.layBody.on("mouseenter","tr",function(){var e=p(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").addClass(M)}).on("mouseleave","tr",function(){var e=p(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").removeClass(M)}).on("click","tr",function(e){var t=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");p(e.target).is(t)||p(e.target).closest(t)[0]||a.call(this,"row")}).on("dblclick","tr",function(){a.call(this,"rowDouble")}).on("contextmenu","tr",function(e){u.defaultContextmenu||e.preventDefault(),a.call(this,"rowContextmenu")}),function(e){var t=p(this);t.data("off")||layui.event.call(this,N,e+"("+c+")",r.call(t.children("td")[0]))}),n=function(e,t){var a,i,l;(e=p(e)).data("off")||(l=e.data("field"),i=e.data("key"),i=s.col(i),a=e.closest("tr").data("index"),a=k.cache[s.key][a],e.children(y),(i="function"==typeof i.edit?i.edit(a):i.edit)&&((i=p("textarea"===i?'':''))[0].value=(l=e.data("content")||a[l])===undefined||null===l?"":l,e.find("."+_)[0]||e.append(i),i.focus(),t)&&layui.stope(t))},i=(s.layBody.on("change","."+_,function(){var e=p(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[s.key][e],l=r.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return s.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],N,"edit("+c+")",l)}).on("blur","."+_,function(){p(this).remove()}),s.layBody.on(u.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),s.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=p(this),a=t.children(y);t.data("off")||t.parent().hasClass(H)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.outerWidth()||0'))},l=function(e,t){var a=p(this),i=a.parent(),l=i.data("key"),n=s.col(l),o=i.parent().data("index"),i=i.children(y),d="layui-table-cell-c",r=p('');"tips"===(t=t||n.expandedMode||u.cellExpandedMode)?s.tipsIndex=f.tips(['
                                                          ',i.html(),"
                                                          ",''].join(""),i[0],{tips:[3,""],time:-1,anim:-1,maxWidth:b.ios||b.android?300:s.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){f.close(t)})}}):(s.elem.find("."+d).trigger("click"),s.cssRules(l,function(e){var t=e.style.width,a=n.expandedWidth||u.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],p(this).children().each(function(e){var t=p(this),a=t.attr("lay-data"),a=r.options(this,{attr:a?"lay-data":null,errorText:d+(a||t.attr("lay-options"))}),t=p.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=p(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),c(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')))}),d.push(n.join(","))}),c&&layui.each(c.dataTotal,function(e,t){r[t.field]||i.push('"'+(t.total||"")+'"')}),o.join(",")+"\r\n"+d.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l)&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))})})),p("."+j).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return(e=C(e)).reload(t,a,i),w.call(e)},k.reloadData=function(){var a=p.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new i(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=p.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},p(function(){k.init()}),n(N,k)});layui.define(["table"],function(e){"use strict";var E=layui.$,x=layui.form,B=layui.table,y=layui.hint(),j={config:{},on:B.on,eachCols:B.eachCols,index:B.index,set:function(e){var t=this;return t.config=E.extend({},t.config,e),t},resize:B.resize,getOptions:B.getOptions,hideCol:B.hideCol,renderData:B.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){j.reloadData(n,e,t)}}},P=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},F="layui-hide",L=".layui-table-main",q=".layui-table-fixed-l",R=".layui-table-fixed-r",l="layui-table-checked",h="layui-table-tree",Y="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",s="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",H="LAY_EXPAND",z="LAY_HAS_EXPANDED",X="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=function(e){var t=this;t.index=++j.index,t.config=E.extend(!0,{},t.config,j.config,e),t.init(),t.render()},f=function(n,i,e){var l=B.cache[n];layui.each(e||l,function(e,t){var a=t[Y]||"";-1!==a.indexOf("-")&&(l[a]=t),t[i]&&f(n,i,t[i])})},d=function(l,a,e){var d=P(l),r=("reloadData"!==e&&(d.status={expand:{}}),E.extend(!0,{},d.getOptions(),a)),n=r.tree,o=n.customName.children,i=n.customName.id,c=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,B.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},r.cols),a.parseData),u=a.done;r.url?e&&(!c||c.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(c)&&(a=c.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=d.flatToTree(a[t])),p(a[t],function(e){e[H]=H in e?e[H]:e[i]!==undefined&&d.status.expand[e[i]]},o),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),d.initData(a[t]),a},a.parseData.mod=!0):(a.data=a.data||[],n.data.isSimpleData&&(a.data=d.flatToTree(a.data)),d.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n=(a||delete d.isExpandAll,this.elem.next()),i=(d.updateStatus(null,{LAY_HAS_EXPANDED:!1}),f(l,o),n.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(i.length&&(e=j.checkStatus(l),i.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!a&&r.autoSort&&r.initSort&&r.initSort.type&&j.sort(l),d.renderTreeTable(n),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0)};t.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),B.render(E.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},t.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},t.prototype.getOptions=function(){return this.tableIns?B.getOptions(this.tableIns.config.id):this.config},t.prototype.flatToTree=function(e){var a,n,i,t,l,d,r,o=this.getOptions(),c=o.tree,u=c.customName,o=o.id;return e=e||B.cache[o],o=e,a=u.id,n=u.pid,i=u.children,t=c.data.rootPid,a=a||"id",n=n||"parentId",i=i||"children",r={},layui.each(o,function(e,t){l=a+t[a],r[l]=E.extend({},t),r[l][i]=[]}),layui.each(r,function(e,t){(d=a+t[n])&&r[d]&&r[d][i].push(t)}),Object.keys(r).map(function(e){return r[e]}).filter(function(e){return t?e[n]===t:!e[n]})},t.prototype.treeToFlat=function(e,n,i){var l=this,d=l.getOptions().tree.customName,r=d.children,o=d.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=E.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},t.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[Y],getParentNode:function(){return n.getNodeByIndex(e[s])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeByIndex=function(t){var a,e,n=this,i=n.getNodeDataByIndex(t);return i?((e=n.getOptions()).tree.customName.parent,a=e.id,(e={data:i,dataIndex:i[Y],getParentNode:function(){return n.getNodeByIndex(i[s])},update:function(e){return j.updateNode(a,t,e)},remove:function(){return j.removeNode(a,t)},expand:function(e){return j.expandNode(a,E.extend({},e,{index:t}))},setChecked:function(e){return j.setRowChecked(a,E.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=j.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[Y],!0}),i)return this.getNodeByIndex(i)},t.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=B.cache[n],l=n[e];if("delete"!==a&&l)return E.extend(l,a),t?E.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o
                                                          '),N=function(e){y[X]="success",y[s.children]=e,c.initData(y[s.children],y[Y]),U(t,!0,!p&&n,i,l)},C=m.format,"function"===layui.type(C)?C(y,o,N):(I=E.extend({},m.where||o.where),C=m.autoParam,layui.each(C,function(e,t){t=t.split("=");I[t[0].trim()]=y[(t[1]||t[0]).trim()]}),(C=m.contentType||o.contentType)&&0==C.indexOf("application/json")&&(I=JSON.stringify(I)),w=m.method||o.method,D=m.dataType||o.dataType,T=m.jsonpCallback||o.jsonpCallback,k=m.headers||o.headers,_=m.parseData||o.parseData,O=m.response||o.response,E.ajax({type:w||"get",url:b,contentType:C,data:I,dataType:D||"json",jsonpCallback:T,headers:k||{},success:function(e){(e="function"==typeof _?_.call(o,e)||e:e)[O.statusName]!=O.statusCode?(y[X]="error",g.html('')):N(e[O.dataName])},error:function(e,t){y[X]="error","function"==typeof o.error&&o.error(e,t)}})),h;y[z]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((m=o.initSort).type?layui.sort(v,m.field,"desc"===m.type,!0):layui.sort(v,B.config.indexName,null,!0)),c.initData(y[s.children],y[Y]),w=B.getTrHtml(r,v,null,null,e),S={trs:E(w.trs.join("")),trs_fixed:E(w.trs_fixed.join("")),trs_fixed_r:E(w.trs_fixed_r.join(""))},A=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){S.trs.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed_r.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A})}),d.find(L).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs),d.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed),d.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed_r),c.renderTreeTable(S.trs,A),n)&&!p&&layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)})}else c.isExpandAll=!1,(n&&!p?(layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)}),d.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(","))):(b=c.treeToFlat(v,y[s.id],e),d.find(b.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))).addClass(F);V("resize-"+r,function(){j.resize(r)},0)(),l&&"loading"!==y[X]&&(C=u.callback.onExpand,"function"===layui.type(C))&&C(r,y,x)}return h},g=(j.expandNode=function(e,t){var a,n,i,e=P(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),U({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},j.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=P(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),d=i.customName.isParent,r=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=j.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[X])return!(c=!1)}),!c)return void layui.each(j.getData(a),function(e,t){j.expandNode(a,{index:t[Y],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[z])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),l.find('tbody tr[data-level!="0"]').removeClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[z]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return j.sort(a);var s,n=B.getTrHtml(a,e),f={trs:E(n.trs.join("")),trs_fixed:E(n.trs_fixed.join("")),trs_fixed_r:E(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[Y].split("-").length-1;s={"data-index":t[Y],"lay-data-index":t[Y],"data-level":a},f.trs.eq(e).attr(s),f.trs_fixed.eq(e).attr(s),f.trs_fixed_r.eq(e).attr(s)}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!1,e[r]!==undefined)&&(t.status.expand[e[r]]=!1)}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);j.resize(a)}},t.prototype.renderTreeTable=function(e,t,a){var n=this,i=n.getOptions(),l=i.elem.next(),d=(l.hasClass(h)||l.addClass(h),i.id),r=i.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(l.attr("lay-filter"),n),f=((t=t||0)||(l.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(B.cache[d],function(e,t){l.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y])})),null),y=c.name,p=o.indent||14;if(layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=E(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=l.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[H]&&a[u]&&((f=f||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
                                                          ',a[H]?o.flexIconOpen:o.flexIconClose,"
                                                          ",o.showIcon?'
                                                          '+(a[c.icon]||o.icon||(a[u]?a[H]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
                                                          ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),U({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&n.isExpandAll===undefined)return j.expandAll(d,!0);!1!==a&&f?layui.each(f,function(e,t){e=l.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),U({trElem:e.first()},!0)}):V("renderTreeTable-"+d,function(){i.hasNumberCol&&g(n),x.render(E('.layui-table-tree[lay-id="'+d+'"]'))},0)()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),d=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(B.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[Y]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),d.eq(e).find(".laytable-cell-numbers").html(n))})}),p=(t.prototype.render=function(e){var t=this;t.tableIns=B["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,E.extend(!0,{},t.config)),t.config=t.tableIns.config},t.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),d(n.getOptions().id,e,a||!0),n.config=E.extend(t,{},n.config,e),n.render(a)},j.reloadData=function(){var e=E.extend(!0,[],arguments);return e[3]="reloadData",j.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):E.extend(t,a),l.push(E.extend({},t)),i||(l=l.concat(p(t[n],a,n,i)))}),l}),o=(t.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||B.cache[n.id],p(e,t,i.customName.children,a)},t.prototype.getTableData=function(){var e=this.getOptions();return B.cache[e.id]},j.updateStatus=function(e,t,a){var e=P(e),n=e.getOptions();return a=a||(n.url?B.cache[n.id]:n.data),e.updateStatus(a,t)},j.sort=function(e){var t=P(e);t&&t.getOptions().autoSort&&(t.initData(),j.renderData(e))},function(n){var t=n.config.id,i=P(t),a=n.data=j.getNodeDataByIndex(t,n.index),l=a[Y],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(E.extend(i.getNodeDataByIndex(l),e[0]),d.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){j.removeNode(t,a)},n.setRowChecked=function(e){j.setRowChecked(t,{index:a,checked:e})}}),u=(j.updateNode=function(e,a,t){var n,i,l,d,r,o=P(e);o&&((d=o.getOptions()).tree,d=(n=d.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=d.attr("data-index"),l=d.attr("data-level"),t)&&(d=o.getNodeDataByIndex(a,!1,t),r=B.getTrHtml(e,[d]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(E(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},j.removeNode=function(e,t){var a,n,i,l,d,r=P(e);r&&(d=(a=r.getOptions()).tree,n=a.elem.next(),i=[],t=r.getNodeDataByIndex("string"===layui.type(t)?t:t[Y],!1,"delete"),l=r.getNodeDataByIndex(t[s]),r.updateCheckStatus(l),l=r.treeToFlat([t],t[d.customName.pid],t[s]),layui.each(l,function(e,t){i.push('tr[lay-data-index="'+t[Y]+'"]')}),n.find(i.join(",")).remove(),d=r.initData(),layui.each(r.treeToFlat(d),function(e,t){t[m]&&t[m]!==t[Y]&&n.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[Y],"lay-data-index":t[Y]})}),layui.each(B.cache[e],function(e,t){n.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.hasNumberCol&&g(r),j.resize(e))},j.addNodes=function(e,t){var a=P(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=B.config.checkName,r=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,o="number"===layui.type(o)?o:-1,c=E.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){d in t||!u||(t[d]=u[d])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[z]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")).remove(),a.initData(),u[z]=!1,u[X]="local",U({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=B.cache[e].splice(-1===o?B.cache[e].length:o);if(B.cache[e]=B.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(B.cache[e]))):n.data=B.cache[e]),a.initData(),l.find(".layui-none").length)return B.renderData(e),c;var x,f=B.getTrHtml(e,c),h={trs:E(f.trs.join("")),trs_fixed:E(f.trs_fixed.join("")),trs_fixed_r:E(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[Y],"lay-data-index":t[Y],"data-level":"0"},h.trs.eq(e).attr(x),h.trs_fixed.eq(e).attr(x),h.trs_fixed_r.eq(e).attr(x)}),parseInt(c[0][Y])-1),y=l.find(L),n=l.find(q),f=l.find(R);-1==r?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(r=p[0][m],y.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed_r)),layui.each(B.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))}return a.updateCheckStatus(u),j.resize(e),t&&l.find(L).find('tr[lay-data-index="'+c[0][Y]+'"]').get(0).scrollIntoViewIfNeeded(),c}},j.checkStatus=function(e,n){var i,t,a,l=P(e);if(l)return l=l.getOptions().tree,i=B.config.checkName,t=j.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each("all"===l.data.cascade?B.cache[e]:j.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},j.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&j.sort(e)}),j.on("row",function(e){e.config.elem.next().hasClass(h)&&o(e)}),j.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),(t.tree||{}).view.dblClickExpand)&&U({trElem:e.tr.first()},null,null,null,!0)}),j.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),j.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=P(t),o(e),u.call(a,e.tr,e.checked))}),t.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=E(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},t.prototype.updateCheckStatus=function(e,t){var a,n,i,l,d,r,o,c=this,u=c.getOptions();return!!u.hasChecboxCol&&(a=u.tree,n=u.id,i=u.elem.next(),l=B.config.checkName,"all"!==(d=a.data.cascade)&&"parent"!==d||!e||(d=c.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(d,function(e,t){var a=i.find('tr[lay-data-index="'+t[Y]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),x.render(a.prop({checked:n,indeterminate:t[b]}))})),o=!(r=!0),e=(e="all"===a.data.cascade?B.cache[n]:j.getData(n,!0)).filter(function(e){return!e[u.disabledName]}),layui.each(e,function(e,t){if((t[l]||t[b])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}),o=o&&!r,x.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o})),r)},t.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=B.config.checkName,t=t.customName.children,d=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
                                                          '+i.text.none+"
                                                          "),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(T),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(T)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(r,e){var d=this,s=d.config,o=s.customName,e=e||s.data;layui.each(e,function(e,i){var a,n,t=i[o.children]&&0"),c=p(['
                                                          ','
                                                          ','
                                                          ',s.showLine?t?'':'':'',s.showCheckbox?'':"",s.isJump&&i.href?''+(i[o.title]||i.label||s.text.defaultNodeName)+"":''+(i[o.title]||i.label||s.text.defaultNodeName)+"","
                                                          ",s.edit?(a={add:'',update:'',del:''},n=['
                                                          '],!0===s.edit&&(s.edit=["update","del"]),"object"==typeof s.edit?(layui.each(s.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
                                                          "):void 0):"","
                                                          "].join(""));t&&(c.append(l),d.tree(l,i[o.children])),r.append(c),c.prev("."+k)[0]&&c.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),t||c.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),d.spread(c,i),s.showCheckbox&&(i.checked&&d.checkids.push(i[o.id]),d.checkClick(c,i)),s.edit&&d.operate(c,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+b),i=e.children("."+g),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+C),e=e.find("."+w),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+N),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(F)?(n.removeClass(F),i.slideUp(200),a.removeClass(x).addClass(v),l.updateFieldValue(t,"spread",!1)):(n.addClass(F),i.slideDown(200),a.addClass(x).removeClass(v),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+k)).removeClass(F),i.children("."+N).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(x).addClass(v))):s="normal"}),e.on("click",function(){p(this).hasClass(u)||(s=n.hasClass(F)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+N)[0]||e.find("."+N).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+k)[0]&&(a=(e=e.parent("."+N)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+b).children("."+g).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+b),h=e.children("."+g);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+N),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+C).addClass("layui-tree-icon"),h.find("."+C).children(".layui-icon").addClass(v).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(m),r.append('
                                                          '));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+N),[c]),o.showLine&&(n[0]?(n.hasClass(S)||n.addClass(S),r.find("."+N).each(function(){p(this).children("."+k).last().addClass(T)}),(n.children("."+k).last().prev().hasClass(T)?n.children("."+k).last().prev():n.children("."+k).last()).removeClass(T),!r.parent("."+N)[0]&&r.next()[0]&&n.children("."+k).last().removeClass(T)):(l=r.siblings("."+k),a=1,c=r.parent("."+N),layui.each(l,function(e,i){p(i).children("."+N)[0]||(a=0)}),(1==a?(l.children("."+N).addClass(L),l.children("."+N).children("."+k).removeClass(T),r.children("."+N).addClass(L),c.removeClass(S),c.children("."+k).last().children("."+N).children("."+k).last()):r.children("."+N).children("."+k)).addClass(T))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+N).children("."+k).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+w).html(),h.children("."+w).html(""),h.append(''),h.children(".layui-tree-editInput").val(f.unescape(l)).focus(),i=function(e){var i=e.val().trim()||o.text.defaultNodeName;e.remove(),h.children("."+w).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d[u.title]||"")+'" \u5417\uff1f',function(e){var l,a,i;o.operate&&o.operate(t),t.status="remove",y.close(e),r.prev("."+k)[0]||r.next("."+k)[0]||r.parent("."+N)[0]?(r.siblings("."+k).children("."+b)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+k)[0]&&(i=e.siblings("."+k).children("."+b),a=(e=e.parent("."+N).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked)&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n)&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+k)))})(r),o.showLine&&(e=r.siblings("."+k),a=1,i=r.parent("."+N),layui.each(e,function(e,i){p(i).children("."+N)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(S),e.children("."+N).addClass(L),e.children("."+N).children("."+k).removeClass(T)),(r.next()[0]?i.children("."+k).last():r.prev()).children("."+N).children("."+k).last().addClass(T),r.next()[0]||r.parents("."+k)[1]||r.parents("."+k).eq(0).next()[0]||r.prev("."+k).addClass(T)):!r.next()[0]&&r.hasClass(T)&&r.prev().addClass(T))):(e=r.parent("."+N).prev(),o.showLine?(e.find("."+C).removeClass("layui-tree-icon"),e.find("."+C).children(".layui-icon").removeClass(x).addClass("layui-icon-file"),(i=e.parents("."+N).eq(0)).addClass(S),i.children("."+k).each(function(){p(this).children("."+N).children("."+k).last().addClass(T)})):e.find(".layui-tree-iconArrow").addClass(m),r.parents("."+k).eq(0).removeClass(F),r.parent("."+N).remove()),r.remove()):(r.remove(),s.elem.append(s.elemNone))})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+w).each(function(){var i,e=p(this).parents("."+b);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+N)[0]&&i(e.parent("."+N).parent("."+k))})(e.parent("."+k)))}),e.find("."+b).each(function(){var e=p(this).parent("."+k);e.hasClass("layui-tree-searchShow")||e.addClass(m)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+b).each(function(){p(this).parent("."+k).removeClass("layui-tree-searchShow "+m)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+k).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+b).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var s=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=s.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},d="layui-hide",h="layui-btn-disabled",r="layui-none",c="layui-transfer-box",u="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
                                                          ','
                                                          ','","
                                                          ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
                                                            ',"
                                                            "].join("")},p=['
                                                            ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
                                                            ','",'","
                                                            ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
                                                            "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=s.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=s.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=s(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=s(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+c),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
                                                          • ",'',"
                                                          • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(r){var c=this,o=c.config;r=r||{},c.layBox.each(function(e){var t=s(this),a=t.find("."+f),t=t.find("."+u).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=s(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),c.layBtn.eq(e)[l?"removeClass":"addClass"](h),r.stopNone||(i=a.children("li:not(."+d+")").length,c.noneView(a,i?"":o.text.none))}),c.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=s('

                                                            '+(t||"")+"

                                                            ");e.find("."+r)[0]&&e.find("."+r).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){s(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=s.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),r=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+c).find("."+f).append(t.clone()),t.remove(),r.push(a[0].value),i.setValue()):l.each(function(e){s(this).find("."+f).children("li").each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+c).find("."+f).append(e.clone()),e.remove(),r.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+c).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(r),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=s(this).prev(),t=e[0].checked,a=e.parents("."+c).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=s(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent();a[0].disabled||n.transfer(i.data("index"),t)}),n.layBtn.on("click",function(){var e=s(this),t=e.data("index");e.hasClass(h)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=s(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](d),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+d).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,l=layui.lay,t=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,d,e,i)}}),d="carousel",r="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",h="layui-carousel-next",o="layui-carousel-arrow",m="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,t.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(r),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+o)[0]&&e.elem.find("."+o).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
                                                              ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
                                                            "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+m)[0]&&n.elem.find("."+m).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(h),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(r+" "+c+" "+h+" "+s+" "+u),t.eq(a.index).addClass(r),n.haveSlide=!1},350),n.elemInd.find("li").eq(a.index).addClass(r).siblings().removeClass(r),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,d,"change("+l+")",e))},i.prototype.events=function(){var t,a,o=this,e=o.config;e.elem.data("haveEvents")||(e.elem.on("mouseenter touchstart",function(){"always"!==o.config.autoplay&&clearInterval(o.timer)}).on("mouseleave touchend",function(){"always"!==o.config.autoplay&&o.autoplay()}),t=e.elem,a="updown"===e.anim,l.touchSwipe(t,{onTouchEnd:function(e,i){var n=Date.now()-i.timeStart,i=a?i.distanceY:i.distanceX;(.25t[a?"height":"width"]()/3)&&o.slide(0a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
                                                              "),n=1;n<=a.length;n++){var o='
                                                            • ";a.half&&parseInt(a.value)!==a.value&&n==Math.ceil(a.value)?i=i+'
                                                            • ":i+=o}i+="
                                                            "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,s=l.next(".layui-rate");s[0]&&s.remove(),e.elemTemp=u(i),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var n=this.config,t=this.elemTemp,i=t.find("i").width(),l=t.children("li");l.each(function(e){var a=e+1,l=u(this);l.on("click",function(e){n.value=a,n.half&&e.pageX-u(this).offset().left<=i/2&&(n.value=n.value-.5),n.text&&t.next("span").text(n.value+"\u661f"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value)}),l.on("mousemove",function(e){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+a+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&e.pageX-u(this).offset().left<=i/2&&l.children("i").addClass(o).removeClass(f)}),l.on("mouseleave",function(){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+Math.floor(n.value)+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&parseInt(n.value)!==n.value&&t.children("li:eq("+Math.floor(n.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})}),r.touchSwipe(t,{onTouchMove:function(e,a){var i;Date.now()-a.timeStart<=200||(a=e.touches[0].pageX,e=t.width()/n.length,a=(a-t.offset().left)/e,(i=(i=(e=a%1)<=.5&&n.half?.5+(a-e):Math.ceil(a))>n.length?n.length:i)<0&&(i=0),l.each(function(e){var a=u(this).children("i"),l=Math.ceil(i)-e==1,t=Math.ceil(i)>e,e=i-e==.5;t?(a.addClass(f).removeClass(v),n.half&&e&&a.addClass(o).removeClass(f)):a.addClass(h).removeClass(s),a.toggleClass("layui-rate-hover",l)}),n.value=i,n.setText&&n.setText(n.value))},onTouchEnd:function(e,a){Date.now()-a.timeStart<=200||(t.find("i").removeClass("layui-rate-hover"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value))}})},a.prototype.events=function(){},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(l){"use strict";var g=layui.$,e=function(l){};e.prototype.load=function(l){var t,i,o,n,e,r,a,c,m,s,u,f,y,d=this,p=0,h=g((l=l||{}).elem);if(h[0])return e=g(l.scrollElem||document),r=l.mb||50,a=!("isAuto"in l)||l.isAuto,c=l.end||"\u6ca1\u6709\u66f4\u591a\u4e86",m=l.scrollElem&&l.scrollElem!==document,u=g('"),h.find(".layui-flow-more")[0]||h.append(u),f=function(l,e){l=g(l),u.before(l),(e=0==e||null)?u.html(c):u.find("a").html(s),i=e,t=null,o&&o()},(y=function(){t=!0,u.find("a").html(''),"function"==typeof l.done&&l.done(++p,f)})(),u.find("a").on("click",function(){g(this);i||t||y()}),l.isLazyimg&&(o=d.lazyimg({elem:l.elem+" img",scrollElem:l.scrollElem})),a&&e.on("scroll",function(){var e=g(this),o=e.scrollTop();n&&clearTimeout(n),!i&&h.width()&&(n=setTimeout(function(){var l=(m?e:g(window)).height();(m?e.prop("scrollHeight"):document.documentElement.scrollHeight)-o-l<=r&&(t||y())},100))}),d},e.prototype.lazyimg=function(l){var e,c=this,m=0,s=g((l=l||{}).scrollElem||document),u=l.elem||"img",f=l.scrollElem&&l.scrollElem!==document,y=function(e,l){var o,t=s.scrollTop(),l=t+l,i=f?e.offset().top-s.offset().top+t:e.offset().top;t<=i&&i<=l&&e.attr("lay-src")&&(o=e.attr("lay-src"),layui.img(o,function(){var l=c.lazyimg.elem.eq(m);e.attr("src",o).removeAttr("lay-src"),l[0]&&n(l),m++},function(){c.lazyimg.elem.eq(m);e.removeAttr("lay-src")}))},n=function(l,e){var o=(f?e||s:g(window)).height(),t=s.scrollTop(),i=t+o;if(c.lazyimg.elem=g(u),l)y(l,o);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},W=layui.code?layui.code.index+1e4:0,R=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var o,i,t,a,n,d,c,s,r,u,y,p,E,f,h,v,m,L,_,M,C,g={config:l=x.extend(!0,{},T,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,x.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},w=x(l.elem);return 1',l.ln?['
                                                            ',D.digit(t+1)+".","
                                                            "].join(""):"",'
                                                            ',e||" ","
                                                            ",""].join("")})}},a=l.code,n=function(e){return"function"==typeof l.codeParse?l.codeParse(e,l):e},"reloadCode"===e?o.children(".layui-code-wrap").html(w(n(a)).html):(d=layui.code.index=++W,o.attr("lay-code-index",d),(M=A.CDDE_DATA_CLASS in o.data())&&o.attr("class",o.data(A.CDDE_DATA_CLASS)||""),M||o.data(A.CDDE_DATA_CLASS,o.attr("class")),c={copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var t=D.unescape(n(l.code));lay.clipboard.writeText({text:t,done:function(){N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}),"function"==typeof l.onCopy&&l.onCopy(t)}}},function b(){var e=o.parent("."+A.ELEM_PREVIEW),t=e.children("."+A.ELEM_TAB),a=e.children("."+A.ELEM_ITEM+"-preview");return t.remove(),a.remove(),e[0]&&o.unwrap(),b}(),l.preview&&(M="LAY-CODE-DF-"+d,f=l.layout||["code","preview"],s="iframe"===l.preview,E=x('
                                                            '),C=x('
                                                            '),r=x('
                                                            '),_=x('
                                                            '),u=x('
                                                            '),l.id&&E.attr("id",l.id),E.addClass(l.className),C.attr("lay-filter",M),layui.each(f,function(e,t){var a=x('
                                                          • ');0===e&&a.addClass("layui-this"),a.html(l.text[t]),r.append(a)}),x.extend(c,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,t=e.closest("."+A.ELEM_PREVIEW),a="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=x("html,body"),n="layui-scrollbar-hide";e.hasClass(a)?(t.addClass(A.ELEM_FULL),e.removeClass(a).addClass(i),e.attr("title",l[1]),o.addClass(n)):(t.removeClass(A.ELEM_FULL),e.removeClass(i).addClass(a),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){D.openWin({content:n(l.code)})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=x(this),t=e.data("type"),e={elem:e,type:t,options:l,rawCode:l.code,finalCode:D.unescape(n(l.code))};c[t]&&"function"==typeof c[t].event&&c[t].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&l.tools&&(l.tools=[].concat(l.tools,l.addTools)),layui.each(l.tools,function(e,t){var a="object"==typeof t,i=a?t:c[t]||{className:t,title:[t]},l=i.className||i.type,o=i.title||[""],a=a?i.type||l:t;a&&(c[a]||((t={})[a]=i,x.extend(c,t)),u.append(''))}),o.addClass(A.ELEM_ITEM).wrap(E),C.append(r),l.tools&&C.append(u),o.before(C),s&&_.html(''),y=function(e){var t=e.children("iframe")[0];s&&t?t.srcdoc=n(l.code):e.html(l.code),setTimeout(function(){"function"==typeof l.done&&l.done({container:e,options:l,render:function(){I.render(e.find(".layui-form")),S.render()}})},3)},"preview"===f[0]?(_.addClass(A.ELEM_SHOW),o.before(_),y(_)):o.addClass(A.ELEM_SHOW).after(_),l.previewStyle=[l.style,l.previewStyle].join(""),_.attr("style",l.previewStyle),S.on("tab("+M+")",function(e){var t=x(this),a=x(e.elem).closest("."+A.ELEM_PREVIEW).find("."+A.ELEM_ITEM),e=a.eq(e.index);a.removeClass(A.ELEM_SHOW),e.addClass(A.ELEM_SHOW),"preview"===t.attr("lay-id")&&y(e),L()})),p=x(''),o.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),(C=l.theme||l.skin)&&(o.removeClass("layui-code-theme-dark layui-code-theme-light"),o.addClass("layui-code-theme-"+C)),l.highlighter&&o.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),f=w(l.encode?D.escape(n(a)):a),h=f.lines,o.html(p.html(f.html)),l.ln&&o.append('
                                                            '),l.height&&p.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&p.attr("style",function(e,t){return(t||"")+l.codeStyle}),v=[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,t){e.style["padding-left"]=t+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,t){e.style.width=t+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,t){e.style.width=t+"px"}}],m=lay.style({target:o[0],id:"DF-code-"+d,text:x.map(x.map(v,function(e){return e.selector}),function(e,t){return['.layui-code-view[lay-code-index="'+d+'"]',e].join(" ")}).join("")}),L=function b(){var e,i;return l.ln&&(e=Math.floor(h.length/100),i=p.children("."+A.ELEM_LINE).last().children("."+A.ELEM_LINE_NUM).outerWidth(),o.addClass(A.ELEM_LN_MODE),e)&&A.LINE_RAW_WIDTH
                                                          • ')).html(l.title||l.text.code),o.prepend(_)),M=x('
                                                            '),l.copy&&!l.preview&&((C=x(['','',""].join(""))).on("click",function(){c.copy.event()}),M.append(C)),l.langMarker&&M.append(''+l.lang+""),l.about&&M.append(l.about),o.append(M),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+d&&"function"==typeof l.allDone&&l.allDone())),g})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss"); \ No newline at end of file diff --git a/index.html b/index.html index fd4d391..2457233 100644 --- a/index.html +++ b/index.html @@ -6,11 +6,8 @@ Pear Admin 4.0 - - - -- Gitee From b047e256a096c952fb0f2d532c8cd4d6aef9df6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 31 Dec 2023 11:42:30 +0800 Subject: [PATCH 114/141] update --- component/pear/module/page.js | 10 +++------- component/pear/module/tabPage.js | 6 +++--- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/component/pear/module/page.js b/component/pear/module/page.js index bf30652..a58a194 100644 --- a/component/pear/module/page.js +++ b/component/pear/module/page.js @@ -32,8 +32,7 @@ layui.define(['jquery', 'element'], function (exports) { */ page.prototype.changePage = function (options) { - const $frame = $(`#${this.option.elem} .pear-page-content`).css({display:'none'}); - var $frameLoad = $(`#${this.option.elem} .pear-page-loading`).css({display:'block'}); + const $frame = $(`#${this.option.elem} .pear-page-content`); if (options.type === "_iframe") { @@ -45,10 +44,7 @@ layui.define(['jquery', 'element'], function (exports) { type: 'get', dataType: 'html', success: function (data) { - $frame.html(data); - $frameLoad.fadeOut(1000); - $frame.fadeIn(2000); - element.init(); + $frame.html(data) }, error: function (xhr) { return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); @@ -133,4 +129,4 @@ layui.define(['jquery', 'element'], function (exports) { } exports('page', new page()); -}); +}); \ No newline at end of file diff --git a/component/pear/module/tabPage.js b/component/pear/module/tabPage.js index ba790d1..bc245bf 100644 --- a/component/pear/module/tabPage.js +++ b/component/pear/module/tabPage.js @@ -374,10 +374,10 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { }); } - if($iframe.attr("type") === "_iframe") { + if ($iframe.attr("type") === "_iframe") { $iframe.attr("src", $iframe.attr("src")); - $iframe.on("load", function() { - $iframeLoad.fadeOut(1000, function() { + $iframe.on("load", function () { + $iframeLoad.fadeOut(1000, function () { $iframeLoad.remove(); }); }) -- Gitee From c2d2c88ddeeac1b5d13da0166cd8ea47f4d510a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Sun, 31 Dec 2023 12:10:13 +0800 Subject: [PATCH 115/141] update --- component/pear/module/page.js | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/component/pear/module/page.js b/component/pear/module/page.js index a58a194..52ff2ef 100644 --- a/component/pear/module/page.js +++ b/component/pear/module/page.js @@ -31,13 +31,9 @@ layui.define(['jquery', 'element'], function (exports) { * 切换 Page 页面 */ page.prototype.changePage = function (options) { - const $frame = $(`#${this.option.elem} .pear-page-content`); - if (options.type === "_iframe") { - $frame.html(``); - } else { $.ajax({ url: options.href, @@ -56,26 +52,19 @@ layui.define(['jquery', 'element'], function (exports) { } page.prototype.refresh = function (loading) { - var $frameLoad = $(`#${this.option.elem} .pear-page-loading`); var $frame = $(`#${this.option.elem} .pear-page-content`); - if (loading) { $frameLoad.css({ display: 'block' }); } - if ($frame.attr("type") === "_iframe") { - $frame.html(``); - const $contentFrame = $frame.find("iframe"); - $contentFrame.on("load", () => { $frameLoad.fadeOut(1000); }) - } else { $.ajax({ type: 'get', @@ -94,7 +83,6 @@ layui.define(['jquery', 'element'], function (exports) { } function renderContent(option) { - $("#" + option.elem).html(`
                                                            @@ -111,7 +99,6 @@ layui.define(['jquery', 'element'], function (exports) { var $frame = $("#" + option.elem).find(".pear-page-content"); if (option.type === "_iframe") { - $frame.html(``); } else { $.ajax({ -- Gitee From 159c17dbb9f71fa60d4339135722e18fd7b149d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=83=E5=BD=A9=E6=9E=AB=E5=8F=B6?= <424235748@qq.com> Date: Mon, 1 Jan 2024 09:23:19 +0000 Subject: [PATCH 116/141] =?UTF-8?q?=E9=80=82=E5=BA=94=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 七彩枫叶 <424235748@qq.com> --- admin/css/other/login.css | 39 +++++++++++++++++++++++++++++++++++++-- login.html | 11 +++++------ 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/admin/css/other/login.css b/admin/css/other/login.css index 60e468b..32605e3 100644 --- a/admin/css/other/login.css +++ b/admin/css/other/login.css @@ -1,6 +1,5 @@ html, -body, -.layui-row { +body{ height: 100%; } @@ -9,6 +8,16 @@ body, height: 100%; overflow-x: hidden; overflow-y: auto; + display: flex; + justify-content: center; + align-items: center; +} + +.layui-row { + width: 1000px; + height: 600px; + box-shadow: 0 2px 25px rgba(0, 0, 0, 0.4), 0 0 2px rgba(0, 0, 0, 0.2), 0 0 2px rgba(0, 0, 0, 0.2); + border-radius: 15px; } .login-bg { @@ -18,6 +27,8 @@ body, display: flex; align-items: center; justify-content: center; + border-bottom-left-radius: 15px; + border-top-left-radius: 15px; } .login-bg-img { @@ -33,6 +44,8 @@ body, align-items: center; justify-content: center; background-color: #fff; + border-bottom-right-radius: 15px; + border-top-right-radius: 15px; } .form-center { @@ -179,4 +192,26 @@ body, .layui-btn { border-radius: 4px; background-color: var(--global-primary-color); +} + +@media(min-width: 992px) and (max-width:1200px){ + .layui-row{ + width: 900px; + } +} +@media(min-width: 768px) and (max-width:992px){ + .layui-row{ + width: 90%; + } + .form-center{width: 90%;} +} +@media (max-width:768px){ + .layui-row{ + width: 90%; + } + .login-form { + border-bottom-left-radius: 15px; + border-top-left-radius: 15px; + } + .form-center-box{width: 95%;} } \ No newline at end of file diff --git a/login.html b/login.html index 2c1b1ba..053d6ae 100644 --- a/login.html +++ b/login.html @@ -1,6 +1,5 @@ - @@ -8,22 +7,22 @@ + - "),t.join(""))+"
                                                            ",success:function(e,t,i){s.main=e.find(".layer-layer-photos-main"),s.footer=e.find(".layui-layer-photos-footer"),s.imgElem=s.main.children("img"),s.event(e,t,i),n.tab&&n.tab(o[r],e),"function"==typeof l&&l(e)},end:function(){s.end=!0,m(document).off("keyup",s.keyup)}},n))},u=function(){v.close(s.loadi),v.msg("\u5f53\u524d\u56fe\u7247\u5730\u5740\u5f02\u5e38\uff0c
                                                            \u662f\u5426\u7ee7\u7eed\u67e5\u770b\u4e0b\u4e00\u5f20\uff1f",{time:3e4,btn:["\u4e0b\u4e00\u5f20","\u4e0d\u770b\u4e86"],yes:function(){1").addClass(r));layui.each(i.bars,function(t,e){var n=s('
                                                          • ');n.addClass(e.icon).attr({"lay-type":e.type,style:e.style||(i.bgcolor?"background-color: "+i.bgcolor:"")}).html(e.content),n.on("click",function(){var t=s(this).attr("lay-type");"top"===t&&("body"===i.target?s("html,body"):u).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,t)}),"object"===layui.type(i.on)&&layui.each(i.on,function(t,e){n.on(t,function(){var t=s(this).attr("lay-type");"function"==typeof e&&e.call(this,t)})}),"top"===e.type&&(n.addClass("layui-fixbar-top"),o=n),l.append(n)}),c.find("."+r).remove(),"object"==typeof i.css&&l.css(i.css),c.append(l),o&&(e=function e(){return u.scrollTop()>=i.margin?t||(o.show(),t=1):t&&(o.hide(),t=0),e}()),u.on("scroll",function(){e&&(clearTimeout(n),n=setTimeout(function(){e()},100))})},countdown:function(i){i=s.extend(!0,{date:new Date,now:new Date},i);var o=arguments,r=(1]|&(?=#[a-zA-Z0-9]+)/g.test(t+="")?t.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):t},unescape:function(t){return t!==undefined&&null!==t||(t=""),(t+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(t){var e=(t=t||{}).window||window.open(t.url||"",t.target,t.specs);t.url||(e.document.open("text/html","replace"),e.document.write(t.content||""),e.document.close())},toVisibleArea:function(t){var e,n,i,o,r,a,c,u;(t=s.extend({margin:160,duration:200,type:"y"},t)).scrollElem[0]&&t.thisElem[0]&&(e=t.scrollElem,c=t.thisElem,i=(r="y"===t.type)?"top":"left",o=e[n=r?"scrollTop":"scrollLeft"](),r=e[r?"height":"width"](),a=e.offset()[i],u={},(c=c.offset()[i]-a)>r-t.margin||c."+w,E=function(e){var i=this;i.index=++h.index,i.config=c.extend({},i.config,h.config,e),i.init()};E.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:[200,300],shade:0,accordion:!1},E.prototype.reload=function(e,i){var t=this;t.config=c.extend({},t.config,e),t.init(!0,i)},E.prototype.init=function(e,i){var t,n=this,l=n.config,a=c(l.elem);return 1');return 0\u6682\u65e0\u6570\u636e
                                                          • '),e},u=function(r,e){return layui.each(e,function(e,i){var t,n=i[s.children]&&0",(t="href"in i?''+a+"":a,n?'
                                                            '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
                                                            ":'
                                                            '+t+"
                                                            "),""].join(""))).data("item",i),n&&(l=c('
                                                            '),t=c("
                                                              "),"parent"===o?(l.append(u(t,i[s.children])),a.append(l)):a.append(u(t,i[s.children]))),r.append(a))}),r},l=['
                                                              ',"
                                                              "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(y+"_opened")||(a.elemView=c("."+v+"["+f+'="'+d.id+'"]'),"reloadData"===i&&a.elemView.length?a.elemView.html(d.content||n()):(a.elemView=c(l),a.elemView.append(d.content||n()),d.className&&a.elemView.addClass(d.className),d.style&&a.elemView.attr("style",d.style),h.thisId=d.id,a.remove(),t.append(a.elemView),d.elem.data(y+"_opened",!0),e=d.shade?'
                                                              ':"",a.elemView.before(e),"mouseenter"===d.trigger&&a.elemView.on("mouseenter",function(){clearTimeout(g.timer)}).on("mouseleave",function(){a.delayRemove()})),a.position(),(g.prevElem=a.elemView).data("prevElem",d.elem),a.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),a.elemView.find(".layui-menu li").on("click",function(e){var i=c(this),t=i.data("item")||{},n=t[s.children]&&0n.width()&&(t.addClass(b),(i=t[0].getBoundingClientRect()).left<0)&&t.removeClass(b),i.bottom>n.height())&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5))}).on("mouseleave",t,function(e){var i=c(this).children("."+x);i.removeClass(b),i.css("margin-top",0)}),h.close=function(e){e=g.getThis(e);return e?(e.remove(),g.call(e)):this},h.open=function(e){e=g.getThis(e);return e?(e.render(),g.call(e)):this},h.reload=function(e,i,t){e=g.getThis(e);return e?(e.reload(i,t),g.call(e)):this},h.reloadData=function(){var t=c.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),h.reload.apply(null,t)},h.render=function(e){e=new E(e);return g.call(e)},e(r,h)});layui.define(["jquery","lay"],function(e){"use strict";var x=layui.$,b=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=x.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,i,e,t)}},i="slider",f="layui-disabled",T="layui-slider-bar",w="layui-slider-wrap",M="layui-slider-wrap-btn",L="layui-slider-tips",E="layui-slider-input-txt",Y="layui-slider-hover",t=function(e){var t=this;t.index=++m.index,t.config=x.extend({},t.config,m.config,e),t.render()};t.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,tipsAlways:!1,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},t.prototype.precision=function(){var e=this.config,e=x.map([e.min,e.max,e.step],function(e,t){e=String(e).split(".");return e[1]?e[1].length:0});return Math.max.apply(null,e)},t.prototype.render=function(){var n=this,a=n.config,e=x(a.elem);if(1a.max&&(a.value=a.max),l=(a.value-a.min)/(a.max-a.min)*100+"%");var t,e=a.disabled?"#c2c2c2":a.theme,i='
                                                              '+(a.tips?'
                                                              ":"")+'
                                                              '+(a.range?'
                                                              ':"")+"
                                                              ",l=x(a.elem),s=l.next(".layui-slider");if(s[0]&&s.remove(),n.elemTemp=x(i),a.range?(n.elemTemp.find("."+w).eq(0).data("value",a.value[0]),n.elemTemp.find("."+w).eq(1).data("value",a.value[1])):n.elemTemp.find("."+w).data("value",a.value),l.html(n.elemTemp),"vertical"===a.type&&n.elemTemp.height(a.height+"px"),a.showstep){for(var o=(a.max-a.min)/a.step,r="",u=1;u<1+o;u++){var c=100*u/o;c<100&&(r+='
                                                              ')}n.elemTemp.append(r)}function d(e){e=e.parent().data("value"),e=a.setTips?a.setTips(e):e;n.elemTemp.find("."+L).html(e)}function p(e){var t="vertical"===a.type?a.height:n.elemTemp[0].offsetWidth,i=n.elemTemp.find("."+w);return("vertical"===a.type?t-e.parent()[0].offsetTop-i.height():e.parent()[0].offsetLeft)/t*100}function v(e){"vertical"===a.type?n.elemTemp.find("."+L).css({bottom:e+"%","margin-bottom":"20px",display:"inline-block"}):n.elemTemp.find("."+L).css({left:e+"%",display:"inline-block"})}a.input&&!a.range&&(e=x('
                                                              '),l.css("position","relative"),l.append(e),l.find("."+E).children("input").val(a.value),"vertical"===a.type?e.css({left:0,top:-48}):n.elemTemp.css("margin-right",e.outerWidth()+15)),a.disabled?(n.elemTemp.addClass(f),n.elemTemp.find("."+M).addClass(f)):n.slide(),a.tips&&(a.tipsAlways?(d(s=n.elemTemp.find("."+M)),v(p(s))):n.elemTemp.find("."+M).on("mouseover",function(){d(x(this));var e=p(x(this));clearTimeout(t),t=setTimeout(function(){v(e)},300)}).on("mouseout",function(){clearTimeout(t),a.tipsAlways||n.elemTemp.find("."+L).css("display","none")}))},t.prototype.slide=function(e,t,i){var u=this,c=u.config,d=u.elemTemp,p=function(){return"vertical"===c.type?c.height:d[0].offsetWidth},v=d.find("."+w),o=d.next(".layui-slider-input"),r=o.children("."+E).children("input").val(),m=100/((c.max-c.min)/c.step),f=u.precision(),h=function(e,t,i){e=(e=100<(e=100n[1]&&n.reverse(),u.value=c.range?n:l,c.change&&c.change(u.value),"done"===i&&c.done&&c.done(u.value)},y=function(e){var t=e/p()*100/m,i=Math.round(t)*m;return i=e==p()?Math.ceil(t)*m:i},g=x(['
                                                              p()?p():t)/p()*100/m;h(t,o),r.addClass(Y),d.find("."+L).show(),e.preventDefault()},n=function(e){r.removeClass(Y),c.tipsAlways||setTimeout(function(){d.find("."+L).hide()},e)},a=function(){n&&n(b.touchEventsSupported()?1e3:0),g.remove(),c.done&&c.done(u.value),b.touchEventsSupported()&&(t[0].removeEventListener("touchmove",i,!!b.passiveSupported&&{passive:!1}),t[0].removeEventListener("touchend",a),t[0].removeEventListener("touchcancel",a))},x("#LAY-slider-moving")[0]||x("body").append(g),g.on("mousemove",i),g.on("mouseup",a).on("mouseleave",a),b.touchEventsSupported()&&(t[0].addEventListener("touchmove",i,!!b.passiveSupported&&{passive:!1}),t[0].addEventListener("touchend",a),t[0].addEventListener("touchcancel",a))})}),d.on("click",function(e){var t=x("."+M),i=x(this);!t.is(event.target)&&0===t.has(event.target).length&&t.length&&(i=(t=(t=(t="vertical"===c.type?p()-e.clientY+i.offset().top-x(window).scrollTop():e.clientX-i.offset().left-x(window).scrollLeft())<0?0:t)>p()?p():t)/p()*100/m,t=c.range?"vertical"===c.type?Math.abs(t-parseInt(x(v[0]).css("bottom")))>Math.abs(t-parseInt(x(v[1]).css("bottom")))?1:0:Math.abs(t-v[0].offsetLeft)>Math.abs(t-v[1].offsetLeft)?1:0:0,h(i,t,"done"),e.preventDefault())}),o.children(".layui-slider-input-btn").children("i").each(function(t){x(this).on("click",function(){r=o.children("."+E).children("input").val();var e=((r=1==t?r-c.stepc.max?c.max:Number(r)+c.step)-c.min)/(c.max-c.min)*100/m;h(e,0,"done")})});var n=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)c.max?c.max:e,((this.value=e)-c.min)/(c.max-c.min)*100/m);h(e,0,"done")};o.children("."+E).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),n.call(this))}).on("change",n)},t.prototype.events=function(){this.config},m.render=function(e){e=new t(e);return function(){var i=this,n=i.config;return{setValue:function(e,t){return e=(e=e>n.max?n.max:e)',"",'','',"","","
                                                              "].join("")),t=i.elem=k(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),t.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:t.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,t=e.elemColorBox[0],r=e.elemPicker=k(['
                                                              ','
                                                              ','
                                                              ','
                                                              ','
                                                              ','
                                                              ',"
                                                              ",'
                                                              ','
                                                              ',"
                                                              ","
                                                              ",'
                                                              ','
                                                              ','
                                                              ',"
                                                              ","
                                                              ",i.predefine?(o=['
                                                              '],layui.each(i.colors,function(e,i){o.push(['
                                                              ','
                                                              ',"
                                                              "].join(""))}),o.push("
                                                              "),o.join("")):"",'
                                                              ','
                                                              ','',"
                                                              ",'
                                                              ','','',"","
                                                              "].join(""));e.elemColorBox.find("."+C)[0];k(a)[0]&&k(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),k("body").append(r)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=t.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=k("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close)&&i.close(this.color),this},d.prototype.position=function(){var e=this,i=e.config;return r.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),t=i.elemPicker.find("."+M),r=o[0].style.backgroundColor;r?(e=Y(F(r)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?t.find("input").val(r):"rgba"===o?(o=F(r),3===(r.match(/[0-9]{1,3}/g)||[]).length?(t.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+D).css("left",280)):(t.find("input").val(r),r=280*r.slice(r.lastIndexOf(",")+1,r.length-1),i.elemPicker.find("."+D).css("left",r)),i.elemPicker.find("."+T)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):t.find("input").val("#"+j(e))):(i.select(0,100,100),t.find("input").val(""),i.elemPicker.find("."+T)[0].style.background="",i.elemPicker.find("."+D).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),t=n.elemPicker.find("."+E),u=n.elemPicker.find("."+T),f=n.elemPicker.find("."+D),p=e[0].offsetTop/180*360,h=100-(t[0].offsetTop+3)/180*100,g=(t[0].offsetLeft+3)/260*100,v=Math.round(f[0].offsetLeft/280*100)/100,y=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),m=function(e,i,o,t){n.select(e,i,o);var r=X({h:e,s:i,b:o}),e=j({h:e,s:i,b:o}),i=n.elemPicker.find("."+M).find("input");y.addClass(x).removeClass(P),c[0].style.background="rgb("+r.r+", "+r.g+", "+r.b+")","torgb"===a?i.val("rgb("+r.r+", "+r.g+", "+r.b+")"):"rgba"===a?(f.css("left",280*t),i.val("rgba("+r.r+", "+r.g+", "+r.b+", "+t+")"),c[0].style.background="rgba("+r.r+", "+r.g+", "+r.b+", "+t+")",u[0].style.background="linear-gradient(to right, rgba("+r.r+", "+r.g+", "+r.b+", 0), rgb("+r.r+", "+r.g+", "+r.b+"))"):i.val("#"+e),l.change&&l.change(k.trim(n.elemPicker.find("."+M).find("input").val()))},o=k(['
                                                              '].join("")),b=function(e){k("#LAY-colorpicker-moving")[0]||k("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var t=this.offsetTop,r=e.clientY;b(function(e){var i=t+(e.clientY-r),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;m(p=o,g,h,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-k(this).offset().top+H.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;m(p=i,g,h,v),e.preventDefault()}),t.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),b(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),t=d[0].offsetHeight,r=d[0].offsetWidth,r=(o=r<(o=o<0?0:o)?r:o)/260*100,o=100-(i=t<(i=i<0?0:i)?t:i)/180*100;m(p,g=r,h=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-k(this).offset().top+H.scrollTop(),o=e.clientX-k(this).offset().left+H.scrollLeft(),o=((i=i<0?0:i)>this.offsetHeight&&(i=this.offsetHeight),(o=(o=o<0?0:o)>this.offsetWidth?this.offsetWidth:o)/260*100),i=100-i/180*100;m(p,g=o,h=i,v),layui.stope(e),e.preventDefault(),t.trigger(e,"mousedown")}),f.on("mousedown",function(e){var t=this.offsetLeft,r=e.clientX;b(function(e){var i=t+(e.clientX-r),o=u[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);m(p,g,h,v=o),e.preventDefault()}),e.preventDefault()}),u.on("click",function(e){var i=e.clientX-k(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);m(p,g,h,v=i),e.preventDefault()}),i.each(function(){k(this).on("click",function(){k(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(F(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);p=i.h,g=i.s,h=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,m(i.h,i.s,i.b,o)})}),r.touchEventsSupported()&&layui.each([{elem:s,eventType:"click"},{elem:u,eventType:"click"},{elem:d,eventType:"mousedown"}],function(e,t){r.touchSwipe(t.elem,{onTouchMove:function(e){var i,o;e=e,i=t.eventType,e=e.touches[0],(o=document.createEvent("MouseEvent")).initMouseEvent(i,!0,!0,window,1,e.screenX,e.screenY,e.clientX,e.clientY,!1,!1,!1,!1,0,null),e.target.dispatchEvent(o)}})})},d.prototype.select=function(e,i,o,t){this.config;var r=j({h:e,s:100,b:100}),e=(j({h:e,s:i,b:o}),e/360*180),o=180-o/100*180,i=i/100*260,n=this.elemPicker.find("."+I)[0];this.elemPicker.find("."+B).css("top",e),n.style.background="#"+r,this.elemPicker.find("."+E).css({top:o/n.offsetHeight*100+"%",left:i/n.offsetWidth*100+"%"})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+M+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,t,r,n,l=k.trim(d.val());-1>16,g:(65280&r)>>8,b:255&r},t=Y(n),s[0].style.background=o="#"+j(t),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i?(c.select(t.h,t.s,t.b,i),a.change&&a.change(o)):(c.color=l,a.done&&a.done(l),c.removePicker())}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=k(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=k(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),k(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,t;n.thisId&&(i=l.getThis(n.thisId))&&(o=i.config,t=i.elemColorBox.find("."+C),k(e.target).hasClass(c)||k(e.target).parents("."+c)[0]||k(e.target).hasClass(a.replace(/\./g,""))||k(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(F(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),t[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),H.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!k(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(t,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),c="element",r="layui-this",h="layui-show",o=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,c,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(o),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
                                                              '+(i.content||"")+"
                                                              "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),C.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(a.headerElem).index(u(this));C.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",p="layui-nav-bar",b="layui-nav-tree",v="layui-nav-child",m="layui-nav-more",g="layui-anim layui-anim-upbit",C={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(r).siblings().removeClass(r),i.eq(t).addClass(h).siblings().removeClass(h)),layui.event.call(this,c,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(r)&&(i.next()[0]&&i.next().is("li")?C.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&C.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){C.tabAuto()},50),layui.event.call(this,c,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t,i=u(this),a=i.children(".layui-tab-title"),e=(i.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),e=u('');c===window&&d.ie,i.attr("lay-allowclose")&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||((t=u('')).on("click",C.tabDelete),i.append(t))}),"string"!=typeof i.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(t=a.find("li").eq(0).height())+t/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(e),i.attr("overflow",""),e.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),i.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.closest(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+v),n="string"==typeof e.attr("lay-unselect");if("javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+r).removeClass(r),e.addClass(r)),i.hasClass(b)){var n=f+"ed",s=!e.hasClass(n),o=function(){u(this).css({display:""}),i.children("."+p).css({opacity:0})};if(l.is(":animated"))return;l.removeClass(g),l[0]&&(s?(l.slideDown(200,o),e.addClass(n)):(e.removeClass(n),l.show().slideUp(200,o)),"string"!=typeof i.attr("lay-accordion")&&"all"!==i.attr("lay-shrink")||((s=e.siblings("."+n)).removeClass(n),s.children("."+v).show().stop().slideUp(200,o)))}layui.event.call(this,c,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,c,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){C.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+p)[0]||(i.append(a),(i.hasClass(b)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+v);i.hasClass(b)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(g),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+m).addClass(m+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(b)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+v).removeClass(h),i.find("."+m).removeClass(m+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(b)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+v)[0]&&!t.children("."+m)[0]&&t.append(''),t.off("click",C.clickThis).on("click",C.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",C.collapse).on("click",C.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",C.tabClick),u(window).on("resize",C.tabAuto),t(c,a)});layui.define(["lay","layer"],function(e){"use strict";var x=layui.$,a=layui.lay,i=layui.layer,b=layui.device(),t="upload",c="layui_"+t+"_index",s={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var i=this;return i.config=x.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},o=function(){var i=this,e=i.config.id;return{upload:function(e){i.upload.call(i,e)},reload:function(e){i.reload.call(i,e)},config:(o.that[e]=i).config}},l="layui-upload-file",r="layui-upload-form",F="layui-upload-iframe",w="layui-upload-choose",L="UPLOADING",z=function(e){var i=this;i.index=++s.index,i.config=x.extend({},i.config,s.config,e),i.render()};z.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1,text:{"cross-domain":"Cross-domain requests are not supported","data-format-error":"Please return JSON data format","check-error":"",error:"","limit-number":null,"limit-size":null}},z.prototype.reload=function(e){var i=this;i.config=x.extend({},i.config,e),i.render(!0)},z.prototype.render=function(e){var i=this,t=i.config,n=x(t.elem);return 1"].join("")),n=i.elem.next();(n.hasClass(l)||n.hasClass(r))&&n.remove(),b.ie&&b.ie<10&&i.elem.wrap('
                                                              '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(t),b.ie&&b.ie<10&&e.initIE()},z.prototype.initIE=function(){var t,e=this.config,i=x(''),n=x(['
                                                              ',"
                                                              "].join(""));x("#"+F)[0]||x("body").append(i),e.elem.next().hasClass(r)||(this.elemFile.wrap(n),e.elem.next("."+r).append((t=[],layui.each(e.data,function(e,i){i="function"==typeof i?i():i,t.push('')}),t.join(""))))},z.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},z.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},z.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,i){var t=new FileReader;t.readAsDataURL(i),t.onload=function(){n&&n(e,i,this.result)}})},z.prototype.upload=function(e,i){var t,n,a,o,u=this,f=u.config,c=f.text||{},l=u.elemFile[0],s=function(){return e||u.files||u.chooseFiles||l.files},r=function(){var a=0,o=0,l=s(),r=function(){f.multiple&&a+o===u.fileLength&&"function"==typeof f.allDone&&f.allDone({total:u.fileLength,successful:a,failed:o})},t=function(t){var n=new FormData,i=function(e){t.unified?layui.each(l,function(e,i){delete i[L]}):delete e[L]};if(layui.each(f.data,function(e,i){i="function"==typeof i?t.unified?i():i(t.index,t.file):i,n.append(e,i)}),t.unified)layui.each(l,function(e,i){i[L]||(i[L]=!0,n.append(f.field,i))});else{if(t.file[L])return;n.append(f.field,t.file),t.file[L]=!0}var e={url:f.url,type:"post",data:n,dataType:f.dataType||"json",contentType:!1,processData:!1,headers:f.headers||{},success:function(e){f.unified?a+=u.fileLength:a++,p(t.index,e),r(t.index),i(t.file)},error:function(e){f.unified?o+=u.fileLength:o++,u.msg(c.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
                                                              ")),m(t.index),r(t.index),i(t.file)}};"function"==typeof f.progress&&(e.xhr=function(){var e=x.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var i;e.lengthComputable&&(i=Math.floor(e.loaded/e.total*100),f.progress(i,(f.item||f.elem)[0],e,t.index))}),e}),x.ajax(e)};f.unified?t({unified:!0,index:0}):layui.each(l,function(e,i){t({index:e,file:i})})},d=function(){var n=x("#"+F);u.elemFile.parent().submit(),clearInterval(z.timer),z.timer=setInterval(function(){var e,i=n.contents().find("body");try{e=i.text()}catch(t){u.msg(c["cross-domain"]),clearInterval(z.timer),m()}e&&(clearInterval(z.timer),i.html(""),p(0,e))},30)},p=function(e,i){if(u.elemFile.next("."+w).remove(),l.value="","json"===f.force&&"object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},u.msg(c["data-format-error"])}"function"==typeof f.done&&f.done(i,e||0,function(e){u.upload(e)})},m=function(e){f.auto&&(l.value=""),"function"==typeof f.error&&f.error(e||0,function(e){u.upload(e)})},h=f.exts,g=(n=[],layui.each(e||u.chooseFiles,function(e,i){n.push(i.name)}),n),v={preview:function(e){u.preview(e)},upload:function(e,i){var t={};t[e]=i,u.upload(t)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,i){u.files[e]=i}),u.files},resetFile:function(e,i,t){i=new File([i],t);u.files=u.files||{},u.files[e]=i},getChooseFiles:function(){return u.chooseFiles}},y={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[f.accept]||"\u6587\u4ef6",g=0===g.length?l.value.match(/[^\/\\]+\..+/g)||[]:g;if(0!==g.length){switch(f.accept){case"file":layui.each(g,function(e,i){if(h&&!RegExp(".\\.("+h+")$","i").test(escape(i)))return t=!0});break;case"video":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(i)))return t=!0});break;case"audio":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(i)))return t=!0});break;default:layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"jpg|png|gif|bmp|jpeg|svg|webp")+")$","i").test(escape(i)))return t=!0})}if(t)return u.msg(c["check-error"]||"\u9009\u62e9\u7684"+y+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==i&&!f.auto||(f.choose&&f.choose(v),"choose"!==i)){if(u.fileLength=(a=0,y=s(),layui.each(y,function(){a++}),a),f.number&&u.fileLength>f.number)return u.msg("function"==typeof c["limit-number"]?c["limit-number"](f,u.fileLength):"\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+f.number+" \u4e2a\u6587\u4ef6
                                                              \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+u.fileLength+" \u4e2a\u6587\u4ef6");if(01024*f.size&&(i=1<=(i=f.size/1024)?i.toFixed(2)+"MB":f.size+"KB",l.value="",o=i)}),o)return u.msg("function"==typeof c["limit-size"]?c["limit-size"](f,o):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!f.before||!1!==f.before(v))b.ie?(9'+e+"")},r=function(t){var n=!0;return layui.each(a.files,function(e,i){if(!(n=!(i.name===t.name)))return!0}),n},u=function(e){var t=function(e){e.ext=e.name.substr(e.name.lastIndexOf(".")+1).toLowerCase(),e.sizes=s.util.parseSize(e.size)};return e instanceof FileList?layui.each(e,function(e,i){t(i)}):t(e),e},f=function(e){var t;return(e=e||[]).length?a.files?(t=[],layui.each(e,function(e,i){r(i)&&t.push(u(i))}),t):u(e):[]};n.elem.off("upload.start").on("upload.start",function(){var e=x(this);a.config.item=e,a.elemFile[0].click()}),b.ie&&b.ie<10||n.elem.off("upload.over").on("upload.over",function(){x(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){x(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,i){var t=x(this),i=f(i.originalEvent.dataTransfer.files);t.removeAttr("lay-over"),o(i),n.auto?a.upload():l(i)}),a.elemFile.on("change",function(){var e=f(this.files);0!==e.length&&(o(e),n.auto?a.upload():l(e))}),n.bindAction.off("upload.action").on("upload.action",function(){a.upload()}),n.elem.data(c)||(n.elem.on("click",function(){a.isFile()||x(this).trigger("upload.start")}),n.drag&&n.elem.on("dragover",function(e){e.preventDefault(),x(this).trigger("upload.over")}).on("dragleave",function(e){x(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),x(this).trigger("upload.drop",e)}),n.bindAction.on("click",function(){x(this).trigger("upload.action")}),n.elem.data(c,n.id))},s.util={parseSize:function(e,i){var t,n;return i=i||2,null!=e&&e?(t="string"==typeof e?parseFloat(e):e,n=Math.floor(Math.log(t)/Math.log(1024)),(e=(e=t/Math.pow(1024,n))%1==0?e:parseFloat(e.toFixed(i)))+["Bytes","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"][n]):"0"}},o.that={},o.getThis=function(e){var i=o.that[e];return i||hint.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},s.render=function(e){e=new z(e);return o.call(e)},e(t,s)});layui.define(["lay","layer","util"],function(e){"use strict";var T=layui.$,h=layui.layer,N=layui.util,l=layui.hint(),$=(layui.device(),"form"),u=".layui-form",_="layui-this",F="layui-hide",A="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e))return"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"},phone:function(e){if(e&&!/^1\d{10}$/.test(e))return"\u624b\u673a\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"},email:function(e){if(e&&!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))return"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"},url:function(e){if(e&&!/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/.test(e))return"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"},number:function(e){if(e&&isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:function(e){if(e&&!/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/.test(e))return"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"},identity:function(e){if(e&&!/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(e))return"\u8eab\u4efd\u8bc1\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"}},autocomplete:null}},i=(t.prototype.set=function(e){return T.extend(!0,this.config,e),this},t.prototype.verify=function(e){return T.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return T(u+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,$,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=T(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t+""}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;T(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=T(u+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){var e=e||a.find("input,textarea"),t=(i.autocomplete&&e.attr("autocomplete",i.autocomplete),function(e,t){var i=e.val(),a=Number(i),n=Number(e.attr("step"))||1,l=Number(e.attr("min")),r=Number(e.attr("max")),s=Number(e.attr("lay-precision")),o="click"!==t&&""===i,c="init"===t;isNaN(a)||("click"===t&&(a=!!T(this).index()?a-n:a+n),t=function(e){return((e.toString().match(/\.(\d+$)/)||[])[1]||"").length},s=0<=s?s:Math.max(t(n),t(i)),o||(c||r<=(a=a<=l?l:a)&&(a=r),0===s?a=parseInt(a):0'),e=layui.isArray(i.value)?i.value:[i.value],e=T((a=[],layui.each(e,function(e,t){a.push('')}),a.join(""))),n=(t.append(e),i.split&&t.addClass("layui-input-split"),i.className&&t.addClass(i.className),r.next("."+u)),l=(n[0]&&n.remove(),r.parent().hasClass(o)||r.wrap('
                                                              '),r.next("."+c));l[0]?((n=l.find("."+u))[0]&&n.remove(),l.prepend(t),r.css("padding-right",function(){return(r.closest(".layui-input-group")[0]?0:l.outerWidth())+t.outerWidth()})):(t.addClass(c),r.after(t)),"auto"===i.show&&d(t,r.val()),"function"==typeof i.init&&i.init.call(this,r,i),r.on("input propertychange",function(){var e=this.value;"auto"===i.show&&d(t,e)}),r.on("blur",function(){"function"==typeof i.blur&&i.blur.call(this,r,i)}),e.on("click",function(){var e=r.attr("lay-filter");T(this).hasClass(A)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,$,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},f={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),d(T(this).parent(),null)},show:"auto",disabled:e},number:{value:["up","down"],split:!0,className:"layui-input-number",disabled:r.is("[disabled]"),init:function(e){t.call(this,e,"init")},click:function(e){t.call(this,e,"click")},blur:function(e){t.call(this,e,"blur")}}};n()})},select:function(e){var m,u="\u8bf7\u9009\u62e9",g="layui-form-select",b="layui-select-title",x="layui-select-none",k="layui-select-create-option",C="",e=e||a.find("select"),w=function(e,t){T(e.target).parent().hasClass(b)&&!t||((e=T("."+g)).removeClass(g+"ed "+g+"up"),e.hasClass("layui-select-creatable")&&e.children("dl").children("."+k).remove(),m&&C&&m.val(C)),m=null},d=function(n,e,t,c){var s,u,a,i,o,d,l,r=T(this),f=n.find("."+b),h=f.find("input"),y=n.find("dl"),p=(y.children("dd"),y.children("dt")),v=this.selectedIndex;e||(u=r.attr("lay-search"),a=!(!lay.ie||"10"!==lay.ie&&"11"!==lay.ie||!h.attr("placeholder")),i=function(){var e=n.offset().top+n.outerHeight()+5-j.scrollTop(),t=y.outerHeight(),i=y.children("dd");v=r[0].selectedIndex,n.addClass(g+"ed"),i.removeClass(F),p.removeClass(F),s=null,i.removeClass(_),0<=v&&i.eq(v).addClass(_),e+t>j.height()&&t<=e&&n.addClass(g+"up"),d(),a&&y.off("mousedown.select.ieph").on("mousedown.select.ieph",function(){h[0].__ieph=!0,setTimeout(function(){h[0].__ieph=!1},60)})},o=function(e){n.removeClass(g+"ed "+g+"up"),h.blur(),s=null,c&&y.children("."+k).remove(),e||l(h.val(),function(e){var t=r[0].selectedIndex;e&&(C=T(r[0].options[t]).html(),0===t&&C===h.attr("placeholder")&&(C=""),h.val(C||""))})},d=function(){var e,t,i=y.children("dd."+_);i[0]&&(e=i.position().top,t=y.height(),i=i.height(),t")).addClass(k).attr("lay-value",i).html(N.escape(i)),y.append(t)):e?y.find("."+x)[0]||y.append('

                                                              \u65e0\u5339\u914d\u9879

                                                              '):y.find("."+x).remove()},"keyup"),""===i&&(r.val(""),y.find("."+_).removeClass(_),(r[0].options[0]||{}).value||y.children("dd:eq(0)").addClass(_),y.find("."+x).remove(),c)&&y.children("."+k).remove(),void d()))},50)).on("blur",function(e){var t=r[0].selectedIndex;m=h,C=T(r[0].options[t]).text(),0===t&&C===h.attr("placeholder")&&(C=""),setTimeout(function(){l(h.val(),function(e){C||h.val("")},"blur")},200)}),y.on("click","dd",function(){var e,t=T(this),i=t.attr("lay-value"),a=r.attr("lay-filter");return t.hasClass(A)||(t.hasClass("layui-select-tips")?h.val(""):(h.val(t.text()),t.addClass(_)),c&&t.hasClass(k)&&(t.removeClass(k),(e=T("
                                                              "].join(""));i.after(l),function(a,n){var l=T(this);a.on("click",function(){var e=T(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+c.SUBTRA).removeClass(c.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],$,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var o="layui-form-radio",c=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=T(this),a=i.next("."+o),n=this.disabled,l=i.attr("lay-skin");if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();var a=N.escape(t.title||""),r=[],s=(i.next("[lay-radio]")[0]&&(a=(s=i.next()).html()||"",1",'',"
                                                              "+a+"
                                                              ","
                                                              "].join("")));i.after(s),function(a){var n=T(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(u),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=T(this).next("."+o);this.checked=!1,e.removeClass(o+"ed"),e.children(".layui-icon").removeClass(l+" "+c[0]).addClass(c[1])}),n[0].checked=!0,a.addClass(o+"ed"),a.children(".layui-icon").addClass(l+" "+c[0]),layui.event.call(n[0],$,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,s)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?T(e).is(u)?(a=T(e),t()):e.each(function(e,t){var i=T(t);i.closest(u).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u,d=this.config.verify,f="layui-form-danger";return!(e=T(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=T(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=T.trim(s.val());if(s.removeClass(f),layui.each(t,function(e,t){var i="",a=d[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n)return"tips"===o?h.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?h.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&h.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(f),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i={},a=T(this),e="string"==typeof e?e:a.attr("lay-filter"),n=this.getFormElem?this.getFormElem(e):a.parents(u).eq(0),l=n.find("*[lay-verify]");return!!r.validate(l)&&(i=r.getValue(null,n),l={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?n:a.parents("form"))[0],field:i},"function"==typeof t&&t(l),layui.event.call(this,$,"submit("+e+")",l))}),r=new t,t=T(document),j=T(window);T(function(){r.render()}),t.on("reset",u,function(){var e=T(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",u,i).on("click","*[lay-submit]",i),e($,r)});layui.define(["lay","laytpl","laypage","form","util"],function(n){"use strict";var f=layui.$,d=layui.lay,m=layui.laytpl,O=layui.laypage,p=layui.layer,v=layui.form,g=layui.util,b=layui.hint(),x=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){return this.config=f.extend({},this.config,e),this},on:function(e,t){return layui.onevent.call(this,N,e,t)}},w=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){k.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=w.that[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=w.config[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},T=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content;"numbers"===a.type&&(i=e.tplData[k.config.numbersName]);("escape"in a?a:t).escape&&(i=g.escape(i));t=e.text&&a.exportTemplet||a.templet||a.toolbar;return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(function(e){try{return d(e).html()}catch(t){return e}}(t)||String(i)).render(f.extend({LAY_COL:a},e.tplData))),e.text?f("
                                                              "+i+"
                                                              ").text():i},N="table",R="lay-"+N+"-id",t=".layui-table",D="layui-hide",y="layui-hide-v",h="layui-none",L="layui-table-view",o=".layui-table-header",E=".layui-table-body",u=".layui-table-fixed-r",P=".layui-table-pageview",A=".layui-table-sort",_="layui-table-checked",M="layui-table-edit",W="layui-table-hover",I="laytable-cell-group",H="layui-table-col-special",j="layui-table-tool-panel",S="layui-table-expanded",F="LAY_TABLE_MOVE_DICT",e=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
                                                              ','
                                                              ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
                                                              ","
                                                              "].join("")},a=['',"","
                                                              "].join(""),s=[,"{{# if(d.data.toolbar){ }}",'
                                                              ','
                                                              ','
                                                              ',"
                                                              ","{{# } }}",'
                                                              ',"{{# if(d.data.loading){ }}",'
                                                              ','
                                                              ','{{# if(typeof d.data.loading === "string"){ }}',"{{- d.data.loading}}","{{# } else{ }}",'',"{{# } }}","
                                                              ","
                                                              ","{{# } }}","{{# var left, right; }}",'
                                                              ',e(),"
                                                              ",'
                                                              ',a,"
                                                              ","{{# if(left){ }}",'
                                                              ','
                                                              ',e({fixed:!0}),"
                                                              ",'
                                                              ',a,"
                                                              ","
                                                              ","{{# }; }}","{{# if(right){ }}",'
                                                              ','
                                                              ',e({fixed:"right"}),'
                                                              ',"
                                                              ",'
                                                              ',a,"
                                                              ","
                                                              ","{{# }; }}","
                                                              ","{{# if(d.data.totalRow){ }}",'
                                                              ','','',"
                                                              ","
                                                              ","{{# } }}",'
                                                              ','
                                                              ',"
                                                              "].join(""),r=f(window),z=f(document),i=function(e){this.index=++k.index,this.config=f.extend({},this.config,k.config,e),this.render()},c=(i.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},i.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=f(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(w.that[i]=t,(w.config[i]=a).request=f.extend({pageName:"page",limitName:"limit"},a.request),a.response=f.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-.+$/.test(a.height)?(t.fullHeightGap=a.height.split("-")[1],a.height=r.height()-(parseFloat(t.fullHeightGap)||0)):a.height&&/^#\w+\S*-.+$/.test(a.height)?(i=a.height.split("-"),t.parentHeightGap=i.pop(),t.parentDiv=i.join("-"),a.height=f(t.parentDiv).height()-(parseFloat(t.parentHeightGap)||0)):"function"==typeof a.height&&(t.customHeightFunc=a.height,a.height=t.customHeightFunc());var l,e=a.elem,i=e.next("."+L),n=t.elem=f("
                                                              ");n.addClass((l=[L,L+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr(((l={"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))})[R]=a.id,l)).html(m(s,{open:"{{",close:"}}"}).render({data:a,index:t.index})),t.renderStyle(),i[0]&&(t.resizeObserver&&t.resizeObserver.unobserve(t.elem[0]),i.remove()),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(E),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(u),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},i.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},i.prototype.setInit=function(e){var l,a,r=this,d=r.config;if(d.clientWidth=d.width||(l=function(e){var t,a=(e=e||d.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return d.clientWidth;d.height=d.maxHeight||d.height,d.css&&-1===d.css.indexOf(L)&&(a=d.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+L+"-"+r.index+" "+t)}),d.css=a.join("}"));var c=function(a,e,i,l){var n,o;l?(l.key=[d.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,r.initOpts(l),(n=a+(parseInt(l.rowspan)||1)) td:hover > .layui-table-cell{overflow: auto;}"].concat(x.ie?[".layui-table-edit{height: "+i+";}","td[data-edit]:hover:after{height: "+i+";}"]:[]),function(e,t){t&&o.push(a+" "+t)})),l.css&&o.push(l.css),d.style({target:this.elem[0],text:o.join(""),id:"DF-table-"+n})},i.prototype.renderToolbar=function(){var e=this.config,t=['
                                                              ','
                                                              ','
                                                              '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=f(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
                                                              ')}),this.layTool.find(".layui-table-tool-self").html(l.join(""))},i.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=f('
                                                              ');t.pagebar&&((e=f(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},i.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](D),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},i.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},i.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+I)).css("width",0),layui.each(e.get().reverse(),function(){var e=f(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){f(this).hasClass(D)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.cssRules(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"
                                                              ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(D),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(P).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth(),t.loading(!1)},i.prototype.page=1,i.prototype.pullData=function(a,t){var e,i,l=this,n=l.config,o=(n.HAS_SET_COLS_PATCH||l.setColsPatch(),n.HAS_SET_COLS_PATCH=!0,n.request),r=n.response,d=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:t.type})},c=function(e,t){l.setColsWidth(),l.loading(!1),"function"==typeof n.done&&n.done(e,a,e[r.countName],t)};t=t||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),t.renderData?((e={})[r.dataName]=k.cache[l.key],e[r.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[r.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[r.totalRowName]=f.extend({},l.totalRow)),l.renderData({res:e,curr:a,count:e[r.countName],type:t.type,sort:!0}),c(e,"renderData")):n.url?(i={},n.page&&(i[o.pageName]=a,i[o.limitName]=n.limit),o=f.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(!0),f.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},complete:"function"==typeof n.complete?n.complete:undefined,success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[r.statusName]!=r.statusCode?l.errorView(e[r.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+r.statusName+'": '+r.statusCode):(l.totalRow=e[r.totalRowName],l.renderData({res:e,curr:a,count:e[r.countName],type:t.type}),d(),n.time=(new Date).getTime()-l.startTime+" ms"),c(e,t.type)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=a*n.limit-n.limit,o=n.data.concat(),e[r.dataName]=n.page?o.splice(i,n.limit):o,e[r.countName]=n.data.length,"object"==typeof n.totalRow&&(e[r.totalRowName]=f.extend({},n.totalRow)),l.totalRow=e[r.totalRowName],l.renderData({res:e,curr:a,count:e[r.countName],type:t.type}),d(),c(e,t.type))},i.prototype.eachCols=function(e){return k.eachCols(null,e,this.config.cols),this},i.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return b.error(t),{}}},i.prototype.getTrHtml=function(a,l,n,e){var s=this,u=s.config,y=e&&e.trs||[],h=e&&e.trs_fixed||[],p=e&&e.trs_fixed_r||[];return n=n||1,layui.each(a,function(e,o){var i=[],r=[],d=[],c=e+u.limit*(n-1)+1;if("object"!=typeof o){a[e]=o={LAY_KEY:o};try{k.cache[s.key][e]=o}catch(t){}}"array"===layui.type(o)&&0===o.length||(o[k.config.numbersName]=c,l||(o[k.config.indexName]=e),s.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=o[e];n!==undefined&&null!==n||(n=""),l.colGroup||(e=['','
                                                              "+function(){var e,t=f.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(f(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
                                                              "].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&r.push(e),"right"===l.fixed&&d.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+_+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+r.join("")+""),p.push(""+d.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:p}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},i.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,r=t[i.response.dataName]||[],t=t[i.response.totalRowName],d=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(r,o,l,{trs:d,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(d.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,p.close(a.tipsIndex)};return k.cache[a.key]=r,a.layTotal[0==r.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](D),a.layPage.find(P)[!i.page||0==n||0===r.length&&1==l?"addClass":"removeClass"](y),0===r.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(D),o?u():(u(),a.renderTotal(r,t),a.layTotal&&a.layTotal.removeClass(D),void(i.page&&(i.page=f.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,O.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},i.prototype.renderTotal=function(e,o){var r,d=this,c=d.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||d.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),d.dataTotal=[],r=[],d.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&T.call(d,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&d.dataTotal.push({field:t.field,total:f("
                                                              "+l+"
                                                              ").text()}),['','
                                                              "+("string"==typeof(a=t.totalRow||c.totalRow)?m(a).render(f.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
                                                              "].join(""));r.push(n)}),e=d.layTotal.find(".layui-table-patch"),d.layTotal.find("tbody").html(""+r.join("")+(e.length?e.get(0).outerHTML:"")+""))},i.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},i.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},i.prototype.renderFormByElem=function(a){layui.each(["input","select"],function(e,t){v.render(a.find(t))})},i.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}),v.render(t))},i.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},i.prototype.setRowChecked=function(i){var e=this,l=e.config,n="all"===i.index,o="array"===layui.type(i.index),r=(t=e.layBody.find("tr"),n?t:t.filter(o?function(){var e=f(this).data("index");return-1!==i.index.indexOf(e)}:'[data-index="'+i.index+'"]')),t=(i=f.extend({type:"checkbox"},i),k.cache[e.key]),a="checked"in i,d=function(e){return"radio"===i.type||(a?i.checked:!e)},t=(layui.each(t,function(e,t){var a;"array"===layui.type(t)||t[l.disabledName]||(n||(o?-1!==i.index.indexOf(e):Number(i.index)===e)?(a=t[l.checkName]=d(t[l.checkName]),(e=r.filter('[data-index="'+e+'"]'))[a?"addClass":"removeClass"](_),"radio"===i.type&&e.siblings().removeClass(_)):"radio"===i.type&&delete t[l.checkName])}),r.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[i.type]||"checkbox")+'"]:not(:disabled)')),c=t.last(),s=c.closest(u);("radio"===i.type&&s.hasClass(D)?t.first():t).prop("checked",d(c.prop("checked"))),e.syncCheckAll(),e.renderForm(i.type)},i.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(r=l.field,t.layHeader.find("th").each(function(e,t){var a=f(this),i=a.data("field");if(i===l.field)return l.field=a,r=i,!1}));try{var r=r||l.field.data("field"),d=l.field.data("key");if(t.sortKey&&!l.pull&&r===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+d).find(A);t.layHeader.find("th").find(A).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){b.error("Table modules: sort field '"+r+"' not matched")}t.sortKey={field:r,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,r,null,!0):"desc"===l.type?e=layui.sort(o,r,!0,!0):(e=layui.sort(o,k.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:r,type:l.type},layui.event.call(l.field,N,"sort("+n+")",f.extend({config:i},i.initSort)))},i.prototype.loading=function(e){this.config.loading&&this.layBox.find(".layui-table-init").toggleClass(y,!e)},i.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];d.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),!0})},i.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=r.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap?(l=f(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135):i.customHeightFunc&&(l=i.customHeightFunc())<135&&(l=135),1
                                                              ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(E).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0');a.html(t),s.height&&a.css("max-height",s.height-(c.layTool.outerHeight()||50)),i.find("."+j)[0]||i.append(a),c.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),z.trigger("table.tool.panel.remove"),p.close(c.tipsIndex),t){case"LAYTABLE_COLS":n({list:(a=[],c.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
                                                            • "+(t.fieldTitle||t.title||t.field)+"
                                                            • ").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=f(e.elem),t=this.checked,a=e.data("key"),i=c.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,c.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](D),l!=i.hide&&c.setParentCol(!t,e),c.resize(),layui.event.call(this,N,"colToggled("+u+")",{col:i,config:s}))})}});break;case"LAYTABLE_EXPORT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});x.ie?p.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):n({list:['
                                                            • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
                                                            • ','
                                                            • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
                                                            • '].join(""),done:function(e,t){t.on("click",function(){var e=f(this).data("type");k.exportFile.call(c,s.id,null,e)})}});break;case"LAYTABLE_PRINT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});var o=window.open("about:blank","_blank"),r=[""].join(""),d=f(c.layHeader.html());d.append(c.layMain.find("table").html()),d.append(c.layTotal.find("table").html()),d.find("th.layui-table-patch").remove(),d.find("thead>tr>th."+H).filter(function(e,t){return!f(t).children("."+I).length}).remove(),d.find("tbody>tr>td."+H).remove(),o.document.write(r+d.prop("outerHTML")),o.document.close(),layui.device("edg").edg?(o.onafterprint=o.close,o.print()):(o.print(),o.close())}layui.event.call(this,N,"toolbar("+u+")",f.extend({event:t,config:s},{}))}),c.layHeader.on("click","*[lay-event]",function(e){var t=f(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=c.col(t);layui.event.call(this,N,"colTool("+u+")",f.extend({event:a,config:s,col:t},{}))}),c.layPagebar.on("click","*[lay-event]",function(e){var t=f(this).attr("lay-event");layui.event.call(this,N,"pagebar("+u+")",f.extend({event:t,config:s},{}))}),e.on("mousemove",function(e){var t=f(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(r.allowResize=t.width()-e<=10,o.css("cursor",r.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||(r.allowResize=!1,o.css("cursor",""))}).on("mousedown",function(e){var t,a=f(this);r.allowResize&&(t=a.data("key"),e.preventDefault(),r.offset=[e.clientX,e.clientY],c.cssRules(t,function(e){var t=e.style.width||a.outerWidth();r.rule=e,r.ruleWidth=parseFloat(t),r.minWidth=a.data("minwidth")||s.cellMinWidth,r.maxWidth=a.data("maxwidth")||s.cellMaxWidth}),a.data(F,r),w.eventMoveElem=a)}),w.docEvent||z.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(F)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+L).attr(R),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),p.close(c.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+L).attr(R),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),r={},o.css("cursor",""),a.scrollPatch(),t.removeData(F),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],N,"colResized("+n+")",{col:l,config:a.config})}))}),w.docEvent=!0,e.on("click",function(e){var t=f(this),a=t.find(A),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");c.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(A+" .layui-edge ").on("click",function(e){var t=f(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?c.sort({field:t,type:"asc",fromEvent:!0}):c.sort({field:t,type:"desc",fromEvent:!0})}),c.commonMember=function(e){var a=f(this).parents("tr").eq(0).data("index"),t=c.layBody.find('tr[data-index="'+a+'"]'),i=(k.cache[c.key]||[])[a]||{},l={tr:t,config:s,data:k.clearCacheKey(i),dataCache:i,index:a,del:function(){k.cache[c.key][a]=[],t.remove(),c.scrollPatch()},update:function(e,t){c.updateRow({index:a,data:e=e||{},related:t},function(e,t){l.data[e]=t})},setRowChecked:function(e){c.setRowChecked(f.extend({index:a},e))}};return f.extend(l,e)}),a=(c.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=(c.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?c.setRowChecked({index:"all",checked:l}):(c.setRowChecked({index:i,checked:l}),layui.stope(e)),layui.event.call(t[0],N,"checkbox("+u+")",d.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return c.col(a.data("key"))}})))}),c.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;c.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],N,"radio("+u+")",d.call(t[0],{checked:i,getCol:function(){return c.col(a.data("key"))}}))}),c.layBody.on("mouseenter","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").addClass(W)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").removeClass(W)}).on("click","tr",function(e){var t=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");f(e.target).is(t)||f(e.target).closest(t)[0]||a.call(this,"row")}).on("dblclick","tr",function(){a.call(this,"rowDouble")}).on("contextmenu","tr",function(e){s.defaultContextmenu||e.preventDefault(),a.call(this,"rowContextmenu")}),function(e){var t=f(this);t.data("off")||layui.event.call(this,N,e+"("+u+")",d.call(t.children("td")[0]))}),n=function(e,t){var a,i,l;(e=f(e)).data("off")||(l=e.data("field"),i=e.data("key"),i=c.col(i),a=e.closest("tr").data("index"),a=k.cache[c.key][a],e.children(y),(i="function"==typeof i.edit?i.edit(a):i.edit)&&((i=f("textarea"===i?'':''))[0].value=(l=e.data("content")||a[l])===undefined||null===l?"":l,e.find("."+M)[0]||e.append(i),i.focus(),t)&&layui.stope(t))},i=(c.layBody.on("change","."+M,function(){var e=f(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[c.key][e],l=d.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return c.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],N,"edit("+u+")",l)}).on("blur","."+M,function(){f(this).remove()}),c.layBody.on(s.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),c.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=f(this),a=t.children(y);t.data("off")||t.parent().hasClass(S)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.prop("clientWidth")||0
                                                              '))},l=function(e,t){var a=f(this),i=a.parent(),l=i.data("key"),n=c.col(l),o=i.parent().data("index"),r=i.children(y),i="layui-table-cell-c",d=f('');"tips"===(t=t||n.expandedMode||s.cellExpandedMode)?c.tipsIndex=p.tips(['
                                                              ',r.html(),"
                                                              ",''].join(""),r[0],{tips:[3,""],time:-1,anim:-1,maxWidth:x.ios||x.android?300:c.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){p.close(t)})}}):(c.elem.find("."+i).trigger("click"),c.cssRules(l,function(e){var t=e.style.width,a=n.expandedWidth||s.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],f(this).children().each(function(e){var t=f(this),a=t.attr("lay-data"),a=d.options(this,{attr:a?"lay-data":null,errorText:r+(a||t.attr("lay-options"))}),t=f.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=f(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),c(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')):t.field&&"normal"!==t.type&&0==i&&(d[t.field]=!0)}),r.push(n.join(","))}),c&&layui.each(c.dataTotal,function(e,t){d[t.field]||i.push('"'+(t.total||"")+'"')}),o.join(",")+"\r\n"+r.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](D),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l)&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](D),n.setParentCol(i,t))})})),f("."+j).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return(e=C(e)).reload(t,a,i),w.call(e)},k.reloadData=function(){var a=f.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new i(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=f.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),n(N,k)});layui.define(["table"],function(e){"use strict";var A=layui.$,x=layui.form,P=layui.table,y=layui.hint(),B={config:{},on:P.on,eachCols:P.eachCols,index:P.index,set:function(e){var t=this;return t.config=A.extend({},t.config,e),t},resize:P.resize,getOptions:P.getOptions,hideCol:P.hideCol,renderData:P.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){B.reloadData(n,e,t)}}},j=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},F="lay-table-id",L="layui-hide",s=".layui-table-body",q=".layui-table-main",R=".layui-table-fixed-l",Y=".layui-table-fixed-r",l="layui-table-checked",h="layui-table-tree",z="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",f="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",H="LAY_EXPAND",X="LAY_HAS_EXPANDED",V="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=/<[^>]+?>/,p=["flexIconClose","flexIconOpen","iconClose","iconOpen","iconLeaf","icon"],a=function(e){var t=this;t.index=++B.index,t.config=A.extend(!0,{},t.config,B.config,e),t.init(),t.render()},g=function(n,i,e){var l=P.cache[n];layui.each(e||l,function(e,t){var a=t[z]||"";-1!==a.indexOf("-")&&(l[a]=t),t[i]&&g(n,i,t[i])})},d=function(d,a,e){var r=j(d),o=("reloadData"!==e&&(r.status={expand:{}}),A.extend(!0,{},r.getOptions(),a)),n=o.tree,c=n.customName.children,i=n.customName.id,l=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,P.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},o.cols),a.parseData),u=a.done;"reloadData"===e&&"fixed"===o.scrollPos&&(r.scrollTopCache=r.config.elem.next().find(s).scrollTop()),o.url?e&&(!l||l.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(l)&&(a=l.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=r.flatToTree(a[t])),N(a[t],function(e){e[H]=H in e?e[H]:e[i]!==undefined&&r.status.expand[e[i]]},c),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),r.initData(a[t]),a},a.parseData.mod=!0):(a.data=a.data||[],n.data.isSimpleData&&(a.data=r.flatToTree(a.data)),r.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n="renderData"===a,i=(n||delete r.isExpandAll,this.elem.next()),l=(r.updateStatus(null,{LAY_HAS_EXPANDED:!1}),g(d,c),i.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(l.length&&(e=B.checkStatus(d),l.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!n&&o.autoSort&&o.initSort&&o.initSort.type&&B.sort(d),r.renderTreeTable(i),"reloadData"===a&&"fixed"===this.scrollPos&&i.find(s).scrollTop(r.scrollTopCache),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0),a&&a.tree&&a.tree.view&&layui.each(p,function(e,t){a.tree.view[t]!==undefined&&(a.tree.view[t]=r.normalizedIcon(a.tree.view[t]))})};a.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),P.render(A.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},a.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},a.prototype.normalizedIcon=function(e){return e?t.test(e)?e:'':""},a.prototype.getOptions=function(){return this.tableIns?P.getOptions(this.tableIns.config.id):this.config},a.prototype.flatToTree=function(e){var n,i,l,d,r,o,c,u,t=this.getOptions(),a=t.tree,s=a.customName,t=t.id;return e=e||P.cache[t],t=e,n=s.id,i=s.pid,l=s.children,d=a.data.rootPid,n=n||"id",i=i||"parentId",l=l||"children",c={},u=[],layui.each(t,function(e,t){r=n+t[n],o=n+t[i],c[r]||(c[r]={},c[r][l]=[]);var a={};a[l]=c[r][l],c[r]=A.extend({},t,a),((d?c[r][i]===d:!c[r][i])?u:(c[o]||(c[o]={},c[o][l]=[]),c[o][l])).push(c[r])}),u},a.prototype.treeToFlat=function(e,n,i){var l=this,d=l.getOptions().tree.customName,r=d.children,o=d.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=A.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},a.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[z],getParentNode:function(){return n.getNodeByIndex(e[f])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},a.prototype.getNodeByIndex=function(t){var a,e,n=this,i=n.getNodeDataByIndex(t);return i?((e=n.getOptions()).tree.customName.parent,a=e.id,(e={data:i,dataIndex:i[z],getParentNode:function(){return n.getNodeByIndex(i[f])},update:function(e){return B.updateNode(a,t,e)},remove:function(){return B.removeNode(a,t)},expand:function(e){return B.expandNode(a,A.extend({},e,{index:t}))},setChecked:function(e){return B.setRowChecked(a,A.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},a.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=B.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[z],!0}),i)return this.getNodeByIndex(i)},a.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=P.cache[n],l=n[e];if("delete"!==a&&l)return A.extend(l,a),t?A.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o
                                                              '),N=function(e){y[V]="success",y[s.children]=e,c.initData(y[s.children],y[z]),J(t,!0,!p&&n,i,l)},C=m.format,"function"===layui.type(C)?C(y,o,N):(I=A.extend({},m.where||o.where),C=m.autoParam,layui.each(C,function(e,t){t=t.split("=");I[t[0].trim()]=y[(t[1]||t[0]).trim()]}),(C=m.contentType||o.contentType)&&0==C.indexOf("application/json")&&(I=JSON.stringify(I)),O=m.method||o.method,D=m.dataType||o.dataType,T=m.jsonpCallback||o.jsonpCallback,_=m.headers||o.headers,k=m.parseData||o.parseData,w=m.response||o.response,A.ajax({type:O||"get",url:b,contentType:C,data:I,dataType:D||"json",jsonpCallback:T,headers:_||{},success:function(e){(e="function"==typeof k?k.call(o,e)||e:e)[w.statusName]!=w.statusCode?(y[V]="error",g.html('')):N(e[w.dataName])},error:function(e,t){y[V]="error","function"==typeof o.error&&o.error(e,t)}})),h;y[X]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((m=o.initSort).type?layui.sort(v,m.field,"desc"===m.type,!0):layui.sort(v,P.config.indexName,null,!0)),c.initData(y[s.children],y[z]),O=P.getTrHtml(r,v,null,null,e),S={trs:A(O.trs.join("")),trs_fixed:A(O.trs_fixed.join("")),trs_fixed_r:A(O.trs_fixed_r.join(""))},E=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){S.trs.eq(e).attr({"data-index":t[z],"lay-data-index":t[z],"data-level":E}).data("index",t[z]),S.trs_fixed.eq(e).attr({"data-index":t[z],"lay-data-index":t[z],"data-level":E}).data("index",t[z]),S.trs_fixed_r.eq(e).attr({"data-index":t[z],"lay-data-index":t[z],"data-level":E}).data("index",t[z])}),d.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs),d.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed),d.find(Y).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed_r),c.renderTreeTable(S.trs,E),n)&&!p&&layui.each(v,function(e,t){J({dataIndex:t[z],trElem:d.find('tr[lay-data-index="'+t[z]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)})}else c.isExpandAll=!1,(n&&!p?(layui.each(v,function(e,t){J({dataIndex:t[z],trElem:d.find('tr[lay-data-index="'+t[z]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)}),d.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[z]+'"]'}).join(","))):(b=c.treeToFlat(v,y[s.id],e),d.find(b.map(function(e,t,a){return'tr[lay-data-index="'+e[z]+'"]'}).join(",")))).addClass(L);U("resize-"+r,function(){B.resize(r)},0)(),l&&"loading"!==y[V]&&(C=u.callback.onExpand,"function"===layui.type(C))&&C(r,y,x)}return h},v=(B.expandNode=function(e,t){var a,n,i,e=j(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),J({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},B.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=j(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),d=i.customName.isParent,r=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=B.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[V])return!(c=!1)}),!c)return void layui.each(B.getData(a),function(e,t){B.expandNode(a,{index:t[z],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[X])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),l.find('tbody tr[data-level!="0"]').removeClass(L),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[X]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return B.sort(a);var s,n=P.getTrHtml(a,e),f={trs:A(n.trs.join("")),trs_fixed:A(n.trs_fixed.join("")),trs_fixed_r:A(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[z].split("-").length-1;s={"data-index":t[z],"lay-data-index":t[z],"data-level":a},f.trs.eq(e).attr(s).data("index",t[z]),f.trs_fixed.eq(e).attr(s).data("index",t[z]),f.trs_fixed_r.eq(e).attr(s).data("index",t[z])}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!1,e[r]!==undefined)&&(t.status.expand[e[r]]=!1)}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(L),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);B.resize(a)}},a.prototype.updateNodeIcon=function(e){var t=this.getOptions().tree||{},a=e.scopeEl,n=e.isExpand,e=e.isParent;a.find(".layui-table-tree-flexIcon").css("visibility",e||t.view.showFlexIconIfNotParent?"visible":"hidden").html(n?t.view.flexIconOpen:t.view.flexIconClose),t.view.showIcon&&(a=a.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom)"),n=e?n?t.view.iconOpen:t.view.iconClose:t.view.iconLeaf,a.toggleClass("layui-table-tree-iconLeaf",!e).html(n))},a.prototype.renderTreeTable=function(e,t,a){var l=this,n=l.getOptions(),d=n.elem.next(),i=(d.hasClass(h)||d.addClass(h),n.id),r=n.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(d.attr("lay-filter"),l),f=((t=t||0)||(d.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(P.cache[i],function(e,t){d.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[z]),d.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[z]),d.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[z])})),null),y=c.name,p=o.indent||14;if(layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=A(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=d.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[H]&&a[u]&&((f=f||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
                                                              ',a[H]?o.flexIconOpen:o.flexIconClose,"
                                                              ",o.showIcon?'
                                                              '+(l.normalizedIcon(a[c.icon])||o.icon||(a[u]?a[H]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
                                                              ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),J({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&l.isExpandAll===undefined)return B.expandAll(i,!0);(!1!==a&&f?(layui.each(f,function(e,t){e=d.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),J({trElem:e.first()},!0)}),U("renderTreeTable2-"+i,function(){x.render(A(".layui-table-tree["+F+'="'+i+'"]'))},0)):U("renderTreeTable-"+i,function(){n.hasNumberCol&&v(l),x.render(A(".layui-table-tree["+F+'="'+i+'"]'))},0))()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),d=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(P.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[z]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),d.eq(e).find(".laytable-cell-numbers").html(n))})}),N=(a.prototype.render=function(e){var t=this;t.tableIns=P["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,A.extend(!0,{},t.config)),t.config=t.tableIns.config},a.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),d(n.getOptions().id,e,a||!0),n.config=A.extend(t,{},n.config,e),n.render(a)},B.reloadData=function(){var e=A.extend(!0,[],arguments);return e[3]="reloadData",B.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):A.extend(t,a),l.push(A.extend({},t)),i||(l=l.concat(N(t[n],a,n,i)))}),l}),o=(a.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||P.cache[n.id],N(e,t,i.customName.children,a)},a.prototype.getTableData=function(){var e=this.getOptions();return P.cache[e.id]},B.updateStatus=function(e,t,a){var e=j(e),n=e.getOptions();return a=a||(n.url?P.cache[n.id]:n.data),e.updateStatus(a,t)},B.sort=function(e){var t,a,i,l,n,d=j(e);d&&(n=(t=d.getOptions()).tree,a=B.getData(e),i=n.customName.children,l=function(e,a,n){layui.sort(e,a,n,!0),layui.each(e,function(e,t){l(t[i]||[],a,n)})},t.autoSort)&&((n=t.initSort).type?l(a,n.field,"desc"===n.type):l(a,P.config.indexName,null),P.cache[e]=a,d.initData(a),B.renderData(e))},function(n){var t=n.config.id,i=j(t),a=n.data=B.getNodeDataByIndex(t,n.index),l=a[z],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(A.extend(i.getNodeDataByIndex(l),e[0]),d.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){B.removeNode(t,a)},n.setRowChecked=function(e){B.setRowChecked(t,{index:a,checked:e})}}),u=(B.updateNode=function(e,a,t){var n,i,l,d,r,o=j(e);o&&((d=o.getOptions()).tree,d=(n=d.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=d.attr("data-index"),l=d.attr("data-level"),t)&&(d=o.getNodeDataByIndex(a,!1,t),r=P.getTrHtml(e,[d]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(A(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}).data("index",i))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},B.removeNode=function(e,t){var a=j(e);if(a){var n,i=a.getOptions(),l=i.tree,d=l.customName.isParent,r=l.customName.children,o=i.elem.next(),c=[],u=P.cache[e],t=a.getNodeDataByIndex("string"===layui.type(t)?t:t[z],!1,"delete"),s=a.getNodeDataByIndex(t[f]),l=(a.updateCheckStatus(s),a.treeToFlat([t],t[l.customName.pid],t[f])),t=(layui.each(l,function(e,t){t=t[z];c.push('tr[lay-data-index="'+t+'"]'),-1!==t.indexOf("-")&&delete u[t]}),o.find(c.join(",")).remove(),a.initData());for(n in u)-1!==n.indexOf("-")&&n!==u[n][z]&&delete u[n];layui.each(a.treeToFlat(t),function(e,t){t[m]&&t[m]!==t[z]&&o.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[z],"lay-data-index":t[z]}).data("index",t[z])}),layui.each(u,function(e,t){o.find('tr[data-level="0"][lay-data-index="'+t[z]+'"]').attr("data-index",e).data("index",e)}),i.hasNumberCol&&v(a),s&&(l=o.find('tr[lay-data-index="'+s[z]+'"]'),s[d]=!(!s[r]||!s[r].length),a.updateNodeIcon({scopeEl:l,isExpand:s[H],isParent:s[d]})),B.resize(e)}},B.addNodes=function(e,t){var a=j(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=P.config.checkName,r=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,o="number"===layui.type(o)?o:-1,c=A.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){d in t||!u||(t[d]=u[d])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[X]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[z]+'"]'}).join(",")).remove(),a.initData(),u[X]=!1,u[V]="local",J({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=P.cache[e].splice(-1===o?P.cache[e].length:o);if(P.cache[e]=P.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(P.cache[e]))):n.data=P.cache[e]),a.initData(),l.find(".layui-none").length)return P.renderData(e),c;var x,f=P.getTrHtml(e,c),h={trs:A(f.trs.join("")),trs_fixed:A(f.trs_fixed.join("")),trs_fixed_r:A(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[z],"lay-data-index":t[z],"data-level":"0"},h.trs.eq(e).attr(x).data("index",t[z]),h.trs_fixed.eq(e).attr(x).data("index",t[z]),h.trs_fixed_r.eq(e).attr(x).data("index",t[z])}),parseInt(c[0][z])-1),y=l.find(q),n=l.find(R),f=l.find(Y);-1==r?y.find('tr[data-level="0"][data-index="0"]')[0]?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):(y.find("tbody").prepend(h.trs),n.find("tbody").prepend(h.trs_fixed),f.find("tbody").prepend(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(r=p[0][m],y.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed_r)),layui.each(P.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[z]+'"]').attr("data-index",e).data("index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[z]+'"]'}).join(",")))}return a.updateCheckStatus(u),u&&(o=l.find('tr[lay-data-index="'+u[z]+'"]'),a.updateNodeIcon({scopeEl:o,isExpand:u[H],isParent:u[s]})),B.resize(e),t&&l.find(q).find('tr[lay-data-index="'+c[0][z]+'"]').get(0).scrollIntoViewIfNeeded(),c}},B.checkStatus=function(e,n){var i,t,a,l=j(e);if(l)return l=l.getOptions().tree,i=P.config.checkName,t=B.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each("all"===l.data.cascade?P.cache[e]:B.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},B.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&B.sort(e)}),B.on("row",function(e){e.config.elem.next().hasClass(h)&&o(e)}),B.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),(t.tree||{}).view.dblClickExpand)&&J({trElem:e.tr.first()},null,null,null,!0)}),B.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),B.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),B.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),B.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=j(t),o(e),u.call(a,e.tr,e.checked))}),a.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=A(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},a.prototype.updateCheckStatus=function(e,t){var a,n,i,l,d,r,o,c=this,u=c.getOptions();return!!u.hasChecboxCol&&(a=u.tree,n=u.id,i=u.elem.next(),l=P.config.checkName,"all"!==(d=a.data.cascade)&&"parent"!==d||!e||(d=c.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(d,function(e,t){var a=i.find('tr[lay-data-index="'+t[z]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),x.render(a.prop({checked:n,indeterminate:t[b]}))})),o=!(r=!0),0<(e=(e="all"===a.data.cascade?P.cache[n]:B.getData(n,!0)).filter(function(e){return!e[u.disabledName]})).length?layui.each(e,function(e,t){if((t[l]||t[b])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}):r=!1,o=o&&!r,x.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o})),r)},a.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=P.config.checkName,t=t.customName.children,d=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
                                                              '+i.text.none+"
                                                              "),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(T),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(T)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(r,e){var d=this,s=d.config,o=s.customName,e=e||s.data;layui.each(e,function(e,i){var a,n,t=i[o.children]&&0"),c=p(['
                                                              ','
                                                              ','
                                                              ',s.showLine?t?'':'':'',s.showCheckbox?'':"",s.isJump&&i.href?''+(i[o.title]||i.label||s.text.defaultNodeName)+"":''+(i[o.title]||i.label||s.text.defaultNodeName)+"","
                                                              ",s.edit?(a={add:'',update:'',del:''},n=['
                                                              '],!0===s.edit&&(s.edit=["update","del"]),"object"==typeof s.edit?(layui.each(s.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
                                                              "):void 0):"","
                                                              "].join(""));t&&(c.append(l),d.tree(l,i[o.children])),r.append(c),c.prev("."+k)[0]&&c.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),t||c.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),d.spread(c,i),s.showCheckbox&&(i.checked&&d.checkids.push(i[o.id]),d.checkClick(c,i)),s.edit&&d.operate(c,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+b),i=e.children("."+g),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+C),e=e.find("."+w),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+N),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(F)?(n.removeClass(F),i.slideUp(200),a.removeClass(x).addClass(v),l.updateFieldValue(t,"spread",!1)):(n.addClass(F),i.slideDown(200),a.addClass(x).removeClass(v),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+k)).removeClass(F),i.children("."+N).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(x).addClass(v))):s="normal"}),e.on("click",function(){p(this).hasClass(u)||(s=n.hasClass(F)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+N)[0]||e.find("."+N).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+k)[0]&&(a=(e=e.parent("."+N)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+b).children("."+g).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+b),h=e.children("."+g);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+N),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+C).addClass("layui-tree-icon"),h.find("."+C).children(".layui-icon").addClass(v).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(m),r.append('
                                                              '));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+N),[c]),o.showLine&&(n[0]?(n.hasClass(S)||n.addClass(S),r.find("."+N).each(function(){p(this).children("."+k).last().addClass(T)}),(n.children("."+k).last().prev().hasClass(T)?n.children("."+k).last().prev():n.children("."+k).last()).removeClass(T),!r.parent("."+N)[0]&&r.next()[0]&&n.children("."+k).last().removeClass(T)):(l=r.siblings("."+k),a=1,c=r.parent("."+N),layui.each(l,function(e,i){p(i).children("."+N)[0]||(a=0)}),(1==a?(l.children("."+N).addClass(L),l.children("."+N).children("."+k).removeClass(T),r.children("."+N).addClass(L),c.removeClass(S),c.children("."+k).last().children("."+N).children("."+k).last()):r.children("."+N).children("."+k)).addClass(T))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+N).children("."+k).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+w).html(),h.children("."+w).html(""),h.append(''),h.children(".layui-tree-editInput").val(f.unescape(l)).focus(),i=function(e){var i=f.escape(e.val().trim())||o.text.defaultNodeName;e.remove(),h.children("."+w).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d[u.title]||"")+'" \u5417\uff1f',function(e){var l,a,i;o.operate&&o.operate(t),t.status="remove",y.close(e),r.prev("."+k)[0]||r.next("."+k)[0]||r.parent("."+N)[0]?(r.siblings("."+k).children("."+b)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+k)[0]&&(i=e.siblings("."+k).children("."+b),a=(e=e.parent("."+N).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked)&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n)&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+k)))})(r),o.showLine&&(e=r.siblings("."+k),a=1,i=r.parent("."+N),layui.each(e,function(e,i){p(i).children("."+N)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(S),e.children("."+N).addClass(L),e.children("."+N).children("."+k).removeClass(T)),(r.next()[0]?i.children("."+k).last():r.prev()).children("."+N).children("."+k).last().addClass(T),r.next()[0]||r.parents("."+k)[1]||r.parents("."+k).eq(0).next()[0]||r.prev("."+k).addClass(T)):!r.next()[0]&&r.hasClass(T)&&r.prev().addClass(T))):(e=r.parent("."+N).prev(),o.showLine?(e.find("."+C).removeClass("layui-tree-icon"),e.find("."+C).children(".layui-icon").removeClass(x).addClass("layui-icon-file"),(i=e.parents("."+N).eq(0)).addClass(S),i.children("."+k).each(function(){p(this).children("."+N).children("."+k).last().addClass(T)})):e.find(".layui-tree-iconArrow").addClass(m),r.parents("."+k).eq(0).removeClass(F),r.parent("."+N).remove()),r.remove()):(r.remove(),s.elem.append(s.elemNone))})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+w).each(function(){var i,e=p(this).parents("."+b);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+N)[0]&&i(e.parent("."+N).parent("."+k))})(e.parent("."+k)))}),e.find("."+b).each(function(){var e=p(this).parent("."+k);e.hasClass("layui-tree-searchShow")||e.addClass(m)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+b).each(function(){p(this).parent("."+k).removeClass("layui-tree-searchShow "+m)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+k).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+b).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var d=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=d.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},s="layui-hide",u="layui-btn-disabled",c="layui-none",r="layui-transfer-box",h="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
                                                              ','
                                                              ','","
                                                              ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
                                                                ',"
                                                                "].join("")},p=['
                                                                ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
                                                                ','",'","
                                                                ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
                                                                "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=d.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=d.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=d(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=d(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+r),e.layHeader=e.elem.find("."+h),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
                                                              • ",'',"
                                                              • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(c){var r=this,o=r.config;c=c||{},r.layBox.each(function(e){var t=d(this),a=t.find("."+f),t=t.find("."+h).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=d(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),r.layBtn.eq(e)[l?"removeClass":"addClass"](u),c.stopNone||(i=a.children("li:not(."+s+")").length,r.noneView(a,i?"":o.text.none))}),r.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=d('

                                                                '+(t||"")+"

                                                                ");e.find("."+c)[0]&&e.find("."+c).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){d(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=d.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),c=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+r).find("."+f).append(t.clone()),t.remove(),c.push(a[0].value),i.setValue()):l.each(function(e){d(this).find("."+f).children("li").each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+r).find("."+f).append(e.clone()),e.remove(),c.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+r).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(c),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=d(this).prev(),t=e[0].checked,a=e.parents("."+r).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=d(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent().data("index");a[0].disabled||!1!==("function"==typeof l.dblclick?l.dblclick({elem:t,data:n.getData([a[0].value])[0],index:i}):null)&&n.transfer(i,t)}),n.layBtn.on("click",function(){var e=d(this),t=e.data("index");e.hasClass(u)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=d(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](s),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+s).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,l=layui.lay,t=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,d,e,i)}}),d="carousel",r="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",h="layui-carousel-next",o="layui-carousel-arrow",m="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,t.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(r),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+o)[0]&&e.elem.find("."+o).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
                                                                  ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
                                                                "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+m)[0]&&n.elem.find("."+m).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(h),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(r+" "+c+" "+h+" "+s+" "+u),t.eq(a.index).addClass(r),n.haveSlide=!1},350),n.elemInd.find("li").eq(a.index).addClass(r).siblings().removeClass(r),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,d,"change("+l+")",e))},i.prototype.events=function(){var t,a,o=this,e=o.config;e.elem.data("haveEvents")||(e.elem.on("mouseenter touchstart",function(){"always"!==o.config.autoplay&&clearInterval(o.timer)}).on("mouseleave touchend",function(){"always"!==o.config.autoplay&&o.autoplay()}),t=e.elem,a="updown"===e.anim,l.touchSwipe(t,{onTouchEnd:function(e,i){var n=Date.now()-i.timeStart,i=a?i.distanceY:i.distanceX;(.25t[a?"height":"width"]()/3)&&o.slide(0a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
                                                                  "),n=1;n<=a.length;n++){var o='
                                                                • ";a.half&&parseInt(a.value)!==a.value&&n==Math.ceil(a.value)?i=i+'
                                                                • ":i+=o}i+="
                                                                "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,s=l.next(".layui-rate");s[0]&&s.remove(),e.elemTemp=u(i),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var n=this.config,t=this.elemTemp,i=t.find("i").width(),l=t.children("li");l.each(function(e){var a=e+1,l=u(this);l.on("click",function(e){n.value=a,n.half&&e.pageX-u(this).offset().left<=i/2&&(n.value=n.value-.5),n.text&&t.next("span").text(n.value+"\u661f"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value)}),l.on("mousemove",function(e){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+a+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&e.pageX-u(this).offset().left<=i/2&&l.children("i").addClass(o).removeClass(f)}),l.on("mouseleave",function(){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+Math.floor(n.value)+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&parseInt(n.value)!==n.value&&t.children("li:eq("+Math.floor(n.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})}),r.touchSwipe(t,{onTouchMove:function(e,a){var i;Date.now()-a.timeStart<=200||(a=e.touches[0].pageX,e=t.width()/n.length,a=(a-t.offset().left)/e,(i=(i=(e=a%1)<=.5&&n.half?.5+(a-e):Math.ceil(a))>n.length?n.length:i)<0&&(i=0),l.each(function(e){var a=u(this).children("i"),l=Math.ceil(i)-e==1,t=Math.ceil(i)>e,e=i-e==.5;t?(a.addClass(f).removeClass(v),n.half&&e&&a.addClass(o).removeClass(f)):a.addClass(h).removeClass(s),a.toggleClass("layui-rate-hover",l)}),n.value=i,n.text&&t.next("span").text(n.value+"\u661f"),n.setText&&n.setText(n.value))},onTouchEnd:function(e,a){Date.now()-a.timeStart<=200||(t.find("i").removeClass("layui-rate-hover"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value))}})},a.prototype.events=function(){},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(o){"use strict";var v=layui.$,l=function(o){};l.prototype.load=function(o){var i,n,r,l,c,m,e,a,f,s,u,p,t,d,y=this,h=0,g=v((o=o||{}).elem);if(g[0])return c=v(o.scrollElem||document),m="mb"in o?o.mb:50,e=!("isAuto"in o)||o.isAuto,a=o.end||"\u6ca1\u6709\u66f4\u591a\u4e86",f="top"===(o.direction||"bottom"),y._cleanup(g,c),s=o.scrollElem&&o.scrollElem!==document,p=v('"),g.find(".layui-flow-more")[0]||g[f?"prepend":"append"](p),t=function(o,l){var e=s?c.prop("scrollHeight"):document.documentElement.scrollHeight,t=c.scrollTop();o=v(o),p[f?"after":"before"](o),(l=0==l||null)?p.html(a):p.find("a").html(u),n=l,i=null,r&&r(),f&&(o=s?c.prop("scrollHeight"):document.documentElement.scrollHeight,1===h?c.scrollTop(o):1
                                                                '),"function"==typeof o.done&&o.done(++h,t)})(),p.find("a").on("click.flow",function(){v(this);n||i||d()}),o.isLazyimg&&(r=y.lazyimg({elem:o.elem+" img",scrollElem:o.scrollElem,direction:o.direction})),e&&c.on("scroll.flow",function(){var e=v(this),t=e.scrollTop();l&&clearTimeout(l),!n&&g.width()&&(l=setTimeout(function(){var o=(s?e:v(window)).height(),l=s?e.prop("scrollHeight"):document.documentElement.scrollHeight;(f?t<=m:l-t-o<=m)&&!i&&d()},100))}),y},l.prototype.lazyimg=function(o){var l,m=this,a=0,f=v((o=o||{}).scrollElem||document),s=o.elem||"img",n="top"===(o.direction||"bottom"),u=o.scrollElem&&o.scrollElem!==document,p=function(l,o){var e,t=f.scrollTop(),o=t+o,i=u?l.offset().top-f.offset().top+t:l.offset().top;(n?i+l.height():i)>=t&&i<=o&&l.attr("lay-src")&&(e=l.attr("lay-src"),layui.img(e,function(){var o=m.lazyimg.elem.eq(a);l.attr("src",e).removeAttr("lay-src"),o[0]&&r(o),a++},function(){m.lazyimg.elem.eq(a);l.removeAttr("lay-src")}))},r=function(o,l){var e=(u?l||f:v(window)).height(),t=f.scrollTop(),i=t+e;if(m.lazyimg.elem=v(s),o)p(o,e);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},W=layui.code?layui.code.index+1e4:0,R=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var o,i,t,a,n,d,c,s,r,u,y,p,E,f,h,v,m,L,_,M,C,g={config:l=x.extend(!0,{},T,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,x.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},w=x(l.elem);return 1',l.ln?['
                                                                ',D.digit(t+1)+".","
                                                                "].join(""):"",'
                                                                ',e||" ","
                                                                ",""].join("")})}},a=l.code,n=function(e){return"function"==typeof l.codeParse?l.codeParse(e,l):e},"reloadCode"===e?o.children(".layui-code-wrap").html(w(n(a)).html):(d=layui.code.index=++W,o.attr("lay-code-index",d),(M=A.CDDE_DATA_CLASS in o.data())&&o.attr("class",o.data(A.CDDE_DATA_CLASS)||""),M||o.data(A.CDDE_DATA_CLASS,o.attr("class")),c={copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var t=D.unescape(n(l.code));lay.clipboard.writeText({text:t,done:function(){N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}),"function"==typeof l.onCopy&&l.onCopy(t)}}},function b(){var e=o.parent("."+A.ELEM_PREVIEW),t=e.children("."+A.ELEM_TAB),a=e.children("."+A.ELEM_ITEM+"-preview");return t.remove(),a.remove(),e[0]&&o.unwrap(),b}(),l.preview&&(M="LAY-CODE-DF-"+d,f=l.layout||["code","preview"],s="iframe"===l.preview,E=x('
                                                                '),C=x('
                                                                '),r=x('
                                                                '),_=x('
                                                                '),u=x('
                                                                '),l.id&&E.attr("id",l.id),E.addClass(l.className),C.attr("lay-filter",M),layui.each(f,function(e,t){var a=x('
                                                              • ');0===e&&a.addClass("layui-this"),a.html(l.text[t]),r.append(a)}),x.extend(c,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,t=e.closest("."+A.ELEM_PREVIEW),a="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=x("html,body"),n="layui-scrollbar-hide";e.hasClass(a)?(t.addClass(A.ELEM_FULL),e.removeClass(a).addClass(i),e.attr("title",l[1]),o.addClass(n)):(t.removeClass(A.ELEM_FULL),e.removeClass(i).addClass(a),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){D.openWin({content:n(l.code)})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=x(this),t=e.data("type"),e={elem:e,type:t,options:l,rawCode:l.code,finalCode:D.unescape(n(l.code))};c[t]&&"function"==typeof c[t].event&&c[t].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&l.tools&&(l.tools=[].concat(l.tools,l.addTools)),layui.each(l.tools,function(e,t){var a="object"==typeof t,i=a?t:c[t]||{className:t,title:[t]},l=i.className||i.type,o=i.title||[""],a=a?i.type||l:t;a&&(c[a]||((t={})[a]=i,x.extend(c,t)),u.append(''))}),o.addClass(A.ELEM_ITEM).wrap(E),C.append(r),l.tools&&C.append(u),o.before(C),s&&_.html(''),y=function(e){var t=e.children("iframe")[0];s&&t?t.srcdoc=n(l.code):e.html(l.code),setTimeout(function(){"function"==typeof l.done&&l.done({container:e,options:l,render:function(){I.render(e.find(".layui-form")),S.render()}})},3)},"preview"===f[0]?(_.addClass(A.ELEM_SHOW),o.before(_),y(_)):o.addClass(A.ELEM_SHOW).after(_),l.previewStyle=[l.style,l.previewStyle].join(""),_.attr("style",l.previewStyle),S.on("tab("+M+")",function(e){var t=x(this),a=x(e.elem).closest("."+A.ELEM_PREVIEW).find("."+A.ELEM_ITEM),e=a.eq(e.index);a.removeClass(A.ELEM_SHOW),e.addClass(A.ELEM_SHOW),"preview"===t.attr("lay-id")&&y(e),L()})),p=x(''),o.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),(C=l.theme||l.skin)&&(o.removeClass("layui-code-theme-dark layui-code-theme-light"),o.addClass("layui-code-theme-"+C)),l.highlighter&&o.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),f=w(l.encode?D.escape(n(a)):a),h=f.lines,o.html(p.html(f.html)),l.ln&&o.append('
                                                                '),l.height&&p.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&p.attr("style",function(e,t){return(t||"")+l.codeStyle}),v=[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,t){e.style["padding-left"]=t+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,t){e.style.width=t+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,t){e.style.width=t+"px"}}],m=lay.style({target:o[0],id:"DF-code-"+d,text:x.map(x.map(v,function(e){return e.selector}),function(e,t){return['.layui-code-view[lay-code-index="'+d+'"]',e].join(" ")}).join("")}),L=function b(){var e,i;return l.ln&&(e=Math.floor(h.length/100),i=p.children("."+A.ELEM_LINE).last().children("."+A.ELEM_LINE_NUM).outerWidth(),o.addClass(A.ELEM_LN_MODE),e)&&A.LINE_RAW_WIDTH
                                                              • ')).html(l.title||l.text.code),o.prepend(_)),M=x('
                                                                '),l.copy&&!l.preview&&((C=x(['','',""].join(""))).on("click",function(){c.copy.event()}),M.append(C)),l.langMarker&&M.append(''+l.lang+""),l.about&&M.append(l.about),o.append(M),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+d&&"function"==typeof l.allDone&&l.allDone())),g})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss"); \ No newline at end of file -- Gitee From eba7a748fd444718ad9c44972cbfeaf447550114 Mon Sep 17 00:00:00 2001 From: ChinaMoli Date: Sat, 25 May 2024 13:39:28 +0800 Subject: [PATCH 137/141] =?UTF-8?q?feature:=20=E9=80=89=E9=A1=B9=E5=8D=A1?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=80=9A=E8=BF=87=E9=BC=A0=E6=A0=87=E6=BB=9A?= =?UTF-8?q?=E8=BD=AE=E7=82=B9=E5=87=BB=E5=85=B3=E9=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/pear/module/tabPage.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/component/pear/module/tabPage.js b/component/pear/module/tabPage.js index 44cb83c..ed0eeaf 100644 --- a/component/pear/module/tabPage.js +++ b/component/pear/module/tabPage.js @@ -559,10 +559,19 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { } function closeEvent(option) { - $(".layui-tab[lay-filter='" + option.elem + "']").on("click", ".layui-tab-close", function () { - var layid = $(this).parent().attr("lay-id"); - tabDelete(option.elem, layid, option.closeEvent, option); - }) + $(".layui-tab[lay-filter='" + option.elem + "']") + .on("click", ".layui-tab-close", function () { + var layid = $(this).parent().attr("lay-id"); + tabDelete(option.elem, layid, option.closeEvent, option); + }) + .on("mousedown", ".layui-tab-title li", function (e) { + if ( + e.buttons === 4 // 滚轮点击事件 + && $(this).find("span").is(".able-close") + ) { + tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option); + } + }); } function menuEvent(option, index) { -- Gitee From 6864993fb5656480b7b3c0f977f4c24337821fd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Thu, 20 Jun 2024 16:29:38 +0800 Subject: [PATCH 138/141] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E7=9A=84=E5=A4=9C=E9=97=B4=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/css/admin.dark.css | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 3898bf2..2e55006 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -148,6 +148,16 @@ border-color: rgba(0, 0, 0, .30) !important; } +.pear-admin-dark .menu-search-list li{ + background-color:#141414; + box-shadow: 0 3px 4px rgba(0, 0, 0, .6) !important; + color: #ffffff; +} + +.pear-admin-dark .menu-search-list li:hover{ + background-color:var(--global-primary-color) !important; +} + /** message center */ .pear-admin-dark .pear-message-center .layui-tab-title, -- Gitee From 061327f8a61db75e718b20f9bb8105c80091a61f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Thu, 20 Jun 2024 16:40:10 +0800 Subject: [PATCH 139/141] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20page=20=E7=9A=84?= =?UTF-8?q?=E5=A4=9C=E9=97=B4=E4=B8=BB=E9=A2=98=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/css/admin.dark.css | 18 +++++++++++++++--- component/pear/module/tabPage.js | 6 ++---- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/admin/css/admin.dark.css b/admin/css/admin.dark.css index 2e55006..cf65966 100644 --- a/admin/css/admin.dark.css +++ b/admin/css/admin.dark.css @@ -235,19 +235,31 @@ border-color: rgba(0, 0, 0, .40) !important; } -.pear-admin-dark .layui-laypage select, -.pear-admin-dark .layui-laypage button { +.pear-admin-dark .layui-table-tool-self > div { border-color: rgba(0, 0, 0, .40) !important; color: #ffffff !important; background-color: transparent; } -.pear-admin-dark .layui-table-tool-self > div { +.pear-admin-dark .layui-laypage select, +.pear-admin-dark .layui-laypage button { border-color: rgba(0, 0, 0, .40) !important; color: #ffffff !important; background-color: transparent; } +.pear-admin-dark .layui-laypage a, +.pear-admin-dark .layui-laypage-spr, +.pear-admin-dark .layui-laypage-skip, +.pear-admin-dark .layui-laypage-count { + color: #ffffff; +} + +.pear-admin-dark .layui-laypage-limits option { + background-color: #141414 !important; + color: #ffffff; +} + /** panel */ .pear-admin-dark .layui-panel { background-color: #1d1e1f !important; diff --git a/component/pear/module/tabPage.js b/component/pear/module/tabPage.js index ed0eeaf..579588c 100644 --- a/component/pear/module/tabPage.js +++ b/component/pear/module/tabPage.js @@ -565,10 +565,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { tabDelete(option.elem, layid, option.closeEvent, option); }) .on("mousedown", ".layui-tab-title li", function (e) { - if ( - e.buttons === 4 // 滚轮点击事件 - && $(this).find("span").is(".able-close") - ) { + if (e.buttons === 4 && $(this).find("span").is(".able-close")) { tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option); } }); @@ -642,6 +639,7 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) { var touch = e.originalEvent.targetTouches[0]; touchX = touch.pageX }) + $bodyTab.on("touchmove", function (e) { var event = e.originalEvent; if (event.targetTouches.length > 1) return; -- Gitee From 19082d204f57671594385717c7c04a08c354d448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Thu, 20 Jun 2024 16:43:35 +0800 Subject: [PATCH 140/141] update --- admin/css/reset.css | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/admin/css/reset.css b/admin/css/reset.css index f98f55f..3ad3def 100644 --- a/admin/css/reset.css +++ b/admin/css/reset.css @@ -72,84 +72,67 @@ background-color: #f8f8f8; } -/* input框选中颜色 */ .layui-input:focus, .layui-textarea:focus { border-color: var(--global-primary-color) !important; - /* 这种写法暂时不支持火狐,找不到更好的写法了 */ box-shadow: 0 0 0 3px rgb(from var(--global-primary-color) r g b / 8%); } -/* select框选项颜色 */ .layui-form-select dl dd.layui-this { color: var(--global-primary-color); } -/* 数字输入框后面的上下角标 */ .layui-input-wrap .layui-input:focus+.layui-input-split { border-color: var(--global-primary-color) } -/* 标签框文字 */ .layui-form-checked:hover>div, .layui-form-checked>div { background-color: var(--global-primary-color); } -/* 标签框选中 */ .layui-form-checked:hover>i, .layui-form-checked>i { color: var(--global-primary-color); } -/* laypage按钮选中颜色 */ .layui-laypage .layui-laypage-curr .layui-laypage-em { background-color: var(--global-primary-color); } -/* laypage第几页input选中颜色 */ .layui-laypage input:active { border-color: var(--global-primary-color); } -/* laypage按钮hover颜色 */ .layui-laypage a:hover { color: var(--global-primary-color); } -/* laypage每页条数select框选中颜色 */ .layui-laypage input:focus, .layui-laypage select:focus { border-color: var(--global-primary-color) !important; } -/* laydate被选中的元素颜色 */ .layui-laydate .layui-this, .layui-laydate .layui-this>div { background-color: var(--global-primary-color) !important; } -/* laydate范围按钮hover时的颜色 */ .layui-laydate-header i:hover, .layui-laydate-header span:hover { color: var(--global-primary-color); } -/* laydate按钮hover时的颜色 */ .layui-laydate-footer span:hover { color: var(--global-primary-color); } -/* 标签页选中颜色 */ .layui-tab-brief>.layui-tab-title .layui-this { color: var(--global-primary-color); } -/* 标签页选中下划线颜色 */ .layui-tab-brief>.layui-tab-more li.layui-this:after, .layui-tab-brief>.layui-tab-title .layui-this:after { border-bottom: 2px solid var(--global-primary-color); } -/* 进度条颜色 */ .layui-progress-bar { background-color: var(--global-primary-color); } -/* tree选择框hover颜色 */ .layui-form-checkbox[lay-skin=primary]:hover>i { border-color: var(--global-primary-color); } \ No newline at end of file -- Gitee From f4502c6a04df3ed4fe617ce2ff64ea093f4bed2c Mon Sep 17 00:00:00 2001 From: ChinaMoli Date: Sat, 3 Aug 2024 17:03:32 +0800 Subject: [PATCH 141/141] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20menu.async=20?= =?UTF-8?q?=E5=A7=8B=E7=BB=88=E4=B8=BA=20true?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/pear/module/menu.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component/pear/module/menu.js b/component/pear/module/menu.js index b63c6b6..bde57b7 100644 --- a/component/pear/module/menu.js +++ b/component/pear/module/menu.js @@ -13,7 +13,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var option = { elem: opt.elem, - async: opt.async || true, + async: typeof opt.async === 'undefined' ? true : opt.async, parseData: opt.parseData, url: opt.url, method: opt.method ? opt.method : "GET", -- Gitee

                                                                wS`WIK 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 z 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 z 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