diff --git a/.gitee/ISSUE_TEMPLATE.zh-CN.md b/.gitee/ISSUE_TEMPLATE.zh-CN.md index 7316347f1fb5a96c5760d17780c458fc10a60cf4..47595f9b409596db833210170b53a7f1948b37c6 100644 --- a/.gitee/ISSUE_TEMPLATE.zh-CN.md +++ b/.gitee/ISSUE_TEMPLATE.zh-CN.md @@ -14,4 +14,4 @@ ## 跟进 -后续编辑,附上对应的 Pull Request 地址,可以用 `- [ ] some task` 的方式。 +后续编辑,附上对应的 Pull Request 地址,可以用 `- [ ] some task` 的方式。 \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 7316347f1fb5a96c5760d17780c458fc10a60cf4..47595f9b409596db833210170b53a7f1948b37c6 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -14,4 +14,4 @@ ## 跟进 -后续编辑,附上对应的 Pull Request 地址,可以用 `- [ ] some task` 的方式。 +后续编辑,附上对应的 Pull Request 地址,可以用 `- [ ] some task` 的方式。 \ No newline at end of file diff --git a/LICENSE b/LICENSE index 2a0e9733d8666c16501816ad0fa7150d9d79b313..4a61ec0295ceb96c0d483ec41f13347ee34b2c35 100644 --- a/LICENSE +++ b/LICENSE @@ -18,4 +18,4 @@ 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. +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 2734d8299fcba95d22d771fd11bd455a2903a482..728aa3fe2ae3c84554fc87bec7658384b937ccfe 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ -

@@ -26,11 +25,9 @@ Layui Version

-
-
- +

@@ -38,9 +35,7 @@

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

+### 新特性 + +- [重构] frame.js 组件,重命名为 page.js, 移除 iframe 嵌套。 +- [重构] tab.js 组件,重命名为 tabPage.js, 移除 iframe 嵌套。 +- [新增] admin.js 模块 setConfigurationProvider 方法,用于自定义 configuration 来源。 +- [优化] admin.js 模块 logout 方法,返回值由 boolean 调整为 Promise 类型。 +- [新增] 夜间模式适配,目前已完成整体框架兼容,layui 待完成。 +- [新增] menuSearch.js 模块,原有的菜单搜索功能。 + ### Branch 说明

@@ -75,8 +79,6 @@ Pear Admin Layui │ ├─component 组件 │ │ -│ ├─code 设计器 -│ │ │ ├─layui 核心框架 │ │ │ └─pear 扩展组件 @@ -89,17 +91,17 @@ Pear Admin Layui │ ├─view 视图 │ │ -│ ├─console 首页 +│ ├─analysis 分析页 │ │ -│ ├─document 文档 +│ ├─component 组件案例 │ │ -│ ├─echarts 图表 +│ ├─console 控制台 │ │ -│ ├─error 错误页 +│ ├─exception 错误页 │ │ -│ ├─result 结果页 +│ ├─listing 列表页 │ │ -│ └─system 系统管理 +│ └─result 结果页 │ ├─index.html 入口 │ diff --git a/admin/css/admin.css b/admin/css/admin.css index 60703fed157680f6fb3bfe9240eb26dde29da5be..a96ce163111abc867c276e2588a715d233427efe 100644 --- a/admin/css/admin.css +++ b/admin/css/admin.css @@ -4,16 +4,16 @@ 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; } .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; -} - -.pear-admin .layui-header.dark-theme .layui-layout-control .layui-this *{ - background-color: rgba(0,0,0,.1)!important; + height: 100% !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 { @@ -79,7 +56,6 @@ body, left: 230px; width: calc(100% - 230px); background-color: white; - border-bottom: 1px solid whitesmoke; } .pear-admin .layui-layout-control { @@ -92,12 +68,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 { @@ -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; @@ -143,9 +120,16 @@ body, } .pear-admin .layui-body { - left: 230px; bottom: 0px; padding-bottom: 0px; + background-color: whitesmoke; + height: calc(100% - 60px); + overflow-y: auto; + left: 230px; +} + +.pear-admin .layui-body>div { + height: 100%; } .pear-admin .layui-layout-left { @@ -154,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; @@ -172,6 +156,64 @@ 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-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; @@ -206,18 +248,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 { @@ -229,18 +267,18 @@ body, } .pear-collapsed-pe { - display: none; - width: 50px; - position: absolute; - z-index: 400000; - bottom: 30px; right: 30px; - background-color: #5FB878 !important; - height: 50px; - line-height: 50px; + bottom: 30px; + z-index: 400000; + position: absolute; + background-color: var(--global-primary-color) !important; + 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 { @@ -278,10 +316,6 @@ body, padding-right: 10px; } - .pear-mini .bottom-nav { - display: none; - } - .pear-mini .layui-side-scroll { height: calc(100% - 62px); } @@ -363,8 +397,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; } @@ -390,8 +424,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 { @@ -445,9 +479,9 @@ body, width: 100%; height: 100%; padding: 4px; - top: -5px; - left: -5px; - border: #5FB878 2px solid; + top: -6px; + left: -6px; + border: var(--global-primary-color) 2px solid; opacity: 1; border-radius: 4px; } @@ -481,77 +515,133 @@ 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: 6px; + 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: 12px; + float: left; } .message .layui-tab-title li:not(:last-child) { border-right: 1px solid #eee; } -/* 搜索面板 */ -.menu-search-content .layui-input { - padding-left: 30px; +/** 首屏加载 */ +.loader-wrapper { + position: fixed; + width: 100%; + height: 100%; + background-color: whitesmoke; + z-index: 9999999; } -.menu-search-content { - display: flex; - flex-wrap: wrap; - justify-content: center; +.loader { + width: 50px; + height: 50px; + margin: 30px auto 40px; + margin-top: 20%; + position: relative; + z-index: 999999; + background-color: whitesmoke; } -.menu-search-input-wrapper { - width: 100%; - padding: 15px 15px; +.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; } -.menu-search-no-data { - display: flex; - justify-content: center; - width: 100%; - height: 122px; - align-items: center; +.loader:after { + content: ""; + width: 50px; + height: 50px; + border-radius: 10px; + background-color: var(--global-primary-color); + position: absolute; + top: 0; + left: 0; + animation: loading .5s linear infinite; } -.menu-search-list { - width: 100%; - padding: 5px 15px; -} +@-webkit-keyframes loading { + 17% { + border-bottom-right-radius: 3px; + } -.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; + 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); + } } -.menu-search-list li:hover { - background-color: #5FB878; - color: white; +@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); + } } -.menu-search-list li.this { - background-color: #5FB878; - color: white; +@-webkit-keyframes shadow { + + 0%, + 100% { + transform: scale(1, 1); + } + + 50% { + transform: scale(1.2, 1); + } } -/* 搜索面板结束 */ \ No newline at end of file +@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 new file mode 100644 index 0000000000000000000000000000000000000000..cf659667c2df28f79c4ba92d52434c4b1d57231d --- /dev/null +++ b/admin/css/admin.dark.css @@ -0,0 +1,359 @@ +/** loader */ +.pear-admin-dark .loader-wrapper, +.pear-admin-dark .loader-wrapper .loader { + 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 { + background-color: #141414 !important; + 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; +} + +.pear-admin-dark .layui-header .layui-nav * { + 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; +} + +.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; +} + +.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; +} + +.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, +.pear-admin-dark .layui-body .pear-tab-page-loading, +.pear-admin-dark .layui-body .pear-page-loading { + 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; +} + +.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; +} + +.pear-admin-dark .layui-body .layui-tab .layui-tab-close:hover { + border-radius: 50%; + background-color: #0a0a0a !important; +} + +.pear-admin-dark .pear-tab-page-menu ul li { + 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, +.pear-admin-dark .color-title { + color: #ffffff; +} + +/** search */ +.pear-admin-dark .menu-search-no-data { + 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; +} + +.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, +.pear-admin-dark .pear-message-center .message-item { + border-color: rgba(0, 0, 0, .30) !important; + color: #ffffff; +} + +/** button */ +.pear-admin-dark .layui-btn { + color: #ffffff; + border-color: #4C4D4F; +} + +/** 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: #ffffff; +} + +/** card */ +.pear-admin-dark .layui-card { + background-color: #1d1e1f !important; +} + +.pear-admin-dark .layui-card .layui-card-header { + border-bottom-color: #414243; + color: #ffffff; +} + +.pear-admin-dark .layui-card .layui-card-body { + color: #ffffff; +} + +/** input */ +.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); +} + +/** 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-tool, +.pear-admin-dark .layui-table-header { + border-color: rgba(0, 0, 0, .40) !important; +} + +.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-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; + 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: #ffffff; + background-color: #1d1e1f !important; +} + +/** timeline */ +.pear-admin-dark .layui-timeline-axis { + background-color: rgb(29, 30, 31) !important; +} + +.pear-admin-dark .layui-timeline-item:before { + background-color: #414243 !important; +} + + +/** toast */ +.pear-admin-dark .iziToast { + 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; +} + +/** analysis */ +.pear-admin-dark .top-panel-number { + color: #ffffff !important; + border-color: #414243; +} + + +.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); + color: #E5EAF3; +} + +.pear-admin-dark .pear-result .title{ + color: #ffffff; +} + +.pear-admin-dark .pear-result .description{ + color: #8D9095; +} + +/** 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; +} + +/** profile */ +.pear-admin-dark .user-name, +.pear-admin-dark .user-desc { + color: whitesmoke; +} + +.pear-admin-dark .user-desc { + border-top: 1px solid #141414; +} \ No newline at end of file diff --git a/admin/css/loader.css b/admin/css/loader.css deleted file mode 100644 index 64ee9404ae83edf0056fd1796fc59b285bb652c4..0000000000000000000000000000000000000000 --- 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/admin/css/other/console1.css b/admin/css/other/analysis.css similarity index 36% rename from admin/css/other/console1.css rename to admin/css/other/analysis.css index e175df84c47abe09f33b48fdab50c258d07cb4cf..3525a21a63b6904d2ea66a9a591306edf1af5d7f 100644 --- a/admin/css/other/console1.css +++ b/admin/css/other/analysis.css @@ -20,105 +20,35 @@ font-size: 12px; } -.pear-container { - background-color: whitesmoke; - margin: 10px; -} - -.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; @@ -126,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/admin/css/other/console2.css b/admin/css/other/console.css similarity index 44% rename from admin/css/other/console2.css rename to admin/css/other/console.css index e29ad4113c4e40baf36438ee6fc5fb3e70b2922c..af9930ba4d959a0cf2143f0a89d385faac0721c3 100644 --- a/admin/css/other/console2.css +++ b/admin/css/other/console.css @@ -1,10 +1,6 @@ -.pear-container { - background-color: whitesmoke; - margin: 10px; -} -.pear-card { - width: 100%; +.shortcut-menu { + width: 100%; height: 66px; background-color: #F8F8F8; display: inline-block; @@ -13,109 +9,73 @@ 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 { +.shortcut-menu i { font-size: 30px; height: 66px; line-height: 66px; } -.layui-col-md3 { - text-align: center; +.shortcut-menu:hover { + box-shadow: 2px 0 8px 0 lightgray !important; } -.pear-card-title { - margin-top: 3px; +.shortcut-menu-label { + width: 100%; + display: inline-block; + text-align: center; } -.person img { - width: 90px; +.deputy { + width: 100%; height: 90px; - border-radius: 4px; - margin-top: 8px; - margin-left: 8px; + background-color: #F8F8F8; + display: inline-block; + border-radius: 5px; + text-align: center; + margin-bottom: 3px; } -.pear-card2 .count { - color: #51A351; - font-size: 30px; - margin-top: 12px; +.deputy:hover { + box-shadow: 2px 0 8px 0 lightgray !important; } -.pear-card2 .title { +.deputy .deputy-label { color: gray; - font-size: 14px; margin-top: 14px; + font-size: 14px; +} + +.deputy .deputy-count { + margin-top: 12px; + color: var(--global-primary-color); + font-size: 30px; } -.pear-card-status { +.message-board { padding: 0 10px 10px; } -.pear-card-status li { +.message-board 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 { +.message-board li p { padding-bottom: 10px; padding-top: 3px; } -.pear-card-status li>span { +.message-board li>span { color: #999; height: 24px; line-height: 24px; } -.pear-reply { +.message-board .message-board-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/department.css b/admin/css/other/department.css deleted file mode 100644 index d6898b7d2ef797cd9c989fc7696ae6f68bcb0c00..0000000000000000000000000000000000000000 --- 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 37d4c0e667fa8e89d426f1a527a80613c86786fb..0000000000000000000000000000000000000000 --- 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/exception.css b/admin/css/other/exception.css new file mode 100644 index 0000000000000000000000000000000000000000..e7f2027cfeeb42dd728f1397552c2c1e4cb480b6 --- /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/other/icon.css b/admin/css/other/icon.css deleted file mode 100644 index cd1a6ce30a065a044d6c0e81da136582c72d08a1..0000000000000000000000000000000000000000 --- 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/other/login.css b/admin/css/other/login.css index d4b6304e75a43a4160db5f9cd185daf63bc6b554..853e09221e47f8f024345c8ee495fb5e77af3490 100644 --- a/admin/css/other/login.css +++ b/admin/css/other/login.css @@ -1,100 +1,218 @@ -.layui-form { - width: 320px !important; - margin: auto !important; - margin-top: 160px !important; +html, +body{ + height: 100%; } -.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; +.login-page { + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + display: flex; + justify-content: center; + align-items: center; } -.layui-form-checked[lay-skin=primary] i { - border-color: #5FB878 !important; - background-color: #5FB878 !important; - color: #fff !important; +.layui-row { + width: 1000px; + height: 600px; + box-shadow: 2px 0 6px rgba(0, 21, 41, .20); + border: 3px solid whitesmoke; + border-radius: 15px; } -.layui-tab-content { - margin-top: 15px !important; - padding-left: 0px !important; - padding-right: 0px !important; +.login-bg { + height: 100%; + box-sizing: border-box; + background-color: rgb(250, 250, 250); + display: flex; + align-items: center; + justify-content: center; + border-bottom-left-radius: 15px; + border-top-left-radius: 15px; } -.layui-form-item { - margin-top: 20px !important; +.login-bg-img { + width: 90%; + display: inline-block; + margin: 0 auto; } -.layui-input { - height: 44px !important; - line-height: 44px !important; - padding-left: 15px !important; - border-radius: 3px !important; +.login-form { + height: 100%; + box-sizing: border-box; + display: flex; + align-items: center; + justify-content: center; + background-color: #fff; + border-bottom-right-radius: 15px; + border-top-right-radius: 15px; } -.layui-input:focus { - box-shadow: 0px 0px 2px 1px #5FB878 !important; +.form-center { + background: #fff; + box-sizing: border-box; + flex-flow: row wrap; + width: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; } -.layui-form-danger:focus{ - box-shadow: 0px 0px 2px 1px #f56c6c !important; +.form-center-box { + width: 360px; } -.logo { - width: 60px !important; - margin-top: 10px !important; - margin-bottom: 10px !important; - margin-left: 20px !important; +.top-log-title { + align-items: center; + justify-content: center; + display: flex; + margin-bottom: 30px; } -.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; +.top-log { + width: 50px; + border-radius: 12px; + margin-right: 20px; + height: 50px; } -.desc { - width: 100% !important; - text-align: center !important; - color: gray !important; - height: 60px !important; - line-height: 60px !important; +.top-log-title span { + font-size: 32px; + font-weight: 700; + color: var(--global-primary-color); } -body { - background-repeat:no-repeat; - background-color: whitesmoke; - background-size: 100%; - height: 100%; - } +.top-desc { + font-size: 14px; + color: #808695; + +} + +.tab-log-method { + width: 100%; + display: flex; + padding: 20px 0px; +} + +.tab-log-method-item { + flex: 1; + box-sizing: border-box; + padding: 5px 50px; + text-align: right; + color: #1f2225; + font-size: 16px; +} -.code { - float: left; - margin-right: 13px; - margin: 0px !important; - border: #e6e6e6 1px solid; - display: inline-block!important; +.tab-log-method-item:nth-child(2) { + text-align: left; } -.codeImage { - float: right; - height: 42px; - border: #e6e6e6 1px solid; +.tab-log-method-item>span { + display: inline-block; + width: 40px; + text-align: center; + height: 30px; + border-bottom: 2px solid transparent; +} + +.tab-log-method-item>span:hover { cursor: pointer; + color: #16baaa; + border-bottom: 2px solid #16baaa; } -@media (max-width:768px){ - body{ - background-position:center; +.tab-log-verification { + width: 100%; + display: flex; +} + +.verification-text { + flex: 2; + box-sizing: border-box; + margin-right: 20px; +} + +.verification-img { + flex: 1; + box-sizing: border-box; + border: 1px solid #eeeeee; + border-radius: 4px; + height: 40px; + overflow: hidden; + text-align: center; +} + +.remember-passsword { + margin: 20px 0; + width: 100%; + display: flex; + box-sizing: border-box; +} + +.remember-cehcked { + flex: 1; + text-align: left; +} + +.greenText { + color: #16baaa; + cursor: pointer; +} + + +.login-btn { + width: 100%; + box-sizing: border-box; +} + +.login-btn>.layui-btn { + width: 100%; +} + +.other-login { + width: 100%; + box-sizing: border-box; + margin: 20px 0 0; + text-align: left; + display: flex; +} + +.other-login-methods { + display: inline-block; + flex: 1; +} + +.layui-input { + border-radius: 4px; + line-height: 40px; + height: 40px; +} + +.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/admin/css/other/person.css b/admin/css/other/person.css deleted file mode 100644 index 53c787a7fe42287e3fa0c6f914f768a5cc8c32b2..0000000000000000000000000000000000000000 --- 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/other/profile.css b/admin/css/other/profile.css new file mode 100644 index 0000000000000000000000000000000000000000..4c779ee44d8963357b2fc438ea65a5207b277ad0 --- /dev/null +++ b/admin/css/other/profile.css @@ -0,0 +1,77 @@ +.text-center { + text-align: center; +} + +.user-info { + width: 110px; + height: 110px; + line-height: 110px; + position: relative; + display: inline-block; + border-radius: 50%; + overflow: hidden; + cursor: pointer; + margin: 0 auto; +} + +.user-name { + padding-top: 20px; + font-size: 20px !important; +} + +.user-home { + padding-top: 8px; + margin-top: 10px; + font-size: 13.5px; +} + +.user-desc { + height: 45px; + border-top: 1px whitesmoke solid; + text-align: center; + line-height: 45px; + font-size: 13.5px; +} + +.blog-title { + padding-left: 13.5px; +} + +.blog-content { + padding-left: 13px; + font-size: 13px; + color: dimgray; +} + +.layui-tab-title { + border-bottom: none; +} + +.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/css/other/result.css b/admin/css/other/result.css index d5ccaa3b0d8b8beccbbfe7f532219a1567bd792a..393c464e564a8e38ab6ac592ea4fffde7093a0aa 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/reset.css b/admin/css/reset.css new file mode 100644 index 0000000000000000000000000000000000000000..3ad3defdadf0870e23d8452b7fb685f9fa413797 --- /dev/null +++ b/admin/css/reset.css @@ -0,0 +1,138 @@ +.layui-dropdown { + border-radius: var(--global-border-radius); +} + +.layui-input { + border-radius: var(--global-border-radius); +} + +.layui-form-onswitch { + background-color: var(--global-primary-color) !important; +} + +.layui-form-onswitch { + border-color: var(--global-primary-color); +} + +.layui-form-radio:hover>*, +.layui-form-radioed>i, +.layui-form-radioed { + color: var(--global-primary-color) !important; +} + +.layui-form-checked[lay-skin=primary]>i { + border-color: var(--global-primary-color) !important; + background-color: var(--global-primary-color); + color: #fff; +} + +.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate, +.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate:hover { + border-color: var(--global-primary-color); +} + +.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate:before { + background-color: var(--global-primary-color); +} + +.layui-btn { + background-color: var(--global-primary-color); +} + +.layui-btn.layui-btn-primary:hover { + border: 1px solid 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 !important; + color: #5f5f5f !important; +} + +.layui-card { + border-radius: var(--global-border-radius); +} + +.layui-timeline-axis { + color: var(--global-primary-color); +} + +.layui-table-checked { + background-color: #f8f8f8; +} + +.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%); +} + +.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); +} + +.layui-laypage .layui-laypage-curr .layui-laypage-em { + background-color: var(--global-primary-color); +} + +.layui-laypage input:active { + border-color: var(--global-primary-color); +} + +.layui-laypage a:hover { + color: var(--global-primary-color); +} + +.layui-laypage input:focus, .layui-laypage select:focus { + border-color: var(--global-primary-color) !important; +} + +.layui-laydate .layui-this, .layui-laydate .layui-this>div { + background-color: var(--global-primary-color) !important; +} + +.layui-laydate-header i:hover, .layui-laydate-header span:hover { + color: var(--global-primary-color); +} + +.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); +} + +.layui-form-checkbox[lay-skin=primary]:hover>i { + border-color: var(--global-primary-color); +} \ No newline at end of file diff --git a/admin/css/variables.css b/admin/css/variables.css new file mode 100644 index 0000000000000000000000000000000000000000..a0f467e43a018e41a9b15c320c238a1ec930c3b6 --- /dev/null +++ b/admin/css/variables.css @@ -0,0 +1,9 @@ +:root { + + /* 主题颜色 */ + --global-primary-color: #16baaa; + + /** 圆角度数 */ + --global-border-radius: 4px; + +} \ No newline at end of file diff --git a/admin/data/card.json b/admin/data/card.json deleted file mode 100644 index e2385906a4daaff229dc8c4929aed6255e80a2e6..0000000000000000000000000000000000000000 --- 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 7993102a481b38429a69b327080804a951088d66..0000000000000000000000000000000000000000 --- 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 86e8923c16ab2ca5e74aa798bf0b506f800c315c..0000000000000000000000000000000000000000 --- 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 db7ae1186b3d62c6b8782dab7aa4ea3740c90c5a..0000000000000000000000000000000000000000 --- 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 3b9ab26e41730c8c8c0bfd5ed813691ccfbd5b90..0000000000000000000000000000000000000000 --- 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 376d9b0db8cb164973d530eda879fc9ed7d6d2ed..0000000000000000000000000000000000000000 --- 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 eb39552f919a817ff18d2d207914bad9cce7e066..0000000000000000000000000000000000000000 --- 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 3a20b6e414bc033779d9682016af1608292b8275..562793ec28dad765e1dcc37427f668582a26051f 100644 --- a/admin/data/menu.json +++ b/admin/data/menu.json @@ -1,271 +1,83 @@ -[{ +[ + { "id": 1, "title": "工作空间", "icon": "layui-icon layui-icon-console", "type": 0, - "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.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" - }] + "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/index.html" + } + ] }, { - "id": "component", - "title": "常用组件", - "icon": "layui-icon layui-icon-component", + "id": 9, + "title": "列表页面", + "icon": "layui-icon layui-icon-auz", "type": 0, - "href": "", - "children": [{ - "id": 201, - "title": "基础组件", - "icon": "layui-icon layui-icon-console", - "type": 0, - "children": [ + "children": [ { - "id": 2011, - "title": "功能按钮", + "id": 91, + "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", + "openType": "_component", + "href": "view/listing/table.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/document/loading.html" - }, { - "id": 2023, - "title": "弹层组件", - "icon": "layui-icon layui-icon-face-cry", + "openType": "_component", + "href": "view/component/admin.html" + }, + { + "id": 23, + "title": "高级栅格", + "icon": "layui-icon layui-icon-face-smile", "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", + "openType": "_component", + "href": "view/component/grid.html" + }, + { + "id": 24, + "title": "消息提示", + "icon": "layui-icon layui-icon-face-smile", "type": 1, - "openType": "_iframe", - "href": "view/document/tab.html" - },{ - "id": 60132, - "title": "数据菜单", - "icon": "layui-icon layui-icon-face-cry", + "openType": "_component", + "href": "view/component/toast.html" + }, + { + "id": 25, + "title": "路由过渡", + "icon": "layui-icon layui-icon-face-smile", "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" - } - ] - }] + "openType": "_component", + "href": "view/component/nprogress.html" + } + ] }, { "id": "result", @@ -273,172 +85,229 @@ "icon": "layui-icon layui-icon-auz", "type": 0, "href": "", - "children": [{ + "children": [ + { "id": "success", - "title": "成功", + "title": "成功页面", "icon": "layui-icon layui-icon-face-smile", "type": 1, - "openType": "_iframe", + "openType": "_component", "href": "view/result/success.html" }, { "id": "failure", - "title": "失败", + "title": "失败页面", "icon": "layui-icon layui-icon-face-cry", "type": 1, - "openType": "_iframe", + "openType": "_component", "href": "view/result/error.html" } ] }, { - "id": "error", - "title": "错误页面", - "icon": "layui-icon layui-icon-face-cry", + "id": "exception", + "title": "异常页面", + "icon": "layui-icon layui-icon-auz", "type": 0, "href": "", - "children": [{ - "id": 403, + "children": [ + { + "id": "403", "title": "403", "icon": "layui-icon layui-icon-face-smile", "type": 1, - "openType": "_iframe", - "href": "view/error/403.html" + "openType": "_component", + "href": "view/exception/403.html" }, { - "id": 404, + "id": "404", "title": "404", "icon": "layui-icon layui-icon-face-cry", "type": 1, - "openType": "_iframe", - "href": "view/error/404.html" + "openType": "_component", + "href": "view/exception/404.html" }, - { - "id": 500, + "id": "500", "title": "500", "icon": "layui-icon layui-icon-face-cry", "type": 1, - "openType": "_iframe", - "href": "view/error/500.html" + "openType": "_component", + "href": "view/exception/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": "用户管理", - "icon": "layui-icon layui-icon-face-smile", - "type": 1, - "openType": "_iframe", - "href": "view/system/user.html" - }, + "children": [ { - "id": 602, - "title": "角色管理", - "icon": "layui-icon layui-icon-face-cry", + "id": "a", + "title": "普通路由", + "icon": "layui-icon layui-icon-face-smile", "type": 1, - "openType": "_iframe", - "href": "view/system/role.html" + "openType": "_component", + "href": "view/result/success.html" }, - { - "id": 603, - "title": "权限管理", + "id": "b", + "title": "嵌套网页", "icon": "layui-icon layui-icon-face-cry", "type": 1, "openType": "_iframe", - "href": "view/system/power.html" + "href": "http://www.layui-vue.com" }, - { - "id": 604, - "title": "部门管理", + "id": "c", + "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": "d", + "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", + "id": "deep", + "title": "深度测试", + "icon": "layui-icon layui-icon-auz", "type": 0, "href": "", - "children": [{ - "id": 801, - "title": "表单构建", - "icon": "layui-icon layui-icon-util", - "type": 1, - "openType": "_iframe", - "href": "component/code/index.html" - }] + "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/admin/data/message.json b/admin/data/message.json index 7cf9263327e3f3e96b62564a0ca35d12a573ab4b..b95a924f37b6136c7c9482607c9845bb9a31b1c7 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": [] - } -] +{ + "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/admin/data/operateLog.json b/admin/data/operateLog.json deleted file mode 100644 index 79e5454bc6e3dbcd6f8a0edeecfc3b13f5de55f7..0000000000000000000000000000000000000000 --- 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 ff1626b0e265420cc84130fa9833bdcc37e677b8..0000000000000000000000000000000000000000 --- 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 262594fe0af1cd4c205e45c5b715f4140c3994f2..0000000000000000000000000000000000000000 --- 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 db7ace11b5044d64cf713cd785ccc1b75cf0eb12..0000000000000000000000000000000000000000 --- 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 42bd064722599de415f6c9dc21e37453bdd632cf..0000000000000000000000000000000000000000 --- 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/table.json b/admin/data/table.json index 8f148860d6e8922cc8278016402ec459e2a6c02b..c0249f0cdd8cf4d78eab02d84eb5f8a0fb073440 100644 --- a/admin/data/table.json +++ b/admin/data/table.json @@ -1,132 +1,303 @@ { - "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 - }] -} + "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/admin/data/user.json b/admin/data/user.json deleted file mode 100644 index 2e927acc47a225e63b440feaafa34a0595dc8ee2..0000000000000000000000000000000000000000 --- 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/403.svg b/admin/images/403.svg deleted file mode 100644 index 610f136fd004f889d25152c3918754988c85f8ca..0000000000000000000000000000000000000000 --- 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 5531d05cffbddd0980b51d1d378671b5520530c7..0000000000000000000000000000000000000000 --- 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 de723b1e321432ebe63004f2bc85d3ef6d17132a..0000000000000000000000000000000000000000 --- 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/admin/images/background.svg b/admin/images/background.svg index 2f4b63b9996b80d9a60d8ab0eb93de0344ad0c52..1b153e0df5adb683065b92f39a78f1ccc9de7f94 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/banner.png b/admin/images/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..a509ca6a55ac9b541d5f43d2a95117487fa5442e Binary files /dev/null and b/admin/images/banner.png differ diff --git a/admin/images/act.jpg b/admin/images/blog.jpg similarity index 100% rename from admin/images/act.jpg rename to admin/images/blog.jpg diff --git a/admin/images/document.jpg b/admin/images/document.jpg deleted file mode 100644 index 788373eef93aed359f50a335e532b0bee12d5eaf..0000000000000000000000000000000000000000 Binary files a/admin/images/document.jpg and /dev/null differ diff --git a/admin/images/show.png b/admin/images/show.png deleted file mode 100644 index 3d381fe7dbebf6f62f1b65c8981d6798877bbe17..0000000000000000000000000000000000000000 Binary files a/admin/images/show.png and /dev/null differ diff --git a/component/code/css/style.css b/component/code/css/style.css deleted file mode 100644 index 5d460a5454845a1adbb1d442d051df37d2ce805f..0000000000000000000000000000000000000000 --- 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 ba02488d8aa7035358ac4376a81f7b836980ef08..0000000000000000000000000000000000000000 --- a/component/code/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - layui表单生成器 - - - - -

-
-
- - - - -
-
-
-
- view -
-
-
-
-
-
-
-
-
-
html
-
- -
-
-
-
code
-
- -
-
-
-
-
- - - - - diff --git a/component/layui/css/layui.css b/component/layui/css/layui.css index 20e518c265e5e185f77df663156b8eac068a4648..4c1106a0a2a85c80e55665f30c58397632ac1303 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;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;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.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-wrap .layui-input-suffix.layui-input-split{border-width:0;border-left-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-input-wrap .layui-input[type=number].layui-input-number-out-of-range{color:#ff5722}.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-form-checkbox[lay-skin=none] *,.layui-form-radio[lay-skin=none] *{box-sizing:border-box}.layui-form-checkbox[lay-skin=none],.layui-form-radio[lay-skin=none]{position:relative;min-height:20px;margin:0;padding:0;height:auto;line-height:normal}.layui-form-checkbox[lay-skin=none]>div,.layui-form-radio[lay-skin=none]>div{position:relative;top:0;left:0;cursor:pointer;z-index:10;color:inherit;background-color:inherit}.layui-form-checkbox[lay-skin=none]>i,.layui-form-radio[lay-skin=none]>i{display:none}.layui-form-checkbox[lay-skin=none].layui-checkbox-disabled>div,.layui-form-radio[lay-skin=none].layui-radio-disabled>div{cursor:not-allowed}.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;right:0;bottom:0;margin:0;z-index:199;transition:opacity .1s;user-select:none;opacity:1}.layui-table-init.layui-hide-v{opacity:0}.layui-table-loading-icon{position:absolute;width:100%\0;left:50%;left:auto\0;top:50%;margin-top:-15px\0;transform:translate(-50%,-50%);transform:none\0;text-align:center}.layui-table-loading-icon .layui-icon{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}.layui-table-main>.layui-table>tbody>tr:last-child>td>.layui-table-cell-c{bottom:0}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:0 0;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,.layui-rate-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;overflow:hidden}.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:0;right:100%;cursor:pointer;transform:translate(-50%,-50%)}.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;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:168px;height:30px;color:#5f5f5f;padding-left:5px}.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;-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=workdays]: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}.laydate-time-list{display:table}.layui-laydate .laydate-time-list>li{display:table-cell;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 .laydate-time-list-hide-1 ol li{padding-left:53px}.layui-laydate .laydate-time-list-hide-2 ol li{padding-left:117px}.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 .layui-this.laydate-disabled,.layui-laydate .layui-this.laydate-disabled>div{background-color:#eee!important}.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}.laydate-theme-fullpanel .laydate-time-list-hide-1 ol li{padding-left:49px}.laydate-theme-fullpanel .laydate-time-list-hide-2 ol li{padding-left:107px}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{opacity:0;transition:opacity .35s cubic-bezier(.34,.69,.1,1);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} \ No newline at end of file diff --git a/component/layui/layui.js b/component/layui/layui.js index 83af036357369ed3cf2c7b888d157770d5a99e73..a0d8d67e2282f2f1abfd1967cd01fa582c5a919c 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.9.10 | MIT Licensed */;!function(d){"use strict";var t,h=d.document,m={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.9.10"},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,n.distanceX=n.distanceY=0,n.direction="none",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:"\u4e0a\u4e00\u9875",n.next="next"in n?n.next:"\u4e0b\u4e00\u9875",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:["\u5230\u7b2c","\u9875","\u786e\u5b9a"])[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,D){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){T.path&&i.lay&&lay.layui&&lay.layui.link(T.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},a="laydate",d="lay-"+a+"-id",T={v:"5.6.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="+T.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}},C="layui-this",M="laydate-disabled",h=[100,2e5],v="layui-laydate-static",b="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",L=".laydate-btns-confirm",E="laydate-time-text",I="laydate-btns-time",x="layui-laydate-preview",w="layui-laydate-shade",k=function(e){var t,a=this,n=(a.index=++T.index,a.config=lay.extend({},a.config,T.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},k.prototype.markerOfChineseFestivals={"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"},k.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},k.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(u).test(t)?"\\d{"+(new RegExp(u).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),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(),"function"==typeof o.formatToDisplay&&(r.isInput(o.elem[0])?r.formatToDisplay(o.elem[0],o.formatToDisplay):(t=r.rangeElem)&&(r.formatToDisplay(t[0][0],o.formatToDisplay),r.formatToDisplay(t[1][0],o.formatToDisplay))),o.value)&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value))},k.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?" "+v:"",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=[],u=r.elemHeader=[],c=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"}),p=(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)&&p.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+""))}),p.push('"),p.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("."+I).removeClass(M));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(C),"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")),f=[],g=!0,t=(lay.each(o.theme,function(e,t){g&&/^#/.test(t)?(g=!(l=!0),f.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)&&f.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&&f.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),f.length&&(f=f.join(""),"styleSheet"in p?(p.setAttribute("type","text/css"),p.styleSheet.cssText=f):p.innerHTML=f,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(p)),r.remove(k.thisElemDate),T.thisId=o.id,s?o.elem.append(y):(D.body.appendChild(y),r.position()),o.shade?'
        ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),k.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},k.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(v)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete T.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+w).remove()),t},k.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},k.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))},k.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)},c=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},k.prototype.markRender=function(e,a,t){var n;"object"==typeof t?lay.each(t||{},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])}):"string"==typeof t&&(n=t||a[2]),n&&e.find("div").html(''+n+"")},k.prototype.mark=function(t,a){var n=this,e=n.config,i=function(e){n.markRender(t,a,e)};return e.calendar&&"cn"===e.lang&&i(n.markerOfChineseFestivals),"function"==typeof e.mark?e.mark({year:a[0],month:a[1],date:a[2]},i):"object"==typeof e.mark&&i(e.mark),n},k.prototype.holidaysRender=function(r,o,e){var d=["holidays","workdays"],s=function(e,t,a){e.find("div").html(["",a,""].join(""))};"array"===layui.type(e)?lay.each(e,function(l,e){lay.each(e,function(e,t){var a,n,i;t=t,a=r.attr("lay-ymd"),n=t.split("-"),i=a.split("-"),lay.each(n,function(e,t){n[e]=parseInt(t,10)}),lay.each(i,function(e,t){i[e]=parseInt(t,10)}),n.join("-")===i.join("-")&&s(r,d[l],o[2])})}):"string"==typeof e&&-1!==d.indexOf(e)&&s(r,e,o[2])},k.prototype.holidays=function(t,a){var n=this,e=n.config,i=function(e){n.holidaysRender(t,a,e)};return"function"==typeof e.holidays?e.holidays({year:a[0],month:a[1],date:a[2]},i):"array"===layui.type(e.holidays)&&i(e.holidays),n},k.prototype.cellRender=function(t,e,a){var n=this.config;return"function"==typeof n.cellRender&&n.cellRender(e,function(e){"string"==typeof e?lay(t).html(e):"object"==typeof e&&lay(t).html("").append(lay(e)[0])},{originElem:t,type:a}),this},k.prototype.startOfYear=function(e){e=new Date(e);return e.setFullYear(e.getFullYear(),0,1),e.setHours(0,0,0,0),e},k.prototype.endOfYear=function(e){var e=new Date(e),t=e.getFullYear();return e.setFullYear(t+1,0,0),e.setHours(23,59,59,999),e},k.prototype.startOfMonth=function(e){e=new Date(e);return e.setDate(1),e.setHours(0,0,0,0),e},k.prototype.endOfMonth=function(e){var e=new Date(e),t=e.getMonth();return e.setFullYear(e.getFullYear(),t+1,0),e.setHours(23,59,59,999),e},k.prototype.addDays=function(e,t){e=new Date(e);return t&&e.setDate(e.getDate()+t),e},k.prototype.isDisabledYearOrMonth=function(e,t,a){for(var n=this,i=n.config,l="year"===t?n.startOfYear(e):n.startOfMonth(e),t="year"===t?n.endOfYear(e):n.endOfMonth(e),r=Math.floor((t.getTime()-l.getTime())/864e5)+1,o=0,d=0;d(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]&&(s.year=h[1],d.hint(y.invalidDate)),d.firstDate||(d.firstDate=lay.extend({},s)),n.setFullYear(s.year,s.month,1),l=(n.getDay()+(7-a.weekStart))%7,r=T.getEndDate(s.month||12,s.year),o=T.getEndDate(s.month+1,s.year),lay.each(u,function(e,t){var a,n=[s.year,s.month];(t=lay(t)).removeAttr("class"),e"+n[2]+"
        "),d.mark(t,n).holidays(t,n).limit({elem:t,date:{year:n[0],month:n[1]-1,date:n[2]},index:e,rangeType:i,disabledType:"date"}),d.cellRender(t,{year:n[0],month:n[1],date:n[2]},"date")}),lay(c[0]).attr("lay-ym",s.year+"-"+(s.month+1)),lay(c[1]).attr("lay-ym",s.year+"-"+(s.month+1)),"cn"===a.lang?(lay(c[0]).attr("lay-type","year").html(s.year+" \u5e74"),lay(c[1]).attr("lay-type","month").html(s.month+1+" \u6708")):(lay(c[0]).attr("lay-type","month").html(y.month[s.month]),lay(c[1]).attr("lay-type","year").html(s.year)),m&&(a.range?!e&&"init"===t||(d.listYM=[[(d.startDate||a.dateTime).year,(d.startDate||a.dateTime).month+1],[d.endDate.year,d.endDate.month+1]],d.list(a.type,0).list(a.type,1),"time"===a.type?d.setBtnStatus("\u65f6\u95f4",lay.extend({},d.systemDate(),d.startTime),lay.extend({},d.systemDate(),d.endTime)):d.setBtnStatus(!0)):(d.listYM=[[s.year,s.month+1]],d.list(a.type,0))),a.range&&"init"===t&&(d.rangeLinked?(n=d.getAsYM(s.year,s.month,i?"sub":null),d.calendar(lay.extend({},s,{year:n[0],month:n[1]}),1-i)):d.calendar(null,1-i)),a.range||(u=["hours","minutes","seconds"],d.limit({elem:lay(d.footer).find(".laydate-btns-now"),date:d.systemDate(/^(datetime|time)$/.test(a.type)?new Date:null),index:0,time:u,disabledType:"datetime"}),d.limit({elem:lay(d.footer).find(L),index:0,time:u,disabledType:"datetime"})),d.setBtnStatus(),lay(d.shortcut).find("li."+C).removeClass(C),a.range&&!m&&"init"!==t&&d.stampRange(),d},k.prototype.list=function(n,i){var l,r,e,a,o,d,t,s=this,y=s.config,m=s.rangeLinked?y.dateTime:[y.dateTime,s.endDate][i],u=s.lang(),c=y.range&&"date"!==y.type&&"datetime"!==y.type,h=lay.elem("ul",{"class":b+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),p=s.elemHeader[i],f=lay(p[2]).find("span"),g=s.elemCont[i||0],D=lay(g).find("."+b)[0],T="cn"===y.lang,v=T?"\u5e74":"",x=s.listYM[i]||{},w=["hours","minutes","seconds"],k=["startTime","endTime"][i];return x[0]<1&&(x[0]=1),"year"===n?(e=l=x[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==x[0]&&lay(t).addClass(C),t.innerHTML=l+v,h.appendChild(t),s.limit({elem:lay(t),date:a,index:i,type:n,rangeType:i,disabledType:"date"}),s.cellRender(t,{year:l,month:1,date:1},"year"),l++}),lay(f[T?0:1]).attr("lay-ym",l-8+"-"+x[1]).html(e+v+" - "+(l-1)+v)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:x[0],month:e,date:1};e+1==x[1]&&lay(t).addClass(C),t.innerHTML=u.month[e]+(T?"\u6708":""),h.appendChild(t),s.limit({elem:lay(t),date:a,index:i,type:n,rangeType:i,disabledType:"date"}),s.cellRender(t,{year:x[0],month:e+1,date:1},"month")}),lay(f[T?0:1]).attr("lay-ym",x[0]+"-"+x[1]).html(x[0]+v)):"time"===n&&(r=function(){lay(h).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){s.limit({elem:lay(t),date:[{hours:e},{hours:s[k].hours,minutes:e},{hours:s[k].hours,minutes:s[k].minutes,seconds:e}][a],index:i,rangeType:i,disabledType:"time",time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),y.range||s.limit({elem:lay(s.footer).find(L),date:s[k],index:0,time:["hours","minutes","seconds"],disabledType:"datetime"})},y.range?s[k]||(s[k]="startTime"===k?m:s.endDate):s[k]=m,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

        "+u.time[t]+"

          "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
        ",h.appendChild(a)}),r(),e=-1!==y.format.indexOf("H"),f=-1!==y.format.indexOf("m"),t=-1!==y.format.indexOf("s"),a=h.children,o=0,lay.each([e,f,t],function(e,t){t||(a[e].className+=" layui-hide",o++)}),h.className+=" laydate-time-list-hide-"+o),D&&g.removeChild(D),g.appendChild(h),"year"===n||"month"===n?(lay(s.elemMain[i]).addClass("laydate-ym-show"),lay(h).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(M)||(s.rangeLinked?lay.extend(m,{year:"year"===n?e:x[0],month:"year"===n?x[1]-1:e}):m[n]=e,"year"===y.type||"month"===y.type?(lay(h).find("."+C).removeClass(C),lay(this).addClass(C),"month"===y.type&&"year"===n&&(s.listYM[i][0]=e,c&&((i?s.endDate:m).year=e),s.list("month",i))):(s.checkDate("limit").calendar(m,i,"init"),s.closeList()),s.setBtnStatus(),!y.range&&y.autoConfirm&&("month"===y.type&&"month"===n||"year"===y.type&&"year"===n)&&s.setValue(s.parse()).done().remove(),s.autoCalendarModel.auto&&!s.rangeLinked?s.choose(lay(g).find("td.layui-this"),i):s.endState&&s.done(null,"change"),lay(s.footer).find("."+I).removeClass(M))})):(f=lay.elem("span",{"class":E}),d=function(){lay(h).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(s[k][w[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(M))return a.scrollTop=30*(e-2),!0})})},t=lay(p[2]).find("."+E),d(),f.innerHTML=y.range?[u.startTime,u.endTime][i]:u.timeTips,lay(s.elemMain[i]).addClass("laydate-time-show"),t[0]&&t.remove(),p[2].appendChild(f),(D=lay(h).find("ol")).each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(M)||(y.range?s[k][w[t]]=e:m[w[t]]=e,lay(a).find("."+C).removeClass(C),lay(this).addClass(C),r(),d(),!s.endDate&&"time"!==y.type&&"datetime"!==y.type||s.done(null,"change"),s.setBtnStatus())})}),layui.device().mobile&&D.css({overflowY:"auto",touchAction:"pan-y"})),s},k.prototype.listYM=[],k.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+b).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+E).remove()},k.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(L),o="datetime"===i.type||"time"===i.type?["hours","minutes","seconds"]:undefined;i.range&&(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,disabledType:"datetime",time:o,rangeType:0})||n.limit({date:a,disabledType:"datetime",time:o,rangeType:1})?r.addClass(M):r[i?"addClass":"removeClass"](M),e)&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout)},k.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=T.parse(t,a.format,1);return n.range&&e===undefined?i+" "+a.rangeStr+" "+a.parse("end"):i},k.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)},k.prototype.getDateTime=function(e){return this.newDate(e).getTime()},k.prototype.formatToDisplay=function(e,t){var a=this,n=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value");Object.defineProperty(e,"value",lay.extend({},n,{get:function(){return this.getAttribute("lay-date")},set:function(e){n.set.call(this,t.call(a,e)),this.setAttribute("lay-date",e)}}))},k.prototype.setValue=function(e){var t,a=this,n=a.config,i=n.elem[0];return"static"!==n.position&&(e=e||"",a.isInput(i)?lay(i).val(e):(t=a.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+a.rangeStr+" ")),t[0].val(e[0]||""),t[1].val(e[1]||"")):(0===lay(i).find("*").length&&(t="function"==typeof n.formatToDisplay?n.formatToDisplay(e):e,lay(i).html(t)),lay(i).attr("lay-date",e))),a},k.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+x),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))},k.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},k.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(L).addClass(M),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+" "+C),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:C),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.rangeLinked?n.startDate:n.thisDateTime(1-a),disabledType:"date"})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o),o=n.startDate,n.startDate=lay.extend({},n.endDate,n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,n.endTime)),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"))},k.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(M)||(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(M))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(M))return("time"===n.type?a.startTime&&a.endTime&&a.newDate(a.startTime)>a.newDate(a.endTime):a.startDate&&a.endDate&&a.newDate(lay.extend({},a.startDate,a.startTime||{}))>a.newDate(lay.extend({},a.endDate,a.endTime||{})))?a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout):a.hint(i.invalidDate)}else if(lay(t).hasClass(M))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},k.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(L),date:{year:s[0]},disabledType:"datetime"})),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")))}}},k.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("."+I).addClass(M))}),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)})},k.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},k.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){T.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(D).on("mousedown",function(e){var t,a;T.thisId&&(t=s.getThis(T.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;T.thisId&&(t=s.getThis(T.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===k.thisElemDate&&(e.preventDefault(),n(t.footer).find(L)[0].click())}),n(i).on("resize",function(){if(T.thisId){var e=s.getThis(T.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},T.render=function(e){e=new k(e);return s.call(e)},T.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},T.getInst=function(e){e=s.getThis(e);if(e)return e.inst},T.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},T.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},T.close=function(e){e=s.getThis(e||T.thisId);if(e)return e.remove()},T.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("")},T.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?(T.ready(),layui.define("lay",function(e){T.path=layui.cache.dir,l.run(lay),e(a,T)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),T}):(T.ready(),l.run(i.lay),i.laydate=T)}(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=[],r&&(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=this,o=a.config,s=a.index,r="object"==typeof(f=o.content),l=m("body"),c=function(e){var t;o.shift&&(o.anim=o.shift),u.anim[o.anim]&&(t="layer-anim "+u.anim[o.anim],e.addClass(t).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(t)}))};if(o.id&&m("."+u[0]).find("#"+o.id)[0])e=m("#"+o.id).closest("."+u[0]),t=e.attr("times"),i=e.data("config"),n=m("#"+u.SHADE+t),"min"===(e.data("maxminStatus")||{})?v.restore(t):i.hideOnClose&&(n.show(),e.show(),c(e),setTimeout(function(){n.css({opacity:n.data(y)})},10));else{switch(o.removeFocus&&document.activeElement.blur(),"string"==typeof o.area&&(o.area="auto"===o.area?["",""]:[o.area,""]),6==v.ie&&(o.fixed=!1),o.type){case 0:o.btn="btn"in o?o.btn:d.btn[0],v.closeAll("dialog");break;case 2:var f=o.content=r?o.content:[o.content||"","auto"];o.content='';break;case 3:delete o.title,delete o.closeBtn,-1===o.icon&&o.icon,v.closeAll("loading");break;case 4:r||(o.content=[o.content,"body"]),o.follow=o.content[1],o.content=o.content[0]+'',delete o.title,o.tips="object"==typeof o.tips?o.tips:[o.tips,!0],o.tipsMore||v.closeAll("tips")}a.vessel(r,function(e,t,i){l.append(e[0]),r?2==o.type||4==o.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]+s).find("."+u[5]).before(t)):l.append(e[1]),m("#"+u.MOVE)[0]||l.append(d.moveElem=i),a.layero=m("#"+u[0]+s),a.shadeo=m("#"+u.SHADE+s),o.scrollbar||d.setScrollbar(s)}).auto(s),a.shadeo.css({"background-color":o.shade[1]||"#000",opacity:o.shade[0]||o.shade,transition:o.shade[2]||""}),a.shadeo.data(y,o.shade[0]||o.shade),2==o.type&&6==v.ie&&a.layero.find("iframe").attr("src",f[0]),4==o.type?a.tips():(a.offset(),parseInt(d.getStyle(document.getElementById(u.MOVE),"z-index"))||(a.layero.css("visibility","hidden"),v.ready(function(){a.offset(),a.layero.css("visibility","visible")}))),!o.fixed||d.events.resize[a.index]||(d.events.resize[a.index]=function(){a.resize()},g.on("resize",d.events.resize[a.index])),o.time<=0||setTimeout(function(){v.close(a.index)},o.time),a.move().callback(),c(a.layero),a.layero.data("config",o)}},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]>=g.height()&&(n[1]=g.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=(g.height()-n[1])/2,e.offsetLeft=(g.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=g.width()-n[0]:"b"===t.offset?e.offsetTop=g.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=g.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=g.width()-n[0]):"rb"===t.offset?(e.offsetTop=g.height()-n[1],e.offsetLeft=g.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?g.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?g.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=g.scrollTop(),e.offsetLeft+=g.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=g.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(){0g.width()&&(o=g.width()-180-(d.minStackArr.edgeIndex=d.minStackArr.edgeIndex||0,d.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(r.left=o,r.top=g.height()-n,a||d.minStackIndex++,l.attr("minLeft",o)),l.attr("position",s),v.style(e,r,!0),i.hide(),"page"===l.attr("type")&&l.find(u[4]).hide(),d.restScrollbar(e),c.hide())},v.restore=function(e){var t=m("#"+u[0]+e),i=m("#"+u.SHADE+e),n=t.find(".layui-layer-content"),a=t.attr("area").split(","),o=t.attr("type"),s=t.data("config")||{},r=n.data(l);t.removeData("maxminStatus"),v.style(e,{width:a[0],height:a[1],top:parseFloat(a[2]),left:parseFloat(a[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===o&&t.find(u[4]).show(),s.scrollbar?d.restScrollbar(e):d.setScrollbar(e),r!==h&&(n.removeData(l),(o===d.type[2]?n.children("iframe"):n).css({height:r})),i.show()},v.full=function(t){var i=m("#"+u[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&v.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");v.style(t,{top:e?0:g.scrollTop(),left:e?0:g.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},v.title=function(e,t){m("#"+u[0]+(t||v.index)).find(u[1]).html(e)},v.close=function(o,s){var r,e,t,l=(i=m("."+u[0]).children("#"+o).closest("."+u[0]))[0]?(o=i.attr("times"),i):m("#"+u[0]+o),c=l.attr("type"),i=l.data("config")||{},f=i.id&&i.hideOnClose;l[0]&&(r={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[i.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(f)return l.removeClass("layer-anim "+r),l.hide();if(c===d.type[1]&&"object"===l.attr("conType")){l.children(":not(."+u[5]+")").remove();for(var t=l.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(),l.find("."+u[5])[0].removeChild(n)}catch(a){}l[0].innerHTML="",l.remove()}"function"==typeof d.end[o]&&d.end[o](),delete d.end[o],"function"==typeof s&&s(),d.events.resize[o]&&(g.off("resize",d.events.resize[o]),delete d.events.resize[o])},t=m("#"+u.SHADE+o),v.ie&&v.ie<10||!i.isOutAnim?t[f?"hide":"remove"]():(t.css({opacity:0}),setTimeout(function(){t[f?"hide":"remove"]()},350)),i.isOutAnim&&l.addClass("layer-anim "+r),6==v.ie&&d.reselect(),d.restScrollbar(o),"string"==typeof l.attr("minLeft")&&(d.minStackIndex--,d.minStackArr.push(l.attr("minLeft"))),v.ie&&v.ie<10||!i.isOutAnim?e():setTimeout(function(){e()},200))},v.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&&v.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},v.closeLast=function(i,e){var t,n=[],a=m.isArray(i);m("string"==typeof i?".layui-layer-"+i:".layui-layer").each(function(e,t){t=m(t);if(a&&-1===i.indexOf(t.attr("type"))||"none"===t.css("display"))return!0;n.push(Number(t.attr("times")))}),0":'",s=i.success;return delete i.success,v.open(m.extend({type:1,btn:["\u786e\u5b9a","\u53d6\u6d88"],content:o,skin:"layui-layer-prompt"+x("prompt"),maxWidth:g.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)?v.tips("\u6700\u591a\u8f93\u5165"+(i.maxlength||500)+"\u4e2a\u5b57\u7b26",a,{tips:1}):n&&n(t,e,a)}},i))},v.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,v.open(m.extend({type:1,skin:"layui-layer-tab"+x("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))},v.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||[],r=i.start||0,l=n.success;if(s.imgIndex=1+(0|r),n.img=n.img||"img",delete n.success,t){if(0===o.length)return v.msg("\u6ca1\u6709\u56fe\u7247")}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");v.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&&v.close(s.index))},s.tabimg=function(e){if(!(o.length<=1))return i.start=s.imgIndex-1,v.close(s.index),v.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":v.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=v.load(1,{shade:!("shade"in n)&&[.9,h,"unset"],scrollbar:!1});var t=o[r].src,d=function(e){v.close(s.loadi);var t,i=o[r].alt||"";a&&(n.anim=-1),s.index=v.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[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 diff --git a/component/pear/css/module/button.css b/component/pear/css/module/button.css deleted file mode 100644 index fcc6ba32ccefc78484aa18545fa737d6024f3c24..0000000000000000000000000000000000000000 --- 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/card.css b/component/pear/css/module/card.css deleted file mode 100644 index 39b4ed28ec3a169084d39f0a64e883b6912c03e3..0000000000000000000000000000000000000000 --- 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/code.css b/component/pear/css/module/code.css deleted file mode 100644 index 4bde0d3d69692553fce81f4057991084372c499a..0000000000000000000000000000000000000000 --- 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 2c6404269ec581593a1f3bca286fcb4107b3ae8d..0000000000000000000000000000000000000000 --- 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/dtree/dtree.css b/component/pear/css/module/dtree/dtree.css deleted file mode 100644 index 3e5364d4d5fa819bd748d4ce91476300482d68f7..0000000000000000000000000000000000000000 --- 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 a05b22a8e3798284f8e2f84d4b715d04295a6095..0000000000000000000000000000000000000000 --- 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 df7af65397abb2d2094f986fb08484d58186d2c2..0000000000000000000000000000000000000000 --- 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 Binary files a/component/pear/css/module/dtree/font/dtreefont.eot and /dev/null differ diff --git a/component/pear/css/module/dtree/font/dtreefont.svg b/component/pear/css/module/dtree/font/dtreefont.svg deleted file mode 100644 index 90fe50f041be2e0433b009a20993ec78c8e4e67f..0000000000000000000000000000000000000000 --- a/component/pear/css/module/dtree/font/dtreefont.svg +++ /dev/null @@ -1,80 +0,0 @@ - - - -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 Binary files a/component/pear/css/module/dtree/font/dtreefont.ttf and /dev/null differ diff --git a/component/pear/css/module/dtree/font/dtreefont.woff b/component/pear/css/module/dtree/font/dtreefont.woff deleted file mode 100644 index 2b546450765b8d1368d1858ecc2c353d5529bfa5..0000000000000000000000000000000000000000 Binary files a/component/pear/css/module/dtree/font/dtreefont.woff and /dev/null differ 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 fca4788566c21d9bcfc9e3bf0c4406d17651a211..0000000000000000000000000000000000000000 --- 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/module/form.css b/component/pear/css/module/form.css deleted file mode 100644 index b6a8c8d311dd00765e461d0966a23f992517dcc7..0000000000000000000000000000000000000000 --- 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/fullscreen.css b/component/pear/css/module/fullscreen.css deleted file mode 100644 index 63f7775413c722efed1600a0cb236fd0e2302623..0000000000000000000000000000000000000000 --- 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/layout.css b/component/pear/css/module/global.css similarity index 78% rename from component/pear/css/module/layout.css rename to component/pear/css/module/global.css index 9c4d082247860738a0b115c17b9798520bcec5e5..94d57c7922873815966b3c3733a3a4c1f830eba0 100644 --- a/component/pear/css/module/layout.css +++ b/component/pear/css/module/global.css @@ -1,101 +1,40 @@ .pear-container { - margin: 10px; - background-color: whitesmoke; - width: calc(100vw - 20px); -} - -body::-webkit-scrollbar { - width: 0px; - height: 0px; -} - -body::-webkit-scrollbar { - width: 6px; - height: 6px; -} - -body::-webkit-scrollbar-track { - background: white; - border-radius: 2px; -} - -body::-webkit-scrollbar-thumb { - background: #E6E6E6; - border-radius: 2px; -} - -body::-webkit-scrollbar-thumb:hover { - background: #E6E6E6; -} - -body::-webkit-scrollbar-corner { - background: #f6f6f6; + padding: 10px; + margin: 0px; + box-sizing: border-box; + background-color: transparent; + width: 100%; } -.mainBox::-webkit-scrollbar { +*::-webkit-scrollbar { width: 0px; height: 0px; } -.mainBox::-webkit-scrollbar { +*::-webkit-scrollbar { width: 6px; height: 6px; } -.mainBox::-webkit-scrollbar-track { - background: white; - border-radius: 2px; +*::-webkit-scrollbar-track { + background: transparent; } -.mainBox::-webkit-scrollbar-thumb { +*::-webkit-scrollbar-thumb { background: #E6E6E6; - border-radius: 2px; + border-radius: 4px; } -.mainBox::-webkit-scrollbar-thumb:hover { +*::-webkit-scrollbar-thumb:hover { background: #E6E6E6; } -.mainBox::-webkit-scrollbar-corner { +*::-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 { +.pear-row::after, +.pear-row::before { content: ""; display: table; clear: both; @@ -206,103 +145,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%; } @@ -1038,4 +974,4 @@ body::-webkit-scrollbar-corner { .pear-col-space30>* { padding: 15px -} +} \ No newline at end of file diff --git a/component/pear/css/module/iconPicker.css b/component/pear/css/module/iconPicker.css deleted file mode 100644 index 5d80b0b951fe91636eb775855528c45765273d56..0000000000000000000000000000000000000000 --- 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/label.css b/component/pear/css/module/label.css deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/component/pear/css/module/layer.css b/component/pear/css/module/layer.css deleted file mode 100644 index 0ca669f57aa1e750dc3e566af7dfabfde7fb8036..0000000000000000000000000000000000000000 --- 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/link.css b/component/pear/css/module/link.css deleted file mode 100644 index 380351c5f3541a7407252e56c6d90a740f3cdd95..0000000000000000000000000000000000000000 --- 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 4abb57d3d823f926cbb83838244a2721618b7b81..0000000000000000000000000000000000000000 --- 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/menu.css b/component/pear/css/module/menu.css index 938f987ad3ec060844e918844026bbba5546dd10..9c59c64bb0d17595a742e2a8c3dcdebd81110d4b 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/menuSearch.css b/component/pear/css/module/menuSearch.css new file mode 100644 index 0000000000000000000000000000000000000000..e4f5b54c4bf46049a73d7314b34c3b312d35469f --- /dev/null +++ b/component/pear/css/module/menuSearch.css @@ -0,0 +1,90 @@ +/* 搜索面板 */ +.menu-search-content .layui-input { + padding-left: 30px; +} + +.menu-search-content .layui-input:focus { + border: 1px solid var(--global-primary-color)!important; + box-shadow: none; +} + +.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/module/message.css b/component/pear/css/module/message.css deleted file mode 100644 index 0a61d092a45c05a5ee8c0d3fb52150f9aaeb40ea..0000000000000000000000000000000000000000 --- 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/messageCenter.css b/component/pear/css/module/messageCenter.css new file mode 100644 index 0000000000000000000000000000000000000000..0ab9ef3a94bba0f3c7fb7777232fbd94076080fd --- /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/module/notice.css b/component/pear/css/module/notice.css deleted file mode 100644 index 65c9feacaae238abc377e560a5d4fa8e619f9b5e..0000000000000000000000000000000000000000 --- 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/nprogress.css b/component/pear/css/module/nprogress.css index 24c5cf192b81ef4523001c04086c6adf826bb4e5..a78f1c9482e57a1fccca4d42b3175db2a76bdfa1 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/component/pear/css/module/frame.css b/component/pear/css/module/page.css similarity index 87% rename from component/pear/css/module/frame.css rename to component/pear/css/module/page.css index 09a1423f2b330d5c89a34bb11dddabb5e0f651d7..2131056b2371015c2a541e0c8835d02b850c3eb0 100644 --- a/component/pear/css/module/frame.css +++ b/component/pear/css/module/page.css @@ -1,11 +1,11 @@ -.pear-frame { +.pear-page { width: 100%; - height: 100%; position: relative; - overflow: hidden; + overflow-y: auto; + height: 100%; } -.pear-frame .dot { +.pear-page .dot { width: 5px; height: 24px; background-color: #5FB878; @@ -15,38 +15,34 @@ 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 { +.pear-page .pear-page-title { height: 40px; line-height: 40px; background-color: white; border: whitesmoke 1px solid; } -.pear-frame .pear-frame-content { +.pear-page .pear-page-content, +.pear-page .pear-page-content iframe { width: 100%; height: calc(100% - 0px) !important; } -.pear-frame-loading { +.pear-page .pear-page-content iframe { + height: calc(100% - 4px) !important; +} + +.pear-page-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 { +.pear-page-loading.close { animation: close 1s; -webkit-animation: close 1s; animation-fill-mode: forwards; diff --git a/component/pear/css/module/popover.min.css b/component/pear/css/module/popover.min.css deleted file mode 100644 index 453a50fad00258cd432ec6a0a58b3634c7335ffe..0000000000000000000000000000000000000000 --- 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 53285a6881bce8189bd05d23e4f2757f31ea8e43..0000000000000000000000000000000000000000 --- 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,d09GRgABAAAAAAsYAAsAAAAAEQwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFY8ukovY21hcAAAAYAAAACrAAACPBtV6wxnbHlmAAACLAAABnEAAAmMovtEvWhlYWQAAAigAAAAMQAAADYSctBCaGhlYQAACNQAAAAgAAAAJAgBA69obXR4AAAI9AAAABsAAAAwMCX//WxvY2EAAAkQAAAAGgAAABoN8gwubWF4cAAACSwAAAAeAAAAIAEiAM9uYW1lAAAJTAAAAUUAAAJtPlT+fXBvc3QAAAqUAAAAhAAAALJ1LunfeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2BkYWacwMDKwMHUyXSGgYGhH0IzvmYwYuRgYGBiYGVmwAoC0lxTGByeMbwwZ27438AQw9zMcAQozAiSAwDk4AxmeJzlks0JwzAMhZ8bN/1xD4GU0h2Se26BbJMJOkkn6KmTPbJF8mT5UGg3qMRn0EPIRs8A9gAq0YsIhDcCLF5SQ9YrnLMe8VB9RSMlMjCxYcueIyfOy7CuAFHU7lP9iqApt5L3ksBJbzlgZ9PVkXDUvbWa6x8T/i0u+XyWKtmmHW0NDI55yeRok2DjaKdg65jX7Bzzm71jXnN08vzJkQvg7Ng/WAYH9Qb3wzM/AHicjVVvbFzFEd/Zfbv7/vn9uXf33vl8Pt/dO99BHOzEZ9/DKTImRS0KjUoLDUFCjtpCMGkT1D9qldQmhkiUSv2G1BBB1VYqilGREOIDViWEGzttqkpI/cAXqyL5gFRALVIF+VCJe9fZd+fEpR/o6d3s7G9mZ2dmZ3aJIKR3h0ZYmVgkIjGZJV8mDxECtenOTDOu1UU+hJoD+TCqzcNMk2V8O5OCbDVRPgZhEt4JCNTZ/4HA3+DfuWIxl8pcFFErG3K7oD7fvev8UaMUmEu259lrRjBsfs6cLhYbRfzSbSjGRVAkfQYihUXsyPkHTVyyZDNmXzSHg3Tl+aPKxpJFqbWGdtLl8w8iYDxuDTQIx7yc1YCdIx7Jk3HSwbwQwGBcyMKZVtG0ZCuJxjFJBb+foMSfhJaPOSr4FYgwSwqIx2MHJALtAdBi/7xcSMJL+fxmmBS2guD61tZm96X02mgcj0J1NAaIR9UMmhXIV24FuLUC71+r1AEmK1AYrQHUK/Tly/m8MrOZz2+FSf7jzc3NK9XR9F2lVq+gmRp0r+HK9B+VJmR263Rgd7ALwR/FOFfx/FeJS0YxQh9drakgMJhaBVizkwgqWxLD6eQ0Qo8f7p44fJziSH9x+PjLZUO+/jZ9+K35X37ljn/Rv+yW4Ziuf2nl4PfS5/LrP47OHTsFJULYjf369UZAEBmSqEOSJmG4Me6LeznA0BFkcDoJlGynVzmH2vY21DhPr25v9DjvbfTp2TXG1s5mlK0q4S7lT++6obbRox/s6CHF2LMEsHvoFfSFQIKnKQMZJVFCD6WH0p0PVvvcRx8uph8eUks0jOFNtskOkpDsJ18k9+NqVRg3qqMCSSerjyRuYUi1/vFH7YIqikGVcD+ehFl/pqPSPKZ6DG6mHisljFhBFvU/PoRkSNd/JHO6Ja5JOXcfwIGJbm/igBq/hn8Kfb57YbYUxyX4cwkLKH1u4gD9GVSL6USxCjjCO2p8VdcvH9XRYIQWqUblu3pR/v2BvXMAc3tTmJiDAQ895B9NL0C9BFdKqqRKczDX/Whg7O1irVbcqZ8/sbfYBOZwihC+6wSDzszUf+dF7rRO1O+fKaDO+nXOr6+vf8L5J44Qe4UvnlyRntwrxMoKzpFdeRJBNb9dGyiur1+nE59R+uwi9M1G395jb9KP0bcK2YM9nJB5cojcS75OFskxclzdc+pW699z8iYbtf14BGKf77ruZNyXKC0e50OEBI+V/Aug5Dex/9WjJfipuqnS00gfybjXbNe1f762tXmRPp3Bdl/l6g5JXyqXR0bK8J3PR+jvwYs8/GBnTM+kr8FX4ZknwC16XtG9iH9QfNn1vDHPe2GAj3ieV3XdF2+IPdeteh62Ra+HfQrsKWKSBtlHSOBgM7KkKQBLWnZoq1mVwotCLRGhOtSkMzMuqq2ml3SqUehdnZtynbtPLB88/Dy9dDrYVzoy/MTT6Svnlpd/AHueon5wpnGsEae/PZm+d3Jp6SSUTy7R3xw4f9/B5RN3O+5t3VNncjm6Cnt+uLx8DpedGj4yvD84HceNxTcG6ku4VPmZ9n6nNdj95BHyB3IJKxBPsKm6rpn4QopmqzlFm1MwqdxO5rPGnIc7aSfCGg1Vqyo6nUlQhnh7WiFhXzgGhVC4qjPRki9xdGCc4zXeSWb9BG1ktlqz2Q5Y7S2sIJfivkpVKCCDpyCWdbQzECj76qMVqvyJ/LxyI2rTv1bTC25lSM9xAUJ4Lc+U0wXTsKXDmaA8tHX+hvDt4Wa9IHLcMUBz9VwpL4xi2aGasAPPKNUbbmD/2jAtk0uXY4eJx8zRgj9iAnVNt5X+BL5vlHTOaiOmG7g6+7ZBNUOaefNXuJF3u25RjVvBLeW8E4wV7ZJBpbAXXGnqrwgupWVTAKqZjq5HbW44fMguNJhgwmw8oOk8GCqE8F3GhLB0uS/UDVt4lgjtqGxK/rpwuaDAqKHZNuWmJjVKuWUxbpg2B9DtoRdN3TKF9B0hw4p41C5i3CI9w4civP3aQLlmLMK3wpJpaI7BvmlhPtH3nPWCKQAdE2hK9zyuUeAm921qCA2kvqY8N1yDMq4beJlG+4XQqHDCQnqPlJIyyN579S4tIGcRv/82BbFfK9SgnVHkZzMeaSQjqR5/fP5XF2Chh+sW0g0gn27snqXv3/bsszsfJbCAIiTdjRTVCBL6jV0K5D8H/8xVAAAAeJxjYGRgYADi16c/vIvnt/nKwM3CAALXZxxzhtH///23YVFhbgZyORiYQKIAm34OJQAAAHicY2BkYGBu+N/AEMOi/P/f//8sKgxAERTAAwCmuAa3eJxjYWBgYAFhRiiNFf//z6L8/x+IDQAkCQRQAAAAAAAAjAEAATgBfgGaAiACbgMMA2AEhATGAAB4nGNgZGBg4GE4DMQgwATEXEDIwPAfzGcAAB2tAfIAAHicZY9NTsMwEIVf+gekEqqoYIfkBWIBKP0Rq25YVGr3XXTfpk6bKokjx63UA3AejsAJOALcgDvwSCebNpbH37x5Y08A3OAHHo7fLfeRPVwyO3INF7gXrlN/EG6QX4SbaONVuEX9TdjHM6bCbXRheYPXuGL2hHdhDx18CNdwjU/hOvUv4Qb5W7iJO/wKt9Dx6sI+5l5XuI1HL/bHVi+cXqnlQcWhySKTOb+CmV7vkoWt0uqca1vEJlODoF9JU51pW91T7NdD5yIVWZOqCas6SYzKrdnq0AUb5/JRrxeJHoQm5Vhj/rbGAo5xBYUlDowxQhhkiMro6DtVZvSvsUPCXntWPc3ndFsU1P9zhQEC9M9cU7qy0nk6T4E9XxtSdXQrbsuelDSRXs1JErJCXta2VELqATZlV44RelzRiT8oZ0j/AAlabsgAAAB4nG2L3QqCQBCFZ9RWU7sOfAeh8IFi3N10EHYUG1p8+gSjqz44F+cPEjgo4T81Jphihic0mGOBZyyxwhovUCxKIe4ylthRuDqV+I22UcLQ6+QH4ubWdZZkU3m4o/0tUqtSvT33TPLits12fzc+zhRcvoquo0o281OLhcMw7Q+AD8sULE0=') 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 63946620ea99f1c8aca47b601dc1663e5d20dbc1..0000000000000000000000000000000000000000 --- 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/tabPage.css similarity index 62% rename from component/pear/css/module/tab.css rename to component/pear/css/module/tabPage.css index 3161f3e4449006f78b43ee38ed6124bb3ded9626..589aea6b4c957b2d5662a7607ec4be59147c2eb0 100644 --- a/component/pear/css/module/tab.css +++ b/component/pear/css/module/tabPage.css @@ -1,24 +1,26 @@ -.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{ - box-shadow: 0 2px 8px #f0f1f2!important; - border: 1px solid whitesmoke!important; +.pear-tab-page-menu{ + box-shadow: none; border-radius: 4px!important; + overflow: hidden; + box-shadow: 2px 0 6px rgba(0, 21, 41, .10); } -.pear-tab-menu .item{ +.pear-tab-page-menu .item{ height: 20px; padding-left: 18px; padding-top: 7px; @@ -28,36 +30,40 @@ line-height: 20px; cursor:pointer; } -.pear-tab-menu .item:hover{ - background: #36b368; +.pear-tab-page-menu .item:hover{ + background: var(--global-primary-color); 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-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; @@ -66,97 +72,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; - text-align: center; 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; @@ -166,15 +172,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; @@ -182,11 +188,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%; @@ -196,7 +202,7 @@ background-color: #fff } -.pear-tab-loading.close { +.pear-tab-page-loading.close { animation: close 1s; -webkit-animation: close 1s; animation-fill-mode: forwards; @@ -213,7 +219,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/css/module/table.css b/component/pear/css/module/table.css deleted file mode 100644 index a3c7210486c57af3ae2b71eecc0f9a5f4461abe3..0000000000000000000000000000000000000000 --- 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/tag.css b/component/pear/css/module/tag.css deleted file mode 100644 index 7c244bc2094a5dab4eb72ff1ca47369414706a9d..0000000000000000000000000000000000000000 --- 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/css/module/topBar.css b/component/pear/css/module/topBar.css deleted file mode 100644 index c3d5becac6bcd414ba7ce409560d3742b872a005..0000000000000000000000000000000000000000 --- 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/module/treetable.css b/component/pear/css/module/treetable.css deleted file mode 100644 index da849b89ae83d09e7c8ee5c73954df9ed9cb9ce1..0000000000000000000000000000000000000000 --- 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 c43e364a3a128bf83fce217e1e03f55e1fe6ebdc..62b55bf38d1e386c523def51445136be3aceee10 100644 --- a/component/pear/css/pear.css +++ b/component/pear/css/pear.css @@ -1,30 +1,10 @@ @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/treetable.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/table.css"); -@import url("module/frame.css"); -@import url("module/layer.css"); -@import url("module/toast.css"); +@import url("module/messageCenter.css"); +@import url("module/global.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/menuSearch.css"); +@import url("module/page.css"); +@import url("module/tabPage.css"); +@import url("module/toast.css"); \ No newline at end of file diff --git a/component/pear/module/admin.js b/component/pear/module/admin.js index b8299337aefdf8bdd356c7e4a5acd26002c91632..02a11ffa45e94930a3768e79709e059eb628773c 100644 --- a/component/pear/module/admin.js +++ b/component/pear/module/admin.js @@ -1,124 +1,229 @@ -layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'menu', 'frame', 'theme', 'convert','fullscreen'], - function(exports) { +layui.define(['jquery', 'tools', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'fullscreen', 'messageCenter', 'menuSearch'], + 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; - - var bodyFrame; - var sideMenu; - var bodyTab; - var config; - var logout = function() {}; - var msgInstance; - var body = $('body'); + page = layui.page, + menu = layui.menu, + tabPage = layui.tabPage, + messageCenter = layui.messageCenter, + menuSearch = layui.menuSearch, + fullscreen = layui.fullscreen, + tools = layui.tools; - var pearAdmin = new function() { + var configurationCache; - var configType = 'yml'; - var configPath = 'pear.config.yml'; + var logout = function () { }; - this.setConfigPath = function(path) { - configPath = path; - } + var body = $('body'); - this.setConfigType = function(type) { - configType = type; + var pearAdmin = new function () { + + this.configuration = {}; + + this.configurationPath = "pear.config.yml"; + + this.instances = {}; + + /** + * @since Pear Admin 4.0 + * + * 获取 pear.config 实现 [ default ] + */ + this.configurationProvider = () => { + return new Promise((resolve) => { + if (this.configurationPath.indexOf("yml") == -1) { + $.ajax({ + type: 'get', + url: this.configurationPath, + dataType: 'json', + async: false, + success: (result) => { + resolve(result); + } + }); + } else { + resolve(yaml.load(this.configurationPath)); + } + }) } - this.render = function(initConfig) { - if (initConfig !== undefined) { - applyConfig(initConfig); + /** + * @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) { + pearAdmin.apply(options); } else { - applyConfig(pearAdmin.readConfig()); + this.configurationProvider().then((result) => { + pearAdmin.apply(result); + }) } } - this.readConfig = function() { - if (configType === "yml") { - return yaml.load(configPath); - } else { - var data; - $.ajax({ - url: configPath, - type: 'get', - dataType: 'json', - async: false, - success: function(result) { - data = result; + /** + * @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); + window.PearAdmin = pearAdmin; + } + + /** + * @since Pear Admin 4.0 + * + * 菜单搜索 + */ + this.menuSearchRender = function (options) { + menuSearch.render({ + elem: ".menuSearch", + dataProvider: () => pearAdmin.instances.menu.cache(), + select: (node) => { + if (node.type == "1") { + pearAdmin.instances.menu.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) { + pearAdmin.instances.tabPage.changePage({ + id: node.id, + title: node.title, + type: node.openType, + url: node.url, + close: true + }); + } else { + pearAdmin.instances.page.changePage({ + href: node.url, + type: node.openType + }); + } + } } - }) - return data; - } + } + }) } - this.messageRender = function(option) { - var option = { + /** + * @since Pear Admin 4.0 + * + * 消息中心 + */ + this.messageCenterRender = function (options) { + messageCenter.render({ elem: '.message', - url: option.header.message, + url: options.header.message, height: '250px' - }; - msgInstance = message.render(option); + }); } - this.logoRender = function(param) { + this.logoRender = function (param) { $(".layui-logo .logo").attr("src", param.logo.image); $(".layui-logo .title").html(param.logo.title); } - this.menuRender = function(param) { - sideMenu = pearMenu.render({ - elem: 'sideMenu', - async: param.menu.async !== undefined ? param.menu.async : true, - theme: "dark-theme", - height: '100%', + /** + * @since Pear Admin 4.0 + * + * 侧边菜单 + */ + this.menuRender = function (param) { + pearAdmin.instances.menu = menu.render({ + elem: 'side', + async: param.menu.async, 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, - url: param.menu.data, data: param.menu.data, + url: param.menu.data, parseData: false, - change: function() { + defaultMenu: 0, + change: function () { compatible(); }, - done: function() { - sideMenu.isCollapse = param.menu.collapse; - sideMenu.selectItem(param.menu.select); - pearAdmin.collapse(param); + done: function () { + pearAdmin.instances.menu.isCollapse = param.menu.collapse; + pearAdmin.instances.menu.selectItem(param.menu.select); + if (param.menu.collapse) { + if ($(window).width() >= 768) { + collapse() + } + } } }); } - this.bodyRender = function(param) { + /** + * @since Pear Admin 4.0 + * + * 视图容器 + */ + this.bodyRender = function (param) { - body.on("click", ".refresh", function() { - refresh(); + body.on("click", ".refresh", function () { + pearAdmin.refresh(); }) if (isMuiltTab(param) === "true" || isMuiltTab(param) === true) { - bodyTab = pearTab.render({ + + pearAdmin.instances.tabPage = tabPage.render({ elem: 'content', - roll: true, - tool: true, - width: '100%', - height: '100%', session: param.tab.session, index: 0, tabMax: param.tab.max, preload: param.tab.preload, - closeEvent: function(id) { - sideMenu.selectItem(id); + closeEvent: function (id) { + pearAdmin.instances.menu.selectItem(id); }, data: [{ id: param.tab.index.id, @@ -126,58 +231,82 @@ 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() { - sideMenu.selectItem(id); - bodyTab.positionTab(); + setTimeout(function () { + pearAdmin.instances.menu.selectItem(id); + pearAdmin.instances.tabPage.positionTab(); }, 500) } } }); - bodyTab.click(function(id) { + pearAdmin.instances.tabPage.click(function (id) { if (!param.tab.keepState) { - bodyTab.refresh(false); + pearAdmin.instances.tabPage.refresh(false); } - bodyTab.positionTab(); - sideMenu.selectItem(id); + pearAdmin.instances.tabPage.positionTab(); + pearAdmin.instances.menu.selectItem(id); }) - sideMenu.click(function(dom, data) { - bodyTab.addTabOnly({ - id: data.menuId, - title: data.menuTitle, - url: data.menuUrl, - icon: data.menuIcon, - close: true - }, 300); + pearAdmin.instances.menu.click(function (dom, data) { + if (data.menuOpenType === "_layer") { + layer.open({ type: 2, title: data.menuTitle, content: data.menuUrl, area: ['80%', '80%'], maxmin: true }) + } else { + pearAdmin.instances.tabPage.changePage({ + id: data.menuId, + title: data.menuTitle, + type: data.menuOpenType, + url: data.menuUrl, + close: true + }); + } compatible(); }) + } else { - bodyFrame = pearFrame.render({ + + pearAdmin.instances.page = page.render({ elem: 'content', title: '首页', - url: param.tab.index.href, - width: '100%', - height: '100%' + url: param.tab.index.href }); - sideMenu.click(function(dom, data) { - bodyFrame.changePage(data.menuUrl, true); + pearAdmin.instances.menu.click(function (dom, data) { + if (data.menuOpenType === "_layer") { + layer.open({ type: 2, title: data.menuTitle, content: data.menuUrl, area: ['80%', '80%'], maxmin: true }) + } else { + pearAdmin.instances.page.changePage({ href: data.menuUrl, type: data.menuOpenType }); + } compatible() }) } } - this.keepLoad = function(param) { + this.keepLoad = function (param) { compatible() - setTimeout(function() { - $(".loader-main").fadeOut(200); + setTimeout(function () { + $(".loader-wrapper").fadeOut(200); }, param.other.keepLoad) } - this.themeRender = function(option) { + /*** + * @since Pear Admin 4.0 + * + * 切换主题色 + */ + this.changeTheme = function () { + const variableKey = "--global-primary-color"; + const variableVal = localStorage.getItem("theme-color-color"); + document.documentElement.style.setProperty(variableKey, variableVal); + } + + /** + * @since Pear Admin 4.0 + * + * 主题配置 + */ + this.themeRender = function (option) { if (option.theme.allowCustom === false) { $(".setting").remove(); } @@ -186,7 +315,7 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm 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)); + pearAdmin.changeTheme(); var menu = localStorage.getItem("theme-menu"); if (menu === null) { @@ -243,40 +372,51 @@ 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; } } + 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); + localStorage.setItem("footer", footer); + localStorage.setItem("control", control); localStorage.setItem("theme-header", header); 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.switchTheme(dark); 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") { footerDOM.removeClass("close"); - bodyDOM.css("bottom", footerDOM.outerHeight()); + bodyDOM.css("height", "calc(100% - 105px)"); } else { footerDOM.addClass("close"); - bodyDOM.css("bottom", ""); + bodyDOM.css("height", "calc(100% - 60px)"); } } - this.bannerSkin = function(theme) { + this.bannerSkin = function (theme) { var pearAdmin = $(".pear-admin"); pearAdmin.removeClass("banner-layout"); if (theme === true || theme === "true") { @@ -284,158 +424,81 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } } - this.collapse = function(param) { - if (param.menu.collapse) { - if ($(window).width() >= 768) { - collapse() - } + this.switchTheme = function (checked) { + var $pearAdmin = $(".pear-admin"); + $pearAdmin.removeClass("pear-admin-dark"); + if (checked === true || checked === "true") { + $pearAdmin.addClass("pear-admin-dark"); } } - 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.removeClass("light-theme"); + pearAdmin.removeClass("auto-theme"); pearAdmin.addClass(theme); } - this.logout = function(callback) { - logout = 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; + /** + * 设置注销逻辑 + * + * @param callback 实现 + */ + this.logout = function (callback) { + if (callback != undefined) { + logout = callback; } } - this.closeTab = function(id) { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - pearTab.delTabByElem('content', id, function(currentId){ - sideMenu.selectItem(currentId); - }); + /** + * @since Pear Admin 4.0.3 + * + * 刷新当前页面 + */ + this.refresh = function () { + var refreshBtn = $(".refresh a"); + refreshBtn.addClass("layui-anim layui-anim-rotate layui-anim-loop layui-icon-loading"); + refreshBtn.removeClass("layui-icon-refresh-1"); + if (isMuiltTab(configurationCache) === "true" || isMuiltTab(configurationCache) === true) pearAdmin.instances.tabPage.refresh(true); + else pearAdmin.instances.page.refresh(true); + setTimeout(function () { + refreshBtn.removeClass("layui-anim layui-anim-rotate layui-anim-loop layui-icon-loading"); + refreshBtn.addClass("layui-icon-refresh-1"); + }, 600) + } + + /** + * @since Pear Admin 4.0.3 + * + * 切换内容页面 + * + * PS: tabPages 模式下,如果页面不存在则新增,反则仅做切换。 + */ + this.changePage = function (data) { + if (isMuiltTab(configurationCache) === "true" || isMuiltTab(configurationCache) === true) { + pearAdmin.instances.tabPage.changePage({ id: data.id, title: data.title, url: data.url, type: data.type, close: true }); } else { - return; + pearAdmin.instances.page.changePage({ href: data.url, type: data.type }); } } - 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() { - var refreshA = $(".refresh a"); - refreshA.removeClass("layui-icon-refresh-1"); - refreshA.addClass("layui-anim"); - 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); - else bodyFrame.refresh(true); - setTimeout(function() { - refreshA.addClass("layui-icon-refresh-1"); - refreshA.removeClass("layui-anim"); - refreshA.removeClass("layui-anim-rotate"); - refreshA.removeClass("layui-anim-loop"); - refreshA.removeClass("layui-icon-loading"); - }, 600) - } - + /** + * @since Pear Admin 4.0 + * + * 菜单折叠 + */ function collapse() { - sideMenu.collapse(); + pearAdmin.instances.menu.collapse(); var admin = $(".pear-admin"); var left = $(".layui-icon-spread-left") var right = $(".layui-icon-shrink-right") @@ -443,246 +506,74 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm left.addClass("layui-icon-shrink-right") left.removeClass("layui-icon-spread-left") admin.removeClass("pear-mini"); - sideMenu.isCollapse = false; + pearAdmin.instances.menu.isCollapse = false; } else { right.addClass("layui-icon-spread-left") right.removeClass("layui-icon-shrink-right") admin.addClass("pear-mini"); - sideMenu.isCollapse = true; + pearAdmin.instances.menu.isCollapse = true; } } - body.on("click", ".logout", function() { - if (logout() && bodyTab) { - bodyTab.clear(); - } - }) - - body.on("click", ".collapse,.pear-cover", function() { - 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)); + /** + * @since Pear Admin 4.0 + * + * 使用 admin.logout(Function) 实现注销 + * + * Promise 作为返回值类型时,泛型内容为 true 时视为注销成功,则清除 pearAdmin.instances.tabPage 缓存 + * + * 否则视为注销失败,不做任何处置。 + */ + body.on("click", ".logout", function () { + var promise = logout(); + if (promise != undefined) { + promise.then((asyncResult) => { + if (asyncResult) { + if (pearAdmin.instances.tabPage != undefined) { + pearAdmin.instances.tabPage.clear(); } - } 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; + } else { + if (pearAdmin.instances.tabPage != undefined) { + pearAdmin.instances.tabPage.clear(); + } } + }) - // 创建搜索列表 - 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 menuIcon = $(this).attr("smenu-icon"); - 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"); - }) - - // 监听键盘事件 - // 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(); - 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", ".collapse,.pear-cover", function () { + collapse(); }); - - 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() { - if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { - bodyTab.addTabOnly({ + body.on("click", '[user-menu-id]', function () { + if (isMuiltTab(configurationCache) === "true" || isMuiltTab(configurationCache) === true) { + pearAdmin.instances.tabPage.changePage({ id: $(this).attr("user-menu-id"), title: $(this).attr("user-menu-title"), url: $(this).attr("user-menu-url"), - icon: "", close: true }, 300); } else { - bodyFrame.changePage($(this).attr("user-menu-url"), true); + pearAdmin.instances.page.changePage({ + href: $(this).attr("user-menu-url"), + type: "_component" + }, true); } }); - body.on("click", ".setting", function() { + body.on("click", ".setting", function () { var menuItem = '
                      • ' + @@ -724,28 +615,36 @@ 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 +665,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 +688,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); + pearAdmin.changeTheme(); }) - form.on('switch(banner)', function(data) { + form.on('switch(banner)', function (data) { localStorage.setItem("theme-banner", this.checked); pearAdmin.bannerSkin(this.checked); }) @@ -823,6 +722,11 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm pearAdmin.footer(this.checked); }) + form.on('switch(dark)', function (data) { + localStorage.setItem("dark", this.checked); + pearAdmin.switchTheme(this.checked); + }) + if (localStorage.getItem('theme-banner') === 'true') { $('input[name="banner"]').attr('checked', 'checked') } else { @@ -841,24 +745,24 @@ 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 { $('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'); } }); }); - 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 +770,22 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm pearAdmin.menuSkin(theme); }); - body.on('click', '[data-select-header]', function() { - var theme = $(this).attr('data-select-header'); + body.on('click', '[data-select-header]', function () { + var headerColor = $(this).attr('data-select-header'); $('[data-select-header]').removeClass("layui-this"); $(this).addClass("layui-this"); - localStorage.setItem("theme-header", theme); - pearAdmin.headerSkin(theme); + localStorage.setItem("theme-header", headerColor); + if (headerColor == "auto-theme") { + localStorage.setItem("auto-head", true); + pearAdmin.changeTheme(); + } else { + localStorage.setItem("auto-head", false); + pearAdmin.changeTheme(); + } + pearAdmin.headerSkin(headerColor); }); - 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"); @@ -882,33 +793,21 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm 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)); + pearAdmin.changeTheme(); }); - 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); - } - } - 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; } }) @@ -918,11 +817,11 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm function buildColorHtml() { var colors = ""; - $.each(config.colors, function(i, value) { + $.each(configurationCache.colors, function (i, value) { colors += ""; }) - return "
                        主题配色
                        " + + return "
                        主题颜色
                        " + colors + "
                        " } @@ -944,18 +843,6 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm } } - 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) { @@ -968,29 +855,17 @@ 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"); } } - $(window).on('resize', debounce(function () { - if (sideMenu && !sideMenu.isCollapse && $(window).width() <= 768) { + $(window).on('resize', tools.debounce(function () { + if (pearAdmin.instances.menu && !pearAdmin.instances.menu.isCollapse && $(window).width() <= 768) { collapse(); } - },50)); + }, 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); - }) + }) \ No newline at end of file diff --git a/component/pear/module/area.js b/component/pear/module/area.js deleted file mode 100644 index 604c91e9167bba0253b2124f17dc417441e47492..0000000000000000000000000000000000000000 --- 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/button.js b/component/pear/module/button.js index d77c18d2f3850ed307d0e418dfbafccc58d0a444..29555cf6a8b0d8ba4399eaedbaa6f1f37d2a09ba 100644 --- a/component/pear/module/button.js +++ b/component/pear/module/button.js @@ -1,53 +1,59 @@ -layui.define(['jquery'], function(exports) { +layui.define(['jquery'], function (exports) { "use strict"; /** + * @since Pear Admin 4.0 + * * Button component * */ var MOD_NAME = 'button', $ = layui.jquery; - var button = function(opt) { + var button = function (opt) { this.option = opt; }; - /** + /** + * @since Pear Admin 4.0 + * * Button start loading * */ - button.prototype.load = function(opt) { - - var option = { + button.prototype.load = function (opt) { + + var options = { elem: opt.elem, time: opt.time ? opt.time : false, - done: opt.done ? opt.done : function(){} + done: opt.done ? opt.done : function () { } } - var text = $(option.elem).html(); - - $(option.elem).html(""); - - $(option.elem).attr("disabled", "disabled"); - - var buttons = $(option.elem); - - if (option.time != "" || option.time !=false) { - setTimeout(function() { - $(option.elem).attr("disabled", false); - buttons.html(text); - option.done(); - }, option.time); + + var text = $(options.elem).html(); + + $(options.elem).html(""); + $(options.elem).attr("disabled", "disabled"); + + var $button = $(options.elem); + + if (options.time != "" || options.time != false) { + setTimeout(function () { + $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); } - + /** + * @since Pear Admin 4.0 + * * Button stop loaded * */ - button.prototype.stop = function(success) { + button.prototype.stop = function (success) { $(this.option.elem).attr("disabled", false); $(this.option.elem).html(this.option.text); success && success(); - } + } exports(MOD_NAME, new button()); }); diff --git a/component/pear/module/card.js b/component/pear/module/card.js deleted file mode 100644 index 76934da3e3e3288080eed9a667b6284406e81e4a..0000000000000000000000000000000000000000 --- 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/common.js b/component/pear/module/common.js deleted file mode 100644 index 50f2f15db65016e574d139d98620d906d83f7f0a..0000000000000000000000000000000000000000 --- 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/context.js b/component/pear/module/context.js deleted file mode 100644 index a803e02b883d48cf93b29553de4f845ee40eab06..0000000000000000000000000000000000000000 --- 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/convert.js b/component/pear/module/convert.js deleted file mode 100644 index 1f86ba5af31f0ce9a218509ecc1cd4b75add1147..0000000000000000000000000000000000000000 --- 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/cropper.js b/component/pear/module/cropper.js deleted file mode 100644 index 6d774977cbafa228bd022693c5e939aa68f919a1..0000000000000000000000000000000000000000 --- 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/design.js b/component/pear/module/design.js deleted file mode 100644 index 6bcf7acdfb06126569d51534e85a61398fb1abfa..0000000000000000000000000000000000000000 --- 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/drawer.js b/component/pear/module/drawer.js deleted file mode 100644 index a95e41ac375dae0e25831131a97eda3488c45ac8..0000000000000000000000000000000000000000 --- 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/dtree.js b/component/pear/module/dtree.js deleted file mode 100644 index 21fcbabe245c7e0a125f7d04d8531a24c711f3b4..0000000000000000000000000000000000000000 --- 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/encrypt.js b/component/pear/module/encrypt.js deleted file mode 100644 index 9594f1a0f1da95d0a13f19d9b332856d711be1cf..0000000000000000000000000000000000000000 --- 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/count.js b/component/pear/module/extends/count.js similarity index 99% rename from component/pear/module/count.js rename to component/pear/module/extends/count.js index c9a659f09545e19b3cd888d919b73842c24dfde9..fed5893283d9fa78c56c27041fdf7b1c3e2d6682 100644 --- a/component/pear/module/count.js +++ b/component/pear/module/extends/count.js @@ -34,4 +34,4 @@ layui.define(['jquery', 'element'], function(exports) { } exports(MOD_NAME, count); -}); +}); \ 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 87% rename from component/pear/module/echartsTheme.js rename to component/pear/module/extends/echartsTheme.js index 2cf0bfae7297a04c7f5f612e9597fbc64fc78fdc..c0c029baa96aedaec9156d3e8492f9396b32b0d9 100644 --- a/component/pear/module/echartsTheme.js +++ b/component/pear/module/extends/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/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/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 1e8e9521828716d4195caedf9fc57859185a10ea..769ed930a2d5640254c6e13e3ec7381955f14cc5 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/toast.js b/component/pear/module/extends/toast.js similarity index 100% rename from component/pear/module/toast.js rename to component/pear/module/extends/toast.js diff --git a/component/pear/module/yaml.js b/component/pear/module/extends/yaml.js similarity index 90% rename from component/pear/module/yaml.js rename to component/pear/module/extends/yaml.js index bb448bc5898acccaf889e1bd7332cdcfe2eefbc0..77eefb84b0d7d2b01c59f9e2c9244556fcbe9603 100644 --- a/component/pear/module/yaml.js +++ b/component/pear/module/extends/yaml.js @@ -1,15 +1,13 @@ -layui.define(['jquery', 'element'], function(exports) { +layui.define(['jquery', 'element'], function (exports) { "use strict"; - var MOD_NAME = 'yaml', - $ = layui.jquery, - element = layui.element; + var MOD_NAME = 'yaml'; - var yaml = new function() { - this.parse = function(str){ - return YAML.parse(yamlString); + var yaml = new function () { + this.parse = function (yamlStr) { + return YAML.parse(yamlStr); } - this.load = function(path){ + this.load = function (path) { return YAML.load(path); } } @@ -17,7 +15,7 @@ layui.define(['jquery', 'element'], function(exports) { }); -(function() { +(function () { function r(e, n, t) { function o(i, f) { if (!n[i]) { @@ -31,7 +29,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 +41,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 +88,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 +106,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 +128,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 +143,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 +175,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 +192,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 +202,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 +218,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 +235,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 +245,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 +261,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 +278,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 +288,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 +304,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 +327,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 +342,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 +353,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 +393,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 +446,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 +468,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 +529,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 +546,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 +588,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 +656,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 +806,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 +819,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 +867,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 +905,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 +916,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 +1110,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 +1174,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 +1182,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 +1237,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 +1309,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 +1336,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 +1393,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 +1416,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 +1434,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 +1506,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 +1523,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 +1556,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 +1584,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 +1646,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 +1675,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 +1693,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 +1706,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 +1719,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 +1737,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 +1759,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 +1778,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 +1793,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 +1819,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 +1872,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 +1883,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 +1898,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 +1927,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 +1954,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 +1963,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 +1976,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 +1988,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 +2007,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 +2026,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/frame.js b/component/pear/module/frame.js deleted file mode 100644 index 5ee6841c6542092232301d92abf3c34f39fc4510..0000000000000000000000000000000000000000 --- a/component/pear/module/frame.js +++ /dev/null @@ -1,71 +0,0 @@ -layui.define(['jquery', 'element'], function(exports) { - "use strict"; - - var $ = layui.jquery; - - var frame = function(opt) { - this.option = opt; - }; - - frame.prototype.render = function(opt) { - var option = { - elem: opt.elem, - url: opt.url, - title: opt.title, - width: opt.width, - height: opt.height, - 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) { - var $frameLoad = $("#" + this.option.elem).find(".pear-frame-loading"); - var $frame = $("#" + this.option.elem + " iframe"); - $frame.attr("src", url); - renderContentLoading($frame, $frameLoad, loading); - } - - frame.prototype.changePageByElement = function(elem, url, title, loading) { - var $frameLoad = $("#" + elem).find(".pear-frame-loading"); - var $frame = $("#" + elem + " iframe"); - $frame.attr("src", url); - $("#" + elem + " .title").html(title); - renderContentLoading($frame, $frameLoad, 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({ - display: 'block' - }); - $(iframeEl).on('load', function() { - loadingEl.fadeOut(1000); - }) - } - } - - exports('frame', new frame()); -}); diff --git a/component/pear/module/fullscreen.js b/component/pear/module/fullscreen.js index a0f3b4dd49b26a13546c64f1861efb3c2ff42c04..ff8a192a429eac7a2b47c7fca77a065ba1fb20bb 100644 --- a/component/pear/module/fullscreen.js +++ b/component/pear/module/fullscreen.js @@ -1,35 +1,39 @@ -layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'menu', 'frame', 'theme', 'convert'], - function(exports) { - "use strict"; +layui.define(['jquery', 'element'], + function (exports) { + var $ = layui.jquery; var defer = $.Deferred(); - var fullScreen = new function() { + var fullScreen = new function () { + this.func = null; - this.onFullchange = function(func){ + + this.onFullchange = function (func) { this.func = func; - var evts = ['fullscreenchange','webkitfullscreenchange','mozfullscreenchange','MSFullscreenChange']; - for(var i=0;i'; - } 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/loading.js b/component/pear/module/loading.js deleted file mode 100644 index 447bd38f8199880901c334ffea87a1b7d04ebdb6..0000000000000000000000000000000000000000 --- a/component/pear/module/loading.js +++ /dev/null @@ -1,2091 +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; - }; - // 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); -}) - diff --git a/component/pear/module/menu.js b/component/pear/module/menu.js index 33cde7f4a024eb328d44ee98c8a633b33b786b27..bde57b7a8548853c2b2d919b44dd679db4b64766 100644 --- a/component/pear/module/menu.js +++ b/component/pear/module/menu.js @@ -5,15 +5,15 @@ 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, - async: opt.async, + async: typeof opt.async === 'undefined' ? true : opt.async, parseData: opt.parseData, url: opt.url, method: opt.method ? opt.method : "GET", @@ -21,16 +21,18 @@ 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(){ + + option.done = function () { if (option.control) { rationalizeHeaderControlWidthAuto(option); } @@ -50,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 () { @@ -83,10 +83,14 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }); }, 1000) - return new pearMenu(option); + return new menu(option); + } + + menu.prototype.cache = function () { + return this.option.data; } - 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); @@ -96,7 +100,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) { @@ -139,14 +144,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" @@ -209,7 +214,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")) { @@ -223,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"); @@ -238,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); + } + }) } } @@ -278,13 +283,12 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } } element.init(); - downShow(option); option.done(); } function createMenu(option) { var menuHtml = '
                                      ' + '" class="layui-nav arrow pear-menu layui-nav-tree pear-nav-tree" ' + (option.accordion ? "lay-accordion" : "") + '>' $.each(option.data, function (i, item) { var content = '
                                    • '; if (i == option.defaultOpen) { @@ -304,7 +308,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { '" ' + target + '>' + item.title + ''; } else if (item.type == 1) { - content += '' + item.title + ''; @@ -374,7 +378,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { ''; } else if (note.type == 1) { // 创 建 菜 单 结 构 - content += '' + note.title + ''; @@ -433,7 +437,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { '">' + note.title + ''; } else if (note.type == 1) { // 创 建 菜 单 结 构 - content += '' + note.title + ''; } @@ -450,49 +454,6 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return content; } - 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; - - if ($(this).parent().is(".layui-nav-itemed")) { - if (option.accordion) { - var currentDom = $(this).parent().siblings('.layui-nav-itemed').children('.layui-nav-child'); - currentDom.animate({ - height: '0px' - }, 240, function () { - currentDom.css({ - height: "auto", - }); - $(this).parent().removeClass("layui-nav-itemed"); - $(this).find('.layui-nav-itemed').removeClass("layui-nav-itemed"); - }); - } - ele.height(0); - ele.animate({ - height: heights + "px" - }, 240, function () { - ele.css({ - height: "auto" - }); - }); - } else { - $(this).parent().addClass("layui-nav-itemed"); - ele.animate({ - height: "0px" - }, 240, function () { - ele.css({ - height: "auto" - }); - $(this).parent().removeClass("layui-nav-itemed"); - }); - } - } - }) - } - /** 二 级 悬 浮 菜 单*/ function isHoverMenu(b, option) { if (b) { @@ -557,15 +518,16 @@ 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); }) - $(document).ready(function () { - rationalizeHeaderControlWidth(option); + setTimeout(() => { + rationalizeHeaderControlWidth(option); + }, 1000); }); } - exports(MOD_NAME, new pearMenu()); -}) + exports(MOD_NAME, new menu()); +}) \ No newline at end of file diff --git a/component/pear/module/menuSearch.js b/component/pear/module/menuSearch.js new file mode 100644 index 0000000000000000000000000000000000000000..41775ba8e9d58a81b740c236b35e7f60c0a28cbf --- /dev/null +++ b/component/pear/module/menuSearch.js @@ -0,0 +1,233 @@ +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"); + }) + + // 监听键盘事件 + $('.menu-search-content').off("keydown").keydown(function (e) { + if (e.keyCode === 13 || e.keyCode === 32) { + e.preventDefault(); + var that = $(".menu-search-list li.this"); + var id = that.attr("smenu-id"); + var title = that.attr("smenu-title"); + var url = that.attr("smenu-url"); + var type = that.attr("smenu-type"); + var openType = that.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/message.js b/component/pear/module/message.js deleted file mode 100644 index 54e96bd38aeb423693e3d7555a855f4927cc3716..0000000000000000000000000000000000000000 --- a/component/pear/module/message.js +++ /dev/null @@ -1,140 +0,0 @@ -layui.define(['table', 'jquery', 'element'], function (exports) { - "use strict"; - - var MOD_NAME = 'message', - $ = 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; - if (count > 0){ - notice = '
                                      • ' + - '' + - '
                                        '; - }else { - notice = '
                                      • ' + - '' + - '
                                        '; - } - - noticeTitle += '
                                      '; - noticeContent += '
                                    '; - notice += noticeTitle; - notice += noticeContent; - notice += '
                                    '; - return notice; - } - - exports(MOD_NAME, new message()); -}) diff --git a/component/pear/module/messageCenter.js b/component/pear/module/messageCenter.js new file mode 100644 index 0000000000000000000000000000000000000000..c7535cb30c78fc5464df6b95b10b8a0085d435b9 --- /dev/null +++ b/component/pear/module/messageCenter.js @@ -0,0 +1,85 @@ +layui.define(['table', 'jquery', 'element', 'dropdown'], function (exports) { + "use strict"; + + var MOD_NAME = 'messageCenter', + $ = layui.jquery, + 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, + height: opt.height, + data: opt.data + } + if (option.url != false) { + $.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); + } + + 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 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/module/notice.js b/component/pear/module/notice.js deleted file mode 100644 index 4ea67ec8b3e784abd5b28d103042bd3499bdaf2d..0000000000000000000000000000000000000000 --- 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/page.js b/component/pear/module/page.js new file mode 100644 index 0000000000000000000000000000000000000000..52ff2ef0313154b15ca5e25414513a5d86bb20f6 --- /dev/null +++ b/component/pear/module/page.js @@ -0,0 +1,119 @@ +layui.define(['jquery', 'element'], function (exports) { + "use strict"; + + var $ = layui.jquery; + var element = layui.element; + + var page = function (opt) { + this.option = opt; + }; + + /** + * @since Pear Admin 4.0 + * + * 创建 Page 页面 + */ + page.prototype.render = function (opt) { + var option = { + elem: opt.elem, + url: opt.url, + width: opt.width || "100%", + height: opt.height || "100%", + title: opt.title + } + renderContent(option); + return new page(option); + } + + /** + * @since Pear Admin 4.0 + * + * 切换 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', + dataType: 'html', + success: function (data) { + $frame.html(data) + }, + error: function (xhr) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } + }); + } + $frame.attr("type", options.type); + $frame.attr("href", options.href); + } + + 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', + url: $frame.attr("href"), + 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(` +
                                    +
                                    +
                                    +
                                    + + + + +
                                    +
                                    +
                                    `); + + var $frame = $("#" + option.elem).find(".pear-page-content"); + + 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()); +}); \ No newline at end of file diff --git a/component/pear/module/popover/popover.js b/component/pear/module/popover/popover.js deleted file mode 100644 index 7f2e9bd7dfd019eb88f5933890c2aab33a637d29..0000000000000000000000000000000000000000 --- a/component/pear/module/popover/popover.js +++ /dev/null @@ -1,1219 +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 3b095f72cdfea386ca6adcf4ae1ac7c1b14128c2..0000000000000000000000000000000000000000 --- 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/step.js b/component/pear/module/step.js deleted file mode 100644 index 4c96d1788571c5c08b70386186365849bf54ce87..0000000000000000000000000000000000000000 --- 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/tab.js b/component/pear/module/tabPage.js similarity index 37% rename from component/pear/module/tab.js rename to component/pear/module/tabPage.js index 088a3aa0b8e786935fdb1ead8a32fab3c3163bee..579588cd1044b705497f603c396c89a3a91164ee 100644 --- a/component/pear/module/tab.js +++ b/component/pear/module/tabPage.js @@ -1,11 +1,12 @@ -layui.define(['jquery', 'element'], function(exports) { +layui.define(['jquery', 'element', 'dropdown'], function (exports) { "use strict"; - var MOD_NAME = 'tab', + var MOD_NAME = 'tabPage', $ = layui.jquery, + dropdown = layui.dropdown, element = layui.element; - var pearTab = function(opt) { + var tabPage = function (opt) { this.option = opt; }; @@ -13,29 +14,29 @@ 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, 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) { - 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"); - tabData.forEach(function(item, index) { + 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; } @@ -48,111 +49,149 @@ 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(); - toolEvent(option); + $("#" + option.elem).width(opt.width); $("#" + option.elem).height(opt.height); $("#" + option.elem).css({ position: "relative" }); + 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-tab-control > .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) { - // 获取当前元素位置 + 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, shade: false, - skin: 'pear-tab-menu', + skin: 'pear-tab-page-menu', closeBtn: false, area: [menuWidth + 'px', '108px'], fixed: true, anim: false, isOutAnim: false, offset: [top, left], - content: menu, //iframe的url, - success: function(layero, index) { + content: menu, + 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; }) - } }); return false; }) mousewheelAndTouchmoveHandler(option) - return new pearTab(option); + return new tabPage(option); } - pearTab.prototype.click = function(callback) { - var elem = this.option.elem; + tabPage.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); - } - } + sessionStorage.setItem(option.elem + "-pear-tab-page-data-current", id); callback(id); }); } - 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() { + $tabTitle.children("li").each(function () { if ($(this).hasClass('layui-this')) { return false; } else { @@ -164,166 +203,131 @@ layui.define(['jquery', 'element'], function(exports) { }, 200); } - 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) { - var title = ''; - if (opt.close) { - title += '' + opt.title + - ''; - } else { - title += '' + opt.title + - ''; - } - element.tabAdd(this.option.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; - } - }) + /** + * @since Pear Admin 4.0 + * + * 切换选项卡 + * + * @param opt 内容 + */ + tabPage.prototype.changePage = function (opt) { - if (isData == false) { - element.tabAdd(elem, { + var title = ` + ${opt.title} + `; + + if ($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]").length <= + 0) { + + var that = this; + + if (opt.type === "_iframe") { + + element.tabAdd(this.option.elem, { + id: opt.id, title: title, - content: '', - id: opt.id + content: `` }); - if (time != false && time != 0) { - tabIframeLoading(elem, opt.id); - } - tabData.push(opt); - sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData)); - } - } - sessionStorage.setItem(elem + "-pear-tab-data-current", opt.id); - element.tabChange(elem, opt.id); - } + } else { - /** 添 加 唯 一 选 项 卡 */ - 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 - }); - if (time != false && time != 0) { - tabIframeLoading(this.option.elem, opt.id); + $.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(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-page-data", JSON.stringify(tabData)); + sessionStorage.setItem(that.option.elem + "-pear-tab-page-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,79 +342,104 @@ layui.define(['jquery', 'element'], function(exports) { } } - element.tabAdd(this.option.elem, { - title: title, - content: '', - id: opt.id - }); - if (time != false && time != 0) { - tabIframeLoading(this.option.elem, opt.id); + var that = this; + 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(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-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); } - // 刷 新 指 定 的 选 项 卡 - pearTab.prototype.refresh = function(time) { - // 刷 新 指 定 的 选 项 卡 - var $iframe = $(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-content .layui-show") - .find("iframe"); + /** + * 刷新当前选型卡 + * + * @param time 动画时长 + */ + tabPage.prototype.refresh = function (time) { + + var $iframe = $(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-content .layui-show > *"); + var $iframeLoad; + if (time != false && time != 0) { - tabIframeLoading(this.option.elem); + $iframeLoad = $("#" + this.option.elem).find(".pear-tab-page-loading"); + $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" - }); - index++; - $iframe.on("load", function() { - pearLoad.fadeOut(1000, function() { - pearLoad.remove(); + if ($iframe.attr("type") === "_iframe") { + $iframe.attr("src", $iframe.attr("src")); + $iframe.on("load", function () { + $iframeLoad.fadeOut(1000, function () { + $iframeLoad.css({ + display: "none" + }); + }); + }) + } else { + $.ajax({ + url: $iframe.attr("src"), + type: 'get', + dataType: 'html', + success: function (data) { + $iframe.html(data); + if ($iframeLoad != undefined) { + $iframeLoad.fadeOut(1000, function () { + $iframeLoad.css({ + display: "none" + }); + }); + } + }, + error: function (xhr) { + return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!'); + } }); - }) + } } - function tabDelete(elem, id, callback, option) { - //根据 elem id 来删除指定的 layui title li + function tabDelete(elem, id, callback) { 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("*[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 = 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; } @@ -426,25 +455,24 @@ layui.define(['jquery', 'element'], 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 = tabData.filter(function(item) { + 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 - var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("iframe[id='" + id + "']").parent(); - // 删除 + var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("*[id='" + id + "']").parent(); tabContent.remove(); } + /** + * @since Pear Admin 4.0 + */ function createTab(option) { var type = ""; - var types = option.type + " "; if (option.roll == true) { type = "layui-tab-roll"; } @@ -454,63 +482,63 @@ layui.define(['jquery', 'element'], function(exports) { if (option.roll == true && option.tool != false) { type = "layui-tab-rollTool"; } - var tab = '
                                    '; - var title = '
                                      '; + + var headers = '
                                        '; var content = '
                                        '; - var control = - '
                                        • '; + var loading = '
                                          ' + var control = `
                                          +
                                        • +
                                        • +
                                        • +
                                          `; // 处 理 选 项 卡 头 部 var index = 0; - $.each(option.data, function(i, item) { - var TitleItem = ''; - if (option.index == index) { - TitleItem += '
                                        • '; - } else { - TitleItem += '
                                        • '; - } - if (item.close) { - // 当 前 选 项 卡 可 以 关 闭 - TitleItem += '' + item.title + ''; - } else { - // 当 前 选 项 卡 不 允 许 关 闭 - TitleItem += '' + item.title + ''; - } - TitleItem += '
                                        • '; - title += TitleItem; - if (option.index == index) { - - // 处 理 显 示 内 容 - content += '
                                          ' + $.each(option.data, function (i, item) { + + var titleItem = `
                                        • + + + ${item.title} + +
                                        • +
                                        • `; + + headers += titleItem; + + if (item.type === "_iframe") { + + content += `
                                          ` + } 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++; }); - title += '
                                        '; + headers += '
                                      '; content += '
                                    '; - control += '
                                    关 闭 当 前
                                    ' - control += '
                                    关 闭 其 他
                                    ' - control += '
                                    关 闭 全 部
                                    ' - control += '
                                    '; - tab += title; + tab += headers; tab += control; tab += content; + tab += loading; tab += '
                                    '; tab += '' return tab; @@ -531,15 +559,21 @@ layui.define(['jquery', 'element'], 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) { - $("#" + option.elem + "closeThis").click(function() { + $("#" + option.elem + "closeThis").click(function () { var currentTab = contextTabDOM; if (currentTab.find("span").is(".able-close")) { @@ -554,10 +588,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 +602,9 @@ layui.define(['jquery', 'element'], function(exports) { layer.close(index); }) - $("#" + option.elem + "closeAll").click(function() { - var currentId = contextTabDOM.attr("lay-id"); + $("#" + option.elem + "closeAll").click(function () { 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); } @@ -580,56 +613,15 @@ 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'); 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 +635,12 @@ 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(); @@ -659,5 +652,5 @@ layui.define(['jquery', 'element'], function(exports) { }); } - exports(MOD_NAME, new pearTab()); + exports(MOD_NAME, new tabPage()); }) diff --git a/component/pear/module/tag.js b/component/pear/module/tag.js deleted file mode 100644 index b7222ce296ba1ee1f2fe61f303cbd2545b412401..0000000000000000000000000000000000000000 --- 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/theme.js b/component/pear/module/theme.js deleted file mode 100644 index 01fd0267b91ba2d5faa99faac68cd6710ad1cfb3..0000000000000000000000000000000000000000 --- a/component/pear/module/theme.js +++ /dev/null @@ -1,102 +0,0 @@ -layui.define(["jquery","layer"], function (exports) { - var MOD_NAME = 'theme', - $ = layui.jquery; - - var theme = {}; - theme.autoHead = false; - - 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); - 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, second) { - - 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 += '#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-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;}' - 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 += '.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"){ - 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); -}); \ No newline at end of file diff --git a/component/pear/module/tinymce/tinymce.js b/component/pear/module/tinymce/tinymce.js deleted file mode 100644 index b6ef22032c3ee390e2f454cd78c57f328dad4900..0000000000000000000000000000000000000000 --- 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 d31c90729dd5f8f653d00f8f772e14fcf94f1634..0000000000000000000000000000000000000000 --- 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 086f297d3278cfd6ef86b01297022f883ff80dd5..0000000000000000000000000000000000000000 --- 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 a52bf03f9a3ae977eaca0d3f4c406199cc15b023..0000000000000000000000000000000000000000 --- 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 89b106c296961d5b77563073977757a8bfefeba0..0000000000000000000000000000000000000000 --- 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 0dd07b0660256bb5730d03a6dadcb61b93320626..0000000000000000000000000000000000000000 --- 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 dfa80d9ae746cd6af06417ab91da6d6876ca9dc1..0000000000000000000000000000000000000000 --- 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 244005414ba8a9b59c7c5462e04a8c580cf31427..0000000000000000000000000000000000000000 --- 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 01cb7d5383df5816d4c610fb679ceaeadd16d04e..0000000000000000000000000000000000000000 --- 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 cd2529400b592035216299e9f052832fb5a5a510..0000000000000000000000000000000000000000 --- 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 5b7ac22397ac5f8615dd700ba86b5c155bdb0f41..0000000000000000000000000000000000000000 --- 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 a0471d465ff1b12ba3a734c34188ef09596ef37e..0000000000000000000000000000000000000000 --- 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 cceb2ec18ffbed225037c6beb3bdaff16cd74b6c..0000000000000000000000000000000000000000 --- 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 3df46f29907ce0e27f7ceebe958fdc96932ce665..0000000000000000000000000000000000000000 --- 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 53f78f8a74bbee469a2368a0f07afc4c94ffc996..0000000000000000000000000000000000000000 --- 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 c8cbff2df8ab4e69d74252cdaef9588b3b8c72a5..0000000000000000000000000000000000000000 --- 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 67519fb5e5e07e579d047bfd429d6ecbe1ea7915..0000000000000000000000000000000000000000 --- 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 084e28762898ed8de1184330eb56f07a736e51ee..0000000000000000000000000000000000000000 --- 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 3fe1c73463d94fee54a3c9980fa2a9462c3ec972..0000000000000000000000000000000000000000 --- 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 fc9e6eb56a1d23043d43a8dc4fd30c66befd481c..0000000000000000000000000000000000000000 --- 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 e20ec96ef42b10a36acd69ec52819701ef728b7b..0000000000000000000000000000000000000000 --- 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 1bc8d72d61228f5541e3d1256c359da0717184ec..0000000000000000000000000000000000000000 --- 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 4adb59b0cf764289b4f86f4ecd4e82f1d71713bf..0000000000000000000000000000000000000000 --- 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 8295d5a5c94225301212eb5078236cc7000ac2b9..0000000000000000000000000000000000000000 --- 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 e939611e2eb8f80c0244498e8c0ee911f71c24c5..0000000000000000000000000000000000000000 --- 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 250d78655840f3c41d07243eed6ca3514c17a54b..0000000000000000000000000000000000000000 --- 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 2592f73cf86618453a95b62b7d29e38d2ebbfb02..0000000000000000000000000000000000000000 --- 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 deb9dde6471bdbdf50b70f79b2d787acd741ee2f..0000000000000000000000000000000000000000 --- 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 7dee35d74320d20e26a1be372c74fe0a25080e30..0000000000000000000000000000000000000000 --- 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 6b4b4143ca6f322f8b37f685f084da1e453e1325..0000000000000000000000000000000000000000 --- 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 dfeca9e08f3d98834e6766dcfc4eccdd3f34d5fb..0000000000000000000000000000000000000000 --- 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 d7b1cf18bcf44ec44417f54fca44fd00ae49e857..0000000000000000000000000000000000000000 --- 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 7b454364ab5f282caedd5935be003b1d99c8dfe9..0000000000000000000000000000000000000000 --- 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 8e4fb2535046f51e858e147941b114f19d36a8f2..0000000000000000000000000000000000000000 --- 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 1c9dab9316c12688ee69b954a7354df5d3965341..0000000000000000000000000000000000000000 --- 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 b9d8382587e2851bef1a0ef0ae2866ae5b779011..0000000000000000000000000000000000000000 --- 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 b8ae4bc4921ff4803eb76abb2906540b0d4b3cdd..0000000000000000000000000000000000000000 --- 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 478f4a309121936e8bb3a3e53cb4d10c69d37fa7..0000000000000000000000000000000000000000 --- 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 f5f25b560a4d076027a07be06152f9fab3c156a6..0000000000000000000000000000000000000000 --- 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bar-bg.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bar.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bg.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bg.png deleted file mode 100644 index 214744181ce35a8679e439448df4467814013368..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bg.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bottom.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/btn.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/down.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/top.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/up.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/up.png deleted file mode 100644 index 31c0b52f0662a08b3265963960c222f5e72ddda5..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/up.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-bg.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-left.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-right.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-bg.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-left.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-right.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/aleph.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/aleph.png deleted file mode 100644 index fa895d86ab81cf79137307c0eeadbedc1d9ba68c..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/aleph.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/bbbk.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/beth.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/beth.png deleted file mode 100644 index c8cb723c1e99bf47ec8a70199d56edb36971323d..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/beth.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/circleds.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/complement.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/complement.png deleted file mode 100644 index f128598ff8f0639f3822e65341c95d85c8f5dd9e..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/complement.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/daleth.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/ell.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/ell.png deleted file mode 100644 index ccc6ee32611d8493acdfe134a360c176a6de43be..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/ell.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/eth.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/eth.png deleted file mode 100644 index 501dbb12992d6d920f7c99a497cb833d3b23eaa7..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/eth.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/finv.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/finv.png deleted file mode 100644 index a838bc049826494997d266f6417389f4a697dcfb..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/finv.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/game.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/game.png deleted file mode 100644 index c0a5edcdb84ada370a68a3699306b9627d7c0df6..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/game.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/gimel.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/gimel.png deleted file mode 100644 index e4fd84081e800c0d18b57e4efe8b2b0fa8aa7094..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/gimel.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/hbar.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/hslash.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/hslash.png deleted file mode 100644 index a1e4e681936236c08d3dab451778423e36b5f1c4..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/hslash.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/im.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/mho.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/partial.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/partial.png deleted file mode 100644 index f3b46a06892fd6ca547725867240e12702685e63..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/partial.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/re.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/re.png deleted file mode 100644 index 9c96096c5e0246b5dc274ebc7f01ab69c1422be1..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/re.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/wp.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/circlearrowleft.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/circlearrowleft.png deleted file mode 100644 index 26a9213f79e6eb81dd4cf505f602d9e839ff835b..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/circlearrowleft.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/circlearrowright.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/curvearrowleft.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/curvearrowleft.png deleted file mode 100644 index 3cc06b90832d9ed31ee65827e1f8ff1a56a7ed4a..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/curvearrowleft.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/curvearrowright.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downarrow.png deleted file mode 100644 index 1b5c375b66c0c741fbe0ed352e8a954f28c352f1..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downarrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downdownarrows.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downharpoonleft.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downharpoonright.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/gets.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftarrowtail.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftharpoondown.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftharpoondown.png deleted file mode 100644 index 882f6e0307b8a657fbe3881d8487da76471ef3b7..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftharpoondown.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftharpoonup.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftleftarrows.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightarrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightarrows.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightharpoons.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightsquigarrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longleftarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longleftarrow.png deleted file mode 100644 index ab5a64e957fec6d9d670341d2304f1c468d9b766..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longleftarrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longleftrightarrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longrightarrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/looparrowleft.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/looparrowleft.png deleted file mode 100644 index a4dee7a11c8ba76a032b0480645e8d5948e0a346..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/looparrowleft.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/looparrowright.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/looparrowright.png deleted file mode 100644 index 67885fb9851c3963d4235fbb5c73ee510078843e..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/looparrowright.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/multimap.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nearrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nearrow.png deleted file mode 100644 index d5891e0d994071f14b583737d60013e4f2777e0c..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nearrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nleftarrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nrightarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nrightarrow.png deleted file mode 100644 index b29d923b4ade77c41efefd6922a9355a89b6c4f6..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nrightarrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nwarrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightarrowtail.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightharpoondown.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightharpoonup.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightleftarrows.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightleftharpoons.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightleftharpoons.png deleted file mode 100644 index 73385cbbc4c92635d026d5a9125752ee508c2d66..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightleftharpoons.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightrightarrows.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightsquigarrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/searrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/searrow.png deleted file mode 100644 index 7d887fb787e144b0d3db54d5e63d2c5f50733961..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/searrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/swarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/swarrow.png deleted file mode 100644 index 448b686517a2fb7fa1c6609c7bc43041e10ffc59..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/swarrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/to.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/to.png deleted file mode 100644 index 0053655d6189dce30b9d45e78bd37680f8562d4e..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/to.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/twoheadleftarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/twoheadleftarrow.png deleted file mode 100644 index 17bcb5495654a163529f8e598d950b3e52032cda..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/twoheadleftarrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/twoheadrightarrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-downarrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-leftarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-leftarrow.png deleted file mode 100644 index 84bf7a58fb6cc1cc6f59a0827af43366679da6f7..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-leftarrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-leftrightarrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lftarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lftarrow.png deleted file mode 100644 index 8ecff745b8aab6129ddabd489df0de188a4271c4..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lftarrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lleftarrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longleftarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longleftarrow.png deleted file mode 100644 index 1cdf790c4c7db1e59dc59b0764293b86d6c5d0cd..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longleftarrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longleftrightarrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longrightarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longrightarrow.png deleted file mode 100644 index c21e68ce4b92ad1f166e694a9f172c4ae8517ad9..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longrightarrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lsh.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lsh.png deleted file mode 100644 index 1f617890d2c94223581a9ad9e70457c42235ce68..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lsh.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nleftarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nleftarrow.png deleted file mode 100644 index 07657c0f378bdf9fe9b282e035d94323d66ab8ce..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nleftarrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nleftrightarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nleftrightarrow.png deleted file mode 100644 index daf4e65b22b699befa850064fcfce8aeda24aee9..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nleftrightarrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nrightarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nrightarrow.png deleted file mode 100644 index 902826c0bd0090b49cc1792b3185e315d27e0c7c..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nrightarrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rightarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rightarrow.png deleted file mode 100644 index 39bc77715838468777d2b722ca21bc664848832f..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rightarrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rrightarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rrightarrow.png deleted file mode 100644 index 7aed67df499ddf7aae2fc1e4a47eca71b7ff0a1e..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rrightarrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rsh.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-uparrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-updownarrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/uparrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/updownarrow.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/updownarrow.png deleted file mode 100644 index 2235860bb71ee75eb2166239c686a50ab9f0abe4..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/updownarrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upharpoonleft.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upharpoonright.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upuparrows.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/1.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/2.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/2.png deleted file mode 100644 index 07cf41b7a0c64153f42702045dac32007b435d3e..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/2.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/3.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/4.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/btn.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/brackets.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/brackets.png deleted file mode 100644 index b05c1ca3d45749e57e57dd786989f3e37b3ba8ce..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/brackets.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/down.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/down.png deleted file mode 100644 index 00a8a3ab0c9dd89b1d6228c27709a09955e4bedb..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/down.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/frac.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/frac.png deleted file mode 100644 index 104818284c7626883b9ecec14fc55cf4308c5916..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/frac.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/fx.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/fx.png deleted file mode 100644 index 2482b867f306766d743cfd68e698692ac36fcc1b..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/fx.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/int.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/int.png deleted file mode 100644 index baafcaa48d1b86a83698d37ea534e95b9c11ccce..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/int.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/lim.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/lim.png deleted file mode 100644 index 4547302d62d33498160d342759158c324fe1b37c..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/lim.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/open.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/open.png deleted file mode 100644 index 24026c9babf871c94d4a6382bf45787b942ebd12..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/open.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/script.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sin.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sin.png deleted file mode 100644 index e5b8295752eb2fd13f19d4f576b9c83ac3dc0f4d..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sin.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sqrt.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sqrt.png deleted file mode 100644 index 782a0daaf169f6983552d82fbe6215c45dc7866e..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sqrt.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sum.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/tick.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/tick.png deleted file mode 100644 index 6e874f43bfe31eb8b342b26aef70d25f08a33404..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/tick.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/up.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/up.png deleted file mode 100644 index 6eabcad30a9da3cf55745b7ffccd68203be26105..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/up.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/a.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/a.png deleted file mode 100644 index 1fc074ebd4a0099359ec951ad1cb485eca93ef8e..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/a.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/b.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/c.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/c.png deleted file mode 100644 index b407a1b2873f2d0cf871c0e2ec6285638e107907..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/c.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/d.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/e.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/e.png deleted file mode 100644 index 0ef98d17dae047821e027d2e282daf0e042a861d..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/e.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/f.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/g.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/g.png deleted file mode 100644 index bbf855fd3bb8a87c3856ef1288cc408c467314d6..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/g.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/h.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/i.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/i.png deleted file mode 100644 index cfb5814f9dbb7f3899168e5c54dfbbbbeab42d65..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/i.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/j.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/k.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/k.png deleted file mode 100644 index 032f29d812212e649f5a830f51e0b7d81fd90e6d..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/k.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/l.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/m.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/m.png deleted file mode 100644 index d9c072c81af28d766fd33f93a08bf27c0af82f77..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/m.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/n.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/n.png deleted file mode 100644 index a39869801dd4c129abac0fe9e3044f046103acf9..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/n.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/o.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/o.png deleted file mode 100644 index 9acb05bca0176f38e7d5c05289467fc080e64f98..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/o.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/p.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/p.png deleted file mode 100644 index 8c11f94f87e425abae2a4e8be63b2e5372b530c8..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/p.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/q.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/r.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/s.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/t.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/u.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/u.png deleted file mode 100644 index c5b6158764cb8ea6a945f7070168e088c40f153d..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/u.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/v.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/v.png deleted file mode 100644 index 2bba8a820679c3ea7416e32326b42b0d35980257..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/v.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/w.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/w.png deleted file mode 100644 index 82518bb6ae0db6619a0c750c69741fb775fdee2a..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/w.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/x.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/x.png deleted file mode 100644 index 58bb03c3431bdd878a0ab1046675c9d034864ebc..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/x.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/y.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/z.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/z.png deleted file mode 100644 index d8ad9de74b774ab71dd0721fb7be2f203019ea31..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/z.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/a.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/b.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/c.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/c.png deleted file mode 100644 index 21c7817937be4194eb1cf59379c7c1103ba347bb..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/c.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/d.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/d.png deleted file mode 100644 index b6cd5a38fb8db6ffaaf83d60e919c17b509bc190..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/d.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/e.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/e.png deleted file mode 100644 index 5b6d59db9cbfcbfcf2e31a21b214a54a357445e3..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/e.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/f.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/g.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/h.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/h.png deleted file mode 100644 index 8592859be72c6614e3c1712b4b6dcdb784774139..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/h.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/i.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/j.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/k.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/k.png deleted file mode 100644 index 35b3656538e97e81fb3cc14c9e074af7a5742a5a..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/k.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/l.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/l.png deleted file mode 100644 index 058d85db7d17728e115ee7288ca4be1d7a3c0c21..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/l.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/m.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/n.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/n.png deleted file mode 100644 index f8c62c3ba1edaa30681f8cac0418e10156134a30..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/n.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/o.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/p.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/q.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/r.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/s.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/s.png deleted file mode 100644 index 3942b715626334385c37dd00a9a72a466d33a71e..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/s.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/t.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/t.png deleted file mode 100644 index 5d41fd071db99a0232ea1054c18afda2274ab9ed..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/t.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/u.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/u.png deleted file mode 100644 index 8ebf4439dbdf74c3ef30326542cc124b71cc0299..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/u.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/v.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/w.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/w.png deleted file mode 100644 index 33ef1d5ba0ecab821e74c787481d80fcebfb5df7..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/w.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/x.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/x.png deleted file mode 100644 index fc7dd0b79ea122973e7b93d7165a51e5187e5444..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/x.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/y.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/z.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/a.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/b.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/b.png deleted file mode 100644 index 5bc50aae08765dc121272b26a13ecc81308f0a44..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/b.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/c.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/d.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/d.png deleted file mode 100644 index a267b36f09f3e6c909e071a0cf3f2c342626adb5..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/d.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/e.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/e.png deleted file mode 100644 index be71bf646121f468a6d5bd4b406be5af33d9bd8a..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/e.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/f.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/f.png deleted file mode 100644 index 2c170114f02e55bf06e6e8f08c5d74578c961aef..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/f.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/g.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/g.png deleted file mode 100644 index d05843d601fd4bcfa5e37c9c3a86cfccedf5e640..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/g.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/h.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/h.png deleted file mode 100644 index 41d958e53c772d9fff56fd14e053d559d3027f8d..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/h.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/i.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/i.png deleted file mode 100644 index 1e9bd348a4c199913a67c4a1081c61a42591c12b..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/i.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/j.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/j.png deleted file mode 100644 index fc66b892b3fd754a8afcb4a3257a4f7a982de5cc..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/j.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/k.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/k.png deleted file mode 100644 index 49dbc27324937a64387bca7d9b7e093fd91faac0..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/k.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/l.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/l.png deleted file mode 100644 index 8e23844bd2d6ffcb64423967ffbd83b1959c9e38..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/l.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/m.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/n.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/o.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/p.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/q.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/r.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/s.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/t.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/t.png deleted file mode 100644 index 76de18523f78d27246445583f39c8aef36342770..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/t.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/u.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ua.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ub.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uc.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uc.png deleted file mode 100644 index f15063d45aaf4fe710097b2fa36bd19e6631da92..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uc.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ud.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ud.png deleted file mode 100644 index 8671415ea5d457b8788e00e5eb19d5b50416ead5..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ud.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ue.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uf.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ug.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ug.png deleted file mode 100644 index 3fc5ede03722c1e920df918ce88c83f06371a38a..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ug.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uh.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uh.png deleted file mode 100644 index 45e18a9a41382a6e6fdec8cf200822da78e6d809..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uh.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ui.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ui.png deleted file mode 100644 index 6e9a03a702e4947c62449f691beb54825722bf48..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ui.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uj.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uj.png deleted file mode 100644 index 855aaa921d0986ea68c25a0284e044f6521bfcc9..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uj.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uk.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ul.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/um.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/um.png deleted file mode 100644 index 64d7bd4607f03b4ef9576f58a27fea89c4bebe90..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/um.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/un.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/un.png deleted file mode 100644 index 37c4bfd665a5014d1e2e440d1ef60686805abe21..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/un.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uo.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/up.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uq.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ur.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/us.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ut.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ut.png deleted file mode 100644 index 5ebab869a308986ae6e5719d98a3ba1714a01eff..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ut.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uu.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uu.png deleted file mode 100644 index fa9d8554db087962b15efa577321e38d958c0714..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uu.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uv.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uv.png deleted file mode 100644 index 8c346f1602eb24b5eff1473edb57aa3872249e4d..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uv.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uw.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uw.png deleted file mode 100644 index 223543dd561bef2af966294430c9bdd9bc92ecc1..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uw.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ux.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uy.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uz.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/v.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/w.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/x.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/x.png deleted file mode 100644 index b73a3c3a230cdfd39813eed77f6214388df24571..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/x.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/y.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/y.png deleted file mode 100644 index 158863bafe50962c5d267285da77924d6711dd6a..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/y.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/z.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/z.png deleted file mode 100644 index d3907d2aeb3a77e501d597ec4937d654acba6cfc..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/z.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/alpha.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/beta.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/chi.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/delta.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/epsilon.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/epsilon.png deleted file mode 100644 index d9fa6c2c997df92549fabf1e78560c036ca55d18..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/epsilon.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/eta.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/gamma.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/iota.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/iota.png deleted file mode 100644 index 7eaad513fc19cbcd72ad8edcdffa50a1fce7c37e..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/iota.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/kappa.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/lambda.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/mu.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/nu.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/omega.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/omicron.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/omicron.png deleted file mode 100644 index c5511b285f5cefc0e743e35554de62cae7e35aec..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/omicron.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/phi.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/pi.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/pi.png deleted file mode 100644 index 30bc20c1797cdc284d2359a2614ac7feeb562fe3..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/pi.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/psi.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/rho.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/sigma.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/sigma.png deleted file mode 100644 index 349fb3bfc1e127122383fa23e9eec33fd9cace35..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/sigma.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/tau.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/tau.png deleted file mode 100644 index 235468fccbef6f8780486a6e0b4c8f40f9d838bc..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/tau.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/theta.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/theta.png deleted file mode 100644 index 6540af2531f6ba74fed6564a54a8410f966ecb7d..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/theta.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/upsilon.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/upsilon.png deleted file mode 100644 index 0d88ee0efbc54626066dee63d2d47a9f7be5f6b2..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/upsilon.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/xi.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/zeta.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/digamma.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varepsilon.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varkappa.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varphi.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varpi.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varpi.png deleted file mode 100644 index 788c350bf8b7cb29fd5db4649b73653d66ab3626..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varpi.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varrho.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varrho.png deleted file mode 100644 index d88476754e0729f925a8344009c56fb42cdc8f4d..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varrho.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varsigma.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/vartheta.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/vartheta.png deleted file mode 100644 index 4729b1537572a0c744dcc280aa45ecb92e87830d..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/vartheta.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/alpha.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/alpha.png deleted file mode 100644 index 22dfae19bbed0a26772f9e1ce3bc006491a9e9b7..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/alpha.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/beta.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/beta.png deleted file mode 100644 index c95d79be594db75c538dc9a004e1b1d53f99b4b6..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/beta.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/chi.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/delta.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/epsilon.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/eta.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/gamma.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/gamma.png deleted file mode 100644 index 1f6ccb0e2f559fce512a5ac6245cb44c64484031..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/gamma.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/iota.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/iota.png deleted file mode 100644 index 10777c943bb658ccf9fc1afb5e183bb832e77bc8..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/iota.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/kappa.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/lambda.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/mu.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/nu.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/nu.png deleted file mode 100644 index 2dcc1c3af3c892912b65f4245f5a8c70fbe4b8d6..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/nu.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/omega.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/omicron.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/phi.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/pi.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/psi.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/psi.png deleted file mode 100644 index fdc032186025b8d7673d7ddc473eeba49cfb5b69..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/psi.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/rho.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/rho.png deleted file mode 100644 index 27d8c36656595da765c24f0d5c8808a3985add35..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/rho.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/sigma.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/sigma.png deleted file mode 100644 index dd4ad4bbc33601964aa78551b2123e7fe08beda0..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/sigma.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/tau.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/theta.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/upsilon.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/upsilon.png deleted file mode 100644 index ff1fd88c4476f89ce0e9885e66bdec498aeda966..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/upsilon.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/xi.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/zeta.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/zeta.png deleted file mode 100644 index 4052d0963220f8a3f3f63c2a1e054691cff7fe19..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/zeta.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/aleph.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/aleph.png deleted file mode 100644 index 49631118f59fd251f779372b8e2f21de2a6e3025..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/aleph.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/approx.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ast.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ast.png deleted file mode 100644 index 8b4deaddc3712ad96808f24c5b6a00e82257fcff..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ast.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/baifenhao.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/because.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/beth.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/beth.png deleted file mode 100644 index 90fa4e238647069acc3eb58f22de6019e653eeb6..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/beth.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/blacksquare.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/blacksquare.png deleted file mode 100644 index 4221d79b3c7cd50c80833135f2fd9bea9bd795bd..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/blacksquare.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cap.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cdot.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/circ.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cong.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cong.png deleted file mode 100644 index 46abcf09ee215e3330208cf5a3f4597126338b86..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cong.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cup.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cup.png deleted file mode 100644 index f321d24a12644d883b23ed53560ee41d9c51ab1c..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cup.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ddots.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/div.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/div.png deleted file mode 100644 index 8c11435ce09d150956788d8ab1a34cbc4c8de62d..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/div.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/downarrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/eq.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/equiv.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/equiv.png deleted file mode 100644 index d21d2b61212da0b32bdcab2da57b12019866d3fd..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/equiv.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/exists.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/exists.png deleted file mode 100644 index 291cead95d512541f4af49eca3e945b64245c961..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/exists.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/forall.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/geq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/geq.png deleted file mode 100644 index 0ccd75280bdd57359521ad6492661adac15d4a35..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/geq.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gets.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gg.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gg.png deleted file mode 100644 index 7dcdea84ec5ac33f3bbd86839a5743962e35db81..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gg.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gt.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gt.png deleted file mode 100644 index cc057299b059410e746a74bb14d7ddd63bbbcb17..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gt.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/in.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/infty.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/infty.png deleted file mode 100644 index 8db988c4facc90b7c6be1fcba251e4d802263220..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/infty.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/leftrightarrow.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/leq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/leq.png deleted file mode 100644 index 01255b2933529b50d78392405d552e18061c909e..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/leq.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ll.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/lt.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/lt.png deleted file mode 100644 index f11edc8f5649bf37a673dcc5e9cc97342c6d9bf4..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/lt.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/minus.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/minus.png deleted file mode 100644 index 0f845a285ad36f358cdf60c3f31b0649233777ab..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/minus.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/mp.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/mp.png deleted file mode 100644 index 1cf38f07dfd3c65dbe6ff39df2544ececf077b09..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/mp.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/neg.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/nexists.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/nexists.png deleted file mode 100644 index e4523e1cc595f3897d635b81d26ece4596a589ab..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/nexists.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ni.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ni.png deleted file mode 100644 index 5b3da5768f191d8597f6a19a25048d96073c923c..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ni.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/partial.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/partial.png deleted file mode 100644 index 28253fa6e7366d2dcc4d146727dd16b3f2839a7f..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/partial.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/plus.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/pm.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/pm.png deleted file mode 100644 index 881665584f034bad863d2caa9dbaa10983e4cf5f..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/pm.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/propto.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/propto.png deleted file mode 100644 index 4ba04fdc5516d8fffa7b66116b65839fe96c8162..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/propto.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/sim.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/sim.png deleted file mode 100644 index 4a5264bcc2e773fab9d7fb0966a1e60be9f40d48..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/sim.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/simeq.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/surd.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/tanhao.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/tanhao.png deleted file mode 100644 index 35a33468a1c630b4984ffde5cac4f5b816966f40..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/tanhao.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/therefore.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/times.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/times.png deleted file mode 100644 index 1018224ef25c23424f7d958d0f00c3de03607cea..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/times.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/to.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/to.png deleted file mode 100644 index 12609e4f4619c06a6a6893da2a479b091c26fc02..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/to.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/uparrow.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/varnothing.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/vdots.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/vdots.png deleted file mode 100644 index 0ce84f2ce5101f555f01cc11f3f9bbc1e6ccdf6d..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/vdots.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/gneqq.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/gnsim.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/gnsim.png deleted file mode 100644 index 683af6bf93b6f1e8230dc1f4f8f831b52616effe..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/gnsim.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/lneqq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/lneqq.png deleted file mode 100644 index 56440637b9b06b7fdc90c63f00b29e8647d0de61..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/lneqq.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/lnsim.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nbdash-1.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ncong.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ncong.png deleted file mode 100644 index 156f8befa8d5ef018742db4fc93b14c26f415f81..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ncong.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/neq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/neq.png deleted file mode 100644 index feb442f4ce94122870baa66edf89d51978be6aab..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/neq.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nequiv.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nexists.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ngeq.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ngtr.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nleq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nleq.png deleted file mode 100644 index 16347a168a6df4b47d5b8bf28e61d9c781269560..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nleq.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nless.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nless.png deleted file mode 100644 index 11c947238910fb33a64c4f61f86f48e32f0de0f5..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nless.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nmid.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nmid.png deleted file mode 100644 index c63688e23115612366fb96f2ad264688591fee8d..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nmid.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/notin.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nparallel.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nparallel.png deleted file mode 100644 index 76887ca0c8135247c6c345b0a1b88c2bcbb8fa1d..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nparallel.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nprec.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsim.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsim.png deleted file mode 100644 index 45cf001ba2db9f9eb517fd43489e89288706377e..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsim.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsubseteq.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsucc.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsucc.png deleted file mode 100644 index b975eaf8b9c96e897b9e5802514238c982e9b297..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsucc.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsupseteq.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntriangleleft.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntriangleleft.png deleted file mode 100644 index 39ecc4dd30744d35fefdb457437b512aee853911..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntriangleleft.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntrianglelefteq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntrianglelefteq.png deleted file mode 100644 index 9b8f737d1a182b5876875a60dfd6fc2ede3480fc..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntrianglelefteq.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntriangleright.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntriangleright.png deleted file mode 100644 index 751acf0d12d70bc4551f3ca0c85a872c45520072..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntriangleright.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntrianglerighteq.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-1.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-1.png deleted file mode 100644 index dc641d92e2266751d8510ea780529bd01394079d..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-1.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-2.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-3.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-3.png deleted file mode 100644 index 3d872b42e1f3d1b8c0e098c8069eeb50ac7c2506..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-3.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/precnsim.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/precnsim.png deleted file mode 100644 index e6c148b2e06a11adccdad29045fab4d65f65c57b..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/precnsim.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/subsetneq.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/subsetneq.png deleted file mode 100644 index cc3383553606f6561afd9394131fb04707d5b573..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/subsetneq.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/succnsim.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/supsetneq.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/a.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/b.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/c.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/c.png deleted file mode 100644 index 08015b74a0f4222ae88d4540435052509280ad93..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/c.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/d.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/e.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/e.png deleted file mode 100644 index e966a241d3205884ad9a719c9fc4b5a292ec6761..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/e.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/f.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/f.png deleted file mode 100644 index 76d3d370acb70576be0f112e993dc7c3d95fde31..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/f.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/g.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/g.png deleted file mode 100644 index 8ea577546586ec3619015e3cc53c2b04486f94fd..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/g.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/h.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/i.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/j.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/k.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/l.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/l.png deleted file mode 100644 index 691a92fbf73b9fb239adc9692bd43bb1e1c0a232..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/l.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/m.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/n.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/n.png deleted file mode 100644 index 30be2cc6829882f14dad932854787a127b3e1c52..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/n.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/o.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/o.png deleted file mode 100644 index 16c83a08f7f9251333f8595d8ed78c2ed5fc98f1..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/o.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/p.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/q.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/q.png deleted file mode 100644 index 203bb204fb3c4a81e01b9b4fd4894e30179764c1..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/q.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/r.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/r.png deleted file mode 100644 index 763f81e9976985858b771a9318b68c4b31b98397..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/r.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/s.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/s.png deleted file mode 100644 index 7510702eee0b636d2b783a3b207df8476ca37a2c..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/s.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/t.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/u.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/u.png deleted file mode 100644 index f495f3d116181db5956ca2ea815227d569f2bf37..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/u.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ua.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ub.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uc.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ud.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ue.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uf.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ug.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ug.png deleted file mode 100644 index 3fd2e08a28a94f8cb8d94bf83e013c5a34c06f4e..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ug.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uh.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uh.png deleted file mode 100644 index c72d3192c1a469d87ca568bf86cc2a3ed012a441..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uh.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ui.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uj.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uk.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uk.png deleted file mode 100644 index 07a569dc9ceda3da096ef09ab21bbb363fe85cc2..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uk.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ul.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/um.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/un.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/un.png deleted file mode 100644 index c3ba37c37f26ccdcd0c20722c65f4a7448b970fe..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/un.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uo.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uo.png deleted file mode 100644 index cac7b4ff2079b8d9954b83675da302bd1d6f75e0..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uo.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/up.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uq.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ur.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/us.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/us.png deleted file mode 100644 index 32042572115e3aa5bcd62cfd0e211660a6547f20..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/us.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ut.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uu.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uu.png deleted file mode 100644 index 87ca6cec4eee8eddfcae7680b87d5691448dabba..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uu.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uv.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uw.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ux.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uy.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uz.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/v.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/w.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/x.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/x.png deleted file mode 100644 index f299eeb12ce136b0b1ea8e07e023adf0085dd982..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/x.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/y.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/z.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/1.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/2.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/2.png deleted file mode 100644 index c378fdce0806e48e96b716fbe655d93081f29af6..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/2.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/3.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c1.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c1.png deleted file mode 100644 index a032d706d31c6cd9c38da923113a8345826ed9bd..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c1.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c2.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c4.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c5.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c5.png deleted file mode 100644 index 05e6adfc38355d71e977905dfd661c4d8a9c5f8c..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c5.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/1.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/2.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/2.png deleted file mode 100644 index a33c1dc13bdc3fcfbbbbc65422fe4e01fab424cf..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/2.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/3.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/4.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/5.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/6.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c1.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c2.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c2.png deleted file mode 100644 index 4eb6c8f97db9305afdeca4956f320563a9e40e30..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c2.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c3.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/1.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/1.png deleted file mode 100644 index a08ab60d21cb2294337efc5017eec95d180b13a5..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/1.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/2.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/3.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/3.png deleted file mode 100644 index 8898b845cadbea6308e115d76820120cefce16de..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/3.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/4.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/5.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/6.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/1.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/1.png deleted file mode 100644 index a83bf8ecbe0b70c109d0b01c91d01e848127eaf0..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/1.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/2.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/2.png deleted file mode 100644 index 705255335169d5d135e41a155067ac3caaf57cc2..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/2.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/3.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/other.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/1.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/1.png deleted file mode 100644 index a40b79a60db45bd8ae0cf019f75f56612bab70bf..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/1.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/2.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/3.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/3.png deleted file mode 100644 index 3425abeb66f4ba54251eccc115ab990994e38888..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/3.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/4.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/4.png deleted file mode 100644 index fad9d20cfe5e5b62a221a7ce9847dca79eae0e80..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/4.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c1.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c1.png deleted file mode 100644 index 24cbd1bed5c5a1b6d637cd2779d580ebe44edf1a..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c1.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c2.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c3.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c3.png deleted file mode 100644 index d557b777e3a805de5d8a60b06cd6dae8752529ba..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c3.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/1.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/2.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/2.png deleted file mode 100644 index 0ffbabb3fa71bdd73b484cd258268b3d294b4e75..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/2.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/3.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/3.png deleted file mode 100644 index 1f1015648fed0dd3895cf3ccf8b84cacac2f3f9f..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/3.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/4.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/c1.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/c1.png deleted file mode 100644 index cf7beba696997e7c85b3a8883f5e0c4570d1c320..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/c1.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/c2.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/c2.png deleted file mode 100644 index 35a5baeebbbd4bb8e941beb61d3b58724328b437..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/c2.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/1.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/1.png deleted file mode 100644 index f7c7d178e4c8187206da6934633424132e721cd0..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/1.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/2.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/2.png deleted file mode 100644 index ee9586da60a286df2d113884f3c6b2dbc66201a4..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/2.png and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/3.png b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/3.png deleted file mode 100644 index 93f7d9c8a6d9e97b545fae0a2c91da23ee560767..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/3.png and /dev/null differ 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 355d9b0b8cfffb39715927b8783f3bf3c52659b0..0000000000000000000000000000000000000000 --- 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 8026403bb234793eb236712ac181b4e3c6393aac..0000000000000000000000000000000000000000 --- 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 b8254b0c9d9abb0a875f5ce7b5ac04070380fe8b..0000000000000000000000000000000000000000 --- 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 e8ac47083a99743511bc8f21e9d4e719ecf19885..0000000000000000000000000000000000000000 --- 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 de07bba550fb8ebfbf732e4a1990cb6c19f7854b..0000000000000000000000000000000000000000 --- 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 3faab2ac1ea32991c667e6ff208385bbb4f6a06b..0000000000000000000000000000000000000000 --- 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/close.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/down.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/open.png and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/up.png and /dev/null differ 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 c4c6022f2982e8dae64cebd6b9a2b59f2547faad..0000000000000000000000000000000000000000 --- 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 80665993b6bfe5d26925a5599cecac437f88a1e7..0000000000000000000000000000000000000000 --- 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 332ca588656b6f81d45da1189e5e5194b57c7361..0000000000000000000000000000000000000000 --- 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 153d6e18047ca1f68de81fd548a842f7ec15f580..0000000000000000000000000000000000000000 --- 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/loading.gif and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_BB.woff b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_BB.woff deleted file mode 100644 index 51b3cce0cca2aef11b35d287a0077f65bf42cb26..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_BB.woff and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_CAL.woff and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_FRAK.woff and /dev/null differ 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 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_MAIN.woff and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_ROMAN.woff b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_ROMAN.woff deleted file mode 100644 index 6b5d474dffe13e550788a56ebe4d3f8245388215..0000000000000000000000000000000000000000 Binary files a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_ROMAN.woff and /dev/null differ diff --git a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/plugin.js b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/plugin.js deleted file mode 100644 index 9b74d606efa311f760624889eb95bca86ac21006..0000000000000000000000000000000000000000 --- a/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/plugin.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/kityformula-editor/plugin.min.js b/component/pear/module/tinymce/tinymce/plugins/kityformula-editor/plugin.min.js deleted file mode 100644 index 9b74d606efa311f760624889eb95bca86ac21006..0000000000000000000000000000000000000000 --- 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 d96f337f93feb3fc0022c6aa8d3beb80a3326585..0000000000000000000000000000000000000000 --- 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 c2b04c1e0189c581f1ab8ab926926bd89763e9b5..0000000000000000000000000000000000000000 --- 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 a5cc018dd66072c52593bb14c0c28e6b25ff2f2f..0000000000000000000000000000000000000000 --- 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 bf4586881139227fb394f3ff3934e7e6ba8c2449..0000000000000000000000000000000000000000 --- 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 a6a7b66b310796087d71942ab0f2a73398b7897f..0000000000000000000000000000000000000000 --- 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 a540a82b34388c9fa5a9475406a328202c711975..0000000000000000000000000000000000000000 --- 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 861aacf59af4bf803f2b1126669594921721fdfa..0000000000000000000000000000000000000000 --- 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 d6bda48bdcd77c9a317a9472d245db537689673b..0000000000000000000000000000000000000000 --- 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/login.html b/login.html index a1dc97155810dcc5f6bc21b1469b398428107fc4..5b52d9e543243ce006b99b995f5339b066682029 100644 --- a/login.html +++ b/login.html @@ -1,71 +1,119 @@ - - - - 登录 - - - - - - -
                                    -
                                    - -
                                    Pear Admin
                                    -
                                    - 明 湖 区 最 具 影 响 力 的 设 计 规 范 之 一 -
                                    -
                                    -
                                    - -
                                    -
                                    - + + + + 登录 + + + + + + + +