diff --git a/web - 副本/.DS_Store b/web - 副本/.DS_Store new file mode 100644 index 0000000..f6535c4 Binary files /dev/null and b/web - 副本/.DS_Store differ diff --git a/web - 副本/.babelrc b/web - 副本/.babelrc new file mode 100644 index 0000000..40c169e --- /dev/null +++ b/web - 副本/.babelrc @@ -0,0 +1,18 @@ +{ + "presets": [ + "@babel/preset-env", + "@babel/preset-react" + ], + "plugins": [ + "@babel/plugin-proposal-class-properties", + "@babel/plugin-proposal-object-rest-spread", + ["import", { + "libraryName": "antd", + "libraryDirectory": "es" + + }] + ], + "env": { + "development": {} + } +} diff --git a/web - 副本/.eslintrc.js b/web - 副本/.eslintrc.js new file mode 100644 index 0000000..58e9fb8 --- /dev/null +++ b/web - 副本/.eslintrc.js @@ -0,0 +1,42 @@ +module.exports = { + env: { + browser: true, + es2021: true, + node: true, + }, + extends: [ + 'eslint:recommended', + 'plugin:react/recommended', + 'airbnb', + 'airbnb/hooks', + ], + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + ecmaVersion: 13, + sourceType: 'module', + }, + plugins: [ + 'react', + ], + settings: { + 'import/resolver': 'webpack', + }, + rules: { + 'no-console': 'off', + 'linebreak-style': [0, 'error', 'windows'], + 'react/jsx-filename-extension': [1, { + extensions: ['.js', '.jsx'], + }], + 'no-unused-expressions': [1, { + allowShortCircuit: true, + allowTernary: true, + }], + 'max-len': [1, { + code: 300, + }], + 'react/prop-types': 0, + 'class-methods-use-this': 'off', + }, +}; diff --git a/web - 副本/.vscode/launch.json b/web - 副本/.vscode/launch.json new file mode 100644 index 0000000..f4c4681 --- /dev/null +++ b/web - 副本/.vscode/launch.json @@ -0,0 +1,19 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Server", + "type": "node", + "request": "launch", + "program": "${workspaceRoot}/server.js", + "args": [ + "-u http://127.0.0.1:4000" + //"-u http://10.8.30.211:8089" + ], + "outputCapture": "std", + "env": { + "NODE_ENV": "development" + } + } + ] +} \ No newline at end of file diff --git a/web - 副本/.vscode/settings.json b/web - 副本/.vscode/settings.json new file mode 100644 index 0000000..6f68785 --- /dev/null +++ b/web - 副本/.vscode/settings.json @@ -0,0 +1,21 @@ +// 将设置放入此文件中以覆盖默认值和用户设置。 +{ + "editor.fontSize": 16, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + }, + "eslint.validate": [ + "javascript", + "javascriptreact", + "vue" + ], + "files.autoSave": "afterDelay", + "editor.formatOnType": true, + "editor.formatOnSave": true, + "files.associations": { + "*.js": "javascriptreact" + }, + "emmet.triggerExpansionOnTab": true, + "vsicons.projectDetection.disableDetect": true, + "editor.tabSize": 2, +} \ No newline at end of file diff --git a/web - 副本/Dockerfile b/web - 副本/Dockerfile new file mode 100644 index 0000000..cfa60c0 --- /dev/null +++ b/web - 副本/Dockerfile @@ -0,0 +1,14 @@ + +FROM repository.anxinyun.cn/base-images/nodejs12:20.10.12.2 + +MAINTAINER pengling "peng.ling@free-sun.com.cn" + +COPY . /var/app + +WORKDIR /var/app + +EXPOSE 8080 + +CMD ["-u", "http://localhost:8088"] + +ENTRYPOINT [ "node", "server.js" ] \ No newline at end of file diff --git a/web - 副本/client/.DS_Store b/web - 副本/client/.DS_Store new file mode 100644 index 0000000..aef1c6f Binary files /dev/null and b/web - 副本/client/.DS_Store differ diff --git a/web - 副本/client/assets/.DS_Store b/web - 副本/client/assets/.DS_Store new file mode 100644 index 0000000..1031e8f Binary files /dev/null and b/web - 副本/client/assets/.DS_Store differ diff --git a/web - 副本/client/assets/avatar/1.png b/web - 副本/client/assets/avatar/1.png new file mode 100644 index 0000000..52dbdb8 Binary files /dev/null and b/web - 副本/client/assets/avatar/1.png differ diff --git a/web - 副本/client/assets/avatar/10.png b/web - 副本/client/assets/avatar/10.png new file mode 100644 index 0000000..a543c2a Binary files /dev/null and b/web - 副本/client/assets/avatar/10.png differ diff --git a/web - 副本/client/assets/avatar/11.png b/web - 副本/client/assets/avatar/11.png new file mode 100644 index 0000000..f569e09 Binary files /dev/null and b/web - 副本/client/assets/avatar/11.png differ diff --git a/web - 副本/client/assets/avatar/12.png b/web - 副本/client/assets/avatar/12.png new file mode 100644 index 0000000..7265983 Binary files /dev/null and b/web - 副本/client/assets/avatar/12.png differ diff --git a/web - 副本/client/assets/avatar/2.png b/web - 副本/client/assets/avatar/2.png new file mode 100644 index 0000000..708e41d Binary files /dev/null and b/web - 副本/client/assets/avatar/2.png differ diff --git a/web - 副本/client/assets/avatar/3.png b/web - 副本/client/assets/avatar/3.png new file mode 100644 index 0000000..933b3f1 Binary files /dev/null and b/web - 副本/client/assets/avatar/3.png differ diff --git a/web - 副本/client/assets/avatar/4.png b/web - 副本/client/assets/avatar/4.png new file mode 100644 index 0000000..793baca Binary files /dev/null and b/web - 副本/client/assets/avatar/4.png differ diff --git a/web - 副本/client/assets/avatar/5.png b/web - 副本/client/assets/avatar/5.png new file mode 100644 index 0000000..c66ec46 Binary files /dev/null and b/web - 副本/client/assets/avatar/5.png differ diff --git a/web - 副本/client/assets/avatar/6.png b/web - 副本/client/assets/avatar/6.png new file mode 100644 index 0000000..157f56a Binary files /dev/null and b/web - 副本/client/assets/avatar/6.png differ diff --git a/web - 副本/client/assets/avatar/7.png b/web - 副本/client/assets/avatar/7.png new file mode 100644 index 0000000..ddd4f3d Binary files /dev/null and b/web - 副本/client/assets/avatar/7.png differ diff --git a/web - 副本/client/assets/avatar/8.png b/web - 副本/client/assets/avatar/8.png new file mode 100644 index 0000000..3a01c87 Binary files /dev/null and b/web - 副本/client/assets/avatar/8.png differ diff --git a/web - 副本/client/assets/avatar/9.png b/web - 副本/client/assets/avatar/9.png new file mode 100644 index 0000000..0a952d4 Binary files /dev/null and b/web - 副本/client/assets/avatar/9.png differ diff --git a/web - 副本/client/assets/avatar/avatar.jpg b/web - 副本/client/assets/avatar/avatar.jpg new file mode 100644 index 0000000..dd6739f Binary files /dev/null and b/web - 副本/client/assets/avatar/avatar.jpg differ diff --git a/web - 副本/client/assets/color.less b/web - 副本/client/assets/color.less new file mode 100644 index 0000000..20c0c4c --- /dev/null +++ b/web - 副本/client/assets/color.less @@ -0,0 +1,3285 @@ +@popover-background: #fff; +@body-background: #01050f; +@component-background: transparent; +@text-color: fade(@black, 85%); +@text-color-secondary: fade(@black, 45%); +@icon-color-hover: fade(@black, 75%); +@heading-color: fade(@black, 85%); +@item-active-bg: color(~`colorPalette('@{primary-color}', 1) `); +@item-hover-bg: #f5f5f5; +@border-color-base: hsv(0, 0, 85%); +@border-color-split: hsv(0, 0, 94%); +@background-color-light: hsv(0, 0, 98%); +@background-color-base: hsv(0, 0, 96%); +@disabled-color: fade(#000, 25%); +@disabled-bg: hsv(0, 0, 96%); +@disabled-color-dark: fade(#fff, 35%); +@tree-bg: #fff; +@list-customize-card-bg: #fff; +@shadow-color: rgba(0, 0, 0, 0.15); +@shadow-color-inverse: #fff; +@btn-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); +@btn-primary-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); +@btn-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12); +@btn-default-bg: #fff; +@btn-default-ghost-color: #fff; +@btn-default-ghost-border: #fff; +@btn-text-hover-bg: rgba(0, 0, 0, 0.018); +@checkbox-check-bg: #fff; +@descriptions-bg: #fafafa; +@divider-color: rgba(0, 0, 0, 6%); +@modal-header-bg: #fff; +@modal-header-border-color-split: hsv(0, 0, 94%); +@modal-content-bg: #fff; +@modal-footer-border-color-split: hsv(0, 0, 94%); +@radio-solid-checked-color: #fff; +@radio-dot-disabled-color: fade(@black, 20%); +@radio-disabled-button-checked-bg: tint(@black, 90%); +@radio-disabled-button-checked-color: fade(#000, 25%); +@layout-body-background: #f0f2f5; +@layout-header-background: #001529; +@layout-trigger-background: #002140; +@input-bg: #fff; +@input-placeholder-color: hsv(0, 0, 75%); +@input-icon-color: fade(@black, 85%); +@input-number-handler-active-bg: #f4f4f4; +@input-icon-hover-color: fade(@black, 85%); +@select-background: #fff; +@select-dropdown-bg: #fff; +@select-clear-background: #fff; +@select-selection-item-bg: hsv(0, 0, 96%); +@select-selection-item-border-color: hsv(0, 0, 94%); +@select-multiple-disabled-background: hsv(0, 0, 96%); +@select-multiple-item-disabled-color: #bfbfbf; +@select-multiple-item-disabled-border-color: hsv(0, 0, 85%); +@cascader-bg: #fff; +@cascader-menu-bg: #fff; +@cascader-menu-border-color-split: hsv(0, 0, 94%); +@tooltip-bg: rgba(0, 0, 0, 0.75); +@menu-dark-inline-submenu-bg: #000c17; +@menu-dark-bg: #001529; +@menu-popup-bg: #fff; +@message-notice-content-bg: #fff; +@notification-bg: #fff; +@link-hover-color: color(~`colorPalette('@{link-color}', 5) `); +@link-active-color: color(~`colorPalette('@{link-color}', 7) `); +@table-header-bg: hsv(0, 0, 98%); +@table-body-sort-bg: #fafafa; +@table-row-hover-bg: hsv(0, 0, 98%); +@table-header-cell-split-color: rgba(0, 0, 0, 0.06); +@table-header-sort-bg: hsv(0, 0, 96%); +@table-header-filter-active-bg: rgba(0, 0, 0, 0.04); +@table-header-sort-active-bg: rgba(0, 0, 0, 0.04); +@table-fixed-header-sort-active-bg: hsv(0, 0, 96%); +@table-expanded-row-bg: #fbfbfb; +@table-filter-dropdown-bg: #fff; +@table-expand-icon-bg: #fff; +@info-color-deprecated-bg: color(~`colorPalette('@{info-color}', 1) `); +@info-color-deprecated-border: color(~`colorPalette('@{info-color}', 3) `); +@success-color-deprecated-bg: color(~`colorPalette('@{success-color}', 1) `); +@success-color-deprecated-border: color(~`colorPalette('@{success-color}', 3) `); +@warning-color-deprecated-bg: color(~`colorPalette('@{warning-color}', 1) `); +@warning-color-deprecated-border: color(~`colorPalette('@{warning-color}', 3) `); +@error-color-deprecated-bg: color(~`colorPalette('@{error-color}', 1) `); +@error-color-deprecated-border: color(~`colorPalette('@{error-color}', 3) `); +@picker-basic-cell-hover-with-range-color: lighten(@primary-color, 35%); +@picker-basic-cell-disabled-bg: rgba(0, 0, 0, 0.04); +@picker-border-color: hsv(0, 0, 94%); +@picker-bg: #fff; +@picker-date-hover-range-border-color: lighten(@primary-color, 20%); +@dropdown-menu-bg: #fff; +@dropdown-menu-submenu-disabled-bg: #fff; +@steps-nav-arrow-color: fade(@black, 25%); +@steps-background: #fff; +@avatar-bg: #ccc; +@progress-steps-item-bg: #f3f3f3; +@calendar-bg: #fff; +@calendar-input-bg: #fff; +@calendar-full-bg: #fff; +@badge-text-color: #fff; +@popover-bg: #fff; +@drawer-bg: #fff; +@card-actions-background: #fff; +@card-skeleton-bg: #cfd8dc; +@transfer-item-hover-bg: #f5f5f5; +@comment-author-time-color: #ccc; +@comment-action-hover-color: #595959; +@rate-star-bg: hsv(0, 0, 94%); +@switch-bg: #fff; +@pagination-item-bg: #fff; +@pagination-item-bg-active: #fff; +@pagination-item-link-bg: #fff; +@pagination-item-disabled-bg-active: tint(@black, 90%); +@pagination-item-disabled-color-active: fade(#000, 25%); +@pagination-item-input-bg: #fff; +@page-header-back-color: #000; +@slider-rail-background-color: hsv(0, 0, 96%); +@slider-rail-background-color-hover: #e1e1e1; +@slider-dot-border-color: hsv(0, 0, 94%); +@slider-dot-border-color-active: tint(@primary-color, 50%); +@skeleton-to-color: shade(@skeleton-color, 5%); +@alert-success-border-color: ~`colorPalette('@{success-color}', 3) `; +@alert-success-bg-color: ~`colorPalette('@{success-color}', 1) `; +@alert-success-icon-color: #52c41a; +@alert-info-border-color: ~`colorPalette('@{info-color}', 3) `; +@alert-info-bg-color: ~`colorPalette('@{info-color}', 1) `; +@alert-info-icon-color: #1890ff; +@alert-warning-border-color: ~`colorPalette('@{warning-color}', 3) `; +@alert-warning-bg-color: ~`colorPalette('@{warning-color}', 1) `; +@alert-warning-icon-color: #faad14; +@alert-error-border-color: ~`colorPalette('@{error-color}', 3) `; +@alert-error-bg-color: ~`colorPalette('@{error-color}', 1) `; +@alert-error-icon-color: color(~`colorPalette('@{red-6}', 5) `); +@timeline-color: hsv(0, 0, 94%); +@timeline-dot-color: #1890ff; +@mentions-dropdown-bg: #fff; +@segmented-bg: fade(@black, 4%); +@segmented-hover-bg: fade(@black, 6%); +@segmented-label-color: fade(@black, 65%); +@segmented-label-hover-color: #262626; +@primary-color: #0057c9; +@picker-basic-cell-active-with-range-color: color(~`colorPalette('@{primary-color}', 1) `); +@layout-breadcrum-background: @white; +@layout-header-shadow: 0px 3px 6px -4px @shadow-color; +@layout-slder-shadow: 3px 0px 6px -4px @shadow-color; +@layout-content-background: @white; +@mark-background-color: #f5fdca; +@link-color: @primary-color; +@secondary-color: fade(@primary-color, 20%); +@btn-primary-bg: @primary-color; +@select-item-selected-option-color: @primary-color; +@processing-color: @primary-color; +@select-item-selected-bg: @background-color-base; +@skeleton-color: @primary-color; +@layout-header-height: 48px; +@form-require-color: #ff4d4f; +@red: red; +@green: green; +html {-webkit-tap-highlight-color: rgba(0, 0, 0, 0);} +body {color: @text-color;background-color: @body-background;} +h1, +h2, +h3, +h4, +h5, +h6 {color: @heading-color;} +abbr[title], +abbr[data-original-title] {border-bottom: 0;} +a {color: @link-color;background-color: transparent;} +a:hover {color: @link-hover-color;} +a:active {color: @link-active-color;} +a[disabled] {color: @disabled-color;} +img {border-style: none;} +table {border-collapse: collapse;} +caption {color: @text-color-secondary;} +input, +button, +select, +optgroup, +textarea {color: inherit;} +button::-moz-focus-inner, +[type='button']::-moz-focus-inner, +[type='reset']::-moz-focus-inner, +[type='submit']::-moz-focus-inner {border-style: none;} +fieldset {border: 0;} +legend {color: inherit;} +mark {background-color: #feffe6;} +::selection {color: #fff;background: @primary-color;} +.anticon {color: inherit;} +.ant-fade-enter, .ant-fade-appear {animation-fill-mode: both;} +.ant-fade-leave {animation-fill-mode: both;} +.ant-move-up-enter, .ant-move-up-appear {animation-fill-mode: both;} +.ant-move-up-leave {animation-fill-mode: both;} +.ant-move-down-enter, .ant-move-down-appear {animation-fill-mode: both;} +.ant-move-down-leave {animation-fill-mode: both;} +.ant-move-left-enter, .ant-move-left-appear {animation-fill-mode: both;} +.ant-move-left-leave {animation-fill-mode: both;} +.ant-move-right-enter, .ant-move-right-appear {animation-fill-mode: both;} +.ant-move-right-leave {animation-fill-mode: both;} +html {--antd-wave-shadow-color: @primary-color;} +[ant-click-animating-without-extra-node='true']::after, .ant-click-animating-node {border-radius: inherit;box-shadow: 0 0 0 0 @primary-color;box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);animation-fill-mode: forwards;} +.ant-slide-up-enter, .ant-slide-up-appear {animation-fill-mode: both;} +.ant-slide-up-leave {animation-fill-mode: both;} +.ant-slide-down-enter, .ant-slide-down-appear {animation-fill-mode: both;} +.ant-slide-down-leave {animation-fill-mode: both;} +.ant-slide-left-enter, .ant-slide-left-appear {animation-fill-mode: both;} +.ant-slide-left-leave {animation-fill-mode: both;} +.ant-slide-right-enter, .ant-slide-right-appear {animation-fill-mode: both;} +.ant-slide-right-leave {animation-fill-mode: both;} +.ant-zoom-enter, .ant-zoom-appear {animation-fill-mode: both;} +.ant-zoom-leave {animation-fill-mode: both;} +.ant-zoom-big-enter, .ant-zoom-big-appear {animation-fill-mode: both;} +.ant-zoom-big-leave {animation-fill-mode: both;} +.ant-zoom-big-fast-enter, .ant-zoom-big-fast-appear {animation-fill-mode: both;} +.ant-zoom-big-fast-leave {animation-fill-mode: both;} +.ant-zoom-up-enter, .ant-zoom-up-appear {animation-fill-mode: both;} +.ant-zoom-up-leave {animation-fill-mode: both;} +.ant-zoom-down-enter, .ant-zoom-down-appear {animation-fill-mode: both;} +.ant-zoom-down-leave {animation-fill-mode: both;} +.ant-zoom-left-enter, .ant-zoom-left-appear {animation-fill-mode: both;} +.ant-zoom-left-leave {animation-fill-mode: both;} +.ant-zoom-right-enter, .ant-zoom-right-appear {animation-fill-mode: both;} +.ant-zoom-right-leave {animation-fill-mode: both;} +.ant-alert {color: @text-color;border-radius: 2px;} +.ant-alert-success {background-color: @alert-success-bg-color;border: 1px solid @alert-success-border-color;} +.ant-alert-success .ant-alert-icon {color: @alert-success-icon-color;} +.ant-alert-info {background-color: @alert-info-bg-color;border: 1px solid @alert-info-border-color;} +.ant-alert-info .ant-alert-icon {color: @alert-info-icon-color;} +.ant-alert-warning {background-color: @alert-warning-bg-color;border: 1px solid @alert-warning-border-color;} +.ant-alert-warning .ant-alert-icon {color: @alert-warning-icon-color;} +.ant-alert-error {background-color: @alert-error-bg-color;border: 1px solid @alert-error-border-color;} +.ant-alert-error .ant-alert-icon {color: @alert-error-icon-color;} +.ant-alert-close-icon {background-color: transparent;border: none;} +.ant-alert-close-icon .anticon-close {color: @text-color-secondary;} +.ant-alert-close-icon .anticon-close:hover {color: @icon-color-hover;} +.ant-alert-close-text {color: @text-color-secondary;} +.ant-alert-close-text:hover {color: @icon-color-hover;} +.ant-alert-with-description .ant-alert-message {color: @heading-color;} +.ant-alert-message {color: @heading-color;} +.ant-alert-banner {border: 0;border-radius: 0;} +.ant-anchor {color: @text-color;} +.ant-anchor-wrapper {background-color: transparent;} +.ant-anchor-ink::before {background-color: @border-color-split;} +.ant-anchor-ink-ball {background-color: @component-background;border: 2px solid @primary-color;border-radius: 8px;} +.ant-anchor-link-title {color: @text-color;} +.ant-anchor-link-active > .ant-anchor-link-title {color: @primary-color;} +.ant-select-auto-complete {color: @text-color;} +.ant-avatar {color: @text-color;color: #fff;background: @avatar-bg;border-radius: 50%;} +.ant-avatar-image {background: transparent;} +.ant-avatar-lg {border-radius: 50%;} +.ant-avatar-sm {border-radius: 50%;} +.ant-avatar-square {border-radius: 2px;} +.ant-avatar-group .ant-avatar {border: 1px solid #fff;} +.ant-back-top {color: @text-color;} +.ant-back-top-content {color: #fff;background-color: @text-color-secondary;border-radius: 20px;} +.ant-back-top-content:hover {background-color: @text-color;} +.ant-badge {color: @text-color;} +.ant-badge-count {color: @badge-text-color;background: #ff4d4f;border-radius: 10px;box-shadow: 0 0 0 1px @shadow-color-inverse;} +.ant-badge-count a, .ant-badge-count a:hover {color: @badge-text-color;} +.ant-badge-count-sm {border-radius: 7px;} +.ant-badge-dot {background: #ff4d4f;border-radius: 100%;box-shadow: 0 0 0 1px @shadow-color-inverse;} +.ant-badge-status-dot {border-radius: 50%;} +.ant-badge-status-success {background-color: #52c41a;} +.ant-badge-status-processing {background-color: @processing-color;} +.ant-badge-status-processing::after {border: 1px solid @processing-color;border-radius: 50%;} +.ant-badge-status-default {background-color: #d9d9d9;} +.ant-badge-status-error {background-color: #ff4d4f;} +.ant-badge-status-warning {background-color: #faad14;} +.ant-badge-status-pink {background: #eb2f96;} +.ant-badge-status-magenta {background: #eb2f96;} +.ant-badge-status-red {background: #f5222d;} +.ant-badge-status-volcano {background: #fa541c;} +.ant-badge-status-orange {background: #fa8c16;} +.ant-badge-status-yellow {background: #fadb14;} +.ant-badge-status-gold {background: #faad14;} +.ant-badge-status-cyan {background: #13c2c2;} +.ant-badge-status-lime {background: #a0d911;} +.ant-badge-status-green {background: #52c41a;} +.ant-badge-status-blue {background: #1890ff;} +.ant-badge-status-geekblue {background: #2f54eb;} +.ant-badge-status-purple {background: #722ed1;} +.ant-badge-status-text {color: @text-color;} +.ant-badge-zoom-appear, .ant-badge-zoom-enter {animation-fill-mode: both;} +.ant-badge-zoom-leave {animation-fill-mode: both;} +.ant-ribbon {color: @text-color;color: @badge-text-color;background-color: @primary-color;border-radius: 2px;} +.ant-ribbon-text {color: #fff;} +.ant-ribbon-corner {color: currentcolor;border: 4px solid;} +.ant-ribbon-corner::after {color: rgba(0, 0, 0, 0.25);border: inherit;} +.ant-ribbon-color-pink {color: #eb2f96;background: #eb2f96;} +.ant-ribbon-color-magenta {color: #eb2f96;background: #eb2f96;} +.ant-ribbon-color-red {color: #f5222d;background: #f5222d;} +.ant-ribbon-color-volcano {color: #fa541c;background: #fa541c;} +.ant-ribbon-color-orange {color: #fa8c16;background: #fa8c16;} +.ant-ribbon-color-yellow {color: #fadb14;background: #fadb14;} +.ant-ribbon-color-gold {color: #faad14;background: #faad14;} +.ant-ribbon-color-cyan {color: #13c2c2;background: #13c2c2;} +.ant-ribbon-color-lime {color: #a0d911;background: #a0d911;} +.ant-ribbon-color-green {color: #52c41a;background: #52c41a;} +.ant-ribbon-color-blue {color: #1890ff;background: #1890ff;} +.ant-ribbon-color-geekblue {color: #2f54eb;background: #2f54eb;} +.ant-ribbon-color-purple {color: #722ed1;background: #722ed1;} +.ant-ribbon.ant-ribbon-placement-end {border-bottom-right-radius: 0;} +.ant-ribbon.ant-ribbon-placement-end .ant-ribbon-corner {border-color: currentcolor transparent transparent currentcolor;} +.ant-ribbon.ant-ribbon-placement-start {border-bottom-left-radius: 0;} +.ant-ribbon.ant-ribbon-placement-start .ant-ribbon-corner {border-color: currentcolor currentcolor transparent transparent;} +.ant-ribbon-rtl.ant-ribbon-placement-end {border-bottom-right-radius: 2px;border-bottom-left-radius: 0;} +.ant-ribbon-rtl.ant-ribbon-placement-end .ant-ribbon-corner {border-color: currentcolor currentcolor transparent transparent;} +.ant-ribbon-rtl.ant-ribbon-placement-end .ant-ribbon-corner::after {border-color: currentcolor currentcolor transparent transparent;} +.ant-ribbon-rtl.ant-ribbon-placement-start {border-bottom-right-radius: 0;border-bottom-left-radius: 2px;} +.ant-ribbon-rtl.ant-ribbon-placement-start .ant-ribbon-corner {border-color: currentcolor transparent transparent currentcolor;} +.ant-ribbon-rtl.ant-ribbon-placement-start .ant-ribbon-corner::after {border-color: currentcolor transparent transparent currentcolor;} +.ant-breadcrumb {color: @text-color;color: @text-color-secondary;} +.ant-breadcrumb a {color: @text-color-secondary;} +.ant-breadcrumb a:hover {color: @text-color;} +.ant-breadcrumb li:last-child {color: @text-color;} +.ant-breadcrumb li:last-child a {color: @text-color;} +.ant-breadcrumb-separator {color: @text-color-secondary;} +.ant-btn {background-image: none;border: 1px solid transparent;box-shadow: @btn-shadow;border-radius: 2px;color: @text-color;border-color: @border-color-base;background: @btn-default-bg;} +.ant-btn:not([disabled]):active {box-shadow: none;} +.ant-btn-lg {border-radius: 2px;} +.ant-btn-sm {border-radius: 2px;} +.ant-btn > a:only-child {color: currentcolor;} +.ant-btn > a:only-child::after {background: transparent;} +.ant-btn:hover, .ant-btn:focus {color: color(~`colorPalette("@{btn-primary-bg}", 5)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 5)`);background: @btn-default-bg;} +.ant-btn:hover > a:only-child, .ant-btn:focus > a:only-child {color: currentcolor;} +.ant-btn:hover > a:only-child::after, .ant-btn:focus > a:only-child::after {background: transparent;} +.ant-btn:active {color: color(~`colorPalette("@{btn-primary-bg}", 7)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 7)`);background: @btn-default-bg;} +.ant-btn:active > a:only-child {color: currentcolor;} +.ant-btn:active > a:only-child::after {background: transparent;} +.ant-btn[disabled], .ant-btn[disabled]:hover, .ant-btn[disabled]:focus, .ant-btn[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} +.ant-btn[disabled] > a:only-child, .ant-btn[disabled]:hover > a:only-child, .ant-btn[disabled]:focus > a:only-child, .ant-btn[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn[disabled] > a:only-child::after, .ant-btn[disabled]:hover > a:only-child::after, .ant-btn[disabled]:focus > a:only-child::after, .ant-btn[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn:hover, .ant-btn:focus, .ant-btn:active {background: @btn-default-bg;} +.ant-btn-primary {color: #fff;border-color: @btn-primary-bg;background: @btn-primary-bg;box-shadow: @btn-primary-shadow;} +.ant-btn-primary > a:only-child {color: currentcolor;} +.ant-btn-primary > a:only-child::after {background: transparent;} +.ant-btn-primary:hover, .ant-btn-primary:focus {color: #fff;border-color: color(~`colorPalette("@{btn-primary-bg}", 5)`);background: color(~`colorPalette("@{btn-primary-bg}", 5)`);} +.ant-btn-primary:hover > a:only-child, .ant-btn-primary:focus > a:only-child {color: currentcolor;} +.ant-btn-primary:hover > a:only-child::after, .ant-btn-primary:focus > a:only-child::after {background: transparent;} +.ant-btn-primary:active {color: #fff;border-color: color(~`colorPalette("@{btn-primary-bg}", 7)`);background: color(~`colorPalette("@{btn-primary-bg}", 7)`);} +.ant-btn-primary:active > a:only-child {color: currentcolor;} +.ant-btn-primary:active > a:only-child::after {background: transparent;} +.ant-btn-primary[disabled], .ant-btn-primary[disabled]:hover, .ant-btn-primary[disabled]:focus, .ant-btn-primary[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} +.ant-btn-primary[disabled] > a:only-child, .ant-btn-primary[disabled]:hover > a:only-child, .ant-btn-primary[disabled]:focus > a:only-child, .ant-btn-primary[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-primary[disabled] > a:only-child::after, .ant-btn-primary[disabled]:hover > a:only-child::after, .ant-btn-primary[disabled]:focus > a:only-child::after, .ant-btn-primary[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) {border-right-color: color(~`colorPalette("@{primary-color}", 5)`);border-left-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled {border-color: @border-color-base;} +.ant-btn-group .ant-btn-primary:first-child:not(:last-child) {border-right-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled] {border-right-color: @border-color-base;} +.ant-btn-group .ant-btn-primary:last-child:not(:first-child), .ant-btn-group .ant-btn-primary + .ant-btn-primary {border-left-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled], .ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] {border-left-color: @border-color-base;} +.ant-btn-ghost {color: @text-color;border-color: @border-color-base;background: transparent;} +.ant-btn-ghost > a:only-child {color: currentcolor;} +.ant-btn-ghost > a:only-child::after {background: transparent;} +.ant-btn-ghost:hover, .ant-btn-ghost:focus {color: color(~`colorPalette("@{btn-primary-bg}", 5)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 5)`);background: transparent;} +.ant-btn-ghost:hover > a:only-child, .ant-btn-ghost:focus > a:only-child {color: currentcolor;} +.ant-btn-ghost:hover > a:only-child::after, .ant-btn-ghost:focus > a:only-child::after {background: transparent;} +.ant-btn-ghost:active {color: color(~`colorPalette("@{btn-primary-bg}", 7)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 7)`);background: transparent;} +.ant-btn-ghost:active > a:only-child {color: currentcolor;} +.ant-btn-ghost:active > a:only-child::after {background: transparent;} +.ant-btn-ghost[disabled], .ant-btn-ghost[disabled]:hover, .ant-btn-ghost[disabled]:focus, .ant-btn-ghost[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} +.ant-btn-ghost[disabled] > a:only-child, .ant-btn-ghost[disabled]:hover > a:only-child, .ant-btn-ghost[disabled]:focus > a:only-child, .ant-btn-ghost[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-ghost[disabled] > a:only-child::after, .ant-btn-ghost[disabled]:hover > a:only-child::after, .ant-btn-ghost[disabled]:focus > a:only-child::after, .ant-btn-ghost[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-dashed {color: @text-color;border-color: @border-color-base;background: @btn-default-bg;border-style: dashed;} +.ant-btn-dashed > a:only-child {color: currentcolor;} +.ant-btn-dashed > a:only-child::after {background: transparent;} +.ant-btn-dashed:hover, .ant-btn-dashed:focus {color: color(~`colorPalette("@{btn-primary-bg}", 5)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 5)`);background: @btn-default-bg;} +.ant-btn-dashed:hover > a:only-child, .ant-btn-dashed:focus > a:only-child {color: currentcolor;} +.ant-btn-dashed:hover > a:only-child::after, .ant-btn-dashed:focus > a:only-child::after {background: transparent;} +.ant-btn-dashed:active {color: color(~`colorPalette("@{btn-primary-bg}", 7)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 7)`);background: @btn-default-bg;} +.ant-btn-dashed:active > a:only-child {color: currentcolor;} +.ant-btn-dashed:active > a:only-child::after {background: transparent;} +.ant-btn-dashed[disabled], .ant-btn-dashed[disabled]:hover, .ant-btn-dashed[disabled]:focus, .ant-btn-dashed[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} +.ant-btn-dashed[disabled] > a:only-child, .ant-btn-dashed[disabled]:hover > a:only-child, .ant-btn-dashed[disabled]:focus > a:only-child, .ant-btn-dashed[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-dashed[disabled] > a:only-child::after, .ant-btn-dashed[disabled]:hover > a:only-child::after, .ant-btn-dashed[disabled]:focus > a:only-child::after, .ant-btn-dashed[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-danger {color: #fff;border-color: #ff4d4f;background: #ff4d4f;box-shadow: @btn-primary-shadow;} +.ant-btn-danger > a:only-child {color: currentcolor;} +.ant-btn-danger > a:only-child::after {background: transparent;} +.ant-btn-danger:hover, .ant-btn-danger:focus {color: #fff;border-color: #ff7875;background: #ff7875;} +.ant-btn-danger:hover > a:only-child, .ant-btn-danger:focus > a:only-child {color: currentcolor;} +.ant-btn-danger:hover > a:only-child::after, .ant-btn-danger:focus > a:only-child::after {background: transparent;} +.ant-btn-danger:active {color: #fff;border-color: #d9363e;background: #d9363e;} +.ant-btn-danger:active > a:only-child {color: currentcolor;} +.ant-btn-danger:active > a:only-child::after {background: transparent;} +.ant-btn-danger[disabled], .ant-btn-danger[disabled]:hover, .ant-btn-danger[disabled]:focus, .ant-btn-danger[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} +.ant-btn-danger[disabled] > a:only-child, .ant-btn-danger[disabled]:hover > a:only-child, .ant-btn-danger[disabled]:focus > a:only-child, .ant-btn-danger[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-danger[disabled] > a:only-child::after, .ant-btn-danger[disabled]:hover > a:only-child::after, .ant-btn-danger[disabled]:focus > a:only-child::after, .ant-btn-danger[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-link {color: @link-color;border-color: transparent;background: transparent;box-shadow: none;} +.ant-btn-link > a:only-child {color: currentcolor;} +.ant-btn-link > a:only-child::after {background: transparent;} +.ant-btn-link:hover, .ant-btn-link:focus {color: color(~`colorPalette("@{btn-primary-bg}", 5)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 5)`);background: transparent;} +.ant-btn-link:hover > a:only-child, .ant-btn-link:focus > a:only-child {color: currentcolor;} +.ant-btn-link:hover > a:only-child::after, .ant-btn-link:focus > a:only-child::after {background: transparent;} +.ant-btn-link:active {color: color(~`colorPalette("@{btn-primary-bg}", 7)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 7)`);background: transparent;} +.ant-btn-link:active > a:only-child {color: currentcolor;} +.ant-btn-link:active > a:only-child::after {background: transparent;} +.ant-btn-link[disabled], .ant-btn-link[disabled]:hover, .ant-btn-link[disabled]:focus, .ant-btn-link[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} +.ant-btn-link[disabled] > a:only-child, .ant-btn-link[disabled]:hover > a:only-child, .ant-btn-link[disabled]:focus > a:only-child, .ant-btn-link[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-link[disabled] > a:only-child::after, .ant-btn-link[disabled]:hover > a:only-child::after, .ant-btn-link[disabled]:focus > a:only-child::after, .ant-btn-link[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-link:hover {background: transparent;} +.ant-btn-link:hover, .ant-btn-link:focus, .ant-btn-link:active {border-color: transparent;} +.ant-btn-link[disabled], .ant-btn-link[disabled]:hover, .ant-btn-link[disabled]:focus, .ant-btn-link[disabled]:active {color: @disabled-color;border-color: transparent;background: transparent;box-shadow: none;} +.ant-btn-link[disabled] > a:only-child, .ant-btn-link[disabled]:hover > a:only-child, .ant-btn-link[disabled]:focus > a:only-child, .ant-btn-link[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-link[disabled] > a:only-child::after, .ant-btn-link[disabled]:hover > a:only-child::after, .ant-btn-link[disabled]:focus > a:only-child::after, .ant-btn-link[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-text {color: @text-color;border-color: transparent;background: transparent;box-shadow: none;} +.ant-btn-text > a:only-child {color: currentcolor;} +.ant-btn-text > a:only-child::after {background: transparent;} +.ant-btn-text:hover, .ant-btn-text:focus {color: color(~`colorPalette("@{btn-primary-bg}", 5)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 5)`);background: transparent;} +.ant-btn-text:hover > a:only-child, .ant-btn-text:focus > a:only-child {color: currentcolor;} +.ant-btn-text:hover > a:only-child::after, .ant-btn-text:focus > a:only-child::after {background: transparent;} +.ant-btn-text:active {color: color(~`colorPalette("@{btn-primary-bg}", 7)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 7)`);background: transparent;} +.ant-btn-text:active > a:only-child {color: currentcolor;} +.ant-btn-text:active > a:only-child::after {background: transparent;} +.ant-btn-text[disabled], .ant-btn-text[disabled]:hover, .ant-btn-text[disabled]:focus, .ant-btn-text[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} +.ant-btn-text[disabled] > a:only-child, .ant-btn-text[disabled]:hover > a:only-child, .ant-btn-text[disabled]:focus > a:only-child, .ant-btn-text[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-text[disabled] > a:only-child::after, .ant-btn-text[disabled]:hover > a:only-child::after, .ant-btn-text[disabled]:focus > a:only-child::after, .ant-btn-text[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-text:hover, .ant-btn-text:focus {color: @text-color;background: @btn-text-hover-bg;border-color: transparent;} +.ant-btn-text:active {color: @text-color;background: fadein(@btn-text-hover-bg, 1%);border-color: transparent;} +.ant-btn-text[disabled], .ant-btn-text[disabled]:hover, .ant-btn-text[disabled]:focus, .ant-btn-text[disabled]:active {color: @disabled-color;border-color: transparent;background: transparent;box-shadow: none;} +.ant-btn-text[disabled] > a:only-child, .ant-btn-text[disabled]:hover > a:only-child, .ant-btn-text[disabled]:focus > a:only-child, .ant-btn-text[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-text[disabled] > a:only-child::after, .ant-btn-text[disabled]:hover > a:only-child::after, .ant-btn-text[disabled]:focus > a:only-child::after, .ant-btn-text[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-dangerous {color: #ff4d4f;border-color: #ff4d4f;background: @btn-default-bg;} +.ant-btn-dangerous > a:only-child {color: currentcolor;} +.ant-btn-dangerous > a:only-child::after {background: transparent;} +.ant-btn-dangerous:hover, .ant-btn-dangerous:focus {color: #ff7875;border-color: #ff7875;background: @btn-default-bg;} +.ant-btn-dangerous:hover > a:only-child, .ant-btn-dangerous:focus > a:only-child {color: currentcolor;} +.ant-btn-dangerous:hover > a:only-child::after, .ant-btn-dangerous:focus > a:only-child::after {background: transparent;} +.ant-btn-dangerous:active {color: #d9363e;border-color: #d9363e;background: @btn-default-bg;} +.ant-btn-dangerous:active > a:only-child {color: currentcolor;} +.ant-btn-dangerous:active > a:only-child::after {background: transparent;} +.ant-btn-dangerous[disabled], .ant-btn-dangerous[disabled]:hover, .ant-btn-dangerous[disabled]:focus, .ant-btn-dangerous[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} +.ant-btn-dangerous[disabled] > a:only-child, .ant-btn-dangerous[disabled]:hover > a:only-child, .ant-btn-dangerous[disabled]:focus > a:only-child, .ant-btn-dangerous[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-dangerous[disabled] > a:only-child::after, .ant-btn-dangerous[disabled]:hover > a:only-child::after, .ant-btn-dangerous[disabled]:focus > a:only-child::after, .ant-btn-dangerous[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-primary {color: #fff;border-color: #ff4d4f;background: #ff4d4f;box-shadow: @btn-primary-shadow;} +.ant-btn-dangerous.ant-btn-primary > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-primary > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-primary:hover, .ant-btn-dangerous.ant-btn-primary:focus {color: #fff;border-color: #ff7875;background: #ff7875;} +.ant-btn-dangerous.ant-btn-primary:hover > a:only-child, .ant-btn-dangerous.ant-btn-primary:focus > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-primary:hover > a:only-child::after, .ant-btn-dangerous.ant-btn-primary:focus > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-primary:active {color: #fff;border-color: #d9363e;background: #d9363e;} +.ant-btn-dangerous.ant-btn-primary:active > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-primary:active > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-primary[disabled], .ant-btn-dangerous.ant-btn-primary[disabled]:hover, .ant-btn-dangerous.ant-btn-primary[disabled]:focus, .ant-btn-dangerous.ant-btn-primary[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} +.ant-btn-dangerous.ant-btn-primary[disabled] > a:only-child, .ant-btn-dangerous.ant-btn-primary[disabled]:hover > a:only-child, .ant-btn-dangerous.ant-btn-primary[disabled]:focus > a:only-child, .ant-btn-dangerous.ant-btn-primary[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-primary[disabled] > a:only-child::after, .ant-btn-dangerous.ant-btn-primary[disabled]:hover > a:only-child::after, .ant-btn-dangerous.ant-btn-primary[disabled]:focus > a:only-child::after, .ant-btn-dangerous.ant-btn-primary[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-link {color: #ff4d4f;border-color: transparent;background: transparent;box-shadow: none;} +.ant-btn-dangerous.ant-btn-link > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-link > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-link:hover, .ant-btn-dangerous.ant-btn-link:focus {color: color(~`colorPalette("@{btn-primary-bg}", 5)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 5)`);background: transparent;} +.ant-btn-dangerous.ant-btn-link:hover > a:only-child, .ant-btn-dangerous.ant-btn-link:focus > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-link:hover > a:only-child::after, .ant-btn-dangerous.ant-btn-link:focus > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-link:active {color: color(~`colorPalette("@{btn-primary-bg}", 7)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 7)`);background: transparent;} +.ant-btn-dangerous.ant-btn-link:active > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-link:active > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-link[disabled], .ant-btn-dangerous.ant-btn-link[disabled]:hover, .ant-btn-dangerous.ant-btn-link[disabled]:focus, .ant-btn-dangerous.ant-btn-link[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} +.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child, .ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child, .ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child, .ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after, .ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after, .ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after, .ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-link:hover, .ant-btn-dangerous.ant-btn-link:focus {color: #ff7875;border-color: transparent;background: transparent;} +.ant-btn-dangerous.ant-btn-link:hover > a:only-child, .ant-btn-dangerous.ant-btn-link:focus > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-link:hover > a:only-child::after, .ant-btn-dangerous.ant-btn-link:focus > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-link:active {color: #d9363e;border-color: transparent;background: transparent;} +.ant-btn-dangerous.ant-btn-link:active > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-link:active > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-link[disabled], .ant-btn-dangerous.ant-btn-link[disabled]:hover, .ant-btn-dangerous.ant-btn-link[disabled]:focus, .ant-btn-dangerous.ant-btn-link[disabled]:active {color: @disabled-color;border-color: transparent;background: transparent;box-shadow: none;} +.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child, .ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child, .ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child, .ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after, .ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after, .ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after, .ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-text {color: #ff4d4f;border-color: transparent;background: transparent;box-shadow: none;} +.ant-btn-dangerous.ant-btn-text > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-text > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-text:hover, .ant-btn-dangerous.ant-btn-text:focus {color: color(~`colorPalette("@{btn-primary-bg}", 5)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 5)`);background: transparent;} +.ant-btn-dangerous.ant-btn-text:hover > a:only-child, .ant-btn-dangerous.ant-btn-text:focus > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-text:hover > a:only-child::after, .ant-btn-dangerous.ant-btn-text:focus > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-text:active {color: color(~`colorPalette("@{btn-primary-bg}", 7)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 7)`);background: transparent;} +.ant-btn-dangerous.ant-btn-text:active > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-text:active > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-text[disabled], .ant-btn-dangerous.ant-btn-text[disabled]:hover, .ant-btn-dangerous.ant-btn-text[disabled]:focus, .ant-btn-dangerous.ant-btn-text[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} +.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child, .ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child, .ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child, .ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child::after, .ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child::after, .ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child::after, .ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-text:hover, .ant-btn-dangerous.ant-btn-text:focus {color: #ff7875;border-color: transparent;background: @btn-text-hover-bg;} +.ant-btn-dangerous.ant-btn-text:hover > a:only-child, .ant-btn-dangerous.ant-btn-text:focus > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-text:hover > a:only-child::after, .ant-btn-dangerous.ant-btn-text:focus > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-text:active {color: #d9363e;border-color: transparent;background: fadein(@btn-text-hover-bg, 1%);} +.ant-btn-dangerous.ant-btn-text:active > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-text:active > a:only-child::after {background: transparent;} +.ant-btn-dangerous.ant-btn-text[disabled], .ant-btn-dangerous.ant-btn-text[disabled]:hover, .ant-btn-dangerous.ant-btn-text[disabled]:focus, .ant-btn-dangerous.ant-btn-text[disabled]:active {color: @disabled-color;border-color: transparent;background: transparent;box-shadow: none;} +.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child, .ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child, .ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child, .ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child::after, .ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child::after, .ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child::after, .ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-icon-only {border-radius: 2px;} +.ant-btn-icon-only.ant-btn-lg {border-radius: 2px;} +.ant-btn-icon-only.ant-btn-sm {border-radius: 2px;} +.ant-btn-round {border-radius: 32px;} +.ant-btn-round.ant-btn-lg {border-radius: 40px;} +.ant-btn-round.ant-btn-sm {border-radius: 24px;} +.ant-btn-circle {border-radius: 50%;} +.ant-btn-circle.ant-btn-lg {border-radius: 50%;} +.ant-btn-circle.ant-btn-sm {border-radius: 50%;} +.ant-btn::before {background: @component-background;border-radius: inherit;} +.ant-btn-group .ant-btn-primary + .ant-btn:not(.ant-btn-primary):not([disabled]) {border-left-color: transparent;} +.ant-btn-group .ant-btn {border-radius: 0;} +.ant-btn-group > .ant-btn:only-child {border-radius: 2px;} +.ant-btn-group > span:only-child > .ant-btn {border-radius: 2px;} +.ant-btn-group > .ant-btn:first-child:not(:last-child), .ant-btn-group > span:first-child:not(:last-child) > .ant-btn {border-top-left-radius: 2px;border-bottom-left-radius: 2px;} +.ant-btn-group > .ant-btn:last-child:not(:first-child), .ant-btn-group > span:last-child:not(:first-child) > .ant-btn {border-top-right-radius: 2px;border-bottom-right-radius: 2px;} +.ant-btn-group-sm > .ant-btn:only-child {border-radius: 2px;} +.ant-btn-group-sm > span:only-child > .ant-btn {border-radius: 2px;} +.ant-btn-group-sm > .ant-btn:first-child:not(:last-child), .ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn {border-top-left-radius: 2px;border-bottom-left-radius: 2px;} +.ant-btn-group-sm > .ant-btn:last-child:not(:first-child), .ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn {border-top-right-radius: 2px;border-bottom-right-radius: 2px;} +.ant-btn-group > .ant-btn-group:not(:first-child):not(:last-child) > .ant-btn {border-radius: 0;} +.ant-btn-group > .ant-btn-group:first-child:not(:last-child) > .ant-btn:last-child {border-top-right-radius: 0;border-bottom-right-radius: 0;} +.ant-btn-group > .ant-btn-group:last-child:not(:first-child) > .ant-btn:first-child {border-top-left-radius: 0;border-bottom-left-radius: 0;} +.ant-btn-group-rtl.ant-btn-group > .ant-btn:first-child:not(:last-child), .ant-btn-group-rtl.ant-btn-group > span:first-child:not(:last-child) > .ant-btn {border-radius: 0 2px 2px 0;} +.ant-btn-group-rtl.ant-btn-group > .ant-btn:last-child:not(:first-child), .ant-btn-group-rtl.ant-btn-group > span:last-child:not(:first-child) > .ant-btn {border-radius: 2px 0 0 2px;} +.ant-btn-group-rtl.ant-btn-group-sm > .ant-btn:first-child:not(:last-child), .ant-btn-group-rtl.ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn {border-radius: 0 2px 2px 0;} +.ant-btn-group-rtl.ant-btn-group-sm > .ant-btn:last-child:not(:first-child), .ant-btn-group-rtl.ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn {border-radius: 2px 0 0 2px;} +.ant-btn.ant-btn-background-ghost {color: @btn-default-ghost-color;border-color: @btn-default-ghost-border;} +.ant-btn.ant-btn-background-ghost, .ant-btn.ant-btn-background-ghost:hover, .ant-btn.ant-btn-background-ghost:active, .ant-btn.ant-btn-background-ghost:focus {background: transparent;} +.ant-btn.ant-btn-background-ghost:hover, .ant-btn.ant-btn-background-ghost:focus {color: color(~`colorPalette("@{primary-color}", 5)`);border-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-btn.ant-btn-background-ghost:active {color: color(~`colorPalette("@{primary-color}", 7)`);border-color: color(~`colorPalette("@{primary-color}", 7)`);} +.ant-btn.ant-btn-background-ghost[disabled] {color: @disabled-color;background: transparent;border-color: @border-color-base;} +.ant-btn-background-ghost.ant-btn-primary {color: @btn-primary-bg;border-color: @btn-primary-bg;} +.ant-btn-background-ghost.ant-btn-primary > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-primary > a:only-child::after {background: transparent;} +.ant-btn-background-ghost.ant-btn-primary:hover, .ant-btn-background-ghost.ant-btn-primary:focus {color: color(~`colorPalette("@{btn-primary-bg}", 5)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 5)`);} +.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child, .ant-btn-background-ghost.ant-btn-primary:focus > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child::after, .ant-btn-background-ghost.ant-btn-primary:focus > a:only-child::after {background: transparent;} +.ant-btn-background-ghost.ant-btn-primary:active {color: color(~`colorPalette("@{btn-primary-bg}", 7)`);border-color: color(~`colorPalette("@{btn-primary-bg}", 7)`);} +.ant-btn-background-ghost.ant-btn-primary:active > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-primary:active > a:only-child::after {background: transparent;} +.ant-btn-background-ghost.ant-btn-primary[disabled], .ant-btn-background-ghost.ant-btn-primary[disabled]:hover, .ant-btn-background-ghost.ant-btn-primary[disabled]:focus, .ant-btn-background-ghost.ant-btn-primary[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} +.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child, .ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child, .ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child, .ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child::after, .ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child::after, .ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child::after, .ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-background-ghost.ant-btn-danger {color: #ff4d4f;border-color: #ff4d4f;} +.ant-btn-background-ghost.ant-btn-danger > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-danger > a:only-child::after {background: transparent;} +.ant-btn-background-ghost.ant-btn-danger:hover, .ant-btn-background-ghost.ant-btn-danger:focus {color: #ff7875;border-color: #ff7875;} +.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child, .ant-btn-background-ghost.ant-btn-danger:focus > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child::after, .ant-btn-background-ghost.ant-btn-danger:focus > a:only-child::after {background: transparent;} +.ant-btn-background-ghost.ant-btn-danger:active {color: #d9363e;border-color: #d9363e;} +.ant-btn-background-ghost.ant-btn-danger:active > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-danger:active > a:only-child::after {background: transparent;} +.ant-btn-background-ghost.ant-btn-danger[disabled], .ant-btn-background-ghost.ant-btn-danger[disabled]:hover, .ant-btn-background-ghost.ant-btn-danger[disabled]:focus, .ant-btn-background-ghost.ant-btn-danger[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} +.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child, .ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child, .ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child, .ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child::after, .ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child::after, .ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child::after, .ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-background-ghost.ant-btn-dangerous {color: #ff4d4f;border-color: #ff4d4f;} +.ant-btn-background-ghost.ant-btn-dangerous > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-dangerous > a:only-child::after {background: transparent;} +.ant-btn-background-ghost.ant-btn-dangerous:hover, .ant-btn-background-ghost.ant-btn-dangerous:focus {color: #ff7875;border-color: #ff7875;} +.ant-btn-background-ghost.ant-btn-dangerous:hover > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous:focus > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-dangerous:hover > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous:focus > a:only-child::after {background: transparent;} +.ant-btn-background-ghost.ant-btn-dangerous:active {color: #d9363e;border-color: #d9363e;} +.ant-btn-background-ghost.ant-btn-dangerous:active > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-dangerous:active > a:only-child::after {background: transparent;} +.ant-btn-background-ghost.ant-btn-dangerous[disabled], .ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover, .ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus, .ant-btn-background-ghost.ant-btn-dangerous[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} +.ant-btn-background-ghost.ant-btn-dangerous[disabled] > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-dangerous[disabled] > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link {color: #ff4d4f;border-color: transparent;} +.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link > a:only-child::after {background: transparent;} +.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus {color: #ff7875;border-color: transparent;} +.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus > a:only-child::after {background: transparent;} +.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active {color: #d9363e;border-color: transparent;} +.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active > a:only-child::after {background: transparent;} +.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled], .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} +.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child {color: currentcolor;} +.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after {background: transparent;} +.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child), .ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary {border-right-color: color(~`colorPalette("@{primary-color}", 5)`);border-left-color: @border-color-base;} +.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled], .ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] {border-right-color: @border-color-base;border-left-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-picker-calendar {color: @text-color;background: @calendar-full-bg;} +.ant-picker-calendar .ant-picker-panel {background: @calendar-full-bg;border: 0;border-top: 1px solid @border-color-split;border-radius: 0;} +.ant-picker-calendar-mini {border-radius: 2px;} +.ant-picker-calendar-mini .ant-picker-panel {border-radius: 0 0 2px 2px;} +.ant-picker-calendar-full .ant-picker-panel {background: @calendar-full-bg;border: 0;} +.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell:hover .ant-picker-calendar-date {background: @item-hover-bg;} +.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected .ant-picker-calendar-date, .ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected:hover .ant-picker-calendar-date, .ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected .ant-picker-calendar-date-today, .ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected:hover .ant-picker-calendar-date-today {background: @item-active-bg;} +.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected .ant-picker-calendar-date .ant-picker-calendar-date-value, .ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected:hover .ant-picker-calendar-date .ant-picker-calendar-date-value, .ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected .ant-picker-calendar-date-today .ant-picker-calendar-date-value, .ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected:hover .ant-picker-calendar-date-today .ant-picker-calendar-date-value {color: @primary-color;} +.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date {border: 0;border-top: 2px solid @border-color-split;border-radius: 0;} +.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date-content {color: @text-color;} +.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date-today {border-color: @primary-color;} +.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date-today .ant-picker-calendar-date-value {color: @text-color;} +.ant-card {color: @text-color;background: @component-background;border-radius: 2px;} +.ant-card-hoverable:hover {border-color: transparent;box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09);} +.ant-card-bordered {border: 1px solid @border-color-split;} +.ant-card-head {color: @heading-color;background: transparent;border-bottom: 1px solid @border-color-split;border-radius: 2px 2px 0 0;} +.ant-card-head .ant-tabs-top {color: @text-color;} +.ant-card-head .ant-tabs-top-bar {border-bottom: 1px solid @border-color-split;} +.ant-card-extra {color: @text-color;} +.ant-card-grid {border: 0;border-radius: 0;box-shadow: 1px 0 0 0 @border-color-split, 0 1px 0 0 @border-color-split, 1px 1px 0 0 @border-color-split, 1px 0 0 0 @border-color-split inset, 0 1px 0 0 @border-color-split inset;} +.ant-card-grid-hoverable:hover {box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09);} +.ant-card-cover img {border-radius: 2px 2px 0 0;} +.ant-card-actions {background: @card-actions-background;border-top: 1px solid @border-color-split;} +.ant-card-actions > li {color: @text-color-secondary;} +.ant-card-actions > li > span:hover {color: @primary-color;} +.ant-card-actions > li > span a:not(.ant-btn), .ant-card-actions > li > span > .anticon {color: @text-color-secondary;} +.ant-card-actions > li > span a:not(.ant-btn):hover, .ant-card-actions > li > span > .anticon:hover {color: @primary-color;} +.ant-card-actions > li:not(:last-child) {border-right: 1px solid @border-color-split;} +.ant-card-rtl .ant-card-actions > li:not(:last-child) {border-right: none;border-left: 1px solid @border-color-split;} +.ant-card-type-inner .ant-card-head {background: @background-color-light;} +.ant-card-meta-title {color: @heading-color;} +.ant-card-meta-description {color: @text-color-secondary;} +.ant-carousel {color: @text-color;} +.ant-carousel .slick-slider {-webkit-tap-highlight-color: transparent;} +.ant-carousel .slick-prev, .ant-carousel .slick-next {color: transparent;background: transparent;border: 0;} +.ant-carousel .slick-prev:hover, .ant-carousel .slick-next:hover, .ant-carousel .slick-prev:focus, .ant-carousel .slick-next:focus {color: transparent;background: transparent;} +.ant-carousel .slick-dots li button {color: transparent;background: @component-background;border: 0;border-radius: 1px;} +.ant-carousel .slick-dots li.slick-active button {background: @component-background;} +.ant-cascader-checkbox {color: @text-color;} +.ant-cascader-checkbox-wrapper:hover .ant-cascader-checkbox-inner, .ant-cascader-checkbox:hover .ant-cascader-checkbox-inner, .ant-cascader-checkbox-input:focus + .ant-cascader-checkbox-inner {border-color: @primary-color;} +.ant-cascader-checkbox-checked::after {border: 1px solid @primary-color;border-radius: 2px;animation-fill-mode: backwards;} +.ant-cascader-checkbox-inner {background-color: @checkbox-check-bg;border: 1px solid @border-color-base;border-radius: 2px;border-collapse: separate;} +.ant-cascader-checkbox-inner::after {border: 2px solid #fff;border-top: 0;border-left: 0;} +.ant-cascader-checkbox-checked .ant-cascader-checkbox-inner::after {border: 2px solid #fff;border-top: 0;border-left: 0;} +.ant-cascader-checkbox-checked .ant-cascader-checkbox-inner {background-color: @primary-color;border-color: @primary-color;} +.ant-cascader-checkbox-disabled.ant-cascader-checkbox-checked .ant-cascader-checkbox-inner::after {border-color: @disabled-color;} +.ant-cascader-checkbox-disabled .ant-cascader-checkbox-inner {background-color: @disabled-bg;border-color: @border-color-base !important;} +.ant-cascader-checkbox-disabled .ant-cascader-checkbox-inner::after {border-color: @disabled-bg;border-collapse: separate;} +.ant-cascader-checkbox-disabled + span {color: @disabled-color;} +.ant-cascader-checkbox-wrapper {color: @text-color;} +.ant-cascader-checkbox-group {color: @text-color;} +.ant-cascader-checkbox-indeterminate .ant-cascader-checkbox-inner {background-color: @checkbox-check-bg;border-color: @border-color-base;} +.ant-cascader-checkbox-indeterminate .ant-cascader-checkbox-inner::after {background-color: @primary-color;border: 0;} +.ant-cascader-checkbox-indeterminate.ant-cascader-checkbox-disabled .ant-cascader-checkbox-inner::after {background-color: @disabled-color;border-color: @disabled-color;} +.ant-cascader-menu {border-right: 1px solid @cascader-menu-border-color-split;} +.ant-cascader-menu-item:hover {background: @item-hover-bg;} +.ant-cascader-menu-item-disabled {color: @disabled-color;} +.ant-cascader-menu-item-disabled:hover {background: transparent;} +.ant-cascader-menu-empty .ant-cascader-menu-item {color: @disabled-color;} +.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled), .ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled):hover {background-color: color(~`colorPalette("@{primary-color}", 1)`);} +.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon, .ant-cascader-menu-item-loading-icon {color: @text-color-secondary;} +.ant-cascader-menu-item-disabled.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon, .ant-cascader-menu-item-disabled.ant-cascader-menu-item-loading-icon {color: @disabled-color;} +.ant-cascader-menu-item-keyword {color: #ff4d4f;} +.ant-checkbox {color: @text-color;} +.ant-checkbox-wrapper:hover .ant-checkbox-inner, .ant-checkbox:hover .ant-checkbox-inner, .ant-checkbox-input:focus + .ant-checkbox-inner {border-color: @primary-color;} +.ant-checkbox-checked::after {border: 1px solid @primary-color;border-radius: 2px;animation-fill-mode: backwards;} +.ant-checkbox-inner {background-color: @checkbox-check-bg;border: 1px solid @border-color-base;border-radius: 2px;border-collapse: separate;} +.ant-checkbox-inner::after {border: 2px solid #fff;border-top: 0;border-left: 0;} +.ant-checkbox-checked .ant-checkbox-inner::after {border: 2px solid #fff;border-top: 0;border-left: 0;} +.ant-checkbox-checked .ant-checkbox-inner {background-color: @primary-color;border-color: @primary-color;} +.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner::after {border-color: @disabled-color;} +.ant-checkbox-disabled .ant-checkbox-inner {background-color: @disabled-bg;border-color: @border-color-base !important;} +.ant-checkbox-disabled .ant-checkbox-inner::after {border-color: @disabled-bg;border-collapse: separate;} +.ant-checkbox-disabled + span {color: @disabled-color;} +.ant-checkbox-wrapper {color: @text-color;} +.ant-checkbox-group {color: @text-color;} +.ant-checkbox-indeterminate .ant-checkbox-inner {background-color: @checkbox-check-bg;border-color: @border-color-base;} +.ant-checkbox-indeterminate .ant-checkbox-inner::after {background-color: @primary-color;border: 0;} +.ant-checkbox-indeterminate.ant-checkbox-disabled .ant-checkbox-inner::after {background-color: @disabled-color;border-color: @disabled-color;} +.ant-collapse {color: @text-color;background-color: @background-color-light;border: 1px solid @border-color-base;border-bottom: 0;border-radius: 2px;} +.ant-collapse > .ant-collapse-item {border-bottom: 1px solid @border-color-base;} +.ant-collapse > .ant-collapse-item:last-child, .ant-collapse > .ant-collapse-item:last-child > .ant-collapse-header {border-radius: 0 0 2px 2px;} +.ant-collapse > .ant-collapse-item > .ant-collapse-header {color: @heading-color;} +.ant-collapse-content {color: @text-color;background-color: @component-background;border-top: 1px solid @border-color-base;} +.ant-collapse-item:last-child > .ant-collapse-content {border-radius: 0 0 2px 2px;} +.ant-collapse-borderless {background-color: @background-color-light;border: 0;} +.ant-collapse-borderless > .ant-collapse-item {border-bottom: 1px solid @border-color-base;} +.ant-collapse-borderless > .ant-collapse-item:last-child, .ant-collapse-borderless > .ant-collapse-item:last-child .ant-collapse-header {border-radius: 0;} +.ant-collapse-borderless > .ant-collapse-item:last-child {border-bottom: 0;} +.ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content {background-color: transparent;border-top: 0;} +.ant-collapse-ghost {background-color: transparent;border: 0;} +.ant-collapse-ghost > .ant-collapse-item {border-bottom: 0;} +.ant-collapse-ghost > .ant-collapse-item > .ant-collapse-content {background-color: transparent;border-top: 0;} +.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header, .ant-collapse .ant-collapse-item-disabled > .ant-collapse-header > .arrow {color: @disabled-color;} +.ant-comment {background-color: inherit;} +.ant-comment-avatar img {border-radius: 50%;} +.ant-comment-content-author-name {color: @text-color-secondary;} +.ant-comment-content-author-name > * {color: @text-color-secondary;} +.ant-comment-content-author-name > *:hover {color: @text-color-secondary;} +.ant-comment-content-author-time {color: @comment-author-time-color;} +.ant-comment-actions > li {color: @text-color-secondary;} +.ant-comment-actions > li > span {color: @text-color-secondary;} +.ant-comment-actions > li > span:hover {color: @comment-action-hover-color;} +.ant-picker-status-error.ant-picker, .ant-picker-status-error.ant-picker:not([disabled]):hover {background-color: @input-bg;border-color: #ff4d4f;} +.ant-picker-status-error.ant-picker-focused, .ant-picker-status-error.ant-picker:focus {border-color: #ff7875;box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2);border-right-width: 1px;} +.ant-picker-status-warning.ant-picker, .ant-picker-status-warning.ant-picker:not([disabled]):hover {background-color: @input-bg;border-color: #faad14;} +.ant-picker-status-warning.ant-picker-focused, .ant-picker-status-warning.ant-picker:focus {border-color: #ffc53d;box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);border-right-width: 1px;} +.ant-picker {color: @text-color;background: @picker-bg;border: 1px solid @border-color-base;border-radius: 2px;} +.ant-picker:hover, .ant-picker-focused {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} +.ant-input-rtl .ant-picker:hover, .ant-input-rtl .ant-picker-focused {border-right-width: 0;border-left-width: 1px !important;} +.ant-picker-focused {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);border-right-width: 1px;} +.ant-input-rtl .ant-picker-focused {border-right-width: 0;border-left-width: 1px !important;} +.ant-picker.ant-picker-disabled {background: @disabled-bg;border-color: @border-color-base;} +.ant-picker.ant-picker-disabled .ant-picker-suffix {color: @disabled-color;} +.ant-picker.ant-picker-borderless {background-color: transparent !important;border-color: transparent !important;box-shadow: none !important;} +.ant-picker-input > input {color: @text-color;background-color: @input-bg;background-image: none;border: 1px solid @border-color-base;border-radius: 2px;background: transparent;border: 0;} +.ant-picker-input > input::placeholder {color: @input-placeholder-color;} +.ant-picker-input > input:hover {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} +.ant-input-rtl .ant-picker-input > input:hover {border-right-width: 0;border-left-width: 1px !important;} +.ant-picker-input > input:focus, .ant-picker-input > input-focused {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);border-right-width: 1px;} +.ant-input-rtl .ant-picker-input > input:focus, .ant-input-rtl .ant-picker-input > input-focused {border-right-width: 0;border-left-width: 1px !important;} +.ant-picker-input > input-disabled {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-picker-input > input-disabled:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-picker-input > input[disabled] {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-picker-input > input[disabled]:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-picker-input > input-borderless, .ant-picker-input > input-borderless:hover, .ant-picker-input > input-borderless:focus, .ant-picker-input > input-borderless-focused, .ant-picker-input > input-borderless-disabled, .ant-picker-input > input-borderless[disabled] {background-color: transparent;border: none;box-shadow: none;} +.ant-picker-input > input:focus {box-shadow: none;} +.ant-picker-input > input[disabled] {background: transparent;} +.ant-picker-input-placeholder > input {color: @input-placeholder-color;} +.ant-picker-suffix {color: @disabled-color;} +.ant-picker-clear {color: @disabled-color;background: @component-background;} +.ant-picker-clear:hover {color: @text-color-secondary;} +.ant-picker-separator {color: @disabled-color;} +.ant-picker-focused .ant-picker-separator {color: @text-color-secondary;} +.ant-picker-range .ant-picker-active-bar {background: @primary-color;} +.ant-picker-dropdown {color: @text-color;} +.ant-picker-ranges .ant-picker-preset > .ant-tag-blue {color: @primary-color;background: color(~`colorPalette("@{primary-color}", 1)`);border-color: color(~`colorPalette("@{primary-color}", 3)`);} +.ant-picker-range-arrow {background: linear-gradient(135deg, transparent 40%, @calendar-bg 40%);box-shadow: 2px 2px 6px -2px rgba(0, 0, 0, 0.1);border-radius: 0 0 2px;} +.ant-picker-range-arrow::before {background: @calendar-bg;background-repeat: no-repeat;background-position: -10px -10px;} +.ant-picker-panel-container {background: @calendar-bg;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);} +.ant-picker-panel-container .ant-picker-panel {background: transparent;border-width: 0 0 1px 0;border-radius: 0;} +.ant-picker-panel-container .ant-picker-panel-focused {border-color: @border-color-split;} +.ant-picker-panel {background: @calendar-bg;border: 1px solid @picker-border-color;border-radius: 2px;} +.ant-picker-panel-focused {border-color: @primary-color;} +.ant-picker-header {color: @heading-color;border-bottom: 1px solid @picker-border-color;} +.ant-picker-header button {color: @disabled-color;background: transparent;border: 0;} +.ant-picker-header > button:hover {color: @text-color;} +.ant-picker-header-view button {color: inherit;} +.ant-picker-header-view button:hover {color: @primary-color;} +.ant-picker-prev-icon::before, .ant-picker-next-icon::before, .ant-picker-super-prev-icon::before, .ant-picker-super-next-icon::before {border: 0 solid currentcolor;border-width: 1.5px 0 0 1.5px;} +.ant-picker-super-prev-icon::after, .ant-picker-super-next-icon::after {border: 0 solid currentcolor;border-width: 1.5px 0 0 1.5px;} +.ant-picker-content {border-collapse: collapse;} +.ant-picker-content th {color: @text-color;} +.ant-picker-cell {color: @disabled-color;} +.ant-picker-cell-in-view {color: @text-color;} +.ant-picker-cell .ant-picker-cell-inner {border-radius: 2px;} +.ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner, .ant-picker-cell:hover:not(.ant-picker-cell-selected):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):not(.ant-picker-cell-range-hover-start):not(.ant-picker-cell-range-hover-end) .ant-picker-cell-inner {background: @item-hover-bg;} +.ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner::before {border: 1px solid @primary-color;border-radius: 2px;} +.ant-picker-cell-in-view.ant-picker-cell-in-range::before {background: @picker-basic-cell-active-with-range-color;} +.ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner, .ant-picker-cell-in-view.ant-picker-cell-range-start .ant-picker-cell-inner, .ant-picker-cell-in-view.ant-picker-cell-range-end .ant-picker-cell-inner {color: #fff;background: @primary-color;} +.ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single)::before, .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single)::before {background: @picker-basic-cell-active-with-range-color;} +.ant-picker-cell-in-view.ant-picker-cell-range-hover-start:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end)::after, .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end)::after, .ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start-single::after, .ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-end-near-hover::after, .ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-start-near-hover::after, .ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-end-single::after, .ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-in-range)::after {border-top: 1px dashed @picker-date-hover-range-border-color;border-bottom: 1px dashed @picker-date-hover-range-border-color;} +.ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover::before, .ant-picker-cell-in-view.ant-picker-cell-range-start.ant-picker-cell-range-hover::before, .ant-picker-cell-in-view.ant-picker-cell-range-end.ant-picker-cell-range-hover::before, .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single).ant-picker-cell-range-hover-start::before, .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single).ant-picker-cell-range-hover-end::before, .ant-picker-panel > :not(.ant-picker-date-panel) .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start::before, .ant-picker-panel > :not(.ant-picker-date-panel) .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end::before {background: @picker-basic-cell-hover-with-range-color;} +.ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single):not(.ant-picker-cell-range-end) .ant-picker-cell-inner {border-radius: 2px 0 0 2px;} +.ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single):not(.ant-picker-cell-range-start) .ant-picker-cell-inner {border-radius: 0 2px 2px 0;} +.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner::after, .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner::after {background: @picker-basic-cell-hover-with-range-color;} +tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover:first-child::after, +tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:first-child::after, .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start.ant-picker-cell-range-hover-edge-start-near-range::after, .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover-edge-start-near-range)::after, .ant-picker-cell-in-view.ant-picker-cell-range-hover-start::after {border-left: 1px dashed @picker-date-hover-range-border-color;border-top-left-radius: 2px;border-bottom-left-radius: 2px;} +tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover:last-child::after, +tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::after, .ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-edge-end.ant-picker-cell-range-hover-edge-end-near-range::after, .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover-edge-end-near-range)::after, .ant-picker-cell-in-view.ant-picker-cell-range-hover-end::after {border-right: 1px dashed @picker-date-hover-range-border-color;border-top-right-radius: 2px;border-bottom-right-radius: 2px;} +.ant-picker-cell-disabled {color: @disabled-color;} +.ant-picker-cell-disabled .ant-picker-cell-inner {background: transparent;} +.ant-picker-cell-disabled::before {background: @picker-basic-cell-disabled-bg;} +.ant-picker-cell-disabled.ant-picker-cell-today .ant-picker-cell-inner::before {border-color: @disabled-color;} +.ant-picker-footer {border-bottom: 1px solid transparent;} +.ant-picker-panel .ant-picker-footer {border-top: 1px solid @picker-border-color;} +.ant-picker-footer-extra:not(:last-child) {border-bottom: 1px solid @picker-border-color;} +.ant-picker-today-btn {color: @link-color;} +.ant-picker-today-btn:hover {color: @link-hover-color;} +.ant-picker-today-btn:active {color: @link-active-color;} +.ant-picker-today-btn.ant-picker-today-btn-disabled {color: @disabled-color;} +.ant-picker-year-panel .ant-picker-cell-range-hover-start::after, .ant-picker-quarter-panel .ant-picker-cell-range-hover-start::after, .ant-picker-month-panel .ant-picker-cell-range-hover-start::after {border-left: 1px dashed @picker-date-hover-range-border-color;border-radius: 2px 0 0 2px;} +.ant-picker-panel-rtl .ant-picker-year-panel .ant-picker-cell-range-hover-start::after, .ant-picker-panel-rtl .ant-picker-quarter-panel .ant-picker-cell-range-hover-start::after, .ant-picker-panel-rtl .ant-picker-month-panel .ant-picker-cell-range-hover-start::after {border-right: 1px dashed @picker-date-hover-range-border-color;border-radius: 0 2px 2px 0;} +.ant-picker-year-panel .ant-picker-cell-range-hover-end::after, .ant-picker-quarter-panel .ant-picker-cell-range-hover-end::after, .ant-picker-month-panel .ant-picker-cell-range-hover-end::after {border-right: 1px dashed @picker-date-hover-range-border-color;border-radius: 0 2px 2px 0;} +.ant-picker-panel-rtl .ant-picker-year-panel .ant-picker-cell-range-hover-end::after, .ant-picker-panel-rtl .ant-picker-quarter-panel .ant-picker-cell-range-hover-end::after, .ant-picker-panel-rtl .ant-picker-month-panel .ant-picker-cell-range-hover-end::after {border-left: 1px dashed @picker-date-hover-range-border-color;border-radius: 2px 0 0 2px;} +.ant-picker-week-panel .ant-picker-cell:hover .ant-picker-cell-inner, .ant-picker-week-panel .ant-picker-cell-selected .ant-picker-cell-inner, .ant-picker-week-panel .ant-picker-cell .ant-picker-cell-inner {background: transparent !important;} +.ant-picker-week-panel-row:hover td {background: @item-hover-bg;} +.ant-picker-week-panel-row-selected td, .ant-picker-week-panel-row-selected:hover td {background: @primary-color;} +.ant-picker-week-panel-row-selected td.ant-picker-cell-week, .ant-picker-week-panel-row-selected:hover td.ant-picker-cell-week {color: rgba(255, 255, 255, 0.5);} +.ant-picker-week-panel-row-selected td.ant-picker-cell-today .ant-picker-cell-inner::before, .ant-picker-week-panel-row-selected:hover td.ant-picker-cell-today .ant-picker-cell-inner::before {border-color: #fff;} +.ant-picker-week-panel-row-selected td .ant-picker-cell-inner, .ant-picker-week-panel-row-selected:hover td .ant-picker-cell-inner {color: #fff;} +.ant-picker-datetime-panel .ant-picker-time-panel {border-left: 1px solid @picker-border-color;} +.ant-picker-time-panel-column:not(:first-child) {border-left: 1px solid @picker-border-color;} +.ant-picker-time-panel-column-active {background: fade(@calendar-item-active-bg, 20%);} +.ant-picker-time-panel-column > li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner {color: @text-color;border-radius: 0;} +.ant-picker-time-panel-column > li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner:hover {background: @item-hover-bg;} +.ant-picker-time-panel-column > li.ant-picker-time-panel-cell-selected .ant-picker-time-panel-cell-inner {background: @item-active-bg;} +.ant-picker-time-panel-column > li.ant-picker-time-panel-cell-disabled .ant-picker-time-panel-cell-inner {color: @disabled-color;background: transparent;} +.ant-picker-cell .ant-picker-cell-inner {border-radius: 2px;} +.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single):not(.ant-picker-cell-range-end) .ant-picker-cell-inner {border-radius: 0 2px 2px 0;} +.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single):not(.ant-picker-cell-range-start) .ant-picker-cell-inner {border-radius: 2px 0 0 2px;} +.ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-selected):first-child::after, .ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start.ant-picker-cell-range-hover-edge-start-near-range::after, .ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover-edge-start-near-range)::after, .ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-start::after {border-right: 1px dashed @picker-date-hover-range-border-color;border-left: none;border-radius: 0 2px 2px 0;} +.ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-selected):last-child::after, .ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-edge-end.ant-picker-cell-range-hover-edge-end-near-range::after, .ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover-edge-end-near-range)::after, .ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-end::after {border-right: none;border-left: 1px dashed @picker-date-hover-range-border-color;border-radius: 2px 0 0 2px;} +.ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::after, .ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:first-child::after, .ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover)::after, .ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-end.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover)::after, .ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-start.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover)::after, .ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover.ant-picker-cell-range-hover-edge-start:last-child::after, .ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover.ant-picker-cell-range-hover-edge-end:first-child::after {border-right: 1px dashed @picker-date-hover-range-border-color;border-left: 1px dashed @picker-date-hover-range-border-color;border-radius: 2px;} +.ant-descriptions-title {color: @heading-color;} +.ant-descriptions-extra {color: @text-color;} +.ant-descriptions-view {border-radius: 2px;} +.ant-descriptions-row:last-child {border-bottom: none;} +.ant-descriptions-item-label {color: @heading-color;} +.ant-descriptions-item-content {color: @text-color;} +.ant-descriptions-bordered .ant-descriptions-view {border: 1px solid @border-color-split;} +.ant-descriptions-bordered .ant-descriptions-view > table {border-collapse: collapse;} +.ant-descriptions-bordered .ant-descriptions-item-label, .ant-descriptions-bordered .ant-descriptions-item-content {border-right: 1px solid @border-color-split;} +.ant-descriptions-bordered .ant-descriptions-item-label:last-child, .ant-descriptions-bordered .ant-descriptions-item-content:last-child {border-right: none;} +.ant-descriptions-bordered .ant-descriptions-item-label {background-color: @descriptions-bg;} +.ant-descriptions-bordered .ant-descriptions-row {border-bottom: 1px solid @border-color-split;} +.ant-descriptions-bordered .ant-descriptions-row:last-child {border-bottom: none;} +.ant-descriptions-rtl.ant-descriptions-bordered .ant-descriptions-item-label, .ant-descriptions-rtl.ant-descriptions-bordered .ant-descriptions-item-content {border-right: none;border-left: 1px solid @border-color-split;} +.ant-descriptions-rtl.ant-descriptions-bordered .ant-descriptions-item-label:last-child, .ant-descriptions-rtl.ant-descriptions-bordered .ant-descriptions-item-content:last-child {border-left: none;} +.ant-divider {color: @text-color;border-top: 1px solid @divider-color;} +.ant-divider-vertical {border-top: 0;border-left: 1px solid @divider-color;} +.ant-divider-horizontal.ant-divider-with-text {color: @heading-color;border-top: 0;border-top-color: @divider-color;} +.ant-divider-horizontal.ant-divider-with-text::before, .ant-divider-horizontal.ant-divider-with-text::after {border-top: 1px solid transparent;border-top-color: inherit;border-bottom: 0;} +.ant-divider-dashed {background: none;border-color: @divider-color;border-style: dashed;border-width: 1px 0 0;} +.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::before, .ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::after {border-style: dashed none none;} +.ant-divider-vertical.ant-divider-dashed {border-width: 0 0 0 1px;} +.ant-divider-plain.ant-divider-with-text {color: @text-color;} +.ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper {box-shadow: 6px 0 16px -8px rgba(0, 0, 0, 0.08), 9px 0 28px 0 rgba(0, 0, 0, 0.05), 12px 0 48px 16px rgba(0, 0, 0, 0.03);} +.ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper {box-shadow: -6px 0 16px -8px rgba(0, 0, 0, 0.08), -9px 0 28px 0 rgba(0, 0, 0, 0.05), -12px 0 48px 16px rgba(0, 0, 0, 0.03);} +.ant-drawer-top.ant-drawer-open .ant-drawer-content-wrapper {box-shadow: 0 6px 16px -8px rgba(0, 0, 0, 0.08), 0 9px 28px 0 rgba(0, 0, 0, 0.05), 0 12px 48px 16px rgba(0, 0, 0, 0.03);} +.ant-drawer-bottom.ant-drawer-open .ant-drawer-content-wrapper {box-shadow: 0 -6px 16px -8px rgba(0, 0, 0, 0.08), 0 -9px 28px 0 rgba(0, 0, 0, 0.05), 0 -12px 48px 16px rgba(0, 0, 0, 0.03);} +.ant-drawer-title {color: @heading-color;} +.ant-drawer-content {background-color: @drawer-bg;background-clip: padding-box;border: 0;} +.ant-drawer-close {color: @text-color-secondary;background: transparent;border: 0;} +.ant-drawer-close:focus, .ant-drawer-close:hover {color: @icon-color-hover;} +.ant-drawer-header {color: @text-color;background: @drawer-bg;border-bottom: 1px solid @border-color-split;border-radius: 2px 2px 0 0;} +.ant-drawer-header-close-only {border: none;} +.ant-drawer-footer {border-top: 1px solid @border-color-split;} +.ant-drawer-mask {background-color: rgba(0, 0, 0, 0.45);} +.ant-drawer .ant-picker-clear {background: @popover-background;} +.ant-dropdown-menu-item.ant-dropdown-menu-item-danger {color: #ff4d4f;} +.ant-dropdown-menu-item.ant-dropdown-menu-item-danger:hover {color: #fff;background-color: #ff4d4f;} +.ant-dropdown {color: @text-color;} +.ant-dropdown-arrow {background: linear-gradient(135deg, transparent 40%, @popover-bg 40%);border-radius: 0 0 2px;} +.ant-dropdown-arrow::before {background: @popover-bg;background-repeat: no-repeat;background-position: -10px -10px;} +.ant-dropdown-placement-top > .ant-dropdown-arrow, .ant-dropdown-placement-topLeft > .ant-dropdown-arrow, .ant-dropdown-placement-topRight > .ant-dropdown-arrow {box-shadow: 3px 3px 7px -3px rgba(0, 0, 0, 0.1);} +.ant-dropdown-placement-bottom > .ant-dropdown-arrow, .ant-dropdown-placement-bottomLeft > .ant-dropdown-arrow, .ant-dropdown-placement-bottomRight > .ant-dropdown-arrow {box-shadow: 2px 2px 5px -2px rgba(0, 0, 0, 0.1);} +.ant-dropdown-menu {background-color: @dropdown-menu-bg;background-clip: padding-box;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);} +.ant-dropdown-menu-item-group-title {color: @text-color-secondary;} +.ant-dropdown-menu-submenu-popup {background: transparent;box-shadow: none;} +.ant-dropdown-menu-title-content > a {color: inherit;} +.ant-dropdown-menu-title-content > a:hover {color: inherit;} +.ant-dropdown-menu-item, .ant-dropdown-menu-submenu-title {color: @text-color;} +.ant-dropdown-menu-item-selected, .ant-dropdown-menu-submenu-title-selected {color: @primary-color;background-color: @item-active-bg;} +.ant-dropdown-menu-item:hover, .ant-dropdown-menu-submenu-title:hover, .ant-dropdown-menu-item.ant-dropdown-menu-item-active, .ant-dropdown-menu-item.ant-dropdown-menu-submenu-title-active, .ant-dropdown-menu-submenu-title.ant-dropdown-menu-item-active, .ant-dropdown-menu-submenu-title.ant-dropdown-menu-submenu-title-active {background-color: @item-hover-bg;} +.ant-dropdown-menu-item-disabled, .ant-dropdown-menu-submenu-title-disabled {color: @disabled-color;} +.ant-dropdown-menu-item-disabled:hover, .ant-dropdown-menu-submenu-title-disabled:hover {color: @disabled-color;background-color: @dropdown-menu-submenu-disabled-bg;} +.ant-dropdown-menu-item-divider, .ant-dropdown-menu-submenu-title-divider {background-color: @border-color-split;} +.ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon, .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon {color: @text-color-secondary;} +.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title, .ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {color: @disabled-color;background-color: @dropdown-menu-submenu-disabled-bg;} +.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title {color: @primary-color;} +.ant-dropdown-menu-dark, .ant-dropdown-menu-dark .ant-dropdown-menu {background: @menu-dark-bg;} +.ant-dropdown-menu-dark .ant-dropdown-menu-item, .ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title, .ant-dropdown-menu-dark .ant-dropdown-menu-item > a, .ant-dropdown-menu-dark .ant-dropdown-menu-item > .anticon + span > a {color: rgba(255, 255, 255, 0.65);} +.ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow::after, .ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow::after, .ant-dropdown-menu-dark .ant-dropdown-menu-item > a .ant-dropdown-menu-submenu-arrow::after, .ant-dropdown-menu-dark .ant-dropdown-menu-item > .anticon + span > a .ant-dropdown-menu-submenu-arrow::after {color: rgba(255, 255, 255, 0.65);} +.ant-dropdown-menu-dark .ant-dropdown-menu-item:hover, .ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title:hover, .ant-dropdown-menu-dark .ant-dropdown-menu-item > a:hover, .ant-dropdown-menu-dark .ant-dropdown-menu-item > .anticon + span > a:hover {color: #fff;background: transparent;} +.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected, .ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover, .ant-dropdown-menu-dark .ant-dropdown-menu-item-selected > a {color: #fff;background: @primary-color;} +.ant-empty-normal {color: @disabled-color;} +.ant-empty-small {color: @disabled-color;} +.ant-empty-img-default-ellipse {fill: #f5f5f5;fill-opacity: 0.8;} +.ant-empty-img-default-path-1 {fill: #aeb8c2;} +.ant-empty-img-default-path-3 {fill: #f5f5f7;} +.ant-empty-img-default-path-4 {fill: #dce0e6;} +.ant-empty-img-default-path-5 {fill: #dce0e6;} +.ant-empty-img-default-g {fill: #fff;} +.ant-empty-img-simple-ellipse {fill: #f5f5f5;} +.ant-empty-img-simple-g {stroke: #d9d9d9;} +.ant-empty-img-simple-path {fill: #fafafa;} +.ant-form-item-explain-error {color: #ff4d4f;} +.ant-form-item-explain-warning {color: #faad14;} +.ant-form-item-has-warning .ant-form-item-split {color: #faad14;} +.ant-form-item-has-error .ant-form-item-split {color: #ff4d4f;} +.ant-form {color: @text-color;} +.ant-form legend {color: @text-color-secondary;border: 0;border-bottom: 1px solid @border-color-base;} +.ant-form output {color: @text-color;} +.ant-form-item {color: @text-color;} +.ant-form-item-label > label {color: @heading-color;} +.ant-form-item-label > label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before {color: #ff4d4f;} +.ant-form-item-label > label .ant-form-item-optional {color: @text-color-secondary;} +.ant-form-item-label > label .ant-form-item-tooltip {color: @text-color-secondary;} +.ant-form-item-explain, .ant-form-item-extra {color: @text-color-secondary;} +.ant-form-item-feedback-icon-success {color: #52c41a;} +.ant-form-item-feedback-icon-error {color: #ff4d4f;} +.ant-form-item-feedback-icon-warning {color: #faad14;} +.ant-form-item-feedback-icon-validating {color: @primary-color;} +.ant-image-img-placeholder {background-color: #f5f5f5;background-repeat: no-repeat;background-position: center center;background-size: 30%;} +.ant-image-mask {color: #fff;background: rgba(0, 0, 0, 0.5);} +.ant-image-preview-mask {background-color: rgba(0, 0, 0, 0.45);} +.ant-image-preview-operations {color: @text-color;color: rgba(255, 255, 255, 0.85);background: fade(@modal-mask-bg, 10%);} +.ant-image-preview-operations-operation-disabled {color: fade(@image-preview-operation-color, 25%);} +.ant-image-preview-switch-left, .ant-image-preview-switch-right {color: rgba(255, 255, 255, 0.85);background: fade(@modal-mask-bg, 10%);border-radius: 50%;} +.ant-image-preview-switch-left-disabled, .ant-image-preview-switch-right-disabled {color: fade(@image-preview-operation-color, 25%);} +.ant-input-affix-wrapper {color: @text-color;background-color: @input-bg;background-image: none;border: 1px solid @border-color-base;border-radius: 2px;} +.ant-input-affix-wrapper::placeholder {color: @input-placeholder-color;} +.ant-input-affix-wrapper:hover {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} +.ant-input-rtl .ant-input-affix-wrapper:hover {border-right-width: 0;border-left-width: 1px !important;} +.ant-input-affix-wrapper:focus, .ant-input-affix-wrapper-focused {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);border-right-width: 1px;} +.ant-input-rtl .ant-input-affix-wrapper:focus, .ant-input-rtl .ant-input-affix-wrapper-focused {border-right-width: 0;border-left-width: 1px !important;} +.ant-input-affix-wrapper-disabled {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-input-affix-wrapper-disabled:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-input-affix-wrapper[disabled] {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-input-affix-wrapper[disabled]:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-input-affix-wrapper-borderless, .ant-input-affix-wrapper-borderless:hover, .ant-input-affix-wrapper-borderless:focus, .ant-input-affix-wrapper-borderless-focused, .ant-input-affix-wrapper-borderless-disabled, .ant-input-affix-wrapper-borderless[disabled] {background-color: transparent;border: none;box-shadow: none;} +.ant-input-affix-wrapper:not(.ant-input-affix-wrapper-disabled):hover {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} +.ant-input-rtl .ant-input-affix-wrapper:not(.ant-input-affix-wrapper-disabled):hover {border-right-width: 0;border-left-width: 1px !important;} +.ant-input-affix-wrapper-disabled .ant-input[disabled] {background: transparent;} +.ant-input-affix-wrapper > input.ant-input {border: none;} +.ant-input-affix-wrapper > input.ant-input:focus {box-shadow: none !important;} +.ant-input-show-count-suffix {color: @text-color-secondary;} +.anticon.ant-input-clear-icon, .ant-input-clear-icon {color: @disabled-color;} +.anticon.ant-input-clear-icon:hover, .ant-input-clear-icon:hover {color: @text-color-secondary;} +.anticon.ant-input-clear-icon:active, .ant-input-clear-icon:active {color: @text-color;} +.ant-input-affix-wrapper-textarea-with-clear-btn {border: 0 !important;} +.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input, .ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:hover {background: @input-bg;border-color: #ff4d4f;} +.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:focus, .ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input-focused {border-color: #ff7875;box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2);border-right-width: 1px;} +.ant-input-status-error .ant-input-prefix {color: #ff4d4f;} +.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input, .ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:hover {background: @input-bg;border-color: #faad14;} +.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:focus, .ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input-focused {border-color: #ffc53d;box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);border-right-width: 1px;} +.ant-input-status-warning .ant-input-prefix {color: #faad14;} +.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper, .ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:hover {background: @input-bg;border-color: #ff4d4f;} +.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:focus, .ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper-focused {border-color: #ff7875;box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2);border-right-width: 1px;} +.ant-input-affix-wrapper-status-error .ant-input-prefix {color: #ff4d4f;} +.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper, .ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:hover {background: @input-bg;border-color: #faad14;} +.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:focus, .ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper-focused {border-color: #ffc53d;box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);border-right-width: 1px;} +.ant-input-affix-wrapper-status-warning .ant-input-prefix {color: #faad14;} +.ant-input-group-wrapper-status-error .ant-input-group-addon {color: #ff4d4f;border-color: #ff4d4f;} +.ant-input-group-wrapper-status-warning .ant-input-group-addon {color: #faad14;border-color: #faad14;} +.ant-input {color: @text-color;background-color: @input-bg;background-image: none;border: 1px solid @border-color-base;border-radius: 2px;} +.ant-input::placeholder {color: @input-placeholder-color;} +.ant-input:hover {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} +.ant-input-rtl .ant-input:hover {border-right-width: 0;border-left-width: 1px !important;} +.ant-input:focus, .ant-input-focused {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);border-right-width: 1px;} +.ant-input-rtl .ant-input:focus, .ant-input-rtl .ant-input-focused {border-right-width: 0;border-left-width: 1px !important;} +.ant-input-disabled {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-input-disabled:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-input[disabled] {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-input[disabled]:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-input-borderless, .ant-input-borderless:hover, .ant-input-borderless:focus, .ant-input-borderless-focused, .ant-input-borderless-disabled, .ant-input-borderless[disabled] {background-color: transparent;border: none;box-shadow: none;} +.ant-input-group {color: @text-color;border-collapse: separate;border-spacing: 0;} +.ant-input-group-addon:not(:first-child):not(:last-child), .ant-input-group-wrap:not(:first-child):not(:last-child), .ant-input-group > .ant-input:not(:first-child):not(:last-child) {border-radius: 0;} +.ant-input-group .ant-input:focus {border-right-width: 1px;} +.ant-input-group .ant-input:hover {border-right-width: 1px;} +.ant-input-group-addon {color: @text-color;background-color: @background-color-light;border: 1px solid @border-color-base;border-radius: 2px;} +.ant-input-group-addon .ant-select.ant-select-single:not(.ant-select-customize-input) .ant-select-selector {background-color: inherit;border: 1px solid transparent;box-shadow: none;} +.ant-input-group-addon .ant-select-open .ant-select-selector, .ant-input-group-addon .ant-select-focused .ant-select-selector {color: @primary-color;} +.ant-input-group-addon .ant-cascader-picker {background-color: transparent;} +.ant-input-group-addon .ant-cascader-picker .ant-cascader-input {border: 0;box-shadow: none;} +.ant-input-group > .ant-input:first-child, .ant-input-group-addon:first-child {border-top-right-radius: 0;border-bottom-right-radius: 0;} +.ant-input-group > .ant-input:first-child .ant-select .ant-select-selector, .ant-input-group-addon:first-child .ant-select .ant-select-selector {border-top-right-radius: 0;border-bottom-right-radius: 0;} +.ant-input-group > .ant-input-affix-wrapper:not(:first-child) .ant-input {border-top-left-radius: 0;border-bottom-left-radius: 0;} +.ant-input-group > .ant-input-affix-wrapper:not(:last-child) .ant-input {border-top-right-radius: 0;border-bottom-right-radius: 0;} +.ant-input-group-addon:first-child {border-right: 0;} +.ant-input-group-addon:last-child {border-left: 0;} +.ant-input-group > .ant-input:last-child, .ant-input-group-addon:last-child {border-top-left-radius: 0;border-bottom-left-radius: 0;} +.ant-input-group > .ant-input:last-child .ant-select .ant-select-selector, .ant-input-group-addon:last-child .ant-select .ant-select-selector {border-top-left-radius: 0;border-bottom-left-radius: 0;} +.ant-input-group .ant-input-affix-wrapper:not(:last-child) {border-top-right-radius: 0;border-bottom-right-radius: 0;} +.ant-input-search .ant-input-group .ant-input-affix-wrapper:not(:last-child) {border-top-left-radius: 2px;border-bottom-left-radius: 2px;} +.ant-input-group .ant-input-affix-wrapper:not(:first-child), .ant-input-search .ant-input-group .ant-input-affix-wrapper:not(:first-child) {border-top-left-radius: 0;border-bottom-left-radius: 0;} +.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child), .ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child), .ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child) {border-right-width: 1px;} +.ant-input-group.ant-input-group-compact > * {border-radius: 0;} +.ant-input-group.ant-input-group-compact > *:not(:last-child) {border-right-width: 1px;} +.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selector, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input, .ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input {border-right-width: 1px;border-radius: 0;} +.ant-input-group.ant-input-group-compact > *:first-child, .ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selector, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input {border-top-left-radius: 2px;border-bottom-left-radius: 2px;} +.ant-input-group.ant-input-group-compact > *:last-child, .ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selector, .ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input {border-right-width: 1px;border-top-right-radius: 2px;border-bottom-right-radius: 2px;} +.ant-input-group.ant-input-group-compact .ant-input-group-wrapper + .ant-input-group-wrapper .ant-input-affix-wrapper {border-radius: 0;} +.ant-input-group.ant-input-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search > .ant-input-group > .ant-input-group-addon > .ant-input-search-button {border-radius: 0;} +.ant-input-group.ant-input-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 2px 0 0 2px;} +.ant-input-group > .ant-input-rtl:first-child, .ant-input-group-rtl .ant-input-group-addon:first-child {border-radius: 0 2px 2px 0;} +.ant-input-group-rtl .ant-input-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;} +.ant-input-group-rtl .ant-input-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;} +.ant-input-group-rtl.ant-input-group > .ant-input:last-child, .ant-input-group-rtl.ant-input-group-addon:last-child {border-radius: 2px 0 0 2px;} +.ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:first-child) {border-radius: 2px 0 0 2px;} +.ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:last-child) {border-radius: 0 2px 2px 0;} +.ant-input-group-rtl.ant-input-group.ant-input-group-compact > *:not(:last-child) {border-left-width: 1px;} +.ant-input-group-rtl.ant-input-group.ant-input-group-compact > *:first-child, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selector, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input {border-radius: 0 2px 2px 0;} +.ant-input-group-rtl.ant-input-group.ant-input-group-compact > *:last-child, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selector, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input {border-left-width: 1px;border-radius: 2px 0 0 2px;} +.ant-input-group.ant-input-group-compact .ant-input-group-wrapper-rtl:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 0 2px 2px 0;} +.ant-input-group > .ant-input-rtl:first-child {border-radius: 0 2px 2px 0;} +.ant-input-group > .ant-input-rtl:last-child {border-radius: 2px 0 0 2px;} +.ant-input-group-rtl .ant-input-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;border-radius: 0 2px 2px 0;} +.ant-input-group-rtl .ant-input-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;} +.ant-input-password-icon.anticon {color: @text-color-secondary;} +.ant-input-password-icon.anticon:hover {color: @input-icon-hover-color;} +.ant-input-textarea-show-count::after {color: @text-color-secondary;} +.ant-input-search .ant-input:hover, .ant-input-search .ant-input:focus {border-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-input-search .ant-input:hover + .ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary), .ant-input-search .ant-input:focus + .ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary) {border-left-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-input-search .ant-input-affix-wrapper {border-radius: 0;} +.ant-input-search > .ant-input-group > .ant-input-group-addon:last-child {border: 0;} +.ant-input-search > .ant-input-group > .ant-input-group-addon:last-child .ant-input-search-button {border-radius: 0 2px 2px 0;} +.ant-input-search > .ant-input-group > .ant-input-group-addon:last-child .ant-input-search-button:not(.ant-btn-primary) {color: @text-color-secondary;} +.ant-input-affix-wrapper.ant-input-affix-wrapper-rtl > input.ant-input {border: none;} +.ant-input-search-rtl .ant-input:hover + .ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary), .ant-input-search-rtl .ant-input:focus + .ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary) {border-right-color: color(~`colorPalette("@{primary-color}", 5)`);border-left-color: @border-color-base;} +.ant-input-search-rtl > .ant-input-group > .ant-input-affix-wrapper:hover, .ant-input-search-rtl > .ant-input-group > .ant-input-affix-wrapper-focused {border-right-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-input-search-rtl > .ant-input-group > .ant-input-group-addon .ant-input-search-button {border-radius: 2px 0 0 2px;} +.ant-input-number-affix-wrapper {color: @text-color;background-color: @input-bg;background-image: none;border: 1px solid @border-color-base;border-radius: 2px;} +.ant-input-number-affix-wrapper::placeholder {color: @input-placeholder-color;} +.ant-input-number-affix-wrapper:hover {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} +.ant-input-rtl .ant-input-number-affix-wrapper:hover {border-right-width: 0;border-left-width: 1px !important;} +.ant-input-number-affix-wrapper:focus, .ant-input-number-affix-wrapper-focused {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);border-right-width: 1px;} +.ant-input-rtl .ant-input-number-affix-wrapper:focus, .ant-input-rtl .ant-input-number-affix-wrapper-focused {border-right-width: 0;border-left-width: 1px !important;} +.ant-input-number-affix-wrapper-disabled {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-input-number-affix-wrapper-disabled:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-input-number-affix-wrapper[disabled] {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-input-number-affix-wrapper[disabled]:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-input-number-affix-wrapper-borderless, .ant-input-number-affix-wrapper-borderless:hover, .ant-input-number-affix-wrapper-borderless:focus, .ant-input-number-affix-wrapper-borderless-focused, .ant-input-number-affix-wrapper-borderless-disabled, .ant-input-number-affix-wrapper-borderless[disabled] {background-color: transparent;border: none;box-shadow: none;} +.ant-input-number-affix-wrapper:not(.ant-input-number-affix-wrapper-disabled):hover {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} +.ant-input-rtl .ant-input-number-affix-wrapper:not(.ant-input-number-affix-wrapper-disabled):hover {border-right-width: 0;border-left-width: 1px !important;} +.ant-input-number-affix-wrapper-disabled .ant-input-number[disabled] {background: transparent;} +.ant-input-number-affix-wrapper > div.ant-input-number {border: none;} +.ant-input-number-affix-wrapper > div.ant-input-number.ant-input-number-focused {box-shadow: none !important;} +.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number, .ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:hover {background: @input-bg;border-color: #ff4d4f;} +.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:focus, .ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number-focused {border-color: #ff7875;box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2);border-right-width: 1px;} +.ant-input-number-status-error .ant-input-number-prefix {color: #ff4d4f;} +.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number, .ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:hover {background: @input-bg;border-color: #faad14;} +.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:focus, .ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number-focused {border-color: #ffc53d;box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);border-right-width: 1px;} +.ant-input-number-status-warning .ant-input-number-prefix {color: #faad14;} +.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper, .ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:hover {background: @input-bg;border-color: #ff4d4f;} +.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:focus, .ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper-focused {border-color: #ff7875;box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2);border-right-width: 1px;} +.ant-input-number-affix-wrapper-status-error .ant-input-number-prefix {color: #ff4d4f;} +.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper, .ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:hover {background: @input-bg;border-color: #faad14;} +.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:focus, .ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper-focused {border-color: #ffc53d;box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);border-right-width: 1px;} +.ant-input-number-affix-wrapper-status-warning .ant-input-number-prefix {color: #faad14;} +.ant-input-number-group-wrapper-status-error .ant-input-number-group-addon {color: #ff4d4f;border-color: #ff4d4f;} +.ant-input-number-group-wrapper-status-warning .ant-input-number-group-addon {color: #faad14;border-color: #faad14;} +.ant-input-number {color: @text-color;background-color: @input-bg;background-image: none;border: 1px solid @border-color-base;border-radius: 2px;} +.ant-input-number::placeholder {color: @input-placeholder-color;} +.ant-input-number:hover {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} +.ant-input-rtl .ant-input-number:hover {border-right-width: 0;border-left-width: 1px !important;} +.ant-input-number:focus, .ant-input-number-focused {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);border-right-width: 1px;} +.ant-input-rtl .ant-input-number:focus, .ant-input-rtl .ant-input-number-focused {border-right-width: 0;border-left-width: 1px !important;} +.ant-input-number-disabled {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-input-number-disabled:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-input-number[disabled] {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-input-number[disabled]:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-input-number-borderless, .ant-input-number-borderless:hover, .ant-input-number-borderless:focus, .ant-input-number-borderless-focused, .ant-input-number-borderless-disabled, .ant-input-number-borderless[disabled] {background-color: transparent;border: none;box-shadow: none;} +.ant-input-number-group {color: @text-color;border-collapse: separate;border-spacing: 0;} +.ant-input-number-group-addon:not(:first-child):not(:last-child), .ant-input-number-group-wrap:not(:first-child):not(:last-child), .ant-input-number-group > .ant-input-number:not(:first-child):not(:last-child) {border-radius: 0;} +.ant-input-number-group .ant-input-number:focus {border-right-width: 1px;} +.ant-input-number-group .ant-input-number:hover {border-right-width: 1px;} +.ant-input-number-group-addon {color: @text-color;background-color: @background-color-light;border: 1px solid @border-color-base;border-radius: 2px;} +.ant-input-number-group-addon .ant-select.ant-select-single:not(.ant-select-customize-input) .ant-select-selector {background-color: inherit;border: 1px solid transparent;box-shadow: none;} +.ant-input-number-group-addon .ant-select-open .ant-select-selector, .ant-input-number-group-addon .ant-select-focused .ant-select-selector {color: @primary-color;} +.ant-input-number-group-addon .ant-cascader-picker {background-color: transparent;} +.ant-input-number-group-addon .ant-cascader-picker .ant-cascader-input {border: 0;box-shadow: none;} +.ant-input-number-group > .ant-input-number:first-child, .ant-input-number-group-addon:first-child {border-top-right-radius: 0;border-bottom-right-radius: 0;} +.ant-input-number-group > .ant-input-number:first-child .ant-select .ant-select-selector, .ant-input-number-group-addon:first-child .ant-select .ant-select-selector {border-top-right-radius: 0;border-bottom-right-radius: 0;} +.ant-input-number-group > .ant-input-number-affix-wrapper:not(:first-child) .ant-input-number {border-top-left-radius: 0;border-bottom-left-radius: 0;} +.ant-input-number-group > .ant-input-number-affix-wrapper:not(:last-child) .ant-input-number {border-top-right-radius: 0;border-bottom-right-radius: 0;} +.ant-input-number-group-addon:first-child {border-right: 0;} +.ant-input-number-group-addon:last-child {border-left: 0;} +.ant-input-number-group > .ant-input-number:last-child, .ant-input-number-group-addon:last-child {border-top-left-radius: 0;border-bottom-left-radius: 0;} +.ant-input-number-group > .ant-input-number:last-child .ant-select .ant-select-selector, .ant-input-number-group-addon:last-child .ant-select .ant-select-selector {border-top-left-radius: 0;border-bottom-left-radius: 0;} +.ant-input-number-group .ant-input-number-affix-wrapper:not(:last-child) {border-top-right-radius: 0;border-bottom-right-radius: 0;} +.ant-input-search .ant-input-number-group .ant-input-number-affix-wrapper:not(:last-child) {border-top-left-radius: 2px;border-bottom-left-radius: 2px;} +.ant-input-number-group .ant-input-number-affix-wrapper:not(:first-child), .ant-input-search .ant-input-number-group .ant-input-number-affix-wrapper:not(:first-child) {border-top-left-radius: 0;border-bottom-left-radius: 0;} +.ant-input-number-group.ant-input-number-group-compact-addon:not(:first-child):not(:last-child), .ant-input-number-group.ant-input-number-group-compact-wrap:not(:first-child):not(:last-child), .ant-input-number-group.ant-input-number-group-compact > .ant-input-number:not(:first-child):not(:last-child) {border-right-width: 1px;} +.ant-input-number-group.ant-input-number-group-compact > * {border-radius: 0;} +.ant-input-number-group.ant-input-number-group-compact > *:not(:last-child) {border-right-width: 1px;} +.ant-input-number-group.ant-input-number-group-compact > .ant-select > .ant-select-selector, .ant-input-number-group.ant-input-number-group-compact > .ant-select-auto-complete .ant-input, .ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker .ant-input, .ant-input-number-group.ant-input-number-group-compact > .ant-input-group-wrapper .ant-input {border-right-width: 1px;border-radius: 0;} +.ant-input-number-group.ant-input-number-group-compact > *:first-child, .ant-input-number-group.ant-input-number-group-compact > .ant-select:first-child > .ant-select-selector, .ant-input-number-group.ant-input-number-group-compact > .ant-select-auto-complete:first-child .ant-input, .ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker:first-child .ant-input {border-top-left-radius: 2px;border-bottom-left-radius: 2px;} +.ant-input-number-group.ant-input-number-group-compact > *:last-child, .ant-input-number-group.ant-input-number-group-compact > .ant-select:last-child > .ant-select-selector, .ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker:last-child .ant-input, .ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker-focused:last-child .ant-input {border-right-width: 1px;border-top-right-radius: 2px;border-bottom-right-radius: 2px;} +.ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper + .ant-input-group-wrapper .ant-input-affix-wrapper {border-radius: 0;} +.ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search > .ant-input-group > .ant-input-group-addon > .ant-input-search-button {border-radius: 0;} +.ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 2px 0 0 2px;} +.ant-input-number-group > .ant-input-number-rtl:first-child, .ant-input-number-group-rtl .ant-input-number-group-addon:first-child {border-radius: 0 2px 2px 0;} +.ant-input-number-group-rtl .ant-input-number-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;} +.ant-input-number-group-rtl .ant-input-number-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;} +.ant-input-number-group-rtl.ant-input-number-group > .ant-input-number:last-child, .ant-input-number-group-rtl.ant-input-number-group-addon:last-child {border-radius: 2px 0 0 2px;} +.ant-input-number-group-rtl.ant-input-number-group .ant-input-number-affix-wrapper:not(:first-child) {border-radius: 2px 0 0 2px;} +.ant-input-number-group-rtl.ant-input-number-group .ant-input-number-affix-wrapper:not(:last-child) {border-radius: 0 2px 2px 0;} +.ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > *:not(:last-child) {border-left-width: 1px;} +.ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > *:first-child, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select:first-child > .ant-select-selector, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select-auto-complete:first-child .ant-input, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker:first-child .ant-input {border-radius: 0 2px 2px 0;} +.ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > *:last-child, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select:last-child > .ant-select-selector, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select-auto-complete:last-child .ant-input, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker:last-child .ant-input, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker-focused:last-child .ant-input {border-left-width: 1px;border-radius: 2px 0 0 2px;} +.ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper-rtl:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 0 2px 2px 0;} +.ant-input-number-group > .ant-input-number-rtl:first-child {border-radius: 0 2px 2px 0;} +.ant-input-number-group > .ant-input-number-rtl:last-child {border-radius: 2px 0 0 2px;} +.ant-input-number-group-rtl .ant-input-number-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;border-radius: 0 2px 2px 0;} +.ant-input-number-group-rtl .ant-input-number-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;} +.ant-input-number-handler {color: @text-color-secondary;border-left: 1px solid @border-color-base;} +.ant-input-number-handler:active {background: @input-number-handler-active-bg;} +.ant-input-number-handler:hover .ant-input-number-handler-up-inner, .ant-input-number-handler:hover .ant-input-number-handler-down-inner {color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-input-number-handler-up-inner, .ant-input-number-handler-down-inner {color: inherit;color: @text-color-secondary;} +.ant-input-number:hover {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} +.ant-input-number-focused {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);border-right-width: 1px;} +.ant-input-rtl .ant-input-number-focused {border-right-width: 0;border-left-width: 1px !important;} +.ant-input-number-disabled {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-input-number-disabled:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-input-number-input {background-color: transparent;border: 0;border-radius: 2px;} +.ant-input-number-input::placeholder {color: @input-placeholder-color;} +.ant-input-number-handler-wrap {background: @component-background;border-radius: 0 2px 2px 0;} +.ant-input-number-borderless .ant-input-number-handler-wrap {border-left-width: 0;} +.ant-input-number-handler-up {border-top-right-radius: 2px;} +.ant-input-number-handler-down {border-top: 1px solid @border-color-base;border-bottom-right-radius: 2px;} +.ant-input-number-borderless .ant-input-number-handler-down {border-top-width: 0;} +.ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner, .ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner {color: @disabled-color;} +.ant-input-number-borderless {box-shadow: none;} +.ant-input-number-out-of-range input {color: #ff4d4f;} +.ant-input-number-rtl .ant-input-number-handler {border-right: 1px solid @border-color-base;border-left: 0;} +.ant-input-number-rtl.ant-input-number-borderless .ant-input-number-handler-wrap {border-right-width: 0;} +.ant-input-number-rtl .ant-input-number-handler-up {border-top-right-radius: 0;} +.ant-input-number-rtl .ant-input-number-handler-down {border-bottom-right-radius: 0;} +.ant-layout {background: @layout-body-background;} +.ant-layout-header {color: @text-color;background: @layout-header-background;} +.ant-layout-footer {color: @text-color;background: @layout-body-background;} +.ant-layout-sider {background: @layout-header-background;} +.ant-layout-sider-trigger {color: #fff;background: @layout-trigger-background;} +.ant-layout-sider-zero-width-trigger {color: #fff;background: @layout-header-background;border-radius: 0 2px 2px 0;} +.ant-layout-sider-zero-width-trigger::after {background: transparent;} +.ant-layout-sider-zero-width-trigger:hover::after {background: rgba(255, 255, 255, 0.1);} +.ant-layout-sider-zero-width-trigger-right {border-radius: 2px 0 0 2px;} +.ant-layout-sider-light {background: #fff;} +.ant-layout-sider-light .ant-layout-sider-trigger {color: @text-color;background: #fff;} +.ant-layout-sider-light .ant-layout-sider-zero-width-trigger {color: @text-color;background: #fff;} +.ant-list {color: @text-color;} +.ant-list-empty-text {color: @disabled-color;} +.ant-list-item {color: @text-color;} +.ant-list-item-meta-content {color: @text-color;} +.ant-list-item-meta-title {color: @text-color;} +.ant-list-item-meta-title > a {color: @text-color;} +.ant-list-item-meta-title > a:hover {color: @primary-color;} +.ant-list-item-meta-description {color: @text-color-secondary;} +.ant-list-item-action > li {color: @text-color-secondary;} +.ant-list-item-action-split {background-color: @border-color-split;} +.ant-list-header {background: transparent;} +.ant-list-footer {background: transparent;} +.ant-list-empty {color: @text-color-secondary;} +.ant-list-split .ant-list-item {border-bottom: 1px solid @border-color-split;} +.ant-list-split .ant-list-item:last-child {border-bottom: none;} +.ant-list-split .ant-list-header {border-bottom: 1px solid @border-color-split;} +.ant-list-split.ant-list-empty .ant-list-footer {border-top: 1px solid @border-color-split;} +.ant-list-split.ant-list-something-after-last-item .ant-spin-container > .ant-list-items > .ant-list-item:last-child {border-bottom: 1px solid @border-color-split;} +.ant-list-vertical .ant-list-item-meta-title {color: @heading-color;} +.ant-list-grid .ant-col > .ant-list-item {border-bottom: none;} +.ant-list-bordered {border: 1px solid @border-color-base;border-radius: 2px;} +.ant-mentions-status-error:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions, .ant-mentions-status-error:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions:hover {background: @input-bg;border-color: #ff4d4f;} +.ant-mentions-status-error:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions:focus, .ant-mentions-status-error:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions-focused {border-color: #ff7875;box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2);border-right-width: 1px;} +.ant-mentions-status-error .ant-input-prefix {color: #ff4d4f;} +.ant-mentions-status-warning:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions, .ant-mentions-status-warning:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions:hover {background: @input-bg;border-color: #faad14;} +.ant-mentions-status-warning:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions:focus, .ant-mentions-status-warning:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions-focused {border-color: #ffc53d;box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);border-right-width: 1px;} +.ant-mentions-status-warning .ant-input-prefix {color: #faad14;} +.ant-mentions {color: @text-color;background-color: @input-bg;background-image: none;border: 1px solid @border-color-base;border-radius: 2px;} +.ant-mentions::placeholder {color: @input-placeholder-color;} +.ant-mentions:hover {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} +.ant-input-rtl .ant-mentions:hover {border-right-width: 0;border-left-width: 1px !important;} +.ant-mentions:focus, .ant-mentions-focused {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);border-right-width: 1px;} +.ant-input-rtl .ant-mentions:focus, .ant-input-rtl .ant-mentions-focused {border-right-width: 0;border-left-width: 1px !important;} +.ant-mentions-disabled {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-mentions-disabled:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-mentions[disabled] {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-mentions[disabled]:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-mentions-borderless, .ant-mentions-borderless:hover, .ant-mentions-borderless:focus, .ant-mentions-borderless-focused, .ant-mentions-borderless-disabled, .ant-mentions-borderless[disabled] {background-color: transparent;border: none;box-shadow: none;} +.ant-mentions-disabled > textarea {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-mentions-disabled > textarea:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-mentions-focused {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);border-right-width: 1px;} +.ant-input-rtl .ant-mentions-focused {border-right-width: 0;border-left-width: 1px !important;} +.ant-mentions > textarea {border: none;} +.ant-mentions > textarea::placeholder {color: @input-placeholder-color;} +.ant-mentions-measure {color: transparent;} +.ant-mentions-dropdown {color: @text-color;background-color: @mentions-dropdown-bg;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);} +.ant-mentions-dropdown-menu-item {color: @text-color;} +.ant-mentions-dropdown-menu-item:hover {background-color: @item-hover-bg;} +.ant-mentions-dropdown-menu-item:first-child {border-radius: 2px 2px 0 0;} +.ant-mentions-dropdown-menu-item:last-child {border-radius: 0 0 2px 2px;} +.ant-mentions-dropdown-menu-item-disabled {color: @disabled-color;} +.ant-mentions-dropdown-menu-item-disabled:hover {color: @disabled-color;background-color: @mentions-dropdown-bg;} +.ant-mentions-dropdown-menu-item-selected {color: @text-color;background-color: @background-color-light;} +.ant-mentions-dropdown-menu-item-active {background-color: @item-hover-bg;} +.ant-menu-item-danger.ant-menu-item {color: #ff4d4f;} +.ant-menu-item-danger.ant-menu-item:hover, .ant-menu-item-danger.ant-menu-item-active {color: #ff4d4f;} +.ant-menu-item-danger.ant-menu-item:active {background: #fff1f0;} +.ant-menu-item-danger.ant-menu-item-selected {color: #ff4d4f;} +.ant-menu-item-danger.ant-menu-item-selected > a, .ant-menu-item-danger.ant-menu-item-selected > a:hover {color: #ff4d4f;} +.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {background-color: #fff1f0;} +.ant-menu-inline .ant-menu-item-danger.ant-menu-item::after {border-right-color: #ff4d4f;} +.ant-menu-dark .ant-menu-item-danger.ant-menu-item, .ant-menu-dark .ant-menu-item-danger.ant-menu-item:hover, .ant-menu-dark .ant-menu-item-danger.ant-menu-item > a {color: #ff4d4f;} +.ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {color: #fff;background-color: #ff4d4f;} +.ant-menu {color: @text-color;background: @component-background;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);} +.ant-menu.ant-menu-root:focus-visible {box-shadow: 0 0 0 2px color(~`colorPalette("@{primary-color}", 2)`);} +.ant-menu-item-group-title {color: @text-color-secondary;} +.ant-menu-submenu-selected {color: @primary-color;} +.ant-menu-item:active, .ant-menu-submenu-title:active {background: color(~`colorPalette("@{primary-color}", 1)`);} +.ant-menu-item a {color: @text-color;} +.ant-menu-item a:hover {color: @primary-color;} +.ant-menu-item a::before {background-color: transparent;} +.ant-menu-item > .ant-badge a {color: @text-color;} +.ant-menu-item > .ant-badge a:hover {color: @primary-color;} +.ant-menu-item-divider {border-color: @border-color-split;border-style: solid;border-width: 1px 0 0;} +.ant-menu-item-divider-dashed {border-style: dashed;} +.ant-menu-horizontal > .ant-menu-item:hover, .ant-menu-horizontal > .ant-menu-item-active, .ant-menu-horizontal > .ant-menu-submenu .ant-menu-submenu-title:hover {background-color: transparent;} +.ant-menu-item-selected {color: @primary-color;} +.ant-menu-item-selected a, .ant-menu-item-selected a:hover {color: @primary-color;} +.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {background-color: color(~`colorPalette("@{primary-color}", 1)`);} +.ant-menu-inline, .ant-menu-vertical, .ant-menu-vertical-left {border-right: 1px solid @border-color-split;} +.ant-menu-vertical-right {border-left: 1px solid @border-color-split;} +.ant-menu-vertical.ant-menu-sub, .ant-menu-vertical-left.ant-menu-sub, .ant-menu-vertical-right.ant-menu-sub {border-right: 0;} +.ant-menu-vertical.ant-menu-sub .ant-menu-item, .ant-menu-vertical-left.ant-menu-sub .ant-menu-item, .ant-menu-vertical-right.ant-menu-sub .ant-menu-item {border-right: 0;} +.ant-menu-vertical.ant-menu-sub .ant-menu-item::after, .ant-menu-vertical-left.ant-menu-sub .ant-menu-item::after, .ant-menu-vertical-right.ant-menu-sub .ant-menu-item::after {border-right: 0;} +.ant-menu-item:focus-visible, .ant-menu-submenu-title:focus-visible {box-shadow: 0 0 0 2px color(~`colorPalette("@{primary-color}", 2)`);} +.ant-menu-submenu-popup {background: transparent;border-radius: 2px;box-shadow: none;} +.ant-menu-submenu > .ant-menu {background-color: @component-background;border-radius: 2px;} +.ant-menu-submenu-popup > .ant-menu {background-color: @menu-popup-bg;} +.ant-menu-submenu-expand-icon, .ant-menu-submenu-arrow {color: @text-color;} +.ant-menu-submenu-arrow::before, .ant-menu-submenu-arrow::after {background-color: currentcolor;border-radius: 2px;} +.ant-menu-submenu:hover > .ant-menu-submenu-title > .ant-menu-submenu-expand-icon, .ant-menu-submenu:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow {color: @primary-color;} +.ant-menu-vertical .ant-menu-submenu-selected, .ant-menu-vertical-left .ant-menu-submenu-selected, .ant-menu-vertical-right .ant-menu-submenu-selected {color: @primary-color;} +.ant-menu-horizontal {border: 0;border-bottom: 1px solid @border-color-split;box-shadow: none;} +.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item-active, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-active, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item-open, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-open, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item-selected, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected {color: @primary-color;} +.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover::after, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover::after, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item-active::after, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-active::after, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item-open::after, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-open::after, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item-selected::after, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected::after {border-bottom: 2px solid @primary-color;} +.ant-menu-horizontal > .ant-menu-item::after, .ant-menu-horizontal > .ant-menu-submenu::after {border-bottom: 2px solid transparent;} +.ant-menu-horizontal > .ant-menu-item a {color: @text-color;} +.ant-menu-horizontal > .ant-menu-item a:hover {color: @primary-color;} +.ant-menu-horizontal > .ant-menu-item-selected a {color: @primary-color;} +.ant-menu-vertical .ant-menu-item::after, .ant-menu-vertical-left .ant-menu-item::after, .ant-menu-vertical-right .ant-menu-item::after, .ant-menu-inline .ant-menu-item::after {border-right: 3px solid @primary-color;} +.ant-menu.ant-menu-inline-collapsed-tooltip a {color: rgba(255, 255, 255, 0.85);} +.ant-menu-root.ant-menu-vertical, .ant-menu-root.ant-menu-vertical-left, .ant-menu-root.ant-menu-vertical-right, .ant-menu-root.ant-menu-inline {box-shadow: none;} +.ant-menu-sub.ant-menu-inline {background: @background-color-light;border: 0;border-radius: 0;box-shadow: none;} +.ant-menu-item-disabled, .ant-menu-submenu-disabled {color: @disabled-color !important;background: none;} +.ant-menu-item-disabled::after, .ant-menu-submenu-disabled::after {border-color: transparent !important;} +.ant-menu-item-disabled a, .ant-menu-submenu-disabled a {color: @disabled-color !important;} +.ant-menu-item-disabled > .ant-menu-submenu-title, .ant-menu-submenu-disabled > .ant-menu-submenu-title {color: @disabled-color !important;} +.ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after {background: @disabled-color !important;} +.ant-menu-inline-collapsed-tooltip a, .ant-menu-inline-collapsed-tooltip a:hover {color: #fff;} +.ant-menu-light .ant-menu-item:hover, .ant-menu-light .ant-menu-item-active, .ant-menu-light .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open, .ant-menu-light .ant-menu-submenu-active, .ant-menu-light .ant-menu-submenu-title:hover {color: @primary-color;} +.ant-menu.ant-menu-root:focus-visible {box-shadow: 0 0 0 2px color(~`colorPalette("@{primary-color}", 7)`);} +.ant-menu-dark .ant-menu-item:focus-visible, .ant-menu-dark .ant-menu-submenu-title:focus-visible {box-shadow: 0 0 0 2px color(~`colorPalette("@{primary-color}", 7)`);} +.ant-menu.ant-menu-dark, .ant-menu-dark .ant-menu-sub, .ant-menu.ant-menu-dark .ant-menu-sub {color: rgba(255, 255, 255, 0.65);background: @menu-dark-bg;} +.ant-menu.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow::after, .ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::after, .ant-menu.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::after, .ant-menu.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow::before, .ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::before, .ant-menu.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::before {background: #fff;} +.ant-menu-dark.ant-menu-submenu-popup {background: transparent;} +.ant-menu-dark .ant-menu-inline.ant-menu-sub {background: @menu-dark-inline-submenu-bg;} +.ant-menu-dark.ant-menu-horizontal {border-bottom: 0;} +.ant-menu-dark.ant-menu-horizontal > .ant-menu-item, .ant-menu-dark.ant-menu-horizontal > .ant-menu-submenu {border-color: @menu-dark-bg;border-bottom: 0;} +.ant-menu-dark.ant-menu-horizontal > .ant-menu-item:hover {background-color: @primary-color;} +.ant-menu-dark .ant-menu-item, .ant-menu-dark .ant-menu-item-group-title, .ant-menu-dark .ant-menu-item > a, .ant-menu-dark .ant-menu-item > span > a {color: rgba(255, 255, 255, 0.65);} +.ant-menu-dark.ant-menu-inline, .ant-menu-dark.ant-menu-vertical, .ant-menu-dark.ant-menu-vertical-left, .ant-menu-dark.ant-menu-vertical-right {border-right: 0;} +.ant-menu-dark.ant-menu-inline .ant-menu-item, .ant-menu-dark.ant-menu-vertical .ant-menu-item, .ant-menu-dark.ant-menu-vertical-left .ant-menu-item, .ant-menu-dark.ant-menu-vertical-right .ant-menu-item {border-right: 0;} +.ant-menu-dark.ant-menu-inline .ant-menu-item::after, .ant-menu-dark.ant-menu-vertical .ant-menu-item::after, .ant-menu-dark.ant-menu-vertical-left .ant-menu-item::after, .ant-menu-dark.ant-menu-vertical-right .ant-menu-item::after {border-right: 0;} +.ant-menu-dark .ant-menu-item:hover, .ant-menu-dark .ant-menu-item-active, .ant-menu-dark .ant-menu-submenu-active, .ant-menu-dark .ant-menu-submenu-open, .ant-menu-dark .ant-menu-submenu-selected, .ant-menu-dark .ant-menu-submenu-title:hover {color: #fff;background-color: transparent;} +.ant-menu-dark .ant-menu-item:hover > a, .ant-menu-dark .ant-menu-item-active > a, .ant-menu-dark .ant-menu-submenu-active > a, .ant-menu-dark .ant-menu-submenu-open > a, .ant-menu-dark .ant-menu-submenu-selected > a, .ant-menu-dark .ant-menu-submenu-title:hover > a, .ant-menu-dark .ant-menu-item:hover > span > a, .ant-menu-dark .ant-menu-item-active > span > a, .ant-menu-dark .ant-menu-submenu-active > span > a, .ant-menu-dark .ant-menu-submenu-open > span > a, .ant-menu-dark .ant-menu-submenu-selected > span > a, .ant-menu-dark .ant-menu-submenu-title:hover > span > a {color: #fff;} +.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before {background: #fff;} +.ant-menu-dark .ant-menu-item:hover {background-color: transparent;} +.ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-selected {background-color: @primary-color;} +.ant-menu-dark .ant-menu-item-selected {color: #fff;border-right: 0;} +.ant-menu-dark .ant-menu-item-selected::after {border-right: 0;} +.ant-menu-dark .ant-menu-item-selected > a, .ant-menu-dark .ant-menu-item-selected > span > a, .ant-menu-dark .ant-menu-item-selected > a:hover, .ant-menu-dark .ant-menu-item-selected > span > a:hover {color: #fff;} +.ant-menu-dark .ant-menu-item-selected .ant-menu-item-icon, .ant-menu-dark .ant-menu-item-selected .anticon {color: #fff;} +.ant-menu-dark .ant-menu-item-selected .ant-menu-item-icon + span, .ant-menu-dark .ant-menu-item-selected .anticon + span {color: #fff;} +.ant-menu.ant-menu-dark .ant-menu-item-selected, .ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected {background-color: @primary-color;} +.ant-menu-dark .ant-menu-item-disabled, .ant-menu-dark .ant-menu-submenu-disabled, .ant-menu-dark .ant-menu-item-disabled > a, .ant-menu-dark .ant-menu-submenu-disabled > a, .ant-menu-dark .ant-menu-item-disabled > span > a, .ant-menu-dark .ant-menu-submenu-disabled > span > a {color: @disabled-color-dark !important;} +.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title, .ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title {color: @disabled-color-dark !important;} +.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, .ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, .ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, .ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after {background: @disabled-color-dark !important;} +.ant-menu-rtl.ant-menu-inline, .ant-menu-rtl.ant-menu-vertical {border-right: none;border-left: 1px solid @border-color-split;} +.ant-menu-rtl.ant-menu-dark.ant-menu-inline, .ant-menu-rtl.ant-menu-dark.ant-menu-vertical {border-left: none;} +.ant-menu-sub.ant-menu-inline {border: 0;} +.ant-message {color: @text-color;} +.ant-message-notice-content {background: @message-notice-content-bg;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);} +.ant-message-success .anticon {color: #52c41a;} +.ant-message-error .anticon {color: #ff4d4f;} +.ant-message-warning .anticon {color: #faad14;} +.ant-message-info .anticon, .ant-message-loading .anticon {color: @primary-color;} +.ant-modal {color: @text-color;} +.ant-modal-mask {background-color: rgba(0, 0, 0, 0.45);} +.ant-modal-title {color: @heading-color;} +.ant-modal-content {background-color: @modal-content-bg;background-clip: padding-box;border: 0;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);} +.ant-modal-close {color: @text-color-secondary;background: transparent;border: 0;} +.ant-modal-close:focus, .ant-modal-close:hover {color: @icon-color-hover;} +.ant-modal-header {color: @text-color;background: @modal-header-bg;border-bottom: 1px solid @modal-header-border-color-split;border-radius: 2px 2px 0 0;} +.ant-modal-footer {background: transparent;border-top: 1px solid @modal-footer-border-color-split;border-radius: 0 0 2px 2px;} +.ant-modal-confirm-body .ant-modal-confirm-title {color: @heading-color;} +.ant-modal-confirm-body .ant-modal-confirm-content {color: @text-color;} +.ant-modal-confirm-error .ant-modal-confirm-body > .anticon {color: #ff4d4f;} +.ant-modal-confirm-warning .ant-modal-confirm-body > .anticon, .ant-modal-confirm-confirm .ant-modal-confirm-body > .anticon {color: #faad14;} +.ant-modal-confirm-info .ant-modal-confirm-body > .anticon {color: @primary-color;} +.ant-modal-confirm-success .ant-modal-confirm-body > .anticon {color: #52c41a;} +.ant-notification {color: @text-color;} +.ant-notification-notice {background: @notification-bg;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);} +.ant-notification-notice-message {color: @heading-color;} +.ant-notification-notice-message-single-line-auto-margin {background-color: transparent;} +.anticon.ant-notification-notice-icon-success {color: #52c41a;} +.anticon.ant-notification-notice-icon-info {color: @primary-color;} +.anticon.ant-notification-notice-icon-warning {color: #faad14;} +.anticon.ant-notification-notice-icon-error {color: #ff4d4f;} +.ant-notification-notice-close {color: @text-color-secondary;} +.ant-notification-notice-close:hover {color: shade(@text-color-secondary, 40%);} +.ant-notification .notification-fade-effect {animation-fill-mode: both;} +.ant-notification-fade-enter, .ant-notification-fade-appear {animation-fill-mode: both;} +.ant-notification-fade-leave {animation-fill-mode: both;} +.ant-page-header {color: @text-color;background-color: @component-background;} +.ant-page-header-ghost {background-color: inherit;} +.ant-page-header-back-button {color: @link-color;color: @page-header-back-color;} +.ant-page-header-back-button:focus, .ant-page-header-back-button:hover {color: @link-hover-color;} +.ant-page-header-back-button:active {color: @link-active-color;} +.ant-page-header-heading-title {color: @heading-color;} +.ant-page-header-heading-sub-title {color: @text-color-secondary;} +.ant-page-header-footer .ant-tabs > .ant-tabs-nav::before {border: none;} +.ant-pagination {color: @text-color;} +.ant-pagination-item {background-color: @pagination-item-bg;border: 1px solid @border-color-base;border-radius: 2px;} +.ant-pagination-item a {color: @text-color;} +.ant-pagination-item:hover {border-color: @primary-color;} +.ant-pagination-item:hover a {color: @primary-color;} +.ant-pagination-item:focus-visible {border-color: @primary-color;} +.ant-pagination-item:focus-visible a {color: @primary-color;} +.ant-pagination-item-active {background: @pagination-item-bg-active;border-color: @primary-color;} +.ant-pagination-item-active a {color: @primary-color;} +.ant-pagination-item-active:hover {border-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-pagination-item-active:focus-visible {border-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-pagination-item-active:hover a {color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-pagination-item-active:focus-visible a {color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon, .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon {color: @primary-color;} +.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-ellipsis, .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-ellipsis {color: @disabled-color;} +.ant-pagination-prev, .ant-pagination-next, .ant-pagination-jump-prev, .ant-pagination-jump-next {color: @text-color;border-radius: 2px;} +.ant-pagination-prev button, .ant-pagination-next button {color: @text-color;} +.ant-pagination-prev:hover button, .ant-pagination-next:hover button {border-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-pagination-prev .ant-pagination-item-link, .ant-pagination-next .ant-pagination-item-link {background-color: @pagination-item-link-bg;border: 1px solid @border-color-base;border-radius: 2px;} +.ant-pagination-prev:focus-visible .ant-pagination-item-link, .ant-pagination-next:focus-visible .ant-pagination-item-link {color: @primary-color;border-color: @primary-color;} +.ant-pagination-prev:hover .ant-pagination-item-link, .ant-pagination-next:hover .ant-pagination-item-link {color: @primary-color;border-color: @primary-color;} +.ant-pagination-disabled .ant-pagination-item-link, .ant-pagination-disabled:hover .ant-pagination-item-link {color: @disabled-color;border-color: @border-color-base;} +.ant-pagination-disabled:focus-visible .ant-pagination-item-link {color: @disabled-color;border-color: @border-color-base;} +.ant-pagination-options-quick-jumper input {color: @text-color;background-color: @input-bg;background-image: none;border: 1px solid @border-color-base;border-radius: 2px;} +.ant-pagination-options-quick-jumper input::placeholder {color: @input-placeholder-color;} +.ant-pagination-options-quick-jumper input:hover {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} +.ant-input-rtl .ant-pagination-options-quick-jumper input:hover {border-right-width: 0;border-left-width: 1px !important;} +.ant-pagination-options-quick-jumper input:focus, .ant-pagination-options-quick-jumper input-focused {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);border-right-width: 1px;} +.ant-input-rtl .ant-pagination-options-quick-jumper input:focus, .ant-input-rtl .ant-pagination-options-quick-jumper input-focused {border-right-width: 0;border-left-width: 1px !important;} +.ant-pagination-options-quick-jumper input-disabled {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-pagination-options-quick-jumper input-disabled:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-pagination-options-quick-jumper input[disabled] {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;box-shadow: none;} +.ant-pagination-options-quick-jumper input[disabled]:hover {border-color: @border-color-base;border-right-width: 1px;} +.ant-pagination-options-quick-jumper input-borderless, .ant-pagination-options-quick-jumper input-borderless:hover, .ant-pagination-options-quick-jumper input-borderless:focus, .ant-pagination-options-quick-jumper input-borderless-focused, .ant-pagination-options-quick-jumper input-borderless-disabled, .ant-pagination-options-quick-jumper input-borderless[disabled] {background-color: transparent;border: none;box-shadow: none;} +.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link, .ant-pagination-simple .ant-pagination-next .ant-pagination-item-link {background-color: transparent;border: 0;} +.ant-pagination-simple .ant-pagination-simple-pager input {background-color: @pagination-item-input-bg;border: 1px solid @border-color-base;border-radius: 2px;} +.ant-pagination-simple .ant-pagination-simple-pager input:hover {border-color: @primary-color;} +.ant-pagination-simple .ant-pagination-simple-pager input:focus {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);} +.ant-pagination-simple .ant-pagination-simple-pager input[disabled] {color: @disabled-color;background: @disabled-bg;border-color: @border-color-base;} +.ant-pagination.ant-pagination-mini .ant-pagination-item:not(.ant-pagination-item-active) {background: transparent;border-color: transparent;} +.ant-pagination.ant-pagination-mini .ant-pagination-prev .ant-pagination-item-link, .ant-pagination.ant-pagination-mini .ant-pagination-next .ant-pagination-item-link {background: transparent;border-color: transparent;} +.ant-pagination.ant-pagination-disabled .ant-pagination-item {background: @disabled-bg;border-color: @border-color-base;} +.ant-pagination.ant-pagination-disabled .ant-pagination-item a {color: @disabled-color;background: transparent;border: none;} +.ant-pagination.ant-pagination-disabled .ant-pagination-item-active {background: @pagination-item-disabled-bg-active;} +.ant-pagination.ant-pagination-disabled .ant-pagination-item-active a {color: @pagination-item-disabled-color-active;} +.ant-pagination.ant-pagination-disabled .ant-pagination-item-link {color: @disabled-color;background: @disabled-bg;border-color: @border-color-base;} +.ant-pagination-simple.ant-pagination.ant-pagination-disabled .ant-pagination-item-link {background: transparent;} +.ant-pagination.ant-pagination-disabled .ant-pagination-simple-pager {color: @disabled-color;} +.ant-popover {color: @text-color;} +.ant-popover::after {background: rgba(255, 255, 255, 0.01);} +.ant-popover-inner {background-color: @popover-bg;background-clip: padding-box;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);box-shadow: 0 0 8px @shadow-color ;} +.ant-popover-title {color: @heading-color;border-bottom: 1px solid @border-color-split;} +.ant-popover-inner-content {color: @text-color;} +.ant-popover-message {color: @text-color;} +.ant-popover-message > .anticon {color: #faad14;} +.ant-popover-arrow {background: transparent;} +.ant-popover-arrow-content {background-color: @popover-bg;border-radius: 0 0 2px;} +.ant-popover-arrow-content::before {background: @popover-bg;background-repeat: no-repeat;background-position: -10px -10px;} +.ant-popover-placement-top .ant-popover-arrow-content, .ant-popover-placement-topLeft .ant-popover-arrow-content, .ant-popover-placement-topRight .ant-popover-arrow-content {box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);} +.ant-popover-placement-right .ant-popover-arrow-content, .ant-popover-placement-rightTop .ant-popover-arrow-content, .ant-popover-placement-rightBottom .ant-popover-arrow-content {box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);} +.ant-popover-placement-bottom .ant-popover-arrow-content, .ant-popover-placement-bottomLeft .ant-popover-arrow-content, .ant-popover-placement-bottomRight .ant-popover-arrow-content {box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.06);} +.ant-popover-placement-left .ant-popover-arrow-content, .ant-popover-placement-leftTop .ant-popover-arrow-content, .ant-popover-placement-leftBottom .ant-popover-arrow-content {box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);} +.ant-popover-pink .ant-popover-inner {background-color: #eb2f96;} +.ant-popover-pink .ant-popover-arrow-content {background-color: #eb2f96;} +.ant-popover-magenta .ant-popover-inner {background-color: #eb2f96;} +.ant-popover-magenta .ant-popover-arrow-content {background-color: #eb2f96;} +.ant-popover-red .ant-popover-inner {background-color: #f5222d;} +.ant-popover-red .ant-popover-arrow-content {background-color: #f5222d;} +.ant-popover-volcano .ant-popover-inner {background-color: #fa541c;} +.ant-popover-volcano .ant-popover-arrow-content {background-color: #fa541c;} +.ant-popover-orange .ant-popover-inner {background-color: #fa8c16;} +.ant-popover-orange .ant-popover-arrow-content {background-color: #fa8c16;} +.ant-popover-yellow .ant-popover-inner {background-color: #fadb14;} +.ant-popover-yellow .ant-popover-arrow-content {background-color: #fadb14;} +.ant-popover-gold .ant-popover-inner {background-color: #faad14;} +.ant-popover-gold .ant-popover-arrow-content {background-color: #faad14;} +.ant-popover-cyan .ant-popover-inner {background-color: #13c2c2;} +.ant-popover-cyan .ant-popover-arrow-content {background-color: #13c2c2;} +.ant-popover-lime .ant-popover-inner {background-color: #a0d911;} +.ant-popover-lime .ant-popover-arrow-content {background-color: #a0d911;} +.ant-popover-green .ant-popover-inner {background-color: #52c41a;} +.ant-popover-green .ant-popover-arrow-content {background-color: #52c41a;} +.ant-popover-blue .ant-popover-inner {background-color: #1890ff;} +.ant-popover-blue .ant-popover-arrow-content {background-color: #1890ff;} +.ant-popover-geekblue .ant-popover-inner {background-color: #2f54eb;} +.ant-popover-geekblue .ant-popover-arrow-content {background-color: #2f54eb;} +.ant-popover-purple .ant-popover-inner {background-color: #722ed1;} +.ant-popover-purple .ant-popover-arrow-content {background-color: #722ed1;} +.ant-progress {color: @text-color;} +.ant-progress-steps-item {background: @progress-steps-item-bg;} +.ant-progress-steps-item-active {background: @processing-color;} +.ant-progress-inner {background-color: @background-color-base;border-radius: 100px;} +.ant-progress-circle-trail {stroke: @background-color-base;} +.ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path {stroke: @processing-color;} +.ant-progress-success-bg, .ant-progress-bg {background-color: @processing-color;border-radius: 100px;} +.ant-progress-success-bg {background-color: #52c41a;} +.ant-progress-text {color: @text-color;} +.ant-progress-status-active .ant-progress-bg::before {background: @component-background;border-radius: 10px;} +.ant-progress-status-exception .ant-progress-bg {background-color: #ff4d4f;} +.ant-progress-status-exception .ant-progress-text {color: #ff4d4f;} +.ant-progress-status-exception .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path {stroke: #ff4d4f;} +.ant-progress-status-success .ant-progress-bg {background-color: #52c41a;} +.ant-progress-status-success .ant-progress-text {color: #52c41a;} +.ant-progress-status-success .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path {stroke: #52c41a;} +.ant-progress-circle .ant-progress-inner {background-color: transparent;} +.ant-progress-circle .ant-progress-text {color: @text-color;} +.ant-progress-circle.ant-progress-status-exception .ant-progress-text {color: #ff4d4f;} +.ant-progress-circle.ant-progress-status-success .ant-progress-text {color: #52c41a;} +.ant-radio-group {color: @text-color;} +.ant-radio-group > .ant-badge:not(:first-child) > .ant-radio-button-wrapper {border-left: none;} +.ant-radio-wrapper {color: @text-color;} +.ant-radio {color: @text-color;} +.ant-radio-wrapper:hover .ant-radio, .ant-radio:hover .ant-radio-inner, .ant-radio-input:focus + .ant-radio-inner {border-color: @primary-color;} +.ant-radio-input:focus + .ant-radio-inner {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);} +.ant-radio-checked::after {border: 1px solid @primary-color;border-radius: 50%;animation-fill-mode: both;} +.ant-radio-inner {background-color: @btn-default-bg;border-color: @border-color-base;border-style: solid;border-width: 1px;border-radius: 50%;} +.ant-radio-inner::after {background-color: @primary-color;border-top: 0;border-left: 0;border-radius: 16px;} +.ant-radio.ant-radio-disabled .ant-radio-inner {border-color: @border-color-base;} +.ant-radio-checked .ant-radio-inner {border-color: @primary-color;} +.ant-radio-disabled .ant-radio-inner {background-color: @disabled-bg;} +.ant-radio-disabled .ant-radio-inner::after {background-color: @radio-dot-disabled-color;} +.ant-radio-disabled + span {color: @disabled-color;} +.ant-radio-button-wrapper {color: @text-color;background: @btn-default-bg;border: 1px solid @border-color-base;border-top-width: 1.02px;border-left-width: 0;} +.ant-radio-button-wrapper a {color: @text-color;} +.ant-radio-button-wrapper:not(:first-child)::before {background-color: @border-color-base;} +.ant-radio-button-wrapper:first-child {border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;} +.ant-radio-button-wrapper:last-child {border-radius: 0 2px 2px 0;} +.ant-radio-button-wrapper:first-child:last-child {border-radius: 2px;} +.ant-radio-button-wrapper:hover {color: @primary-color;} +.ant-radio-button-wrapper:focus-within {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);} +.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {color: @primary-color;background: @btn-default-bg;border-color: @primary-color;} +.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {background-color: @primary-color;} +.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child {border-color: @primary-color;} +.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {color: color(~`colorPalette("@{primary-color}", 5)`);border-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover::before {background-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {color: color(~`colorPalette("@{primary-color}", 7)`);border-color: color(~`colorPalette("@{primary-color}", 7)`);} +.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active::before {background-color: color(~`colorPalette("@{primary-color}", 7)`);} +.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);} +.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {color: @radio-solid-checked-color;background: @primary-color;border-color: @primary-color;} +.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {color: @radio-solid-checked-color;background: color(~`colorPalette("@{primary-color}", 5)`);border-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {color: @radio-solid-checked-color;background: color(~`colorPalette("@{primary-color}", 7)`);border-color: color(~`colorPalette("@{primary-color}", 7)`);} +.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);} +.ant-radio-button-wrapper-disabled {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;} +.ant-radio-button-wrapper-disabled:first-child, .ant-radio-button-wrapper-disabled:hover {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;} +.ant-radio-button-wrapper-disabled:first-child {border-left-color: @border-color-base;} +.ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked {color: @radio-disabled-button-checked-color;background-color: @radio-disabled-button-checked-bg;border-color: @border-color-base;box-shadow: none;} +.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl {border-right-width: 0;border-left-width: 1px;} +.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper:first-child {border-right: 1px solid @border-color-base;border-radius: 0 2px 2px 0;} +.ant-radio-button-wrapper-checked:not([class*=' ant-radio-button-wrapper-disabled']).ant-radio-button-wrapper:first-child {border-right-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper:last-child {border-radius: 2px 0 0 2px;} +.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper-disabled:first-child {border-right-color: @border-color-base;} +.ant-rate {color: @text-color;color: #fadb14;} +.ant-rate-star {color: inherit;} +.ant-rate-star-first, .ant-rate-star-second {color: @rate-star-bg;} +.ant-rate-star-half .ant-rate-star-first, .ant-rate-star-full .ant-rate-star-second {color: inherit;} +.ant-result-success .ant-result-icon > .anticon {color: #52c41a;} +.ant-result-error .ant-result-icon > .anticon {color: #ff4d4f;} +.ant-result-info .ant-result-icon > .anticon {color: @primary-color;} +.ant-result-warning .ant-result-icon > .anticon {color: #faad14;} +.ant-result-title {color: @heading-color;} +.ant-result-subtitle {color: @text-color-secondary;} +.ant-result-content {background-color: @background-color-light;} +.segmented-disabled-item, .segmented-disabled-item:hover, .segmented-disabled-item:focus {color: @disabled-color;} +.segmented-item-selected {background-color: #fff;border-radius: 2px;box-shadow: 0 2px 8px -2px rgba(0, 0, 0, 0.05), 0 1px 4px -1px rgba(0, 0, 0, 0.07), 0 0 1px 0 rgba(0, 0, 0, 0.08);} +.ant-segmented {color: @text-color;color: @segmented-label-color;background-color: @segmented-bg;border-radius: 2px;} +.ant-segmented:not(.ant-segmented-disabled):hover, .ant-segmented:not(.ant-segmented-disabled):focus {background-color: @segmented-hover-bg;} +.ant-segmented-item-selected {background-color: #fff;border-radius: 2px;box-shadow: 0 2px 8px -2px rgba(0, 0, 0, 0.05), 0 1px 4px -1px rgba(0, 0, 0, 0.07), 0 0 1px 0 rgba(0, 0, 0, 0.08);color: @segmented-label-hover-color;} +.ant-segmented-item:hover, .ant-segmented-item:focus {color: @segmented-label-hover-color;} +.ant-segmented-item-disabled, .ant-segmented-item-disabled:hover, .ant-segmented-item-disabled:focus {color: @disabled-color;} +.ant-segmented-thumb {background-color: #fff;border-radius: 2px;box-shadow: 0 2px 8px -2px rgba(0, 0, 0, 0.05), 0 1px 4px -1px rgba(0, 0, 0, 0.07), 0 0 1px 0 rgba(0, 0, 0, 0.08);} +.ant-select-single.ant-select-open .ant-select-selection-item {color: @input-placeholder-color;} +.ant-select-disabled.ant-select-multiple .ant-select-selector {background: @select-multiple-disabled-background;} +.ant-select-multiple .ant-select-selection-item {background: @select-selection-item-bg;border: 1px solid @select-selection-item-border-color;border-radius: 2px;} +.ant-select-disabled.ant-select-multiple .ant-select-selection-item {color: @select-multiple-item-disabled-color;border-color: @select-multiple-item-disabled-border-color;} +.ant-select-multiple .ant-select-selection-item-remove {color: inherit;color: @text-color-secondary;} +.ant-select-multiple .ant-select-selection-item-remove:hover {color: @icon-color-hover;} +.ant-select-status-error.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input) .ant-select-selector {background-color: @select-background;border-color: #ff4d4f !important;} +.ant-select-status-error.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input).ant-select-open .ant-select-selector, .ant-select-status-error.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input).ant-select-focused .ant-select-selector {border-color: #ff7875;box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2);border-right-width: 1px;} +.ant-select-status-warning.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input) .ant-select-selector {background-color: @input-bg;border-color: #faad14 !important;} +.ant-select-status-warning.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input).ant-select-open .ant-select-selector, .ant-select-status-warning.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input).ant-select-focused .ant-select-selector {border-color: #ffc53d;box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);border-right-width: 1px;} +.ant-select {color: @text-color;} +.ant-select:not(.ant-select-customize-input) .ant-select-selector {background-color: @select-background;border: 1px solid @border-color-base;border-radius: 2px;} +.ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);border-right-width: 1px;} +.ant-input-rtl .ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector {border-right-width: 0;border-left-width: 1px !important;} +.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector {color: @disabled-color;background: @disabled-bg;} +.ant-select-multiple.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector {background: @select-multiple-disabled-background;} +.ant-select:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input {background: transparent;border: none;} +.ant-select:not(.ant-select-disabled):hover .ant-select-selector {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} +.ant-input-rtl .ant-select:not(.ant-select-disabled):hover .ant-select-selector {border-right-width: 0;border-left-width: 1px !important;} +.ant-select-selection-placeholder {color: @input-placeholder-color;} +.ant-select-arrow {color: inherit;color: @disabled-color;} +.ant-select-clear {color: @disabled-color;background: @select-clear-background;} +.ant-select-clear:hover {color: @text-color-secondary;} +.ant-select-dropdown {color: @text-color;background-color: @select-dropdown-bg;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);} +.ant-select-dropdown-empty {color: @disabled-color;} +.ant-select-item-empty {color: @text-color;color: @disabled-color;} +.ant-select-item {color: @text-color;} +.ant-select-item-group {color: @text-color-secondary;} +.ant-select-item-option-active:not(.ant-select-item-option-disabled) {background-color: @item-hover-bg;} +.ant-select-item-option-selected:not(.ant-select-item-option-disabled) {color: @text-color;background-color: @select-item-selected-bg;} +.ant-select-item-option-selected:not(.ant-select-item-option-disabled) .ant-select-item-option-state {color: @primary-color;} +.ant-select-item-option-disabled {color: @disabled-color;} +.ant-select-item-option-disabled.ant-select-item-option-selected {background-color: @select-multiple-disabled-background;} +.ant-select-borderless .ant-select-selector {background-color: transparent !important;border-color: transparent !important;box-shadow: none !important;} +.ant-skeleton-header .ant-skeleton-avatar {background: @skeleton-color;} +.ant-skeleton-header .ant-skeleton-avatar.ant-skeleton-avatar-circle {border-radius: 50%;} +.ant-skeleton-header .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle {border-radius: 50%;} +.ant-skeleton-header .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle {border-radius: 50%;} +.ant-skeleton-content .ant-skeleton-title {background: @skeleton-color;border-radius: 4px;} +.ant-skeleton-content .ant-skeleton-paragraph > li {background: @skeleton-color;border-radius: 4px;} +.ant-skeleton-round .ant-skeleton-content .ant-skeleton-title, .ant-skeleton-round .ant-skeleton-content .ant-skeleton-paragraph > li {border-radius: 100px;} +.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title, .ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li {background: #fff;} +.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title::after, .ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li::after {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);} +.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar {background: #fff;} +.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar::after {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);} +.ant-skeleton.ant-skeleton-active .ant-skeleton-button {background: #fff;} +.ant-skeleton.ant-skeleton-active .ant-skeleton-button::after {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);} +.ant-skeleton.ant-skeleton-active .ant-skeleton-input {background: #fff;} +.ant-skeleton.ant-skeleton-active .ant-skeleton-input::after {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);} +.ant-skeleton.ant-skeleton-active .ant-skeleton-image {background: #fff;} +.ant-skeleton.ant-skeleton-active .ant-skeleton-image::after {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);} +.ant-skeleton-element .ant-skeleton-button {background: @skeleton-color;border-radius: 2px;} +.ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-circle {border-radius: 50%;} +.ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-round {border-radius: 32px;} +.ant-skeleton-element .ant-skeleton-button-lg.ant-skeleton-button-circle {border-radius: 50%;} +.ant-skeleton-element .ant-skeleton-button-lg.ant-skeleton-button-round {border-radius: 40px;} +.ant-skeleton-element .ant-skeleton-button-sm.ant-skeleton-button-circle {border-radius: 50%;} +.ant-skeleton-element .ant-skeleton-button-sm.ant-skeleton-button-round {border-radius: 24px;} +.ant-skeleton-element .ant-skeleton-avatar {background: @skeleton-color;} +.ant-skeleton-element .ant-skeleton-avatar.ant-skeleton-avatar-circle {border-radius: 50%;} +.ant-skeleton-element .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle {border-radius: 50%;} +.ant-skeleton-element .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle {border-radius: 50%;} +.ant-skeleton-element .ant-skeleton-input {background: @skeleton-color;} +.ant-skeleton-element .ant-skeleton-image {background: @skeleton-color;} +.ant-skeleton-element .ant-skeleton-image.ant-skeleton-image-circle {border-radius: 50%;} +.ant-skeleton-element .ant-skeleton-image-path {fill: #bfbfbf;} +.ant-skeleton-element .ant-skeleton-image-svg.ant-skeleton-image-circle {border-radius: 50%;} +.ant-slider {color: @text-color;} +.ant-slider-rail {background-color: @slider-rail-background-color;border-radius: 2px;} +.ant-slider-track {background-color: color(~`colorPalette("@{primary-color}", 3)`);border-radius: 2px;} +.ant-slider-handle {background-color: @component-background;border: solid 2px color(~`colorPalette("@{primary-color}", 3)`);border-radius: 50%;box-shadow: 0;} +.ant-slider-handle:focus {border-color: tint(@primary-color, 20%);box-shadow: 0 0 0 5px fade(@primary-color, 12%);} +.ant-slider-handle.ant-tooltip-open {border-color: @primary-color;} +.ant-slider:hover .ant-slider-rail {background-color: @slider-rail-background-color-hover;} +.ant-slider:hover .ant-slider-track {background-color: color(~`colorPalette("@{primary-color}", 4)`);} +.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open) {border-color: color(~`colorPalette("@{primary-color}", 4)`);} +.ant-slider-mark-text {color: @text-color-secondary;} +.ant-slider-mark-text-active {color: @text-color;} +.ant-slider-step {background: transparent;} +.ant-slider-dot {background-color: @component-background;border: 2px solid @slider-dot-border-color;border-radius: 50%;} +.ant-slider-dot-active {border-color: @slider-dot-border-color-active;} +.ant-slider-disabled .ant-slider-rail {background-color: @slider-rail-background-color !important;} +.ant-slider-disabled .ant-slider-track {background-color: @disabled-color !important;} +.ant-slider-disabled .ant-slider-handle, .ant-slider-disabled .ant-slider-dot {background-color: @component-background;border-color: @disabled-color !important;box-shadow: none;} +.ant-spin {color: @text-color;color: @primary-color;} +.ant-spin-container::after {background: @component-background;} +.ant-spin-tip {color: @text-color-secondary;} +.ant-spin-dot-item {background-color: @primary-color;border-radius: 100%;} +.ant-statistic {color: @text-color;} +.ant-statistic-title {color: @text-color-secondary;} +.ant-statistic-content {color: @heading-color;} +.ant-steps {color: @text-color;} +.ant-steps-item-icon {border: 1px solid @disabled-color;border-radius: 32px;} +.ant-steps-item-icon .ant-steps-icon {color: @primary-color;} +.ant-steps-item-tail::after {background: @border-color-split;border-radius: 1px;} +.ant-steps-item-title {color: @text-color;} +.ant-steps-item-title::after {background: @border-color-split;} +.ant-steps-item-subtitle {color: @text-color-secondary;} +.ant-steps-item-description {color: @text-color-secondary;} +.ant-steps-item-wait .ant-steps-item-icon {background-color: @steps-background;border-color: @disabled-color;} +.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon {color: @disabled-color;} +.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {background: @disabled-color;} +.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {color: @text-color-secondary;} +.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after {background-color: @border-color-split;} +.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {color: @text-color-secondary;} +.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-tail::after {background-color: @border-color-split;} +.ant-steps-item-process .ant-steps-item-icon {background-color: @steps-background;border-color: @primary-color;} +.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {color: @primary-color;} +.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {background: @primary-color;} +.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {color: @heading-color;} +.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after {background-color: @border-color-split;} +.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {color: @text-color;} +.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-tail::after {background-color: @border-color-split;} +.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-icon {background: @primary-color;} +.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-icon .ant-steps-icon {color: #fff;} +.ant-steps-item-finish .ant-steps-item-icon {background-color: @steps-background;border-color: @primary-color;} +.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon {color: @primary-color;} +.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {background: @primary-color;} +.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {color: @text-color;} +.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after {background-color: @primary-color;} +.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {color: @text-color-secondary;} +.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-tail::after {background-color: @primary-color;} +.ant-steps-item-error .ant-steps-item-icon {background-color: @steps-background;border-color: #ff4d4f;} +.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon {color: #ff4d4f;} +.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {background: #ff4d4f;} +.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {color: #ff4d4f;} +.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after {background-color: @border-color-split;} +.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {color: #ff4d4f;} +.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-tail::after {background-color: @border-color-split;} +.ant-steps-item.ant-steps-next-error .ant-steps-item-title::after {background: #ff4d4f;} +.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button']:hover .ant-steps-item-title, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button']:hover .ant-steps-item-subtitle, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button']:hover .ant-steps-item-description {color: @primary-color;} +.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role='button']:hover .ant-steps-item-icon {border-color: @primary-color;} +.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role='button']:hover .ant-steps-item-icon .ant-steps-icon {color: @primary-color;} +.ant-steps-item-custom > .ant-steps-item-container > .ant-steps-item-icon {background: none;border: 0;} +.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {color: @primary-color;} +.ant-steps:not(.ant-steps-vertical) .ant-steps-item-custom .ant-steps-item-icon {background: none;} +.ant-steps-small .ant-steps-item-icon {border-radius: 24px;} +.ant-steps-small .ant-steps-item-description {color: @text-color-secondary;} +.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon {background: none;border: 0;border-radius: 0;} +.ant-steps-dot .ant-steps-item-icon, .ant-steps-dot.ant-steps-small .ant-steps-item-icon {background: transparent;border: 0;} +.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot, .ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot {border-radius: 100px;} +.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot::after, .ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot::after {background: rgba(0, 0, 0, 0.001);} +.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon, .ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-item-icon {background: none;} +.ant-steps-vertical.ant-steps-dot .ant-steps-item-icon {background: none;} +.ant-steps-navigation .ant-steps-item::after {border: 1px solid @steps-nav-arrow-color;border-bottom: none;border-left: none;} +.ant-steps-navigation .ant-steps-item::before {background-color: @primary-color;} +.ant-switch {color: @text-color;background-image: linear-gradient(to right, @disabled-color, @disabled-color), linear-gradient(to right, @component-background, @component-background);border: 0;border-radius: 100px;} +.ant-switch:focus {box-shadow: 0 0 0 2px fade(@disabled-color, 10%);} +.ant-switch-checked:focus {box-shadow: 0 0 0 2px color(~`colorPalette("@{primary-color}", 1)`);} +.ant-switch:focus:hover {box-shadow: none;} +.ant-switch-checked {background: @primary-color;} +.ant-switch-loading *, .ant-switch-disabled * {box-shadow: none;} +.ant-switch-inner {color: #fff;} +.ant-switch-handle::before {background-color: @switch-bg;border-radius: 9px;box-shadow: 0 2px 4px 0 rgba(0, 35, 11, 0.2);} +.ant-switch-loading-icon.anticon {color: rgba(0, 0, 0, 0.65);} +.ant-switch-checked .ant-switch-loading-icon {color: @primary-color;} +.ant-table.ant-table-bordered > .ant-table-title {border: 1px solid @border-color-split;border-bottom: 0;} +.ant-table.ant-table-bordered > .ant-table-container {border-left: 1px solid @border-color-split;} +.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > thead > tr > th, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > thead > tr > th, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > thead > tr > th, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-summary > table > thead > tr > th, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tbody > tr > td, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tbody > tr > td, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tbody > tr > td, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-summary > table > tbody > tr > td, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tfoot > tr > th, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tfoot > tr > th, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tfoot > tr > th, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-summary > table > tfoot > tr > th, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tfoot > tr > td, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tfoot > tr > td, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tfoot > tr > td, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-summary > table > tfoot > tr > td {border-right: 1px solid @border-color-split;} +.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > thead > tr:not(:last-child) > th, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > thead > tr:not(:last-child) > th, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > thead > tr:not(:last-child) > th, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-summary > table > thead > tr:not(:last-child) > th {border-bottom: 1px solid @border-color-split;} +.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > thead > tr > th::before, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > thead > tr > th::before, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > thead > tr > th::before, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-summary > table > thead > tr > th::before {background-color: transparent !important;} +.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > thead > tr > .ant-table-cell-fix-right-first::after, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > thead > tr > .ant-table-cell-fix-right-first::after, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > thead > tr > .ant-table-cell-fix-right-first::after, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-summary > table > thead > tr > .ant-table-cell-fix-right-first::after, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tbody > tr > .ant-table-cell-fix-right-first::after, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tbody > tr > .ant-table-cell-fix-right-first::after, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tbody > tr > .ant-table-cell-fix-right-first::after, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-summary > table > tbody > tr > .ant-table-cell-fix-right-first::after, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tfoot > tr > .ant-table-cell-fix-right-first::after, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tfoot > tr > .ant-table-cell-fix-right-first::after, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tfoot > tr > .ant-table-cell-fix-right-first::after, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-summary > table > tfoot > tr > .ant-table-cell-fix-right-first::after {border-right: 1px solid @border-color-split;} +.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tbody > tr > td > .ant-table-expanded-row-fixed::after, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tbody > tr > td > .ant-table-expanded-row-fixed::after, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tbody > tr > td > .ant-table-expanded-row-fixed::after, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-summary > table > tbody > tr > td > .ant-table-expanded-row-fixed::after {border-right: 1px solid @border-color-split;} +.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table {border-top: 1px solid @border-color-split;} +.ant-table.ant-table-bordered.ant-table-scroll-horizontal > .ant-table-container > .ant-table-body > table > tbody > tr.ant-table-expanded-row > td, .ant-table.ant-table-bordered.ant-table-scroll-horizontal > .ant-table-container > .ant-table-body > table > tbody > tr.ant-table-placeholder > td {border-right: 0;} +.ant-table.ant-table-bordered > .ant-table-footer {border: 1px solid @border-color-split;border-top: 0;} +.ant-table-cell .ant-table-container:first-child {border-top: 0;} +.ant-table-cell-scrollbar:not([rowspan]) {box-shadow: 0 1px 0 1px @table-header-bg;} +.ant-table {color: @text-color;background: @component-background;border-radius: 2px;} +.ant-table table {border-radius: 2px 2px 0 0;border-collapse: separate;border-spacing: 0;} +.ant-table-footer {color: @heading-color;background: @background-color-light;} +.ant-table-thead > tr > th {color: @heading-color;background: @table-header-bg;border-bottom: 1px solid @border-color-split;} +.ant-table-thead > tr > th:not(:last-child):not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan])::before {background-color: @table-header-cell-split-color;} +.ant-table-thead > tr:not(:last-child) > th[colspan] {border-bottom: 0;} +.ant-table-tbody > tr > td {border-bottom: 1px solid @border-color-split;} +.ant-table-tbody > tr > td > .ant-table-wrapper:only-child .ant-table-tbody > tr:last-child > td, .ant-table-tbody > tr > td > .ant-table-expanded-row-fixed > .ant-table-wrapper:only-child .ant-table-tbody > tr:last-child > td {border-bottom: 0;} +.ant-table-tbody > tr > td > .ant-table-wrapper:only-child .ant-table-tbody > tr:last-child > td:first-child, .ant-table-tbody > tr > td > .ant-table-expanded-row-fixed > .ant-table-wrapper:only-child .ant-table-tbody > tr:last-child > td:first-child, .ant-table-tbody > tr > td > .ant-table-wrapper:only-child .ant-table-tbody > tr:last-child > td:last-child, .ant-table-tbody > tr > td > .ant-table-expanded-row-fixed > .ant-table-wrapper:only-child .ant-table-tbody > tr:last-child > td:last-child {border-radius: 0;} +.ant-table-tbody > tr.ant-table-row:hover > td, .ant-table-tbody > tr > td.ant-table-cell-row-hover {background: @table-row-hover-bg;} +.ant-table-tbody > tr.ant-table-row-selected > td {background: color(~`colorPalette("@{primary-color}", 1)`);border-color: rgba(0, 0, 0, 0.03);} +.ant-table-tbody > tr.ant-table-row-selected:hover > td {background: darken(@table-selected-row-bg, 2%);} +.ant-table-summary {background: @component-background;} +div.ant-table-summary {box-shadow: 0 -1px 0 @border-color-split;} +.ant-table-summary > tr > th, .ant-table-summary > tr > td {border-bottom: 1px solid @border-color-split;} +.ant-table-thead th.ant-table-column-has-sorters:hover {background: @table-header-sort-active-bg;} +.ant-table-thead th.ant-table-column-has-sorters:hover::before {background-color: transparent !important;} +.ant-table-thead th.ant-table-column-has-sorters:focus-visible {color: @primary-color;} +.ant-table-thead th.ant-table-column-has-sorters.ant-table-cell-fix-left:hover, .ant-table-thead th.ant-table-column-has-sorters.ant-table-cell-fix-right:hover {background: @table-fixed-header-sort-active-bg;} +.ant-table-thead th.ant-table-column-sort {background: @table-header-sort-bg;} +.ant-table-thead th.ant-table-column-sort::before {background-color: transparent !important;} +td.ant-table-column-sort {background: @table-body-sort-bg;} +.ant-table-column-sorter {color: #bfbfbf;} +.ant-table-column-sorter-up.active, .ant-table-column-sorter-down.active {color: @primary-color;} +.ant-table-column-sorters:hover .ant-table-column-sorter {color: #a6a6a6;} +.ant-table-filter-trigger {color: #bfbfbf;border-radius: 2px;} +.ant-table-filter-trigger:hover {color: @text-color-secondary;background: @table-header-filter-active-bg;} +.ant-table-filter-trigger.active {color: @primary-color;} +.ant-table-filter-dropdown {color: @text-color;background-color: @table-filter-dropdown-bg;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);} +.ant-table-filter-dropdown .ant-dropdown-menu {border: 0;box-shadow: none;} +.ant-table-filter-dropdown .ant-dropdown-menu:empty::after {color: @disabled-color;} +.ant-table-filter-dropdown-tree .ant-tree-treenode .ant-tree-node-content-wrapper:hover {background-color: @item-hover-bg;} +.ant-table-filter-dropdown-tree .ant-tree-treenode-checkbox-checked .ant-tree-node-content-wrapper, .ant-table-filter-dropdown-tree .ant-tree-treenode-checkbox-checked .ant-tree-node-content-wrapper:hover {background-color: color(~`colorPalette("@{primary-color}", 2)`);} +.ant-table-filter-dropdown-search {border-bottom: 1px @border-color-split solid;} +.ant-table-filter-dropdown-search-input .anticon {color: @disabled-color;} +.ant-table-filter-dropdown-btns {background-color: inherit;border-top: 1px solid @border-color-split;} +table tr th.ant-table-selection-column::after {background-color: transparent !important;} +.ant-table-selection-extra .anticon {color: #bfbfbf;} +.ant-table-selection-extra .anticon:hover {color: #a6a6a6;} +.ant-table-row-expand-icon {color: @link-color;color: inherit;background: @table-expand-icon-bg;border: 1px solid @border-color-split;border-radius: 2px;} +.ant-table-row-expand-icon:focus, .ant-table-row-expand-icon:hover {color: @link-hover-color;} +.ant-table-row-expand-icon:active {color: @link-active-color;} +.ant-table-row-expand-icon:focus, .ant-table-row-expand-icon:hover, .ant-table-row-expand-icon:active {border-color: currentcolor;} +.ant-table-row-expand-icon::before, .ant-table-row-expand-icon::after {background: currentcolor;} +.ant-table-row-expand-icon-spaced {background: transparent;border: 0;} +tr.ant-table-expanded-row > td, +tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;} +.ant-table-empty .ant-table-tbody > tr.ant-table-placeholder {color: @disabled-color;} +.ant-table-tbody > tr.ant-table-placeholder:hover > td {background: @component-background;} +.ant-table-cell-fix-left, .ant-table-cell-fix-right {background: @component-background;} +.ant-table-ping-left:not(.ant-table-has-fix-left) .ant-table-container::before {box-shadow: inset 10px 0 8px -8px darken(@shadow-color, 5%);} +.ant-table-ping-left .ant-table-cell-fix-left-first::after, .ant-table-ping-left .ant-table-cell-fix-left-last::after {box-shadow: inset 10px 0 8px -8px darken(@shadow-color, 5%);} +.ant-table-ping-left .ant-table-cell-fix-left-last::before {background-color: transparent !important;} +.ant-table-ping-right:not(.ant-table-has-fix-right) .ant-table-container::after {box-shadow: inset -10px 0 8px -8px darken(@shadow-color, 5%);} +.ant-table-ping-right .ant-table-cell-fix-right-first::after, .ant-table-ping-right .ant-table-cell-fix-right-last::after {box-shadow: inset -10px 0 8px -8px darken(@shadow-color, 5%);} +.ant-table-sticky-holder {background: @component-background;} +.ant-table-sticky-scroll {background: lighten(@table-border-color, 80%);border-top: 1px solid @border-color-split;} +.ant-table-sticky-scroll-bar {background-color: rgba(0, 0, 0, 0.35);border-radius: 4px;} +.ant-table-sticky-scroll-bar:hover {background-color: fade(@table-sticky-scroll-bar-bg, 80%);} +.ant-table-sticky-scroll-bar-active {background-color: fade(@table-sticky-scroll-bar-bg, 80%);} +.ant-table-title {border-radius: 2px 2px 0 0;} +.ant-table-title + .ant-table-container {border-top-left-radius: 0;border-top-right-radius: 0;} +.ant-table-title + .ant-table-container table > thead > tr:first-child th:first-child {border-radius: 0;} +.ant-table-title + .ant-table-container table > thead > tr:first-child th:last-child {border-radius: 0;} +.ant-table-container {border-top-left-radius: 2px;border-top-right-radius: 2px;} +.ant-table-container table > thead > tr:first-child th:first-child {border-top-left-radius: 2px;} +.ant-table-container table > thead > tr:first-child th:last-child {border-top-right-radius: 2px;} +.ant-table-footer {border-radius: 0 0 2px 2px;} +.ant-tabs-top > .ant-tabs-nav::before, .ant-tabs-bottom > .ant-tabs-nav::before, .ant-tabs-top > div > .ant-tabs-nav::before, .ant-tabs-bottom > div > .ant-tabs-nav::before {border-bottom: 1px solid @border-color-split;} +.ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-wrap::before, .ant-tabs-bottom > .ant-tabs-nav .ant-tabs-nav-wrap::before, .ant-tabs-top > div > .ant-tabs-nav .ant-tabs-nav-wrap::before, .ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-nav-wrap::before {box-shadow: inset 10px 0 8px -8px fade(@shadow-color, 8%);} +.ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-wrap::after, .ant-tabs-bottom > .ant-tabs-nav .ant-tabs-nav-wrap::after, .ant-tabs-top > div > .ant-tabs-nav .ant-tabs-nav-wrap::after, .ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-nav-wrap::after {box-shadow: inset -10px 0 8px -8px fade(@shadow-color, 8%);} +.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap::before, .ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap::before, .ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap::before, .ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap::before {box-shadow: inset 0 10px 8px -8px fade(@shadow-color, 8%);} +.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap::after, .ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap::after, .ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap::after, .ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap::after {box-shadow: inset 0 -10px 8px -8px fade(@shadow-color, 8%);} +.ant-tabs-left > .ant-tabs-content-holder, .ant-tabs-left > div > .ant-tabs-content-holder {border-left: 1px solid @border-color-split;} +.ant-tabs-right > .ant-tabs-content-holder, .ant-tabs-right > div > .ant-tabs-content-holder {border-right: 1px solid @border-color-split;} +.ant-tabs-dropdown {color: @text-color;} +.ant-tabs-dropdown-menu {background-color: @dropdown-menu-bg;background-clip: padding-box;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);} +.ant-tabs-dropdown-menu-item {color: @text-color;} +.ant-tabs-dropdown-menu-item-remove {color: @text-color-secondary;background: transparent;border: 0;} +.ant-tabs-dropdown-menu-item-remove:hover {color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-tabs-dropdown-menu-item:hover {background: @item-hover-bg;} +.ant-tabs-dropdown-menu-item-disabled, .ant-tabs-dropdown-menu-item-disabled:hover {color: @disabled-color;background: transparent;} +.ant-tabs-card > .ant-tabs-nav .ant-tabs-tab, .ant-tabs-card > div > .ant-tabs-nav .ant-tabs-tab {background: @background-color-light;border: 1px solid @border-color-split;} +.ant-tabs-card > .ant-tabs-nav .ant-tabs-tab-active, .ant-tabs-card > div > .ant-tabs-nav .ant-tabs-tab-active {color: @primary-color;background: @component-background;} +.ant-tabs-card.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab, .ant-tabs-card.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-tab {border-radius: 2px 2px 0 0;} +.ant-tabs-card.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab-active, .ant-tabs-card.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-tab-active {border-bottom-color: @component-background;} +.ant-tabs-card.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-tab, .ant-tabs-card.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-tab {border-radius: 0 0 2px 2px;} +.ant-tabs-card.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-tab-active, .ant-tabs-card.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-tab-active {border-top-color: @component-background;} +.ant-tabs-card.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab, .ant-tabs-card.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-tab {border-radius: 2px 0 0 2px;} +.ant-tabs-card.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab-active, .ant-tabs-card.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-tab-active {border-right-color: @component-background;} +.ant-tabs-card.ant-tabs-right > .ant-tabs-nav .ant-tabs-tab, .ant-tabs-card.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-tab {border-radius: 0 2px 2px 0;} +.ant-tabs-card.ant-tabs-right > .ant-tabs-nav .ant-tabs-tab-active, .ant-tabs-card.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-tab-active {border-left-color: @component-background;} +.ant-tabs {color: @text-color;} +.ant-tabs > .ant-tabs-nav .ant-tabs-nav-more, .ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-more {background: transparent;border: 0;} +.ant-tabs > .ant-tabs-nav .ant-tabs-nav-add, .ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-add {background: @background-color-light;border: 1px solid @border-color-split;border-radius: 2px 2px 0 0;} +.ant-tabs > .ant-tabs-nav .ant-tabs-nav-add:hover, .ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-add:hover {color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-tabs > .ant-tabs-nav .ant-tabs-nav-add:active, .ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-add:active, .ant-tabs > .ant-tabs-nav .ant-tabs-nav-add:focus, .ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-add:focus {color: color(~`colorPalette("@{primary-color}", 7)`);} +.ant-tabs-ink-bar {background: @primary-color;} +.ant-tabs-tab {background: transparent;border: 0;} +.ant-tabs-tab-btn:focus, .ant-tabs-tab-remove:focus, .ant-tabs-tab-btn:active, .ant-tabs-tab-remove:active {color: color(~`colorPalette("@{primary-color}", 7)`);} +.ant-tabs-tab-remove {color: @text-color-secondary;background: transparent;border: none;} +.ant-tabs-tab-remove:hover {color: @heading-color;} +.ant-tabs-tab:hover {color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn {color: @primary-color;} +.ant-tabs-tab.ant-tabs-tab-disabled {color: @disabled-color;} +.ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-btn:focus, .ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-remove:focus, .ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-btn:active, .ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-remove:active {color: @disabled-color;} +.ant-tag {color: @text-color;background: @background-color-light;border: 1px solid @border-color-base;border-radius: 2px;} +.ant-tag, .ant-tag a, .ant-tag a:hover {color: @text-color;} +.ant-tag-close-icon {color: @text-color-secondary;} +.ant-tag-close-icon:hover {color: @heading-color;} +.ant-tag-has-color {border-color: transparent;} +.ant-tag-has-color, .ant-tag-has-color a, .ant-tag-has-color a:hover, .ant-tag-has-color .anticon-close, .ant-tag-has-color .anticon-close:hover {color: #fff;} +.ant-tag-checkable {background-color: transparent;border-color: transparent;} +.ant-tag-checkable:not(.ant-tag-checkable-checked):hover {color: @primary-color;} +.ant-tag-checkable:active, .ant-tag-checkable-checked {color: #fff;} +.ant-tag-checkable-checked {background-color: @primary-color;} +.ant-tag-checkable:active {background-color: color(~`colorPalette("@{primary-color}", 7)`);} +.ant-tag-pink {color: #c41d7f;background: color(~`colorPalette("@{progress-steps-item-bg}", 1)`);border-color: #ffadd2;} +.ant-tag-pink-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;} +.ant-tag-magenta {color: #c41d7f;background: color(~`colorPalette("@{progress-steps-item-bg}", 1)`);border-color: #ffadd2;} +.ant-tag-magenta-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;} +.ant-tag-red {color: #cf1322;background: #fff1f0;border-color: #ffa39e;} +.ant-tag-red-inverse {color: #fff;background: #f5222d;border-color: #f5222d;} +.ant-tag-volcano {color: #d4380d;background: #fff2e8;border-color: #ffbb96;} +.ant-tag-volcano-inverse {color: #fff;background: #fa541c;border-color: #fa541c;} +.ant-tag-orange {color: #d46b08;background: color(~`colorPalette("@{pagination-item-bg}", 1)`);border-color: #ffd591;} +.ant-tag-orange-inverse {color: #fff;background: #fa8c16;border-color: #fa8c16;} +.ant-tag-yellow {color: #d4b106;background: #feffe6;border-color: #fffb8f;} +.ant-tag-yellow-inverse {color: #fff;background: #fadb14;border-color: #fadb14;} +.ant-tag-gold {color: #d48806;background: #fffbe6;border-color: #ffe58f;} +.ant-tag-gold-inverse {color: #fff;background: #faad14;border-color: #faad14;} +.ant-tag-cyan {color: #08979c;background: #e6fffb;border-color: #87e8de;} +.ant-tag-cyan-inverse {color: #fff;background: #13c2c2;border-color: #13c2c2;} +.ant-tag-lime {color: #7cb305;background: #fcffe6;border-color: #eaff8f;} +.ant-tag-lime-inverse {color: #fff;background: #a0d911;border-color: #a0d911;} +.ant-tag-green {color: #389e0d;background: #f6ffed;border-color: #b7eb8f;} +.ant-tag-green-inverse {color: #fff;background: #52c41a;border-color: #52c41a;} +.ant-tag-blue {color: #096dd9;background: #e6f7ff;border-color: #91d5ff;} +.ant-tag-blue-inverse {color: #fff;background: #1890ff;border-color: #1890ff;} +.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{layout-header-shadow}", 1)`);border-color: #adc6ff;} +.ant-tag-geekblue-inverse {color: #fff;background: #2f54eb;border-color: #2f54eb;} +.ant-tag-purple {color: #531dab;background: color(~`colorPalette("@{switch-bg}", 1)`);border-color: #d3adf7;} +.ant-tag-purple-inverse {color: #fff;background: #722ed1;border-color: #722ed1;} +.ant-tag-success {color: #52c41a;background: @success-color-deprecated-bg;border-color: @success-color-deprecated-border;} +.ant-tag-processing {color: @primary-color;background: @info-color-deprecated-bg;border-color: @info-color-deprecated-border;} +.ant-tag-error {color: #ff4d4f;background: @error-color-deprecated-bg;border-color: @error-color-deprecated-border;} +.ant-tag-warning {color: #faad14;background: @warning-color-deprecated-bg;border-color: @warning-color-deprecated-border;} +.ant-timeline {color: @text-color;} +.ant-timeline-item-tail {border-left: 2px solid @timeline-color;} +.ant-timeline-item-pending .ant-timeline-item-head {background-color: transparent;} +.ant-timeline-item-head {background-color: @component-background;border: 2px solid transparent;border-radius: 100px;} +.ant-timeline-item-head-blue {color: @primary-color;border-color: @primary-color;} +.ant-timeline-item-head-red {color: #ff4d4f;border-color: #ff4d4f;} +.ant-timeline-item-head-green {color: #52c41a;border-color: #52c41a;} +.ant-timeline-item-head-gray {color: @disabled-color;border-color: @disabled-color;} +.ant-timeline-item-head-custom {border: 0;border-radius: 0;} +.ant-timeline.ant-timeline-pending .ant-timeline-item-last .ant-timeline-item-tail {border-left: 2px dotted @timeline-color;} +.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-tail {border-left: 2px dotted @timeline-color;} +.ant-timeline-rtl .ant-timeline-item-tail {border-right: 2px solid @timeline-color;border-left: none;} +.ant-timeline-rtl.ant-timeline.ant-timeline-pending .ant-timeline-item-last .ant-timeline-item-tail {border-right: 2px dotted @timeline-color;border-left: none;} +.ant-timeline-rtl.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-tail {border-right: 2px dotted @timeline-color;border-left: none;} +.ant-tooltip {color: @text-color;} +.ant-tooltip-inner {color: #fff;background-color: @tooltip-bg;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);} +.ant-tooltip-arrow {background: transparent;} +.ant-tooltip-arrow-content {--antd-arrow-background-color: linear-gradient(to right bottom, fadeout(@tooltip-bg, 10%), @tooltip-bg);background-color: transparent;border-radius: 0 0 2px;} +.ant-tooltip-arrow-content::before {background: var(--antd-arrow-background-color);background-repeat: no-repeat;background-position: -10px -10px;} +.ant-tooltip-placement-top .ant-tooltip-arrow-content, .ant-tooltip-placement-topLeft .ant-tooltip-arrow-content, .ant-tooltip-placement-topRight .ant-tooltip-arrow-content {box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);} +.ant-tooltip-placement-right .ant-tooltip-arrow-content, .ant-tooltip-placement-rightTop .ant-tooltip-arrow-content, .ant-tooltip-placement-rightBottom .ant-tooltip-arrow-content {box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07);} +.ant-tooltip-placement-left .ant-tooltip-arrow-content, .ant-tooltip-placement-leftTop .ant-tooltip-arrow-content, .ant-tooltip-placement-leftBottom .ant-tooltip-arrow-content {box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07);} +.ant-tooltip-placement-bottom .ant-tooltip-arrow-content, .ant-tooltip-placement-bottomLeft .ant-tooltip-arrow-content, .ant-tooltip-placement-bottomRight .ant-tooltip-arrow-content {box-shadow: -3px -3px 7px rgba(0, 0, 0, 0.07);} +.ant-tooltip-pink .ant-tooltip-inner {background-color: #eb2f96;} +.ant-tooltip-pink .ant-tooltip-arrow-content::before {background: #eb2f96;} +.ant-tooltip-magenta .ant-tooltip-inner {background-color: #eb2f96;} +.ant-tooltip-magenta .ant-tooltip-arrow-content::before {background: #eb2f96;} +.ant-tooltip-red .ant-tooltip-inner {background-color: #f5222d;} +.ant-tooltip-red .ant-tooltip-arrow-content::before {background: #f5222d;} +.ant-tooltip-volcano .ant-tooltip-inner {background-color: #fa541c;} +.ant-tooltip-volcano .ant-tooltip-arrow-content::before {background: #fa541c;} +.ant-tooltip-orange .ant-tooltip-inner {background-color: #fa8c16;} +.ant-tooltip-orange .ant-tooltip-arrow-content::before {background: #fa8c16;} +.ant-tooltip-yellow .ant-tooltip-inner {background-color: #fadb14;} +.ant-tooltip-yellow .ant-tooltip-arrow-content::before {background: #fadb14;} +.ant-tooltip-gold .ant-tooltip-inner {background-color: #faad14;} +.ant-tooltip-gold .ant-tooltip-arrow-content::before {background: #faad14;} +.ant-tooltip-cyan .ant-tooltip-inner {background-color: #13c2c2;} +.ant-tooltip-cyan .ant-tooltip-arrow-content::before {background: #13c2c2;} +.ant-tooltip-lime .ant-tooltip-inner {background-color: #a0d911;} +.ant-tooltip-lime .ant-tooltip-arrow-content::before {background: #a0d911;} +.ant-tooltip-green .ant-tooltip-inner {background-color: #52c41a;} +.ant-tooltip-green .ant-tooltip-arrow-content::before {background: #52c41a;} +.ant-tooltip-blue .ant-tooltip-inner {background-color: #1890ff;} +.ant-tooltip-blue .ant-tooltip-arrow-content::before {background: #1890ff;} +.ant-tooltip-geekblue .ant-tooltip-inner {background-color: #2f54eb;} +.ant-tooltip-geekblue .ant-tooltip-arrow-content::before {background: #2f54eb;} +.ant-tooltip-purple .ant-tooltip-inner {background-color: #722ed1;} +.ant-tooltip-purple .ant-tooltip-arrow-content::before {background: #722ed1;} +.ant-transfer-customize-list .ant-table-wrapper .ant-table-small {border: 0;border-radius: 0;} +.ant-transfer-customize-list .ant-table-wrapper .ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th {background: @table-header-bg;} +.ant-transfer-customize-list .ant-table-wrapper .ant-table-small > .ant-table-content .ant-table-row:last-child td {border-bottom: 1px solid @border-color-split;} +.ant-transfer-customize-list .ant-input[disabled] {background-color: transparent;} +.ant-transfer-status-error .ant-transfer-list {border-color: #ff4d4f;} +.ant-transfer-status-error .ant-transfer-list-search:not([disabled]) {border-color: @border-color-base;} +.ant-transfer-status-error .ant-transfer-list-search:not([disabled]):hover {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} +.ant-input-rtl .ant-transfer-status-error .ant-transfer-list-search:not([disabled]):hover {border-right-width: 0;border-left-width: 1px !important;} +.ant-transfer-status-error .ant-transfer-list-search:not([disabled]):focus {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);border-right-width: 1px;} +.ant-input-rtl .ant-transfer-status-error .ant-transfer-list-search:not([disabled]):focus {border-right-width: 0;border-left-width: 1px !important;} +.ant-transfer-status-warning .ant-transfer-list {border-color: #faad14;} +.ant-transfer-status-warning .ant-transfer-list-search:not([disabled]) {border-color: @border-color-base;} +.ant-transfer-status-warning .ant-transfer-list-search:not([disabled]):hover {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} +.ant-input-rtl .ant-transfer-status-warning .ant-transfer-list-search:not([disabled]):hover {border-right-width: 0;border-left-width: 1px !important;} +.ant-transfer-status-warning .ant-transfer-list-search:not([disabled]):focus {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);border-right-width: 1px;} +.ant-input-rtl .ant-transfer-status-warning .ant-transfer-list-search:not([disabled]):focus {border-right-width: 0;border-left-width: 1px !important;} +.ant-transfer {color: @text-color;} +.ant-transfer-disabled .ant-transfer-list {background: @disabled-bg;} +.ant-transfer-list {border: 1px solid @border-color-base;border-radius: 2px;} +.ant-transfer-list-search .anticon-search {color: @disabled-color;} +.ant-transfer-list-header {color: @text-color;background: @component-background;border-bottom: 1px solid @border-color-split;border-radius: 2px 2px 0 0;} +.ant-transfer-list-content-item-remove {color: @link-color;color: @border-color-base;} +.ant-transfer-list-content-item-remove:focus, .ant-transfer-list-content-item-remove:hover {color: @link-hover-color;} +.ant-transfer-list-content-item-remove:active {color: @link-active-color;} +.ant-transfer-list-content-item-remove:hover {color: @link-hover-color;} +.ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover {background-color: @transfer-item-hover-bg;} +.ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled).ant-transfer-list-content-item-checked:hover {background-color: darken(@item-active-bg, 2%);} +.ant-transfer-list-content-show-remove .ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover {background: transparent;} +.ant-transfer-list-content-item-checked {background-color: @item-active-bg;} +.ant-transfer-list-content-item-disabled {color: @disabled-color;} +.ant-transfer-list-pagination {border-top: 1px solid @border-color-split;} +.ant-transfer-list-body-not-found {color: @disabled-color;} +.ant-transfer-list-footer {border-top: 1px solid @border-color-split;} +.ant-tree.ant-tree-directory .ant-tree-treenode:hover::before {background: @item-hover-bg;} +.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper {border-radius: 0;} +.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper:hover {background: transparent;} +.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper.ant-tree-node-selected {color: #fff;background: transparent;} +.ant-tree.ant-tree-directory .ant-tree-treenode-selected:hover::before, .ant-tree.ant-tree-directory .ant-tree-treenode-selected::before {background: @primary-color;} +.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-switcher {color: #fff;} +.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-node-content-wrapper {color: #fff;background: transparent;} +.ant-tree-checkbox {color: @text-color;} +.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner, .ant-tree-checkbox:hover .ant-tree-checkbox-inner, .ant-tree-checkbox-input:focus + .ant-tree-checkbox-inner {border-color: @primary-color;} +.ant-tree-checkbox-checked::after {border: 1px solid @primary-color;border-radius: 2px;animation-fill-mode: backwards;} +.ant-tree-checkbox-inner {background-color: @checkbox-check-bg;border: 1px solid @border-color-base;border-radius: 2px;border-collapse: separate;} +.ant-tree-checkbox-inner::after {border: 2px solid #fff;border-top: 0;border-left: 0;} +.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after {border: 2px solid #fff;border-top: 0;border-left: 0;} +.ant-tree-checkbox-checked .ant-tree-checkbox-inner {background-color: @primary-color;border-color: @primary-color;} +.ant-tree-checkbox-disabled.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after {border-color: @disabled-color;} +.ant-tree-checkbox-disabled .ant-tree-checkbox-inner {background-color: @disabled-bg;border-color: @border-color-base !important;} +.ant-tree-checkbox-disabled .ant-tree-checkbox-inner::after {border-color: @disabled-bg;border-collapse: separate;} +.ant-tree-checkbox-disabled + span {color: @disabled-color;} +.ant-tree-checkbox-wrapper {color: @text-color;} +.ant-tree-checkbox-group {color: @text-color;} +.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner {background-color: @checkbox-check-bg;border-color: @border-color-base;} +.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner::after {background-color: @primary-color;border: 0;} +.ant-tree-checkbox-indeterminate.ant-tree-checkbox-disabled .ant-tree-checkbox-inner::after {background-color: @disabled-color;border-color: @disabled-color;} +.ant-tree {color: @text-color;background: @tree-bg;border-radius: 2px;} +.ant-tree-focused:not(:hover):not(.ant-tree-active-focused) {background: color(~`colorPalette("@{primary-color}", 1)`);} +.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-treenode.dragging::after {border: 1px solid @primary-color;animation-fill-mode: forwards;} +.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper {color: @disabled-color;} +.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper:hover {background: transparent;} +.ant-tree .ant-tree-treenode-active .ant-tree-node-content-wrapper {background: @item-hover-bg;} +.ant-tree .ant-tree-treenode:not(.ant-tree .ant-tree-treenode-disabled).filter-node .ant-tree-title {color: inherit;} +.ant-tree-switcher-loading-icon {color: @primary-color;} +.ant-tree-switcher-leaf-line::before {border-right: 1px solid #d9d9d9;} +.ant-tree-switcher-leaf-line::after {border-bottom: 1px solid #d9d9d9;} +.ant-tree .ant-tree-node-content-wrapper {color: inherit;background: transparent;border-radius: 2px;} +.ant-tree .ant-tree-node-content-wrapper:hover {background-color: @item-hover-bg;} +.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected {background-color: color(~`colorPalette("@{primary-color}", 2)`);} +.ant-tree-unselectable .ant-tree-node-content-wrapper:hover {background-color: transparent;} +.ant-tree-node-content-wrapper .ant-tree-drop-indicator {background-color: @primary-color;border-radius: 1px;} +.ant-tree-node-content-wrapper .ant-tree-drop-indicator::after {background-color: transparent;border: 2px solid @primary-color;border-radius: 50%;} +.ant-tree .ant-tree-treenode.drop-container > [draggable] {box-shadow: 0 0 0 2px @primary-color;} +.ant-tree-show-line .ant-tree-indent-unit::before {border-right: 1px solid @border-color-base;} +.ant-tree-show-line .ant-tree-switcher {background: @component-background;} +.ant-tree-rtl.ant-tree-show-line .ant-tree-indent-unit::before {border-right: none;border-left: 1px solid @border-color-base;} +.ant-select-tree-checkbox {color: @text-color;} +.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-inner, .ant-select-tree-checkbox:hover .ant-select-tree-checkbox-inner, .ant-select-tree-checkbox-input:focus + .ant-select-tree-checkbox-inner {border-color: @primary-color;} +.ant-select-tree-checkbox-checked::after {border: 1px solid @primary-color;border-radius: 2px;animation-fill-mode: backwards;} +.ant-select-tree-checkbox-inner {background-color: @checkbox-check-bg;border: 1px solid @border-color-base;border-radius: 2px;border-collapse: separate;} +.ant-select-tree-checkbox-inner::after {border: 2px solid #fff;border-top: 0;border-left: 0;} +.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner::after {border: 2px solid #fff;border-top: 0;border-left: 0;} +.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner {background-color: @primary-color;border-color: @primary-color;} +.ant-select-tree-checkbox-disabled.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner::after {border-color: @disabled-color;} +.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner {background-color: @disabled-bg;border-color: @border-color-base !important;} +.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner::after {border-color: @disabled-bg;border-collapse: separate;} +.ant-select-tree-checkbox-disabled + span {color: @disabled-color;} +.ant-select-tree-checkbox-wrapper {color: @text-color;} +.ant-select-tree-checkbox-group {color: @text-color;} +.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner {background-color: @checkbox-check-bg;border-color: @border-color-base;} +.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner::after {background-color: @primary-color;border: 0;} +.ant-select-tree-checkbox-indeterminate.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner::after {background-color: @disabled-color;border-color: @disabled-color;} +.ant-tree-select-dropdown .ant-select-tree {border-radius: 0;} +.ant-select-tree {color: @text-color;background: @tree-bg;border-radius: 2px;} +.ant-select-tree-focused:not(:hover):not(.ant-select-tree-active-focused) {background: color(~`colorPalette("@{primary-color}", 1)`);} +.ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner .ant-select-tree-treenode.dragging::after {border: 1px solid @primary-color;animation-fill-mode: forwards;} +.ant-select-tree .ant-select-tree-treenode-disabled .ant-select-tree-node-content-wrapper {color: @disabled-color;} +.ant-select-tree .ant-select-tree-treenode-disabled .ant-select-tree-node-content-wrapper:hover {background: transparent;} +.ant-select-tree .ant-select-tree-treenode-active .ant-select-tree-node-content-wrapper {background: @item-hover-bg;} +.ant-select-tree .ant-select-tree-treenode:not(.ant-select-tree .ant-select-tree-treenode-disabled).filter-node .ant-select-tree-title {color: inherit;} +.ant-select-tree-switcher-loading-icon {color: @primary-color;} +.ant-select-tree-switcher-leaf-line::before {border-right: 1px solid #d9d9d9;} +.ant-select-tree-switcher-leaf-line::after {border-bottom: 1px solid #d9d9d9;} +.ant-select-tree .ant-select-tree-node-content-wrapper {color: inherit;background: transparent;border-radius: 2px;} +.ant-select-tree .ant-select-tree-node-content-wrapper:hover {background-color: @item-hover-bg;} +.ant-select-tree .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected {background-color: color(~`colorPalette("@{primary-color}", 2)`);} +.ant-select-tree-unselectable .ant-select-tree-node-content-wrapper:hover {background-color: transparent;} +.ant-select-tree-node-content-wrapper .ant-tree-drop-indicator {background-color: @primary-color;border-radius: 1px;} +.ant-select-tree-node-content-wrapper .ant-tree-drop-indicator::after {background-color: transparent;border: 2px solid @primary-color;border-radius: 50%;} +.ant-select-tree .ant-select-tree-treenode.drop-container > [draggable] {box-shadow: 0 0 0 2px @primary-color;} +.ant-select-tree-show-line .ant-select-tree-indent-unit::before {border-right: 1px solid @border-color-base;} +.ant-select-tree-show-line .ant-select-tree-switcher {background: @component-background;} +.ant-typography {color: @text-color;} +.ant-typography.ant-typography-secondary {color: @text-color-secondary;} +.ant-typography.ant-typography-success {color: #52c41a;} +.ant-typography.ant-typography-warning {color: #faad14;} +.ant-typography.ant-typography-danger {color: #ff4d4f;} +a.ant-typography.ant-typography-danger:active, +a.ant-typography.ant-typography-danger:focus {color: #d9363e;} +a.ant-typography.ant-typography-danger:hover {color: #ff7875;} +.ant-typography.ant-typography-disabled {color: @disabled-color;} +h1.ant-typography, +div.ant-typography-h1, +div.ant-typography-h1 > textarea, .ant-typography h1 {color: @heading-color;} +h2.ant-typography, +div.ant-typography-h2, +div.ant-typography-h2 > textarea, .ant-typography h2 {color: @heading-color;} +h3.ant-typography, +div.ant-typography-h3, +div.ant-typography-h3 > textarea, .ant-typography h3 {color: @heading-color;} +h4.ant-typography, +div.ant-typography-h4, +div.ant-typography-h4 > textarea, .ant-typography h4 {color: @heading-color;} +h5.ant-typography, +div.ant-typography-h5, +div.ant-typography-h5 > textarea, .ant-typography h5 {color: @heading-color;} +a.ant-typography, .ant-typography a {color: @link-color;} +a.ant-typography:focus, .ant-typography a:focus, +a.ant-typography:hover, .ant-typography a:hover {color: @link-hover-color;} +a.ant-typography:active, .ant-typography a:active {color: @link-active-color;} +a.ant-typography[disabled], .ant-typography a[disabled], +a.ant-typography.ant-typography-disabled, .ant-typography a.ant-typography-disabled {color: @disabled-color;} +a.ant-typography[disabled]:active, .ant-typography a[disabled]:active, +a.ant-typography.ant-typography-disabled:active, .ant-typography a.ant-typography-disabled:active, +a.ant-typography[disabled]:hover, .ant-typography a[disabled]:hover, +a.ant-typography.ant-typography-disabled:hover, .ant-typography a.ant-typography-disabled:hover {color: @disabled-color;} +.ant-typography code {background: rgba(150, 150, 150, 0.1);border: 1px solid rgba(100, 100, 100, 0.2);border-radius: 3px;} +.ant-typography kbd {background: rgba(150, 150, 150, 0.06);border: 1px solid rgba(100, 100, 100, 0.2);border-bottom-width: 2px;border-radius: 3px;} +.ant-typography mark {background-color: #ffe58f;} +.ant-typography-expand, .ant-typography-edit, .ant-typography-copy {color: @link-color;} +.ant-typography-expand:focus, .ant-typography-edit:focus, .ant-typography-copy:focus, .ant-typography-expand:hover, .ant-typography-edit:hover, .ant-typography-copy:hover {color: @link-hover-color;} +.ant-typography-expand:active, .ant-typography-edit:active, .ant-typography-copy:active {color: @link-active-color;} +.ant-typography-copy-success, .ant-typography-copy-success:hover, .ant-typography-copy-success:focus {color: #52c41a;} +.ant-typography-edit-content-confirm {color: @text-color-secondary;} +.ant-typography pre {background: rgba(150, 150, 150, 0.1);border: 1px solid rgba(100, 100, 100, 0.2);border-radius: 3px;} +.ant-typography pre code {background: transparent;border: 0;} +.ant-typography blockquote {border-left: 4px solid rgba(100, 100, 100, 0.2);} +.ant-upload {color: @text-color;} +.ant-upload.ant-upload-select-picture-card {background-color: @background-color-light;border: 1px dashed @border-color-base;border-radius: 2px;} +.ant-upload.ant-upload-select-picture-card:hover {border-color: @primary-color;} +.ant-upload-disabled.ant-upload.ant-upload-select-picture-card:hover {border-color: @border-color-base;} +.ant-upload.ant-upload-drag {background: @background-color-light;border: 1px dashed @border-color-base;border-radius: 2px;} +.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled) {border-color: color(~`colorPalette("@{primary-color}", 7)`);} +.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover {border-color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon {color: color(~`colorPalette("@{primary-color}", 5)`);} +.ant-upload.ant-upload-drag p.ant-upload-text {color: @heading-color;} +.ant-upload.ant-upload-drag p.ant-upload-hint {color: @text-color-secondary;} +.ant-upload.ant-upload-drag .anticon-plus {color: @disabled-color;} +.ant-upload.ant-upload-drag .anticon-plus:hover {color: @text-color-secondary;} +.ant-upload.ant-upload-drag:hover .anticon-plus {color: @text-color-secondary;} +.ant-upload-list {color: @text-color;} +.ant-upload-list-item-card-actions .anticon {color: @text-color-secondary;} +.ant-upload-list-item-card-actions:hover .anticon {color: @text-color;} +.ant-upload-list-item-info .anticon-loading .anticon, .ant-upload-list-item-info .ant-upload-text-icon .anticon {color: @text-color-secondary;} +.ant-upload-list-item:hover .ant-upload-list-item-info {background-color: @item-hover-bg;} +.ant-upload-list-item-error, .ant-upload-list-item-error .ant-upload-text-icon > .anticon, .ant-upload-list-item-error .ant-upload-list-item-name {color: #ff4d4f;} +.ant-upload-list-item-error .ant-upload-list-item-card-actions .anticon {color: #ff4d4f;} +.ant-upload-list-picture .ant-upload-list-item, .ant-upload-list-picture-card .ant-upload-list-item {border: 1px solid @border-color-base;border-radius: 2px;} +.ant-upload-list-picture .ant-upload-list-item:hover, .ant-upload-list-picture-card .ant-upload-list-item:hover {background: transparent;} +.ant-upload-list-picture .ant-upload-list-item-error, .ant-upload-list-picture-card .ant-upload-list-item-error {border-color: #ff4d4f;} +.ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info, .ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info {background: transparent;} +.ant-upload-list-picture .ant-upload-list-item-uploading, .ant-upload-list-picture-card .ant-upload-list-item-uploading {border-style: dashed;} +.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'] {fill: @error-color-deprecated-bg;} +.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'] {fill: #ff4d4f;} +.ant-upload-list-picture-card .ant-upload-list-item-info::before {background-color: rgba(0, 0, 0, 0.5);} +.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete {color: rgba(255, 255, 255, 0.85);} +.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye:hover, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download:hover, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete:hover {color: #fff;} +.ant-upload-list-picture-card .ant-upload-list-item-uploading.ant-upload-list-item {background-color: @background-color-light;} +.ant-upload-list .ant-upload-animate-inline-appear, .ant-upload-list .ant-upload-animate-inline-enter, .ant-upload-list .ant-upload-animate-inline-leave {animation-fill-mode: cubic-bezier(0.78, 0.14, 0.15, 0.86);} +mark {background-color: @mark-background-color;} +.text-primary {color: @primary-color;} +.content-wrapper {background: @layout-body-background;} +.ant-layout-sider-trigger {border-top: 1px solid @shadow-color;} +.ant-layout-sider {box-shadow: @layout-slder-shadow;} +.ant-pro-form-query-filter {background-color: @component-background;} +.ant-pro-table-search {background-color: @component-background;} +.wrapper-background {background-color: @component-background;} +.ant-tabs-nav {background-color: @component-background;} +.header {box-shadow: @layout-header-shadow;} +.layout-content-breadcrumb {background: @layout-breadcrum-background;} +.layout-content-box {background: @layout-body-background;} +.row-dragging {background: @layout-body-background;border: 1px solid @border-color-base;} +.overviewHeaderBorderTop {background: @layout-body-background;border-top: 1px #f0f0f0 solid;} +.device-monitor .title-alarm {color: #ff4d4f;} +.device-monitor .title-normal {color: #52c41a;} +.sensorDataTitle {border-left: 4px @btn-primary-bg solid;} +.sensorDataTitle .bodyNum {color: @btn-primary-bg;} +.sensorDataTitle .ant-btn {border: 1px @btn-primary-bg solid;border-radius: 2px;color: @btn-primary-bg;} +.realTimeMonitoringStatusTitle {border-left: 4px @btn-primary-bg solid;} +.realTimeMonitoringStatusTitle .bodyNum {color: @btn-primary-bg;} +.realTimeMonitoringStatusTitle .ant-btn {border: 1px @btn-primary-bg solid;border-radius: 2px;color: @btn-primary-bg;} +.gisBody {box-shadow: -2px 0px 5px 1px #E3E3E4, 0px -2px 5px 1px #E3E3E4, 2px 0px 5px 1px #E3E3E4, 0px 2px 5px 1px #E3E3E4;} +.singleProjectOverViewHeaderBorderTop {background: @layout-content-background;border-top: 1px @layout-body-background solid;} +.singleProjectOverViewHeaderBorderTop .ant-tabs-content {background-color: @layout-body-background;} +.singleProjectOverViewHeaderBorderTop .ant-tabs-content .content {background-color: @layout-content-background;} +.singleProjectOverViewHeaderBorderTop .ant-tabs-content .content .contentBody .structName .ant-btn {border: 1px @btn-primary-bg solid;border-radius: 2px;color: @btn-primary-bg;} +.singleProjectOverViewHeaderBorderTop .ant-tabs-content .content .contentBody .structImg img {border-radius: 5px;} +.singleProjectOverViewHeaderBorderTop .ant-tabs-content .content .contentBody .basicInfo {border-left: 4px @btn-primary-bg solid;} +.singleProjectOverViewHeaderBorderTop .ant-tabs-content .content .contentBody .infoDesc {border-left: 1px solid;border-top: 1px solid;border-right: 1px solid;border-color: @border-color-base;} +.singleProjectOverViewHeaderBorderTop .ant-tabs-content .content .contentBody .infoDesc .cell .cellName {background-color: @layout-body-background;border-right: 1px solid;border-color: @border-color-base;} +.singleProjectOverViewHeaderBorderTop .ant-tabs-content .content .contentBody .infoDesc .cell:nth-child(3n-2) {border-bottom: 1px solid;border-right: 1px solid;border-color: @border-color-base;} +.singleProjectOverViewHeaderBorderTop .ant-tabs-content .content .contentBody .infoDesc .cell:nth-child(3n-1) {border-bottom: 1px solid;border-right: 1px solid;border-color: @border-color-base;} +.singleProjectOverViewHeaderBorderTop .ant-tabs-content .content .contentBody .infoDesc .cell:nth-child(3n) {border-bottom: 1px solid;border-color: @border-color-base;} +.form-require::before {color: @form-require-color;} +.monitor-header-title {color: rgba(0, 0, 0, 0.85);border-left: 4px solid @primary-color;} +.bezierEasingMixin() { +@functions: ~`(function() {var NEWTON_ITERATIONS = 4;var NEWTON_MIN_SLOPE = 0.001;var SUBDIVISION_PRECISION = 0.0000001;var SUBDIVISION_MAX_ITERATIONS = 10;var kSplineTableSize = 11;var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);var float32ArraySupported = typeof Float32Array === 'function';function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; } + function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; } + function C (aA1) { return 3.0 * aA1; } + function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; } + function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); } + function binarySubdivide (aX, aA, aB, mX1, mX2) {var currentX, currentT, i = 0;do {currentT = aA + (aB - aA) / 2.0;currentX = calcBezier(currentT, mX1, mX2) - aX;if (currentX > 0.0) {aB = currentT;} else {aA = currentT;} + } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);return currentT;} + function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {for (var i = 0; i < NEWTON_ITERATIONS; ++i) {var currentSlope = getSlope(aGuessT, mX1, mX2);if (currentSlope === 0.0) {return aGuessT;} + var currentX = calcBezier(aGuessT, mX1, mX2) - aX;aGuessT -= currentX / currentSlope;} + return aGuessT;} + var BezierEasing = function (mX1, mY1, mX2, mY2) {if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {throw new Error('bezier x values must be in [0, 1] range');} + var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);if (mX1 !== mY1 || mX2 !== mY2) {for (var i = 0; i < kSplineTableSize; ++i) {sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);} + } + function getTForX (aX) {var intervalStart = 0.0;var currentSample = 1;var lastSample = kSplineTableSize - 1;for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {intervalStart += kSampleStepSize;} + --currentSample;var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);var guessForT = intervalStart + dist * kSampleStepSize;var initialSlope = getSlope(guessForT, mX1, mX2);if (initialSlope >= NEWTON_MIN_SLOPE) {return newtonRaphsonIterate(aX, guessForT, mX1, mX2);} else if (initialSlope === 0.0) {return guessForT;} else {return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);} + } + return function BezierEasing (x) {if (mX1 === mY1 && mX2 === mY2) {return x; + } + if (x === 0) {return 0;} + if (x === 1) {return 1;} + return calcBezier(getTForX(x), mY1, mY2);};};this.colorEasing = BezierEasing(0.26, 0.09, 0.37, 0.18);return '';})()`;} +.bezierEasingMixin(); +.tinyColorMixin() { +@functions: ~`(function() { +var trimLeft = /^\s+/, + trimRight = /\s+$/, + tinyCounter = 0, + mathRound = Math.round, + mathMin = Math.min, + mathMax = Math.max, + mathRandom = Math.random; +function tinycolor (color, opts) {color = (color) ? color : '';opts = opts || { };if (color instanceof tinycolor) {return color;} + if (!(this instanceof tinycolor)) {return new tinycolor(color, opts);} + var rgb = inputToRGB(color);this._originalInput = color, + this._r = rgb.r, + this._g = rgb.g, + this._b = rgb.b, + this._a = rgb.a, + this._roundA = mathRound(100*this._a) / 100, + this._format = opts.format || rgb.format;this._gradientType = opts.gradientType;if (this._r < 1) { this._r = mathRound(this._r); } + if (this._g < 1) { this._g = mathRound(this._g); } + if (this._b < 1) { this._b = mathRound(this._b); } + this._ok = rgb.ok;this._tc_id = tinyCounter++;} +tinycolor.prototype = {isDark: function() {return this.getBrightness() < 128;}, + isLight: function() {return !this.isDark();}, + isValid: function() {return this._ok;}, + getOriginalInput: function() {return this._originalInput;}, + getFormat: function() {return this._format;}, + getAlpha: function() {return this._a;}, + getBrightness: function() {var rgb = this.toRgb();return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;}, + getLuminance: function() {var rgb = this.toRgb();var RsRGB, GsRGB, BsRGB, R, G, B;RsRGB = rgb.r/255;GsRGB = rgb.g/255;BsRGB = rgb.b/255;if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);} + if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);} + if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);} + return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);}, + setAlpha: function(value) {this._a = boundAlpha(value);this._roundA = mathRound(100*this._a) / 100;return this;}, + toHsv: function() {var hsv = rgbToHsv(this._r, this._g, this._b);return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };}, + toHsvString: function() {var hsv = rgbToHsv(this._r, this._g, this._b);var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);return (this._a == 1) ? + "hsv(" + h + ", " + s + "%, " + v + "%)" : + "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")";}, + toHsl: function() {var hsl = rgbToHsl(this._r, this._g, this._b);return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };}, + toHslString: function() {var hsl = rgbToHsl(this._r, this._g, this._b);var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);return (this._a == 1) ? + "hsl(" + h + ", " + s + "%, " + l + "%)" : + "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")";}, + toHex: function(allow3Char) {return rgbToHex(this._r, this._g, this._b, allow3Char);}, + toHexString: function(allow3Char) {return '#' + this.toHex(allow3Char);}, + toHex8: function(allow4Char) {return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);}, + toHex8String: function(allow4Char) {return '#' + this.toHex8(allow4Char);}, + toRgb: function() {return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };}, + toRgbString: function() {return (this._a == 1) ? + "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" : + "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")";}, + toPercentageRgb: function() {return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a };}, + toPercentageRgbString: function() {return (this._a == 1) ? + "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" : + "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")";}, + toName: function() {if (this._a === 0) {return "transparent";} + if (this._a < 1) {return false;} + return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;}, + toFilter: function(secondColor) {var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);var secondHex8String = hex8String;var gradientType = this._gradientType ? "GradientType = 1, " : "";if (secondColor) {var s = tinycolor(secondColor);secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);} + return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")";}, + toString: function(format) {var formatSet = !!format;format = format || this._format;var formattedString = false;var hasAlpha = this._a < 1 && this._a >= 0;var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name");if (needsAlphaFormat) {if (format === "name" && this._a === 0) {return this.toName();} + return this.toRgbString();} + if (format === "rgb") {formattedString = this.toRgbString();} + if (format === "prgb") {formattedString = this.toPercentageRgbString();} + if (format === "hex" || format === "hex6") {formattedString = this.toHexString();} + if (format === "hex3") {formattedString = this.toHexString(true);} + if (format === "hex4") {formattedString = this.toHex8String(true);} + if (format === "hex8") {formattedString = this.toHex8String();} + if (format === "name") {formattedString = this.toName();} + if (format === "hsl") {formattedString = this.toHslString();} + if (format === "hsv") {formattedString = this.toHsvString();} + return formattedString || this.toHexString();}, + clone: function() {return tinycolor(this.toString());}, + _applyModification: function(fn, args) {var color = fn.apply(null, [this].concat([].slice.call(args)));this._r = color._r;this._g = color._g;this._b = color._b;this.setAlpha(color._a);return this;}, + lighten: function() {return this._applyModification(lighten, arguments);}, + brighten: function() {return this._applyModification(brighten, arguments);}, + darken: function() {return this._applyModification(darken, arguments);}, + desaturate: function() {return this._applyModification(desaturate, arguments);}, + saturate: function() {return this._applyModification(saturate, arguments);}, + greyscale: function() {return this._applyModification(greyscale, arguments);}, + spin: function() {return this._applyModification(spin, arguments);}, + _applyCombination: function(fn, args) {return fn.apply(null, [this].concat([].slice.call(args)));}, + analogous: function() {return this._applyCombination(analogous, arguments);}, + complement: function() {return this._applyCombination(complement, arguments);}, + monochromatic: function() {return this._applyCombination(monochromatic, arguments);}, + splitcomplement: function() {return this._applyCombination(splitcomplement, arguments);}, + triad: function() {return this._applyCombination(triad, arguments);}, + tetrad: function() {return this._applyCombination(tetrad, arguments);} +}; +tinycolor.fromRatio = function(color, opts) {if (typeof color == "object") {var newColor = {};for (var i in color) {if (color.hasOwnProperty(i)) {if (i === "a") {newColor[i] = color[i];} + else {newColor[i] = convertToPercentage(color[i]);} + } + } + color = newColor;} + return tinycolor(color, opts);}; +function inputToRGB(color) {var rgb = { r: 0, g: 0, b: 0 };var a = 1;var s = null;var v = null;var l = null;var ok = false;var format = false;if (typeof color == "string") {color = stringInputToObject(color);} + if (typeof color == "object") {if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {rgb = rgbToRgb(color.r, color.g, color.b);ok = true;format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb";} + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {s = convertToPercentage(color.s);v = convertToPercentage(color.v);rgb = hsvToRgb(color.h, s, v);ok = true;format = "hsv";} + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {s = convertToPercentage(color.s);l = convertToPercentage(color.l);rgb = hslToRgb(color.h, s, l);ok = true;format = "hsl";} + if (color.hasOwnProperty("a")) {a = color.a;} + } + a = boundAlpha(a);return {ok: ok, + format: color.format || format, + r: mathMin(255, mathMax(rgb.r, 0)), + g: mathMin(255, mathMax(rgb.g, 0)), + b: mathMin(255, mathMax(rgb.b, 0)), + a: a + };} +function rgbToRgb(r, g, b){return {r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + };} +function rgbToHsl(r, g, b) {r = bound01(r, 255);g = bound01(g, 255);b = bound01(b, 255);var max = mathMax(r, g, b), min = mathMin(r, g, b);var h, s, l = (max + min) / 2;if(max == min) {h = s = 0; + } + else {var d = max - min;s = l > 0.5 ? d / (2 - max - min) : d / (max + min);switch(max) {case r: h = (g - b) / d + (g < b ? 6 : 0); break;case g: h = (b - r) / d + 2; break;case b: h = (r - g) / d + 4; break;} + h /= 6;} + return { h: h, s: s, l: l };} +function hslToRgb(h, s, l) {var r, g, b;h = bound01(h, 360);s = bound01(s, 100);l = bound01(l, 100);function hue2rgb(p, q, t) {if(t < 0) t += 1;if(t > 1) t -= 1;if(t < 1/6) return p + (q - p) * 6 * t;if(t < 1/2) return q;if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;return p;} + if(s === 0) {r = g = b = l; + } + else {var q = l < 0.5 ? l * (1 + s) : l + s - l * s;var p = 2 * l - q;r = hue2rgb(p, q, h + 1/3);g = hue2rgb(p, q, h);b = hue2rgb(p, q, h - 1/3);} + return { r: r * 255, g: g * 255, b: b * 255 };} +function rgbToHsv(r, g, b) {r = bound01(r, 255);g = bound01(g, 255);b = bound01(b, 255);var max = mathMax(r, g, b), min = mathMin(r, g, b);var h, s, v = max;var d = max - min;s = max === 0 ? 0 : d / max;if(max == min) {h = 0; + } + else {switch(max) {case r: h = (g - b) / d + (g < b ? 6 : 0); break;case g: h = (b - r) / d + 2; break;case b: h = (r - g) / d + 4; break;} + h /= 6;} + return { h: h, s: s, v: v };} + function hsvToRgb(h, s, v) {h = bound01(h, 360) * 6;s = bound01(s, 100);v = bound01(v, 100);var i = Math.floor(h), + f = h - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s), + mod = i % 6, + r = [v, q, p, p, t, v][mod], + g = [t, v, v, q, p, p][mod], + b = [p, p, t, v, v, q][mod];return { r: r * 255, g: g * 255, b: b * 255 };} +function rgbToHex(r, g, b, allow3Char) {var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ];if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);} + return hex.join("");} +function rgbaToHex(r, g, b, a, allow4Char) {var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)), + pad2(convertDecimalToHex(a)) + ];if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);} + return hex.join("");} +function rgbaToArgbHex(r, g, b, a) {var hex = [ + pad2(convertDecimalToHex(a)), + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ];return hex.join("");} +tinycolor.equals = function (color1, color2) {if (!color1 || !color2) { return false; } + return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();}; +tinycolor.random = function() {return tinycolor.fromRatio({r: mathRandom(), + g: mathRandom(), + b: mathRandom() + });}; +function desaturate(color, amount) {amount = (amount === 0) ? 0 : (amount || 10);var hsl = tinycolor(color).toHsl();hsl.s -= amount / 100;hsl.s = clamp01(hsl.s);return tinycolor(hsl);} +function saturate(color, amount) {amount = (amount === 0) ? 0 : (amount || 10);var hsl = tinycolor(color).toHsl();hsl.s += amount / 100;hsl.s = clamp01(hsl.s);return tinycolor(hsl);} +function greyscale(color) {return tinycolor(color).desaturate(100);} +function lighten (color, amount) {amount = (amount === 0) ? 0 : (amount || 10);var hsl = tinycolor(color).toHsl();hsl.l += amount / 100;hsl.l = clamp01(hsl.l);return tinycolor(hsl);} +function brighten(color, amount) {amount = (amount === 0) ? 0 : (amount || 10);var rgb = tinycolor(color).toRgb();rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));return tinycolor(rgb);} +function darken (color, amount) {amount = (amount === 0) ? 0 : (amount || 10);var hsl = tinycolor(color).toHsl();hsl.l -= amount / 100;hsl.l = clamp01(hsl.l);return tinycolor(hsl);} +function spin(color, amount) {var hsl = tinycolor(color).toHsl();var hue = (hsl.h + amount) % 360;hsl.h = hue < 0 ? 360 + hue : hue;return tinycolor(hsl);} +function complement(color) {var hsl = tinycolor(color).toHsl();hsl.h = (hsl.h + 180) % 360;return tinycolor(hsl);} +function triad(color) {var hsl = tinycolor(color).toHsl();var h = hsl.h;return [ + tinycolor(color), + tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) + ];} +function tetrad(color) {var hsl = tinycolor(color).toHsl();var h = hsl.h;return [ + tinycolor(color), + tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) + ];} +function splitcomplement(color) {var hsl = tinycolor(color).toHsl();var h = hsl.h;return [ + tinycolor(color), + tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), + tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) + ];} +function analogous(color, results, slices) {results = results || 6;slices = slices || 30;var hsl = tinycolor(color).toHsl();var part = 360 / slices;var ret = [tinycolor(color)];for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {hsl.h = (hsl.h + part) % 360;ret.push(tinycolor(hsl));} + return ret;} +function monochromatic(color, results) {results = results || 6;var hsv = tinycolor(color).toHsv();var h = hsv.h, s = hsv.s, v = hsv.v;var ret = [];var modification = 1 / results;while (results--) {ret.push(tinycolor({ h: h, s: s, v: v}));v = (v + modification) % 1;} + return ret;} +tinycolor.mix = function(color1, color2, amount) {amount = (amount === 0) ? 0 : (amount || 50);var rgb1 = tinycolor(color1).toRgb();var rgb2 = tinycolor(color2).toRgb();var p = amount / 100;var rgba = {r: ((rgb2.r - rgb1.r) * p) + rgb1.r, + g: ((rgb2.g - rgb1.g) * p) + rgb1.g, + b: ((rgb2.b - rgb1.b) * p) + rgb1.b, + a: ((rgb2.a - rgb1.a) * p) + rgb1.a + };return tinycolor(rgba);}; +tinycolor.readability = function(color1, color2) {var c1 = tinycolor(color1);var c2 = tinycolor(color2);return (Math.max(c1.getLuminance(),c2.getLuminance())+0.05) / (Math.min(c1.getLuminance(),c2.getLuminance())+0.05);}; +tinycolor.isReadable = function(color1, color2, wcag2) {var readability = tinycolor.readability(color1, color2);var wcag2Parms, out;out = false;wcag2Parms = validateWCAG2Parms(wcag2);switch (wcag2Parms.level + wcag2Parms.size) {case "AAsmall": + case "AAAlarge": + out = readability >= 4.5;break;case "AAlarge": + out = readability >= 3;break;case "AAAsmall": + out = readability >= 7;break;} + return out;}; +tinycolor.mostReadable = function(baseColor, colorList, args) {var bestColor = null;var bestScore = 0;var readability;var includeFallbackColors, level, size ;args = args || {};includeFallbackColors = args.includeFallbackColors ;level = args.level;size = args.size;for (var i= 0; i < colorList.length ; i++) {readability = tinycolor.readability(baseColor, colorList[i]);if (readability > bestScore) {bestScore = readability;bestColor = tinycolor(colorList[i]);} + } + if (tinycolor.isReadable(baseColor, bestColor, {"level":level,"size":size}) || !includeFallbackColors) {return bestColor;} + else {args.includeFallbackColors=false;return tinycolor.mostReadable(baseColor,["#fff", "#000"],args);} +}; +var names = tinycolor.names = {aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "0ff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000", + blanchedalmond: "ffebcd", + blue: "00f", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + burntsienna: "ea7e5d", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "0ff", + 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: "f0f", + 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: "789", + lightslategrey: "789", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "0f0", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "f0f", + 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", + rebeccapurple: "663399", + red: "f00", + 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: "fff", + whitesmoke: "f5f5f5", + yellow: "ff0", + yellowgreen: "9acd32" +}; +var hexNames = tinycolor.hexNames = flip(names); +function flip(o) {var flipped = { };for (var i in o) {if (o.hasOwnProperty(i)) {flipped[o[i]] = i;} + } + return flipped;} +function boundAlpha(a) {a = parseFloat(a);if (isNaN(a) || a < 0 || a > 1) {a = 1;} + return a;} +function bound01(n, max) {if (isOnePointZero(n)) { n = "100%"; } + var processPercent = isPercentage(n);n = mathMin(max, mathMax(0, parseFloat(n)));if (processPercent) {n = parseInt(n * max, 10) / 100;} + if ((Math.abs(n - max) < 0.000001)) {return 1;} + return (n % max) / parseFloat(max);} +function clamp01(val) {return mathMin(1, mathMax(0, val));} +function parseIntFromHex(val) {return parseInt(val, 16);} +function isOnePointZero(n) {return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1;} +function isPercentage(n) {return typeof n === "string" && n.indexOf('%') != -1;} +function pad2(c) {return c.length == 1 ? '0' + c : '' + c;} +function convertToPercentage(n) {if (n <= 1) {n = (n * 100) + "%";} + return n;} +function convertDecimalToHex(d) {return Math.round(parseFloat(d) * 255).toString(16);} +function convertHexToDecimal(h) {return (parseIntFromHex(h) / 255);} +var matchers = (function() {var CSS_INTEGER = "[-\\+]?\\d+%?";var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?";var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")";var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?";var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?";return {CSS_UNIT: new RegExp(CSS_UNIT), + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), + hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + };})(); +function isValidCSSUnit(color) {return !!matchers.CSS_UNIT.exec(color);} +function stringInputToObject(color) {color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase();var named = false;if (names[color]) {color = names[color];named = true;} + else if (color == 'transparent') {return { r: 0, g: 0, b: 0, a: 0, format: "name" };} + var match;if ((match = matchers.rgb.exec(color))) {return { r: match[1], g: match[2], b: match[3] };} + if ((match = matchers.rgba.exec(color))) {return { r: match[1], g: match[2], b: match[3], a: match[4] };} + if ((match = matchers.hsl.exec(color))) {return { h: match[1], s: match[2], l: match[3] };} + if ((match = matchers.hsla.exec(color))) {return { h: match[1], s: match[2], l: match[3], a: match[4] };} + if ((match = matchers.hsv.exec(color))) {return { h: match[1], s: match[2], v: match[3] };} + if ((match = matchers.hsva.exec(color))) {return { h: match[1], s: match[2], v: match[3], a: match[4] };} + if ((match = matchers.hex8.exec(color))) {return {r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + a: convertHexToDecimal(match[4]), + format: named ? "name" : "hex8" + };} + if ((match = matchers.hex6.exec(color))) {return {r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + format: named ? "name" : "hex" + };} + if ((match = matchers.hex4.exec(color))) {return {r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + a: convertHexToDecimal(match[4] + '' + match[4]), + format: named ? "name" : "hex8" + };} + if ((match = matchers.hex3.exec(color))) {return {r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + format: named ? "name" : "hex" + };} + return false;} +function validateWCAG2Parms(parms) {var level, size;parms = parms || {"level":"AA", "size":"small"};level = (parms.level || "AA").toUpperCase();size = (parms.size || "small").toLowerCase();if (level !== "AA" && level !== "AAA") {level = "AA";} + if (size !== "small" && size !== "large") {size = "small";} + return {"level":level, "size":size};} +this.tinycolor = tinycolor;})()`;} +.tinyColorMixin(); +.colorPaletteMixin() { +@functions: ~`(function() {var hueStep = 2;var saturationStep = 0.16;var saturationStep2 = 0.05;var brightnessStep1 = 0.05;var brightnessStep2 = 0.15;var lightColorCount = 5;var darkColorCount = 4;var getHue = function(hsv, i, isLight) {var hue;if (hsv.h >= 60 && hsv.h <= 240) {hue = isLight ? hsv.h - hueStep * i : hsv.h + hueStep * i;} else {hue = isLight ? hsv.h + hueStep * i : hsv.h - hueStep * i;} + if (hue < 0) {hue += 360;} else if (hue >= 360) {hue -= 360;} + return Math.round(hue);};var getSaturation = function(hsv, i, isLight) {var saturation;if (isLight) {saturation = hsv.s - saturationStep * i;} else if (i === darkColorCount) {saturation = hsv.s + saturationStep;} else {saturation = hsv.s + saturationStep2 * i;} + if (saturation > 1) {saturation = 1;} + if (isLight && i === lightColorCount && saturation > 0.1) {saturation = 0.1;} + if (saturation < 0.06) {saturation = 0.06;} + return Number(saturation.toFixed(2));};var getValue = function(hsv, i, isLight) {var value;if (isLight) {value = hsv.v + brightnessStep1 * i;}else{value = hsv.v - brightnessStep2 * i + } + if (value > 1) {value = 1;} + return Number(value.toFixed(2)) + };this.colorPalette = function(color, index) {var isLight = index <= 6;var hsv = tinycolor(color).toHsv();var i = isLight ? lightColorCount + 1 - index : index - lightColorCount - 1;return tinycolor({h: getHue(hsv, i, isLight), + s: getSaturation(hsv, i, isLight), + v: getValue(hsv, i, isLight), + }).toHexString();};})()`;} +.colorPaletteMixin(); +@blue-base: #1890ff; +@blue-1: color(~`colorPalette('@{blue-6}', 1) `); +@blue-2: color(~`colorPalette('@{blue-6}', 2) `); +@blue-3: color(~`colorPalette('@{blue-6}', 3) `); +@blue-4: color(~`colorPalette('@{blue-6}', 4) `); +@blue-5: color(~`colorPalette('@{blue-6}', 5) `); +@blue-6: @blue-base; +@blue-7: color(~`colorPalette('@{blue-6}', 7) `); +@blue-8: color(~`colorPalette('@{blue-6}', 8) `); +@blue-9: color(~`colorPalette('@{blue-6}', 9) `); +@blue-10: color(~`colorPalette('@{blue-6}', 10) `); +@purple-base: #722ed1; +@purple-1: color(~`colorPalette('@{purple-6}', 1) `); +@purple-2: color(~`colorPalette('@{purple-6}', 2) `); +@purple-3: color(~`colorPalette('@{purple-6}', 3) `); +@purple-4: color(~`colorPalette('@{purple-6}', 4) `); +@purple-5: color(~`colorPalette('@{purple-6}', 5) `); +@purple-6: @purple-base; +@purple-7: color(~`colorPalette('@{purple-6}', 7) `); +@purple-8: color(~`colorPalette('@{purple-6}', 8) `); +@purple-9: color(~`colorPalette('@{purple-6}', 9) `); +@purple-10: color(~`colorPalette('@{purple-6}', 10) `); +@cyan-base: #13c2c2; +@cyan-1: color(~`colorPalette('@{cyan-6}', 1) `); +@cyan-2: color(~`colorPalette('@{cyan-6}', 2) `); +@cyan-3: color(~`colorPalette('@{cyan-6}', 3) `); +@cyan-4: color(~`colorPalette('@{cyan-6}', 4) `); +@cyan-5: color(~`colorPalette('@{cyan-6}', 5) `); +@cyan-6: @cyan-base; +@cyan-7: color(~`colorPalette('@{cyan-6}', 7) `); +@cyan-8: color(~`colorPalette('@{cyan-6}', 8) `); +@cyan-9: color(~`colorPalette('@{cyan-6}', 9) `); +@cyan-10: color(~`colorPalette('@{cyan-6}', 10) `); +@green-base: #52c41a; +@green-1: color(~`colorPalette('@{green-6}', 1) `); +@green-2: color(~`colorPalette('@{green-6}', 2) `); +@green-3: color(~`colorPalette('@{green-6}', 3) `); +@green-4: color(~`colorPalette('@{green-6}', 4) `); +@green-5: color(~`colorPalette('@{green-6}', 5) `); +@green-6: @green-base; +@green-7: color(~`colorPalette('@{green-6}', 7) `); +@green-8: color(~`colorPalette('@{green-6}', 8) `); +@green-9: color(~`colorPalette('@{green-6}', 9) `); +@green-10: color(~`colorPalette('@{green-6}', 10) `); +@magenta-base: #eb2f96; +@magenta-1: color(~`colorPalette('@{magenta-6}', 1) `); +@magenta-2: color(~`colorPalette('@{magenta-6}', 2) `); +@magenta-3: color(~`colorPalette('@{magenta-6}', 3) `); +@magenta-4: color(~`colorPalette('@{magenta-6}', 4) `); +@magenta-5: color(~`colorPalette('@{magenta-6}', 5) `); +@magenta-6: @magenta-base; +@magenta-7: color(~`colorPalette('@{magenta-6}', 7) `); +@magenta-8: color(~`colorPalette('@{magenta-6}', 8) `); +@magenta-9: color(~`colorPalette('@{magenta-6}', 9) `); +@magenta-10: color(~`colorPalette('@{magenta-6}', 10) `); +@pink-base: #eb2f96; +@pink-1: color(~`colorPalette('@{pink-6}', 1) `); +@pink-2: color(~`colorPalette('@{pink-6}', 2) `); +@pink-3: color(~`colorPalette('@{pink-6}', 3) `); +@pink-4: color(~`colorPalette('@{pink-6}', 4) `); +@pink-5: color(~`colorPalette('@{pink-6}', 5) `); +@pink-6: @pink-base; +@pink-7: color(~`colorPalette('@{pink-6}', 7) `); +@pink-8: color(~`colorPalette('@{pink-6}', 8) `); +@pink-9: color(~`colorPalette('@{pink-6}', 9) `); +@pink-10: color(~`colorPalette('@{pink-6}', 10) `); +@red-base: #f5222d; +@red-1: color(~`colorPalette('@{red-6}', 1) `); +@red-2: color(~`colorPalette('@{red-6}', 2) `); +@red-3: color(~`colorPalette('@{red-6}', 3) `); +@red-4: color(~`colorPalette('@{red-6}', 4) `); +@red-5: color(~`colorPalette('@{red-6}', 5) `); +@red-6: @red-base; +@red-7: color(~`colorPalette('@{red-6}', 7) `); +@red-8: color(~`colorPalette('@{red-6}', 8) `); +@red-9: color(~`colorPalette('@{red-6}', 9) `); +@red-10: color(~`colorPalette('@{red-6}', 10) `); +@orange-base: #fa8c16; +@orange-1: color(~`colorPalette('@{orange-6}', 1) `); +@orange-2: color(~`colorPalette('@{orange-6}', 2) `); +@orange-3: color(~`colorPalette('@{orange-6}', 3) `); +@orange-4: color(~`colorPalette('@{orange-6}', 4) `); +@orange-5: color(~`colorPalette('@{orange-6}', 5) `); +@orange-6: @orange-base; +@orange-7: color(~`colorPalette('@{orange-6}', 7) `); +@orange-8: color(~`colorPalette('@{orange-6}', 8) `); +@orange-9: color(~`colorPalette('@{orange-6}', 9) `); +@orange-10: color(~`colorPalette('@{orange-6}', 10) `); +@yellow-base: #fadb14; +@yellow-1: color(~`colorPalette('@{yellow-6}', 1) `); +@yellow-2: color(~`colorPalette('@{yellow-6}', 2) `); +@yellow-3: color(~`colorPalette('@{yellow-6}', 3) `); +@yellow-4: color(~`colorPalette('@{yellow-6}', 4) `); +@yellow-5: color(~`colorPalette('@{yellow-6}', 5) `); +@yellow-6: @yellow-base; +@yellow-7: color(~`colorPalette('@{yellow-6}', 7) `); +@yellow-8: color(~`colorPalette('@{yellow-6}', 8) `); +@yellow-9: color(~`colorPalette('@{yellow-6}', 9) `); +@yellow-10: color(~`colorPalette('@{yellow-6}', 10) `); +@volcano-base: #fa541c; +@volcano-1: color(~`colorPalette('@{volcano-6}', 1) `); +@volcano-2: color(~`colorPalette('@{volcano-6}', 2) `); +@volcano-3: color(~`colorPalette('@{volcano-6}', 3) `); +@volcano-4: color(~`colorPalette('@{volcano-6}', 4) `); +@volcano-5: color(~`colorPalette('@{volcano-6}', 5) `); +@volcano-6: @volcano-base; +@volcano-7: color(~`colorPalette('@{volcano-6}', 7) `); +@volcano-8: color(~`colorPalette('@{volcano-6}', 8) `); +@volcano-9: color(~`colorPalette('@{volcano-6}', 9) `); +@volcano-10: color(~`colorPalette('@{volcano-6}', 10) `); +@geekblue-base: #2f54eb; +@geekblue-1: color(~`colorPalette('@{geekblue-6}', 1) `); +@geekblue-2: color(~`colorPalette('@{geekblue-6}', 2) `); +@geekblue-3: color(~`colorPalette('@{geekblue-6}', 3) `); +@geekblue-4: color(~`colorPalette('@{geekblue-6}', 4) `); +@geekblue-5: color(~`colorPalette('@{geekblue-6}', 5) `); +@geekblue-6: @geekblue-base; +@geekblue-7: color(~`colorPalette('@{geekblue-6}', 7) `); +@geekblue-8: color(~`colorPalette('@{geekblue-6}', 8) `); +@geekblue-9: color(~`colorPalette('@{geekblue-6}', 9) `); +@geekblue-10: color(~`colorPalette('@{geekblue-6}', 10) `); +@lime-base: #a0d911; +@lime-1: color(~`colorPalette('@{lime-6}', 1) `); +@lime-2: color(~`colorPalette('@{lime-6}', 2) `); +@lime-3: color(~`colorPalette('@{lime-6}', 3) `); +@lime-4: color(~`colorPalette('@{lime-6}', 4) `); +@lime-5: color(~`colorPalette('@{lime-6}', 5) `); +@lime-6: @lime-base; +@lime-7: color(~`colorPalette('@{lime-6}', 7) `); +@lime-8: color(~`colorPalette('@{lime-6}', 8) `); +@lime-9: color(~`colorPalette('@{lime-6}', 9) `); +@lime-10: color(~`colorPalette('@{lime-6}', 10) `); +@gold-base: #faad14; +@gold-1: color(~`colorPalette('@{gold-6}', 1) `); +@gold-2: color(~`colorPalette('@{gold-6}', 2) `); +@gold-3: color(~`colorPalette('@{gold-6}', 3) `); +@gold-4: color(~`colorPalette('@{gold-6}', 4) `); +@gold-5: color(~`colorPalette('@{gold-6}', 5) `); +@gold-6: @gold-base; +@gold-7: color(~`colorPalette('@{gold-6}', 7) `); +@gold-8: color(~`colorPalette('@{gold-6}', 8) `); +@gold-9: color(~`colorPalette('@{gold-6}', 9) `); +@gold-10: color(~`colorPalette('@{gold-6}', 10) `); +@preset-colors: pink, magenta, red, volcano, orange, yellow, gold, cyan, lime, green, blue, geekblue, + purple; +@theme: default; +@ant-prefix: ant; +@html-selector: html; +@primary-color-hover: color(~`colorPalette('@{primary-color}', 5) `); +@primary-color-active: color(~`colorPalette('@{primary-color}', 7) `); +@primary-color-outline: fade(@primary-color, @outline-fade); +@info-color: @primary-color; +@success-color: @green-6; +@success-color-hover: color(~`colorPalette('@{success-color}', 5) `); +@success-color-active: color(~`colorPalette('@{success-color}', 7) `); +@success-color-outline: fade(@success-color, @outline-fade); +@warning-color: @gold-6; +@warning-color-hover: color(~`colorPalette('@{warning-color}', 5) `); +@warning-color-active: color(~`colorPalette('@{warning-color}', 7) `); +@warning-color-outline: fade(@warning-color, @outline-fade); +@error-color: @red-5; +@error-color-hover: color(~`colorPalette('@{error-color}', 5) `); +@error-color-active: color(~`colorPalette('@{error-color}', 7) `); +@error-color-outline: fade(@error-color, @outline-fade); +@highlight-color: @red-5; +@normal-color: #d9d9d9; +@white: #fff; +@black: #000; +@primary-1: color(~`colorPalette('@{primary-color}', 1) `); +@primary-2: color(~`colorPalette('@{primary-color}', 2) `); +@primary-3: color(~`colorPalette('@{primary-color}', 3) `); +@primary-4: color(~`colorPalette('@{primary-color}', 4) `); +@primary-5: color( + ~`colorPalette('@{primary-color}', 5) ` +); +@primary-6: @primary-color; +@primary-7: color(~`colorPalette('@{primary-color}', 7) `); +@primary-8: color(~`colorPalette('@{primary-color}', 8) `); +@primary-9: color(~`colorPalette('@{primary-color}', 9) `); +@primary-10: color(~`colorPalette('@{primary-color}', 10) `); +@popover-customize-border-color: @border-color-split; +@font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, + 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', + 'Noto Color Emoji'; +@code-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; +@text-color-inverse: @white; +@icon-color: inherit; +@text-color-dark: fade(@white, 85%); +@text-color-secondary-dark: fade(@white, 65%); +@text-selection-bg: @primary-color; +@font-variant-base: tabular-nums; +@font-feature-settings-base: 'tnum'; +@font-size-base: 14px; +@font-size-lg: @font-size-base + 2px; +@font-size-sm: 12px; +@heading-1-size: ceil(@font-size-base * 2.71); +@heading-2-size: ceil(@font-size-base * 2.14); +@heading-3-size: ceil(@font-size-base * 1.71); +@heading-4-size: ceil(@font-size-base * 1.42); +@heading-5-size: ceil(@font-size-base * 1.14); +@line-height-base: 1.5715; +@border-radius-base: 2px; +@border-radius-sm: @border-radius-base; +@control-border-radius: @border-radius-base; +@arrow-border-radius: 2px; +@padding-lg: 24px; +@padding-md: 16px; +@padding-sm: 12px; +@padding-xs: 8px; +@padding-xss: 4px; +@control-padding-horizontal: @padding-sm; +@control-padding-horizontal-sm: @padding-xs; +@margin-lg: 24px; +@margin-md: 16px; +@margin-sm: 12px; +@margin-xs: 8px; +@margin-xss: 4px; +@height-base: 32px; +@height-lg: 40px; +@height-sm: 24px; +@iconfont-css-prefix: anticon; +@link-decoration: none; +@link-hover-decoration: none; +@link-focus-decoration: none; +@link-focus-outline: 0; +@ease-base-out: cubic-bezier(0.7, 0.3, 0.1, 1); +@ease-base-in: cubic-bezier(0.9, 0, 0.3, 0.7); +@ease-out: cubic-bezier(0.215, 0.61, 0.355, 1); +@ease-in: cubic-bezier(0.55, 0.055, 0.675, 0.19); +@ease-in-out: cubic-bezier(0.645, 0.045, 0.355, 1); +@ease-out-back: cubic-bezier(0.12, 0.4, 0.29, 1.46); +@ease-in-back: cubic-bezier(0.71, -0.46, 0.88, 0.6); +@ease-in-out-back: cubic-bezier(0.71, -0.46, 0.29, 1.46); +@ease-out-circ: cubic-bezier(0.08, 0.82, 0.17, 1); +@ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.34); +@ease-in-out-circ: cubic-bezier(0.78, 0.14, 0.15, 0.86); +@ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1); +@ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06); +@ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1); +@border-color-inverse: @white; +@border-width-base: 1px; +@border-style-base: solid; +@outline-blur-size: 0; +@outline-width: 2px; +@outline-color: @primary-color; +@outline-fade: 20%; +@disabled-active-bg: tint(@black, 90%); +@box-shadow-base: @shadow-2; +@shadow-1-up: 0 -6px 16px -8px rgba(0, 0, 0, 0.08), 0 -9px 28px 0 rgba(0, 0, 0, 0.05), + 0 -12px 48px 16px rgba(0, 0, 0, 0.03); +@shadow-1-down: 0 6px 16px -8px rgba(0, 0, 0, 0.08), 0 9px 28px 0 rgba(0, 0, 0, 0.05), + 0 12px 48px 16px rgba(0, 0, 0, 0.03); +@shadow-1-left: -6px 0 16px -8px rgba(0, 0, 0, 0.08), -9px 0 28px 0 rgba(0, 0, 0, 0.05), + -12px 0 48px 16px rgba(0, 0, 0, 0.03); +@shadow-1-right: 6px 0 16px -8px rgba(0, 0, 0, 0.08), 9px 0 28px 0 rgba(0, 0, 0, 0.05), + 12px 0 48px 16px rgba(0, 0, 0, 0.03); +@shadow-2: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), + 0 9px 28px 8px rgba(0, 0, 0, 0.05); +@btn-font-weight: 400; +@btn-border-radius-base: @border-radius-base; +@btn-border-radius-sm: @border-radius-base; +@btn-border-width: @border-width-base; +@btn-border-style: @border-style-base; +@btn-primary-color: #fff; +@btn-default-color: @text-color; +@btn-default-border: @border-color-base; +@btn-danger-color: #fff; +@btn-danger-bg: @error-color; +@btn-danger-border: @error-color; +@btn-disable-color: @disabled-color; +@btn-disable-bg: @disabled-bg; +@btn-disable-border: @border-color-base; +@btn-default-ghost-bg: transparent; +@btn-font-size-lg: @font-size-lg; +@btn-font-size-sm: @font-size-base; +@btn-padding-horizontal-base: @padding-md - 1px; +@btn-padding-horizontal-lg: @btn-padding-horizontal-base; +@btn-padding-horizontal-sm: @padding-xs - 1px; +@btn-height-base: @height-base; +@btn-height-lg: @height-lg; +@btn-height-sm: @height-sm; +@btn-line-height: @line-height-base; +@btn-circle-size: @btn-height-base; +@btn-circle-size-lg: @btn-height-lg; +@btn-circle-size-sm: @btn-height-sm; +@btn-square-size: @btn-height-base; +@btn-square-size-lg: @btn-height-lg; +@btn-square-size-sm: @btn-height-sm; +@btn-square-only-icon-size: @font-size-base + 2px; +@btn-square-only-icon-size-sm: @font-size-base; +@btn-square-only-icon-size-lg: @btn-font-size-lg + 2px; +@btn-group-border: @primary-5; +@btn-link-hover-bg: transparent; +@checkbox-size: 16px; +@checkbox-color: @primary-color; +@checkbox-check-color: #fff; +@checkbox-border-width: @border-width-base; +@checkbox-border-radius: @border-radius-base; +@checkbox-group-item-margin-right: 8px; +@descriptions-title-margin-bottom: 20px; +@descriptions-default-padding: @padding-md @padding-lg; +@descriptions-middle-padding: @padding-sm @padding-lg; +@descriptions-small-padding: @padding-xs @padding-md; +@descriptions-item-padding-bottom: @padding-md; +@descriptions-item-trailing-colon: true; +@descriptions-item-label-colon-margin-right: 8px; +@descriptions-item-label-colon-margin-left: 2px; +@descriptions-extra-color: @text-color; +@divider-text-padding: 1em; +@divider-orientation-margin: 5%; +@divider-vertical-gutter: 8px; +@dropdown-selected-color: @primary-color; +@dropdown-selected-bg: @item-active-bg; +@empty-font-size: @font-size-base; +@radio-size: 16px; +@radio-top: 0.2em; +@radio-border-width: 1px; +@radio-dot-size: @radio-size - 8px; +@radio-dot-color: @primary-color; +@radio-button-bg: @btn-default-bg; +@radio-button-checked-bg: @btn-default-bg; +@radio-button-color: @btn-default-color; +@radio-button-hover-color: @primary-5; +@radio-button-active-color: @primary-7; +@radio-button-padding-horizontal: @padding-md - 1px; +@radio-wrapper-margin-right: 8px; +@screen-xs: 480px; +@screen-xs-min: @screen-xs; +@screen-sm: 576px; +@screen-sm-min: @screen-sm; +@screen-md: 768px; +@screen-md-min: @screen-md; +@screen-lg: 992px; +@screen-lg-min: @screen-lg; +@screen-xl: 1200px; +@screen-xl-min: @screen-xl; +@screen-xxl: 1600px; +@screen-xxl-min: @screen-xxl; +@screen-xs-max: (@screen-sm-min - 1px); +@screen-sm-max: (@screen-md-min - 1px); +@screen-md-max: (@screen-lg-min - 1px); +@screen-lg-max: (@screen-xl-min - 1px); +@screen-xl-max: (@screen-xxl-min - 1px); +@grid-columns: 24; +@layout-header-padding: 0 50px; +@layout-header-color: @text-color; +@layout-footer-padding: 24px 50px; +@layout-footer-background: @layout-body-background; +@layout-sider-background: @layout-header-background; +@layout-trigger-height: 48px; +@layout-trigger-color: #fff; +@layout-zero-trigger-width: 36px; +@layout-zero-trigger-height: 42px; +@layout-sider-background-light: #fff; +@layout-trigger-background-light: #fff; +@layout-trigger-color-light: @text-color; +@zindex-badge: auto; +@zindex-table-fixed: 2; +@zindex-affix: 10; +@zindex-back-top: 10; +@zindex-picker-panel: 10; +@zindex-popup-close: 10; +@zindex-modal: 1000; +@zindex-modal-mask: 1000; +@zindex-message: 1010; +@zindex-notification: 1010; +@zindex-popover: 1030; +@zindex-dropdown: 1050; +@zindex-picker: 1050; +@zindex-popoconfirm: 1060; +@zindex-tooltip: 1070; +@zindex-image: 1080; +@animation-duration-slow: 0.3s; +@animation-duration-base: 0.2s; +@animation-duration-fast: 0.1s; +@collapse-panel-border-radius: @border-radius-base; +@dropdown-vertical-padding: 5px; +@dropdown-edge-child-vertical-padding: 4px; +@dropdown-font-size: @font-size-base; +@dropdown-line-height: 22px; +@label-required-color: @highlight-color; +@label-color: @heading-color; +@form-warning-input-bg: @input-bg; +@form-item-margin-bottom: 24px; +@form-item-trailing-colon: true; +@form-vertical-label-padding: 0 0 8px; +@form-vertical-label-margin: 0; +@form-item-label-font-size: @font-size-base; +@form-item-label-height: @input-height-base; +@form-item-label-colon-margin-right: 8px; +@form-item-label-colon-margin-left: 2px; +@form-error-input-bg: @input-bg; +@input-height-base: @height-base; +@input-height-lg: @height-lg; +@input-height-sm: @height-sm; +@input-padding-horizontal: @control-padding-horizontal - 1px; +@input-padding-horizontal-base: @input-padding-horizontal; +@input-padding-horizontal-sm: @control-padding-horizontal-sm - 1px; +@input-padding-horizontal-lg: @input-padding-horizontal; +@input-padding-vertical-base: max( + (round(((@input-height-base - @font-size-base * @line-height-base) / 2) * 10) / 10) - + @border-width-base, + 3px +); +@input-padding-vertical-sm: max( + (round(((@input-height-sm - @font-size-base * @line-height-base) / 2) * 10) / 10) - + @border-width-base, + 0 +); +@input-padding-vertical-lg: ( + ceil(((@input-height-lg - @font-size-lg * @line-height-base) / 2) * 10) / 10 + ) - @border-width-base; +@input-color: @text-color; +@input-border-color: @border-color-base; +@input-number-hover-border-color: @input-hover-border-color; +@input-number-handler-hover-bg: @primary-5; +@input-number-handler-bg: @component-background; +@input-number-handler-border-color: @border-color-base; +@input-addon-bg: @background-color-light; +@input-hover-border-color: @primary-5; +@input-disabled-bg: @disabled-bg; +@input-outline-offset: 0 0; +@input-disabled-color: @disabled-color; +@mentions-dropdown-menu-item-hover-bg: @mentions-dropdown-bg; +@select-border-color: @border-color-base; +@select-item-selected-color: @text-color; +@select-item-selected-font-weight: 600; +@select-item-active-bg: @item-hover-bg; +@select-dropdown-vertical-padding: @dropdown-vertical-padding; +@select-dropdown-font-size: @dropdown-font-size; +@select-dropdown-line-height: @dropdown-line-height; +@select-dropdown-height: 32px; +@select-single-item-height-lg: 40px; +@select-multiple-item-height: @input-height-base - @input-padding-vertical-base * 2; +@select-multiple-item-height-lg: 32px; +@select-multiple-item-spacing-half: ceil((@input-padding-vertical-base / 2)); +@cascader-item-selected-bg: @primary-1; +@cascader-dropdown-vertical-padding: @dropdown-vertical-padding; +@cascader-dropdown-edge-child-vertical-padding: @dropdown-edge-child-vertical-padding; +@cascader-dropdown-font-size: @dropdown-font-size; +@cascader-dropdown-line-height: @dropdown-line-height; +@anchor-bg: transparent; +@anchor-border-color: @border-color-split; +@anchor-link-top: 4px; +@anchor-link-left: 16px; +@anchor-link-padding: @anchor-link-top 0 @anchor-link-top @anchor-link-left; +@tooltip-max-width: 250px; +@tooltip-color: #fff; +@tooltip-arrow-width: 8px * sqrt(2); +@tooltip-distance: @tooltip-arrow-width - 1px + 4px; +@tooltip-arrow-color: @tooltip-bg; +@tooltip-border-radius: @border-radius-base; +@popover-color: @text-color; +@popover-min-width: 177px; +@popover-min-height: 32px; +@popover-arrow-width: @tooltip-arrow-width; +@popover-arrow-color: @popover-bg; +@popover-arrow-outer-color: @popover-bg; +@popover-distance: @popover-arrow-width + 4px; +@popover-padding-horizontal: @padding-md; +@modal-header-padding-vertical: @padding-md; +@modal-header-padding-horizontal: @padding-lg; +@modal-body-padding: @padding-lg; +@modal-header-padding: @modal-header-padding-vertical @modal-header-padding-horizontal; +@modal-header-border-width: @border-width-base; +@modal-header-border-style: @border-style-base; +@modal-header-title-line-height: 22px; +@modal-header-title-font-size: @font-size-lg; +@modal-header-close-size: 56px; +@modal-heading-color: @heading-color; +@modal-close-color: @text-color-secondary; +@modal-footer-bg: transparent; +@modal-footer-border-style: @border-style-base; +@modal-footer-padding-vertical: 10px; +@modal-footer-padding-horizontal: 16px; +@modal-footer-border-width: @border-width-base; +@modal-mask-bg: fade(@black, 45%); +@modal-confirm-body-padding: 32px 32px 24px; +@modal-confirm-title-font-size: @font-size-lg; +@progress-default-color: @processing-color; +@progress-remaining-color: @background-color-base; +@progress-info-text-color: @progress-text-color; +@progress-radius: 100px; +@progress-text-font-size: 1em; +@progress-text-color: @text-color; +@progress-circle-text-font-size: 1em; +@menu-inline-toplevel-item-height: 40px; +@menu-item-height: 40px; +@menu-item-group-height: @line-height-base; +@menu-collapsed-width: 80px; +@menu-bg: @component-background; +@menu-item-color: @text-color; +@menu-inline-submenu-bg: @background-color-light; +@menu-highlight-color: @primary-color; +@menu-highlight-danger-color: @error-color; +@menu-item-active-bg: @primary-1; +@menu-item-active-danger-bg: @red-1; +@menu-item-active-border-width: 3px; +@menu-item-group-title-color: @text-color-secondary; +@menu-item-vertical-margin: 4px; +@menu-item-font-size: @font-size-base; +@menu-item-boundary-margin: 8px; +@menu-item-padding-horizontal: 20px; +@menu-item-padding: 0 @menu-item-padding-horizontal; +@menu-horizontal-line-height: 46px; +@menu-icon-margin-right: 10px; +@menu-icon-size: @menu-item-font-size; +@menu-icon-size-lg: @font-size-lg; +@menu-item-group-title-font-size: @menu-item-font-size; +@menu-dark-color: @text-color-secondary-dark; +@menu-dark-danger-color: @error-color; +@menu-dark-arrow-color: #fff; +@menu-dark-highlight-color: #fff; +@menu-dark-item-active-bg: @primary-color; +@menu-dark-item-active-danger-bg: @error-color; +@menu-dark-selected-item-icon-color: @white; +@menu-dark-selected-item-text-color: @white; +@menu-dark-item-hover-bg: transparent; +@spin-dot-size-sm: 14px; +@spin-dot-size: 20px; +@spin-dot-size-lg: 32px; +@table-bg: @component-background; +@table-header-color: @heading-color; +@table-selected-row-color: inherit; +@table-selected-row-bg: @primary-1; +@table-body-selected-sort-bg: @table-selected-row-bg; +@table-selected-row-hover-bg: darken(@table-selected-row-bg, 2%); +@table-padding-vertical: 16px; +@table-padding-horizontal: 16px; +@table-padding-vertical-md: (@table-padding-vertical * 3 / 4); +@table-padding-horizontal-md: (@table-padding-horizontal / 2); +@table-padding-vertical-sm: (@table-padding-vertical / 2); +@table-padding-horizontal-sm: (@table-padding-horizontal / 2); +@table-border-color: @border-color-split; +@table-border-radius-base: @border-radius-base; +@table-footer-bg: @background-color-light; +@table-footer-color: @heading-color; +@table-header-bg-sm: @table-header-bg; +@table-font-size: @font-size-base; +@table-font-size-md: @table-font-size; +@table-font-size-sm: @table-font-size; +@table-filter-btns-bg: inherit; +@table-selection-column-width: 32px; +@table-sticky-scroll-bar-bg: fade(#000, 35%); +@table-sticky-scroll-bar-radius: 4px; +@tag-border-radius: @border-radius-base; +@tag-default-bg: @background-color-light; +@tag-default-color: @text-color; +@tag-font-size: @font-size-sm; +@tag-line-height: 20px; +@picker-basic-cell-hover-color: @item-hover-bg; +@picker-date-hover-range-color: @picker-basic-cell-hover-with-range-color; +@picker-time-panel-column-width: 56px; +@picker-time-panel-column-height: 224px; +@picker-time-panel-cell-height: 28px; +@picker-panel-cell-height: 24px; +@picker-panel-cell-width: 36px; +@picker-text-height: 40px; +@picker-panel-without-time-cell-height: 66px; +@calendar-border-color: @border-color-inverse; +@calendar-item-active-bg: @item-active-bg; +@calendar-column-active-bg: fade(@calendar-item-active-bg, 20%); +@calendar-full-panel-bg: @calendar-full-bg; +@carousel-dot-width: 16px; +@carousel-dot-height: 3px; +@carousel-dot-active-width: 24px; +@badge-height: 20px; +@badge-height-sm: 14px; +@badge-dot-size: 6px; +@badge-font-size: @font-size-sm; +@badge-font-size-sm: @font-size-sm; +@badge-font-weight: normal; +@badge-status-size: 6px; +@badge-color: @highlight-color; +@rate-star-color: @yellow-6; +@rate-star-size: 20px; +@rate-star-hover-scale: scale(1.1); +@card-head-color: @heading-color; +@card-head-background: transparent; +@card-head-font-size: @font-size-lg; +@card-head-font-size-sm: @font-size-base; +@card-head-padding: 16px; +@card-head-padding-sm: (@card-head-padding / 2); +@card-head-height: 48px; +@card-head-height-sm: 36px; +@card-inner-head-padding: 12px; +@card-padding-base: 24px; +@card-padding-base-sm: (@card-padding-base / 2); +@card-actions-li-margin: 12px 0; +@card-background: @component-background; +@card-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), + 0 5px 12px 4px rgba(0, 0, 0, 0.09); +@card-radius: @border-radius-base; +@card-head-tabs-margin-bottom: -17px; +@card-head-extra-color: @text-color; +@comment-bg: inherit; +@comment-padding-base: @padding-md 0; +@comment-nest-indent: 44px; +@comment-font-size-base: @font-size-base; +@comment-font-size-sm: @font-size-sm; +@comment-author-name-color: @text-color-secondary; +@comment-action-color: @text-color-secondary; +@comment-actions-margin-bottom: inherit; +@comment-actions-margin-top: @margin-sm; +@comment-content-detail-p-margin-bottom: inherit; +@tabs-card-head-background: @background-color-light; +@tabs-card-height: 40px; +@tabs-card-active-color: @primary-color; +@tabs-card-horizontal-padding: ( + (@tabs-card-height - floor(@font-size-base * @line-height-base)) / 2 + ) - @border-width-base @padding-md; +@tabs-card-horizontal-padding-sm: 6px @padding-md; +@tabs-card-horizontal-padding-lg: 7px @padding-md 6px; +@tabs-title-font-size: @font-size-base; +@tabs-title-font-size-lg: @font-size-lg; +@tabs-title-font-size-sm: @font-size-base; +@tabs-ink-bar-color: @primary-color; +@tabs-bar-margin: 0 0 @margin-md 0; +@tabs-horizontal-gutter: 32px; +@tabs-horizontal-margin: 0 0 0 @tabs-horizontal-gutter; +@tabs-horizontal-margin-rtl: 0 0 0 32px; +@tabs-horizontal-padding: @padding-sm 0; +@tabs-horizontal-padding-lg: @padding-md 0; +@tabs-horizontal-padding-sm: @padding-xs 0; +@tabs-vertical-padding: @padding-xs @padding-lg; +@tabs-vertical-margin: @margin-md 0 0 0; +@tabs-scrolling-size: 32px; +@tabs-highlight-color: @primary-color; +@tabs-hover-color: @primary-5; +@tabs-active-color: @primary-7; +@tabs-card-gutter: 2px; +@tabs-card-tab-active-border-top: 2px solid transparent; +@back-top-color: #fff; +@back-top-bg: @text-color-secondary; +@back-top-hover-bg: @text-color; +@avatar-size-base: 32px; +@avatar-size-lg: 40px; +@avatar-size-sm: 24px; +@avatar-font-size-base: 18px; +@avatar-font-size-lg: 24px; +@avatar-font-size-sm: 14px; +@avatar-color: #fff; +@avatar-border-radius: @border-radius-base; +@avatar-group-overlapping: -8px; +@avatar-group-space: 3px; +@avatar-group-border-color: #fff; +@switch-height: 22px; +@switch-sm-height: 16px; +@switch-min-width: 44px; +@switch-sm-min-width: 28px; +@switch-disabled-opacity: 0.4; +@switch-color: @primary-color; +@switch-shadow-color: fade(#00230b, 20%); +@switch-padding: 2px; +@switch-inner-margin-min: ceil(@switch-height * 0.3); +@switch-inner-margin-max: ceil(@switch-height * 1.1); +@switch-sm-inner-margin-min: ceil(@switch-sm-height * 0.3); +@switch-sm-inner-margin-max: ceil(@switch-sm-height * 1.1); +@pagination-item-size: @height-base; +@pagination-item-size-sm: 24px; +@pagination-font-family: @font-family; +@pagination-font-weight-active: 500; +@pagination-mini-options-size-changer-top: 0px; +@page-header-padding: @padding-lg; +@page-header-padding-vertical: @padding-md; +@page-header-padding-breadcrumb: @padding-sm; +@page-header-content-padding-vertical: @padding-sm; +@page-header-ghost-bg: inherit; +@page-header-heading-title: @heading-4-size; +@page-header-heading-sub-title: 14px; +@page-header-tabs-tab-font-size: 16px; +@breadcrumb-base-color: @text-color-secondary; +@breadcrumb-last-item-color: @text-color; +@breadcrumb-font-size: @font-size-base; +@breadcrumb-icon-font-size: @font-size-base; +@breadcrumb-link-color: @text-color-secondary; +@breadcrumb-link-color-hover: @text-color; +@breadcrumb-separator-color: @text-color-secondary; +@breadcrumb-separator-margin: 0 @padding-xs; +@slider-margin: 10px 6px 10px; +@slider-track-background-color: @primary-3; +@slider-track-background-color-hover: @primary-4; +@slider-handle-border-width: 2px; +@slider-handle-background-color: @component-background; +@slider-handle-color: @primary-3; +@slider-handle-color-hover: @primary-4; +@slider-handle-color-focus: tint(@primary-color, 20%); +@slider-handle-color-focus-shadow: fade(@primary-color, 12%); +@slider-handle-color-tooltip-open: @primary-color; +@slider-handle-size: 14px; +@slider-handle-margin-top: -5px; +@slider-handle-shadow: 0; +@slider-disabled-color: @disabled-color; +@slider-disabled-background-color: @component-background; +@tree-title-height: 24px; +@tree-child-padding: 18px; +@tree-directory-selected-color: #fff; +@tree-directory-selected-bg: @primary-color; +@tree-node-hover-bg: @item-hover-bg; +@tree-node-selected-bg: @primary-2; +@collapse-header-padding: @padding-sm @padding-md; +@collapse-header-padding-extra: 40px; +@collapse-header-bg: @background-color-light; +@collapse-content-padding: @padding-md; +@collapse-content-bg: @component-background; +@collapse-header-arrow-left: 16px; +@skeleton-paragraph-margin-top: 28px; +@skeleton-paragraph-li-margin-top: @margin-md; +@skeleton-paragraph-li-height: 16px; +@skeleton-title-height: 16px; +@skeleton-title-paragraph-margin-top: @margin-lg; +@transfer-header-height: 40px; +@transfer-item-height: @height-base; +@transfer-disabled-bg: @disabled-bg; +@transfer-list-height: 200px; +@transfer-item-selected-hover-bg: darken(@item-active-bg, 2%); +@transfer-item-padding-vertical: 6px; +@transfer-list-search-icon-top: 12px; +@message-notice-content-padding: 10px 16px; +@wave-animation-width: 6px; +@alert-message-color: @heading-color; +@alert-text-color: @text-color; +@alert-close-color: @text-color-secondary; +@alert-close-hover-color: @icon-color-hover; +@alert-no-icon-padding-vertical: @padding-xs; +@alert-with-description-no-icon-padding-vertical: @padding-md - 1px; +@alert-with-description-padding-vertical: @padding-md - 1px; +@alert-with-description-padding: @alert-with-description-padding-vertical 15px + @alert-with-description-no-icon-padding-vertical @alert-with-description-icon-size; +@alert-icon-top: 8px + @font-size-base * (@line-height-base / 2) - (@font-size-base / 2); +@alert-with-description-icon-size: 24px; +@list-header-background: transparent; +@list-footer-background: transparent; +@list-empty-text-padding: @padding-md; +@list-item-padding: @padding-sm 0; +@list-item-padding-sm: @padding-xs @padding-md; +@list-item-padding-lg: 16px 24px; +@list-item-meta-margin-bottom: @padding-md; +@list-item-meta-avatar-margin-right: @padding-md; +@list-item-meta-title-margin-bottom: @padding-sm; +@list-item-meta-description-font-size: @font-size-base; +@statistic-title-font-size: @font-size-base; +@statistic-content-font-size: 24px; +@statistic-unit-font-size: 24px; +@statistic-font-family: @font-family; +@drawer-header-padding: @padding-md @padding-lg; +@drawer-body-padding: @padding-lg; +@drawer-footer-padding-vertical: @modal-footer-padding-vertical; +@drawer-footer-padding-horizontal: @modal-footer-padding-horizontal; +@drawer-header-close-size: 56px; +@drawer-title-font-size: @font-size-lg; +@drawer-title-line-height: 22px; +@timeline-width: 2px; +@timeline-dot-border-width: 2px; +@timeline-dot-bg: @component-background; +@timeline-item-padding-bottom: 20px; +@typography-title-font-weight: 600; +@typography-title-margin-top: 1.2em; +@typography-title-margin-bottom: 0.5em; +@upload-actions-color: @text-color-secondary; +@process-tail-color: @border-color-split; +@steps-icon-size: 32px; +@steps-icon-custom-size: @steps-icon-size; +@steps-icon-custom-top: 0px; +@steps-icon-custom-font-size: 24px; +@steps-icon-top: -0.5px; +@steps-icon-font-size: @font-size-lg; +@steps-icon-margin: 0 8px 0 0; +@steps-title-line-height: @height-base; +@steps-small-icon-size: 24px; +@steps-small-icon-margin: 0 8px 0 0; +@steps-dot-size: 8px; +@steps-dot-top: 2px; +@steps-current-dot-size: 10px; +@steps-description-max-width: 140px; +@steps-nav-content-max-width: auto; +@steps-vertical-icon-width: 16px; +@steps-vertical-tail-width: 16px; +@steps-vertical-tail-width-sm: 12px; +@notification-padding-vertical: 16px; +@notification-padding-horizontal: 24px; +@result-title-font-size: 24px; +@result-subtitle-font-size: @font-size-base; +@result-icon-font-size: 72px; +@result-extra-margin: 24px 0 0 0; +@image-size-base: 48px; +@image-font-size-base: 24px; +@image-bg: #f5f5f5; +@image-color: #fff; +@image-mask-font-size: 16px; +@image-preview-operation-size: 18px; +@image-preview-operation-color: @text-color-dark; +@image-preview-operation-disabled-color: fade(@image-preview-operation-color, 25%); +@segmented-selected-bg: @white; diff --git a/web - 副本/client/assets/files/.DS_Store b/web - 副本/client/assets/files/.DS_Store new file mode 100644 index 0000000..8718888 Binary files /dev/null and b/web - 副本/client/assets/files/.DS_Store differ diff --git a/web - 副本/client/assets/font_sc/PangMenZhengDaoBiaoTiTi-1.ttf b/web - 副本/client/assets/font_sc/PangMenZhengDaoBiaoTiTi-1.ttf new file mode 100644 index 0000000..61d491d Binary files /dev/null and b/web - 副本/client/assets/font_sc/PangMenZhengDaoBiaoTiTi-1.ttf differ diff --git a/web - 副本/client/assets/font_sc/Pixel.ttf b/web - 副本/client/assets/font_sc/Pixel.ttf new file mode 100644 index 0000000..a161a7b Binary files /dev/null and b/web - 副本/client/assets/font_sc/Pixel.ttf differ diff --git a/web - 副本/client/assets/font_sc/demo.css b/web - 副本/client/assets/font_sc/demo.css new file mode 100644 index 0000000..3d9cbe7 --- /dev/null +++ b/web - 副本/client/assets/font_sc/demo.css @@ -0,0 +1,370 @@ +*{margin: 0;padding: 0;list-style: none;} +/* +KISSY CSS Reset +理念:1. reset 的目的不是清除浏览器的默认样式,这仅是部分工作。清除和重置是紧密不可分的。 +2. reset 的目的不是让默认样式在所有浏览器下一致,而是减少默认样式有可能带来的问题。 +3. reset 期望提供一套普适通用的基础样式。但没有银弹,推荐根据具体需求,裁剪和修改后再使用。 +特色:1. 适应中文;2. 基于最新主流浏览器。 +维护:玉伯, 正淳 + */ + +/** 清除内外边距 **/ +body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, /* structural elements 结构元素 */ +dl, dt, dd, ul, ol, li, /* list elements 列表元素 */ +pre, /* text formatting elements 文本格式元素 */ +form, fieldset, legend, button, input, textarea, /* form elements 表单元素 */ +th, td /* table elements 表格元素 */ { + margin: 0; + padding: 0; +} + +/** 设置默认字体 **/ +body, +button, input, select, textarea /* for ie */ { + font: 12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif; +} +h1, h2, h3, h4, h5, h6 { font-size: 100%; } +address, cite, dfn, em, var { font-style: normal; } /* 将斜体扶正 */ +code, kbd, pre, samp { font-family: courier new, courier, monospace; } /* 统一等宽字体 */ +small { font-size: 12px; } /* 小于 12px 的中文很难阅读,让 small 正常化 */ + +/** 重置列表元素 **/ +ul, ol { list-style: none; } + +/** 重置文本格式元素 **/ +a { text-decoration: none; } +a:hover { text-decoration: underline; } + + +/** 重置表单元素 **/ +legend { color: #000; } /* for ie6 */ +fieldset, img { border: 0; } /* img 搭车:让链接里的 img 无边框 */ +button, input, select, textarea { font-size: 100%; } /* 使得表单元素在 ie 下能继承字体大小 */ +/* 注:optgroup 无法扶正 */ + +/** 重置表格元素 **/ +table { border-collapse: collapse; border-spacing: 0; } + +/* 清除浮动 */ +.ks-clear:after, .clear:after { + content: '\20'; + display: block; + height: 0; + clear: both; +} +.ks-clear, .clear { + *zoom: 1; +} + +.main { + padding: 30px 100px; +width: 960px; +margin: 0 auto; +} +.main h1{font-size:36px; color:#333; text-align:left;margin-bottom:30px; border-bottom: 1px solid #eee;} + +.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; + +} + +.icon_lists li{ + float:left; + width: 100px; + height:180px; + text-align: center; + list-style: none !important; +} +.icon_lists .icon{ + font-size: 42px; + line-height: 100px; + margin: 10px 0; + color:#333; + -webkit-transition: font-size 0.25s ease-out 0s; + -moz-transition: font-size 0.25s ease-out 0s; + transition: font-size 0.25s ease-out 0s; + +} +.icon_lists .icon:hover{ + font-size: 100px; +} + + + +.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, +.markdown pre { + 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 pre { + border-radius: 6px; + background: #f7f7f7; + padding: 20px; +} + +.markdown pre code { + border: none; + background: #f7f7f7; + margin: 0; +} + +.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; + font-style: italic; +} + +.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; +} + +pre{ + background: #fff; +} + + + + + diff --git a/web - 副本/client/assets/font_sc/demo_fontclass.html b/web - 副本/client/assets/font_sc/demo_fontclass.html new file mode 100644 index 0000000..603b557 --- /dev/null +++ b/web - 副本/client/assets/font_sc/demo_fontclass.html @@ -0,0 +1,514 @@ + + + + + + IconFont + + + + +
+

IconFont 图标

+
    + +
  • + +
    流量
    +
    .icon-liuliang
    +
  • + +
  • + +
    轻轨
    +
    .icon-iconfontditie
    +
  • + +
  • + +
    风速3
    +
    .icon-fengsu3
    +
  • + +
  • + +
    calendar
    +
    .icon-calendar
    +
  • + +
  • + +
    box
    +
    .icon-box
    +
  • + +
  • + +
    审核失败
    +
    .icon-shenheshibai
    +
  • + +
  • + +
    边坡
    +
    .icon-slope
    +
  • + +
  • + +
    公路
    +
    .icon-icon2
    +
  • + +
  • + +
    GNSS采点
    +
    .icon-gnsscaidian
    +
  • + +
  • + +
    传感器设备
    +
    .icon-chuanganqishebei
    +
  • + +
  • + +
    电流传感器
    +
    .icon-dianliuchuanganqi
    +
  • + +
  • + +
    电压传感器
    +
    .icon-dianyachuanganqi
    +
  • + +
  • + +
    温度传感器
    +
    .icon-wenduchuanganqi
    +
  • + +
  • + +
    新建
    +
    .icon-xinjian
    +
  • + +
  • + +
    涵洞
    +
    .icon-handong
    +
  • + +
  • + +
    管网工程
    +
    .icon-guanwanggongcheng
    +
  • + +
  • + +
    审核
    +
    .icon-shenhe
    +
  • + +
  • + +
    智慧城市
    +
    .icon-zhihuishequ
    +
  • + +
  • + +
    边坡位移
    +
    .icon-bianpoweiyi
    +
  • + +
  • + +
    建筑
    +
    .icon-jianzhu
    +
  • + +
  • + +
    储罐
    +
    .icon-chuguan
    +
  • + +
  • + +
    隧道
    +
    .icon-suidao
    +
  • + +
  • + +
    data
    +
    .icon-data
    +
  • + +
  • + +
    矿山开采
    +
    .icon-kuangshankaicai
    +
  • + +
  • + +
    网络
    +
    .icon-wangluo
    +
  • + +
  • + +
    监控
    +
    .icon-jiankong
    +
  • + +
  • + +
    大数据
    +
    .icon-dashuju
    +
  • + +
  • + +
    数据库
    +
    .icon-shuju
    +
  • + +
  • + +
    审核成功
    +
    .icon-shenhechenggong
    +
  • + +
  • + +
    监控
    +
    .icon-jiankong1
    +
  • + +
  • + +
    网络系统
    +
    .icon-wangluoxitong
    +
  • + +
  • + +
    定位
    +
    .icon-dingwei
    +
  • + +
  • + +
    系统运转情况
    +
    .icon-xitongyunzhuanqingkuang
    +
  • + +
  • + +
    查看
    +
    .icon-chakan
    +
  • + +
  • + +
    链接
    +
    .icon-lianjie
    +
  • + +
  • + +
    数据导出-01
    +
    .icon-shujudaochu-01
    +
  • + +
  • + +
    系统状态
    +
    .icon-xitongzhuangtai
    +
  • + +
  • + +
    消费明细单
    +
    .icon-xiaofeimingxidan
    +
  • + +
  • + +
    SQL审核
    +
    .icon-SQLshenhe
    +
  • + +
  • + +
    aislogo
    +
    .icon-aislogo
    +
  • + +
  • + +
    +
    .icon-qiao
    +
  • + +
  • + +
    塔式起重机
    +
    .icon-tashiqizhongji
    +
  • + +
  • + +
    dwg格式
    +
    .icon-dwggeshi
    +
  • + +
  • + +
    路由器
    +
    .icon-luyouqi
    +
  • + +
  • + +
    244安装、施工-线性
    +
    .icon-anzhuangshigong-xianxing
    +
  • + +
  • + +
    245筛选过滤
    +
    .icon-shaixuanguolv
    +
  • + +
  • + +
    244安装、施工
    +
    .icon-anzhuangshigong
    +
  • + +
  • + +
    408条形图-线性
    +
    .icon-tiaoxingtu-xianxing
    +
  • + +
  • + +
    409折线图-线性
    +
    .icon-zhexiantu-xianxing
    +
  • + +
  • + +
    铁塔
    +
    .icon-tieta
    +
  • + +
  • + +
    800格式_文档txt
    +
    .icon-geshi_wendangtxt
    +
  • + +
  • + +
    801格式_文档doc
    +
    .icon-geshi_wendangdoc
    +
  • + +
  • + +
    807格式_文档pdf
    +
    .icon-geshi_wendangpdf
    +
  • + +
  • + +
    803格式_文档xls
    +
    .icon-geshi_wendangxls
    +
  • + +
  • + +
    819格式_通用文档
    +
    .icon-geshi_tongyongwendang
    +
  • + +
  • + +
    840格式_视频mp4
    +
    .icon-geshi_shipinmp
    +
  • + +
  • + +
    860格式_图片jpg
    +
    .icon-geshi_tupianjpg
    +
  • + +
  • + +
    865格式_图片png
    +
    .icon-geshi_tupianpng
    +
  • + +
  • + +
    光照传感器
    +
    .icon-guangzhaochuanganqi
    +
  • + +
  • + +
    建筑
    +
    .icon-building
    +
  • + +
  • + +
    烟雾传感器
    +
    .icon-yanwuchuanganqi
    +
  • + +
  • + +
    市政
    +
    .icon-shizheng
    +
  • + +
  • + +
    传感器
    +
    .icon-chuanganqi
    +
  • + +
  • + +
    温湿度传感器
    +
    .icon-WSD
    +
  • + +
  • + +
    压力传感器
    +
    .icon-yalichuanganqi
    +
  • + +
  • + +
    应力传感器
    +
    .icon-yinglichuanganqi
    +
  • + +
  • + +
    沉降传感器
    +
    .icon-chenjiangchuanganqi
    +
  • + +
  • + +
    压力传感器
    +
    .icon-yalichuanganqi1
    +
  • + +
  • + +
    液位传感器
    +
    .icon-YWC
    +
  • + +
  • + +
    computer
    +
    .icon-computer
    +
  • + +
  • + +
    empty
    +
    .icon-empty
    +
  • + +
  • + +
    offline
    +
    .icon-offline
    +
  • + +
  • + +
    大坝
    +
    .icon-daba
    +
  • + +
  • + +
    深部位移
    +
    .icon-shenbuweiyi
    +
  • + +
  • + +
    锚索传感器
    +
    .icon-maosuochuanganqi
    +
  • + +
  • + +
    雨量传感器
    +
    .icon-yuliangchuanganqi
    +
  • + +
  • + +
    位移计
    +
    .icon-weiyiji
    +
  • + +
  • + +
    气象站_1
    +
    .icon-qixiangzhan_
    +
  • + +
  • + +
    深基坑
    +
    .icon-shenjikeng
    +
  • + +
+ +

font-class引用

+
+ +

font-class是unicode使用方式的一种变种,主要是解决unicode书写不直观,语意不明确的问题。

+

与unicode使用方式相比,具有如下特点:

+
    +
  • 兼容性良好,支持ie8+,及所有现代浏览器。
  • +
  • 相比于unicode语意明确,书写更直观。可以很容易分辨这个icon是什么。
  • +
  • 因为使用class来定义图标,所以当要替换图标时,只需要修改class里面的unicode引用。
  • +
  • 不过因为本质上还是使用的字体,所以多色图标还是不支持的。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的fontclass代码:

+ + +
<link rel="stylesheet" type="text/css" href="./iconfont.css">
+

第二步:挑选相应图标并获取类名,应用于页面:

+
<i class="sc icon-xxx"></i>
+
+

"sc"是你项目下的font-family。可以通过编辑项目查看,默认是"iconfont"。

+
+
+ + diff --git a/web - 副本/client/assets/font_sc/demo_symbol.html b/web - 副本/client/assets/font_sc/demo_symbol.html new file mode 100644 index 0000000..47f10c1 --- /dev/null +++ b/web - 副本/client/assets/font_sc/demo_symbol.html @@ -0,0 +1,695 @@ + + + + + + IconFont + + + + + + +
+

IconFont 图标

+
    + +
  • + +
    流量
    +
    #icon-liuliang
    +
  • + +
  • + +
    轻轨
    +
    #icon-iconfontditie
    +
  • + +
  • + +
    风速3
    +
    #icon-fengsu3
    +
  • + +
  • + +
    calendar
    +
    #icon-calendar
    +
  • + +
  • + +
    box
    +
    #icon-box
    +
  • + +
  • + +
    审核失败
    +
    #icon-shenheshibai
    +
  • + +
  • + +
    边坡
    +
    #icon-slope
    +
  • + +
  • + +
    公路
    +
    #icon-icon2
    +
  • + +
  • + +
    GNSS采点
    +
    #icon-gnsscaidian
    +
  • + +
  • + +
    传感器设备
    +
    #icon-chuanganqishebei
    +
  • + +
  • + +
    电流传感器
    +
    #icon-dianliuchuanganqi
    +
  • + +
  • + +
    电压传感器
    +
    #icon-dianyachuanganqi
    +
  • + +
  • + +
    温度传感器
    +
    #icon-wenduchuanganqi
    +
  • + +
  • + +
    新建
    +
    #icon-xinjian
    +
  • + +
  • + +
    涵洞
    +
    #icon-handong
    +
  • + +
  • + +
    管网工程
    +
    #icon-guanwanggongcheng
    +
  • + +
  • + +
    审核
    +
    #icon-shenhe
    +
  • + +
  • + +
    智慧城市
    +
    #icon-zhihuishequ
    +
  • + +
  • + +
    边坡位移
    +
    #icon-bianpoweiyi
    +
  • + +
  • + +
    建筑
    +
    #icon-jianzhu
    +
  • + +
  • + +
    储罐
    +
    #icon-chuguan
    +
  • + +
  • + +
    隧道
    +
    #icon-suidao
    +
  • + +
  • + +
    data
    +
    #icon-data
    +
  • + +
  • + +
    矿山开采
    +
    #icon-kuangshankaicai
    +
  • + +
  • + +
    网络
    +
    #icon-wangluo
    +
  • + +
  • + +
    监控
    +
    #icon-jiankong
    +
  • + +
  • + +
    大数据
    +
    #icon-dashuju
    +
  • + +
  • + +
    数据库
    +
    #icon-shuju
    +
  • + +
  • + +
    审核成功
    +
    #icon-shenhechenggong
    +
  • + +
  • + +
    监控
    +
    #icon-jiankong1
    +
  • + +
  • + +
    网络系统
    +
    #icon-wangluoxitong
    +
  • + +
  • + +
    定位
    +
    #icon-dingwei
    +
  • + +
  • + +
    系统运转情况
    +
    #icon-xitongyunzhuanqingkuang
    +
  • + +
  • + +
    查看
    +
    #icon-chakan
    +
  • + +
  • + +
    链接
    +
    #icon-lianjie
    +
  • + +
  • + +
    数据导出-01
    +
    #icon-shujudaochu-01
    +
  • + +
  • + +
    系统状态
    +
    #icon-xitongzhuangtai
    +
  • + +
  • + +
    消费明细单
    +
    #icon-xiaofeimingxidan
    +
  • + +
  • + +
    SQL审核
    +
    #icon-SQLshenhe
    +
  • + +
  • + +
    aislogo
    +
    #icon-aislogo
    +
  • + +
  • + +
    +
    #icon-qiao
    +
  • + +
  • + +
    塔式起重机
    +
    #icon-tashiqizhongji
    +
  • + +
  • + +
    dwg格式
    +
    #icon-dwggeshi
    +
  • + +
  • + +
    路由器
    +
    #icon-luyouqi
    +
  • + +
  • + +
    244安装、施工-线性
    +
    #icon-anzhuangshigong-xianxing
    +
  • + +
  • + +
    245筛选过滤
    +
    #icon-shaixuanguolv
    +
  • + +
  • + +
    244安装、施工
    +
    #icon-anzhuangshigong
    +
  • + +
  • + +
    408条形图-线性
    +
    #icon-tiaoxingtu-xianxing
    +
  • + +
  • + +
    409折线图-线性
    +
    #icon-zhexiantu-xianxing
    +
  • + +
  • + +
    铁塔
    +
    #icon-tieta
    +
  • + +
  • + +
    800格式_文档txt
    +
    #icon-geshi_wendangtxt
    +
  • + +
  • + +
    801格式_文档doc
    +
    #icon-geshi_wendangdoc
    +
  • + +
  • + +
    807格式_文档pdf
    +
    #icon-geshi_wendangpdf
    +
  • + +
  • + +
    803格式_文档xls
    +
    #icon-geshi_wendangxls
    +
  • + +
  • + +
    819格式_通用文档
    +
    #icon-geshi_tongyongwendang
    +
  • + +
  • + +
    840格式_视频mp4
    +
    #icon-geshi_shipinmp
    +
  • + +
  • + +
    860格式_图片jpg
    +
    #icon-geshi_tupianjpg
    +
  • + +
  • + +
    865格式_图片png
    +
    #icon-geshi_tupianpng
    +
  • + +
  • + +
    光照传感器
    +
    #icon-guangzhaochuanganqi
    +
  • + +
  • + +
    建筑
    +
    #icon-building
    +
  • + +
  • + +
    烟雾传感器
    +
    #icon-yanwuchuanganqi
    +
  • + +
  • + +
    市政
    +
    #icon-shizheng
    +
  • + +
  • + +
    传感器
    +
    #icon-chuanganqi
    +
  • + +
  • + +
    温湿度传感器
    +
    #icon-WSD
    +
  • + +
  • + +
    压力传感器
    +
    #icon-yalichuanganqi
    +
  • + +
  • + +
    应力传感器
    +
    #icon-yinglichuanganqi
    +
  • + +
  • + +
    沉降传感器
    +
    #icon-chenjiangchuanganqi
    +
  • + +
  • + +
    压力传感器
    +
    #icon-yalichuanganqi1
    +
  • + +
  • + +
    液位传感器
    +
    #icon-YWC
    +
  • + +
  • + +
    computer
    +
    #icon-computer
    +
  • + +
  • + +
    empty
    +
    #icon-empty
    +
  • + +
  • + +
    offline
    +
    #icon-offline
    +
  • + +
  • + +
    大坝
    +
    #icon-daba
    +
  • + +
  • + +
    深部位移
    +
    #icon-shenbuweiyi
    +
  • + +
  • + +
    锚索传感器
    +
    #icon-maosuochuanganqi
    +
  • + +
  • + +
    雨量传感器
    +
    #icon-yuliangchuanganqi
    +
  • + +
  • + +
    位移计
    +
    #icon-weiyiji
    +
  • + +
  • + +
    气象站_1
    +
    #icon-qixiangzhan_
    +
  • + +
  • + +
    深基坑
    +
    #icon-shenjikeng
    +
  • + +
+ + +

symbol引用

+
+ +

这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 + 这种用法其实是做了一个svg的集合,与另外两种相比具有如下特点:

+
    +
  • 支持多色图标了,不再受单色限制。
  • +
  • 通过一些技巧,支持像字体那样,通过font-size,color来调整样式。
  • +
  • 兼容性较差,支持 ie9+,及现代浏览器。
  • +
  • 浏览器渲染svg的性能一般,还不如png。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的symbol代码:

+
<script src="./iconfont.js"></script>
+

第二步:加入通用css代码(引入一次就行):

+
<style type="text/css">
+.icon {
+   width: 1em; height: 1em;
+   vertical-align: -0.15em;
+   fill: currentColor;
+   overflow: hidden;
+}
+</style>
+

第三步:挑选相应图标并获取类名,应用于页面:

+
<svg class="icon" aria-hidden="true">
+  <use xlink:href="#icon-xxx"></use>
+</svg>
+        
+
+ + diff --git a/web - 副本/client/assets/font_sc/demo_unicode.html b/web - 副本/client/assets/font_sc/demo_unicode.html new file mode 100644 index 0000000..dc4999a --- /dev/null +++ b/web - 副本/client/assets/font_sc/demo_unicode.html @@ -0,0 +1,552 @@ + + + + + + IconFont + + + + + +
+

IconFont 图标

+
    + +
  • + +
    流量
    +
    &#xe602;
    +
  • + +
  • + +
    轻轨
    +
    &#xe66f;
    +
  • + +
  • + +
    风速3
    +
    &#xe635;
    +
  • + +
  • + +
    calendar
    +
    &#xe74a;
    +
  • + +
  • + +
    box
    +
    &#xe6cb;
    +
  • + +
  • + +
    审核失败
    +
    &#xe61d;
    +
  • + +
  • + +
    边坡
    +
    &#xe676;
    +
  • + +
  • + +
    公路
    +
    &#xe607;
    +
  • + +
  • + +
    GNSS采点
    +
    &#xe825;
    +
  • + +
  • + +
    传感器设备
    +
    &#xe612;
    +
  • + +
  • + +
    电流传感器
    +
    &#xe62c;
    +
  • + +
  • + +
    电压传感器
    +
    &#xe62f;
    +
  • + +
  • + +
    温度传感器
    +
    &#xe637;
    +
  • + +
  • + +
    新建
    +
    &#xe61f;
    +
  • + +
  • + +
    涵洞
    +
    &#xe89b;
    +
  • + +
  • + +
    管网工程
    +
    &#xe646;
    +
  • + +
  • + +
    审核
    +
    &#xe639;
    +
  • + +
  • + +
    智慧城市
    +
    &#xe600;
    +
  • + +
  • + +
    边坡位移
    +
    &#xe60a;
    +
  • + +
  • + +
    建筑
    +
    &#xe65f;
    +
  • + +
  • + +
    储罐
    +
    &#xe636;
    +
  • + +
  • + +
    隧道
    +
    &#xe61e;
    +
  • + +
  • + +
    data
    +
    &#xe757;
    +
  • + +
  • + +
    矿山开采
    +
    &#xe608;
    +
  • + +
  • + +
    网络
    +
    &#xe617;
    +
  • + +
  • + +
    监控
    +
    &#xe619;
    +
  • + +
  • + +
    大数据
    +
    &#xe61a;
    +
  • + +
  • + +
    数据库
    +
    &#xe61b;
    +
  • + +
  • + +
    审核成功
    +
    &#xe627;
    +
  • + +
  • + +
    监控
    +
    &#xe620;
    +
  • + +
  • + +
    网络系统
    +
    &#xe62e;
    +
  • + +
  • + +
    定位
    +
    &#xe630;
    +
  • + +
  • + +
    系统运转情况
    +
    &#xe631;
    +
  • + +
  • + +
    查看
    +
    &#xe63e;
    +
  • + +
  • + +
    链接
    +
    &#xe63f;
    +
  • + +
  • + +
    数据导出-01
    +
    &#xe640;
    +
  • + +
  • + +
    系统状态
    +
    &#xe642;
    +
  • + +
  • + +
    消费明细单
    +
    &#xe643;
    +
  • + +
  • + +
    SQL审核
    +
    &#xe645;
    +
  • + +
  • + +
    aislogo
    +
    &#xe648;
    +
  • + +
  • + +
    +
    &#xe715;
    +
  • + +
  • + +
    塔式起重机
    +
    &#xe615;
    +
  • + +
  • + +
    dwg格式
    +
    &#xe82b;
    +
  • + +
  • + +
    路由器
    +
    &#xe603;
    +
  • + +
  • + +
    244安装、施工-线性
    +
    &#xe8d6;
    +
  • + +
  • + +
    245筛选过滤
    +
    &#xe8d7;
    +
  • + +
  • + +
    244安装、施工
    +
    &#xe8d8;
    +
  • + +
  • + +
    408条形图-线性
    +
    &#xe904;
    +
  • + +
  • + +
    409折线图-线性
    +
    &#xe906;
    +
  • + +
  • + +
    铁塔
    +
    &#xe605;
    +
  • + +
  • + +
    800格式_文档txt
    +
    &#xe6b8;
    +
  • + +
  • + +
    801格式_文档doc
    +
    &#xe6b9;
    +
  • + +
  • + +
    807格式_文档pdf
    +
    &#xe6bc;
    +
  • + +
  • + +
    803格式_文档xls
    +
    &#xe6be;
    +
  • + +
  • + +
    819格式_通用文档
    +
    &#xe6c0;
    +
  • + +
  • + +
    840格式_视频mp4
    +
    &#xe6c8;
    +
  • + +
  • + +
    860格式_图片jpg
    +
    &#xe6cc;
    +
  • + +
  • + +
    865格式_图片png
    +
    &#xe6ce;
    +
  • + +
  • + +
    光照传感器
    +
    &#xe638;
    +
  • + +
  • + +
    建筑
    +
    &#xe61c;
    +
  • + +
  • + +
    烟雾传感器
    +
    &#xe610;
    +
  • + +
  • + +
    市政
    +
    &#xe6ca;
    +
  • + +
  • + +
    传感器
    +
    &#xe60f;
    +
  • + +
  • + +
    温湿度传感器
    +
    &#xe697;
    +
  • + +
  • + +
    压力传感器
    +
    &#xe60e;
    +
  • + +
  • + +
    应力传感器
    +
    &#xe611;
    +
  • + +
  • + +
    沉降传感器
    +
    &#xe601;
    +
  • + +
  • + +
    压力传感器
    +
    &#xe606;
    +
  • + +
  • + +
    液位传感器
    +
    &#xe699;
    +
  • + +
  • + +
    computer
    +
    &#xe6eb;
    +
  • + +
  • + +
    empty
    +
    &#xe6f7;
    +
  • + +
  • + +
    offline
    +
    &#xe712;
    +
  • + +
  • + +
    大坝
    +
    &#xe632;
    +
  • + +
  • + +
    深部位移
    +
    &#xe613;
    +
  • + +
  • + +
    锚索传感器
    +
    &#xe614;
    +
  • + +
  • + +
    雨量传感器
    +
    &#xe616;
    +
  • + +
  • + +
    位移计
    +
    &#xe618;
    +
  • + +
  • + +
    气象站_1
    +
    &#xe60d;
    +
  • + +
  • + +
    深基坑
    +
    &#xe62a;
    +
  • + +
+

unicode引用

+
+ +

unicode是字体在网页端最原始的应用方式,特点是:

+
    +
  • 兼容性最好,支持ie6+,及所有现代浏览器。
  • +
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • +
  • 但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。
  • +
+
+

注意:新版iconfont支持多色图标,这些多色图标在unicode模式下将不能使用,如果有需求建议使用symbol的引用方式

+
+

unicode使用步骤如下:

+

第一步:拷贝项目下面生成的font-face

+
@font-face {
+  font-family: 'sc';
+  src: url('iconfont.eot');
+  src: url('iconfont.eot?#iefix') format('embedded-opentype'),
+  url('iconfont.woff') format('woff'),
+  url('iconfont.ttf') format('truetype'),
+  url('iconfont.svg#sc') format('svg');
+}
+
+

第二步:定义使用iconfont的样式

+
.sc{
+  font-family:"sc" !important;
+  font-size:16px;font-style:normal;
+  -webkit-font-smoothing: antialiased;
+  -webkit-text-stroke-width: 0.2px;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+

第三步:挑选相应图标并获取字体编码,应用于页面

+
<i class="sc">&#x33;</i>
+ +
+

"sc"是你项目下的font-family。可以通过编辑项目查看,默认是"iconfont"。

+
+
+ + + + diff --git a/web - 副本/client/assets/font_sc/iconfont.css b/web - 副本/client/assets/font_sc/iconfont.css new file mode 100644 index 0000000..e0d54e8 --- /dev/null +++ b/web - 副本/client/assets/font_sc/iconfont.css @@ -0,0 +1,175 @@ + +@font-face {font-family: "sc"; + src: url('iconfont.eot?t=1514963720586'); /* IE9*/ + src: url('iconfont.eot?t=1514963720586#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'), + url('iconfont.ttf?t=1514963720586') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ + url('iconfont.svg?t=1514963720586#sc') format('svg'); /* iOS 4.1- */ +} + +.sc { + font-family:"sc" !important; + font-size:16px; + font-style:normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-liuliang:before { content: "\e602"; } + +.icon-iconfontditie:before { content: "\e66f"; } + +.icon-fengsu3:before { content: "\e635"; } + +.icon-calendar:before { content: "\e74a"; } + +.icon-box:before { content: "\e6cb"; } + +.icon-shenheshibai:before { content: "\e61d"; } + +.icon-slope:before { content: "\e676"; } + +.icon-icon2:before { content: "\e607"; } + +.icon-gnsscaidian:before { content: "\e825"; } + +.icon-chuanganqishebei:before { content: "\e612"; } + +.icon-dianliuchuanganqi:before { content: "\e62c"; } + +.icon-dianyachuanganqi:before { content: "\e62f"; } + +.icon-wenduchuanganqi:before { content: "\e637"; } + +.icon-xinjian:before { content: "\e61f"; } + +.icon-handong:before { content: "\e89b"; } + +.icon-guanwanggongcheng:before { content: "\e646"; } + +.icon-shenhe:before { content: "\e639"; } + +.icon-zhihuishequ:before { content: "\e600"; } + +.icon-bianpoweiyi:before { content: "\e60a"; } + +.icon-jianzhu:before { content: "\e65f"; } + +.icon-chuguan:before { content: "\e636"; } + +.icon-suidao:before { content: "\e61e"; } + +.icon-data:before { content: "\e757"; } + +.icon-kuangshankaicai:before { content: "\e608"; } + +.icon-wangluo:before { content: "\e617"; } + +.icon-jiankong:before { content: "\e619"; } + +.icon-dashuju:before { content: "\e61a"; } + +.icon-shuju:before { content: "\e61b"; } + +.icon-shenhechenggong:before { content: "\e627"; } + +.icon-jiankong1:before { content: "\e620"; } + +.icon-wangluoxitong:before { content: "\e62e"; } + +.icon-dingwei:before { content: "\e630"; } + +.icon-xitongyunzhuanqingkuang:before { content: "\e631"; } + +.icon-chakan:before { content: "\e63e"; } + +.icon-lianjie:before { content: "\e63f"; } + +.icon-shujudaochu-01:before { content: "\e640"; } + +.icon-xitongzhuangtai:before { content: "\e642"; } + +.icon-xiaofeimingxidan:before { content: "\e643"; } + +.icon-SQLshenhe:before { content: "\e645"; } + +.icon-aislogo:before { content: "\e648"; } + +.icon-qiao:before { content: "\e715"; } + +.icon-tashiqizhongji:before { content: "\e615"; } + +.icon-dwggeshi:before { content: "\e82b"; } + +.icon-luyouqi:before { content: "\e603"; } + +.icon-anzhuangshigong-xianxing:before { content: "\e8d6"; } + +.icon-shaixuanguolv:before { content: "\e8d7"; } + +.icon-anzhuangshigong:before { content: "\e8d8"; } + +.icon-tiaoxingtu-xianxing:before { content: "\e904"; } + +.icon-zhexiantu-xianxing:before { content: "\e906"; } + +.icon-tieta:before { content: "\e605"; } + +.icon-geshi_wendangtxt:before { content: "\e6b8"; } + +.icon-geshi_wendangdoc:before { content: "\e6b9"; } + +.icon-geshi_wendangpdf:before { content: "\e6bc"; } + +.icon-geshi_wendangxls:before { content: "\e6be"; } + +.icon-geshi_tongyongwendang:before { content: "\e6c0"; } + +.icon-geshi_shipinmp:before { content: "\e6c8"; } + +.icon-geshi_tupianjpg:before { content: "\e6cc"; } + +.icon-geshi_tupianpng:before { content: "\e6ce"; } + +.icon-guangzhaochuanganqi:before { content: "\e638"; } + +.icon-building:before { content: "\e61c"; } + +.icon-yanwuchuanganqi:before { content: "\e610"; } + +.icon-shizheng:before { content: "\e6ca"; } + +.icon-chuanganqi:before { content: "\e60f"; } + +.icon-WSD:before { content: "\e697"; } + +.icon-yalichuanganqi:before { content: "\e60e"; } + +.icon-yinglichuanganqi:before { content: "\e611"; } + +.icon-chenjiangchuanganqi:before { content: "\e601"; } + +.icon-yalichuanganqi1:before { content: "\e606"; } + +.icon-YWC:before { content: "\e699"; } + +.icon-computer:before { content: "\e6eb"; } + +.icon-empty:before { content: "\e6f7"; } + +.icon-offline:before { content: "\e712"; } + +.icon-daba:before { content: "\e632"; } + +.icon-shenbuweiyi:before { content: "\e613"; } + +.icon-maosuochuanganqi:before { content: "\e614"; } + +.icon-yuliangchuanganqi:before { content: "\e616"; } + +.icon-weiyiji:before { content: "\e618"; } + +.icon-qixiangzhan_:before { content: "\e60d"; } + +.icon-shenjikeng:before { content: "\e62a"; } + diff --git a/web - 副本/client/assets/font_sc/iconfont.eot b/web - 副本/client/assets/font_sc/iconfont.eot new file mode 100644 index 0000000..ce634fe Binary files /dev/null and b/web - 副本/client/assets/font_sc/iconfont.eot differ diff --git a/web - 副本/client/assets/font_sc/iconfont.js b/web - 副本/client/assets/font_sc/iconfont.js new file mode 100644 index 0000000..858310b --- /dev/null +++ b/web - 副本/client/assets/font_sc/iconfont.js @@ -0,0 +1 @@ +(function(window){var svgSprite='';var script=function(){var scripts=document.getElementsByTagName("script");return scripts[scripts.length-1]}();var shouldInjectCss=script.getAttribute("data-injectcss");var ready=function(fn){if(document.addEventListener){if(~["complete","loaded","interactive"].indexOf(document.readyState)){setTimeout(fn,0)}else{var loadFn=function(){document.removeEventListener("DOMContentLoaded",loadFn,false);fn()};document.addEventListener("DOMContentLoaded",loadFn,false)}}else if(document.attachEvent){IEContentLoaded(window,fn)}function IEContentLoaded(w,fn){var d=w.document,done=false,init=function(){if(!done){done=true;fn()}};var polling=function(){try{d.documentElement.doScroll("left")}catch(e){setTimeout(polling,50);return}init()};polling();d.onreadystatechange=function(){if(d.readyState=="complete"){d.onreadystatechange=null;init()}}}};var before=function(el,target){target.parentNode.insertBefore(el,target)};var prepend=function(el,target){if(target.firstChild){before(el,target.firstChild)}else{target.appendChild(el)}};function appendSvg(){var div,svg;div=document.createElement("div");div.innerHTML=svgSprite;svgSprite=null;svg=div.getElementsByTagName("svg")[0];if(svg){svg.setAttribute("aria-hidden","true");svg.style.position="absolute";svg.style.width=0;svg.style.height=0;svg.style.overflow="hidden";prepend(svg,document.body)}}if(shouldInjectCss&&!window.__iconfont__svg__cssinject__){window.__iconfont__svg__cssinject__=true;try{document.write("")}catch(e){console&&console.log(e)}}ready(appendSvg)})(window) \ No newline at end of file diff --git a/web - 副本/client/assets/font_sc/iconfont.svg b/web - 副本/client/assets/font_sc/iconfont.svg new file mode 100644 index 0000000..dd4cde2 --- /dev/null +++ b/web - 副本/client/assets/font_sc/iconfont.svg @@ -0,0 +1,270 @@ + + + + + +Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web - 副本/client/assets/font_sc/iconfont.ttf b/web - 副本/client/assets/font_sc/iconfont.ttf new file mode 100644 index 0000000..8b43746 Binary files /dev/null and b/web - 副本/client/assets/font_sc/iconfont.ttf differ diff --git a/web - 副本/client/assets/font_sc/iconfont.woff b/web - 副本/client/assets/font_sc/iconfont.woff new file mode 100644 index 0000000..e813d4c Binary files /dev/null and b/web - 副本/client/assets/font_sc/iconfont.woff differ diff --git a/web - 副本/client/assets/fonticon/.DS_Store b/web - 副本/client/assets/fonticon/.DS_Store new file mode 100644 index 0000000..c36dd12 Binary files /dev/null and b/web - 副本/client/assets/fonticon/.DS_Store differ diff --git a/web - 副本/client/assets/fonticon/iconfont.css b/web - 副本/client/assets/fonticon/iconfont.css new file mode 100644 index 0000000..d0ca9d3 --- /dev/null +++ b/web - 副本/client/assets/fonticon/iconfont.css @@ -0,0 +1,521 @@ + +@font-face {font-family: "anticon"; + src: url('iconfont.eot?t=1494480257283'); /* IE9*/ + src: url('iconfont.eot?t=1494480257283#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('iconfont.woff?t=1494480257283') format('woff'), /* chrome, firefox */ + url('iconfont.ttf?t=1494480257283') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ + url('iconfont.svg?t=1494480257283#anticon') format('svg'); /* iOS 4.1- */ +} + +.anticon { + font-family:"anticon" !important; + font-size:16px; + font-style:normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-stepforward:before { content: "\e600"; } + +.icon-stepbackward:before { content: "\e601"; } + +.icon-forward:before { content: "\e602"; } + +.icon-banckward:before { content: "\e603"; } + +.icon-caretright:before { content: "\e604"; } + +.icon-caretleft:before { content: "\e605"; } + +.icon-caretdown:before { content: "\e606"; } + +.icon-caretup:before { content: "\e607"; } + +.icon-rightcircle:before { content: "\e608"; } + +.icon-leftcircle:before { content: "\e609"; } + +.icon-upcircle:before { content: "\e60a"; } + +.icon-downcircle:before { content: "\e60b"; } + +.icon-rightcircleo:before { content: "\e60c"; } + +.icon-leftcircleo:before { content: "\e60d"; } + +.icon-upcircleo:before { content: "\e60e"; } + +.icon-downcircleo:before { content: "\e60f"; } + +.icon-verticleleft:before { content: "\e610"; } + +.icon-verticleright:before { content: "\e611"; } + +.icon-rollback:before { content: "\e612"; } + +.icon-retweet:before { content: "\e613"; } + +.icon-shrink:before { content: "\e614"; } + +.icon-arrowsalt:before { content: "\e615"; } + +.icon-doubleright:before { content: "\e617"; } + +.icon-doubleleft:before { content: "\e618"; } + +.icon-arrowdown:before { content: "\e619"; } + +.icon-arrowup:before { content: "\e61a"; } + +.icon-arrowright:before { content: "\e61b"; } + +.icon-arrowleft:before { content: "\e61c"; } + +.icon-down:before { content: "\e61d"; } + +.icon-up:before { content: "\e61e"; } + +.icon-right:before { content: "\e61f"; } + +.icon-left:before { content: "\e620"; } + +.icon-minussquareo:before { content: "\e621"; } + +.icon-minuscircle:before { content: "\e622"; } + +.icon-minuscircleo:before { content: "\e623"; } + +.icon-minus:before { content: "\e624"; } + +.icon-pluscircleo:before { content: "\e625"; } + +.icon-pluscircle:before { content: "\e626"; } + +.icon-plus:before { content: "\e627"; } + +.icon-infocirlce:before { content: "\e628"; } + +.icon-infocirlceo:before { content: "\e629"; } + +.icon-info:before { content: "\e62a"; } + +.icon-exclamation:before { content: "\e62b"; } + +.icon-exclamationcircle:before { content: "\e62c"; } + +.icon-exclamationcircleo:before { content: "\e62d"; } + +.icon-closecircle:before { content: "\e62e"; } + +.icon-closecircleo:before { content: "\e62f"; } + +.icon-checkcircle:before { content: "\e630"; } + +.icon-checkcircleo:before { content: "\e631"; } + +.icon-check:before { content: "\e632"; } + +.icon-close:before { content: "\e633"; } + +.icon-customerservice:before { content: "\e634"; } + +.icon-creditcard:before { content: "\e635"; } + +.icon-codesquareo:before { content: "\e636"; } + +.icon-book:before { content: "\e637"; } + +.icon-barschart:before { content: "\e638"; } + +.icon-bars:before { content: "\e639"; } + +.icon-question:before { content: "\e63a"; } + +.icon-questioncircle:before { content: "\e63b"; } + +.icon-questioncircleo:before { content: "\e63c"; } + +.icon-pause:before { content: "\e63d"; } + +.icon-pausecircle:before { content: "\e63e"; } + +.icon-pausecircleo:before { content: "\e63f"; } + +.icon-clockcircle:before { content: "\e640"; } + +.icon-clockcircleo:before { content: "\e641"; } + +.icon-swap:before { content: "\e642"; } + +.icon-swapleft:before { content: "\e643"; } + +.icon-swapright:before { content: "\e644"; } + +.icon-plussquareo:before { content: "\e645"; } + +.icon-frown:before { content: "\e646"; } + +.icon-menufold:before { content: "\e658"; } + +.icon-mail:before { content: "\e659"; } + +.icon-link:before { content: "\e65b"; } + +.icon-areachart:before { content: "\e65c"; } + +.icon-linechart:before { content: "\e65d"; } + +.icon-home:before { content: "\e65e"; } + +.icon-laptop:before { content: "\e65f"; } + +.icon-star:before { content: "\e660"; } + +.icon-staro:before { content: "\e661"; } + +.icon-filter:before { content: "\e663"; } + +.icon-meho:before { content: "\e666"; } + +.icon-meh:before { content: "\e667"; } + +.icon-shoppingcart:before { content: "\e668"; } + +.icon-save:before { content: "\e669"; } + +.icon-user:before { content: "\e66a"; } + +.icon-videocamera:before { content: "\e66b"; } + +.icon-totop:before { content: "\e66c"; } + +.icon-team:before { content: "\e66d"; } + +.icon-sharealt:before { content: "\e671"; } + +.icon-setting:before { content: "\e672"; } + +.icon-picture:before { content: "\e674"; } + +.icon-phone:before { content: "\e675"; } + +.icon-paperclip:before { content: "\e676"; } + +.icon-notification:before { content: "\e677"; } + +.icon-menuunfold:before { content: "\e679"; } + +.icon-inbox:before { content: "\e67a"; } + +.icon-lock:before { content: "\e67b"; } + +.icon-qrcode:before { content: "\e67c"; } + +.icon-tags:before { content: "\e67d"; } + +.icon-tagso:before { content: "\e67e"; } + +.icon-cloudo:before { content: "\e67f"; } + +.icon-cloud:before { content: "\e680"; } + +.icon-cloudupload:before { content: "\e681"; } + +.icon-clouddownload:before { content: "\e682"; } + +.icon-clouddownloado:before { content: "\e683"; } + +.icon-clouduploado:before { content: "\e684"; } + +.icon-enviroment:before { content: "\e685"; } + +.icon-enviromento:before { content: "\e686"; } + +.icon-eye:before { content: "\e687"; } + +.icon-eyeo:before { content: "\e688"; } + +.icon-camera:before { content: "\e689"; } + +.icon-camerao:before { content: "\e68a"; } + +.icon-windows:before { content: "\e68b"; } + +.icon-export2:before { content: "\e690"; } + +.icon-export:before { content: "\e691"; } + +.icon-circledowno:before { content: "\e693"; } + +.icon-circledown:before { content: "\e694"; } + +.icon-hdd:before { content: "\e69a"; } + +.icon-ie:before { content: "\e69b"; } + +.icon-delete:before { content: "\e69f"; } + +.icon-enter:before { content: "\e6a0"; } + +.icon-pushpino:before { content: "\e6a1"; } + +.icon-pushpin:before { content: "\e6a2"; } + +.icon-heart:before { content: "\e6a3"; } + +.icon-hearto:before { content: "\e6a4"; } + +.icon-smile-circle:before { content: "\e6a7"; } + +.icon-smileo:before { content: "\e6a8"; } + +.icon-frowno:before { content: "\e6a9"; } + +.icon-calculator:before { content: "\e6aa"; } + +.icon-chrome:before { content: "\e6ac"; } + +.icon-github:before { content: "\e6ad"; } + +.icon-iconfontdesktop:before { content: "\e6b4"; } + +.icon-caretcircleoup:before { content: "\e6b5"; } + +.icon-upload:before { content: "\e6b6"; } + +.icon-download:before { content: "\e6b7"; } + +.icon-piechart:before { content: "\e6b8"; } + +.icon-lock1:before { content: "\e6b9"; } + +.icon-unlock:before { content: "\e6ba"; } + +.icon-windowso:before { content: "\e6bc"; } + +.icon-dotchart:before { content: "\e6bd"; } + +.icon-barchart:before { content: "\e6be"; } + +.icon-codesquare:before { content: "\e6bf"; } + +.icon-plussquare:before { content: "\e6c0"; } + +.icon-minussquare:before { content: "\e6c1"; } + +.icon-closesquare:before { content: "\e6c2"; } + +.icon-closesquareo:before { content: "\e6c3"; } + +.icon-checksquare:before { content: "\e6c4"; } + +.icon-checksquareo:before { content: "\e6c5"; } + +.icon-fastbackward:before { content: "\e6c6"; } + +.icon-fastforward:before { content: "\e6c7"; } + +.icon-upsquare:before { content: "\e6c8"; } + +.icon-downsquare:before { content: "\e6c9"; } + +.icon-leftsquare:before { content: "\e6ca"; } + +.icon-rightsquare:before { content: "\e6cb"; } + +.icon-rightsquareo:before { content: "\e6cc"; } + +.icon-leftsquareo:before { content: "\e6cd"; } + +.icon-down-square-o:before { content: "\e6ce"; } + +.icon-up-square-o:before { content: "\e6cf"; } + +.icon-play:before { content: "\e6d0"; } + +.icon-playcircleo:before { content: "\e6d1"; } + +.icon-tag:before { content: "\e6d2"; } + +.icon-tago:before { content: "\e6d3"; } + +.icon-addfile:before { content: "\e910"; } + +.icon-folder1:before { content: "\e662"; } + +.icon-file1:before { content: "\e664"; } + +.icon-switcher:before { content: "\e913"; } + +.icon-addfolder:before { content: "\e914"; } + +.icon-folderopen:before { content: "\e699"; } + +.icon-search1:before { content: "\e670"; } + +.icon-ellipsis1:before { content: "\e647"; } + +.icon-calendar:before { content: "\e6bb"; } + +.icon-filetext1:before { content: "\e698"; } + +.icon-copy1:before { content: "\e648"; } + +.icon-jpgfile1:before { content: "\e69c"; } + +.icon-pdffile1:before { content: "\e6b3"; } + +.icon-exclefile1:before { content: "\e6b0"; } + +.icon-pptfile1:before { content: "\e6b1"; } + +.icon-unknowfile1:before { content: "\e6af"; } + +.icon-wordfile1:before { content: "\e6b2"; } + +.icon-dingding:before { content: "\e923"; } + +.icon-dingding-o:before { content: "\e925"; } + +.icon-mobile1:before { content: "\e678"; } + +.icon-tablet1:before { content: "\e66e"; } + +.icon-bells:before { content: "\e64e"; } + +.icon-disconnect:before { content: "\e64f"; } + +.icon-database:before { content: "\e650"; } + +.icon-barcode:before { content: "\e652"; } + +.icon-hourglass:before { content: "\e653"; } + +.icon-key:before { content: "\e654"; } + +.icon-flag:before { content: "\e655"; } + +.icon-layout:before { content: "\e656"; } + +.icon-printer:before { content: "\e673"; } + +.icon-USB:before { content: "\e6d7"; } + +.icon-skin:before { content: "\e6d8"; } + +.icon-tool:before { content: "\e6d9"; } + +.icon-car:before { content: "\e6dc"; } + +.icon-addusergroup:before { content: "\e6dd"; } + +.icon-carryout:before { content: "\e6df"; } + +.icon-deleteuser:before { content: "\e6e0"; } + +.icon-deleteusergroup:before { content: "\e6e1"; } + +.icon-man:before { content: "\e6e2"; } + +.icon-isv:before { content: "\e6e3"; } + +.icon-gift:before { content: "\e6e4"; } + +.icon-idcard:before { content: "\e6e5"; } + +.icon-medicinebox:before { content: "\e6e6"; } + +.icon-redenvelopes:before { content: "\e6e7"; } + +.icon-rest:before { content: "\e6e8"; } + +.icon-Safety:before { content: "\e6ea"; } + +.icon-wallet:before { content: "\e6eb"; } + +.icon-woman:before { content: "\e6ec"; } + +.icon-adduser:before { content: "\e6ed"; } + +.icon-bank:before { content: "\e6ee"; } + +.icon-Trophy:before { content: "\e6ef"; } + +.icon-loading1:before { content: "\e6ae"; } + +.icon-loading2:before { content: "\e64d"; } + +.icon-like2:before { content: "\e69d"; } + +.icon-dislike2:before { content: "\e69e"; } + +.icon-like1:before { content: "\e64c"; } + +.icon-dislike1:before { content: "\e64b"; } + +.icon-bulb1:before { content: "\e649"; } + +.icon-rocket1:before { content: "\e90f"; } + +.icon-select1:before { content: "\e64a"; } + +.icon-apple1:before { content: "\e68c"; } + +.icon-apple-o:before { content: "\e6d4"; } + +.icon-android1:before { content: "\e938"; } + +.icon-android:before { content: "\e68d"; } + +.icon-aliwangwang-o1:before { content: "\e68f"; } + +.icon-aliwangwang:before { content: "\e68e"; } + +.icon-pay-circle1:before { content: "\e6a5"; } + +.icon-pay-circle-o1:before { content: "\e6a6"; } + +.icon-poweroff:before { content: "\e6d5"; } + +.icon-trademark:before { content: "\e651"; } + +.icon-find:before { content: "\e6db"; } + +.icon-copyright:before { content: "\e6de"; } + +.icon-sound:before { content: "\e6e9"; } + +.icon-earth:before { content: "\e6f1"; } + +.icon-wifi:before { content: "\e6d6"; } + +.icon-sync:before { content: "\e6da"; } + +.icon-login:before { content: "\e657"; } + +.icon-logout:before { content: "\e65a"; } + +.icon-reload1:before { content: "\e616"; } + +.icon-message1:before { content: "\e6ab"; } + +.icon-shake:before { content: "\e94f"; } + +.icon-API:before { content: "\e951"; } + +.icon-appstore-o:before { content: "\e695"; } + +.icon-appstore1:before { content: "\e696"; } + +.icon-scan1:before { content: "\e697"; } + +.icon-exception1:before { content: "\e665"; } + +.icon-contacts:before { content: "\e6f0"; } + +.icon-solution1:before { content: "\e66f"; } + +.icon-fork:before { content: "\e6f2"; } + +.icon-edit1:before { content: "\e692"; } + diff --git a/web - 副本/client/assets/fonticon/iconfont.eot b/web - 副本/client/assets/fonticon/iconfont.eot new file mode 100644 index 0000000..40c1510 Binary files /dev/null and b/web - 副本/client/assets/fonticon/iconfont.eot differ diff --git a/web - 副本/client/assets/fonticon/iconfont.js b/web - 副本/client/assets/fonticon/iconfont.js new file mode 100644 index 0000000..89850f9 --- /dev/null +++ b/web - 副本/client/assets/fonticon/iconfont.js @@ -0,0 +1 @@ +(function(window){var svgSprite=""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+''+""+''+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+''+""+''+""+""+""+''+""+''+""+""+""+''+""+''+""+""+""+"";var script=function(){var scripts=document.getElementsByTagName("script");return scripts[scripts.length-1]}();var shouldInjectCss=script.getAttribute("data-injectcss");var ready=function(fn){if(document.addEventListener){if(~["complete","loaded","interactive"].indexOf(document.readyState)){setTimeout(fn,0)}else{var loadFn=function(){document.removeEventListener("DOMContentLoaded",loadFn,false);fn()};document.addEventListener("DOMContentLoaded",loadFn,false)}}else if(document.attachEvent){IEContentLoaded(window,fn)}function IEContentLoaded(w,fn){var d=w.document,done=false,init=function(){if(!done){done=true;fn()}};var polling=function(){try{d.documentElement.doScroll("left")}catch(e){setTimeout(polling,50);return}init()};polling();d.onreadystatechange=function(){if(d.readyState=="complete"){d.onreadystatechange=null;init()}}}};var before=function(el,target){target.parentNode.insertBefore(el,target)};var prepend=function(el,target){if(target.firstChild){before(el,target.firstChild)}else{target.appendChild(el)}};function appendSvg(){var div,svg;div=document.createElement("div");div.innerHTML=svgSprite;svgSprite=null;svg=div.getElementsByTagName("svg")[0];if(svg){svg.setAttribute("aria-hidden","true");svg.style.position="absolute";svg.style.width=0;svg.style.height=0;svg.style.overflow="hidden";prepend(svg,document.body)}}if(shouldInjectCss&&!window.__iconfont__svg__cssinject__){window.__iconfont__svg__cssinject__=true;try{document.write("")}catch(e){console&&console.log(e)}}ready(appendSvg)})(window) \ No newline at end of file diff --git a/web - 副本/client/assets/fonticon/iconfont.svg b/web - 副本/client/assets/fonticon/iconfont.svg new file mode 100644 index 0000000..2f6bc2c --- /dev/null +++ b/web - 副本/client/assets/fonticon/iconfont.svg @@ -0,0 +1,927 @@ + + + + +Created by FontForge 20120731 at Thu May 11 13:24:17 2017 + By admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web - 副本/client/assets/fonticon/iconfont.ttf b/web - 副本/client/assets/fonticon/iconfont.ttf new file mode 100644 index 0000000..892adef Binary files /dev/null and b/web - 副本/client/assets/fonticon/iconfont.ttf differ diff --git a/web - 副本/client/assets/fonticon/iconfont.woff b/web - 副本/client/assets/fonticon/iconfont.woff new file mode 100644 index 0000000..d1e5450 Binary files /dev/null and b/web - 副本/client/assets/fonticon/iconfont.woff differ diff --git a/web - 副本/client/assets/images/.DS_Store b/web - 副本/client/assets/images/.DS_Store new file mode 100644 index 0000000..5b5119c Binary files /dev/null and b/web - 副本/client/assets/images/.DS_Store differ diff --git a/web - 副本/client/assets/images/arrow-right.png b/web - 副本/client/assets/images/arrow-right.png new file mode 100644 index 0000000..60f9e29 Binary files /dev/null and b/web - 副本/client/assets/images/arrow-right.png differ diff --git a/web - 副本/client/assets/images/avatar/guofei.png b/web - 副本/client/assets/images/avatar/guofei.png new file mode 100644 index 0000000..604f00c Binary files /dev/null and b/web - 副本/client/assets/images/avatar/guofei.png differ diff --git a/web - 副本/client/assets/images/avatar/jiangzheng.png b/web - 副本/client/assets/images/avatar/jiangzheng.png new file mode 100644 index 0000000..c03eab1 Binary files /dev/null and b/web - 副本/client/assets/images/avatar/jiangzheng.png differ diff --git a/web - 副本/client/assets/images/avatar/liuwei.png b/web - 副本/client/assets/images/avatar/liuwei.png new file mode 100644 index 0000000..c3df7a3 Binary files /dev/null and b/web - 副本/client/assets/images/avatar/liuwei.png differ diff --git a/web - 副本/client/assets/images/avatar/liuwei2.png b/web - 副本/client/assets/images/avatar/liuwei2.png new file mode 100644 index 0000000..eb52418 Binary files /dev/null and b/web - 副本/client/assets/images/avatar/liuwei2.png differ diff --git a/web - 副本/client/assets/images/avatar/liwenguo.png b/web - 副本/client/assets/images/avatar/liwenguo.png new file mode 100644 index 0000000..259befc Binary files /dev/null and b/web - 副本/client/assets/images/avatar/liwenguo.png differ diff --git a/web - 副本/client/assets/images/avatar/mmexport.png b/web - 副本/client/assets/images/avatar/mmexport.png new file mode 100644 index 0000000..d9405df Binary files /dev/null and b/web - 副本/client/assets/images/avatar/mmexport.png differ diff --git a/web - 副本/client/assets/images/avatar/wenzhe.png b/web - 副本/client/assets/images/avatar/wenzhe.png new file mode 100644 index 0000000..4954950 Binary files /dev/null and b/web - 副本/client/assets/images/avatar/wenzhe.png differ diff --git a/web - 副本/client/assets/images/avatar/wulongbiao.png b/web - 副本/client/assets/images/avatar/wulongbiao.png new file mode 100644 index 0000000..1cbf45d Binary files /dev/null and b/web - 副本/client/assets/images/avatar/wulongbiao.png differ diff --git a/web - 副本/client/assets/images/avatar/yanwenzhi.png b/web - 副本/client/assets/images/avatar/yanwenzhi.png new file mode 100644 index 0000000..4f5af4b Binary files /dev/null and b/web - 副本/client/assets/images/avatar/yanwenzhi.png differ diff --git a/web - 副本/client/assets/images/avatar/yaojianjun.png b/web - 副本/client/assets/images/avatar/yaojianjun.png new file mode 100644 index 0000000..8289f41 Binary files /dev/null and b/web - 副本/client/assets/images/avatar/yaojianjun.png differ diff --git a/web - 副本/client/assets/images/avatar/yaowenting.png b/web - 副本/client/assets/images/avatar/yaowenting.png new file mode 100644 index 0000000..5f1fe8c Binary files /dev/null and b/web - 副本/client/assets/images/avatar/yaowenting.png differ diff --git a/web - 副本/client/assets/images/avatar/yaowenting2.png b/web - 副本/client/assets/images/avatar/yaowenting2.png new file mode 100644 index 0000000..f2524e7 Binary files /dev/null and b/web - 副本/client/assets/images/avatar/yaowenting2.png differ diff --git a/web - 副本/client/assets/images/avatar/zhangbo.png b/web - 副本/client/assets/images/avatar/zhangbo.png new file mode 100644 index 0000000..7a0ad44 Binary files /dev/null and b/web - 副本/client/assets/images/avatar/zhangbo.png differ diff --git a/web - 副本/client/assets/images/avatar/zhangjing.png b/web - 副本/client/assets/images/avatar/zhangjing.png new file mode 100644 index 0000000..f85c219 Binary files /dev/null and b/web - 副本/client/assets/images/avatar/zhangjing.png differ diff --git a/web - 副本/client/assets/images/avatar_1.png b/web - 副本/client/assets/images/avatar_1.png new file mode 100644 index 0000000..7f3bdb8 Binary files /dev/null and b/web - 副本/client/assets/images/avatar_1.png differ diff --git a/web - 副本/client/assets/images/barbg.png b/web - 副本/client/assets/images/barbg.png new file mode 100644 index 0000000..13b6577 Binary files /dev/null and b/web - 副本/client/assets/images/barbg.png differ diff --git a/web - 副本/client/assets/images/dang.png b/web - 副本/client/assets/images/dang.png new file mode 100644 index 0000000..e60fc5d Binary files /dev/null and b/web - 副本/client/assets/images/dang.png differ diff --git a/web - 副本/client/assets/images/denglu.png b/web - 副本/client/assets/images/denglu.png new file mode 100644 index 0000000..671dc46 Binary files /dev/null and b/web - 副本/client/assets/images/denglu.png differ diff --git a/web - 副本/client/assets/images/gonghui_bg.png b/web - 副本/client/assets/images/gonghui_bg.png new file mode 100644 index 0000000..7541147 Binary files /dev/null and b/web - 副本/client/assets/images/gonghui_bg.png differ diff --git a/web - 副本/client/assets/images/mima.png b/web - 副本/client/assets/images/mima.png new file mode 100644 index 0000000..b1d2b22 Binary files /dev/null and b/web - 副本/client/assets/images/mima.png differ diff --git a/web - 副本/client/assets/images/pagebg.png b/web - 副本/client/assets/images/pagebg.png new file mode 100644 index 0000000..761a14b Binary files /dev/null and b/web - 副本/client/assets/images/pagebg.png differ diff --git a/web - 副本/client/assets/images/renshu_bg.png b/web - 副本/client/assets/images/renshu_bg.png new file mode 100644 index 0000000..37a9d31 Binary files /dev/null and b/web - 副本/client/assets/images/renshu_bg.png differ diff --git a/web - 副本/client/assets/images/shangxinli/chentao.png b/web - 副本/client/assets/images/shangxinli/chentao.png new file mode 100644 index 0000000..0534fc1 Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/chentao.png differ diff --git a/web - 副本/client/assets/images/shangxinli/dingjin.png b/web - 副本/client/assets/images/shangxinli/dingjin.png new file mode 100644 index 0000000..e41a625 Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/dingjin.png differ diff --git a/web - 副本/client/assets/images/shangxinli/fubingbing.png b/web - 副本/client/assets/images/shangxinli/fubingbing.png new file mode 100644 index 0000000..8a77bcf Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/fubingbing.png differ diff --git a/web - 副本/client/assets/images/shangxinli/huangyuwei.png b/web - 副本/client/assets/images/shangxinli/huangyuwei.png new file mode 100644 index 0000000..b15a5ac Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/huangyuwei.png differ diff --git a/web - 副本/client/assets/images/shangxinli/huwenhui.png b/web - 副本/client/assets/images/shangxinli/huwenhui.png new file mode 100644 index 0000000..d8cb7b2 Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/huwenhui.png differ diff --git a/web - 副本/client/assets/images/shangxinli/liuqi.png b/web - 副本/client/assets/images/shangxinli/liuqi.png new file mode 100644 index 0000000..88d8040 Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/liuqi.png differ diff --git a/web - 副本/client/assets/images/shangxinli/ouyanghuaqiang.png b/web - 副本/client/assets/images/shangxinli/ouyanghuaqiang.png new file mode 100644 index 0000000..858ebc5 Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/ouyanghuaqiang.png differ diff --git a/web - 副本/client/assets/images/shangxinli/tianhanxin.png b/web - 副本/client/assets/images/shangxinli/tianhanxin.png new file mode 100644 index 0000000..eee355e Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/tianhanxin.png differ diff --git a/web - 副本/client/assets/images/shangxinli/wuchengyun.png b/web - 副本/client/assets/images/shangxinli/wuchengyun.png new file mode 100644 index 0000000..82e7706 Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/wuchengyun.png differ diff --git a/web - 副本/client/assets/images/shangxinli/yangwei.png b/web - 副本/client/assets/images/shangxinli/yangwei.png new file mode 100644 index 0000000..0a7a915 Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/yangwei.png differ diff --git a/web - 副本/client/assets/images/shangxinli/yucongwen.png b/web - 副本/client/assets/images/shangxinli/yucongwen.png new file mode 100644 index 0000000..adfa2ff Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/yucongwen.png differ diff --git a/web - 副本/client/assets/images/shangxinli/zhangjun.png b/web - 副本/client/assets/images/shangxinli/zhangjun.png new file mode 100644 index 0000000..9012e2d Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/zhangjun.png differ diff --git a/web - 副本/client/assets/images/shangxinli/zhangwen.png b/web - 副本/client/assets/images/shangxinli/zhangwen.png new file mode 100644 index 0000000..f5ad21c Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/zhangwen.png differ diff --git a/web - 副本/client/assets/images/shangxinli/zhangwenjun.png b/web - 副本/client/assets/images/shangxinli/zhangwenjun.png new file mode 100644 index 0000000..1bc701a Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/zhangwenjun.png differ diff --git a/web - 副本/client/assets/images/shangxinli/zhangziyang.png b/web - 副本/client/assets/images/shangxinli/zhangziyang.png new file mode 100644 index 0000000..bf5d487 Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/zhangziyang.png differ diff --git a/web - 副本/client/assets/images/shangxinli/zhouhongsheng.png b/web - 副本/client/assets/images/shangxinli/zhouhongsheng.png new file mode 100644 index 0000000..7c63bbe Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/zhouhongsheng.png differ diff --git a/web - 副本/client/assets/images/shangxinli/zhuqiong.png b/web - 副本/client/assets/images/shangxinli/zhuqiong.png new file mode 100644 index 0000000..2e2d355 Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/zhuqiong.png differ diff --git a/web - 副本/client/assets/images/shangxinli/zouquanjin.png b/web - 副本/client/assets/images/shangxinli/zouquanjin.png new file mode 100644 index 0000000..e3fc33a Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli/zouquanjin.png differ diff --git a/web - 副本/client/assets/images/shangxinli_title.png b/web - 副本/client/assets/images/shangxinli_title.png new file mode 100644 index 0000000..37efae4 Binary files /dev/null and b/web - 副本/client/assets/images/shangxinli_title.png differ diff --git a/web - 副本/client/assets/images/shouji.png b/web - 副本/client/assets/images/shouji.png new file mode 100644 index 0000000..a2730d6 Binary files /dev/null and b/web - 副本/client/assets/images/shouji.png differ diff --git a/web - 副本/client/assets/images/tuceng.png b/web - 副本/client/assets/images/tuceng.png new file mode 100644 index 0000000..17e5d6e Binary files /dev/null and b/web - 副本/client/assets/images/tuceng.png differ diff --git a/web - 副本/client/assets/images/wulongbiao.png b/web - 副本/client/assets/images/wulongbiao.png new file mode 100644 index 0000000..9f0ed3a Binary files /dev/null and b/web - 副本/client/assets/images/wulongbiao.png differ diff --git a/web - 副本/client/assets/images/xinweng.png b/web - 副本/client/assets/images/xinweng.png new file mode 100644 index 0000000..f1bd861 Binary files /dev/null and b/web - 副本/client/assets/images/xinweng.png differ diff --git a/web - 副本/client/assets/images/zhuyaochengyuan_bg.png b/web - 副本/client/assets/images/zhuyaochengyuan_bg.png new file mode 100644 index 0000000..ca829c6 Binary files /dev/null and b/web - 副本/client/assets/images/zhuyaochengyuan_bg.png differ diff --git a/web - 副本/client/assets/images/图层 2.png b/web - 副本/client/assets/images/图层 2.png new file mode 100644 index 0000000..17e5d6e Binary files /dev/null and b/web - 副本/client/assets/images/图层 2.png differ diff --git a/web - 副本/client/assets/images/密码.png b/web - 副本/client/assets/images/密码.png new file mode 100644 index 0000000..b1d2b22 Binary files /dev/null and b/web - 副本/client/assets/images/密码.png differ diff --git a/web - 副本/client/assets/images/手机_填充.png b/web - 副本/client/assets/images/手机_填充.png new file mode 100644 index 0000000..a2730d6 Binary files /dev/null and b/web - 副本/client/assets/images/手机_填充.png differ diff --git a/web - 副本/client/assets/js/jessibuca/App.less b/web - 副本/client/assets/js/jessibuca/App.less new file mode 100644 index 0000000..ebd35cb --- /dev/null +++ b/web - 副本/client/assets/js/jessibuca/App.less @@ -0,0 +1,121 @@ +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +.root { + display: flex; + place-content: center; + margin-top: 3rem; +} + +.jessibucaContainer-shell { + backdrop-filter: blur(5px); + background: hsla(0, 0%, 50%, 0.5); + padding: 30px 4px 10px 4px; + /* border: 2px solid black; */ + width: auto; + position: relative; + border-radius: 5px; + box-shadow: 0 10px 20px; +} + +.jessibucaContainer-shell:before { + content: "jessibuca demo player"; + position: absolute; + color: darkgray; + top: 4px; + left: 10px; + text-shadow: 1px 1px black; +} + +#jessibucaContainer { + background: rgba(13, 14, 27, 0.7); + width: 340px; + height: 198px; +} + +.input { + display: flex; + margin-top: 10px; + color: white; + place-content: stretch; +} + +.input2 { + bottom: 0px; +} + +.input input { + flex: auto; +} + +.err { + position: absolute; + top: 40px; + left: 10px; + color: red; +} + +.option { + position: absolute; + top: 4px; + right: 10px; + display: flex; + place-content: center; + font-size: 12px; +} + +.option span { + color: white; +} + +.page { + /* background: url('./bg.jpg'); */ + background-repeat: no-repeat; + background-position: top; +} + +@media (max-width: 720px) { + #jessibucaContainer { + width: 90vw; + height: 52.7vw; + } +} + + + diff --git a/web - 副本/client/assets/js/jessibuca/decoder.js b/web - 副本/client/assets/js/jessibuca/decoder.js new file mode 100644 index 0000000..b4dbfae --- /dev/null +++ b/web - 副本/client/assets/js/jessibuca/decoder.js @@ -0,0 +1 @@ +!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(require("path"),require("fs"),require("crypto")):"function"==typeof define&&define.amd?define(["path","fs","crypto"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).path,e.fs,e.crypto$1)}(this,(function(e,r,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(e),i=n(r),a=n(t);var s=function(e,r){return e(r={exports:{}},r.exports),r.exports}((function(e){var r,t=void 0!==t?t:{},n={};for(r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);var s,u,c,f,l,d="./this.program",p="object"==typeof window,h="function"==typeof importScripts,m="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,v="";m?(v=h?o.default.dirname(v)+"/":__dirname+"/",s=function(e,r){return f||(f=i.default),l||(l=o.default),e=l.normalize(e),f.readFileSync(e,r?null:"utf8")},c=function(e){var r=s(e,!0);return r.buffer||(r=new Uint8Array(r)),k(r.buffer),r},u=function(e,r,t){f||(f=i.default),l||(l=o.default),e=l.normalize(e),f.readFile(e,(function(e,n){e?t(e):r(n.buffer)}))},process.argv.length>1&&(d=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),e.exports=t,process.on("uncaughtException",(function(e){if(!(e instanceof Zr))throw e})),process.on("unhandledRejection",ee),t.inspect=function(){return"[Emscripten Module object]"}):(p||h)&&(h?v=self.location.href:"undefined"!=typeof document&&document.currentScript&&(v=document.currentScript.src),v=0!==v.indexOf("blob:")?v.substr(0,v.lastIndexOf("/")+1):"",s=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},h&&(c=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),u=function(e,r,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?r(n.response):t()},n.onerror=t,n.send(null)});var y,g,w=t.print||console.log.bind(console),E=t.printErr||console.warn.bind(console);for(r in n)n.hasOwnProperty(r)&&(t[r]=n[r]);function b(e){b.shown||(b.shown={}),b.shown[e]||(b.shown[e]=1,E(e))}n=null,t.arguments,t.thisProgram&&(d=t.thisProgram),t.quit,t.wasmBinary&&(y=t.wasmBinary),t.noExitRuntime,"object"!=typeof WebAssembly&&ee("no native wasm support detected");var _=!1;function k(e,r){e||ee("Assertion failed: "+r)}var T="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function P(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;if(o-r>16&&e.subarray&&T)return T.decode(e.subarray(r,o));for(var i="";r>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function C(e,r){return e?P($,e,r):""}function A(e,r,t,n){if(!(n>0))return 0;for(var o=t,i=t+n-1,a=0;a=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a);if(s<=127){if(t>=i)break;r[t++]=s}else if(s<=2047){if(t+1>=i)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=i)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=i)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function D(e,r,t){return A(e,$,r,t)}function S(e){for(var r=0,t=0;t=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++t)),n<=127?++r:r+=n<=2047?2:n<=65535?3:4}return r}var F,x,$,R,M,O,I,j,U,N,B="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function L(e,r){for(var t=e,n=t>>1,o=n+r/2;!(n>=o)&&M[n];)++n;if((t=n<<1)-e>32&&B)return B.decode($.subarray(e,t));for(var i="",a=0;!(a>=r/2);++a){var s=R[e+2*a>>1];if(0==s)break;i+=String.fromCharCode(s)}return i}function W(e,r,t){if(void 0===t&&(t=2147483647),t<2)return 0;for(var n=r,o=(t-=2)<2*e.length?t/2:e.length,i=0;i>1]=a,r+=2}return R[r>>1]=0,r-n}function z(e){return 2*e.length}function H(e,r){for(var t=0,n="";!(t>=r/4);){var o=O[e+4*t>>2];if(0==o)break;if(++t,o>=65536){var i=o-65536;n+=String.fromCharCode(55296|i>>10,56320|1023&i)}else n+=String.fromCharCode(o)}return n}function V(e,r,t){if(void 0===t&&(t=2147483647),t<4)return 0;for(var n=r,o=n+t-4,i=0;i=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++i);if(O[r>>2]=a,(r+=4)+4>o)break}return O[r>>2]=0,r-n}function X(e){for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r}t.INITIAL_MEMORY;var G=[],q=[],Y=[];var K=0,J=null;function Q(e){K++,t.monitorRunDependencies&&t.monitorRunDependencies(K)}function Z(e){if(K--,t.monitorRunDependencies&&t.monitorRunDependencies(K),0==K&&J){var r=J;J=null,r()}}function ee(e){throw t.onAbort&&t.onAbort(e),E(e+=""),_=!0,e="abort("+e+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(e)}t.preloadedImages={},t.preloadedAudios={};var re,te,ne;function oe(e){return e.startsWith("data:application/octet-stream;base64,")}function ie(e){return e.startsWith("file://")}function ae(e){try{if(e==re&&y)return new Uint8Array(y);if(c)return c(e);throw"both async and sync fetching of the wasm failed"}catch(e){ee(e)}}function se(e){for(;e.length>0;){var r=e.shift();if("function"!=typeof r){var n=r.func;"number"==typeof n?void 0===r.arg?N.get(n)():N.get(n)(r.arg):n(void 0===r.arg?null:r.arg)}else r(t)}}function ue(){var e=new Error;if(!e.stack){try{throw new Error}catch(r){e=r}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}oe(re="decoder.wasm")||(re=function(e){return t.locateFile?t.locateFile(e,v):v+e}(re));var ce={splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,r){for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:function(e){var r="/"===e.charAt(0),t="/"===e.substr(-1);return(e=ce.normalizeArray(e.split("/").filter((function(e){return!!e})),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:function(e){var r=ce.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:function(e){if("/"===e)return"/";var r=(e=(e=ce.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===r?e:e.substr(r+1)},extname:function(e){return ce.splitPath(e)[3]},join:function(){var e=Array.prototype.slice.call(arguments,0);return ce.normalize(e.join("/"))},join2:function(e,r){return ce.normalize(e+"/"+r)}};var fe={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:he.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r="/"===n.charAt(0)}return(r?"/":"")+(e=ce.normalizeArray(e.split("/").filter((function(e){return!!e})),!r).join("/"))||"."},relative:function(e,r){function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=fe.resolve(e).substr(1),r=fe.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s0?t.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(r=window.prompt("Input: "))&&(r+="\n"):"function"==typeof readline&&null!==(r=readline())&&(r+="\n");if(!r)return null;e.input=Hr(r,!0)}return e.input.shift()},put_char:function(e,r){null===r||10===r?(w(P(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(w(P(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(E(P(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(E(P(e.output,0)),e.output=[])}}};function de(e){e=function(e,r){return Math.ceil(e/r)*r}(e,65536);var r=Qr(65536,e);return r?(function(e,r){$.fill(0,e,e+r)}(r,e),r):0}var pe={ops_table:null,mount:function(e){return pe.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(he.isBlkdev(t)||he.isFIFO(t))throw new he.ErrnoError(63);pe.ops_table||(pe.ops_table={dir:{node:{getattr:pe.node_ops.getattr,setattr:pe.node_ops.setattr,lookup:pe.node_ops.lookup,mknod:pe.node_ops.mknod,rename:pe.node_ops.rename,unlink:pe.node_ops.unlink,rmdir:pe.node_ops.rmdir,readdir:pe.node_ops.readdir,symlink:pe.node_ops.symlink},stream:{llseek:pe.stream_ops.llseek}},file:{node:{getattr:pe.node_ops.getattr,setattr:pe.node_ops.setattr},stream:{llseek:pe.stream_ops.llseek,read:pe.stream_ops.read,write:pe.stream_ops.write,allocate:pe.stream_ops.allocate,mmap:pe.stream_ops.mmap,msync:pe.stream_ops.msync}},link:{node:{getattr:pe.node_ops.getattr,setattr:pe.node_ops.setattr,readlink:pe.node_ops.readlink},stream:{}},chrdev:{node:{getattr:pe.node_ops.getattr,setattr:pe.node_ops.setattr},stream:he.chrdev_stream_ops}});var o=he.createNode(e,r,t,n);return he.isDir(o.mode)?(o.node_ops=pe.ops_table.dir.node,o.stream_ops=pe.ops_table.dir.stream,o.contents={}):he.isFile(o.mode)?(o.node_ops=pe.ops_table.file.node,o.stream_ops=pe.ops_table.file.stream,o.usedBytes=0,o.contents=null):he.isLink(o.mode)?(o.node_ops=pe.ops_table.link.node,o.stream_ops=pe.ops_table.link.stream):he.isChrdev(o.mode)&&(o.node_ops=pe.ops_table.chrdev.node,o.stream_ops=pe.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r)if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr:function(e){var r={};return r.dev=he.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,he.isDir(e.mode)?r.size=4096:he.isFile(e.mode)?r.size=e.usedBytes:he.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&pe.resizeFileStorage(e,r.size)},lookup:function(e,r){throw he.genericErrors[44]},mknod:function(e,r,t,n){return pe.createNode(e,r,t,n)},rename:function(e,r,t){if(he.isDir(e.mode)){var n;try{n=he.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new he.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=he.lookupNode(e,r);for(var n in t.contents)throw new he.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=pe.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!he.isLink(e.mode))throw new he.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-o,n);if(a>8&&i.subarray)r.set(i.subarray(o,o+a),t);else for(var s=0;s0||n+t8)throw new he.ErrnoError(32);for(var o=ce.normalizeArray(e.split("/").filter((function(e){return!!e})),!1),i=he.root,a="/",s=0;s40)throw new he.ErrnoError(32)}}return{path:a,node:i}},getPath:function(e){for(var r;;){if(he.isRoot(e)){var t=e.mount.mountpoint;return r?"/"!==t[t.length-1]?t+"/"+r:t+r:t}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:function(e,r){for(var t=0,n=0;n>>0)%he.nameTable.length},hashAddNode:function(e){var r=he.hashName(e.parent.id,e.name);e.name_next=he.nameTable[r],he.nameTable[r]=e},hashRemoveNode:function(e){var r=he.hashName(e.parent.id,e.name);if(he.nameTable[r]===e)he.nameTable[r]=e.name_next;else for(var t=he.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:function(e,r){var t=he.mayLookup(e);if(t)throw new he.ErrnoError(t,e);for(var n=he.hashName(e.id,r),o=he.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===r)return o}return he.lookup(e,r)},createNode:function(e,r,t,n){var o=new he.FSNode(e,r,t,n);return he.hashAddNode(o),o},destroyNode:function(e){he.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(e){var r=he.flagModes[e];if(void 0===r)throw new Error("Unknown file open mode: "+e);return r},flagsToPermissionString:function(e){var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:function(e,r){return he.ignorePermissions||(!r.includes("r")||292&e.mode)&&(!r.includes("w")||146&e.mode)&&(!r.includes("x")||73&e.mode)?0:2},mayLookup:function(e){var r=he.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate:function(e,r){try{he.lookupNode(e,r);return 20}catch(e){}return he.nodePermissions(e,"wx")},mayDelete:function(e,r,t){var n;try{n=he.lookupNode(e,r)}catch(e){return e.errno}var o=he.nodePermissions(e,"wx");if(o)return o;if(t){if(!he.isDir(n.mode))return 54;if(he.isRoot(n)||he.getPath(n)===he.cwd())return 10}else if(he.isDir(n.mode))return 31;return 0},mayOpen:function(e,r){return e?he.isLink(e.mode)?32:he.isDir(e.mode)&&("r"!==he.flagsToPermissionString(r)||512&r)?31:he.nodePermissions(e,he.flagsToPermissionString(r)):44},MAX_OPEN_FDS:4096,nextfd:function(e,r){e=e||0,r=r||he.MAX_OPEN_FDS;for(var t=e;t<=r;t++)if(!he.streams[t])return t;throw new he.ErrnoError(33)},getStream:function(e){return he.streams[e]},createStream:function(e,r,t){he.FSStream||(he.FSStream=function(){},he.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}});var n=new he.FSStream;for(var o in e)n[o]=e[o];e=n;var i=he.nextfd(r,t);return e.fd=i,he.streams[i]=e,e},closeStream:function(e){he.streams[e]=null},chrdev_stream_ops:{open:function(e){var r=he.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new he.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,r){return e<<8|r},registerDevice:function(e,r){he.devices[e]={stream_ops:r}},getDevice:function(e){return he.devices[e]},getMounts:function(e){for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:function(e,r){"function"==typeof e&&(r=e,e=!1),he.syncFSRequests++,he.syncFSRequests>1&&E("warning: "+he.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=he.getMounts(he.root.mount),n=0;function o(e){return he.syncFSRequests--,r(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach((function(r){if(!r.type.syncfs)return i(null);r.type.syncfs(r,e,i)}))},mount:function(e,r,t){var n,o="/"===t,i=!t;if(o&&he.root)throw new he.ErrnoError(10);if(!o&&!i){var a=he.lookupPath(t,{follow_mount:!1});if(t=a.path,n=a.node,he.isMountpoint(n))throw new he.ErrnoError(10);if(!he.isDir(n.mode))throw new he.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?he.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(e){var r=he.lookupPath(e,{follow_mount:!1});if(!he.isMountpoint(r.node))throw new he.ErrnoError(28);var t=r.node,n=t.mounted,o=he.getMounts(n);Object.keys(he.nameTable).forEach((function(e){for(var r=he.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&he.destroyNode(r),r=t}})),t.mounted=null;var i=t.mount.mounts.indexOf(n);t.mount.mounts.splice(i,1)},lookup:function(e,r){return e.node_ops.lookup(e,r)},mknod:function(e,r,t){var n=he.lookupPath(e,{parent:!0}).node,o=ce.basename(e);if(!o||"."===o||".."===o)throw new he.ErrnoError(28);var i=he.mayCreate(n,o);if(i)throw new he.ErrnoError(i);if(!n.node_ops.mknod)throw new he.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:function(e,r){return r=void 0!==r?r:438,r&=4095,r|=32768,he.mknod(e,r,0)},mkdir:function(e,r){return r=void 0!==r?r:511,r&=1023,r|=16384,he.mknod(e,r,0)},mkdirTree:function(e,r){for(var t=e.split("/"),n="",o=0;othis.length-1||e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},i.prototype.setDataGetter=function(e){this.getter=e},i.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",t,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+t+". Status: "+e.status);var r,n=Number(e.getResponseHeader("Content-length")),o=(r=e.getResponseHeader("Accept-Ranges"))&&"bytes"===r,i=(r=e.getResponseHeader("Content-Encoding"))&&"gzip"===r,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(e){var r=e*a,o=(e+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,r){if(e>r)throw new Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==a&&o.setRequestHeader("Range","bytes="+e+"-"+r),"undefined"!=typeof Uint8Array&&(o.responseType="arraybuffer"),o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):Hr(o.responseText||"",!0)}(r,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,w("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new i;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:a}}else s={isDevice:!1,url:t};var u=he.createFile(e,r,s,n,o);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};return Object.keys(u.stream_ops).forEach((function(e){var r=u.stream_ops[e];c[e]=function(){return he.forceLoadFile(u),r.apply(null,arguments)}})),c.read=function(e,r,t,n,o){he.forceLoadFile(u);var i=e.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var s=0;s>2]=n.dev,O[t+4>>2]=0,O[t+8>>2]=n.ino,O[t+12>>2]=n.mode,O[t+16>>2]=n.nlink,O[t+20>>2]=n.uid,O[t+24>>2]=n.gid,O[t+28>>2]=n.rdev,O[t+32>>2]=0,ne=[n.size>>>0,(te=n.size,+Math.abs(te)>=1?te>0?(0|Math.min(+Math.floor(te/4294967296),4294967295))>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],O[t+40>>2]=ne[0],O[t+44>>2]=ne[1],O[t+48>>2]=4096,O[t+52>>2]=n.blocks,O[t+56>>2]=n.atime.getTime()/1e3|0,O[t+60>>2]=0,O[t+64>>2]=n.mtime.getTime()/1e3|0,O[t+68>>2]=0,O[t+72>>2]=n.ctime.getTime()/1e3|0,O[t+76>>2]=0,ne=[n.ino>>>0,(te=n.ino,+Math.abs(te)>=1?te>0?(0|Math.min(+Math.floor(te/4294967296),4294967295))>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],O[t+80>>2]=ne[0],O[t+84>>2]=ne[1],0},doMsync:function(e,r,t,n,o){var i=$.slice(e,e+t);he.msync(r,i,o,t,n)},doMkdir:function(e,r){return"/"===(e=ce.normalize(e))[e.length-1]&&(e=e.substr(0,e.length-1)),he.mkdir(e,r,0),0},doMknod:function(e,r,t){switch(61440&r){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return he.mknod(e,r,t),0},doReadlink:function(e,r,t){if(t<=0)return-28;var n=he.readlink(e),o=Math.min(t,S(n)),i=x[r+o];return D(n,r,t+1),x[r+o]=i,o},doAccess:function(e,r){if(-8&r)return-28;var t;if(!(t=he.lookupPath(e,{follow:!0}).node))return-44;var n="";return 4&r&&(n+="r"),2&r&&(n+="w"),1&r&&(n+="x"),n&&he.nodePermissions(t,n)?-2:0},doDup:function(e,r,t){var n=he.getStream(t);return n&&he.close(n),he.open(e,r,0,t,t).fd},doReadv:function(e,r,t,n){for(var o=0,i=0;i>2],s=O[r+(8*i+4)>>2],u=he.read(e,x,a,s,n);if(u<0)return-1;if(o+=u,u>2],s=O[r+(8*i+4)>>2],u=he.write(e,x,a,s,n);if(u<0)return-1;o+=u}return o},varargs:void 0,get:function(){return me.varargs+=4,O[me.varargs-4>>2]},getStr:function(e){return C(e)},getStreamFromFD:function(e){var r=he.getStream(e);if(!r)throw new he.ErrnoError(8);return r},get64:function(e,r){return e}};function ve(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var ye=void 0;function ge(e){for(var r="",t=e;$[t];)r+=ye[$[t++]];return r}var we={},Ee={},be={};function _e(e){if(void 0===e)return"_unknown";var r=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return r>=48&&r<=57?"_"+e:e}function ke(e,r){return e=_e(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(r)}function Te(e,r){var t=ke(r,(function(e){this.name=r,this.message=e;var t=new Error(e).stack;void 0!==t&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))}));return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},t}var Pe=void 0;function Ce(e){throw new Pe(e)}var Ae=void 0;function De(e){throw new Ae(e)}function Se(e,r,t){function n(r){var n=t(r);n.length!==e.length&&De("Mismatched type converter count");for(var o=0;o>2])}function Ze(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function er(e){this.rawDestructor&&this.rawDestructor(e)}function rr(e){null!==e&&e.delete()}function tr(e,r,t){if(r===t)return e;if(void 0===t.baseClass)return null;var n=tr(e,r,t.baseClass);return null===n?null:t.downcast(n)}function nr(){return Object.keys(ar).length}function or(){var e=[];for(var r in ar)ar.hasOwnProperty(r)&&e.push(ar[r]);return e}function ir(e){Be=e,Le.length&&Be&&Be(We)}var ar={};function sr(e,r){return r=function(e,r){for(void 0===r&&Ce("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r}(e,r),ar[r]}function ur(e,r){return r.ptrType&&r.ptr||De("makeClassHandle requires ptr and ptrType"),!!r.smartPtrType!==!!r.smartPtr&&De("Both smartPtrType and smartPtr must be specified"),r.count={value:1},Ie(Object.create(e,{$$:{value:r}}))}function cr(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=sr(this.registeredClass,r);if(void 0!==t){if(0===t.$$.count.value)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function o(){return this.isSmartPointer?ur(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):ur(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var i,a=this.registeredClass.getActualType(r),s=Ve[a];if(!s)return o.call(this);i=this.isConst?s.constPointerType:s.pointerType;var u=tr(r,this.registeredClass,i.registeredClass);return null===u?o.call(this):this.isSmartPointer?ur(i.registeredClass.instancePrototype,{ptrType:i,ptr:u,smartPtrType:this,smartPtr:e}):ur(i.registeredClass.instancePrototype,{ptrType:i,ptr:u})}function fr(e,r,t,n,o,i,a,s,u,c,f){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=o,this.pointeeType=i,this.sharingPolicy=a,this.rawGetPointee=s,this.rawConstructor=u,this.rawShare=c,this.rawDestructor=f,o||void 0!==r.baseClass?this.toWireType=Ke:n?(this.toWireType=Ye,this.destructorFunction=null):(this.toWireType=Je,this.destructorFunction=null)}function lr(e,r,n){return e.includes("j")?function(e,r,n){var o=t["dynCall_"+e];return n&&n.length?o.apply(null,[r].concat(n)):o.call(null,r)}(e,r,n):N.get(r).apply(null,n)}function dr(e,r){var t,n,o,i=(e=ge(e)).includes("j")?(t=e,n=r,o=[],function(){o.length=arguments.length;for(var e=0;e>2)+n]);return t}function yr(e){for(;e.length;){var r=e.pop();e.pop()(r)}}function gr(e,r){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var t=ke(e.name||"unknownFunctionName",(function(){}));t.prototype=e.prototype;var n=new t,o=e.apply(n,r);return o instanceof Object?o:n}function wr(e,r,t,n,o){var i=r.length;i<2&&Ce("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==r[1]&&null!==t,s=!1,u=1;u0?", ":"")+l),d+=(c?"var rv = ":"")+"invoker(fn"+(l.length>0?", ":"")+l+");\n",s)d+="runDestructors(destructors);\n";else for(u=a?1:2;u4&&0==--_r[e].refcount&&(_r[e]=void 0,br.push(e))}function Tr(){for(var e=0,r=5;r<_r.length;++r)void 0!==_r[r]&&++e;return e}function Pr(){for(var e=5;e<_r.length;++e)if(void 0!==_r[e])return _r[e];return null}function Cr(e){switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var r=br.length?br.pop():_r.length;return _r[r]={refcount:1,value:e},r}}function Ar(e){if(null===e)return"null";var r=typeof e;return"object"===r||"array"===r||"function"===r?e.toString():""+e}function Dr(e,r){switch(r){case 2:return function(e){return this.fromWireType(j[e>>2])};case 3:return function(e){return this.fromWireType(U[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Sr(e,r,t){switch(r){case 0:return t?function(e){return x[e]}:function(e){return $[e]};case 1:return t?function(e){return R[e>>1]}:function(e){return M[e>>1]};case 2:return t?function(e){return O[e>>2]}:function(e){return I[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function Fr(e){return e||Ce("Cannot use deleted val. handle = "+e),_r[e].value}function xr(e,r){var t=Ee[e];return void 0===t&&Ce(r+" has unknown type "+hr(e)),t}var $r={};var Rr=[];function Mr(e,r){return(e>>>0)+4294967296*r}function Or(e,r){if(e<=0)return e;var t=r<=32?Math.abs(1<=t&&(r<=32||e>t)&&(e=-2*t+e),e}function Ir(e,r){return e>=0?e:r<=32?2*Math.abs(1<0?"\n":"")+function(e){var r=ue(),t=r.lastIndexOf("_emscripten_log"),n=r.lastIndexOf("_emscripten_get_callstack"),o=r.indexOf("\n",Math.max(t,n))+1;r=r.slice(o),32&e&&b("EM_LOG_DEMANGLE is deprecated; ignoring"),8&e&&"undefined"==typeof emscripten_source_map&&(b('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.'),e^=8,e|=16);var i=null;if(128&e)for(i=jr(arguments);i[1].includes("_emscripten_");)i=jr(i[0]);var a=r.split("\n");r="";var s=new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"),u=new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"),c=new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");for(var f in a){var l=a[f],d="",p="",h=0,m=0,v=c.exec(l);if(v&&5==v.length)d=v[1],p=v[2],h=v[3],m=v[4];else{if((v=s.exec(l))||(v=u.exec(l)),!(v&&v.length>=4)){r+=l+"\n";continue}d=v[1],p=v[2],h=v[3],m=0|v[4]}var y=!1;if(8&e){var g=emscripten_source_map.originalPositionFor({line:h,column:m});(y=g&&g.source)&&(64&e&&(g.source=g.source.substring(g.source.replace(/\\/g,"/").lastIndexOf("/")+1)),r+=" at "+d+" ("+g.source+":"+g.line+":"+g.column+")\n")}(16&e||!y)&&(64&e&&(p=p.substring(p.replace(/\\/g,"/").lastIndexOf("/")+1)),r+=(y?" = "+d:" at "+d)+" ("+p+":"+h+":"+m+")\n"),128&e&&i[0]&&(i[1]==d&&i[2].length>0&&(r=r.replace(/\s+$/,""),r+=" with values: "+i[1]+i[2]+"\n"),i=jr(i[0]))}return r.replace(/\s+$/,"")}(e)),1&e?4&e?E(r):2&e?console.warn(r):512&e?console.info(r):256&e?console.debug(r):w(r):6&e?E(r):w(r)}var Nr={};function Br(){if(!Br.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:d||"./this.program"};for(var r in Nr)void 0===Nr[r]?delete e[r]:e[r]=Nr[r];var t=[];for(var r in e)t.push(r+"="+e[r]);Br.strings=t}return Br.strings}var Lr=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=he.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n},Wr=365,zr=146;function Hr(e,r,t){var n=t>0?t:S(e)+1,o=new Array(n),i=A(e,o,0,o.length);return r&&(o.length=i),o}Object.defineProperties(Lr.prototype,{read:{get:function(){return(this.mode&Wr)===Wr},set:function(e){e?this.mode|=Wr:this.mode&=-366}},write:{get:function(){return(this.mode&zr)===zr},set:function(e){e?this.mode|=zr:this.mode&=-147}},isFolder:{get:function(){return he.isDir(this.mode)}},isDevice:{get:function(){return he.isChrdev(this.mode)}}}),he.FSNode=Lr,he.staticInit(),function(){for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);ye=e}(),Pe=t.BindingError=Te(Error,"BindingError"),Ae=t.InternalError=Te(Error,"InternalError"),He.prototype.isAliasOf=xe,He.prototype.clone=je,He.prototype.delete=Ue,He.prototype.isDeleted=Ne,He.prototype.deleteLater=ze,fr.prototype.getPointee=Ze,fr.prototype.destructor=er,fr.prototype.argPackAdvance=8,fr.prototype.readValueFromPointer=Qe,fr.prototype.deleteObject=rr,fr.prototype.fromWireType=cr,t.getInheritedInstanceCount=nr,t.getLiveInheritedInstances=or,t.flushPendingDeletes=We,t.setDelayFunction=ir,pr=t.UnboundTypeError=Te(Error,"UnboundTypeError"),t.count_emval_handles=Tr,t.get_first_emval=Pr;var Vr={y:function(e,r,t){me.varargs=t;try{var n=me.getStreamFromFD(e);switch(r){case 0:return(o=me.get())<0?-28:he.open(n.path,n.flags,0,o).fd;case 1:case 2:case 13:case 14:return 0;case 3:return n.flags;case 4:var o=me.get();return n.flags|=o,0;case 12:o=me.get();return R[o+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return i=28,O[qr()>>2]=i,-1}}catch(e){return void 0!==he&&e instanceof he.ErrnoError||ee(e),-e.errno}var i},x:function(e,r,t){me.varargs=t;try{var n=me.getStr(e),o=t?me.get():0;return he.open(n,r,o).fd}catch(e){return void 0!==he&&e instanceof he.ErrnoError||ee(e),-e.errno}},s:function(e,r,t,n,o){},D:function(e,r,t,n,o){var i=ve(t);Fe(e,{name:r=ge(r),fromWireType:function(e){return!!e},toWireType:function(e,r){return r?n:o},argPackAdvance:8,readValueFromPointer:function(e){var n;if(1===t)n=x;else if(2===t)n=R;else{if(4!==t)throw new TypeError("Unknown boolean type size: "+r);n=O}return this.fromWireType(n[e>>i])},destructorFunction:null})},n:function(e,r,n,o,i,a,s,u,c,f,l,d,p){l=ge(l),a=dr(i,a),u&&(u=dr(s,u)),f&&(f=dr(c,f)),p=dr(d,p);var h=_e(l);!function(e,r,n){t.hasOwnProperty(e)?((void 0===n||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[n])&&Ce("Cannot register public name '"+e+"' twice"),Xe(t,e,e),t.hasOwnProperty(n)&&Ce("Cannot register multiple overloads of a function with the same number of arguments ("+n+")!"),t[e].overloadTable[n]=r):(t[e]=r,void 0!==n&&(t[e].numArguments=n))}(h,(function(){mr("Cannot construct "+l+" due to unbound types",[o])})),Se([e,r,n],o?[o]:[],(function(r){var n,i;r=r[0],i=o?(n=r.registeredClass).instancePrototype:He.prototype;var s=ke(h,(function(){if(Object.getPrototypeOf(this)!==c)throw new Pe("Use 'new' to construct "+l);if(void 0===d.constructor_body)throw new Pe(l+" has no accessible constructor");var e=d.constructor_body[arguments.length];if(void 0===e)throw new Pe("Tried to invoke ctor of "+l+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(d.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),c=Object.create(i,{constructor:{value:s}});s.prototype=c;var d=new Ge(l,s,c,p,n,a,u,f),m=new fr(l,d,!0,!1,!1),v=new fr(l+"*",d,!1,!1,!1),y=new fr(l+" const*",d,!1,!0,!1);return Ve[e]={pointerType:v,constPointerType:y},function(e,r,n){t.hasOwnProperty(e)||De("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==n?t[e].overloadTable[n]=r:(t[e]=r,t[e].argCount=n)}(h,s),[m,v,y]}))},i:function(e,r,t,n,o,i){k(r>0);var a=vr(r,t);o=dr(n,o),Se([],[e],(function(e){var t="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[r-1])throw new Pe("Cannot register multiple constructors with identical number of parameters ("+(r-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[r-1]=function(){mr("Cannot construct "+e.name+" due to unbound types",a)},Se([],a,(function(n){return n.splice(1,0,null),e.registeredClass.constructor_body[r-1]=wr(t,n,null,o,i),[]})),[]}))},f:function(e,r,t,n,o,i,a,s){var u=vr(t,n);r=ge(r),i=dr(o,i),Se([],[e],(function(e){var n=(e=e[0]).name+"."+r;function o(){mr("Cannot call "+n+" due to unbound types",u)}r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&e.registeredClass.pureVirtualFunctions.push(r);var c=e.registeredClass.instancePrototype,f=c[r];return void 0===f||void 0===f.overloadTable&&f.className!==e.name&&f.argCount===t-2?(o.argCount=t-2,o.className=e.name,c[r]=o):(Xe(c,r,n),c[r].overloadTable[t-2]=o),Se([],u,(function(o){var s=wr(n,o,e,i,a);return void 0===c[r].overloadTable?(s.argCount=t-2,c[r]=s):c[r].overloadTable[t-2]=s,[]})),[]}))},I:function(e,r,t,n,o,i,a,s,u,c){r=ge(r),o=dr(n,o),Se([],[e],(function(e){var n=(e=e[0]).name+"."+r,f={get:function(){mr("Cannot access "+n+" due to unbound types",[t,a])},enumerable:!0,configurable:!0};return f.set=u?function(){mr("Cannot access "+n+" due to unbound types",[t,a])}:function(e){Ce(n+" is a read-only property")},Object.defineProperty(e.registeredClass.instancePrototype,r,f),Se([],u?[t,a]:[t],(function(t){var a=t[0],f={get:function(){var r=Er(this,e,n+" getter");return a.fromWireType(o(i,r))},enumerable:!0};if(u){u=dr(s,u);var l=t[1];f.set=function(r){var t=Er(this,e,n+" setter"),o=[];u(c,t,l.toWireType(o,r)),yr(o)}}return Object.defineProperty(e.registeredClass.instancePrototype,r,f),[]})),[]}))},C:function(e,r){Fe(e,{name:r=ge(r),fromWireType:function(e){var r=_r[e].value;return kr(e),r},toWireType:function(e,r){return Cr(r)},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:null})},l:function(e,r,t){var n=ve(t);Fe(e,{name:r=ge(r),fromWireType:function(e){return e},toWireType:function(e,r){if("number"!=typeof r&&"boolean"!=typeof r)throw new TypeError('Cannot convert "'+Ar(r)+'" to '+this.name);return r},argPackAdvance:8,readValueFromPointer:Dr(r,n),destructorFunction:null})},c:function(e,r,t,n,o){r=ge(r),-1===o&&(o=4294967295);var i=ve(t),a=function(e){return e};if(0===n){var s=32-8*t;a=function(e){return e<>>s}}var u=r.includes("unsigned");Fe(e,{name:r,fromWireType:a,toWireType:function(e,t){if("number"!=typeof t&&"boolean"!=typeof t)throw new TypeError('Cannot convert "'+Ar(t)+'" to '+this.name);if(to)throw new TypeError('Passing a number "'+Ar(t)+'" from JS side to C/C++ side to an argument of type "'+r+'", which is outside the valid range ['+n+", "+o+"]!");return u?t>>>0:0|t},argPackAdvance:8,readValueFromPointer:Sr(r,i,0!==n),destructorFunction:null})},b:function(e,r,t){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][r];function o(e){var r=I,t=r[e>>=2],o=r[e+1];return new n(F,o,t)}Fe(e,{name:t=ge(t),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},m:function(e,r){var t="std::string"===(r=ge(r));Fe(e,{name:r,fromWireType:function(e){var r,n=I[e>>2];if(t)for(var o=e+4,i=0;i<=n;++i){var a=e+4+i;if(i==n||0==$[a]){var s=C(o,a-o);void 0===r?r=s:(r+=String.fromCharCode(0),r+=s),o=a+1}}else{var u=new Array(n);for(i=0;i>2]=o,t&&n)D(r,i+4,o+1);else if(n)for(var a=0;a255&&(Xr(i),Ce("String has UTF-16 code units that do not fit in 8 bits")),$[i+4+a]=s}else for(a=0;a>2],a=i(),u=e+4,c=0;c<=o;++c){var f=e+4+c*r;if(c==o||0==a[f>>s]){var l=n(u,f-u);void 0===t?t=l:(t+=String.fromCharCode(0),t+=l),u=f+r}}return Xr(e),t},toWireType:function(e,n){"string"!=typeof n&&Ce("Cannot pass non-string to C++ string type "+t);var i=a(n),u=Gr(4+i+r);return I[u>>2]=i>>s,o(n,u+4,i+r),null!==e&&e.push(Xr,u),u},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:function(e){Xr(e)}})},E:function(e,r){Fe(e,{isVoid:!0,name:r=ge(r),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,r){}})},v:function(e,r,t){e=Fr(e),r=xr(r,"emval::as");var n=[],o=Cr(n);return O[t>>2]=o,r.toWireType(n,e)},e:function(e,r,t,n){var o,i;(e=Rr[e])(r=Fr(r),t=void 0===(i=$r[o=t])?ge(o):i,null,n)},p:kr,d:function(e,r){for(var t=function(e,r){for(var t=new Array(e),n=0;n>2)+n],"parameter "+n);return t}(e,r),n=t[0],o=n.name+"_$"+t.slice(1).map((function(e){return e.name})).join("_")+"$",i=["retType"],a=[n],s="",u=0;u4&&(_r[e].refcount+=1)},q:function(e){yr(_r[e].value),kr(e)},B:function(e,r){return Cr((e=xr(e,"_emval_take_value")).readValueFromPointer(r))},a:function(){ee()},G:function e(){return void 0===e.start&&(e.start=Date.now()),1e3*(Date.now()-e.start)|0},H:function(e,r,t){var n=function(e,r){var t=e,n=r;function o(e){var r;return n=function(e,r){return"double"!==r&&"i64"!==r||7&e&&(e+=4),e}(n,e),"double"===e?(r=U[n>>3],n+=8):"i64"==e?(r=[O[n>>2],O[n+4>>2]],n+=8):(e="i32",r=O[n>>2],n+=4),r}for(var i,a,s,u,c=[];;){var f=t;if(0===(i=x[t>>0]))break;if(a=x[t+1>>0],37==i){var l=!1,d=!1,p=!1,h=!1,m=!1;e:for(;;){switch(a){case 43:l=!0;break;case 45:d=!0;break;case 35:p=!0;break;case 48:if(h)break e;h=!0;break;case 32:m=!0;break;default:break e}t++,a=x[t+1>>0]}var v=0;if(42==a)v=o("i32"),t++,a=x[t+1>>0];else for(;a>=48&&a<=57;)v=10*v+(a-48),t++,a=x[t+1>>0];var y,g=!1,w=-1;if(46==a){if(w=0,g=!0,t++,42==(a=x[t+1>>0]))w=o("i32"),t++;else for(;;){var E=x[t+1>>0];if(E<48||E>57)break;w=10*w+(E-48),t++}a=x[t+1>>0]}switch(w<0&&(w=6,g=!1),String.fromCharCode(a)){case"h":104==x[t+2>>0]?(t++,y=1):y=2;break;case"l":108==x[t+2>>0]?(t++,y=8):y=4;break;case"L":case"q":case"j":y=8;break;case"z":case"t":case"I":y=4;break;default:y=null}switch(y&&t++,a=x[t+1>>0],String.fromCharCode(a)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":var b=100==a||105==a;s=o("i"+8*(y=y||4)),8==y&&(s=117==a?(s[0]>>>0)+4294967296*(s[1]>>>0):Mr(s[0],s[1])),y<=4&&(s=(b?Or:Ir)(s&Math.pow(256,y)-1,8*y));var _=Math.abs(s),k="";if(100==a||105==a)C=Or(s,8*y).toString(10);else if(117==a)C=Ir(s,8*y).toString(10),s=Math.abs(s);else if(111==a)C=(p?"0":"")+_.toString(8);else if(120==a||88==a){if(k=p&&0!=s?"0x":"",s<0){s=-s,C=(_-1).toString(16);for(var T=[],P=0;P=0&&(l?k="+"+k:m&&(k=" "+k)),"-"==C.charAt(0)&&(k="-"+k,C=C.substr(1));k.length+C.lengthS&&S>=-4?(a=(103==a?"f":"F").charCodeAt(0),w-=S+1):(a=(103==a?"e":"E").charCodeAt(0),w--),D=Math.min(w,20)}101==a||69==a?(C=s.toExponential(D),/[eE][-+]\d$/.test(C)&&(C=C.slice(0,-1)+"0"+C.slice(-1))):102!=a&&70!=a||(C=s.toFixed(D),0===s&&((u=s)<0||0===u&&1/u==-1/0)&&(C="-"+C));var F=C.split("e");if(A&&!p)for(;F[0].length>1&&F[0].includes(".")&&("0"==F[0].slice(-1)||"."==F[0].slice(-1));)F[0]=F[0].slice(0,-1);else for(p&&-1==C.indexOf(".")&&(F[0]+=".");w>D++;)F[0]+="0";C=F[0]+(F.length>1?"e"+F[1]:""),69==a&&(C=C.toUpperCase()),s>=0&&(l?C="+"+C:m&&(C=" "+C))}else C=(s<0?"-":"")+"inf",h=!1;for(;C.length>0]);else c=c.concat(Hr("(null)".substr(0,M),!0));if(d)for(;M0;)c.push(32);d||c.push(o("i8"));break;case"n":var I=o("i32*");O[I>>2]=c.length;break;case"%":c.push(i);break;default:for(P=f;P>0])}t+=2}else c.push(i),t+=1}return c}(r,t);Ur(e,P(n,0))},t:function(e){$.length,ee("OOM")},u:function(e,r){var t=0;return Br().forEach((function(n,o){var i=r+t;O[e+4*o>>2]=i,function(e,r,t){for(var n=0;n>0]=e.charCodeAt(n);t||(x[r>>0]=0)}(n,i),t+=n.length+1})),0},w:function(e,r){var t=Br();O[e>>2]=t.length;var n=0;return t.forEach((function(e){n+=e.length+1})),O[r>>2]=n,0},k:function(e){try{var r=me.getStreamFromFD(e);return he.close(r),0}catch(e){return void 0!==he&&e instanceof he.ErrnoError||ee(e),e.errno}},z:function(e,r){try{var t=me.getStreamFromFD(e),n=t.tty?2:he.isDir(t.mode)?3:he.isLink(t.mode)?7:4;return x[r>>0]=n,0}catch(e){return void 0!==he&&e instanceof he.ErrnoError||ee(e),e.errno}},A:function(e,r,t,n){try{var o=me.getStreamFromFD(e),i=me.doReadv(o,r,t);return O[n>>2]=i,0}catch(e){return void 0!==he&&e instanceof he.ErrnoError||ee(e),e.errno}},r:function(e,r,t,n,o){try{var i=me.getStreamFromFD(e),a=4294967296*t+(r>>>0),s=9007199254740992;return a<=-s||a>=s?-61:(he.llseek(i,a,n),ne=[i.position>>>0,(te=i.position,+Math.abs(te)>=1?te>0?(0|Math.min(+Math.floor(te/4294967296),4294967295))>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],O[o>>2]=ne[0],O[o+4>>2]=ne[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0)}catch(e){return void 0!==he&&e instanceof he.ErrnoError||ee(e),e.errno}},j:function(e,r,t,n){try{var o=me.getStreamFromFD(e),i=me.doWritev(o,r,t);return O[n>>2]=i,0}catch(e){return void 0!==he&&e instanceof he.ErrnoError||ee(e),e.errno}},F:function(e){var r=Date.now();return O[e>>2]=r/1e3|0,O[e+4>>2]=r%1e3*1e3|0,0},g:function(e){}};!function(){var e={a:Vr};function r(e,r){var n,o,i=e.exports;t.asm=i,g=t.asm.J,n=g.buffer,F=n,t.HEAP8=x=new Int8Array(n),t.HEAP16=R=new Int16Array(n),t.HEAP32=O=new Int32Array(n),t.HEAPU8=$=new Uint8Array(n),t.HEAPU16=M=new Uint16Array(n),t.HEAPU32=I=new Uint32Array(n),t.HEAPF32=j=new Float32Array(n),t.HEAPF64=U=new Float64Array(n),N=t.asm.N,o=t.asm.K,q.unshift(o),Z()}function n(e){r(e.instance)}function o(r){return function(){if(!y&&(p||h)){if("function"==typeof fetch&&!ie(re))return fetch(re,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+re+"'";return e.arrayBuffer()})).catch((function(){return ae(re)}));if(u)return new Promise((function(e,r){u(re,(function(r){e(new Uint8Array(r))}),r)}))}return Promise.resolve().then((function(){return ae(re)}))}().then((function(r){return WebAssembly.instantiate(r,e)})).then((function(e){return e})).then(r,(function(e){E("failed to asynchronously prepare wasm: "+e),ee(e)}))}if(Q(),t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return E("Module.instantiateWasm callback failed with error: "+e),!1}y||"function"!=typeof WebAssembly.instantiateStreaming||oe(re)||ie(re)||"function"!=typeof fetch?o(n):fetch(re,{credentials:"same-origin"}).then((function(r){return WebAssembly.instantiateStreaming(r,e).then(n,(function(e){return E("wasm streaming compile failed: "+e),E("falling back to ArrayBuffer instantiation"),o(n)}))}))}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.K).apply(null,arguments)};var Xr=t._free=function(){return(Xr=t._free=t.asm.L).apply(null,arguments)},Gr=t._malloc=function(){return(Gr=t._malloc=t.asm.M).apply(null,arguments)},qr=t.___errno_location=function(){return(qr=t.___errno_location=t.asm.O).apply(null,arguments)},Yr=t._strlen=function(){return(Yr=t._strlen=t.asm.P).apply(null,arguments)},Kr=t.___getTypeName=function(){return(Kr=t.___getTypeName=t.asm.Q).apply(null,arguments)};t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.R).apply(null,arguments)};var Jr,Qr=t._memalign=function(){return(Qr=t._memalign=t.asm.S).apply(null,arguments)};function Zr(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function et(e){function r(){Jr||(Jr=!0,t.calledRun=!0,_||(t.noFSInit||he.init.initialized||he.init(),he.ignorePermissions=!1,se(q),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),Y.unshift(e);var e;se(Y)}()))}K>0||(!function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),G.unshift(e);var e;se(G)}(),K>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),r()}),1)):r()))}if(t.dynCall_ijiii=function(){return(t.dynCall_ijiii=t.asm.T).apply(null,arguments)},t.dynCall_viiijj=function(){return(t.dynCall_viiijj=t.asm.U).apply(null,arguments)},t.dynCall_jij=function(){return(t.dynCall_jij=t.asm.V).apply(null,arguments)},t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.W).apply(null,arguments)},t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.X).apply(null,arguments)},t._ff_h264_cabac_tables=83749,J=function e(){Jr||et(),Jr||(J=e)},t.run=et,t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();et(),e.exports=t}));const u="initVideo",c="render",f="playAudio",l="print",d="printErr",p="initAudio",h="audioCode",m="videoCode",v=1,y=2,g="init",w="decode",E="audioDecode",b="videoDecode",_="close",k="key",T="delta";(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})(),Date.now||(Date.now=function(){return(new Date).getTime()}),s.print=function(e){postMessage({cmd:l,text:e})},s.printErr=function(e){postMessage({cmd:d,text:e})},s.postRun=function(){var e=[],r={};"VideoEncoder"in self&&(r={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){r.isEmitInfo||(t.opt.debug&&console.log("Jessibuca: [worker] Webcodecs Video Decoder initSize"),postMessage({cmd:u,w:e.codedWidth,h:e.codedHeight}),r.isEmitInfo=!0,r.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),r.offscreenCanvasCtx=r.offscreenCanvas.getContext("2d")),r.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let n=r.offscreenCanvas.transferToImageBitmap();postMessage({cmd:c,buffer:n,delay:t.delay,ts:0},[n]),setTimeout((function(){e.close?e.close():e.destroy()}),100)},error:function(e){console.error(e)}}),decode:function(e,n){const o=e[0]>>4==1;if(r.hasInit){const t=new EncodedVideoChunk({data:e.slice(5),timestamp:n,type:o?k:T});r.decoder.decode(t)}else if(o&&0===e[1]){const n=15&e[0];t.setVideoCodec(n);const o=function(e){let r=e.subarray(1,4),t="avc1.";for(let e=0;e<3;e++){let n=r[e].toString(16);n.length<2&&(n="0"+n),t+=n}return{codec:t,description:e}}(e.slice(5));r.decoder.configure(o),r.hasInit=!0}},reset(){r.hasInit=!1,r.isEmitInfo=!1,r.offscreenCanvas=null,r.offscreenCanvasCtx=null}});var t={opt:{},useOffscreen:function(){return!this.opt.forceNoOffscreen&&"undefined"!=typeof OffscreenCanvas},initAudioPlanar:function(e,r){postMessage({cmd:p,sampleRate:r,channels:e});var t=[],n=[],o=0;this.playAudioPlanar=function(r,i,a){for(var u=i,c=[],l=0,d=0;d<2;d++){var p=s.HEAPU32[(r>>2)+d]>>2;c[d]=s.HEAPF32.subarray(p,p+u)}if(o){if(!(u>=(i=1024-o)))return o+=u,t[0]=Float32Array.of(...t[0],...c[0]),void(2==e&&(t[1]=Float32Array.of(...t[1],...c[1])));n[0]=Float32Array.of(...t[0],...c[0].subarray(0,i)),2==e&&(n[1]=Float32Array.of(...t[1],...c[1].subarray(0,i))),postMessage({cmd:f,buffer:n,ts:a},n.map((e=>e.buffer))),l=i,u-=i}for(o=u;o>=1024;o-=1024)n[0]=c[0].slice(l,l+=1024),2==e&&(n[1]=c[1].slice(l-1024,l)),postMessage({cmd:f,buffer:n,ts:a},n.map((e=>e.buffer)));o&&(t[0]=c[0].slice(l),2==e&&(t[1]=c[1].slice(l)))}},setVideoCodec:function(e){postMessage({cmd:m,code:e})},setAudioCodec:function(e){postMessage({cmd:h,code:e})},setVideoSize:function(e,r){postMessage({cmd:u,w:e,h:r});var n=e*r,o=n>>2;t.useOffscreen()?(this.offscreenCanvas=new OffscreenCanvas(e,r),this.offscreenCanvasGL=this.offscreenCanvas.getContext("webgl"),this.webglObj=(e=>{var r=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),t=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n"),n=e.createShader(e.VERTEX_SHADER);e.shaderSource(n,r),e.compileShader(n),e.getShaderParameter(n,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(n));var o=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(o,t),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(o));var i=e.createProgram();e.attachShader(i,n),e.attachShader(i,o),e.linkProgram(i),e.getProgramParameter(i,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(i)),e.useProgram(i);var a=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,a),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var s=e.getAttribLocation(i,"vertexPos");e.enableVertexAttribArray(s),e.vertexAttribPointer(s,2,e.FLOAT,!1,0,0);var u=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,u),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(i,"texturePos");function f(r,t){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(i,r),t),n}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var l=f("ySampler",0),d=f("uSampler",1),p=f("vSampler",2);return{render:function(r,t,n,o,i){e.viewport(0,0,r,t),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,l),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r,t,0,e.LUMINANCE,e.UNSIGNED_BYTE,n),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,d),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r/2,t/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r/2,t/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,i),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(i),e.deleteBuffer(a),e.deleteBuffer(u),e.deleteTexture(l),e.deleteTexture(d),e.deleteBuffer(p)}catch(e){}}}})(this.offscreenCanvasGL),this.draw=function(t,i,a,u){this.webglObj.render(e,r,s.HEAPU8.subarray(i,i+n),s.HEAPU8.subarray(a,a+o),s.HEAPU8.subarray(u,u+o));let f=this.offscreenCanvas.transferToImageBitmap();postMessage({cmd:c,buffer:f,delay:this.delay,ts:t},[f])}):this.draw=function(e,r,t,i){var a=[s.HEAPU8.subarray(r,r+n),s.HEAPU8.subarray(t,t+o),s.HEAPU8.subarray(i,i+o)].map((e=>Uint8Array.from(e)));postMessage({cmd:c,output:a,delay:this.delay,ts:e},a.map((e=>e.buffer)))}},getDelay:function(e){return e?(this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1,this.getDelay=function(e){return e&&(this.delay=Date.now()-this.startTimestamp-(e-this.firstTimestamp)),this.delay},-1):-1},init:function(){t.opt.debug&&console.log("Jessibuca: [worker] init");const n=e=>{t.opt.useWCS&&t.useOffscreen()&&e.type===y&&r.decode?r.decode(e.payload,e.ts):e.decoder.decode(e.payload,e.ts)};this.stopId=setInterval((()=>{if(e.length)if(this.dropping){for(r=e.shift();!r.isIFrame&&e.length;)r=e.shift();r.isIFrame&&(this.dropping=!1,n(r))}else{var r=e[0];if(-1===this.getDelay(r.ts))e.shift(),n(r);else if(this.delay>this.opt.videoBuffer+1e3)this.dropping=!0;else for(;e.length&&(r=e[0],this.getDelay(r.ts)>this.opt.videoBuffer);)e.shift(),n(r)}}),10)},close:function(){this.opt.debug&&console.log("Jessibuca: [worker]: close"),clearInterval(this.stopId),this.stopId=null,n.clear(),o.clear(),r.reset&&r.reset(),this.firstTimestamp=0,this.startTimestamp=0,this.delay=-1,this.webglObj&&(this.webglObj.destroy(),this.offscreenCanvas=null,this.offscreenCanvasGL=null,this.offscreenCanvasCtx=null),e=[],delete this.playAudioPlanar,delete this.draw},pushBuffer:function(r,t){t.type===v?e.push({ts:t.ts,payload:r,decoder:n,type:v}):t.type===y&&e.push({ts:t.ts,payload:r,decoder:o,type:y,isIFrame:t.isIFrame})}},n=new s.AudioDecoder(t),o=new s.VideoDecoder(t);postMessage({cmd:g}),self.onmessage=function(e){var r=e.data;switch(r.cmd){case g:t.opt=JSON.parse(r.opt),n.sample_rate=r.sampleRate,t.init();break;case w:t.pushBuffer(r.buffer,r.options);break;case E:n.decode(r.buffer,r.ts);break;case b:o.decode(r.buffer,r.ts);break;case _:t.close()}}}})); diff --git a/web - 副本/client/assets/js/jessibuca/decoder.wasm b/web - 副本/client/assets/js/jessibuca/decoder.wasm new file mode 100644 index 0000000..7ea58df Binary files /dev/null and b/web - 副本/client/assets/js/jessibuca/decoder.wasm differ diff --git a/web - 副本/client/assets/js/jessibuca/favicon.ico b/web - 副本/client/assets/js/jessibuca/favicon.ico new file mode 100644 index 0000000..a11777c Binary files /dev/null and b/web - 副本/client/assets/js/jessibuca/favicon.ico differ diff --git a/web - 副本/client/assets/js/jessibuca/jessibuca.d.ts b/web - 副本/client/assets/js/jessibuca/jessibuca.d.ts new file mode 100644 index 0000000..b9800b8 --- /dev/null +++ b/web - 副本/client/assets/js/jessibuca/jessibuca.d.ts @@ -0,0 +1,620 @@ +declare namespace Jessibuca { + + /** 超时信息 */ + enum TIMEOUT { + /** 当play()的时候,如果没有数据返回 */ + loadingTimeout = 'loadingTimeout', + /** 当播放过程中,如果超过timeout之后没有数据渲染 */ + delayTimeout = 'delayTimeout', + } + + /** 错误信息 */ + enum ERROR { + /** 播放错误,url 为空的时候,调用 play 方法 */ + playError = 'playError', + /** http 请求失败 */ + fetchError = 'fetchError', + /** websocket 请求失败 */ + websocketError = 'websocketError', + /** webcodecs 解码 h265 失败 */ + webcodecsH265NotSupport = 'webcodecsH265NotSupport', + /** mediaSource 解码 h265 失败 */ + mediaSourceH265NotSupport = 'mediaSourceH265NotSupport', + /** wasm 解码失败 */ + wasmDecodeError = 'wasmDecodeError', + } + + interface Config { + /** + * 播放器容器 + * * 若为 string ,则底层调用的是 document.getElementById('id') + * */ + container: HTMLElement | string; + /** + * 设置最大缓冲时长,单位秒,播放器会自动消除延迟 + */ + videoBuffer?: number; + /** + * worker地址 + * * 默认引用的是根目录下面的decoder.js文件 ,decoder.js 与 decoder.wasm文件必须是放在同一个目录下面。 */ + decoder?: string; + /** + * 是否不使用离屏模式(提升渲染能力) + */ + forceNoOffscreen?: boolean; + /** + * 是否开启当页面的'visibilityState'变为'hidden'的时候,自动暂停播放。 + */ + hiddenAutoPause?: boolean; + /** + * 是否有音频,如果设置`false`,则不对音频数据解码,提升性能。 + */ + hasAudio?: boolean; + /** + * 设置旋转角度,只支持,0(默认),180,270 三个值 + */ + rotate?: boolean; + /** + * 1. 当为`true`的时候:视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边。 等同于 `setScaleMode(1)` + * 2. 当为`false`的时候:视频画面完全填充canvas区域,画面会被拉伸。等同于 `setScaleMode(0)` + */ + isResize?: boolean; + /** + * 1. 当为`true`的时候:视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全。等同于 `setScaleMode(2)` + */ + isFullSize?: boolean; + /** + * 1. 当为`true`的时候:ws协议不检验是否以.flv为依据,进行协议解析。 + */ + isFlv?: boolean; + /** + * 是否开启控制台调试打 + */ + debug?: boolean; + /** + * 1. 设置超时时长, 单位秒 + * 2. 在连接成功之前(loading)和播放中途(heart),如果超过设定时长无数据返回,则回调timeout事件 + */ + timeout?: number; + /** + * 1. 设置超时时长, 单位秒 + * 2. 在连接成功之前,如果超过设定时长无数据返回,则回调timeout事件 + */ + heartTimeout?: number; + /** + * 1. 设置超时时长, 单位秒 + * 2. 在连接成功之前,如果超过设定时长无数据返回,则回调timeout事件 + */ + loadingTimeout?: number; + /** + * 是否支持屏幕的双击事件,触发全屏,取消全屏事件 + */ + supportDblclickFullscreen?: boolean; + /** + * 是否显示网 + */ + showBandwidth?: boolean; + /** + * 配置操作按钮 + */ + operateBtns?: { + /** 是否显示全屏按钮 */ + fullscreen?: boolean; + /** 是否显示截图按钮 */ + screenshot?: boolean; + /** 是否显示播放暂停按钮 */ + play?: boolean; + /** 是否显示声音按钮 */ + audio?: boolean; + /** 是否显示录制按 */ + record?: boolean; + }; + /** + * 开启屏幕常亮,在手机浏览器上, canvas标签渲染视频并不会像video标签那样保持屏幕常亮 + */ + keepScreenOn?: boolean; + /** + * 是否开启声音,默认是关闭声音播放的 + */ + isNotMute?: boolean; + /** + * 加载过程中文案 + */ + loadingText?: boolean; + /** + * 背景图片 + */ + background?: string; + /** + * 是否开启MediaSource硬解码 + * * 视频编码只支持H.264视频(Safari on iOS不支持) + * * 不支持 forceNoOffscreen 为 false (开启离屏渲染) + */ + useMSE?: boolean; + /** + * 是否开启Webcodecs硬解码 + * * 视频编码只支持H.264视频 (需在chrome 94版本以上,需要https或者localhost环境) + * * 支持 forceNoOffscreen 为 false (开启离屏渲染) + * */ + useWCS?: boolean; + /** + * 是否开启键盘快捷键 + * 目前支持的键盘快捷键有:esc -> 退出全屏;arrowUp -> 声音增加;arrowDown -> 声音减少; + */ + hotKey?: boolean; + /** + * 在使用MSE或者Webcodecs 播放H265的时候,是否自动降级到wasm模式。 + * 设置为false 则直接关闭播放,抛出Error 异常,设置为true 则会自动切换成wasm模式播放。 + */ + autoWasm?: boolean; + /** + * heartTimeout 心跳超时之后自动再播放,不再抛出异常,而直接重新播放视频地址。 + */ + heartTimeoutReplay?: boolean, + /** + * wasm解码报错之后,不再抛出异常,而是直接重新播放视频地址。 + */ + wasmDecodeErrorReplay?: boolean, + } +} + + +declare class Jessibuca { + + constructor(config?: Jessibuca.Config); + + /** + * 是否开启控制台调试打印 + @example + // 开启 + jessibuca.setDebug(true) + // 关闭 + jessibuca.setDebug(false) + */ + setDebug(flag: boolean): void; + + /** + * 静音 + @example + jessibuca.mute() + */ + mute(): void; + + /** + * 取消静音 + @example + jessibuca.cancelMute() + */ + cancelMute(): void; + + /** + * 留给上层用户操作来触发音频恢复的方法。 + * + * iPhone,chrome等要求自动播放时,音频必须静音,需要由一个真实的用户交互操作来恢复,不能使用代码。 + * + * https://developers.google.com/web/updates/2017/09/autoplay-policy-changes + */ + audioResume(): void; + + /** + * + * 设置超时时长, 单位秒 + * 在连接成功之前和播放中途,如果超过设定时长无数据返回,则回调timeout事件 + + @example + jessibuca.setTimeout(10) + + jessibuca.on('timeout',function(){ + // + }); + */ + setTimeout(): void; + + /** + * @param mode + * 0 视频画面完全填充canvas区域,画面会被拉伸 等同于参数 `isResize` 为false + * + * 1 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边 等同于参数 `isResize` 为true + * + * 2 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全 等同于参数 `isFullResize` 为true + @example + jessibuca.setScaleMode(0) + + jessibuca.setScaleMode(1) + + jessibuca.setScaleMode(2) + */ + setScaleMode(mode: number): void; + + /** + * 暂停播放 + * + * 可以在pause 之后,再调用 `play()`方法就继续播放之前的流。 + @example + jessibuca.pause().then(()=>{ + console.log('pause success') + + jessibuca.play().then(()=>{ + + }).catch((e)=>{ + + }) + + }).catch((e)=>{ + console.log('pause error',e); + }) + */ + pause(): Promise; + + /** + * 关闭视频,不释放底层资源 + @example + jessibuca.close(); + */ + close(): void; + + /** + * 关闭视频,释放底层资源 + @example + jessibuca.destroy() + */ + destroy(): void; + + /** + * 清理画布为黑色背景 + @example + jessibuca.clearView() + */ + clearView(): void; + + /** + * 播放视频 + @example + + jessibuca.play('url').then(()=>{ + console.log('play success') + }).catch((e)=>{ + console.log('play error',e) + }) + // + jessibuca.play() + */ + play(url?: string): Promise; + + /** + * 重新调整视图大小 + */ + resize(): void; + + /** + * 设置最大缓冲时长,单位秒,播放器会自动消除延迟。 + * + * 等同于 `videoBuffer` 参数。 + * + @example + // 设置 200ms 缓冲 + jessibuca.setBufferTime(0.2) + */ + setBufferTime(time: number): void; + + /** + * 设置旋转角度,只支持,0(默认) ,180,270 三个值。 + * + * > 可用于实现监控画面小窗和全屏效果,由于iOS没有全屏API,此方法可以模拟页面内全屏效果而且多端效果一致。 * + @example + jessibuca.setRotate(0) + + jessibuca.setRotate(90) + + jessibuca.setRotate(270) + */ + setRotate(deg: number): void; + + /** + * + * 设置音量大小,取值0 — 1 + * + * > 区别于 mute 和 cancelMute 方法,虽然设置setVolume(0) 也能达到 mute方法,但是mute 方法是不调用底层播放音频的,能提高性能。而setVolume(0)只是把声音设置为0 ,以达到效果。 + * @param volume 当为0时,完全无声;当为1时,最大音量,默认值 + @example + jessibuca.setVolume(0.2) + + jessibuca.setVolume(0) + + jessibuca.setVolume(1) + */ + setVolume(volume: number): void; + + /** + * 返回是否加载完毕 + @example + var result = jessibuca.hasLoaded() + console.log(result) // true + */ + hasLoaded(): boolean; + + /** + * 开启屏幕常亮,在手机浏览器上, canvas标签渲染视频并不会像video标签那样保持屏幕常亮。 + * H5目前在chrome\edge 84, android chrome 84及以上有原生亮屏API, 需要是https页面 + * 其余平台为模拟实现,此时为兼容实现,并不保证所有浏览器都支持 + @example + jessibuca.setKeepScreenOn() + */ + setKeepScreenOn(): boolean; + + /** + * 全屏(取消全屏)播放视频 + @example + jessibuca.setFullscreen(true) + // + jessibuca.setFullscreen(false) + */ + setFullscreen(flag: boolean): void; + + /** + * + * 截图,调用后弹出下载框保存截图 + * @param filename 可选参数, 保存的文件名, 默认 `时间戳` + * @param format 可选参数, 截图的格式,可选png或jpeg或者webp ,默认 `png` + * @param quality 可选参数, 当格式是jpeg或者webp时,压缩质量,取值0 ~ 1 ,默认 `0.92` + * @param type 可选参数, 可选download或者base64或者blob,默认`download` + + @example + + jessibuca.screenshot("test","png",0.5) + + const base64 = jessibuca.screenshot("test","png",0.5,'base64') + + const fileBlob = jessibuca.screenshot("test",'blob') + */ + screenshot(filename?: string, format?: string, quality?: number, type?: string); + + /** + * 开始录制。 + * @param fileName 可选,默认时间戳 + * @param fileType 可选,默认webm,支持webm 和mp4 格式 + + @example + jessibuca.startRecord('xxx','webm') + */ + startRecord(fileName: string, fileType: string) + + /** + * 暂停录制并下载。 + @example + jessibuca.stopRecordAndSave() + */ + stopRecordAndSave(); + + /** + * 返回是否正在播放中状态。 + @example + var result = jessibuca.isPlaying() + console.log(result) // true + */ + isPlaying(): boolean; + + /** + * 返回是否静音。 + @example + var result = jessibuca.isMute() + console.log(result) // true + */ + isMute(): boolean; + + /** + * 返回是否正在录制。 + @example + var result = jessibuca.isRecording() + console.log(result) // true + */ + isRecording(): boolean; + + + /** + * 监听 jessibuca 初始化事件 + * @example + * jessibuca.on("load",function(){console.log('load')}) + */ + on(event: 'load', callback: () => void): void; + + /** + * 视频播放持续时间,单位ms + * @example + * jessibuca.on('timeUpdate',function (ts) {console.log('timeUpdate',ts);}) + */ + on(event: 'timeUpdate', callback: () => void): void; + + /** + * 当解析出视频信息时回调,2个回调参数 + * @example + * jessibuca.on("videoInfo",function(data){console.log('width:',data.width,'height:',data.width)}) + */ + on(event: 'videoInfo', callback: (data: { + /** 视频宽 */ + width: number; + /** 视频高 */ + height: number; + }) => void): void; + + /** + * 当解析出音频信息时回调,2个回调参数 + * @example + * jessibuca.on("audioInfo",function(data){console.log('numOfChannels:',data.numOfChannels,'sampleRate',data.sampleRate)}) + */ + on(event: 'audioInfo', callback: (data: { + /** 声频通道 */ + numOfChannels: number; + /** 采样率 */ + sampleRate: number; + }) => void): void; + + /** + * 信息,包含错误信息 + * @example + * jessibuca.on("log",function(data){console.log('data:',data)}) + */ + on(event: 'log', callback: () => void): void; + + /** + * 错误信息 + * @example + * jessibuca.on("error",function(error){ + if(error === Jessibuca.ERROR.fetchError){ + // + } + else if(error === Jessibuca.ERROR.webcodecsH265NotSupport){ + // + } + console.log('error:',error) + }) + */ + on(event: 'error', callback: (err: Jessibuca.ERROR) => void): void; + + /** + * 当前网速, 单位KB 每秒1次, + * @example + * jessibuca.on("kBps",function(data){console.log('kBps:',data)}) + */ + on(event: 'kBps', callback: (value: number) => void): void; + + /** + * 渲染开始 + * @example + * jessibuca.on("start",function(){console.log('start render')}) + */ + on(event: 'start', callback: () => void): void; + + /** + * 当设定的超时时间内无数据返回,则回调 + * @example + * jessibuca.on("timeout",function(error){console.log('timeout:',error)}) + */ + on(event: 'timeout', callback: (error: Jessibuca.TIMEOUT) => void): void; + + /** + * 当play()的时候,如果没有数据返回,则回调 + * @example + * jessibuca.on("loadingTimeout",function(){console.log('timeout')}) + */ + on(event: 'loadingTimeout', callback: () => void): void; + + /** + * 当播放过程中,如果超过timeout之后没有数据渲染,则抛出异常。 + * @example + * jessibuca.on("delayTimeout",function(){console.log('timeout')}) + */ + on(event: 'delayTimeout', callback: () => void): void; + + /** + * 当前是否全屏 + * @example + * jessibuca.on("fullscreen",function(flag){console.log('is fullscreen',flag)}) + */ + on(event: 'fullscreen', callback: () => void): void; + + /** + * 触发播放事件 + * @example + * jessibuca.on("play",function(flag){console.log('play')}) + */ + on(event: 'play', callback: () => void): void; + + /** + * 触发暂停事件 + * @example + * jessibuca.on("pause",function(flag){console.log('pause')}) + */ + on(event: 'pause', callback: () => void): void; + + /** + * 触发声音事件,返回boolean值 + * @example + * jessibuca.on("mute",function(flag){console.log('is mute',flag)}) + */ + on(event: 'mute', callback: () => void): void; + + /** + * 流状态统计,流开始播放后回调,每秒1次。 + * @example + * jessibuca.on("stats",function(s){console.log("stats is",s)}) + */ + on(event: 'stats', callback: (stats: { + /** 当前缓冲区时长,单位毫秒 */ + buf: number; + /** 当前视频帧率 */ + fps: number; + /** 当前音频码率,单位bit */ + abps: number; + /** 当前视频码率,单位bit */ + vbps: number; + /** 当前视频帧pts,单位毫秒 */ + ts: number; + }) => void): void; + + /** + * 渲染性能统计,流开始播放后回调,每秒1次。 + * @param performance 0: 表示卡顿,1: 表示流畅,2: 表示非常流程 + * @example + * jessibuca.on("performance",function(performance){console.log("performance is",performance)}) + */ + on(event: 'performance', callback: (performance: 0 | 1 | 2) => void): void; + + /** + * 录制开始的事件 + + * @example + * jessibuca.on("recordStart",function(){console.log("record start")}) + */ + on(event: 'recordStart', callback: () => void): void; + + /** + * 录制结束的事件 + + * @example + * jessibuca.on("recordEnd",function(){console.log("record end")}) + */ + on(event: 'recordEnd', callback: () => void): void; + + /** + * 录制的时候,返回的录制时长,1s一次 + + * @example + * jessibuca.on("recordingTimestamp",function(timestamp){console.log("recordingTimestamp is",timestamp)}) + */ + on(event: 'recordingTimestamp', callback: (timestamp: number) => void): void; + + /** + * 监听调用play方法 经过 初始化-> 网络请求-> 解封装 -> 解码 -> 渲染 一系列过程的时间消耗 + * @param event + * @param callback + */ + on(event: 'playToRenderTimes', callback: (times: { + playInitStart: number, // 1 初始化 + playStart: number, // 2 初始化 + streamStart: number, // 3 网络请求 + streamResponse: number, // 4 网络请求 + demuxStart: number, // 5 解封装 + decodeStart: number, // 6 解码 + videoStart: number, // 7 渲染 + playTimestamp: number,// playStart- playInitStart + streamTimestamp: number,// streamStart - playStart + streamResponseTimestamp: number,// streamResponse - streamStart + demuxTimestamp: number, // demuxStart - streamResponse + decodeTimestamp: number, // decodeStart - demuxStart + videoTimestamp: number,// videoStart - decodeStart + allTimestamp: number // videoStart - playInitStart + }) => void): void + + /** + * 监听方法 + * + @example + + jessibuca.on("load",function(){console.log('load')}) + */ + on(event: string, callback: Function): void; + +} + +export default Jessibuca; diff --git a/web - 副本/client/assets/js/jessibuca/jessibuca.js b/web - 副本/client/assets/js/jessibuca/jessibuca.js new file mode 100644 index 0000000..2fef528 --- /dev/null +++ b/web - 副本/client/assets/js/jessibuca/jessibuca.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).jessibuca=t()}(this,(function(){"use strict";const e=0,t=1,i="flv",n="m7s",o={videoBuffer:1e3,isResize:!0,isFullResize:!1,isFlv:!1,debug:!1,loadingTimeout:10,heartTimeout:10,timeout:10,supportDblclickFullscreen:!1,showBandwidth:!1,keepScreenOn:!1,isNotMute:!1,hasAudio:!0,hasVideo:!0,operateBtns:{fullscreen:!1,screenshot:!1,play:!1,audio:!1,record:!1},hasControl:!1,loadingText:"",background:"",decoder:"decoder.js",url:"",rotate:0,forceNoOffscreen:!0,hiddenAutoPause:!1,protocol:t,demuxType:i,useWCS:!1,useMSE:!1,useOffscreen:!1},r="init",s="initVideo",a="render",A="playAudio",c="initAudio",d="audioCode",l="videoCode",u=1,h=2,f=8,p=9,g="init",m="decode",b="audioDecode",y="close",v={fullscreen:"fullscreen$2",webFullscreen:"webFullscreen",decoderWorkerInit:"decoderWorkerInit",play:"play",playing:"playing",pause:"pause",mute:"mute",load:"load",loading:"loading",videoInfo:"videoInfo",timeUpdate:"timeUpdate",audioInfo:"audioInfo",log:"log",error:"error",kBps:"kBps",timeout:"timeout",delayTimeout:"delayTimeout",loadingTimeout:"loadingTimeout",stats:"stats",performance:"performance",record:"record",recording:"recording",recordingTimestamp:"recordingTimestamp",recordStart:"recordStart",recordEnd:"recordEnd",recordCreateError:"recordCreateError",buffer:"buffer",videoFrame:"videoFrame",start:"start",metadata:"metadata",resize:"resize",streamEnd:"streamEnd",streamSuccess:"streamSuccess",streamMessage:"streamMessage",streamError:"streamError",volumechange:"volumechange",destroy:"destroy",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceBufferError:"mseSourceBufferError",mseSourceBufferBusy:"mseSourceBufferBusy",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio"},w={load:v.load,timeUpdate:v.timeUpdate,videoInfo:v.videoInfo,audioInfo:v.audioInfo,error:v.error,kBps:v.kBps,log:v.log,start:v.start,timeout:v.timeout,loadingTimeout:v.loadingTimeout,delayTimeout:v.delayTimeout,fullscreen:"fullscreen",play:v.play,pause:v.pause,mute:v.mute,stats:v.stats,performance:v.performance,recordingTimestamp:v.recordingTimestamp,recordStart:v.recordStart,recordEnd:v.recordEnd},E={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",wasmDecodeError:"wasmDecodeError"},S="notConnect",R="open",C="close",B="error",k={download:"download",base64:"base64",blob:"blob"},I={7:"H264(AVC)",12:"H265(HEVC)"},T=7,x=12,L={10:"AAC",7:"ALAW",8:"MULAW"},D=32,O=33,j=34,U=0,F=1,P=2,M="mp4",V="webm",Q="webcodecs",N="webgl",W="offscreen",G="key",H="delta",J='video/mp4; codecs="avc1.64002A"',q="ended",z="open",X="closed";class Y{constructor(e){this.log=function(t){if(e._opt.debug){for(var i=arguments.length,n=new Array(i>1?i-1:0),o=1;o1?i-1:0),o=1;o1?i-1:0),o=1;o3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,n)));e.addEventListener(t,i,n);const o=()=>e.removeEventListener(t,i,n);return this.destroys.push(o),o}destroy(){this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e()))}}var K="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function _(e,t){return e(t={exports:{}},t.exports),t.exports}var $=_((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},i=e.exports,n=function(){for(var e,i=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],n=0,o=i.length,r={};n0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),n=t[0].replace("data:","").replace(";base64","");let o=i.length,r=new Uint8Array(o);for(;o--;)r[o]=i.charCodeAt(o);return new File([r],"file",{type:n})}function ie(e,t){const i=document.createElement("a");i.download=t,i.href=URL.createObjectURL(e),i.click(),URL.revokeObjectURL(e)}function ne(){return(new Date).getTime()}function oe(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function re(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{re(e,i,t[i])})),e.style[t]=i,e}function se(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const n=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(n):n}function ae(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function Ae(e){let t=0,i=ae();return n=>{t+=n;const o=ae(),r=o-i;r>=1e3&&(e(t/r*1e3),i=o,t=0)}}function ce(e){if(null==e||""===e)return"0 KB/S";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/S"}function de(e){return null==e}function le(e){return!de(e)}$.isEnabled,(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();class ue{on(e,t,i){const n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const n=this;function o(){n.off(e,o);for(var r=arguments.length,s=new Array(r),a=0;a1?i-1:0),o=1;o{delete i[e]})),void delete this.e;const n=i[e],o=[];if(n&&t)for(let e=0,i=n.length;e{var t=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),i=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n"),n=e.createShader(e.VERTEX_SHADER);e.shaderSource(n,t),e.compileShader(n),e.getShaderParameter(n,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(n));var o=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(o,i),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(o));var r=e.createProgram();e.attachShader(r,n),e.attachShader(r,o),e.linkProgram(r),e.getProgramParameter(r,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(r)),e.useProgram(r);var s=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,s),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var a=e.getAttribLocation(r,"vertexPos");e.enableVertexAttribArray(a),e.vertexAttribPointer(a,2,e.FLOAT,!1,0,0);var A=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,A),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(r,"texturePos");function d(t,i){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(r,t),i),n}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var l=d("ySampler",0),u=d("uSampler",1),h=d("vSampler",2);return{render:function(t,i,n,o,r){e.viewport(0,0,t,i),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,l),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t,i,0,e.LUMINANCE,e.UNSIGNED_BYTE,n),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,u),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,h),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,r),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(r),e.deleteBuffer(s),e.deleteBuffer(A),e.deleteTexture(l),e.deleteTexture(u),e.deleteBuffer(h)}catch(e){}}}})(this.contextGl);this.contextGlRender=e.render,this.contextGlDestroy=e.destroy}_initContext2D(){this.context2D=this.$videoElement.getContext("2d")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=Q,this._initContext2D()):this._supportOffscreen()?(this.renderType=W,this._bindOffscreen()):(this.renderType=N,this._initContextGl())}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}render(e){switch(this.player.videoTimestamp=e.ts,this.renderType){case W:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case N:this.contextGlRender(this.$videoElement.width,this.$videoElement.height,e.output[0],e.output[1],e.output[2]);break;case Q:this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height)}}screenshot(e,t,i,n){e=e||ne(),n=n||k.download;const o={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let r=.92;!o[t]&&k[t]&&(n=t,t="png",i=void 0),"string"==typeof i&&(n=i,i=void 0),void 0!==i&&(r=Number(i));const s=this.$videoElement.toDataURL(o[t]||o.png,r),a=te(s);return n===k.base64?s:n===k.blob?a:void(n===k.download&&ie(a,e))}clearView(){switch(this.renderType){case W:(function(e,t){const i=document.createElement("canvas");return i.width=e,i.height=t,createImageBitmap(i,0,0,e,t)})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case N:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case Q:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}resize(){this.player.debug.log("canvasVideo","resize");const e=this.player._opt,t=this.player.width;let i=this.player.height;e.hasControl&&(i-=38);let n=this.$videoElement.width,o=this.$videoElement.height;const r=e.rotate;let s=(t-n)/2,a=(i-o)/2;270!==r&&90!==r||(n=this.$videoElement.height,o=this.$videoElement.width);const A=t/n,c=i/o;let d=A>c?c:A;e.isResize||A!==c&&(d=A+","+c),e.isFullResize&&(d=A>c?A:c);let l="scale("+d+")";r&&(l+=" rotate("+r+"deg)"),this.$videoElement.style.transform=l,this.$videoElement.style.left=s+"px",this.$videoElement.style.top=a+"px"}destroy(){this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.contextGlRender&&(this.contextGlDestroy&&this.contextGlDestroy(),this.contextGlDestroy=null,this.contextGlRender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.videoInfo={width:"",height:"",encType:"",encTypeCode:""},this.player.$container.removeChild(this.$videoElement),this.init=!1,this.off(),this.player.debug.log("CanvasVideoLoader","destroy")}}class pe extends he{constructor(e){super(),this.player=e;const t=document.createElement("video");t.muted=!0,t.style.position="absolute",t.style.top=0,t.style.left=0,e.$container.appendChild(t),this.$videoElement=t,this.videoInfo={width:"",height:"",encType:""},this.resize();const{proxy:i}=this.player.events;i(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay")})),i(this.$videoElement,"waiting",(()=>{this.player.emit(v.videoWaiting)})),i(this.$videoElement,"timeupdate",(e=>{})),this.player.debug.log("Video","init")}play(){this.$videoElement.play()}clearView(){}screenshot(e,t,i,n){e=e||ne(),n=n||k.download;let o=.92;!{png:"image/png",jpeg:"image/jpeg",webp:"image/webp"}[t]&&k[t]&&(n=t,t="png",i=void 0),"string"==typeof i&&(n=i,i=void 0),void 0!==i&&(o=Number(i));const r=this.$videoElement;let s=document.createElement("canvas");s.width=r.videoWidth,s.height=r.videoHeight;s.getContext("2d").drawImage(r,0,0,s.width,s.height);const a=s.toDataURL(k[t]||k.png,o),A=te(a);return n===k.base64?a:n===k.blob?A:void(n===k.download&&ie(A,e))}initCanvasViewSize(){this.resize()}resize(){this.$videoElement.width=this.player.width,this.$videoElement.height=this.player._opt.hasControl?this.player.height-38:this.player.height;const e=this.player._opt;let t="contain";const i=e.rotate;e.isResize||(t="fill"),e.isFullResize&&(t="none"),this.$videoElement.style.objectFit=t,this.$videoElement.style.transform="rotate("+i+"deg)"}destroy(){this.player.$container.removeChild(this.$videoElement),this.init=!1,this.off(),this.player.debug.log("Video","destroy")}}class ge{constructor(e){return new(ge.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE?pe:fe}}class me extends ue{constructor(e){super(),this.bufferList=[],this.player=e,this.scriptNode=null,this.hasInitScriptNode=!1,this.audioContextChannel=null,this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.gainNode=this.audioContext.createGain();const t=this.audioContext.createBufferSource();t.buffer=this.audioContext.createBuffer(1,1,22050),t.connect(this.audioContext.destination),t.noteOn?t.noteOn(0):t.start(0),this.audioBufferSourceNode=t,this.mediaStreamAudioDestinationNode=this.audioContext.createMediaStreamDestination(),this.audioEnabled(!0),this.gainNode.gain.value=0,this.playing=!1,this.audioSyncVideoOption={diff:null},this.audioInfo={encType:"",channels:"",sampleRate:""},this.init=!1,this.on(v.videoSyncAudio,(e=>{this.player.debug.log("AudioContext",`videoSyncAudio , audioTimestamp: ${e.audioTimestamp},videoTimestamp: ${e.videoTimestamp},diff:${e.diff}`),this.audioSyncVideoOption=e})),this.player.debug.log("AudioContext","init")}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=L[e.encTypeCode]),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(v.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value||this.isStateSuspended()}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}initScriptNode(){if(this.playing=!0,this.hasInitScriptNode)return;const e=this.audioInfo.channels,t=this.audioContext.createScriptProcessor(1024,0,e);t.onaudioprocess=t=>{const i=t.outputBuffer;if(this.bufferList.length&&this.playing){if(!this.player._opt.useWCS&&!this.player._opt.useMSE){if(this.audioSyncVideoOption.diff>200)return void this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}`);if(this.audioSyncVideoOption.diff<-200){this.player.debug.warn("AudioContext",`audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}`);let e=this.bufferList.shift();for(;e.ts-this.player.videoTimestamp<-200&&this.bufferList.length>0;)e=this.bufferList.shift();if(0===this.bufferList.length)return}}if(0===this.bufferList.length)return;const t=this.bufferList.shift();t&&t.ts&&(this.player.audioTimestamp=t.ts);for(let n=0;n20&&(this.player.debug.warn("AudioContext",`bufferList is large: ${this.bufferList.length}`),this.bufferList.length>50&&this.bufferList.shift())}pause(){this.audioSyncVideoOption={diff:null},this.playing=!1,this.clear()}resume(){this.playing=!0}destroy(){this.closeAudio(),this.audioContext.close(),this.audioContext=null,this.gainNode=null,this.init=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=ee,this.scriptNode=null),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.audioSyncVideoOption={diff:null},this.off(),this.player.debug.log("AudioContext","destroy")}}class be{constructor(e){return new(be.getLoaderFactory())(e)}static getLoaderFactory(){return me}}class ye extends ue{constructor(e){super(),this.player=e,this.playing=!1,this.abortController=new AbortController,this.streamRate=Ae((t=>{e.emit(v.kBps,(t/1024).toFixed(2))})),e.debug.log("FetchStream","init")}fetchStream(e){const{demux:t}=this.player;fetch(e,{signal:this.abortController.signal}).then((e=>{const i=e.body.getReader();this.emit(v.streamSuccess);const n=()=>{i.read().then((e=>{let{done:i,value:o}=e;i?t.close():(this.streamRate&&this.streamRate(o.byteLength),t.dispatch(o),n())})).catch((e=>{t.close(),this.emit(E.fetchError,e),this.player.emit(v.error,E.fetchError),this.abort()}))};n()})).catch((e=>{this.abort(),this.emit(E.fetchError,e),this.player.emit(v.error,E.fetchError)}))}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}destroy(){this.abort(),this.off(),this.streamRate=null,this.player.debug.log("FetchStream","destroy")}}class ve extends ue{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=S,this.wsUrl=null,this.streamRate=Ae((t=>{e.emit(v.kBps,(t/1024).toFixed(2))}))}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:n}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",i(this.socket,"open",(()=>{this.emit(v.streamSuccess),t.log("websocketLoader","socket open"),this.socketStatus=R})),i(this.socket,"message",(e=>{this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)})),i(this.socket,"close",(()=>{t.log("websocketLoader","socket close"),this.emit(v.streamEnd),this.socketStatus=C})),i(this.socket,"error",(e=>{t.log("websocketLoader","socket error"),this.emit(E.websocketError,e),this.player.emit(v.error,E.websocketError),this.socketStatus=B,n.close(),t.log("websocketLoader","socket error:",e)}))}_handleMessage(e){const{demux:t}=this.player;t.dispatch(e)}fetchStream(e){this.wsUrl=e,this._createWebSocket()}destroy(){this.socket&&(this.socket.close(),this.socket=null),this.socketStatus=S,this.streamRate=null,this.off(),this.player.debug.log("websocketLoader","destroy")}}class we{constructor(e){return new(we.getLoaderFactory(e._opt.protocol))(e)}static getLoaderFactory(i){return i===t?ye:i===e?ve:void 0}}var Ee=_((function(e){function t(e,o){if(!e)throw"First parameter is required.";o=new i(e,o=o||{type:"video"});var r=this;function s(t){t&&(o.initCallback=function(){t(),t=o.initCallback=null});var i=new n(e,o);(h=new i(e,o)).record(),u("recording"),o.disableLogs||console.log("Initialized recorderType:",h.constructor.name,"for output-type:",o.type)}function a(e){if(e=e||function(){},h){if("paused"===r.state)return r.resumeRecording(),void setTimeout((function(){a(e)}),1);"recording"===r.state||o.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',r.state),o.disableLogs||console.log("Stopped recording "+o.type+" stream."),"gif"!==o.type?h.stop(t):(h.stop(),t()),u("stopped")}else p();function t(t){if(h){Object.keys(h).forEach((function(e){"function"!=typeof h[e]&&(r[e]=h[e])}));var i=h.blob;if(!i){if(!t)throw"Recording failed.";h.blob=i=t}if(i&&!o.disableLogs&&console.log(i.type,"->",m(i.size)),e){var n;try{n=d.createObjectURL(i)}catch(e){}"function"==typeof e.call?e.call(r,n):e(n)}o.autoWriteToDisk&&c((function(e){var t={};t[o.type+"Blob"]=e,T.Store(t)}))}else"function"==typeof e.call?e.call(r,""):e("")}}function A(e){postMessage((new FileReaderSync).readAsDataURL(e))}function c(e,t){if(!e)throw"Pass a callback function over getDataURL.";var i=t?t.blob:(h||{}).blob;if(!i)return o.disableLogs||console.warn("Blob encoder did not finish its job yet."),void setTimeout((function(){c(e,t)}),1e3);if("undefined"==typeof Worker||navigator.mozGetUserMedia){var n=new FileReader;n.readAsDataURL(i),n.onload=function(t){e(t.target.result)}}else{var r=function(e){try{var t=d.createObjectURL(new Blob([e.toString(),"this.onmessage = function (eee) {"+e.name+"(eee.data);}"],{type:"application/javascript"})),i=new Worker(t);return d.revokeObjectURL(t),i}catch(e){}}(A);r.onmessage=function(t){e(t.data)},r.postMessage(i)}}function l(e){e=e||0,"paused"!==r.state?"stopped"!==r.state&&(e>=r.recordingDuration?a(r.onRecordingStopped):(e+=1e3,setTimeout((function(){l(e)}),1e3))):setTimeout((function(){l(e)}),1e3)}function u(e){r&&(r.state=e,"function"==typeof r.onStateChanged.call?r.onStateChanged.call(r,e):r.onStateChanged(e))}var h,f='It seems that recorder is destroyed or "startRecording" is not invoked for '+o.type+" recorder.";function p(){!0!==o.disableLogs&&console.warn(f)}var g={startRecording:function(t){return o.disableLogs||console.log("RecordRTC version: ",r.version),t&&(o=new i(e,t)),o.disableLogs||console.log("started recording "+o.type+" stream."),h?(h.clearRecordedData(),h.record(),u("recording"),r.recordingDuration&&l(),r):(s((function(){r.recordingDuration&&l()})),r)},stopRecording:a,pauseRecording:function(){h?"recording"===r.state?(u("paused"),h.pause(),o.disableLogs||console.log("Paused recording.")):o.disableLogs||console.warn("Unable to pause the recording. Recording state: ",r.state):p()},resumeRecording:function(){h?"paused"===r.state?(u("recording"),h.resume(),o.disableLogs||console.log("Resumed recording.")):o.disableLogs||console.warn("Unable to resume the recording. Recording state: ",r.state):p()},initRecorder:s,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return r.recordingDuration=e,r.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){r.onRecordingStopped=e}}},clearRecordedData:function(){h?(h.clearRecordedData(),o.disableLogs||console.log("Cleared old recorded data.")):p()},getBlob:function(){if(h)return h.blob;p()},getDataURL:c,toURL:function(){if(h)return d.createObjectURL(h.blob);p()},getInternalRecorder:function(){return h},save:function(e){h?b(h.blob,e):p()},getFromDisk:function(e){h?t.getFromDisk(o.type,e):p()},setAdvertisementArray:function(e){o.advertisement=[];for(var t=e.length,i=0;i-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),f=!u&&!l&&!!navigator.webkitGetUserMedia||y()||-1!==navigator.userAgent.toLowerCase().indexOf("chrome/"),p=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);p&&!f&&-1!==navigator.userAgent.indexOf("CriOS")&&(p=!1,f=!0);var g=window.MediaStream;function m(e){if(0===e)return"0 Bytes";var t=parseInt(Math.floor(Math.log(e)/Math.log(1e3)),10);return(e/Math.pow(1e3,t)).toPrecision(3)+" "+["Bytes","KB","MB","GB","TB"][t]}function b(e,t){if(!e)throw"Blob object is required.";if(!e.type)try{e.type="video/webm"}catch(e){}var i=(e.type||"video/webm").split("/")[1];if(-1!==i.indexOf(";")&&(i=i.split(";")[0]),t&&-1!==t.indexOf(".")){var n=t.split(".");t=n[0],i=n[1]}var o=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,o);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,o);var r=document.createElement("a");r.href=d.createObjectURL(e),r.download=o,r.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(r),"function"==typeof r.click?r.click():(r.target="_blank",r.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),d.revokeObjectURL(r.href)}function y(){return"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0)}function v(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function w(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}void 0===g&&"undefined"!=typeof webkitMediaStream&&(g=webkitMediaStream),void 0!==g&&void 0===g.prototype.stop&&(g.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),t.invokeSaveAsDialog=b,t.getTracks=v,t.getSeekableBlob=function(e,t){if("undefined"==typeof EBML)throw new Error("Please link: https://www.webrtc-experiment.com/EBML.js");var i=new EBML.Reader,n=new EBML.Decoder,o=EBML.tools,r=new FileReader;r.onload=function(e){n.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var r=o.makeMetadataSeekable(i.metadatas,i.duration,i.cues),s=this.result.slice(i.metadataSize),a=new Blob([r,s],{type:"video/webm"});t(a)},r.readAsArrayBuffer(e)},t.bytesToSize=m,t.isElectron=y;var E={};function S(){if(h||p||l)return!0;var e,t,i=navigator.userAgent,n=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return(f||u)&&(e=i.indexOf("Chrome"),n=i.substring(e+7)),-1!==(t=n.indexOf(";"))&&(n=n.substring(0,t)),-1!==(t=n.indexOf(" "))&&(n=n.substring(0,t)),o=parseInt(""+n,10),isNaN(o)&&(n=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),o>=49}function R(e,t){var i=this;if(void 0===e)throw'First argument "MediaStream" is required.';if("undefined"==typeof MediaRecorder)throw"Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.";if("audio"===(t=t||{mimeType:"video/webm"}).type){var n;if(v(e,"video").length&&v(e,"audio").length)navigator.mozGetUserMedia?(n=new g).addTrack(v(e,"audio")[0]):n=new g(v(e,"audio")),e=n;t.mimeType&&-1!==t.mimeType.toString().toLowerCase().indexOf("audio")||(t.mimeType=f?"audio/webm":"audio/ogg"),t.mimeType&&"audio/ogg"!==t.mimeType.toString().toLowerCase()&&navigator.mozGetUserMedia&&(t.mimeType="audio/ogg")}var o,r=[];function s(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function a(e){return o&&o.mimeType?o.mimeType:e.mimeType||"video/webm"}function A(){r=[],o=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return r},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],c=[],r=[];var n=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",n),o&&(o=null),f&&!S()&&(n="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&n.mimeType&&(MediaRecorder.isTypeSupported(n.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",n.mimeType),n.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{o=new MediaRecorder(e,n),t.mimeType=n.mimeType}catch(t){o=new MediaRecorder(e)}n.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in o&&!1===o.canRecordMimeType(n.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",n.mimeType)),o.ondataavailable=function(e){if(e.data&&c.push("ondataavailable: "+m(e.data.size)),"number"!=typeof t.timeSlice)!e.data||!e.data.size||e.data.size<100||i.blob?i.recordingCallback&&(i.recordingCallback(new Blob([],{type:a(n)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:a(n)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(r.push(e.data),s(),"function"==typeof t.ondataavailable)){var o=t.getNativeBlob?e.data:new Blob([e.data],{type:a(n)});t.ondataavailable(o)}},o.onstart=function(){c.push("started")},o.onpause=function(){c.push("paused")},o.onresume=function(){c.push("resumed")},o.onstop=function(){c.push("stopped")},o.onerror=function(e){e&&(e.name||(e.name="UnknownError"),c.push("error: "+e),t.disableLogs||(-1!==e.name.toString().toLowerCase().indexOf("invalidstate")?console.error("The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.",e):-1!==e.name.toString().toLowerCase().indexOf("notsupported")?console.error("MIME type (",n.mimeType,") is not supported.",e):-1!==e.name.toString().toLowerCase().indexOf("security")?console.error("MediaRecorder security error",e):"OutOfMemory"===e.name?console.error("The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"IllegalStreamModification"===e.name?console.error("A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"OtherRecordingError"===e.name?console.error("Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"GenericError"===e.name?console.error("The UA cannot provide the codec or recording option that has been requested.",e):console.error("MediaRecorder Error",e)),function(e){if(!i.manuallyStopped&&o&&"inactive"===o.state)return delete t.timeslice,void o.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==o.state&&"stopped"!==o.state&&o.stop())},"number"==typeof t.timeSlice?(s(),o.start(t.timeSlice)):o.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,o&&(this.recordingCallback=e,"recording"===o.state&&o.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(r,{type:a(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){o&&"recording"===o.state&&o.pause()},this.resume=function(){o&&"paused"===o.state&&o.resume()},this.clearRecordedData=function(){o&&"recording"===o.state&&i.stop(A),A()},this.getInternalRecorder=function(){return o},this.blob=null,this.getState=function(){return o&&o.state||"inactive"};var c=[];this.getAllStates=function(){return c},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function n(){if(o&&!1!==t.checkForInactiveTracks)return!1===function(){if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}()?(t.disableLogs||console.log("MediaStream seems stopped."),void i.stop()):void setTimeout(n,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function C(e,i){if(!v(e,"audio").length)throw"Your stream has no audio tracks.";var n,o=this,r=[],s=[],a=!1,A=0,c=2,l=(i=i||{}).desiredSampRate;function u(){if(!1===i.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function h(e,t){function i(e,t){var i,n=e.numberOfAudioChannels,o=e.leftBuffers.slice(0),r=e.rightBuffers.slice(0),s=e.sampleRate,a=e.internalInterleavedLength,A=e.desiredSampRate;function c(e,t,i){var n=Math.round(e.length*(t/i)),o=[],r=Number((e.length-1)/(n-1));o[0]=e[0];for(var s=1;s96e3)&&(i.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),i.disableLogs||i.desiredSampRate&&console.log("Desired sample-rate: "+i.desiredSampRate);var y=!1;function w(){r=[],s=[],A=0,S=!1,a=!1,y=!1,f=null,o.leftchannel=r,o.rightchannel=s,o.numberOfAudioChannels=c,o.desiredSampRate=l,o.sampleRate=b,o.recordingLength=A,R={left:[],right:[],recordingLength:0}}function E(){n&&(n.onaudioprocess=null,n.disconnect(),n=null),p&&(p.disconnect(),p=null),w()}this.pause=function(){y=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!a)return i.disableLogs||console.log("Seems recording has been restarted."),void this.record();y=!1},this.clearRecordedData=function(){i.checkForInactiveTracks=!1,a&&this.stop(E),E()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var S=!1;n.onaudioprocess=function(e){if(!y)if(!1===u()&&(i.disableLogs||console.log("MediaStream seems stopped."),n.disconnect(),a=!1),a){S||(S=!0,i.onAudioProcessStarted&&i.onAudioProcessStarted(),i.initCallback&&i.initCallback());var t=e.inputBuffer.getChannelData(0),d=new Float32Array(t);if(r.push(d),2===c){var l=e.inputBuffer.getChannelData(1),h=new Float32Array(l);s.push(h)}A+=m,o.recordingLength=A,void 0!==i.timeSlice&&(R.recordingLength+=m,R.left.push(d),2===c&&R.right.push(h))}else p&&(p.disconnect(),p=null)},f.createMediaStreamDestination?n.connect(f.createMediaStreamDestination()):n.connect(f.destination),this.leftchannel=r,this.rightchannel=s,this.numberOfAudioChannels=c,this.desiredSampRate=l,this.sampleRate=b,o.recordingLength=A;var R={left:[],right:[],recordingLength:0};function C(){a&&"function"==typeof i.ondataavailable&&void 0!==i.timeSlice&&(R.left.length?(h({desiredSampRate:l,sampleRate:b,numberOfAudioChannels:c,internalInterleavedLength:R.recordingLength,leftBuffers:R.left,rightBuffers:1===c?[]:R.right},(function(e,t){var n=new Blob([t],{type:"audio/wav"});i.ondataavailable(n),setTimeout(C,i.timeSlice)})),R={left:[],right:[],recordingLength:0}):setTimeout(C,i.timeSlice))}}function B(e,t){if("undefined"==typeof html2canvas)throw"Please link: https://www.webrtc-experiment.com/screenshot.js";(t=t||{}).frameInterval||(t.frameInterval=10);var i=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach((function(e){e in document.createElement("canvas")&&(i=!0)}));var n,o,r,s=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),a=50,A=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(s&&A&&A[2]&&(a=parseInt(A[2],10)),s&&a<52&&(i=!1),t.useWhammyRecorder&&(i=!1),i)if(t.disableLogs||console.log("Your browser supports both MediRecorder API and canvas.captureStream!"),e instanceof HTMLCanvasElement)n=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";n=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(r=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in n?e=n.captureStream(25):"mozCaptureStream"in n?e=n.mozCaptureStream(25):"webkitCaptureStream"in n&&(e=n.webkitCaptureStream(25));try{var s=new g;s.addTrack(v(e,"video")[0]),e=s}catch(e){}if(!e)throw"captureStream API are NOT available.";(o=new R(e,{mimeType:t.mimeType||"video/webm"})).record()}else h.frames=[],u=(new Date).getTime(),l();t.initCallback&&t.initCallback()},this.getWebPImages=function(i){if("canvas"===e.nodeName.toLowerCase()){var n=h.frames.length;h.frames.forEach((function(e,i){var o=n-i;t.disableLogs||console.log(o+"/"+n+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(o,n);var r=e.image.toDataURL("image/webp",1);h.frames[i].image=r})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){r=!1;var n=this;i&&o?o.stop(e):this.getWebPImages((function(){h.compile((function(i){t.disableLogs||console.log("Recording finished!"),n.blob=i,n.blob.forEach&&(n.blob=new Blob([],{type:"video/webm"})),e&&e(n.blob),h.frames=[]}))}))};var c=!1;function d(){h.frames=[],r=!1,c=!1}function l(){if(c)return u=(new Date).getTime(),setTimeout(l,500);if("canvas"===e.nodeName.toLowerCase()){var i=(new Date).getTime()-u;return u=(new Date).getTime(),h.frames.push({image:(n=document.createElement("canvas"),o=n.getContext("2d"),n.width=e.width,n.height=e.height,o.drawImage(e,0,0),n),duration:i}),void(r&&setTimeout(l,t.frameInterval))}var n,o;html2canvas(e,{grabMouse:void 0===t.showMousePointer||t.showMousePointer,onrendered:function(e){var i=(new Date).getTime()-u;if(!i)return setTimeout(l,t.frameInterval);u=(new Date).getTime(),h.frames.push({image:e.toDataURL("image/webp",1),duration:i}),r&&setTimeout(l,t.frameInterval)}})}this.pause=function(){c=!0,o instanceof R&&o.pause()},this.resume=function(){c=!1,o instanceof R?o.resume():r||this.record()},this.clearRecordedData=function(){r&&this.stop(d),d()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),h=new I.Video(100)}function k(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-A;return t?r?(A=(new Date).getTime(),setTimeout(i,100)):(A=(new Date).getTime(),a.paused&&a.play(),l.drawImage(a,0,0,d.width,d.height),c.frames.push({duration:t,image:d.toDataURL("image/webp")}),void(o||setTimeout(i,e,e))):setTimeout(i,e,e)}function n(e,t,i,n,o){var r=document.createElement("canvas");r.width=d.width,r.height=d.height;var s,a,A,c=r.getContext("2d"),l=[],u=-1===t,h=t&&t>0&&t<=e.length?t:e.length,f=0,p=0,g=0,m=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),b=i&&i>=0&&i<=1?i:0,y=n&&n>=0&&n<=1?n:0,v=!1;a=-1,A=(s={length:h,functionToLoop:function(t,i){var n,o,r,s=function(){!v&&r-n<=r*y||(u&&(v=!0),l.push(e[i])),t()};if(v)s();else{var a=new Image;a.onload=function(){c.drawImage(a,0,0,d.width,d.height);var e=c.getImageData(0,0,d.width,d.height);n=0,o=e.data.length,r=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({discardable:0,frame:e.data.slice(4),invisible:0,keyframe:1,lacing:0,trackNum:1,timecode:Math.round(t)});return t+=e.duration,{data:i,id:163}})))}function i(e){for(var t=[];e>0;)t.push(255&e),e>>=8;return new Uint8Array(t.reverse())}function n(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*r[0].width:r[0].width;var a=1;3!==e&&4!==e||(a=2),5!==e&&6!==e||(a=3),7!==e&&8!==e||(a=4),9!==e&&10!==e||(a=5),o.height=r[0].height*a}else o.width=s.width||360,o.height=s.height||240;t&&t instanceof HTMLVideoElement&&u(t),r.forEach((function(e,t){u(e,t)})),setTimeout(l,s.frameInterval)}}function u(e,t){if(!n){var i=0,o=0,s=e.width,a=e.height;1===t&&(i=e.width),2===t&&(o=e.height),3===t&&(i=e.width,o=e.height),4===t&&(o=2*e.height),5===t&&(i=e.width,o=2*e.height),6===t&&(o=3*e.height),7===t&&(i=e.width,o=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(o=e.stream.top),void 0!==e.stream.width&&(s=e.stream.width),void 0!==e.stream.height&&(a=e.stream.height),r.drawImage(e,i,o,s,a),"function"==typeof e.stream.onRender&&e.stream.onRender(r,i,o,s,a,t)}}function h(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||s.width||360,i.height=e.height||s.height||240,i.play(),i}function f(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=h(e);t.stream=e,i.push(t)}}))}void 0!==a?d.AudioContext=a:"undefined"!=typeof webkitAudioContext&&(d.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){l()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var n=new c;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var o=h(t);o.stream=t,i.push(o),n.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var r=s.audioContext.createMediaStreamSource(t);s.audioDestination=s.audioContext.createMediaStreamDestination(),r.connect(s.audioDestination),n.addTrack(s.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(n)}))},this.releaseStreams=function(){i=[],n=!0,s.gainNode&&(s.gainNode.disconnect(),s.gainNode=null),s.audioSources.length&&(s.audioSources.forEach((function(e){e.disconnect()})),s.audioSources=[]),s.audioDestination&&(s.audioDestination.disconnect(),s.audioDestination=null),s.audioContext&&s.audioContext.close(),s.audioContext=null,r.clearRect(0,0,o.width,o.height),o.stream&&(o.stream.stop(),o.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),f(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){n=!1;var t=function(){var e;f(),"captureStream"in o?e=o.captureStream():"mozCaptureStream"in o?e=o.mozCaptureStream():s.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new c;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),o.stream=t,t}(),i=function(){d.AudioContextConstructor||(d.AudioContextConstructor=new d.AudioContext);s.audioContext=d.AudioContextConstructor,s.audioSources=[],!0===s.useGainNode&&(s.gainNode=s.audioContext.createGain(),s.gainNode.connect(s.audioContext.destination),s.gainNode.gain.value=0);var t=0;if(e.forEach((function(e){if(e.getTracks().filter((function(e){return"audio"===e.kind})).length){t++;var i=s.audioContext.createMediaStreamSource(e);!0===s.useGainNode&&i.connect(s.gainNode),s.audioSources.push(i)}})),!t)return;return s.audioDestination=s.audioContext.createMediaStreamDestination(),s.audioSources.forEach((function(e){e.connect(s.audioDestination)})),s.audioDestination.stream}();return i&&i.getTracks().filter((function(e){return"audio"===e.kind})).forEach((function(e){t.addTrack(e)})),e.forEach((function(e){e.fullcanvas})),t}}function D(e,t){e=e||[];var i,n,o=this;(t=t||{elementClass:"multi-streams-mixer",mimeType:"video/webm",video:{width:360,height:240}}).frameInterval||(t.frameInterval=10),t.video||(t.video={}),t.video.width||(t.video.width=360),t.video.height||(t.video.height=240),this.record=function(){var o;i=new L(e,t.elementClass||"multi-streams-mixer"),(o=[],e.forEach((function(e){v(e,"video").forEach((function(e){o.push(e)}))})),o).length&&(i.frameInterval=t.frameInterval||10,i.width=t.video.width||360,i.height=t.video.height||240,i.startDrawingFrames()),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()),(n=new R(i.getMixedStream(),t)).record()},this.stop=function(e){n&&n.stop((function(t){o.blob=t,e(t),o.clearRecordedData()}))},this.pause=function(){n&&n.pause()},this.resume=function(){n&&n.resume()},this.clearRecordedData=function(){n&&(n.clearRecordedData(),n=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(o){if(!o)throw"First parameter is required.";o instanceof Array||(o=[o]),e.concat(o),n&&i&&(i.appendStreams(o),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()))},this.resetVideoStreams=function(e){i&&(!e||e instanceof Array||(e=[e]),i.resetVideoStreams(e))},this.getMixer=function(){return i},this.name="MultiStreamRecorder",this.toString=function(){return this.name}}function O(e,t){var i,n,o;function r(){return new ReadableStream({start:function(n){var o=document.createElement("canvas"),r=document.createElement("video"),s=!0;r.srcObject=e,r.muted=!0,r.height=t.height,r.width=t.width,r.volume=0,r.onplaying=function(){o.width=t.width,o.height=t.height;var e=o.getContext("2d"),a=1e3/t.frameRate,A=setInterval((function(){if(i&&(clearInterval(A),n.close()),s&&(s=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(r,0,0),"closed"!==n._controlledReadableStream.state)try{n.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),a)},r.play()}})}function s(e,A){if(!t.workerPath&&!A)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){s(e,t)}))}));if(!t.workerPath&&A instanceof ArrayBuffer){var c=new Blob([A],{type:"text/javascript"});t.workerPath=d.createObjectURL(c)}t.workerPath||console.error("workerPath parameter is missing."),(n=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),n.addEventListener("message",(function(e){"READY"===e.data?(n.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),r().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):n.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(o||a.push(e.data))}))}"undefined"!=typeof ReadableStream&&"undefined"!=typeof WritableStream||console.error("Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"),(t=t||{}).width=t.width||640,t.height=t.height||480,t.frameRate=t.frameRate||30,t.bitrate=t.bitrate||1200,t.realtime=t.realtime||!0,this.record=function(){a=[],o=!1,this.blob=null,s(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){o=!0},this.resume=function(){o=!1};var a=[];this.stop=function(e){i=!0;var t=this;!function(e){n?(n.addEventListener("message",(function(t){null===t.data&&(n.terminate(),n=null,e&&e())})),n.postMessage(null)):e&&e()}((function(){t.blob=new Blob(a,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){a=[],o=!1,this.blob=null},this.blob=null}t.DiskStorage=T,t.GifRecorder=x,t.MultiStreamRecorder=D,t.RecordRTCPromisesHandler=function(e,i){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var n=this;n.recordRTC=new t(e,i),this.startRecording=function(){return new Promise((function(e,t){try{n.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{n.recordRTC.stopRecording((function(i){n.blob=n.recordRTC.getBlob(),n.blob&&n.blob.size?e(i):t("Empty blob.",n.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{n.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{n.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{n.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(n.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(n.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(n.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(n.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(n.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"},t.WebAssemblyRecorder=O}));class Se extends ue{constructor(e){super(),this.player=e,this.fileName="",this.fileType=V,this.isRecording=!1,this.recordingTimestamp=0,this.recordingInterval=null,e.debug.log("Recorder","init")}setFileName(e,t){this.fileName=e,M!==t&&V!==t||(this.fileType=t)}get recording(){return this.isRecording}get recordTime(){return this.recordingTimestamp}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",onTimeStamp:t=>{e.log("Recorder","record timestamp :"+t)},disableLogs:!this.player._opt.debug};try{const e=this.player.video.$videoElement.captureStream(25),i=this.player.audio.mediaStreamAudioDestinationNode.stream;e.addTrack(i.getAudioTracks()[0]),this.recorder=Ee(e,t)}catch(t){e.error("Recorder",t),this.emit(v.recordCreateError)}this.recorder&&(this.isRecording=!0,this.emit(v.recording,!0),this.recorder.startRecording(),e.log("Recorder","start recording"),this.player.emit(v.recordStart),this.recordingInterval=window.setInterval((()=>{this.recordingTimestamp+=1,this.player.emit(v.recordingTimestamp,this.recordingTimestamp)}),1e3))}stopRecordAndSave(){this.recorder&&this.isRecording&&this.recorder.stopRecording((()=>{this.player.debug.log("Recorder","stop recording"),this.player.emit(v.recordEnd),function(e,t,i){const n=window.URL.createObjectURL(e),o=document.createElement("a");o.href=n,o.download=(t||ne())+"."+(i||FILE_SUFFIX.webm),o.click(),window.URL.revokeObjectURL(n)}(this.recorder.getBlob(),this.fileName,this.fileType),this._reset(),this.emit(v.recording,!1)}))}_reset(){this.isRecording=!1,this.recordingTimestamp=0,this.recorder&&(this.recorder.destroy(),this.recorder=null),this.fileName=null,this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}destroy(){this._reset(),this.player.debug.log("Recorder","destroy"),this.player=null}}class Re{constructor(e){return new(Re.getLoaderFactory())(e)}static getLoaderFactory(){return Se}}class Ce{constructor(e){this.player=e,this.decoderWorker=new Worker(e._opt.decoder),this._initDecoderWorker(),e.debug.log("decoderWorker","init")}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onmessage=t=>{const i=t.data;switch(i.cmd){case r:e.log("decoderWorker","onmessage:",r),this.player.loaded||this.player.emit(v.load),this.player.emit(v.decoderWorkerInit),this._initWork();break;case l:e.log("decoderWorker","onmessage:",l,i.code),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case d:e.log("decoderWorker","onmessage:",d,i.code),this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case s:e.log("decoderWorker","onmessage:",s,`width:${i.w},height:${i.h}`),this.player.video.updateVideoInfo({width:i.w,height:i.h}),this.player.video.initCanvasViewSize();break;case c:e.log("decoderWorker","onmessage:",c,`channels:${i.channels},sampleRate:${i.sampleRate}`),this.player.audio.updateAudioInfo(i),this.player.audio.initScriptNode(i);break;case a:this.player.handleRender(),this.player.video.render(i),this.player.emit(v.timeUpdate,i.ts),this.player.updateStats({fps:!0,ts:i.ts,buf:i.delay});break;case A:this.player.playing&&this.player.audio.play(i.buffer,i.ts);break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){this.decoderWorker.postMessage({cmd:g,opt:JSON.stringify(this.player._opt),sampleRate:this.player.audio.audioContext.sampleRate})}decodeVideo(e,t,i){const n={type:h,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:m,buffer:e,options:n},[e.buffer])}decodeAudio(e,t){this.player._opt.useWCS&&!this.player._opt.useOffscreen||this.player._opt.useMSE?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t)}_decodeAudio(e,t){const i={type:u,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:m,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:b,buffer:e,ts:Math.max(t,0)},[e.buffer])}destroy(){this.player.debug.log("decoderWorker","destroy"),this.decoderWorker.postMessage({cmd:y}),this.decoderWorker.terminate(),this.decoderWorker=null,this.player=null}}class Be extends ue{constructor(e){super(),this.player=e,this.stopId=null,this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.initInterval()}getDelay(e){return e?(this.firstTimestamp?e&&(this.delay=Date.now()-this.startTimestamp-(e-this.firstTimestamp)):(this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1),this.delay):-1}initInterval(){const e=this.player._opt.videoBuffer;this.player.debug.log("common dumex","init Interval");let t=()=>{let t;if(this.bufferList.length)if(this.dropping){for(t=this.bufferList.shift();!t.isIFrame&&this.bufferList.length;)t=this.bufferList.shift();t.isIFrame&&(this.dropping=!1,this._doDecoderDecode(t))}else if(t=this.bufferList[0],-1===this.getDelay(t.ts))this.bufferList.shift(),this._doDecoderDecode(t);else if(this.delay>e+1e3)this.dropping=!0;else for(;this.bufferList.length&&(t=this.bufferList[0],this.getDelay(t.ts)>e);)this.bufferList.shift(),this._doDecoderDecode(t)};t(),this.stopId=setInterval(t,10)}_doDecode(e,t,i,n){const o=this.player,{decoderWorker:r}=o;let s={ts:i,type:t,isIFrame:!1};o._opt.useWCS&&!o._opt.useOffscreen||o._opt.useMSE?(t===h&&(s.isIFrame=n),this.pushBuffer(e,s)):t===h?r.decodeVideo(e,i,n):t===u&&r.decodeAudio(e,i)}_doDecoderDecode(e){const t=this.player,{decoderWorker:i,webcodecsDecoder:n,mseDecoder:o}=t;e.type===u?i.decodeAudio(e.payload,e.ts):e.type===h&&(t._opt.useWCS&&!t._opt.useOffscreen?n.decodeVideo(e.payload,e.ts,e.isIFrame):t._opt.useMSE&&o.decodeVideo(e.payload,e.ts,e.isIFrame))}pushBuffer(e,t){t.type===u?this.bufferList.push({ts:t.ts,payload:e,type:u}):t.type===h&&this.bufferList.push({ts:t.ts,payload:e,type:h,isIFrame:t.isIFrame})}close(){}destroy(){this.stopId&&(clearInterval(this.stopId),this.stopId=null),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.off()}}class ke extends Be{constructor(e){super(e),this.input=this._inputFlv(),this.flvDemux=this.dispatchFlvData(this.input),e.debug.log("FlvDemux","init")}dispatch(e){this.flvDemux(e)}*_inputFlv(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),n=this.player;for(;;){t[3]=0;const e=yield 15,o=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const r=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8];let s=i[0];16777215===s&&(t[3]=e[11],s=i[0]);const a=yield r;switch(o){case f:n._opt.hasAudio&&(n.updateStats({abps:a.byteLength}),a.byteLength>0&&this._doDecode(a,u,s));break;case p:if(n._opt.hasVideo){n.updateStats({vbps:a.byteLength});const e=a[0]>>4==1;a.byteLength>0&&this._doDecode(a,h,s,e)}}}}dispatchFlvData(e){let t=e.next(),i=null;return n=>{let o=new Uint8Array(n);if(i){let e=new Uint8Array(i.length+o.length);e.set(i),e.set(o,i.length),o=e,i=null}for(;o.length>=t.value;){let i=o.slice(t.value);t=e.next(o.slice(0,t.value)),o=i}o.length>0&&(i=o)}}close(){this.input&&this.input.return(null)}destroy(){super.destroy(),this.input=null,this.flvDemux=null,this.player.debug.log("FlvDemux","destroy")}}class Ie extends Be{constructor(e){super(e),e.debug.log("M7sDemux","init")}dispatch(e){const t=this.player,i=new DataView(e),n=i.getUint8(0),o=i.getUint32(1,!1);switch(n){case u:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,n,o)}break;case h:if(t._opt.hasVideo&&i.byteLength>5){const r=new Uint8Array(e,5),s=i.getUint8(5)>>4==1;t.updateStats({vbps:r.byteLength}),r.byteLength>0&&this._doDecode(r,n,o,s)}}}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy")}}class Te{constructor(e){return new(Te.getLoaderFactory(e._opt.demuxType))(e)}static getLoaderFactory(e){return e===n?Ie:e===i?ke:void 0}}class xe extends ue{constructor(e){super(),this.player=e,this.hasInit=!1,this.isInitInfo=!1,this.decoder=null,this.initDecoder(),e.debug.log("Webcodecs","init")}initDecoder(){const e=this;this.decoder=new VideoDecoder({output(t){e.handleDecode(t)},error(t){e.handleError(t)}})}handleDecode(e){this.isInitInfo||(this.player.video.updateVideoInfo({width:e.codedWidth,height:e.codedHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.handleRender(),this.player.video.render({videoFrame:e}),this.player.updateStats({fps:!0,ts:0,buf:this.player.demux.delay}),setTimeout((function(){e.close?e.close():e.destroy()}),100)}handleError(e){this.player.debug.log("Webcodecs","VideoDecoder handleError",e)}decodeVideo(e,t,i){if(this.hasInit){const n=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?G:H});this.decoder.decode(n)}else if(i&&0===e[1]){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===x)return void this.emit(E.webcodecsH265NotSupport);const i=function(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let n=t[e].toString(16);n.length<2&&(n="0"+n),i+=n}return{codec:i,description:e}}(e.slice(5));this.decoder.configure(i),this.hasInit=!0}}destroy(){this.decoder.close(),this.decoder=null,this.hasInit=!1,this.isInitInfo=!1,this.off(),this.player.debug.log("Webcodecs","destroy"),this.player=null}}const Le={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"加载",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制"};var De=Object.keys(Le).reduce(((e,t)=>(e[t]=`\n \n ${Le[t]?`${Le[t]}`:""}\n`,e)),{}),Oe=(e,t)=>{const{events:{proxy:i}}=e,n=document.createElement("object");n.setAttribute("aria-hidden","true"),n.setAttribute("tabindex",-1),n.type="text/html",n.data="about:blank",re(n,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let o=e.width,r=e.height;i(n,"load",(()=>{i(n.contentDocument.defaultView,"resize",(()=>{e.width===o&&e.height===r||(o=e.width,r=e.height,e.emit(v.resize))}))})),e.$container.appendChild(n),e.on(v.destroy,(()=>{e.$container.removeChild(n)})),e.on(v.volumechange,(()=>{!function(e){if(0===e)re(t.$volumeOn,"display","none"),re(t.$volumeOff,"display","flex"),re(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=se(t.$volumePanel,"height")||60,n=se(t.$volumeHandle,"height"),o=i-(i-n)*e-n;re(t.$volumeHandle,"top",`${o}px`),re(t.$volumeOn,"display","flex"),re(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(v.loading,(e=>{re(t.$loading,"display",e?"flex":"none"),re(t.$poster,"display","none"),e&&re(t.$playBig,"display","none")}));try{const i=()=>{re(t.$fullscreenExit,"display",e.fullscreen?"flex":"none"),re(t.$fullscreen,"display",e.fullscreen?"none":"flex")};$.on("change",i),e.events.destroys.push((()=>{$.off("change",i)}))}catch(e){}e.on(v.recording,(()=>{re(t.$record,"display",e.recording?"none":"flex"),re(t.$recordStop,"display",e.recording?"flex":"none")})),e.on(v.recordingTimestamp,(e=>{})),e.on(v.playing,(e=>{re(t.$play,"display",e?"none":"flex"),re(t.$playBig,"display",e?"none":"block"),re(t.$pause,"display",e?"flex":"none"),re(t.$screenshot,"display",e?"flex":"none"),re(t.$record,"display",e?"flex":"none"),re(t.$fullscreen,"display",e?"flex":"none"),e||t.$speed&&(t.$speed.innerHTML=ce(""))})),e.on(v.kBps,(e=>{const i=ce(e);t.$speed&&(t.$speed.innerHTML=i)}))};function je(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===i&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}je('@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}.jessibuca-container .jessibuca-icon{cursor:pointer;width:16px;height:16px}.jessibuca-container .jessibuca-poster{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:100%;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jessibuca-container .jessibuca-play-big{position:absolute;display:none;height:100%;width:100%;background:rgba(0,0,0,.4);background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:50%;cursor:pointer;background-size:48px 48px}.jessibuca-container .jessibuca-play-big:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC")}.jessibuca-container .jessibuca-loading{display:none;flex-direction:column;justify-content:center;align-items:center;position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;width:100%;height:100%;pointer-events:none}.jessibuca-container .jessibuca-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jessibuca-container .jessibuca-controls{background-color:#161616;display:flex;flex-direction:column;justify-content:flex-end;position:absolute;z-index:40;left:0;right:0;bottom:0;height:38px;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;transition:all .2s ease-in-out;-webkit-user-select:none;user-select:none}.jessibuca-container .jessibuca-controls .jessibuca-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jessibuca-container .jessibuca-controls .jessibuca-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jessibuca-container .jessibuca-controls .jessibuca-fullscreen,.jessibuca-container .jessibuca-controls .jessibuca-fullscreen-exit,.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-microphone-close,.jessibuca-container .jessibuca-controls .jessibuca-pause,.jessibuca-container .jessibuca-controls .jessibuca-play,.jessibuca-container .jessibuca-controls .jessibuca-record,.jessibuca-container .jessibuca-controls .jessibuca-record-stop,.jessibuca-container .jessibuca-controls .jessibuca-screenshot{display:none}.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-icon-mute{z-index:1}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom{display:flex;justify-content:space-between;height:100%}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-left,.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-right{display:flex;align-items:center}.jessibuca-container.jessibuca-controls-show .jessibuca-controls{opacity:1;visibility:visible}.jessibuca-container.jessibuca-hide-cursor *{cursor:none!important}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100%!important;height:100%!important;background:#000}.jessibuca-container .jessibuca-icon-loading{width:50px;height:50px;background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%;animation:rotation 1s linear infinite}.jessibuca-container .jessibuca-icon-screenshot{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAE5UlEQVRoQ+1YW2sdVRT+1s7JxbsoVkEUrIIX0ouz15zYNA+N1RdtQfCltlUfvLbqL/BCwZ8grbHtizQqPojgBSr0JkiMmT2nxgapqBURtPVCq7HxJCeZJVPmxDlzZubMmXOSEsnAvOy917fXt9e39tp7E5b4R0vcfywTuNgRbBgBx3HuJqLVzPzmYjprjHkcwAlmLqXNm4XAISLaSESPaq2HF4OE67rbRGRYRA7btn1fbgLGmKsA/Azg0gBkGzO/vZAkHMd5hIiqc5wHcCMz/5k0Z2oExsfHV1QqldPAf8lORNu11m8tBAljzFYAYWxRSl1vWdZvuQj4RsYYF4AVBlgIOVVlE55HRIxt23ZuCfmGjuOsJ6LPoiAistW27XfaEYmIbOYhPc9bXywWR1oiEJDYQkR1zrYjEjGyqfqbKd8a7kJVtLgQ+30i8pht2wfyRKIdmJkJBPkQTbILfudJ7CTZNBvVpggEcgpvc/ML38zESbLJsxBNE/A9biX0rdjGyTQXgbxyapdsarb0PMlXtWnGoXbKpm0Essqp3bJpK4E0OXmed3+hUBDP8w5FI91M0rdcyLLILElOCbaZilSWeXMncRx4klTCY1spfG3dhZJWx3GcDUR0EEB3ZMw0ET2gtT6SZWWzjmlrBIJCl0hAKfWgZVmHszqXZVxbCSxpCS2JJA6umIhe8ZKKVLPbaBJ+S9toqVRa53nedgAbAKwIwH4FcAzAa0R0l4i8F7PPz189k6RFRA+LyNcAXojDV0oNW5b1eW4Cxpg9AHZkSaaa6hhzb065uDSCH2LmRB8Sk9gY4293g43Qo/1pV80m8yQMfZSZ781cB1zXHRKRZ2IMpgD8A+DamL4ZItqitX4/jbQx5iEA7wLoihn3V/ACckWMJN/QWj9b1x5tGBsbW6uUOh5pPy0iL3Z2dn6ilJqanp5ep5TaJSLhF4NppdRNaU8gPmapVLrO87yfIoXuWyJ6uVKp+HmFjo6OQSJ6FcBtYT+UUmstyxqvkWuUgDFmP4AnQu2/e563qlgs+u9DNZ8xZhRAX7VRRPbath0XuXk7Y8xeAE+FgL6fnJzsHRwcLIfBR0ZGLunq6poAsDLUvp+Zw7b1r9PGmJMAbg8Z7WDmoThZuK67WkS+DD18fcPMdzSQUBR/EzN/nIC/SUQ+DPXV4dclsTHmHAD/SfHCNzc3t7Kvr++HJKeMMacA3BL0nyuXyzcPDAxMxo0fHR29slAo/Ajg6qD/fE9Pzw29vb1/x42fmJi4vFwu+5G/LOg/y8zXNJLQ2dAES5JANMQ7mfn1jBI6ycx3NiMhItqstf4oAX+ziHwQ6qvDj5NQNIn/ALCKmX+JSeIvABRD7fuY+ekGBPYBeDI05tTMzExvf3+/vz2Hk91/ET8RSeI6/DoCpVJpjed5fmKGvzMAXpqdnT3oed5Ud3d3v4jsAqBr9Ei0Rmv9VRqBBPzvROQVETnq2xJRdRu9tRF+bCVOKWT+Kvl/TSIFk6SW/LAjKfjV5K8rZABi8dOOEv7FI7Z8x6zwEWbemLbyMfJr5qiSiJ96oclymBOR3bZtP9+M89WxxpjdAHY2sN3DzM8ljWl4I3Nd9x7/OE1ENcdpETnmH3e11n41zv0l4J8RkU+J6AAz+xtF4teQQG7PFslwmcAiLfSyhC72Qv9/I/Avns2OT7QJskoAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-screenshot:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAED0lEQVRoQ+2ZycsdRRTFf2ejqHFAMQqiYBTUoElUHLNx3GgCgpuYRF2o0UT9CxwQ/BMkMSbZSKLiQgQHUDCJgjiAxiEiESdEcJbEedgcKaj3UV+/6q7u/jovPPkK3qbr1ql76p5bt6qemPKmKfefeQKHOoLFCNg+H1gi6fFJOmv7VmCvpD1N87Yh8ApwNXCzpB2TIGF7DRDm2inpmt4EbB8LfAMcGUHWSHryYJKwfRMwmuMP4BRJv9TN2RgB2wuB72BWsq+V9MTBIGF7NZBiGzhJ0o+9CIRBtt8FLqgADC6nRDbpVO9Iuqi3hCKB5cDrGZDVkp4aIhIV2aSQyyW9MScCkcQqIOfsnCORkc3I31b5VtyFRmg1IQ7dt0ja3icSQ2C2JhAjUU2ykd+dE7tBNp2i2olAJJFuc+nCt564QTadF6IzgUhiVGiqyinKaQjZpJP2ItBXTkPJZhACXeU0pGwGI9BWTkPLZlACBTldG4o5EA6E1dY66edcyNrs8Q36zg1vVaTazNs7iXPgDVJJzYs7VRvHRzaDEohyugJ4CTi84sg/wHWSdnVxsGQ7aQLXS9pZcqpL/6AEplpCU5HE8YpJ9YrXUKQ6baN1+HPaRm1fBqwFQnKGK2ZoPwCvAo8Ai4FnMpPMHMwapHUj8DFwbw3+Dklv9iZgexOwvktSRduxU2VDlErwmyXV+lCbxLbDdndlCT3TX3vV7JgnKfRuSVflfMkSsL0ZuDMz4E/gL+CETN+/wCpJzzaRtn0D8DRwWMbu1/gCcnSm7zFJd1W/jxGwvQx4r2IYnlbuA14GAomQFw8B6YtBKFSnNj2BxEJ3IvB1pdB9CjwQ8yqYhcg/DJxZ8WOZpA/SbzkC24DbEqOfgPMkBRKzmu23gEuSj1sk5SI3Y2J7C3BHMuZz4FxJf6fgto8APgIWJd+3SUrHjr9O294HnJUMWi8pSGqs2V4CvJ88fH0i6eyChKr4KyS9WIO/Ang+6RvDz0XgABCeFEdtkaQv65yy/QVweuwPY0+T9FuNQ8cAXwHHxf7wdHiypN9r7BfEl8GjYv9+SceXJLQ/mSDYTh2Baog3SHq0pYT2STqno4RWSnqhBn8l8FzSN4bfJol/jkn8bXUS228DFyfft0paVyCwFbg9sQkSDEkctueZZju8iO+tJPEYfo7A0piYKd73wP3xnB+20cvjNnphxdmlkj4sEMjhfwY8COyOY0fb6Bkl/K6FLKxS+M1KpDhJY8mvrG5doRwlf66QZfGbjhLh4pEt35kV3iUp/IvTunU8qtTil/7gaHOY2yjpntaez9b5RmBDYewmSXfX2RRvZLYvbThOh+NuqMa9Ww1+yLnXgO2SwkZR24oEens2oYHzBCa00PMSOtQL/f+NwH+Hg8hAnbrYgQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABA0lEQVRoQ+1YwQqCUBAcfWXXsLr2AXWTPXno8yVB8AP6Aa3oHI+kCDqYaawJljSe133uzO44bx0M/HEG/v1gAd9mkAyQgY4I/F8LJUlyrQFtD2AtIkcNoFEU+Z7n7QD4DfFHEVlocrVmgAUAIAOl3mILPcDgEFcUhyrUKMGUUcroc3NQRimj9XJBGaWMvvPydKN0o6/9QTdKN6rZANxj6EbpRulGuZnjYqs8BbyR8Ub2Izeys+u6yyAIDpo/ehzHM2NMDsA0xFsRmWhyfTIDWSXxCEBmrd2EYXjSHJqm6bQoii2AOYBL5Z0xgFxEVppcrQvQJO0zhgX0iXbdWWSADHRE4AZQ731AhEUeNwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAA7klEQVRoQ+2YSwrCQBBEX6HiVvxsPYDewfN7By/gD9ciQkvERQwJdBSiYs0mEDo96aruombEjy/9+P/jAj7NoBkwA28i8H8tFBFRA9oeWEo6ZgCNiDGwAYpn3TpKmmVytWbABQBmoNRbbqEHGB7iiuJYhRol2DJqGX1uDsuoZdRmLuNZSzGWUcuoZdRHSp/IylNgK2ErYSthK3FHwLcSvpXIjoLt9Jfa6TMwl3TIMBkRE2AH9BriL5KGmVyvWIltJXEfKN6tJJ0ym0bECFgDU+Ba+WZQFCdpkcnVuoBM0i5jXECXaNftZQbMwJsI3AAPN3dAQflHegAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC+UlEQVRoQ+1ZS2sTURT+zlDJYE3XSq219QHVuEjnJDT+Bff9Abqw2voAEfGxqygUqWhVFHGl/yMLu9BwByxk5SNI66ML6U7axjhHbmhgWiftncxoOiV3FcI53z3f/e65594zhIQPSnj86BBot4IdBToKRFyBnbeFlFIScVEiuYvIWC6Xe2YK8pcC7SYA4CMzH4mDQBXAqilQBDsLQLfPf9FxnF4i8kwwmypARI+Wl5dvmIBEsUmlUkNE9NaHsVCpVAZGR0d/m+A2JSAid3K53E0TkCg2pVKpz7KseR/GfKVSGYxMAMA0M1+JEpyJb6lUOm5ZVnkrAsVisaunp+esiByr1Wp3R0ZGvmifzZK4XQQWHMc52MgBpdQuAOcAXABwuB400ZTjONdaIjA7O5u2bVsnWU1EujzP+5nP5xdMVjvIJkCBD8x8VCm1G8AYgAkAAxt8Z5j5YmgCSqlTAJ4D2OcD/AXgATNfbYVEAIFPIvKKiE4D6GuCea8xX6gtpJT6DmBvECgRFRzHeROWRAABE4iWCbwHEFhkPM/L5vP5dyaz+23+KwHXdR3P854S0YG1ILSCuthNMfNM2OC1/RYENLY+ygcBnPfht6ZAA6BYLNr6dyqVokKhsGpaNQ2TWJstreXaE2aed133sojcj41AKyvdzCdAgSXLsk4MDw9/a/i4rntbRPxFNZoC/5jAV2be759DKTUJ4FZSFFi0bbs/k8noy2R9dAjEuWU2YgXkQOK3kD6BMsysi2Z9JC2Jdcw/ALzwPO+xvmcl7Rj177JVEbkO4BARjSflFDJJuW1dBxJPoCIiL4noDIB1BS0pW6j+oJmbm+uuVqvjRKQfLr0bZHnIzJf0f6HeAybahrUJqAPruhLlcnnPysqKfpXp11n/Gv62zoHAroS+AafT6QkiGrIsazKbzX7eVIHEt1US39gCkOzWYthkjNE+tuZujDGZQ8XRXn8N4KT5lLFZ6uaYPt+nwyDuvC80YdhvB9uOAu1WoaNAR4GIK/AHvdr+QAexB7EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACfUlEQVRoQ+2ZSYsUQRCFvycK4nJXXEbHBdwO4kn/gv9CD467ICIutxEFkREdFUU86T/xojcPntyQcT2INw+uISFVkD1Wd2dWlU7nUHlqisiX+fJFZGREi8yHMt8/HYG5VrBToFOg4QnMPxcyM2t4KE2nT0i6EwvylwIjQOCFpE1tEPgGfI0FamC3AFgazP8IrJL0KwZzkAI3gLMxIA1ttgCPA4w3wHpJP2NwBxG4KOlcDEgTGzNbA8wEGP57vA0CU5JONtlczFwz2wY8HUbAzBYCB4CtwCVJb33OIAXmioC70LoyBsxsEXAQOApsLIhelnS6FgEzW+5BBvwA/FS+SPJFa40KBZ5L2mxmS4AJ4IjHxCzwaUnHkgmY2V7gLrAyAPwOXJN0qg6DCgIvgQfAPsDjo2pcKddLciEz+wCs6AO6W9KjVBIVBGIgahN4BvRLMjslPYlZPbT53wR2AbeBtcUmXEFPdh5U06mbd/shBBzbr/Jx4FCAX0+BEsDMFocEYrNmFcE+BD4XsXZL0oyZnQCutkagzkn3m1NBwDe/Q9L74MAuFEqUn5op8I8JvJO0elacTALnc1HAH3Njkvwx+WeYWUegTa/pwaqIgexdyIN4uyRPmqULZRXEvulPwD3gpr+zcrtGQxfzRHYG2AAczuUWiom3kc4D2RN4BdwH9gM9CS0XFyoLGu9UuN974eIFVDiuSzruH5LqgRhtU20q8kBPV8LMlhVVmVdnYwX+SMdAZVeieAF7eeltmElJr4cpkH1bJfvGVvatxdR4bMu+teZuWxtKxWncXn8I7EldtQV7vz79fp9KwZp//9CksB8F206BuVahU6BToOEJ/Ab7+KdABdTt8AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAHn0lEQVRoQ81ZbYxcVRl+nnvu7ErSEmtqDdKwO3e2LWJLSEuFNiofFv9AUIpfiSFqCzt31lITGgEjHxKIKVirqXbnzpZSf5BAoHwIhpiAgDVSwBaU1rZLd+7skiIJKCWVpOzOPfc1d3dn986dO3Nn9kvuz3ve87zPc857znnPe4gZ+BZvlzPMed4XDG2sBGWFAGcRXET6ZwTwIsZpgbxL4B0ID/nKf8370Hz1xE08PV33nDKACDOO/roQ15K4TASfbQWLxL9E8AKJvcWs+WQrfcO2UxKQcfSNAn8TwKVTdVzdT/oJbi/aZl+reC0JsArelRDeC8jnW3XUnL0cofC2Ys58ojl7oDkBj4hKv697CXQnA8sxCEsE3hbKh4E9hfMEOBuUNMBzkzAE6Ct9SvXgW9RJtokC0r+VDqb8pyByfgOwZ0g84mv1cqmH/Y2cpntlmUG9BgauEcHVdW3JN6RsXF3axKFGeA0FdBVGVvpi/AnAJ2NAhkHpBU3H7eabSSMV1271yVL63g0C3gigPcbmA/r+umJP28F6+HUFZPLDy4XqVQCjW2HkexJQN7s2j0+FeLRPZqd0idL3Algfg/cRRa8u5toPx/mKFZDJyyKhPgZgQU0nssfNqvxMEK8RktdZoThxM2G0qaUDG/hetC1WgOXo1wG5IGJcNkS+OpBLvTgb5CuYXfnypT75x2hICfh6yVYrEwWknfJ9BH8cJU/fX9MoFmdS1Pja2w+gLYwrkF+U7NTN4X9VM9CxUz6nlD5So5JyeTGbemEmSSZhZQrly0T4fNROa3Xe0A95tPK/SoDleH8DcGF1J97q2ipYYHP+WY6+BZCtEccHXNtcXSPA6iuvg89nGxnPuQIAlqMPAhKJfVnn2qlge588iS3H2wfgS1XxJXpFve0rbNexS9JKwzQIvxmRvsDQCt7QDSwl2ad7h8+nof4Rsdvn2uYlEwKCAwW+jp6gT7u2Wf+kBBCcqjT8RwFZkUQktp18AzS+mXQQWo73NICrqjHU0uAcGl0DlqPvAOSusIFP/+LBbNsrjYhZjvccgK9MiXylk+A5N2de0QijszBykSHGy1XRQd5RzKq7RwVkHG+/ABdPGBADbtZckkTMcjw3mIgku0btArgl28wkYViONxBQndSN/SXbXMvRZM3UQS4zuedS7nOzqVuSQfXh6afW/Kdrq+VJvmLOpxFQLaHleEH+8VgE4ErXNp9JArUcfQiQROeNcXjYtVXiGhq7i+AP1ZsM1tNy9E8A+XmowfdFZQZzHPw4CejMS6dBHYRs6OzirbTyXi+IXIjsiXPeUekX76L3cRJw6Z1ivnWWDgb17BCvXloF7yEIvjP5k4dcWzW6vEyYzmUIje+W0ZB9KFgDjwO4JqTqFdc2J3ekBtMw9wK8YCu9KETpiWAG9kJwbejnQdc2I/lQvIr/g4ADAFaF2OwNZmAPgO9P/pQ3XTu1LCn+60xpM90iNs3tQmP+yv2RUs4eWk55K8Dwnn/Kb1cdgz/gB0ls5nIGzumVBaahgwv+/AleIluZcbxuAQpV+6vvX9jM5WUuBWR6R1aJYQQhFOKPbnY55TU++FL1aDPn2irublplNpcCrILOQaQ3TMCArGXnHvmEGtHFcG2TxFPFrPm15BAqHwPY1HqpjyX9rp1KLHbFZKRv++2qazwb9R4E8N2Qk7IxohYObOapRiLSjlckYCUJbdTeTDLXtUPO9Nv0fwCYIawHXdu8riIgJh/iFtdW2xsKKOgtFNk2HQEQ3uTm1K9a9UPB+qCGOipgVUFSJ0W/W1WBE7zn5sxFSeTSee86EpdT4ImBxFpmgEcfSgglwPMl2wxmv+FnOV5QD1oYMjq5gOozB7MsTyRGVkHfCZGfVe1G4O1FW92T5GA22+MuWwK5p2Snbh8djIrz83bKvI+Ufh9AKrxT+aKsZjLT2RAxdtfWxeoMFJ7frj5dOaeqyioZR98mkLurycgR107N0ntAUuiUj0bL8YxERU1p0Sp4gxB0VEETj7lZ8xuzMcr1MGNytCBehtys2Vkd5hGE8bJeXDl7t2ub18+FiEze2yVEjS+D/qqBbNtrDQUEjWNvYLIjSlaA36sR9e2BzRyeDSHBocph/TCBmkOU4OairX4T9Vv3fcByyr8G+KMaosSAaNlQ6kn9ZSZFWIXyFyH8XbjyUMEXkR2lXKqWS2R11/CxHO9+ABtjiQryMNRWN8u3piOka5cs9rX+KQA7Fod4wM2a8RySBIyGU768TcgtdUieJrEbvjxczKX+2oqQ8REPrrLfAzAvri8h24p2Klrqj+wvTXhNO95GjqXcqp45KUcF3CfAAaEcN+H/25e2/wb2BkfmezAWUrgEgtWEfDnhtVJD0O3mzAeS6CW+UlYArMLwCoj6JYCGZcCIw8pij3vAq8dtH6g3udn2Q0nkg/amBVTA0gXveopsaea9txkCkzZynOC2Vl/rWxYwMSN5b8PoAifWtkY0Yi14CcT9rm0Gd/OWvykLqHjq7Bu5QIm6QkQuAbG85hSPUiKGIDhM8s+a+tnB7ra/t8w61GHaAsLOl+2W+WVdPpfaWCzBE63BM0fbfTlF4KQo/0RKpY71b+To4p6J73/tXyc1fevA3AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADd0lEQVRoQ+2Zz2sdVRTHv+fJBDW6anDVXen6wZszYxYBiYgtFGst3VSDunKjpS0GpUlqfjVpsVVs6aaL0or4YxMVFCJZ2ZLdPUP+gq5bQnTxtNAkfTnlhnnlkmQy9yV9780rudt77tzv5/y4v4bQ4Y06XD/2ANodwec/AiJygJnvtdvTWfPnRkBEJAiCN8rl8kMfiPn5+Ve7u7v3rays0Orq6lJfX99/PuN2auMDoAD+BvA2M6/mTWSMOUtE48D6AjHGzN/kjdlNvy+AnWOOmQ/lTSYiEwDOWzsimgrDcCRvzG76GwGw8/zJzO9sN6GInAMwbW1UdSSKoqndCMwb6wNwGsB39Q+p6h/M/C4R2dTa1AoHYBWKyCkA1+pqiWi2Wq0e7e/vf7yRoJAAKcQggMtuJKIoOtoxACnE0/xOi/SXMAxPuhCFjUBdpIjYVWXSEf0TM3/g9BeriDMKdSPEz8z8vrU1xgwT0YXCrEJZy1iSJKOqOub0/8jMA0mSfKKqNwoPkHp7ioiGHIhRIvpHVa93BEBa2JcAfOlALAHo6RgAKzRJkk9V1S6xL7kpV4idOM31taxaIKJHqmpPnMMA9hcOQES2PDJkAT1XAAC+ZebPfWB3auNzmLObVsNRUNUXVHUujuM7OxXnMy4XwOcj29mIyOuq+lapVGrYCelKpkEQ3CyXy4tbzdN0AGPMxr2iYZ+sra3FcRybtgCIiK2BKw2rdgaUSqWoUqlIkQAepFDdAF7cBq5ERI9rtdr1OI7tmE2t6SmUEYFHAEaexYW/1QC2EF+ru5GIvg7D0D2GNJxprQY4o6qv1I/b6SpzOYqiLxpWng5oOQAzXxWRWwA+dkRfYOb1p5hGW6sBJpn5KytSRG4D+KguWFXHoyhy7xdeLC0F2ChSRL4H8OFuINoKYIUbY34gogHH3eeZef1K6tPaDpCm068A3nMEDzHzxY4BUNWSiPxORO6z5aDPPlGICNQ9bYyZIaLjjudzIQoFkKbTbwCO+UI0HcB9J/LdeY0xs0R02IGYYObRrWqiFQCfEZEtSHsfmGZm+4qxbbM/hQD8BeBNa0hEM2EYnmgLgP3lFARBT1dXly4vL//b29tbzQNIU+llAHeJaLFSqRzJes5vegR8xGbZLCwsHKzVav8z8/0sm0ID+MDvAfh4qZk2exFopnd9vv0ELrXBQO7fD10AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC/ElEQVRoQ+2Zy49NQRCHvx+ReK6IlZ34E7CUiCAR4xEbTLCyQRATYswwb2IQZDYWgojHZpCQECts+ResiQwLj0RClNSkb9Lu3HtPz7mZc8+V6eXt6tP1VVV3VdcVbT7U5vozC9BqD/7/HjCzlZLet9rS9fbP9ICZvQPWSfqRAmFmS4ClMHm+JiR9S1mXVyYFwIBXwEZJv7I2MrPjQH8A6JN0OWtNM/OpAL7HS0mbsjYzswGgN8gNS+rJWtPM/HQAfJ9nkrY22tDMTgMjQaZH0nAzCmatTQE4ClyNPvQU2CbJQ2vKKB2Aa2hmR4DrkbbPgQ5Jv6sJSgkQILqA0dgTkjraBiBAxPHtPz2UtDuGKK0HKkqamd8qg5HS9yXtjebLdYjrHNRqiAeS9gQvnQGGSnML1bvGzOwc0BfN35PUaWYHgRulBwjW9ju+O4JwqM/AWFsABIgLwKkIYgJY1jYAAeJQuGIXVIVcKTKxh8WfBin9J+AVpx/eFWUEqFkyNACKp0rhgWYArkg6kQibSyylmPOklQdibijBX+fSLHFRJkDid+qKmdlaYENOI0zeEcBNSZ9qbVIEQHWuyGOTNZLetgrAz8ClPFpHa1ZL8rf5lFGEB2oBfAxQi4D5DeDmAP7mGJPka0oD4LnDr9imH/xFe8AP4vLIjBclxWXItCOtaIBjwOKo3HaFRyWdnLbmYUHhAJKumdkt4ECk9JCkSitmWixFAwxKOjt5uZvdBvZH2vZLit8XSSBFA/yjpJndAfY1A9FSgOCJu0BnBNErqfIkzfRCywECxCNgR6Rtt6TzmdqHBmyKXG4ZM4sTWc04NzNPWE+AuG3ZlZInSuGBinXMbBzYGVkrE6JUACGcHgPbUyGKAIj7REmZ18y897o5ghiQ5E/bltRChwE/kF7Xj0jyLkbDYWbzgBfA+iA4LmlXqwD8LydvszjAF0lfswBCKC0E3gBeP22p186f8RBKUbaejJmtAr5L+lBPptQAKfCzAClWmkmZWQ/MpHVTvv0X9iFAQGQyevIAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACrUlEQVRoQ+2ZPYgTURCAZzbBXJnCeL2Cnb87b9MEtPBUrrMQFAtrtT5/ClGs9LBWWz0RtbBUFCF4oJDsbO68wsLA2YqQSmLlvpEHu7IuMdlLcus+yUKKhJfZ+ebnvZl5CJY/aLn+MAP41x7M1QPMfFtr/crzvHfTAs8FoNPp1LTWzwHgqIg0lFLvrQHwfX8BER8DwC6jNCIecF13wwoA3/dvIuKNpLJa60Oe560XGoCZd4rICiKeTCtaeABmPg4AJmRqg6xcaABmvg4At4aFRyEBhoVM4UMoCplHADCfJTEL5YEsIVNID5iQAYCHALCYxeq5b6PMfF5EBAAEESthGK7W6/XPRpFWq7W3VCqtZg2ZcT3g+/6i4zjzIlLSWn/yPO/DIGMNLCWY2Sj/+xGRK0qpZfNDEASnROTFVi0fr8+aA8z8Ld6KEfGt67oLYwMAwEUium8EREn7OgeAjwCwPyo/nrque3YSgAtE9GDaAM1mc65arc4Zuf1+P2w0Gt9jJZl5DQAORt+fENG5wgEw8zUAMB/zbBBRwyqAIAjuiMjlSOlNItpjFUCqWl0josMzgChR/9hGAWBbknjmAdPhDdqa0gfZzAMJKyVP4v8hhJYRcSni+0JEu63ahZj5anyQici6UuqIVQDdbrfS6/UqRulyufyTiH5sF8AlIro37VpoWEHIzGZ2tM+sEZFnSqkzk9RCS0R01wjIsZz+mug53hDRia0AnI4bGgDYISItz/M2jYC8Gpp2u30MEWuO4zha665Sqp0ZYFStX/iWchRAItFGzoHSsrJ2ZFl1mHg6bfVYJeGJv85CC++BpIJZ5kSFC6G0ha0e7mYJqcJ7IOkRay84UhD2XjHFIFZf8iW9YcYoYRi+tO6aNeupOs66iU/icV46zf/MAKZpzXFk/QL+JG1PUPhRiQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACSElEQVRoQ+2Zu4sUQRCHf5+C+gf4yBXMfMYHGvjCzEBQDIzV+HwEohipGKupD0QNDE8UEwUFTe68wEDhTMVUMFJ+0tArzbjs9u3Ojt0wBR0M9MzUV1XdXVWNKhcq1189wP/2YKcesH1d0nPgdVvgnQDY3iTpqaT9kuaAt9UA2D4o6aGkzVHpXcByFQC2r0q60lB2D7BUNIDtjZIeSDoyRNGyAWwfiiET4n6YlAtg+7Kka2PCozyAMSHT5CkLIIbMfUlbMhdmOQCZIVOeB2LI3JN0NNPq6bTZe8D2aUmOY72kN8DnoIXt7eF5FSEzkQdsB+OEsFwr6RPwbpixhqYStoPyqVwAbkaAY5KeTWD5wStZHrD9XdJgK34FhBP9H8kFOAvciQBhn3/RAcBHSTvjfx4DJ6cBOAPcbRvA9gZJYQT5DfwYKGl7UdLu+PwIOFUiwCVJYQRZBuZqA7gh6XxUegXYVhtAmq0uAnt7gLhQm9vorBZx74Hcc6D3QLKH/z2JGyVnlYs4pCfzEe4rsLW2XehicpAtAftqAwiZbhhBfgE/ZwVwDrjddi40KiG0HXpHO+KcJ8CJaXKheeBWBOgqnf6W1BwvgcOrATieFDTrJL0HViJAVwXNgVgPrJH0BfiQDTDKtREiNK7KLSnHASQLLacP1PxcVkWWq8PU3emq2yqJJ0b1Qsv2QKpdZp+orBBqmrfq5m5mSJXtgUZI1XnB0YCo94opCal6L/ka3ghtlIXqrllzT9VJ5k19Ek/y0zbf6QHatOYk3/oDujC8QMWgjf4AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-text{font-size:14px;width:30px}.jessibuca-container .jessibuca-speed{font-size:14px;color:#fff}.jessibuca-container .jessibuca-quality-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .jessibuca-quality-menu-list.jessibuca-quality-menu-shown{visibility:visible;opacity:1}.jessibuca-container .icon-title-tips{pointer-events:none;position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jessibuca-container .jessibuca-quality-menu{padding:8px 0}.jessibuca-container .jessibuca-quality-menu-item{display:block;height:25px;margin:0;padding:0 10px;cursor:pointer;font-size:14px;text-align:center;width:50px;color:hsla(0,0%,100%,.5);transition:color .3s,background-color .3s}.jessibuca-container .jessibuca-quality-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-quality-menu-item:focus{outline:none}.jessibuca-container .jessibuca-quality-menu-item.jessibuca-quality-menu-item-active{color:#2298fc}.jessibuca-container .jessibuca-volume-panel-wrap{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%) translateY(22%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;height:120px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-wrap.jessibuca-volume-panel-wrap-show{visibility:visible;opacity:1}.jessibuca-container .jessibuca-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jessibuca-container .jessibuca-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:before{bottom:-54px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-volume-panel-handle:after,.jessibuca-container .jessibuca-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}');class Ue{constructor(e){var t;this.player=e,((e,t)=>{e.$container.classList.add("jessibuca-controls-show");const i=e._opt,n=i.operateBtns;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
`:""}\n
\n ${De.loading}\n ${i.loadingText?`
${i.loadingText}
`:""}\n
\n ${i.hasControl&&n.play?'
':""}\n ${i.hasControl?`\n
\n
\n
\n ${i.showBandwidth?'
':""}\n
\n
\n ${n.audio?`\n
\n ${De.audio}\n ${De.mute}\n
\n
\n
\n
\n
\n
\n
\n `:""}\n ${n.play?`
${De.play}
${De.pause}
`:""}\n ${n.screenshot?`
${De.screenshot}
`:""}\n ${n.record?`
${De.record}
${De.recordStop}
`:""}\n ${n.fullscreen?`
${De.fullscreen}
${De.fullscreenExit}
`:""}\n
\n
\n
\n `:""}\n\n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jessibuca-poster")}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jessibuca-loading")}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jessibuca-play")}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jessibuca-play-big")}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jessibuca-pause")}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jessibuca-controls")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jessibuca-volume")}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jessibuca-volume-panel-wrap")}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jessibuca-volume-panel-text")}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jessibuca-volume-panel")}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jessibuca-volume-panel-handle")}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jessibuca-icon-audio")}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jessibuca-icon-mute")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jessibuca-fullscreen-exit")}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jessibuca-record")}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jessibuca-record-stop")}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jessibuca-screenshot")}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jessibuca-speed")})})(e,this),Oe(e,this),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),((e,t)=>{const{events:{proxy:i}}=e;function n(e){const{bottom:i,height:n}=t.$volumePanel.getBoundingClientRect(),{height:o}=t.$volumeHandle.getBoundingClientRect();return oe(i-e.y-o/2,0,n-o/2)/(n-o)}i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(window,"orientationchange",(()=>{setTimeout((()=>{e.resize()}),300)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),i(t.$pause,"click",(t=>{e.pause()})),i(t.$play,"click",(t=>{e.play()})),i(t.$playBig,"click",(t=>{e.play()})),i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jessibuca-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jessibuca-volume-panel-wrap-show")})),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),re(t.$volumeOn,"display","none"),re(t.$volumeOff,"display","block"),e.lastVolume=e.volume,e.volume=0})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),re(t.$volumeOn,"display","block"),re(t.$volumeOff,"display","none"),e.volume=e.lastVolume||.5})),i(t.$screenshot,"click",(t=>{t.stopPropagation(),e.video.screenshot()})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=n(t)})),i(t.$volumeHandle,"mousedown",(()=>{t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=n(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)})),i(t.$record,"click",(t=>{t.stopPropagation(),e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$fullscreen,"click",(t=>{t.stopPropagation(),e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),e.fullscreen=!1}))})(e,this),this.player.debug.log("Control","init")}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,n=t/i,o=e.audio.$videoElement.width/e.audio.$videoElement.height;if(n>o){const n=(t-i*o)/2;e.$container.style.padding=`0 ${n}px`}else{const n=(i-t/o)/2;e.$container.style.padding=`${n}px 0`}}destroy(){this.player.debug.log("control","destroy"),this.$poster&&this.player.$container.removeChild(this.$poster),this.player.$container.removeChild(this.$loading),this.$controls&&this.player.$container.removeChild(this.$controls),this.player=null}}je(".jessibuca-container{position:relative;width:100%;height:100%;overflow:hidden}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100%!important;height:100%!important;background:#000}");class Fe{static init(){Fe.types={avc1:[],avcC:[],hvc1:[],hvcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]};for(let e in Fe.types)Fe.types.hasOwnProperty(e)&&(Fe.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Fe.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,n=Array.prototype.slice.call(arguments,1),o=n.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let r=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return Fe.box(Fe.types.trak,Fe.tkhd(e),Fe.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,n=e.presentWidth,o=e.presentHeight;return Fe.box(Fe.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,n>>>8&255,255&n,0,0,o>>>8&255,255&o,0,0]))}static mdia(e){return Fe.box(Fe.types.mdia,Fe.mdhd(e),Fe.hdlr(e),Fe.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return Fe.box(Fe.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?Fe.constants.HDLR_AUDIO:Fe.constants.HDLR_VIDEO,Fe.box(Fe.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Fe.box(Fe.types.smhd,Fe.constants.SMHD):Fe.box(Fe.types.vmhd,Fe.constants.VMHD),Fe.box(Fe.types.minf,t,Fe.dinf(),Fe.stbl(e))}static dinf(){return Fe.box(Fe.types.dinf,Fe.box(Fe.types.dref,Fe.constants.DREF))}static stbl(e){return Fe.box(Fe.types.stbl,Fe.stsd(e),Fe.box(Fe.types.stts,Fe.constants.STTS),Fe.box(Fe.types.stsc,Fe.constants.STSC),Fe.box(Fe.types.stsz,Fe.constants.STSZ),Fe.box(Fe.types.stco,Fe.constants.STCO))}static stsdOld(e){return"audio"===e.type?Fe.box(Fe.types.stsd,Fe.constants.STSD_PREFIX,Fe.mp4a(e)):"avc"===e.videoType?Fe.box(Fe.types.stsd,Fe.constants.STSD_PREFIX,Fe.avc1(e)):Fe.box(Fe.types.stsd,Fe.constants.STSD_PREFIX,Fe.hvc1(e))}static stsd(e){return"audio"===e.type?Fe.box(Fe.types.stsd,Fe.constants.STSD_PREFIX,Fe.mp4a(e)):"avc"===e.videoType?Fe.box(Fe.types.stsd,Fe.constants.STSD_PREFIX,Fe.avc1(e)):Fe.box(Fe.types.stsd,Fe.constants.STSD_PREFIX,Fe.hvc1(e))}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return Fe.box(Fe.types.mp4a,n,Fe.esds(e))}static esds(e){let t=e.config||[],i=t.length,n=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return Fe.box(Fe.types.esds,n)}static avc1(e){let t=e.avcc;const i=e.codecWidth,n=e.codecHeight;let o=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,n>>>8&255,255&n,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Fe.box(Fe.types.avc1,o,Fe.box(Fe.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,n=e.codecHeight;let o=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,n>>>8&255,255&n,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Fe.box(Fe.types.hvc1,o,Fe.box(Fe.types.hvcC,t))}static mvex(e){return Fe.box(Fe.types.mvex,Fe.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return Fe.box(Fe.types.trex,i)}static moof(e,t){return Fe.box(Fe.types.moof,Fe.mfhd(e.sequenceNumber),Fe.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return Fe.box(Fe.types.mfhd,t)}static traf(e,t){let i=e.id,n=Fe.box(Fe.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),o=Fe.box(Fe.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),r=Fe.sdtp(e),s=Fe.trun(e,r.byteLength+16+16+8+16+8+8);return Fe.box(Fe.types.traf,n,o,s,r)}static sdtpOld(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,Fe.box(Fe.types.sdtp,t)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,Fe.box(Fe.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let n=e.duration,o=e.size,r=e.flags,s=e.cts;return i.set([n>>>24&255,n>>>16&255,n>>>8&255,255&n,o>>>24&255,o>>>16&255,o>>>8&255,255&o,r.isLeading<<2|r.dependsOn,r.isDependedOn<<6|r.hasRedundancy<<4|r.isNonSync,0,0,s>>>24&255,s>>>16&255,s>>>8&255,255&s],12),Fe.box(Fe.types.trun,i)}static mdat(e){return Fe.box(Fe.types.mdat,e)}}Fe.init();class Pe{constructor(e){this.TAG="ExpGolomb",this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index,t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let n=Math.min(i,this._current_word_bits_left),o=this._current_word>>>32-n;return this._current_word<<=n,this._current_word_bits_left-=n,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class Me{static _ebsp2rbsp(e){let t=e,i=t.byteLength,n=new Uint8Array(i),o=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(n[o]=t[e],o++);return new Uint8Array(n.buffer,0,o)}static parseSPS(e){let t=Me._ebsp2rbsp(e),i=new Pe(t);i.readByte();let n=i.readByte();i.readByte();let o=i.readByte();i.readUEG();let r=Me.getProfileString(n),s=Me.getLevelString(o),a=1,A=420,c=[0,420,422,444],d=8;if((100===n||110===n||122===n||244===n||44===n||83===n||86===n||118===n||128===n||138===n||144===n)&&(a=i.readUEG(),3===a&&i.readBits(1),a<=3&&(A=c[a]),d=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==a?8:12;for(let t=0;t0&&e<16?(v=t[e-1],w=n[e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),w=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);S=i.readBool(),R=t,C=2*e,E=R/C}}let B=1;1===v&&1===w||(B=v/w);let k=0,I=0;if(0===a)k=1,I=2-p;else{k=3===a?1:2,I=(1===a?2:1)*(2-p)}let T=16*(h+1),x=16*(f+1)*(2-p);T-=(g+m)*k,x-=(b+y)*I;let L=Math.ceil(T*B);return i.destroy(),i=null,{profile_string:r,level_string:s,bit_depth:d,ref_frames:u,chroma_format:A,chroma_format_string:Me.getChromaFormatString(A),frame_rate:{fixed:S,fps:E,fps_den:C,fps_num:R},sar_ratio:{width:v,height:w},codec_size:{width:T,height:x},present_size:{width:L,height:x}}}static _skipScalingList(e,t){let i=8,n=8,o=0;for(let r=0;r{this.mediaSourceOpen=!0,this.player.emit(v.mseSourceOpen)})),i(this.mediaSource,"sourceclose",(()=>{this.player.emit(v.mseSourceClose)})),e.debug.log("MediaSource","init")}get state(){return this.mediaSource.readyState}get isStateOpen(){return this.state===z}get isStateClosed(){return this.state===X}get isStateEnded(){return this.state===q}get duration(){return this.mediaSource.duration}set duration(e){this.mediaSource.duration=e}decodeVideo(e,t,i){const n=this.player;if(this.hasInit)this._decodeVideo(e,t,i);else if(i&&0===e[1]){const o=15&e[0];if(n.video.updateVideoInfo({encTypeCode:o}),o===x)return void this.emit(E.mediaSourceH265NotSupport);this._decodeConfigurationRecord(e,t,i,o),this.hasInit=!0}}_doDecode(){const e=this.bufferList.shift();e&&this._decodeVideo(e.payload,e.ts,e.isIframe)}_decodeConfigurationRecord(e,t,i,n){let o=e.slice(5),r={};n===T?r=function(e){const t={},i=new DataView(e.buffer);let n=i.getUint8(0),o=i.getUint8(1);if(i.getUint8(2),i.getUint8(3),1!==n||0===o)return;const r=1+(3&i.getUint8(4));if(3!==r&&4!==r)return;let s=31&i.getUint8(5);if(0===s)return;let a=6;for(let n=0;n1&&(this.removeBuffer(a.buffered.start(0),a.buffered.end(0)),this.timeInit=!1),a.drop&&s-this.cacheTrack.dts>1e3)a.drop=!1,this.cacheTrack={};else if(this.cacheTrack&&s>this.cacheTrack.dts){let e=8+this.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(Fe.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=s-this.cacheTrack.dts;let o=Fe.moof(this.cacheTrack,this.cacheTrack.dts),r=new Uint8Array(o.byteLength+i.byteLength);r.set(o,0),r.set(i,o.byteLength),this.appendBuffer(r.buffer),n.handleRender(),n.updateStats({fps:!0,ts:t,buf:n.demux.delay})}else n.debug.log("MediaSource","timeInit set false , cacheTrack = {}"),this.timeInit=!1,this.cacheTrack={};this.cacheTrack.id=1,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=r,this.cacheTrack.dts=s,this.cacheTrack.cts=0,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=o,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},this.timeInit||1!==a.buffered.length||(n.debug.log("MediaSource","timeInit set true"),this.timeInit=!0,a.currentTime=a.buffered.end(0)),!this.isInitInfo&&a.videoWidth>0&&a.videoHeight>0&&(n.debug.log("MediaSource",`updateVideoInfo: ${a.videoWidth},${a.videoHeight}`),n.video.updateVideoInfo({width:a.videoWidth,height:a.videoHeight}),n.video.initCanvasViewSize(),this.isInitInfo=!0)}appendBuffer(e){const{debug:t,events:{proxy:i}}=this.player;null===this.sourceBuffer&&(this.sourceBuffer=this.mediaSource.addSourceBuffer(J),i(this.sourceBuffer,"error",(e=>{this.player.emit(v.mseSourceBufferError,e)}))),!1===this.sourceBuffer.updating&&this.isStateOpen?this.sourceBuffer.appendBuffer(e):this.isStateClosed?this.player.emit(v.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed"):this.isStateEnded?this.player.emit(v.mseSourceBufferError,"mediaSource is closed"):!0===this.sourceBuffer.updating&&(this.player.emit(v.mseSourceBufferBusy),this.dropSourceBuffer(!0))}stop(){this.isStateOpen&&this.sourceBuffer&&this.sourceBuffer.abort(),this.endOfStream()}dropSourceBuffer(e){const t=this.player.video.$videoElement;this.dropping=e,t.buffered.length>0&&t.buffered.end(0)-t.currentTime>1&&(t.currentTime=t.buffered.end(0))}removeBuffer(e,t){if(this.isStateOpen&&!1===this.sourceBuffer.updating)try{this.sourceBuffer.remove(e,t)}catch(e){console.error(e)}}endOfStream(){this.isStateOpen&&this.mediaSource.endOfStream()}destroy(){this.stop(),this.bufferList=[],this.mediaSource=null,this.mediaSourceOpen=!1,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1,this.off(),this.player.debug.log("MediaSource","destroy")}}const Qe=()=>"undefined"!=typeof navigator&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,Ne=()=>"wakeLock"in navigator;class We{constructor(e){if(this.player=e,this.enabled=!1,Ne()){this._wakeLock=null;const e=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else Qe()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm","data:video/webm;base64,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"),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,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"),this.noSleepVideo.addEventListener("loadedmetadata",(()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",(()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())}))})))}_addSourceToVideo(e,t,i){var n=document.createElement("source");n.src=i,n.type=`video/${t}`,e.appendChild(n)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(Ne())return navigator.wakeLock.request("screen").then((t=>{this._wakeLock=t,this.enabled=!0,e.log("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{e.log("wakeLock","Wake Lock released.")}))})).catch((t=>{throw this.enabled=!1,e.error("wakeLock",`${t.name}, ${t.message}`),t}));if(Qe())return this.disable(),this.noSleepTimer=window.setInterval((()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))}),15e3),this.enabled=!0,Promise.resolve();return this.noSleepVideo.play().then((e=>(this.enabled=!0,e))).catch((e=>{throw this.enabled=!1,e}))}disable(){const e=this.player.debug;Ne()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):Qe()?this.noSleepTimer&&(e.warn("wakeLock","NoSleep now disabled for older iOS devices."),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}}class Ge extends ue{constructor(e,t){var i;super(),this.$container=e,this._opt=Object.assign({},o,t),this.debug=new Y(this),this._opt.useWCS&&(this._opt.useWCS="VideoEncoder"in window),this._opt.useMSE&&(this._opt.useMSE=window.MediaSource&&window.MediaSource.isTypeSupported(J)),this._opt.useMSE?(this._opt.useWCS&&this.debug.log("Player","useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.log("Player","forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0):this._opt.useWCS,this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0},this._videoTimestamp=0,this._audioTimestamp=0,i=this,Object.defineProperty(i,"rect",{get:()=>i.$container.getBoundingClientRect()}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(i,e,{get:()=>i.rect[e]})})),this.events=new Z(this),this.video=new ge(this),this.audio=new be(this),this.recorder=new Re(this),this.decoderWorker=new Ce(this),this.stream=null,this.demux=null,this._opt.useWCS&&(this.webcodecsDecoder=new xe(this)),this._opt.useMSE&&(this.mseDecoder=new Ve(this)),this.control=new Ue(this),this.keepScreenOn=new We(this),(e=>{try{const t=()=>{e.emit(w.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize()};$.on("change",t),e.events.destroys.push((()=>{$.off("change",t)}))}catch(e){}if(e.on(v.decoderWorkerInit,(()=>{e.debug.log("player","has loaded"),e._hasLoaded=!0})),e.on(v.play,(()=>{e.loading=!1})),e.on(v.fullscreen,(t=>{if(t)try{$.request(e.$container).then((()=>{})).catch((t=>{e.webFullscreen=!0}))}catch(t){e.webFullscreen=!0}else try{$.exit().then((()=>{})).catch((()=>{e.webFullscreen=!1}))}catch(t){e.webFullscreen=!1}})),e.on(v.webFullscreen,(t=>{if(t){e.$container.classList.add("webmediaplayer-fullscreen-web");const{clientHeight:t,clientWidth:i}=document.body,{clientHeight:n,clientWidth:o}=e.video.$videoElement;if(i/t{e.video.resize()})),e._opt.debug){const t=[v.timeUpdate];Object.keys(v).forEach((i=>{e.on(v[i],(n=>{t.includes(i)||e.debug.log("player events",v[i],n)}))})),Object.keys(E).forEach((t=>{e.on(E[t],(i=>{e.debug.log("player event error",E[t],i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:n}}=e;t.supportDblclickFullscreen&&n(e.$container,"dblclick",(()=>{e.fullscreen=!e.fullscreen})),n(document,"visibilitychange",(()=>{t.hiddenAutoPause&&(i.log("visibilitychange",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),n(window,"fullscreenchange",(()=>{null!==e.keepScreenOn&&"visible"===document.visibilityState&&e.enableWakeLock()}))})(this),this._opt.useWCS&&this.debug.log("Player","use WCS"),this._opt.useMSE&&this.debug.log("Player","use MSE"),this._opt.useOffscreen&&this.debug.log("Player","use offscreen"),this.debug.log("Player options",this._opt)}set fullscreen(e){this.emit(v.fullscreen,e)}get fullscreen(){return document.isFullScreen||document.mozIsFullScreen||document.webkitIsFullScreen||this.webFullscreen}set webFullscreen(e){this.emit(v.webFullscreen,e)}get webFullscreen(){return this.$container.classList.contains("jessibuca-fullscreen-web")}get loaded(){return this._hasLoaded}set playing(e){e&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(v.playing,e),this.emit(v.volumechange,this.volume),e?this.emit(v.play):this.emit(v.pause))}get playing(){return this._playing}get volume(){return this.audio.volume}set volume(e){this.audio.setVolume(e)}set loading(e){this.loading!==e&&(this._loading=e,this.emit(v.loading,this._loading))}get loading(){return this._loading}set recording(e){this.playing&&(e?this.recorder.startRecord():this.recorder.stopRecordAndSave())}get recording(){return this.recorder.recording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set videoTimestamp(e){null!==e&&(this._videoTimestamp=e,this._opt.useWCS||this._opt.useMSE||this.audioTimestamp&&this.videoTimestamp&&this.audio.emit(v.videoSyncAudio,{audioTimestamp:this.audioTimestamp,videoTimestamp:this.videoTimestamp,diff:this.audioTimestamp-this.videoTimestamp}))}get videoTimestamp(){return this._videoTimestamp}updateOption(e){this._opt=Object.assign({},this._opt,e)}init(){return new Promise(((e,t)=>{this.stream||(this.stream=new we(this)),this.demux||(this.demux=new Te(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new xe(this))),this._opt.useMSE&&(this.mseDecoder||(this.mseDecoder=new Ve(this))),this.decoderWorker?e():(this.decoderWorker=new Ce(this),this.once(v.decoderWorkerInit,(()=>{e()})))}))}play(e){return new Promise(((t,i)=>{if(!e&&!this._opt.url)return i();this.loading=!0,this.playing=!1,e||(e=this._opt.url),this._opt.url=e,this.clearCheckHeartTimeout(),this.init().then((()=>{this._opt.isNotMute&&this.mute(!1),this.webcodecsDecoder&&this.webcodecsDecoder.once(E.webcodecsH265NotSupport,(()=>{this.emit(E.webcodecsH265NotSupport),this.emit(v.error,E.webcodecsH265NotSupport)})),this.mseDecoder&&this.mseDecoder.once(E.mediaSourceH265NotSupport,(()=>{this.emit(E.mediaSourceH265NotSupport),this.emit(v.error,E.mediaSourceH265NotSupport)})),this.enableWakeLock(),this.stream.fetchStream(e),this.checkLoadingTimeout(),this.stream.once(E.fetchError,(e=>{i(e)})),this.stream.once(E.websocketError,(e=>{i(e)})),this.stream.once(v.streamSuccess,(()=>{t(),this._opt.useMSE&&this.video.play()}))})).catch((e=>{i(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video.clearView(),e()}))}))}_close(){return new Promise(((e,t)=>{this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.playing=!1,this.loading=!1,this.recording=!1,this.audio.pause(),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,setTimeout((()=>{e()}),0)}))}pause(e){return e?this.close():this._close()}mute(e){this.audio.mute(e)}resize(){this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}stopRecordAndSave(){this.recording&&(this.recording=!1)}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&(t=!0)})),(this._opt.showBandwidth||this._opt.text||t)&&(e=!0),e}checkHeart(){this.clearCheckHeartTimeout(),this.checkHeartTimeout()}checkHeartTimeout(){this._checkHeartTimeout=setTimeout((()=>{this.pause(!1).then((()=>{this.emit(v.timeout,v.delayTimeout),this.emit(v.delayTimeout)}))}),1e3*this._opt.heartTimeout)}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.pause(!1).then((()=>{this.emit(v.timeout,v.loadingTimeout),this.emit(v.loadingTimeout)}))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}handleRender(){this.loading&&(this.emit(v.start),this.loading=!1,this.clearCheckLoadingTimeout()),this.playing||(this.playing=!0),this.checkHeart()}updateStats(e){e=e||{},this._startBpsTime||(this._startBpsTime=ne()),le(e.ts)&&(this._stats.ts=e.ts),le(e.buf)&&(this._stats.buf=e.buf),e.fps&&(this._stats.fps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps);const t=ne();t-this._startBpsTime<1e3||(this.emit(v.stats,this._stats),this.emit(v.performance,function(e){let t=0;return e>=24?t=2:e>=15&&(t=1),t}(this._stats.fps)),this._stats.fps=0,this._stats.abps=0,this._stats.vbps=0,this._startBpsTime=t)}resetStats(){this._startBpsTime=null,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn.disable()}destroy(){this._loading=!1,this._playing=!1,this._hasLoaded=!1,this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.video&&(this.video.destroy(),this.video=null),this.audio&&(this.audio.destroy(),this.audio=null),this.stream&&(this.stream.destroy(),this.stream=null),this.recorder&&(this.recorder.destroy(),this.recorder=null),this.control&&(this.control.destroy(),this.control=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.demux&&(this.demux.destroy(),this.demux=null),this.events&&(this.events.destroy(),this.events=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.releaseWakeLock(),this.keepScreenOn=null,this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this.emit("destroy"),this.off(),this.debug.log("play","destroy end")}}var He=_((function(e,t){e.exports=function(){var e,t;function i(t){this.name="__st"+(1e9*Math.random()>>>0)+e+"__",null==t||t.forEach(this.add,this),e+=1}Array.prototype.find||Object.defineProperty(Array.prototype,"find",{configurable:!0,writable:!0,value:function(e){if(null===this)throw new TypeError('"this" is null or not defined');var t=Object(this),i=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var n=arguments[1],o=0;o=t)return n=T(n),r(n.splice(0,n.length)),void(i&&clearTimeout(i));i&&clearTimeout(i),i=setTimeout((function(){i=null,0<(n=T(n)).length&&r(n.splice(0,n.length))}),o.delay)}},G=function(e,t){return Array.isArray(e)?t(e.map((function(e){return o(o({},e),{msg:"string"==typeof e.msg?e.msg:[].concat(e.msg).map(w).join(" ")})}))):t(o(o({},e),{msg:"string"==typeof e.msg?e.msg:w(e.msg)}))},H=function(e){var t,i=!1,n=!1,o=!1,r=[];return e.lifeCycle.on("onConfigChange",(function(){t&&clearTimeout(t),t=setTimeout((function(){var t,s;!o&&e.config&&(o=!0,t=e.config.whiteListUrl,(s=void 0===t?"":t)&&e.sendPipeline([function(t,o){o({url:s,type:g.WHITE_LIST,success:function(t){n=!0;try{var o=t.data||JSON.parse(t),s=o.retcode,a=o.result,A=void 0===a?{}:a;if(0===s){if(i=A.is_in_white_list,e.isWhiteList=i,A.shutdown)return void e.destroy();0<=A.rate&&A.rate<=1&&(e.config.random=A.rate,e.isGetSample=!1)}e.isWhiteList&&r.length?X(e)(r.splice(0),(function(){})):!e.isWhiteList&&r.length&&(r.length=0);var c=e.config.onWhitelist;"function"==typeof c&&c(i)}catch(t){}},fail:function(t){"403 forbidden"===t&&e.destroy(),n=!0}})}],g.WHITE_LIST)(null),o=!1)}),e.config.uin?50:500)})),e.lifeCycle.on("destroy",(function(){r.length=0})),function(t,o){var s;i||null!==(s=null===(s=e.config)||void 0===s?void 0:s.api)&&void 0!==s&&s.reportRequest?o(t.concat(r.splice(0)).map((function(e){return x(e),e}))):(t=t.filter((function(e){return e.level!==p.INFO&&e.level!==p.API_RESPONSE?(x(e),!0):(n||(r.push(e),200<=r.length&&(r.length=200)),!1)}))).length&&o(t)}},J=function(e){return setTimeout((function(){var t=e.config.pvUrl,i=void 0===t?"":t;i&&e.sendPipeline([function(t,n){n({url:i,type:g.PV,fail:function(t){"403 forbidden"===t&&e.destroy()}})}],g.PV)(null)}),100),function(e,t){t(e)}},q=function(e){var t={};return function(i,n){var o,r;e.speedSample?(r="object"==typeof e.repeat?e.repeat:{repeat:e.repeat},o=+r.speed||+r.repeat||5,Array.isArray(i)?(r=i.filter((function(e){var i=!t[e.url]||t[e.url]o))})))}},X=function(e){return function(t){return e.sendPipeline([function(t,i){return i({url:e.config.url||"",data:s(t),method:"post",contentType:"application/x-www-form-urlencoded",type:g.LOG,log:t,requestConfig:{timeout:5e3},success:function(){var n=e.config.onReport;"function"==typeof n&&t.forEach((function(e){n(e)})),"function"==typeof i&&i([])},fail:function(t){"403 forbidden"===t&&e.destroy()}})}],g.LOG)(t)}},Y=function(e){if(!e||!e.reduce||!e.length)throw new TypeError("createPipeline need at least one function param");return 1===e.length?function(t,i){e[0](t,i||O)}:e.reduce((function(e,t){return function(i,n){return void 0===n&&(n=O),e(i,(function(e){return null==t?void 0:t(e,n)}))}}))},Z=(Object.defineProperty(Ae.prototype,"__version__",{get:function(){return console.warn("__version__ has discard, please use version"),"1.24.48"},enumerable:!1,configurable:!0}),Object.defineProperty(Ae.prototype,"LogType",{get:function(){return console.warn("LogType has discard, please use logType"),p},enumerable:!1,configurable:!0}),Ae.prototype.init=function(e){this.setConfig(e);for(var t=0;tc&&o.isInFirstScreen(t.roots[n])&&(c=t.rootsDomNum[n],d=t.time,("object"!=typeof(null===(i=e.config)||void 0===i?void 0:i.pagePerformance)||null!==(i=e.config.pagePerformance)&&void 0!==i&&i.firstScreenInfo)&&(e.firstScreenInfo={element:t.roots[n],timing:d}))})),!d&&Se?A=setTimeout((function(){return a()}),3e3):(s.disconnect(),null==t||t(d)),--Se},A=setTimeout((function(){return a()}),3e3)},isEleInArray:function(e,t){return!(!e||e===document.documentElement)&&(-1!==t.indexOf(e)||this.isEleInArray(e.parentElement,t))},isInFirstScreen:function(e){if(!e||"function"!=typeof e.getBoundingClientRect)return!1;var t=e.getBoundingClientRect(),i=window.innerHeight;return e=window.innerWidth,0<=t.left&&t.left{this.player.on(w[e],(t=>{this.emit(e,t)}))}))}setDebug(e){this.player.updateOption({isDebug:!!e})}mute(){this.player.mute(!0)}cancelMute(){this.player.mute(!1)}setVolume(e){this.player.volume=e}audioResume(){this.player.audio.audioEnabled(!0)}setTimeout(e){e=Number(e),this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e})}setScaleMode(e){let t={isFullResize:!1,isResize:!1};switch(e=Number(e)){case U:t.isFullResize=!1,t.isResize=!1;break;case F:t.isFullResize=!1,t.isResize=!0;break;case P:t.isFullResize=!0,t.isResize=!0}this.player.updateOption(t),this.resize()}pause(){return this.player.pause()}close(){return this._opt.url="",this.player.close()}clearView(){this.player.video.clearView()}play(e){return new Promise(((t,i)=>{if(!e&&!this._opt.url)return this.emit(v.error,E.playError),void i();if(e){if(!this._opt.url)return this._play(e);e===this._opt.url?this.player.playing?t():(this.clearView(),this.player.play(this._opt.url).then((()=>{t()})).catch((()=>{this.player.pause().then((()=>{i()}))}))):this.player.pause().then((()=>(this.clearView(),this._play(e)))).catch((()=>{i()}))}else this.player.play(this._opt.url).then((()=>{t()})).catch((()=>{this.player.pause().then((()=>{i()}))}))}))}_play(o){return new Promise(((r,s)=>{this._opt.url=o;const a=0===o.indexOf("http"),A=a?t:e,c=a||-1!==o.indexOf(".flv")||this._opt.isFlv?i:n;this.player.updateOption({protocol:A,demuxType:c}),this.player.once(E.mediaSourceH265NotSupport,(()=>{this.close()})),this.player.once(E.webcodecsH265NotSupport,(()=>{this.close()})),this.hasLoaded()?this.player.play(o).then((()=>{r()})).catch((()=>{this.player.pause().then((()=>{s()}))})):this.player.once(v.decoderWorkerInit,(()=>{this.player.play(o).then((()=>{r()})).catch((()=>{this.player.pause().then((()=>{s()}))}))}))}))}resize(){this.player.resize()}setBufferTime(e){e=Number(e),this.player.updateOption({videoBuffer:1e3*e})}setRotate(e){e=parseInt(e,10);this._opt.rotate!==e&&-1!==[0,90,270].indexOf(e)&&(this.player.updateOption({rotate:e}),this.resize())}hasLoaded(){return this.player.loaded}setKeepScreenOn(){this.player.updateOption({keepScreenOn:!0})}setFullscreen(e){const t=!!e;this.player.fullscreen!==t&&(this.player.fullscreen=t)}screenshot(e,t,i,n){return this.player.video.screenshot(e,t,i,n)}startRecord(e,t){return new Promise(((i,n)=>{this.player.playing?(this.player.startRecord(e,t),i()):n()}))}stopRecordAndSave(){this.player.recording&&this.player.stopRecordAndSave()}isPlaying(){return this.player.playing}isMute(){return this.player.audio.isMute}isRecording(){return this.player.recorder.recording}destroy(){this.player.destroy(),this.player=null,this.off()}}return window.Jessibuca=Je,Je})); diff --git a/web - 副本/client/assets/js/less/less.min.js b/web - 副本/client/assets/js/less/less.min.js new file mode 100644 index 0000000..dc1636d --- /dev/null +++ b/web - 副本/client/assets/js/less/less.min.js @@ -0,0 +1,17 @@ +/*! + * Less - Leaner CSS v2.7.2 + * http://lesscss.org + * + * Copyright (c) 2009-2017, Alexis Sellier + * Licensed under the Apache-2.0 License. + * + */ + + /** * @license Apache-2.0 + */ + + !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.less=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g0||b.isFileProtocol?"development":"production");var c=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(a.location.hash);c&&(b.dumpLineNumbers=c[1]),void 0===b.useFileCache&&(b.useFileCache=!0),void 0===b.onReady&&(b.onReady=!0)}},{"./browser":3,"./utils":10}],2:[function(a,b,c){function d(a){a.filename&&console.warn(a),e.async||h.removeChild(i)}a("promise/polyfill.js");var e=window.less||{};a("./add-default-options")(window,e);var f=b.exports=a("./index")(window,e);window.less=f;var g,h,i;e.onReady&&(/!watch/.test(window.location.hash)&&f.watch(),e.async||(g="body { display: none !important }",h=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style"),i.type="text/css",i.styleSheet?i.styleSheet.cssText=g:i.appendChild(document.createTextNode(g)),h.appendChild(i)),f.registerStylesheetsImmediately(),f.pageLoadFinished=f.refresh("development"===f.env).then(d,d))},{"./add-default-options":1,"./index":8,"promise/polyfill.js":97}],3:[function(a,b,c){var d=a("./utils");b.exports={createCSS:function(a,b,c){var e=c.href||"",f="less:"+(c.title||d.extractId(e)),g=a.getElementById(f),h=!1,i=a.createElement("style");i.setAttribute("type","text/css"),c.media&&i.setAttribute("media",c.media),i.id=f,i.styleSheet||(i.appendChild(a.createTextNode(b)),h=null!==g&&g.childNodes.length>0&&i.childNodes.length>0&&g.firstChild.nodeValue===i.firstChild.nodeValue);var j=a.getElementsByTagName("head")[0];if(null===g||h===!1){var k=c&&c.nextSibling||null;k?k.parentNode.insertBefore(i,k):j.appendChild(i)}if(g&&h===!1&&g.parentNode.removeChild(g),i.styleSheet)try{i.styleSheet.cssText=b}catch(l){throw new Error("Couldn't reassign styleSheet.cssText.")}},currentScript:function(a){var b=a.document;return b.currentScript||function(){var a=b.getElementsByTagName("script");return a[a.length-1]}()}}},{"./utils":10}],4:[function(a,b,c){b.exports=function(a,b,c){var d=null;if("development"!==b.env)try{d="undefined"==typeof a.localStorage?null:a.localStorage}catch(e){}return{setCSS:function(a,b,e,f){if(d){c.info("saving "+a+" to cache.");try{d.setItem(a,f),d.setItem(a+":timestamp",b),e&&d.setItem(a+":vars",JSON.stringify(e))}catch(g){c.error('failed to save "'+a+'" to local storage for caching.')}}},getCSS:function(a,b,c){var e=d&&d.getItem(a),f=d&&d.getItem(a+":timestamp"),g=d&&d.getItem(a+":vars");if(c=c||{},f&&b.lastModified&&new Date(b.lastModified).valueOf()===new Date(f).valueOf()&&(!c&&!g||JSON.stringify(c)===g))return e}}}},{}],5:[function(a,b,c){var d=a("./utils"),e=a("./browser");b.exports=function(a,b,c){function f(b,f){var g,h,i="less-error-message:"+d.extractId(f||""),j='
  • {content}
  • ',k=a.document.createElement("div"),l=[],m=b.filename||f,n=m.match(/([^\/]+(\?.*)?)$/)[1];k.id=i,k.className="less-error-message",h="

    "+(b.type||"Syntax")+"Error: "+(b.message||"There is an error in your .less file")+'

    in '+n+" ";var o=function(a,b,c){void 0!==a.extract[b]&&l.push(j.replace(/\{line\}/,(parseInt(a.line,10)||0)+(b-1)).replace(/\{class\}/,c).replace(/\{content\}/,a.extract[b]))};b.extract&&(o(b,0,""),o(b,1,"line"),o(b,2,""),h+="on line "+b.line+", column "+(b.column+1)+":

      "+l.join("")+"
    "),b.stack&&(b.extract||c.logLevel>=4)&&(h+="
    Stack Trace
    "+b.stack.split("\n").slice(1).join("
    ")),k.innerHTML=h,e.createCSS(a.document,[".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),k.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),"development"===c.env&&(g=setInterval(function(){var b=a.document,c=b.body;c&&(b.getElementById(i)?c.replaceChild(k,b.getElementById(i)):c.insertBefore(k,c.firstChild),clearInterval(g))},10))}function g(b){var c=a.document.getElementById("less-error-message:"+d.extractId(b));c&&c.parentNode.removeChild(c)}function h(a){}function i(a){c.errorReporting&&"html"!==c.errorReporting?"console"===c.errorReporting?h(a):"function"==typeof c.errorReporting&&c.errorReporting("remove",a):g(a)}function j(a,d){var e="{line} {content}",f=a.filename||d,g=[],h=(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+" in "+f+" ",i=function(a,b,c){void 0!==a.extract[b]&&g.push(e.replace(/\{line\}/,(parseInt(a.line,10)||0)+(b-1)).replace(/\{class\}/,c).replace(/\{content\}/,a.extract[b]))};a.extract&&(i(a,0,""),i(a,1,"line"),i(a,2,""),h+="on line "+a.line+", column "+(a.column+1)+":\n"+g.join("\n")),a.stack&&(a.extract||c.logLevel>=4)&&(h+="\nStack Trace\n"+a.stack),b.logger.error(h)}function k(a,b){c.errorReporting&&"html"!==c.errorReporting?"console"===c.errorReporting?j(a,b):"function"==typeof c.errorReporting&&c.errorReporting("add",a,b):f(a,b)}return{add:k,remove:i}}},{"./browser":3,"./utils":10}],6:[function(a,b,c){b.exports=function(b,c){function d(){if(window.XMLHttpRequest&&!("file:"===window.location.protocol&&"ActiveXObject"in window))return new XMLHttpRequest;try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(a){return c.error("browser doesn't support AJAX."),null}}var e=a("../less/environment/abstract-file-manager.js"),f={},g=function(){};return g.prototype=new e,g.prototype.alwaysMakePathsAbsolute=function(){return!0},g.prototype.join=function(a,b){return a?this.extractUrlParts(b,a).path:b},g.prototype.doXHR=function(a,e,f,g){function h(b,c,d){b.status>=200&&b.status<300?c(b.responseText,b.getResponseHeader("Last-Modified")):"function"==typeof d&&d(b.status,a)}var i=d(),j=!b.isFileProtocol||b.fileAsync;"function"==typeof i.overrideMimeType&&i.overrideMimeType("text/css"),c.debug("XHR: Getting '"+a+"'"),i.open("GET",a,j),i.setRequestHeader("Accept",e||"text/x-less, text/css; q=0.9, */*; q=0.5"),i.send(null),b.isFileProtocol&&!b.fileAsync?0===i.status||i.status>=200&&i.status<300?f(i.responseText):g(i.status,a):j?i.onreadystatechange=function(){4==i.readyState&&h(i,f,g)}:h(i,f,g)},g.prototype.supports=function(a,b,c,d){return!0},g.prototype.clearFileCache=function(){f={}},g.prototype.loadFile=function(a,b,c,d,e){b&&!this.isPathAbsolute(a)&&(a=b+a),c=c||{};var g=this.extractUrlParts(a,window.location.href),h=g.url;if(c.useFileCache&&f[h])try{var i=f[h];e(null,{contents:i,filename:h,webInfo:{lastModified:new Date}})}catch(j){e({filename:h,message:"Error loading file "+h+" error was "+j.message})}else this.doXHR(h,c.mime,function(a,b){f[h]=a,e(null,{contents:a,filename:h,webInfo:{lastModified:b}})},function(a,b){e({type:"File",message:"'"+b+"' wasn't found ("+a+")",href:h})})},g}},{"../less/environment/abstract-file-manager.js":15}],7:[function(a,b,c){b.exports=function(){function b(){throw{type:"Runtime",message:"Image size functions are not supported in browser version of less"}}var c=a("./../less/functions/function-registry"),d={"image-size":function(a){return b(this,a),-1},"image-width":function(a){return b(this,a),-1},"image-height":function(a){return b(this,a),-1}};c.addMultiple(d)}},{"./../less/functions/function-registry":22}],8:[function(a,b,c){var d=a("./utils").addDataAttr,e=a("./browser");b.exports=function(b,c){function f(a){return c.postProcessor&&"function"==typeof c.postProcessor&&(a=c.postProcessor.call(a,a)||a),a}function g(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function h(a,b){var c=Array.prototype.slice.call(arguments,2);return function(){var d=c.concat(Array.prototype.slice.call(arguments,0));return a.apply(b,d)}}function i(a){for(var b,d=m.getElementsByTagName("style"),e=0;e=c&&console.log(a)},info:function(a){b.logLevel>=d&&console.log(a)},warn:function(a){b.logLevel>=e&&console.warn(a)},error:function(a){b.logLevel>=f&&console.error(a)}}]);for(var g=0;g0&&(a=a.slice(0,b)),b=a.lastIndexOf("/"),b<0&&(b=a.lastIndexOf("\\")),b<0?"":a.slice(0,b+1)},d.prototype.tryAppendExtension=function(a,b){return/(\.[a-z]*$)|([\?;].*)$/.test(a)?a:a+b},d.prototype.tryAppendLessExtension=function(a){return this.tryAppendExtension(a,".less")},d.prototype.supportsSync=function(){return!1},d.prototype.alwaysMakePathsAbsolute=function(){return!1},d.prototype.isPathAbsolute=function(a){return/^(?:[a-z-]+:|\/|\\|#)/i.test(a)},d.prototype.join=function(a,b){return a?a+b:b},d.prototype.pathDiff=function(a,b){var c,d,e,f,g=this.extractUrlParts(a),h=this.extractUrlParts(b),i="";if(g.hostPart!==h.hostPart)return"";for(d=Math.max(h.directories.length,g.directories.length),c=0;c0&&(h.splice(c-1,2),c-=2)}return g.hostPart=f[1],g.directories=h,g.path=(f[1]||"")+h.join("/"),g.fileUrl=g.path+(f[4]||""),g.url=g.fileUrl+(f[5]||""),g},b.exports=d},{}],16:[function(a,b,c){var d=a("../logger"),e=function(a,b){this.fileManagers=b||[],a=a||{};for(var c=["encodeBase64","mimeLookup","charsetLookup","getSourceMapGenerator"],d=[],e=d.concat(c),f=0;f=0;h--){var i=g[h];if(i[f?"supportsSync":"supports"](a,b,c,e))return i}return null},e.prototype.addFileManager=function(a){this.fileManagers.push(a)},e.prototype.clearFileManagers=function(){this.fileManagers=[]},b.exports=e},{"../logger":33}],17:[function(a,b,c){function d(a,b,c){var d,f,g,h,i=b.alpha,j=c.alpha,k=[];g=j+i*(1-j);for(var l=0;l<3;l++)d=b.rgb[l]/255,f=c.rgb[l]/255,h=a(d,f),g&&(h=(j*f+i*(d-j*(d+f-h)))/g),k[l]=255*h;return new e(k,g)}var e=a("../tree/color"),f=a("./function-registry"),g={multiply:function(a,b){return a*b},screen:function(a,b){return a+b-a*b},overlay:function(a,b){return a*=2,a<=1?g.multiply(a,b):g.screen(a-1,b)},softlight:function(a,b){var c=1,d=a;return b>.5&&(d=1,c=a>.25?Math.sqrt(a):((16*a-12)*a+4)*a),a-(1-2*b)*d*(c-a)},hardlight:function(a,b){return g.overlay(b,a)},difference:function(a,b){return Math.abs(a-b)},exclusion:function(a,b){return a+b-2*a*b},average:function(a,b){return(a+b)/2},negation:function(a,b){return 1-Math.abs(a+b-1)}};for(var h in g)g.hasOwnProperty(h)&&(d[h]=d.bind(null,g[h]));f.addMultiple(d)},{"../tree/color":50,"./function-registry":22}],18:[function(a,b,c){function d(a){return Math.min(1,Math.max(0,a))}function e(a){return h.hsla(a.h,a.s,a.l,a.a)}function f(a){if(a instanceof i)return parseFloat(a.unit.is("%")?a.value/100:a.value);if("number"==typeof a)return a;throw{type:"Argument",message:"color functions take numbers as parameters"}}function g(a,b){return a instanceof i&&a.unit.is("%")?parseFloat(a.value*b/100):f(a)}var h,i=a("../tree/dimension"),j=a("../tree/color"),k=a("../tree/quoted"),l=a("../tree/anonymous"),m=a("./function-registry");h={rgb:function(a,b,c){return h.rgba(a,b,c,1)},rgba:function(a,b,c,d){var e=[a,b,c].map(function(a){return g(a,255)});return d=f(d),new j(e,d)},hsl:function(a,b,c){return h.hsla(a,b,c,1)},hsla:function(a,b,c,e){function g(a){return a=a<0?a+1:a>1?a-1:a,6*a<1?i+(j-i)*a*6:2*a<1?j:3*a<2?i+(j-i)*(2/3-a)*6:i}var i,j;return a=f(a)%360/360,b=d(f(b)),c=d(f(c)),e=d(f(e)),j=c<=.5?c*(b+1):c+b-c*b,i=2*c-j,h.rgba(255*g(a+1/3),255*g(a),255*g(a-1/3),e)},hsv:function(a,b,c){return h.hsva(a,b,c,1)},hsva:function(a,b,c,d){a=f(a)%360/360*360,b=f(b),c=f(c),d=f(d);var e,g;e=Math.floor(a/60%6),g=a/60-e;var i=[c,c*(1-b),c*(1-g*b),c*(1-(1-g)*b)],j=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return h.rgba(255*i[j[e][0]],255*i[j[e][1]],255*i[j[e][2]],d)},hue:function(a){return new i(a.toHSL().h)},saturation:function(a){return new i(100*a.toHSL().s,"%")},lightness:function(a){return new i(100*a.toHSL().l,"%")},hsvhue:function(a){return new i(a.toHSV().h)},hsvsaturation:function(a){return new i(100*a.toHSV().s,"%")},hsvvalue:function(a){return new i(100*a.toHSV().v,"%")},red:function(a){return new i(a.rgb[0])},green:function(a){return new i(a.rgb[1])},blue:function(a){return new i(a.rgb[2])},alpha:function(a){return new i(a.toHSL().a)},luma:function(a){return new i(a.luma()*a.alpha*100,"%")},luminance:function(a){var b=.2126*a.rgb[0]/255+.7152*a.rgb[1]/255+.0722*a.rgb[2]/255;return new i(b*a.alpha*100,"%")},saturate:function(a,b,c){if(!a.rgb)return null;var f=a.toHSL();return f.s+="undefined"!=typeof c&&"relative"===c.value?f.s*b.value/100:b.value/100,f.s=d(f.s),e(f)},desaturate:function(a,b,c){var f=a.toHSL();return f.s-="undefined"!=typeof c&&"relative"===c.value?f.s*b.value/100:b.value/100,f.s=d(f.s),e(f)},lighten:function(a,b,c){var f=a.toHSL();return f.l+="undefined"!=typeof c&&"relative"===c.value?f.l*b.value/100:b.value/100,f.l=d(f.l),e(f)},darken:function(a,b,c){var f=a.toHSL();return f.l-="undefined"!=typeof c&&"relative"===c.value?f.l*b.value/100:b.value/100,f.l=d(f.l),e(f)},fadein:function(a,b,c){var f=a.toHSL();return f.a+="undefined"!=typeof c&&"relative"===c.value?f.a*b.value/100:b.value/100,f.a=d(f.a),e(f)},fadeout:function(a,b,c){var f=a.toHSL();return f.a-="undefined"!=typeof c&&"relative"===c.value?f.a*b.value/100:b.value/100,f.a=d(f.a),e(f)},fade:function(a,b){var c=a.toHSL();return c.a=b.value/100,c.a=d(c.a),e(c)},spin:function(a,b){var c=a.toHSL(),d=(c.h+b.value)%360;return c.h=d<0?360+d:d,e(c)},mix:function(a,b,c){a.toHSL&&b.toHSL||(console.log(b.type),console.dir(b)),c||(c=new i(50));var d=c.value/100,e=2*d-1,f=a.toHSL().a-b.toHSL().a,g=((e*f==-1?e:(e+f)/(1+e*f))+1)/2,h=1-g,k=[a.rgb[0]*g+b.rgb[0]*h,a.rgb[1]*g+b.rgb[1]*h,a.rgb[2]*g+b.rgb[2]*h],l=a.alpha*d+b.alpha*(1-d);return new j(k,l)},greyscale:function(a){return h.desaturate(a,new i(100))},contrast:function(a,b,c,d){if(!a.rgb)return null;if("undefined"==typeof c&&(c=h.rgba(255,255,255,1)),"undefined"==typeof b&&(b=h.rgba(0,0,0,1)),b.luma()>c.luma()){var e=c;c=b,b=e}return d="undefined"==typeof d?.43:f(d),a.luma()=t&&this.context.ieCompat!==!1?(g.warn("Skipped data-uri embedding of "+i+" because its size ("+s.length+" characters) exceeds IE8-safe "+t+" characters!"),f(this,e||a)):new d(new c('"'+s+'"',s,(!1),this.index,this.currentFileInfo),this.index,this.currentFileInfo)})}},{"../logger":33,"../tree/quoted":73,"../tree/url":80,"./function-registry":22}],20:[function(a,b,c){var d=a("../tree/keyword"),e=a("./function-registry"),f={eval:function(){var a=this.value_,b=this.error_;if(b)throw b;if(null!=a)return a?d.True:d.False},value:function(a){this.value_=a},error:function(a){this.error_=a},reset:function(){this.value_=this.error_=null}};e.add("default",f.eval.bind(f)),b.exports=f},{"../tree/keyword":65,"./function-registry":22}],21:[function(a,b,c){var d=a("../tree/expression"),e=function(a,b,c,d){this.name=a.toLowerCase(),this.index=c,this.context=b,this.currentFileInfo=d,this.func=b.frames[0].functionRegistry.get(this.name)};e.prototype.isValid=function(){return Boolean(this.func)},e.prototype.call=function(a){return Array.isArray(a)&&(a=a.filter(function(a){return"Comment"!==a.type}).map(function(a){if("Expression"===a.type){var b=a.value.filter(function(a){return"Comment"!==a.type});return 1===b.length?b[0]:new d(b)}return a})),this.func.apply(this,a)},b.exports=e},{"../tree/expression":59}],22:[function(a,b,c){function d(a){return{_data:{},add:function(a,b){a=a.toLowerCase(),this._data.hasOwnProperty(a),this._data[a]=b},addMultiple:function(a){Object.keys(a).forEach(function(b){this.add(b,a[b])}.bind(this))},get:function(b){return this._data[b]||a&&a.get(b)},inherit:function(){return d(this)}}}b.exports=d(null)},{}],23:[function(a,b,c){b.exports=function(b){var c={functionRegistry:a("./function-registry"),functionCaller:a("./function-caller")};return a("./default"),a("./color"),a("./color-blending"),a("./data-uri")(b),a("./math"),a("./number"),a("./string"),a("./svg")(b),a("./types"),c}},{"./color":18,"./color-blending":17,"./data-uri":19,"./default":20,"./function-caller":21,"./function-registry":22,"./math":25,"./number":26,"./string":27,"./svg":28,"./types":29}],24:[function(a,b,c){var d=a("../tree/dimension"),e=function(){};e._math=function(a,b,c){if(!(c instanceof d))throw{type:"Argument",message:"argument must be a number"};return null==b?b=c.unit:c=c.unify(),new d(a(parseFloat(c.value)),b)},b.exports=e},{"../tree/dimension":56}],25:[function(a,b,c){var d=a("./function-registry"),e=a("./math-helper.js"),f={ceil:null,floor:null,sqrt:null,abs:null,tan:"",sin:"",cos:"",atan:"rad",asin:"rad",acos:"rad"};for(var g in f)f.hasOwnProperty(g)&&(f[g]=e._math.bind(null,Math[g],f[g]));f.round=function(a,b){var c="undefined"==typeof b?0:b.value;return e._math(function(a){return a.toFixed(c)},null,a)},d.addMultiple(f)},{"./function-registry":22,"./math-helper.js":24}],26:[function(a,b,c){var d=a("../tree/dimension"),e=a("../tree/anonymous"),f=a("./function-registry"),g=a("./math-helper.js"),h=function(a,b){switch(b=Array.prototype.slice.call(b),b.length){case 0:throw{type:"Argument",message:"one or more arguments required"}}var c,f,g,h,i,j,k,l,m=[],n={};for(c=0;ci.value)&&(m[f]=g);else{if(void 0!==k&&j!==k)throw{type:"Argument",message:"incompatible types"};n[j]=m.length,m.push(g)}else Array.isArray(b[c].value)&&Array.prototype.push.apply(b,Array.prototype.slice.call(b[c].value));return 1==m.length?m[0]:(b=m.map(function(a){return a.toCSS(this.context)}).join(this.context.compress?",":", "),new e((a?"min":"max")+"("+b+")"))};f.addMultiple({min:function(){return h(!0,arguments)},max:function(){return h(!1,arguments)},convert:function(a,b){return a.convertTo(b.value)},pi:function(){return new d(Math.PI)},mod:function(a,b){return new d(a.value%b.value,a.unit)},pow:function(a,b){if("number"==typeof a&&"number"==typeof b)a=new d(a),b=new d(b);else if(!(a instanceof d&&b instanceof d))throw{type:"Argument",message:"arguments must be numbers"};return new d(Math.pow(a.value,b.value),a.unit)},percentage:function(a){var b=g._math(function(a){return 100*a},"%",a);return b}})},{"../tree/anonymous":46,"../tree/dimension":56,"./function-registry":22,"./math-helper.js":24}],27:[function(a,b,c){var d=a("../tree/quoted"),e=a("../tree/anonymous"),f=a("../tree/javascript"),g=a("./function-registry");g.addMultiple({e:function(a){return new e(a instanceof f?a.evaluated:a.value)},escape:function(a){return new e(encodeURI(a.value).replace(/=/g,"%3D").replace(/:/g,"%3A").replace(/#/g,"%23").replace(/;/g,"%3B").replace(/\(/g,"%28").replace(/\)/g,"%29"))},replace:function(a,b,c,e){var f=a.value;return c="Quoted"===c.type?c.value:c.toCSS(),f=f.replace(new RegExp(b.value,e?e.value:""),c),new d(a.quote||"",f,a.escaped)},"%":function(a){for(var b=Array.prototype.slice.call(arguments,1),c=a.value,e=0;e",k=0;k";return j+="',j=encodeURIComponent(j),j="data:image/svg+xml,"+j,new g(new f("'"+j+"'",j,(!1),this.index,this.currentFileInfo),this.index,this.currentFileInfo)})}},{"../tree/color":50,"../tree/dimension":56,"../tree/expression":59,"../tree/quoted":73,"../tree/url":80,"./function-registry":22}],29:[function(a,b,c){var d=a("../tree/keyword"),e=a("../tree/detached-ruleset"),f=a("../tree/dimension"),g=a("../tree/color"),h=a("../tree/quoted"),i=a("../tree/anonymous"),j=a("../tree/url"),k=a("../tree/operation"),l=a("./function-registry"),m=function(a,b){return a instanceof b?d.True:d.False},n=function(a,b){if(void 0===b)throw{type:"Argument",message:"missing the required second argument to isunit."};if(b="string"==typeof b.value?b.value:b,"string"!=typeof b)throw{type:"Argument",message:"Second argument to isunit should be a unit or a string."};return a instanceof f&&a.unit.is(b)?d.True:d.False},o=function(a){var b=Array.isArray(a.value)?a.value:Array(a);return b};l.addMultiple({isruleset:function(a){return m(a,e)},iscolor:function(a){return m(a,g)},isnumber:function(a){return m(a,f)},isstring:function(a){return m(a,h)},iskeyword:function(a){return m(a,d)},isurl:function(a){return m(a,j)},ispixel:function(a){return n(a,"px")},ispercentage:function(a){return n(a,"%")},isem:function(a){return n(a,"em")},isunit:n,unit:function(a,b){if(!(a instanceof f))throw{type:"Argument",message:"the first argument to unit must be a number"+(a instanceof k?". Have you forgotten parenthesis?":"")};return b=b?b instanceof d?b.value:b.toCSS():"",new f(a.value,b)},"get-unit":function(a){return new i(a.unit)},extract:function(a,b){return b=b.value-1,o(a)[b]},length:function(a){return new f(o(a).length)}})},{"../tree/anonymous":46,"../tree/color":50,"../tree/detached-ruleset":55,"../tree/dimension":56,"../tree/keyword":65,"../tree/operation":71,"../tree/quoted":73,"../tree/url":80,"./function-registry":22}],30:[function(a,b,c){var d=a("./contexts"),e=a("./parser/parser"),f=a("./plugins/function-importer");b.exports=function(a){var b=function(a,b){this.rootFilename=b.filename,this.paths=a.paths||[],this.contents={},this.contentsIgnoredChars={},this.mime=a.mime,this.error=null,this.context=a,this.queue=[],this.files={}};return b.prototype.push=function(b,c,g,h,i){var j=this;this.queue.push(b);var k=function(a,c,d){j.queue.splice(j.queue.indexOf(b),1);var e=d===j.rootFilename;h.optional&&a?i(null,{rules:[]},!1,null):(j.files[d]=c,a&&!j.error&&(j.error=a),i(a,c,e,d))},l={relativeUrls:this.context.relativeUrls,entryPath:g.entryPath,rootpath:g.rootpath,rootFilename:g.rootFilename},m=a.getFileManager(b,g.currentDirectory,this.context,a);if(!m)return void k({message:"Could not find a file-manager for "+b});c&&(b=m.tryAppendExtension(b,h.plugin?".js":".less"));var n=function(a){var b=a.filename,c=a.contents.replace(/^\uFEFF/,"");l.currentDirectory=m.getPath(b),l.relativeUrls&&(l.rootpath=m.join(j.context.rootpath||"",m.pathDiff(l.currentDirectory,l.entryPath)),!m.isPathAbsolute(l.rootpath)&&m.alwaysMakePathsAbsolute()&&(l.rootpath=m.join(l.entryPath,l.rootpath))),l.filename=b;var i=new d.Parse(j.context);i.processImports=!1,j.contents[b]=c,(g.reference||h.reference)&&(l.reference=!0),h.plugin?new f(i,l).eval(c,function(a,c){k(a,c,b)}):h.inline?k(null,c,b):new e(i,j,l).parse(c,function(a,c){k(a,c,b)})},o=m.loadFile(b,g.currentDirectory,this.context,a,function(a,b){a?k(a):n(b)});o&&o.then(n,k)},b}},{"./contexts":11,"./parser/parser":38,"./plugins/function-importer":40}],31:[function(a,b,c){b.exports=function(b,c){var d,e,f,g,h,i={version:[2,7,2],data:a("./data"),tree:a("./tree"),Environment:h=a("./environment/environment"),AbstractFileManager:a("./environment/abstract-file-manager"),environment:b=new h(b,c),visitors:a("./visitors"),Parser:a("./parser/parser"),functions:a("./functions")(b),contexts:a("./contexts"),SourceMapOutput:d=a("./source-map-output")(b),SourceMapBuilder:e=a("./source-map-builder")(d,b),ParseTree:f=a("./parse-tree")(e),ImportManager:g=a("./import-manager")(b),render:a("./render")(b,f,g),parse:a("./parse")(b,f,g),LessError:a("./less-error"),transformTree:a("./transform-tree"),utils:a("./utils"),PluginManager:a("./plugin-manager"),logger:a("./logger")};return i}},{"./contexts":11,"./data":13,"./environment/abstract-file-manager":15,"./environment/environment":16,"./functions":23,"./import-manager":30,"./less-error":32,"./logger":33,"./parse":35,"./parse-tree":34,"./parser/parser":38,"./plugin-manager":39,"./render":41,"./source-map-builder":42,"./source-map-output":43,"./transform-tree":44,"./tree":62,"./utils":83,"./visitors":87}],32:[function(a,b,c){var d=a("./utils"),e=b.exports=function(a,b,c){Error.call(this);var e=a.filename||c;if(b&&e){var f=b.contents[e],g=d.getLocation(a.index,f),h=g.line,i=g.column,j=a.call&&d.getLocation(a.call,f).line,k=f.split("\n");this.type=a.type||"Syntax",this.filename=e,this.index=a.index,this.line="number"==typeof h?h+1:null,this.callLine=j+1,this.callExtract=k[j],this.column=i,this.extract=[k[h-1],k[h],k[h+1]]}this.message=a.message,this.stack=a.stack};if("undefined"==typeof Object.create){var f=function(){};f.prototype=Error.prototype,e.prototype=new f}else e.prototype=Object.create(Error.prototype);e.prototype.constructor=e},{"./utils":83}],33:[function(a,b,c){b.exports={error:function(a){this._fireEvent("error",a)},warn:function(a){this._fireEvent("warn",a)},info:function(a){this._fireEvent("info",a)},debug:function(a){this._fireEvent("debug",a)},addListener:function(a){this._listeners.push(a)},removeListener:function(a){for(var b=0;b=97&&j<=122||j<34))switch(j){case 40:o++,e=h;continue;case 41:if(--o<0)return b("missing opening `(`",h);continue;case 59:o||c();continue;case 123:n++,d=h;continue;case 125:if(--n<0)return b("missing opening `{`",h);n||o||c();continue;case 92:if(h96)){if(k==j){l=1;break}if(92==k){if(h==m-1)return b("unescaped `\\`",h);h++}}if(l)continue;return b("unmatched `"+String.fromCharCode(j)+"`",i);case 47:if(o||h==m-1)continue;if(k=a.charCodeAt(h+1),47==k)for(h+=2;hd&&g>f?b("missing closing `}` or `*/`",d):b("missing closing `}`",d):0!==o?b("missing closing `)`",e):(c(!0),p)}},{}],37:[function(a,b,c){var d=a("./chunker");b.exports=function(){function a(d){for(var e,f,j,p=k.i,q=c,s=k.i-i,t=k.i+h.length-s,u=k.i+=d,v=b;k.i=0){j={index:k.i,text:v.substr(k.i,x+2-k.i),isLineComment:!1},k.i+=j.text.length-1,k.commentStore.push(j);continue}}break}if(e!==l&&e!==n&&e!==m&&e!==o)break}if(h=h.slice(d+k.i-u+s),i=k.i,!h.length){if(ce||k.i===e&&a&&!f)&&(e=k.i,f=a);var b=j.pop();h=b.current,i=k.i=b.i,c=b.j},k.forget=function(){j.pop()},k.isWhitespace=function(a){var c=k.i+(a||0),d=b.charCodeAt(c);return d===l||d===o||d===m||d===n},k.$re=function(b){k.i>i&&(h=h.slice(k.i-i),i=k.i);var c=b.exec(h);return c?(a(c[0].length),"string"==typeof c?c:1===c.length?c[0]:c):null},k.$char=function(c){return b.charAt(k.i)!==c?null:(a(1),c)},k.$str=function(c){for(var d=c.length,e=0;es||a=b.length;return k.i=b.length-1,furthestChar:b[k.i]}},k}},{"./chunker":36}],38:[function(a,b,c){var d=a("../less-error"),e=a("../tree"),f=a("../visitors"),g=a("./parser-input"),h=a("../utils"),i=function j(a,b,c){function i(a,e){throw new d({index:o.i,filename:c.filename,type:e||"Syntax",message:a},b)}function k(a,b,c){var d=a instanceof Function?a.call(n):o.$re(a);return d?d:void i(b||("string"==typeof a?"expected '"+a+"' got '"+o.currentChar()+"'":"unexpected token"))}function l(a,b){return o.$char(a)?a:void i(b||"expected '"+a+"' got '"+o.currentChar()+"'")}function m(a){var b=c.filename;return{lineNumber:h.getLocation(a,o.getInput()).line+1,fileName:b}}var n,o=g();return{parse:function(g,h,i){var k,l,m,n,p=null,q="";if(l=i&&i.globalVars?j.serializeVars(i.globalVars)+"\n":"",m=i&&i.modifyVars?"\n"+j.serializeVars(i.modifyVars):"",a.pluginManager)for(var r=a.pluginManager.getPreProcessors(),s=0;s1&&(b=new e.Value(g)),d.push(b),g=[])}return o.forget(),a?d:f},literal:function(){return this.dimension()||this.color()||this.quoted()||this.unicodeDescriptor()},assignment:function(){var a,b;return o.save(),(a=o.$re(/^\w+(?=\s?=)/i))&&o.$char("=")&&(b=n.entity())?(o.forget(),new e.Assignment(a,b)):void o.restore()},url:function(){var a,b=o.i;return o.autoCommentAbsorb=!1,o.$str("url(")?(a=this.quoted()||this.variable()||o.$re(/^(?:(?:\\[\(\)'"])|[^\(\)'"])+/)||"",o.autoCommentAbsorb=!0,l(")"),new e.URL(null!=a.value||a instanceof e.Variable?a:new e.Anonymous(a),b,c)):void(o.autoCommentAbsorb=!0)},variable:function(){var a,b=o.i;if("@"===o.currentChar()&&(a=o.$re(/^@@?[\w-]+/)))return new e.Variable(a,b,c)},variableCurly:function(){var a,b=o.i;if("@"===o.currentChar()&&(a=o.$re(/^@\{([\w-]+)\}/)))return new e.Variable("@"+a[1],b,c)},color:function(){var a;if("#"===o.currentChar()&&(a=o.$re(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/))){var b=a.input.match(/^#([\w]+).*/);return b=b[1],b.match(/^[A-Fa-f0-9]+$/)||i("Invalid HEX color code"),new e.Color(a[1],(void 0),"#"+b)}},colorKeyword:function(){o.save();var a=o.autoCommentAbsorb;o.autoCommentAbsorb=!1;var b=o.$re(/^[_A-Za-z-][_A-Za-z0-9-]+/);if(o.autoCommentAbsorb=a,!b)return void o.forget();o.restore();var c=e.Color.fromKeyword(b);return c?(o.$str(b),c):void 0},dimension:function(){if(!o.peekNotNumeric()){var a=o.$re(/^([+-]?\d*\.?\d+)(%|[a-z_]+)?/i);return a?new e.Dimension(a[1],a[2]):void 0}},unicodeDescriptor:function(){var a;if(a=o.$re(/^U\+[0-9a-fA-F?]+(\-[0-9a-fA-F?]+)?/))return new e.UnicodeDescriptor(a[0])},javascript:function(){var a,b=o.i;o.save();var d=o.$char("~"),f=o.$char("`");return f?(a=o.$re(/^[^`]*`/))?(o.forget(),new e.JavaScript(a.substr(0,a.length-1),Boolean(d),b,c)):void o.restore("invalid javascript definition"):void o.restore()}},variable:function(){var a;if("@"===o.currentChar()&&(a=o.$re(/^(@[\w-]+)\s*:/)))return a[1]},rulesetCall:function(){var a;if("@"===o.currentChar()&&(a=o.$re(/^(@[\w-]+)\(\s*\)\s*;/)))return new e.RulesetCall(a[1])},extend:function(a){var b,d,f,g,h,j=o.i;if(o.$str(a?"&:extend(":":extend(")){do{for(f=null,b=null;!(f=o.$re(/^(all)(?=\s*(\)|,))/))&&(d=this.element());)b?b.push(d):b=[d];f=f&&f[1],b||i("Missing target selector for :extend()."),h=new e.Extend(new e.Selector(b),f,j,c),g?g.push(h):g=[h]}while(o.$char(","));return k(/^\)/),a&&k(/^;/),g}},extendRule:function(){return this.extend(!0)},mixin:{call:function(){var a,b,d,f,g,h,i=o.currentChar(),j=!1,k=o.i;if("."===i||"#"===i){for(o.save();;){if(a=o.i,f=o.$re(/^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/),!f)break;d=new e.Element(g,f,a,c),b?b.push(d):b=[d],g=o.$char(">")}return b&&(o.$char("(")&&(h=this.args(!0).args,l(")")),n.important()&&(j=!0),n.end())?(o.forget(),new e.mixin.Call(b,h,k,c,j)):void o.restore()}},args:function(a){var b,c,d,f,g,h,j,k=n.entities,l={args:null,variadic:!1},m=[],p=[],q=[];for(o.save();;){if(a)h=n.detachedRuleset()||n.expression();else{if(o.commentStore.length=0,o.$str("...")){l.variadic=!0,o.$char(";")&&!b&&(b=!0),(b?p:q).push({variadic:!0});break}h=k.variable()||k.literal()||k.keyword()}if(!h)break;f=null,h.throwAwayComments&&h.throwAwayComments(),g=h;var r=null;if(a?h.value&&1==h.value.length&&(r=h.value[0]):r=h,r&&r instanceof e.Variable)if(o.$char(":")){if(m.length>0&&(b&&i("Cannot mix ; and , as delimiter types"),c=!0),g=n.detachedRuleset()||n.expression(),!g){if(!a)return o.restore(),l.args=[],l;i("could not understand value for named argument")}f=d=r.name}else if(o.$str("...")){if(!a){l.variadic=!0,o.$char(";")&&!b&&(b=!0),(b?p:q).push({name:h.name,variadic:!0});break}j=!0}else a||(d=f=r.name,g=null);g&&m.push(g),q.push({name:f,value:g,expand:j}),o.$char(",")||(o.$char(";")||b)&&(c&&i("Cannot mix ; and , as delimiter types"),b=!0,m.length>1&&(g=new e.Value(m)),p.push({name:d,value:g,expand:j}),d=null,m=[],c=!1)}return o.forget(),l.args=b?p:q,l},definition:function(){var a,b,c,d,f=[],g=!1;if(!("."!==o.currentChar()&&"#"!==o.currentChar()||o.peek(/^[^{]*\}/)))if(o.save(),b=o.$re(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/)){a=b[1];var h=this.args(!1);if(f=h.args,g=h.variadic,!o.$char(")"))return void o.restore("Missing closing ')'");if(o.commentStore.length=0,o.$str("when")&&(d=k(n.conditions,"expected condition")),c=n.block())return o.forget(),new e.mixin.Definition(a,f,c,d,g);o.restore()}else o.forget()}},entity:function(){var a=this.entities;return this.comment()||a.literal()||a.variable()||a.url()||a.call()||a.keyword()||a.javascript()},end:function(){return o.$char(";")||o.peek("}")},alpha:function(){var a;if(o.$re(/^opacity=/i))return a=o.$re(/^\d+/),a||(a=k(this.entities.variable,"Could not parse alpha")),l(")"),new e.Alpha(a)},element:function(){var a,b,d,f=o.i;if(b=this.combinator(),a=o.$re(/^(?:\d+\.\d+|\d+)%/)||o.$re(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||o.$char("*")||o.$char("&")||this.attribute()||o.$re(/^\([^&()@]+\)/)||o.$re(/^[\.#:](?=@)/)||this.entities.variableCurly(),a||(o.save(),o.$char("(")?(d=this.selector())&&o.$char(")")?(a=new e.Paren(d),o.forget()):o.restore("Missing closing ')'"):o.forget()),a)return new e.Element(b,a,f,c)},combinator:function(){var a=o.currentChar();if("/"===a){o.save();var b=o.$re(/^\/[a-z]+\//i);if(b)return o.forget(),new e.Combinator(b);o.restore()}if(">"===a||"+"===a||"~"===a||"|"===a||"^"===a){for(o.i++,"^"===a&&"^"===o.currentChar()&&(a="^^",o.i++);o.isWhitespace();)o.i++;return new e.Combinator(a)}return new e.Combinator(o.isWhitespace(-1)?" ":null)},lessSelector:function(){return this.selector(!0)},selector:function(a){for(var b,d,f,g,h,j,l,m=o.i;(a&&(d=this.extend())||a&&(j=o.$str("when"))||(g=this.element()))&&(j?l=k(this.conditions,"expected condition"):l?i("CSS guard can only be used at the end of selector"):d?h=h?h.concat(d):d:(h&&i("Extend can only be used at the end of selector"),f=o.currentChar(),b?b.push(g):b=[g],g=null),"{"!==f&&"}"!==f&&";"!==f&&","!==f&&")"!==f););return b?new e.Selector(b,h,l,m,c):void(h&&i("Extend must be used to extend a selector, it cannot be used on its own"))},attribute:function(){if(o.$char("[")){var a,b,c,d=this.entities;return(a=d.variableCurly())||(a=k(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)),c=o.$re(/^[|~*$^]?=/),c&&(b=d.quoted()||o.$re(/^[0-9]+%/)||o.$re(/^[\w-]+/)||d.variableCurly()),l("]"),new e.Attribute(a,c,b)}},block:function(){var a;if(o.$char("{")&&(a=this.primary())&&o.$char("}"))return a},blockRuleset:function(){var a=this.block();return a&&(a=new e.Ruleset(null,a)),a},detachedRuleset:function(){var a=this.blockRuleset();if(a)return new e.DetachedRuleset(a)},ruleset:function(){var b,c,d,f;for(o.save(),a.dumpLineNumbers&&(f=m(o.i));;){if(c=this.lessSelector(),!c)break;if(b?b.push(c):b=[c],o.commentStore.length=0,c.condition&&b.length>1&&i("Guards are only currently allowed on a single selector."),!o.$char(","))break;c.condition&&i("Guards are only currently allowed on a single selector."),o.commentStore.length=0}if(b&&(d=this.block())){o.forget();var g=new e.Ruleset(b,d,a.strictImports);return a.dumpLineNumbers&&(g.debugInfo=f),g}o.restore()},rule:function(b){var d,f,g,h,i,j=o.i,k=o.currentChar();if("."!==k&&"#"!==k&&"&"!==k&&":"!==k)if(o.save(),d=this.variable()||this.ruleProperty()){if(i="string"==typeof d,i&&(f=this.detachedRuleset()),o.commentStore.length=0,!f){h=!i&&d.length>1&&d.pop().value;var l=!b&&(a.compress||i);if(l&&(f=this.value()),!f&&(f=this.anonymousValue()))return o.forget(),new e.Rule(d,f,(!1),h,j,c);l||f||(f=this.value()),g=this.important()}if(f&&this.end())return o.forget(),new e.Rule(d,f,g,h,j,c);if(o.restore(),f&&!b)return this.rule(!0)}else o.forget()},anonymousValue:function(){var a=o.$re(/^([^@+\/'"*`(;{}-]*);/);if(a)return new e.Anonymous(a[1])},"import":function(){var a,b,d=o.i,f=o.$re(/^@import?\s+/);if(f){var g=(f?this.importOptions():null)||{};if(a=this.entities.quoted()||this.entities.url())return b=this.mediaFeatures(),o.$char(";")||(o.i=d,i("missing semi-colon or unrecognised media features on import")),b=b&&new e.Value(b),new e.Import(a,b,g,d,c);o.i=d,i("malformed import statement")}},importOptions:function(){var a,b,c,d={};if(!o.$char("("))return null;do if(a=this.importOption()){switch(b=a,c=!0,b){case"css":b="less",c=!1;break;case"once":b="multiple",c=!1}if(d[b]=c,!o.$char(","))break}while(a);return l(")"),d},importOption:function(){var a=o.$re(/^(less|css|multiple|once|inline|reference|optional)/);if(a)return a[1]},mediaFeature:function(){var a,b,d=this.entities,f=[];o.save();do a=d.keyword()||d.variable(),a?f.push(a):o.$char("(")&&(b=this.property(),a=this.value(),o.$char(")")?b&&a?f.push(new e.Paren(new e.Rule(b,a,null,null,o.i,c,(!0)))):a?f.push(new e.Paren(a)):i("badly formed media feature definition"):i("Missing closing ')'","Parse"));while(a);if(o.forget(),f.length>0)return new e.Expression(f)},mediaFeatures:function(){var a,b=this.entities,c=[];do if(a=this.mediaFeature()){if(c.push(a),!o.$char(","))break}else if(a=b.variable(),a&&(c.push(a),!o.$char(",")))break;while(a);return c.length>0?c:null},media:function(){var b,d,f,g,h=o.i;return a.dumpLineNumbers&&(g=m(h)),o.save(),o.$str("@media")?(b=this.mediaFeatures(),d=this.block(),d||i("media definitions require block statements after any features"),o.forget(),f=new e.Media(d,b,h,c),a.dumpLineNumbers&&(f.debugInfo=g),f):void o.restore()},plugin:function(){var a,b=o.i,d=o.$re(/^@plugin?\s+/);if(d){var f={plugin:!0};if(a=this.entities.quoted()||this.entities.url())return o.$char(";")||(o.i=b,i("missing semi-colon on plugin")),new e.Import(a,null,f,b,c);o.i=b,i("malformed plugin statement")}},directive:function(){var b,d,f,g,h,j,k,l=o.i,n=!0,p=!0;if("@"===o.currentChar()){if(d=this["import"]()||this.plugin()||this.media())return d;if(o.save(),b=o.$re(/^@[a-z-]+/)){switch(g=b,"-"==b.charAt(1)&&b.indexOf("-",2)>0&&(g="@"+b.slice(b.indexOf("-",2)+1)),g){case"@charset":h=!0,n=!1;break;case"@namespace":j=!0,n=!1;break;case"@keyframes":case"@counter-style":h=!0;break;case"@document":case"@supports":k=!0,p=!1;break;default:k=!0}return o.commentStore.length=0,h?(d=this.entity(),d||i("expected "+b+" identifier")):j?(d=this.expression(),d||i("expected "+b+" expression")):k&&(d=(o.$re(/^[^{;]+/)||"").trim(),n="{"==o.currentChar(),d&&(d=new e.Anonymous(d))),n&&(f=this.blockRuleset()),f||!n&&d&&o.$char(";")?(o.forget(),new e.Directive(b,d,f,l,c,a.dumpLineNumbers?m(l):null,p)):void o.restore("directive options not recognised")}}},value:function(){var a,b=[];do if(a=this.expression(),a&&(b.push(a),!o.$char(",")))break;while(a);if(b.length>0)return new e.Value(b)},important:function(){if("!"===o.currentChar())return o.$re(/^! *important/)},sub:function(){var a,b;return o.save(),o.$char("(")?(a=this.addition(),a&&o.$char(")")?(o.forget(),b=new e.Expression([a]),b.parens=!0,b):void o.restore("Expected ')'")):void o.restore()},multiplication:function(){var a,b,c,d,f;if(a=this.operand()){for(f=o.isWhitespace(-1);;){if(o.peek(/^\/[*\/]/))break;if(o.save(),c=o.$char("/")||o.$char("*"),!c){o.forget();break}if(b=this.operand(),!b){o.restore();break}o.forget(),a.parensInOp=!0,b.parensInOp=!0,d=new e.Operation(c,[d||a,b],f),f=o.isWhitespace(-1)}return d||a}},addition:function(){var a,b,c,d,f;if(a=this.multiplication()){for(f=o.isWhitespace(-1);;){if(c=o.$re(/^[-+]\s+/)||!f&&(o.$char("+")||o.$char("-")),!c)break;if(b=this.multiplication(),!b)break;a.parensInOp=!0,b.parensInOp=!0,d=new e.Operation(c,[d||a,b],f),f=o.isWhitespace(-1)}return d||a}},conditions:function(){var a,b,c,d=o.i;if(a=this.condition()){for(;;){if(!o.peek(/^,\s*(not\s*)?\(/)||!o.$char(","))break;if(b=this.condition(),!b)break;c=new e.Condition("or",c||a,b,d)}return c||a}},condition:function(){function a(){return o.$str("or")}var b,c,d;if(b=this.conditionAnd(this)){if(c=a()){if(d=this.condition(),!d)return;b=new e.Condition(c,b,d)}return b}},conditionAnd:function(){function a(a){return a.negatedCondition()||a.parenthesisCondition()}function b(){return o.$str("and")}var c,d,f;if(c=a(this)){if(d=b()){if(f=this.conditionAnd(),!f)return;c=new e.Condition(d,c,f)}return c}},negatedCondition:function(){if(o.$str("not")){var a=this.parenthesisCondition();return a&&(a.negate=!a.negate),a}},parenthesisCondition:function(){function a(a){var b;return o.save(),(b=a.condition())&&o.$char(")")?(o.forget(),b):void o.restore()}var b;return o.save(),o.$str("(")?(b=a(this))?(o.forget(),b):(b=this.atomicCondition())?o.$char(")")?(o.forget(),b):void o.restore("expected ')' got '"+o.currentChar()+"'"):void o.restore():void o.restore()},atomicCondition:function(){var a,b,c,d,f=this.entities,g=o.i;if(a=this.addition()||f.keyword()||f.quoted())return o.$char(">")?d=o.$char("=")?">=":">":o.$char("<")?d=o.$char("=")?"<=":"<":o.$char("=")&&(d=o.$char(">")?"=>":o.$char("<")?"=<":"="),d?(b=this.addition()||f.keyword()||f.quoted(),b?c=new e.Condition(d,a,b,g,(!1)):i("expected expression")):c=new e.Condition("=",a,new e.Keyword("true"),g,(!1)),c},operand:function(){var a,b=this.entities;o.peek(/^-[@\(]/)&&(a=o.$char("-"));var c=this.sub()||b.dimension()||b.color()||b.variable()||b.call()||b.colorKeyword();return a&&(c.parensInOp=!0,c=new e.Negative(c)),c},expression:function(){var a,b,c=[];do a=this.comment(),a?c.push(a):(a=this.addition()||this.entity(),a&&(c.push(a),o.peek(/^\/[\/*]/)||(b=o.$char("/"),b&&c.push(new e.Anonymous(b)))));while(a);if(c.length>0)return new e.Expression(c)},property:function(){var a=o.$re(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/);if(a)return a[1]},ruleProperty:function(){function a(a){var b=o.i,c=o.$re(a);if(c)return g.push(b),f.push(c[1])}var b,d,f=[],g=[];o.save();var h=o.$re(/^([_a-zA-Z0-9-]+)\s*:/);if(h)return f=[new e.Keyword(h[1])],o.forget(),f;for(a(/^(\*?)/);;)if(!a(/^((?:[\w-]+)|(?:@\{[\w-]+\}))/))break;if(f.length>1&&a(/^((?:\+_|\+)?)\s*:/)){for(o.forget(),""===f[0]&&(f.shift(),g.shift()),d=0;d=b);c++);this.preProcessors.splice(c,0,{preProcessor:a,priority:b})},d.prototype.addPostProcessor=function(a,b){var c;for(c=0;c=b);c++);this.postProcessors.splice(c,0,{postProcessor:a,priority:b})},d.prototype.addFileManager=function(a){this.fileManagers.push(a)},d.prototype.getPreProcessors=function(){for(var a=[],b=0;b0){var d,e=JSON.stringify(this._sourceMapGenerator.toJSON());this.sourceMapURL?d=this.sourceMapURL:this._sourceMapFilename&&(d=this._sourceMapFilename),this.sourceMapURL=d,this.sourceMap=e}return this._css.join("")},b}},{}],44:[function(a,b,c){var d=a("./contexts"),e=a("./visitors"),f=a("./tree");b.exports=function(a,b){b=b||{};var c,g=b.variables,h=new d.Eval(b);"object"!=typeof g||Array.isArray(g)||(g=Object.keys(g).map(function(a){var b=g[a];return b instanceof f.Value||(b instanceof f.Expression||(b=new f.Expression([b])),b=new f.Value([b])),new f.Rule("@"+a,b,(!1),null,0)}),h.frames=[new f.Ruleset(null,g)]);var i,j=[],k=[new e.JoinSelectorVisitor,new e.MarkVisibleSelectorsVisitor((!0)),new e.ExtendVisitor,new e.ToCSSVisitor({compress:Boolean(b.compress)})];if(b.pluginManager){var l=b.pluginManager.getVisitors();for(i=0;i.5?j/(2-g-h):j/(g+h),g){case c:a=(d-e)/j+(d="===a||"=<"===a||"<="===a;case 1:return">"===a||">="===a;default:return!1}}}(this.op,this.lvalue.eval(a),this.rvalue.eval(a));return this.negate?!b:b},b.exports=e},{"./node":70}],54:[function(a,b,c){var d=function(a,b,c){var e="";if(a.dumpLineNumbers&&!a.compress)switch(a.dumpLineNumbers){case"comments":e=d.asComment(b);break;case"mediaquery":e=d.asMediaQuery(b);break;case"all":e=d.asComment(b)+(c||"")+d.asMediaQuery(b)}return e};d.asComment=function(a){return"/* line "+a.debugInfo.lineNumber+", "+a.debugInfo.fileName+" */\n"},d.asMediaQuery=function(a){var b=a.debugInfo.fileName;return/^[a-z]+:\/\//i.test(b)||(b="file://"+b),"@media -sass-debug-info{filename{font-family:"+b.replace(/([.:\/\\])/g,function(a){return"\\"==a&&(a="/"),"\\"+a})+"}line{font-family:\\00003"+a.debugInfo.lineNumber+"}}\n"},b.exports=d},{}],55:[function(a,b,c){var d=a("./node"),e=a("../contexts"),f=function(a,b){this.ruleset=a,this.frames=b};f.prototype=new d,f.prototype.type="DetachedRuleset",f.prototype.evalFirst=!0,f.prototype.accept=function(a){this.ruleset=a.visit(this.ruleset)},f.prototype.eval=function(a){var b=this.frames||a.frames.slice(0);return new f(this.ruleset,b)},f.prototype.callEval=function(a){return this.ruleset.eval(this.frames?new e.Eval(a,this.frames.concat(a.frames)):a)},b.exports=f},{"../contexts":11,"./node":70}],56:[function(a,b,c){var d=a("./node"),e=a("../data/unit-conversions"),f=a("./unit"),g=a("./color"),h=function(a,b){this.value=parseFloat(a),this.unit=b&&b instanceof f?b:new f(b?[b]:void 0)};h.prototype=new d,h.prototype.type="Dimension",h.prototype.accept=function(a){this.unit=a.visit(this.unit)},h.prototype.eval=function(a){return this},h.prototype.toColor=function(){return new g([this.value,this.value,this.value])},h.prototype.genCSS=function(a,b){if(a&&a.strictUnits&&!this.unit.isSingular())throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: "+this.unit.toString());var c=this.fround(a,this.value),d=String(c);if(0!==c&&c<1e-6&&c>-1e-6&&(d=c.toFixed(20).replace(/0+$/,"")),a&&a.compress){if(0===c&&this.unit.isLength())return void b.add(d);c>0&&c<1&&(d=d.substr(1))}b.add(d),this.unit.genCSS(a,b)},h.prototype.operate=function(a,b,c){var d=this._operate(a,b,this.value,c.value),e=this.unit.clone();if("+"===b||"-"===b)if(0===e.numerator.length&&0===e.denominator.length)e=c.unit.clone(),this.unit.backupUnit&&(e.backupUnit=this.unit.backupUnit);else if(0===c.unit.numerator.length&&0===e.denominator.length);else{if(c=c.convertTo(this.unit.usedUnits()),a.strictUnits&&c.unit.toString()!==e.toString())throw new Error("Incompatible units. Change the units or use the unit function. Bad units: '"+e.toString()+"' and '"+c.unit.toString()+"'.");d=this._operate(a,b,this.value,c.value)}else"*"===b?(e.numerator=e.numerator.concat(c.unit.numerator).sort(),e.denominator=e.denominator.concat(c.unit.denominator).sort(),e.cancel()):"/"===b&&(e.numerator=e.numerator.concat(c.unit.denominator).sort(),e.denominator=e.denominator.concat(c.unit.numerator).sort(),e.cancel());return new h(d,e)},h.prototype.compare=function(a){var b,c;if(a instanceof h){if(this.unit.isEmpty()||a.unit.isEmpty())b=this,c=a;else if(b=this.unify(),c=a.unify(),0!==b.unit.compare(c.unit))return;return d.numericCompare(b.value,c.value)}},h.prototype.unify=function(){return this.convertTo({length:"px",duration:"s",angle:"rad"})},h.prototype.convertTo=function(a){var b,c,d,f,g,i=this.value,j=this.unit.clone(),k={};if("string"==typeof a){for(b in e)e[b].hasOwnProperty(a)&&(k={},k[b]=a);a=k}g=function(a,b){return d.hasOwnProperty(a)?(b?i/=d[a]/d[f]:i*=d[a]/d[f],f):a};for(c in a)a.hasOwnProperty(c)&&(f=a[c],d=e[c],j.map(g));return j.cancel(),new h(i,j)},b.exports=h},{"../data/unit-conversions":14,"./color":50,"./node":70,"./unit":79}],57:[function(a,b,c){var d=a("./node"),e=a("./selector"),f=a("./ruleset"),g=function(a,b,c,d,f,g,h,i){var j;if(this.name=a,this.value=b,c)for(Array.isArray(c)?this.rules=c:(this.rules=[c],this.rules[0].selectors=new e([],null,null,this.index,f).createEmptySelectors()),j=0;j1?b=new g(this.value.map(function(b){return b.eval(a)})):1===this.value.length?(this.value[0].parens&&!this.value[0].parensInOp&&(d=!0),b=this.value[0].eval(a)):b=this,c&&a.outOfParenthesis(),this.parens&&this.parensInOp&&!a.isMathOn()&&!d&&(b=new e(b)),b},g.prototype.genCSS=function(a,b){for(var c=0;c0&&c.length&&""===c[0].combinator.value&&(c[0].combinator.value=" "),d=d.concat(a[b].elements);this.selfSelectors=[new e(d)],this.selfSelectors[0].copyVisibilityInfo(this.visibilityInfo())},b.exports=f},{"./node":70,"./selector":77}],61:[function(a,b,c){var d=a("./node"),e=a("./media"),f=a("./url"),g=a("./quoted"),h=a("./ruleset"),i=a("./anonymous"),j=function(a,b,c,d,e,f){if(this.options=c,this.index=d,this.path=a,this.features=b,this.currentFileInfo=e,this.allowRoot=!0,void 0!==this.options.less||this.options.inline)this.css=!this.options.less||this.options.inline;else{var g=this.getPath();g&&/[#\.\&\?\/]css([\?;].*)?$/.test(g)&&(this.css=!0)}this.copyVisibilityInfo(f)};j.prototype=new d,j.prototype.type="Import",j.prototype.accept=function(a){this.features&&(this.features=a.visit(this.features)),this.path=a.visit(this.path),this.options.plugin||this.options.inline||!this.root||(this.root=a.visit(this.root))},j.prototype.genCSS=function(a,b){this.css&&void 0===this.path.currentFileInfo.reference&&(b.add("@import ",this.currentFileInfo,this.index),this.path.genCSS(a,b),this.features&&(b.add(" "),this.features.genCSS(a,b)),b.add(";"))},j.prototype.getPath=function(){return this.path instanceof f?this.path.value.value:this.path.value},j.prototype.isVariableImport=function(){var a=this.path;return a instanceof f&&(a=a.value),!(a instanceof g)||a.containsVariables()},j.prototype.evalForImport=function(a){var b=this.path;return b instanceof f&&(b=b.value),new j(b.eval(a),this.features,this.options,this.index,this.currentFileInfo,this.visibilityInfo())},j.prototype.evalPath=function(a){var b=this.path.eval(a),c=this.currentFileInfo&&this.currentFileInfo.rootpath;if(!(b instanceof f)){if(c){var d=b.value;d&&a.isPathRelative(d)&&(b.value=c+d)}b.value=a.normalizePath(b.value)}return b},j.prototype.eval=function(a){var b=this.doEval(a);return(this.options.reference||this.blocksVisibility())&&(b.length||0===b.length?b.forEach(function(a){a.addVisibilityBlock()}):b.addVisibilityBlock()),b},j.prototype.doEval=function(a){var b,c,d=this.features&&this.features.eval(a);if(this.options.plugin)return c=a.frames[0]&&a.frames[0].functionRegistry,c&&this.root&&this.root.functions&&c.addMultiple(this.root.functions),[];if(this.skip&&("function"==typeof this.skip&&(this.skip=this.skip()),this.skip))return[];if(this.options.inline){var f=new i(this.root,0,{filename:this.importedFilename,reference:this.path.currentFileInfo&&this.path.currentFileInfo.reference},(!0),(!0));return this.features?new e([f],this.features.value):[f]}if(this.css){var g=new j(this.evalPath(a),d,this.options,this.index);if(!g.css&&this.error)throw this.error;return g}return b=new h(null,this.root.rules.slice(0)),b.evalImports(a),this.features?new e(b.rules,this.features.value):b.rules},b.exports=j},{"./anonymous":46,"./media":66,"./node":70,"./quoted":73,"./ruleset":76,"./url":80}],62:[function(a,b,c){var d={};d.Node=a("./node"),d.Alpha=a("./alpha"),d.Color=a("./color"),d.Directive=a("./directive"),d.DetachedRuleset=a("./detached-ruleset"),d.Operation=a("./operation"),d.Dimension=a("./dimension"),d.Unit=a("./unit"),d.Keyword=a("./keyword"),d.Variable=a("./variable"),d.Ruleset=a("./ruleset"),d.Element=a("./element"),d.Attribute=a("./attribute"),d.Combinator=a("./combinator"),d.Selector=a("./selector"),d.Quoted=a("./quoted"),d.Expression=a("./expression"),d.Rule=a("./rule"),d.Call=a("./call"),d.URL=a("./url"),d.Import=a("./import"),d.mixin={Call:a("./mixin-call"),Definition:a("./mixin-definition")},d.Comment=a("./comment"),d.Anonymous=a("./anonymous"),d.Value=a("./value"),d.JavaScript=a("./javascript"),d.Assignment=a("./assignment"),d.Condition=a("./condition"),d.Paren=a("./paren"),d.Media=a("./media"),d.UnicodeDescriptor=a("./unicode-descriptor"),d.Negative=a("./negative"),d.Extend=a("./extend"),d.RulesetCall=a("./ruleset-call"),b.exports=d},{"./alpha":45,"./anonymous":46,"./assignment":47,"./attribute":48,"./call":49,"./color":50,"./combinator":51,"./comment":52,"./condition":53,"./detached-ruleset":55,"./dimension":56,"./directive":57,"./element":58,"./expression":59,"./extend":60,"./import":61,"./javascript":63,"./keyword":65,"./media":66,"./mixin-call":67,"./mixin-definition":68,"./negative":69,"./node":70,"./operation":71,"./paren":72,"./quoted":73,"./rule":74,"./ruleset":76,"./ruleset-call":75,"./selector":77,"./unicode-descriptor":78,"./unit":79,"./url":80,"./value":81,"./variable":82}],63:[function(a,b,c){var d=a("./js-eval-node"),e=a("./dimension"),f=a("./quoted"),g=a("./anonymous"),h=function(a,b,c,d){this.escaped=b,this.expression=a,this.index=c,this.currentFileInfo=d};h.prototype=new d,h.prototype.type="JavaScript",h.prototype.eval=function(a){var b=this.evaluateJavaScript(this.expression,a);return"number"==typeof b?new e(b):"string"==typeof b?new f('"'+b+'"',b,this.escaped,this.index):new g(Array.isArray(b)?b.join(", "):b)},b.exports=h},{"./anonymous":46,"./dimension":56,"./js-eval-node":64,"./quoted":73}],64:[function(a,b,c){var d=a("./node"),e=a("./variable"),f=function(){};f.prototype=new d,f.prototype.evaluateJavaScript=function(a,b){var c,d=this,f={};if(void 0!==b.javascriptEnabled&&!b.javascriptEnabled)throw{message:"You are using JavaScript, which has been disabled.",filename:this.currentFileInfo.filename,index:this.index};a=a.replace(/@\{([\w-]+)\}/g,function(a,c){return d.jsify(new e("@"+c,d.index,d.currentFileInfo).eval(b))});try{a=new Function("return ("+a+")")}catch(g){throw{message:"JavaScript evaluation error: "+g.message+" from `"+a+"`",filename:this.currentFileInfo.filename,index:this.index}}var h=b.frames[0].variables();for(var i in h)h.hasOwnProperty(i)&&(f[i.slice(1)]={value:h[i].value,toJS:function(){return this.value.eval(b).toCSS()}});try{c=a.call(f)}catch(g){throw{message:"JavaScript evaluation error: '"+g.name+": "+g.message.replace(/["]/g,"'")+"'",filename:this.currentFileInfo.filename,index:this.index}}return c},f.prototype.jsify=function(a){return Array.isArray(a.value)&&a.value.length>1?"["+a.value.map(function(a){return a.toCSS()}).join(", ")+"]":a.toCSS()},b.exports=f},{"./node":70,"./variable":82}],65:[function(a,b,c){var d=a("./node"),e=function(a){this.value=a};e.prototype=new d,e.prototype.type="Keyword",e.prototype.genCSS=function(a,b){if("%"===this.value)throw{type:"Syntax",message:"Invalid % without number"};b.add(this.value)},e.True=new e("true"),e.False=new e("false"),b.exports=e},{"./node":70}],66:[function(a,b,c){var d=a("./ruleset"),e=a("./value"),f=a("./selector"),g=a("./anonymous"),h=a("./expression"),i=a("./directive"),j=function(a,b,c,g,h){this.index=c,this.currentFileInfo=g;var i=new f([],null,null,this.index,this.currentFileInfo).createEmptySelectors();this.features=new e(b),this.rules=[new d(i,a)],this.rules[0].allowImports=!0,this.copyVisibilityInfo(h),this.allowRoot=!0};j.prototype=new i,j.prototype.type="Media",j.prototype.isRulesetLike=!0,j.prototype.accept=function(a){this.features&&(this.features=a.visit(this.features)),this.rules&&(this.rules=a.visitArray(this.rules))},j.prototype.genCSS=function(a,b){b.add("@media ",this.currentFileInfo,this.index),this.features.genCSS(a,b),this.outputRuleset(a,b,this.rules)},j.prototype.eval=function(a){a.mediaBlocks||(a.mediaBlocks=[],a.mediaPath=[]);var b=new j(null,[],this.index,this.currentFileInfo,this.visibilityInfo());this.debugInfo&&(this.rules[0].debugInfo=this.debugInfo,b.debugInfo=this.debugInfo);var c=!1;a.strictMath||(c=!0,a.strictMath=!0);try{b.features=this.features.eval(a)}finally{c&&(a.strictMath=!1)}return a.mediaPath.push(b),a.mediaBlocks.push(b),this.rules[0].functionRegistry=a.frames[0].functionRegistry.inherit(),a.frames.unshift(this.rules[0]),b.rules=[this.rules[0].eval(a)],a.frames.shift(),a.mediaPath.pop(),0===a.mediaPath.length?b.evalTop(a):b.evalNested(a)},j.prototype.evalTop=function(a){var b=this;if(a.mediaBlocks.length>1){var c=new f([],null,null,this.index,this.currentFileInfo).createEmptySelectors();b=new d(c,a.mediaBlocks),b.multiMedia=!0,b.copyVisibilityInfo(this.visibilityInfo())}return delete a.mediaBlocks,delete a.mediaPath,b},j.prototype.evalNested=function(a){var b,c,f=a.mediaPath.concat([this]);for(b=0;b0;b--)a.splice(b,0,new g("and"));return new h(a)})),new d([],[])},j.prototype.permute=function(a){if(0===a.length)return[];if(1===a.length)return a[0];for(var b=[],c=this.permute(a.slice(1)),d=0;d0){for(n=!0,k=0;k0)p=B;else if(p=A,q[A]+q[B]>1)throw{type:"Runtime",message:"Ambiguous use of `default()` found when matching for `"+this.format(t)+"`",index:this.index,filename:this.currentFileInfo.filename};for(k=0;kthis.params.length)return!1}c=Math.min(f,this.arity);for(var g=0;gb?1:void 0},d.prototype.blocksVisibility=function(){return null==this.visibilityBlocks&&(this.visibilityBlocks=0),0!==this.visibilityBlocks},d.prototype.addVisibilityBlock=function(){null==this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks+1},d.prototype.removeVisibilityBlock=function(){null==this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks-1},d.prototype.ensureVisibility=function(){this.nodeVisible=!0},d.prototype.ensureInvisibility=function(){this.nodeVisible=!1},d.prototype.isVisible=function(){return this.nodeVisible},d.prototype.visibilityInfo=function(){return{visibilityBlocks:this.visibilityBlocks,nodeVisible:this.nodeVisible}},d.prototype.copyVisibilityInfo=function(a){a&&(this.visibilityBlocks=a.visibilityBlocks,this.nodeVisible=a.nodeVisible)},b.exports=d},{}],71:[function(a,b,c){var d=a("./node"),e=a("./color"),f=a("./dimension"),g=function(a,b,c){this.op=a.trim(),this.operands=b,this.isSpaced=c};g.prototype=new d,g.prototype.type="Operation",g.prototype.accept=function(a){this.operands=a.visit(this.operands)},g.prototype.eval=function(a){var b=this.operands[0].eval(a),c=this.operands[1].eval(a);if(a.isMathOn()){if(b instanceof f&&c instanceof e&&(b=b.toColor()),c instanceof f&&b instanceof e&&(c=c.toColor()),!b.operate)throw{type:"Operation",message:"Operation on an invalid type"};return b.operate(a,this.op,c)}return new g(this.op,[b,c],this.isSpaced)},g.prototype.genCSS=function(a,b){this.operands[0].genCSS(a,b),this.isSpaced&&b.add(" "),b.add(this.op),this.isSpaced&&b.add(" "),this.operands[1].genCSS(a,b)},b.exports=g},{"./color":50,"./dimension":56,"./node":70}],72:[function(a,b,c){var d=a("./node"),e=function(a){this.value=a};e.prototype=new d,e.prototype.type="Paren",e.prototype.genCSS=function(a,b){b.add("("),this.value.genCSS(a,b),b.add(")")},e.prototype.eval=function(a){return new e(this.value.eval(a))},b.exports=e},{"./node":70}],73:[function(a,b,c){var d=a("./node"),e=a("./js-eval-node"),f=a("./variable"),g=function(a,b,c,d,e){this.escaped=null==c||c,this.value=b||"",this.quote=a.charAt(0),this.index=d,this.currentFileInfo=e};g.prototype=new e,g.prototype.type="Quoted",g.prototype.genCSS=function(a,b){this.escaped||b.add(this.quote,this.currentFileInfo,this.index),b.add(this.value),this.escaped||b.add(this.quote)},g.prototype.containsVariables=function(){return this.value.match(/(`([^`]+)`)|@\{([\w-]+)\}/)},g.prototype.eval=function(a){function b(a,b,c){var d=a;do a=d,d=a.replace(b,c);while(a!==d);return d}var c=this,d=this.value,e=function(b,d){return String(c.evaluateJavaScript(d,a))},h=function(b,d){var e=new f("@"+d,c.index,c.currentFileInfo).eval(a,!0);return e instanceof g?e.value:e.toCSS()};return d=b(d,/`([^`]+)`/g,e),d=b(d,/@\{([\w-]+)\}/g,h),new g(this.quote+d+this.quote,d,this.escaped,this.index,this.currentFileInfo)},g.prototype.compare=function(a){return"Quoted"!==a.type||this.escaped||a.escaped?a.toCSS&&this.toCSS()===a.toCSS()?0:void 0:d.numericCompare(this.value,a.value)},b.exports=g},{"./js-eval-node":64,"./node":70,"./variable":82}],74:[function(a,b,c){function d(a,b){var c,d="",e=b.length,f={add:function(a){d+=a}};for(c=0;cd){if(!c||c(h)){e=h.find(new f(a.elements.slice(d)),b,c);for(var j=0;j0&&b.add(k),a.firstSelector=!0,h[0].genCSS(a,b),a.firstSelector=!1,e=1;e0?(e=a.slice(0),f=e.pop(),h=d.createDerived(f.elements.slice(0))):h=d.createDerived([]),b.length>0){var i=c.combinator,j=b[0].elements[0];i.emptyOrWhitespace&&!j.combinator.emptyOrWhitespace&&(i=j.combinator),h.elements.push(new g(i,j.value,c.index,c.currentFileInfo)),h.elements=h.elements.concat(b[0].elements.slice(1))}if(0!==h.elements.length&&e.push(h),b.length>1){var k=b.slice(1);k=k.map(function(a){return a.createDerived(a.elements,[])}),e=e.concat(k)}return e}function j(a,b,c,d,e){var f;for(f=0;f0?d[d.length-1]=d[d.length-1].createDerived(d[d.length-1].elements.concat(a)):d.push(new f(a))}}function l(a,b,c){function f(a){var b;return"Paren"!==a.value.type?null:(b=a.value.value,"Selector"!==b.type?null:b)}var h,m,n,o,p,q,r,s,t,u,v=!1;for(o=[],p=[[]],h=0;h0&&r[0].elements.push(new g(s.combinator,"",s.index,s.currentFileInfo)),q.push(r);else for(n=0;n0&&(a.push(p[h]),u=p[h][t-1],p[h][t-1]=u.createDerived(u.elements,c.extendList));return v}function m(a,b){var c=b.createDerived(b.elements,b.extendList,b.evaldCondition);return c.copyVisibilityInfo(a),c}var n,o,p;if(o=[],p=l(o,b,c),!p)if(b.length>0)for(o=[],n=0;n0)for(b=0;b=0&&"\n"!==b.charAt(c);)e++;return"number"==typeof a&&(d=(b.slice(0,a).match(/\n/g)||"").length),{line:d,column:e}}}},{}],84:[function(a,b,c){var d=a("../tree"),e=a("./visitor"),f=a("../logger"),g=function(){this._visitor=new e(this),this.contexts=[],this.allExtendsStack=[[]]};g.prototype={run:function(a){return a=this._visitor.visit(a),a.allExtends=this.allExtendsStack[0],a},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitRuleset:function(a,b){if(!a.root){var c,e,f,g,h=[],i=a.rules,j=i?i.length:0;for(c=0;c=0||(i=[k.selfSelectors[0]],g=n.findMatch(j,i),g.length&&(j.hasFoundMatches=!0,j.selfSelectors.forEach(function(a){var b=k.visibilityInfo();h=n.extendSelector(g,i,a,j.isVisible()),l=new d.Extend(k.selector,k.option,0,k.currentFileInfo,b),l.selfSelectors=h,h[h.length-1].extendList=[l],m.push(l),l.ruleset=k.ruleset,l.parent_ids=l.parent_ids.concat(k.parent_ids,j.parent_ids),k.firstExtendOnThisSelectorPath&&(l.firstExtendOnThisSelectorPath=!0,k.ruleset.paths.push(h))})));if(m.length){if(this.extendChainCount++,c>100){var o="{unable to calculate}",p="{unable to calculate}";try{o=m[0].selfSelectors[0].toCSS(),p=m[0].selector.toCSS()}catch(q){}throw{message:"extend circular reference detected. One of the circular extends is currently:"+o+":extend("+p+")"}}return m.concat(n.doExtendChaining(m,b,c+1))}return m},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitSelector:function(a,b){b.visitDeeper=!1},visitRuleset:function(a,b){if(!a.root){var c,d,e,f,g=this.allExtendsStack[this.allExtendsStack.length-1],h=[],i=this;for(e=0;e0&&k[i.matched].combinator.value!==g?i=null:i.matched++,i&&(i.finished=i.matched===k.length,i.finished&&!a.allowAfter&&(e+1k&&l>0&&(m[m.length-1].elements=m[m.length-1].elements.concat(b[k].elements.slice(l)),l=0,k++),j=g.elements.slice(l,i.index).concat([h]).concat(c.elements.slice(1)),k===i.pathIndex&&f>0?m[m.length-1].elements=m[m.length-1].elements.concat(j):(m=m.concat(b.slice(k,i.pathIndex)),m.push(new d.Selector(j))),k=i.endPathIndex,l=i.endPathElementIndex,l>=b[k].elements.length&&(l=0,k++);return k0&&(m[m.length-1].elements=m[m.length-1].elements.concat(b[k].elements.slice(l)),k++),m=m.concat(b.slice(k,b.length)),m=m.map(function(a){var b=a.createDerived(a.elements);return e?b.ensureVisibility():b.ensureInvisibility(),b})},visitMedia:function(a,b){var c=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);c=c.concat(this.doExtendChaining(c,a.allExtends)),this.allExtendsStack.push(c)},visitMediaOut:function(a){var b=this.allExtendsStack.length-1;this.allExtendsStack.length=b},visitDirective:function(a,b){var c=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);c=c.concat(this.doExtendChaining(c,a.allExtends)),this.allExtendsStack.push(c)},visitDirectiveOut:function(a){var b=this.allExtendsStack.length-1;this.allExtendsStack.length=b}},b.exports=h},{"../logger":33,"../tree":62,"./visitor":91}],85:[function(a,b,c){function d(a){this.imports=[],this.variableImports=[],this._onSequencerEmpty=a,this._currentDepth=0}d.prototype.addImport=function(a){var b=this,c={callback:a,args:null,isReady:!1};return this.imports.push(c),function(){c.args=Array.prototype.slice.call(arguments,0),c.isReady=!0,b.tryRun()}},d.prototype.addVariableImport=function(a){this.variableImports.push(a)},d.prototype.tryRun=function(){this._currentDepth++;try{for(;;){for(;this.imports.length>0;){var a=this.imports[0];if(!a.isReady)return; + this.imports=this.imports.slice(1),a.callback.apply(null,a.args)}if(0===this.variableImports.length)break;var b=this.variableImports[0];this.variableImports=this.variableImports.slice(1),b()}}finally{this._currentDepth--}0===this._currentDepth&&this._onSequencerEmpty&&this._onSequencerEmpty()},b.exports=d},{}],86:[function(a,b,c){var d=a("../contexts"),e=a("./visitor"),f=a("./import-sequencer"),g=function(a,b){this._visitor=new e(this),this._importer=a,this._finish=b,this.context=new d.Eval,this.importCount=0,this.onceFileDetectionMap={},this.recursionDetector={},this._sequencer=new f(this._onSequencerEmpty.bind(this))};g.prototype={isReplacing:!1,run:function(a){try{this._visitor.visit(a)}catch(b){this.error=b}this.isFinished=!0,this._sequencer.tryRun()},_onSequencerEmpty:function(){this.isFinished&&this._finish(this.error)},visitImport:function(a,b){var c=a.options.inline;if(!a.css||c){var e=new d.Eval(this.context,this.context.frames.slice(0)),f=e.frames[0];this.importCount++,a.isVariableImport()?this._sequencer.addVariableImport(this.processImportNode.bind(this,a,e,f)):this.processImportNode(a,e,f)}b.visitDeeper=!1},processImportNode:function(a,b,c){var d,e=a.options.inline;try{d=a.evalForImport(b)}catch(f){f.filename||(f.index=a.index,f.filename=a.currentFileInfo.filename),a.css=!0,a.error=f}if(!d||d.css&&!e)this.importCount--,this.isFinished&&this._sequencer.tryRun();else{d.options.multiple&&(b.importMultiple=!0);for(var g=void 0===d.css,h=0;h0},resolveVisibility:function(a,b){if(!a.blocksVisibility()){if(this.isEmpty(a)&&!this.containsSilentNonBlockedChild(b))return;return a}var c=a.rules[0];if(this.keepOnlyVisibleChilds(c),!this.isEmpty(c))return a.ensureVisibility(),a.removeVisibilityBlock(),a},isVisibleRuleset:function(a){return!!a.firstRoot||!this.isEmpty(a)&&!(!a.root&&!this.hasVisibleSelector(a))}};var g=function(a){this._visitor=new e(this),this._context=a,this.utils=new f(a)};g.prototype={isReplacing:!0,run:function(a){return this._visitor.visit(a)},visitRule:function(a,b){if(!a.blocksVisibility()&&!a.variable)return a},visitMixinDefinition:function(a,b){a.frames=[]},visitExtend:function(a,b){},visitComment:function(a,b){if(!a.blocksVisibility()&&!a.isSilent(this._context))return a},visitMedia:function(a,b){var c=a.rules[0].rules;return a.accept(this._visitor),b.visitDeeper=!1,this.utils.resolveVisibility(a,c)},visitImport:function(a,b){if(!a.blocksVisibility())return a},visitDirective:function(a,b){return a.rules&&a.rules.length?this.visitDirectiveWithBody(a,b):this.visitDirectiveWithoutBody(a,b)},visitDirectiveWithBody:function(a,b){function c(a){var b=a.rules;return 1===b.length&&(!b[0].paths||0===b[0].paths.length)}function d(a){var b=a.rules;return c(a)?b[0].rules:b}var e=d(a);return a.accept(this._visitor),b.visitDeeper=!1,this.utils.isEmpty(a)||this._mergeRules(a.rules[0].rules),this.utils.resolveVisibility(a,e)},visitDirectiveWithoutBody:function(a,b){if(!a.blocksVisibility()){if("@charset"===a.name){if(this.charset){if(a.debugInfo){var c=new d.Comment("/* "+a.toCSS(this._context).replace(/\n/g,"")+" */\n");return c.debugInfo=a.debugInfo,this._visitor.visit(c)}return}this.charset=!0}return a}},checkValidNodes:function(a,b){if(a)for(var c=0;c0?a.accept(this._visitor):a.rules=null,b.visitDeeper=!1}return a.rules&&(this._mergeRules(a.rules),this._removeDuplicateRules(a.rules)),this.utils.isVisibleRuleset(a)&&(a.ensureVisibility(),d.splice(0,0,a)),1===d.length?d[0]:d},_compileRulesetPaths:function(a){a.paths&&(a.paths=a.paths.filter(function(a){var b;for(" "===a[0].elements[0].combinator.value&&(a[0].elements[0].combinator=new d.Combinator("")),b=0;b=0;e--)if(c=a[e],c instanceof d.Rule)if(f[c.name]){b=f[c.name],b instanceof d.Rule&&(b=f[c.name]=[f[c.name].toCSS(this._context)]);var g=c.toCSS(this._context);b.indexOf(g)!==-1?a.splice(e,1):b.push(g)}else f[c.name]=c}},_mergeRules:function(a){if(a){for(var b,c,e,f={},g=0;g1){c=b[0];var h=[],i=[];b.map(function(a){"+"===a.merge&&(i.length>0&&h.push(e(i)),i=[]),i.push(a)}),h.push(e(i)),c.value=g(h)}})}},visitAnonymous:function(a,b){if(!a.blocksVisibility())return a.accept(this._visitor),a}},b.exports=g},{"../tree":62,"./visitor":91}],91:[function(a,b,c){function d(a){return a}function e(a,b){var c,d;for(c in a)if(a.hasOwnProperty(c))switch(d=a[c],typeof d){case"function":d.prototype&&d.prototype.type&&(d.prototype.typeIndex=b++);break;case"object":b=e(d,b)}return b}var f=a("../tree"),g={visitDeeper:!0},h=!1,i=function(a){this._implementation=a,this._visitFnCache=[],h||(e(f,1),h=!0)};i.prototype={visit:function(a){if(!a)return a;var b=a.typeIndex;if(!b)return a;var c,e=this._visitFnCache,f=this._implementation,h=b<<1,i=1|h,j=e[h],k=e[i],l=g;if(l.visitDeeper=!0,j||(c="visit"+a.type,j=f[c]||d,k=f[c+"Out"]||d,e[h]=j,e[i]=k),j!==d){var m=j.call(f,a,l);f.isReplacing&&(a=m)}return l.visitDeeper&&a&&a.accept&&a.accept(this),k!=d&&k.call(f,a),a},visitArray:function(a,b){if(!a)return a;var c,d=a.length;if(b||!this._implementation.isReplacing){for(c=0;ck){for(var b=0,c=h.length-j;b + + + + + + + + + + + + + +
    + + + \ No newline at end of file diff --git a/web - 副本/client/index.html b/web - 副本/client/index.html new file mode 100644 index 0000000..3bad7b1 --- /dev/null +++ b/web - 副本/client/index.html @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + +
    + + + + \ No newline at end of file diff --git a/web - 副本/client/index.js b/web - 副本/client/index.js new file mode 100644 index 0000000..bba7869 --- /dev/null +++ b/web - 副本/client/index.js @@ -0,0 +1,19 @@ +/** + * User: liuxinyi/liu.xinyi@free-sun.com.cn + * Date: 2016/2/22 + * Time: 15:29 + * + */ + +const views = require('koa-view'); +const path = require('path'); + +module.exports = { + entry(app, router, opt) { + app.use(views(__dirname)); + + router.get('(.*)', async (ctx) => { + await ctx.render(path.join(__dirname, './index')); + }); + }, +}; diff --git a/web - 副本/client/screen/decoder.js b/web - 副本/client/screen/decoder.js new file mode 100644 index 0000000..b4dbfae --- /dev/null +++ b/web - 副本/client/screen/decoder.js @@ -0,0 +1 @@ +!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(require("path"),require("fs"),require("crypto")):"function"==typeof define&&define.amd?define(["path","fs","crypto"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).path,e.fs,e.crypto$1)}(this,(function(e,r,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(e),i=n(r),a=n(t);var s=function(e,r){return e(r={exports:{}},r.exports),r.exports}((function(e){var r,t=void 0!==t?t:{},n={};for(r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);var s,u,c,f,l,d="./this.program",p="object"==typeof window,h="function"==typeof importScripts,m="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,v="";m?(v=h?o.default.dirname(v)+"/":__dirname+"/",s=function(e,r){return f||(f=i.default),l||(l=o.default),e=l.normalize(e),f.readFileSync(e,r?null:"utf8")},c=function(e){var r=s(e,!0);return r.buffer||(r=new Uint8Array(r)),k(r.buffer),r},u=function(e,r,t){f||(f=i.default),l||(l=o.default),e=l.normalize(e),f.readFile(e,(function(e,n){e?t(e):r(n.buffer)}))},process.argv.length>1&&(d=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),e.exports=t,process.on("uncaughtException",(function(e){if(!(e instanceof Zr))throw e})),process.on("unhandledRejection",ee),t.inspect=function(){return"[Emscripten Module object]"}):(p||h)&&(h?v=self.location.href:"undefined"!=typeof document&&document.currentScript&&(v=document.currentScript.src),v=0!==v.indexOf("blob:")?v.substr(0,v.lastIndexOf("/")+1):"",s=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},h&&(c=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),u=function(e,r,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?r(n.response):t()},n.onerror=t,n.send(null)});var y,g,w=t.print||console.log.bind(console),E=t.printErr||console.warn.bind(console);for(r in n)n.hasOwnProperty(r)&&(t[r]=n[r]);function b(e){b.shown||(b.shown={}),b.shown[e]||(b.shown[e]=1,E(e))}n=null,t.arguments,t.thisProgram&&(d=t.thisProgram),t.quit,t.wasmBinary&&(y=t.wasmBinary),t.noExitRuntime,"object"!=typeof WebAssembly&&ee("no native wasm support detected");var _=!1;function k(e,r){e||ee("Assertion failed: "+r)}var T="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function P(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;if(o-r>16&&e.subarray&&T)return T.decode(e.subarray(r,o));for(var i="";r>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function C(e,r){return e?P($,e,r):""}function A(e,r,t,n){if(!(n>0))return 0;for(var o=t,i=t+n-1,a=0;a=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a);if(s<=127){if(t>=i)break;r[t++]=s}else if(s<=2047){if(t+1>=i)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=i)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=i)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function D(e,r,t){return A(e,$,r,t)}function S(e){for(var r=0,t=0;t=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++t)),n<=127?++r:r+=n<=2047?2:n<=65535?3:4}return r}var F,x,$,R,M,O,I,j,U,N,B="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function L(e,r){for(var t=e,n=t>>1,o=n+r/2;!(n>=o)&&M[n];)++n;if((t=n<<1)-e>32&&B)return B.decode($.subarray(e,t));for(var i="",a=0;!(a>=r/2);++a){var s=R[e+2*a>>1];if(0==s)break;i+=String.fromCharCode(s)}return i}function W(e,r,t){if(void 0===t&&(t=2147483647),t<2)return 0;for(var n=r,o=(t-=2)<2*e.length?t/2:e.length,i=0;i>1]=a,r+=2}return R[r>>1]=0,r-n}function z(e){return 2*e.length}function H(e,r){for(var t=0,n="";!(t>=r/4);){var o=O[e+4*t>>2];if(0==o)break;if(++t,o>=65536){var i=o-65536;n+=String.fromCharCode(55296|i>>10,56320|1023&i)}else n+=String.fromCharCode(o)}return n}function V(e,r,t){if(void 0===t&&(t=2147483647),t<4)return 0;for(var n=r,o=n+t-4,i=0;i=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++i);if(O[r>>2]=a,(r+=4)+4>o)break}return O[r>>2]=0,r-n}function X(e){for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r}t.INITIAL_MEMORY;var G=[],q=[],Y=[];var K=0,J=null;function Q(e){K++,t.monitorRunDependencies&&t.monitorRunDependencies(K)}function Z(e){if(K--,t.monitorRunDependencies&&t.monitorRunDependencies(K),0==K&&J){var r=J;J=null,r()}}function ee(e){throw t.onAbort&&t.onAbort(e),E(e+=""),_=!0,e="abort("+e+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(e)}t.preloadedImages={},t.preloadedAudios={};var re,te,ne;function oe(e){return e.startsWith("data:application/octet-stream;base64,")}function ie(e){return e.startsWith("file://")}function ae(e){try{if(e==re&&y)return new Uint8Array(y);if(c)return c(e);throw"both async and sync fetching of the wasm failed"}catch(e){ee(e)}}function se(e){for(;e.length>0;){var r=e.shift();if("function"!=typeof r){var n=r.func;"number"==typeof n?void 0===r.arg?N.get(n)():N.get(n)(r.arg):n(void 0===r.arg?null:r.arg)}else r(t)}}function ue(){var e=new Error;if(!e.stack){try{throw new Error}catch(r){e=r}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}oe(re="decoder.wasm")||(re=function(e){return t.locateFile?t.locateFile(e,v):v+e}(re));var ce={splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,r){for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:function(e){var r="/"===e.charAt(0),t="/"===e.substr(-1);return(e=ce.normalizeArray(e.split("/").filter((function(e){return!!e})),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:function(e){var r=ce.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:function(e){if("/"===e)return"/";var r=(e=(e=ce.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===r?e:e.substr(r+1)},extname:function(e){return ce.splitPath(e)[3]},join:function(){var e=Array.prototype.slice.call(arguments,0);return ce.normalize(e.join("/"))},join2:function(e,r){return ce.normalize(e+"/"+r)}};var fe={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:he.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r="/"===n.charAt(0)}return(r?"/":"")+(e=ce.normalizeArray(e.split("/").filter((function(e){return!!e})),!r).join("/"))||"."},relative:function(e,r){function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=fe.resolve(e).substr(1),r=fe.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s0?t.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(r=window.prompt("Input: "))&&(r+="\n"):"function"==typeof readline&&null!==(r=readline())&&(r+="\n");if(!r)return null;e.input=Hr(r,!0)}return e.input.shift()},put_char:function(e,r){null===r||10===r?(w(P(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(w(P(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(E(P(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(E(P(e.output,0)),e.output=[])}}};function de(e){e=function(e,r){return Math.ceil(e/r)*r}(e,65536);var r=Qr(65536,e);return r?(function(e,r){$.fill(0,e,e+r)}(r,e),r):0}var pe={ops_table:null,mount:function(e){return pe.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(he.isBlkdev(t)||he.isFIFO(t))throw new he.ErrnoError(63);pe.ops_table||(pe.ops_table={dir:{node:{getattr:pe.node_ops.getattr,setattr:pe.node_ops.setattr,lookup:pe.node_ops.lookup,mknod:pe.node_ops.mknod,rename:pe.node_ops.rename,unlink:pe.node_ops.unlink,rmdir:pe.node_ops.rmdir,readdir:pe.node_ops.readdir,symlink:pe.node_ops.symlink},stream:{llseek:pe.stream_ops.llseek}},file:{node:{getattr:pe.node_ops.getattr,setattr:pe.node_ops.setattr},stream:{llseek:pe.stream_ops.llseek,read:pe.stream_ops.read,write:pe.stream_ops.write,allocate:pe.stream_ops.allocate,mmap:pe.stream_ops.mmap,msync:pe.stream_ops.msync}},link:{node:{getattr:pe.node_ops.getattr,setattr:pe.node_ops.setattr,readlink:pe.node_ops.readlink},stream:{}},chrdev:{node:{getattr:pe.node_ops.getattr,setattr:pe.node_ops.setattr},stream:he.chrdev_stream_ops}});var o=he.createNode(e,r,t,n);return he.isDir(o.mode)?(o.node_ops=pe.ops_table.dir.node,o.stream_ops=pe.ops_table.dir.stream,o.contents={}):he.isFile(o.mode)?(o.node_ops=pe.ops_table.file.node,o.stream_ops=pe.ops_table.file.stream,o.usedBytes=0,o.contents=null):he.isLink(o.mode)?(o.node_ops=pe.ops_table.link.node,o.stream_ops=pe.ops_table.link.stream):he.isChrdev(o.mode)&&(o.node_ops=pe.ops_table.chrdev.node,o.stream_ops=pe.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r)if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr:function(e){var r={};return r.dev=he.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,he.isDir(e.mode)?r.size=4096:he.isFile(e.mode)?r.size=e.usedBytes:he.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&pe.resizeFileStorage(e,r.size)},lookup:function(e,r){throw he.genericErrors[44]},mknod:function(e,r,t,n){return pe.createNode(e,r,t,n)},rename:function(e,r,t){if(he.isDir(e.mode)){var n;try{n=he.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new he.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=he.lookupNode(e,r);for(var n in t.contents)throw new he.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=pe.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!he.isLink(e.mode))throw new he.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-o,n);if(a>8&&i.subarray)r.set(i.subarray(o,o+a),t);else for(var s=0;s0||n+t8)throw new he.ErrnoError(32);for(var o=ce.normalizeArray(e.split("/").filter((function(e){return!!e})),!1),i=he.root,a="/",s=0;s40)throw new he.ErrnoError(32)}}return{path:a,node:i}},getPath:function(e){for(var r;;){if(he.isRoot(e)){var t=e.mount.mountpoint;return r?"/"!==t[t.length-1]?t+"/"+r:t+r:t}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:function(e,r){for(var t=0,n=0;n>>0)%he.nameTable.length},hashAddNode:function(e){var r=he.hashName(e.parent.id,e.name);e.name_next=he.nameTable[r],he.nameTable[r]=e},hashRemoveNode:function(e){var r=he.hashName(e.parent.id,e.name);if(he.nameTable[r]===e)he.nameTable[r]=e.name_next;else for(var t=he.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:function(e,r){var t=he.mayLookup(e);if(t)throw new he.ErrnoError(t,e);for(var n=he.hashName(e.id,r),o=he.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===r)return o}return he.lookup(e,r)},createNode:function(e,r,t,n){var o=new he.FSNode(e,r,t,n);return he.hashAddNode(o),o},destroyNode:function(e){he.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(e){var r=he.flagModes[e];if(void 0===r)throw new Error("Unknown file open mode: "+e);return r},flagsToPermissionString:function(e){var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:function(e,r){return he.ignorePermissions||(!r.includes("r")||292&e.mode)&&(!r.includes("w")||146&e.mode)&&(!r.includes("x")||73&e.mode)?0:2},mayLookup:function(e){var r=he.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate:function(e,r){try{he.lookupNode(e,r);return 20}catch(e){}return he.nodePermissions(e,"wx")},mayDelete:function(e,r,t){var n;try{n=he.lookupNode(e,r)}catch(e){return e.errno}var o=he.nodePermissions(e,"wx");if(o)return o;if(t){if(!he.isDir(n.mode))return 54;if(he.isRoot(n)||he.getPath(n)===he.cwd())return 10}else if(he.isDir(n.mode))return 31;return 0},mayOpen:function(e,r){return e?he.isLink(e.mode)?32:he.isDir(e.mode)&&("r"!==he.flagsToPermissionString(r)||512&r)?31:he.nodePermissions(e,he.flagsToPermissionString(r)):44},MAX_OPEN_FDS:4096,nextfd:function(e,r){e=e||0,r=r||he.MAX_OPEN_FDS;for(var t=e;t<=r;t++)if(!he.streams[t])return t;throw new he.ErrnoError(33)},getStream:function(e){return he.streams[e]},createStream:function(e,r,t){he.FSStream||(he.FSStream=function(){},he.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}});var n=new he.FSStream;for(var o in e)n[o]=e[o];e=n;var i=he.nextfd(r,t);return e.fd=i,he.streams[i]=e,e},closeStream:function(e){he.streams[e]=null},chrdev_stream_ops:{open:function(e){var r=he.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new he.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,r){return e<<8|r},registerDevice:function(e,r){he.devices[e]={stream_ops:r}},getDevice:function(e){return he.devices[e]},getMounts:function(e){for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:function(e,r){"function"==typeof e&&(r=e,e=!1),he.syncFSRequests++,he.syncFSRequests>1&&E("warning: "+he.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=he.getMounts(he.root.mount),n=0;function o(e){return he.syncFSRequests--,r(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach((function(r){if(!r.type.syncfs)return i(null);r.type.syncfs(r,e,i)}))},mount:function(e,r,t){var n,o="/"===t,i=!t;if(o&&he.root)throw new he.ErrnoError(10);if(!o&&!i){var a=he.lookupPath(t,{follow_mount:!1});if(t=a.path,n=a.node,he.isMountpoint(n))throw new he.ErrnoError(10);if(!he.isDir(n.mode))throw new he.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?he.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(e){var r=he.lookupPath(e,{follow_mount:!1});if(!he.isMountpoint(r.node))throw new he.ErrnoError(28);var t=r.node,n=t.mounted,o=he.getMounts(n);Object.keys(he.nameTable).forEach((function(e){for(var r=he.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&he.destroyNode(r),r=t}})),t.mounted=null;var i=t.mount.mounts.indexOf(n);t.mount.mounts.splice(i,1)},lookup:function(e,r){return e.node_ops.lookup(e,r)},mknod:function(e,r,t){var n=he.lookupPath(e,{parent:!0}).node,o=ce.basename(e);if(!o||"."===o||".."===o)throw new he.ErrnoError(28);var i=he.mayCreate(n,o);if(i)throw new he.ErrnoError(i);if(!n.node_ops.mknod)throw new he.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:function(e,r){return r=void 0!==r?r:438,r&=4095,r|=32768,he.mknod(e,r,0)},mkdir:function(e,r){return r=void 0!==r?r:511,r&=1023,r|=16384,he.mknod(e,r,0)},mkdirTree:function(e,r){for(var t=e.split("/"),n="",o=0;othis.length-1||e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},i.prototype.setDataGetter=function(e){this.getter=e},i.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",t,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+t+". Status: "+e.status);var r,n=Number(e.getResponseHeader("Content-length")),o=(r=e.getResponseHeader("Accept-Ranges"))&&"bytes"===r,i=(r=e.getResponseHeader("Content-Encoding"))&&"gzip"===r,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(e){var r=e*a,o=(e+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,r){if(e>r)throw new Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==a&&o.setRequestHeader("Range","bytes="+e+"-"+r),"undefined"!=typeof Uint8Array&&(o.responseType="arraybuffer"),o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):Hr(o.responseText||"",!0)}(r,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,w("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new i;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:a}}else s={isDevice:!1,url:t};var u=he.createFile(e,r,s,n,o);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};return Object.keys(u.stream_ops).forEach((function(e){var r=u.stream_ops[e];c[e]=function(){return he.forceLoadFile(u),r.apply(null,arguments)}})),c.read=function(e,r,t,n,o){he.forceLoadFile(u);var i=e.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var s=0;s>2]=n.dev,O[t+4>>2]=0,O[t+8>>2]=n.ino,O[t+12>>2]=n.mode,O[t+16>>2]=n.nlink,O[t+20>>2]=n.uid,O[t+24>>2]=n.gid,O[t+28>>2]=n.rdev,O[t+32>>2]=0,ne=[n.size>>>0,(te=n.size,+Math.abs(te)>=1?te>0?(0|Math.min(+Math.floor(te/4294967296),4294967295))>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],O[t+40>>2]=ne[0],O[t+44>>2]=ne[1],O[t+48>>2]=4096,O[t+52>>2]=n.blocks,O[t+56>>2]=n.atime.getTime()/1e3|0,O[t+60>>2]=0,O[t+64>>2]=n.mtime.getTime()/1e3|0,O[t+68>>2]=0,O[t+72>>2]=n.ctime.getTime()/1e3|0,O[t+76>>2]=0,ne=[n.ino>>>0,(te=n.ino,+Math.abs(te)>=1?te>0?(0|Math.min(+Math.floor(te/4294967296),4294967295))>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],O[t+80>>2]=ne[0],O[t+84>>2]=ne[1],0},doMsync:function(e,r,t,n,o){var i=$.slice(e,e+t);he.msync(r,i,o,t,n)},doMkdir:function(e,r){return"/"===(e=ce.normalize(e))[e.length-1]&&(e=e.substr(0,e.length-1)),he.mkdir(e,r,0),0},doMknod:function(e,r,t){switch(61440&r){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return he.mknod(e,r,t),0},doReadlink:function(e,r,t){if(t<=0)return-28;var n=he.readlink(e),o=Math.min(t,S(n)),i=x[r+o];return D(n,r,t+1),x[r+o]=i,o},doAccess:function(e,r){if(-8&r)return-28;var t;if(!(t=he.lookupPath(e,{follow:!0}).node))return-44;var n="";return 4&r&&(n+="r"),2&r&&(n+="w"),1&r&&(n+="x"),n&&he.nodePermissions(t,n)?-2:0},doDup:function(e,r,t){var n=he.getStream(t);return n&&he.close(n),he.open(e,r,0,t,t).fd},doReadv:function(e,r,t,n){for(var o=0,i=0;i>2],s=O[r+(8*i+4)>>2],u=he.read(e,x,a,s,n);if(u<0)return-1;if(o+=u,u>2],s=O[r+(8*i+4)>>2],u=he.write(e,x,a,s,n);if(u<0)return-1;o+=u}return o},varargs:void 0,get:function(){return me.varargs+=4,O[me.varargs-4>>2]},getStr:function(e){return C(e)},getStreamFromFD:function(e){var r=he.getStream(e);if(!r)throw new he.ErrnoError(8);return r},get64:function(e,r){return e}};function ve(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var ye=void 0;function ge(e){for(var r="",t=e;$[t];)r+=ye[$[t++]];return r}var we={},Ee={},be={};function _e(e){if(void 0===e)return"_unknown";var r=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return r>=48&&r<=57?"_"+e:e}function ke(e,r){return e=_e(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(r)}function Te(e,r){var t=ke(r,(function(e){this.name=r,this.message=e;var t=new Error(e).stack;void 0!==t&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))}));return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},t}var Pe=void 0;function Ce(e){throw new Pe(e)}var Ae=void 0;function De(e){throw new Ae(e)}function Se(e,r,t){function n(r){var n=t(r);n.length!==e.length&&De("Mismatched type converter count");for(var o=0;o>2])}function Ze(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function er(e){this.rawDestructor&&this.rawDestructor(e)}function rr(e){null!==e&&e.delete()}function tr(e,r,t){if(r===t)return e;if(void 0===t.baseClass)return null;var n=tr(e,r,t.baseClass);return null===n?null:t.downcast(n)}function nr(){return Object.keys(ar).length}function or(){var e=[];for(var r in ar)ar.hasOwnProperty(r)&&e.push(ar[r]);return e}function ir(e){Be=e,Le.length&&Be&&Be(We)}var ar={};function sr(e,r){return r=function(e,r){for(void 0===r&&Ce("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r}(e,r),ar[r]}function ur(e,r){return r.ptrType&&r.ptr||De("makeClassHandle requires ptr and ptrType"),!!r.smartPtrType!==!!r.smartPtr&&De("Both smartPtrType and smartPtr must be specified"),r.count={value:1},Ie(Object.create(e,{$$:{value:r}}))}function cr(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=sr(this.registeredClass,r);if(void 0!==t){if(0===t.$$.count.value)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function o(){return this.isSmartPointer?ur(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):ur(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var i,a=this.registeredClass.getActualType(r),s=Ve[a];if(!s)return o.call(this);i=this.isConst?s.constPointerType:s.pointerType;var u=tr(r,this.registeredClass,i.registeredClass);return null===u?o.call(this):this.isSmartPointer?ur(i.registeredClass.instancePrototype,{ptrType:i,ptr:u,smartPtrType:this,smartPtr:e}):ur(i.registeredClass.instancePrototype,{ptrType:i,ptr:u})}function fr(e,r,t,n,o,i,a,s,u,c,f){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=o,this.pointeeType=i,this.sharingPolicy=a,this.rawGetPointee=s,this.rawConstructor=u,this.rawShare=c,this.rawDestructor=f,o||void 0!==r.baseClass?this.toWireType=Ke:n?(this.toWireType=Ye,this.destructorFunction=null):(this.toWireType=Je,this.destructorFunction=null)}function lr(e,r,n){return e.includes("j")?function(e,r,n){var o=t["dynCall_"+e];return n&&n.length?o.apply(null,[r].concat(n)):o.call(null,r)}(e,r,n):N.get(r).apply(null,n)}function dr(e,r){var t,n,o,i=(e=ge(e)).includes("j")?(t=e,n=r,o=[],function(){o.length=arguments.length;for(var e=0;e>2)+n]);return t}function yr(e){for(;e.length;){var r=e.pop();e.pop()(r)}}function gr(e,r){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var t=ke(e.name||"unknownFunctionName",(function(){}));t.prototype=e.prototype;var n=new t,o=e.apply(n,r);return o instanceof Object?o:n}function wr(e,r,t,n,o){var i=r.length;i<2&&Ce("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==r[1]&&null!==t,s=!1,u=1;u0?", ":"")+l),d+=(c?"var rv = ":"")+"invoker(fn"+(l.length>0?", ":"")+l+");\n",s)d+="runDestructors(destructors);\n";else for(u=a?1:2;u4&&0==--_r[e].refcount&&(_r[e]=void 0,br.push(e))}function Tr(){for(var e=0,r=5;r<_r.length;++r)void 0!==_r[r]&&++e;return e}function Pr(){for(var e=5;e<_r.length;++e)if(void 0!==_r[e])return _r[e];return null}function Cr(e){switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var r=br.length?br.pop():_r.length;return _r[r]={refcount:1,value:e},r}}function Ar(e){if(null===e)return"null";var r=typeof e;return"object"===r||"array"===r||"function"===r?e.toString():""+e}function Dr(e,r){switch(r){case 2:return function(e){return this.fromWireType(j[e>>2])};case 3:return function(e){return this.fromWireType(U[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Sr(e,r,t){switch(r){case 0:return t?function(e){return x[e]}:function(e){return $[e]};case 1:return t?function(e){return R[e>>1]}:function(e){return M[e>>1]};case 2:return t?function(e){return O[e>>2]}:function(e){return I[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function Fr(e){return e||Ce("Cannot use deleted val. handle = "+e),_r[e].value}function xr(e,r){var t=Ee[e];return void 0===t&&Ce(r+" has unknown type "+hr(e)),t}var $r={};var Rr=[];function Mr(e,r){return(e>>>0)+4294967296*r}function Or(e,r){if(e<=0)return e;var t=r<=32?Math.abs(1<=t&&(r<=32||e>t)&&(e=-2*t+e),e}function Ir(e,r){return e>=0?e:r<=32?2*Math.abs(1<0?"\n":"")+function(e){var r=ue(),t=r.lastIndexOf("_emscripten_log"),n=r.lastIndexOf("_emscripten_get_callstack"),o=r.indexOf("\n",Math.max(t,n))+1;r=r.slice(o),32&e&&b("EM_LOG_DEMANGLE is deprecated; ignoring"),8&e&&"undefined"==typeof emscripten_source_map&&(b('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.'),e^=8,e|=16);var i=null;if(128&e)for(i=jr(arguments);i[1].includes("_emscripten_");)i=jr(i[0]);var a=r.split("\n");r="";var s=new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"),u=new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"),c=new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");for(var f in a){var l=a[f],d="",p="",h=0,m=0,v=c.exec(l);if(v&&5==v.length)d=v[1],p=v[2],h=v[3],m=v[4];else{if((v=s.exec(l))||(v=u.exec(l)),!(v&&v.length>=4)){r+=l+"\n";continue}d=v[1],p=v[2],h=v[3],m=0|v[4]}var y=!1;if(8&e){var g=emscripten_source_map.originalPositionFor({line:h,column:m});(y=g&&g.source)&&(64&e&&(g.source=g.source.substring(g.source.replace(/\\/g,"/").lastIndexOf("/")+1)),r+=" at "+d+" ("+g.source+":"+g.line+":"+g.column+")\n")}(16&e||!y)&&(64&e&&(p=p.substring(p.replace(/\\/g,"/").lastIndexOf("/")+1)),r+=(y?" = "+d:" at "+d)+" ("+p+":"+h+":"+m+")\n"),128&e&&i[0]&&(i[1]==d&&i[2].length>0&&(r=r.replace(/\s+$/,""),r+=" with values: "+i[1]+i[2]+"\n"),i=jr(i[0]))}return r.replace(/\s+$/,"")}(e)),1&e?4&e?E(r):2&e?console.warn(r):512&e?console.info(r):256&e?console.debug(r):w(r):6&e?E(r):w(r)}var Nr={};function Br(){if(!Br.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:d||"./this.program"};for(var r in Nr)void 0===Nr[r]?delete e[r]:e[r]=Nr[r];var t=[];for(var r in e)t.push(r+"="+e[r]);Br.strings=t}return Br.strings}var Lr=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=he.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n},Wr=365,zr=146;function Hr(e,r,t){var n=t>0?t:S(e)+1,o=new Array(n),i=A(e,o,0,o.length);return r&&(o.length=i),o}Object.defineProperties(Lr.prototype,{read:{get:function(){return(this.mode&Wr)===Wr},set:function(e){e?this.mode|=Wr:this.mode&=-366}},write:{get:function(){return(this.mode&zr)===zr},set:function(e){e?this.mode|=zr:this.mode&=-147}},isFolder:{get:function(){return he.isDir(this.mode)}},isDevice:{get:function(){return he.isChrdev(this.mode)}}}),he.FSNode=Lr,he.staticInit(),function(){for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);ye=e}(),Pe=t.BindingError=Te(Error,"BindingError"),Ae=t.InternalError=Te(Error,"InternalError"),He.prototype.isAliasOf=xe,He.prototype.clone=je,He.prototype.delete=Ue,He.prototype.isDeleted=Ne,He.prototype.deleteLater=ze,fr.prototype.getPointee=Ze,fr.prototype.destructor=er,fr.prototype.argPackAdvance=8,fr.prototype.readValueFromPointer=Qe,fr.prototype.deleteObject=rr,fr.prototype.fromWireType=cr,t.getInheritedInstanceCount=nr,t.getLiveInheritedInstances=or,t.flushPendingDeletes=We,t.setDelayFunction=ir,pr=t.UnboundTypeError=Te(Error,"UnboundTypeError"),t.count_emval_handles=Tr,t.get_first_emval=Pr;var Vr={y:function(e,r,t){me.varargs=t;try{var n=me.getStreamFromFD(e);switch(r){case 0:return(o=me.get())<0?-28:he.open(n.path,n.flags,0,o).fd;case 1:case 2:case 13:case 14:return 0;case 3:return n.flags;case 4:var o=me.get();return n.flags|=o,0;case 12:o=me.get();return R[o+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return i=28,O[qr()>>2]=i,-1}}catch(e){return void 0!==he&&e instanceof he.ErrnoError||ee(e),-e.errno}var i},x:function(e,r,t){me.varargs=t;try{var n=me.getStr(e),o=t?me.get():0;return he.open(n,r,o).fd}catch(e){return void 0!==he&&e instanceof he.ErrnoError||ee(e),-e.errno}},s:function(e,r,t,n,o){},D:function(e,r,t,n,o){var i=ve(t);Fe(e,{name:r=ge(r),fromWireType:function(e){return!!e},toWireType:function(e,r){return r?n:o},argPackAdvance:8,readValueFromPointer:function(e){var n;if(1===t)n=x;else if(2===t)n=R;else{if(4!==t)throw new TypeError("Unknown boolean type size: "+r);n=O}return this.fromWireType(n[e>>i])},destructorFunction:null})},n:function(e,r,n,o,i,a,s,u,c,f,l,d,p){l=ge(l),a=dr(i,a),u&&(u=dr(s,u)),f&&(f=dr(c,f)),p=dr(d,p);var h=_e(l);!function(e,r,n){t.hasOwnProperty(e)?((void 0===n||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[n])&&Ce("Cannot register public name '"+e+"' twice"),Xe(t,e,e),t.hasOwnProperty(n)&&Ce("Cannot register multiple overloads of a function with the same number of arguments ("+n+")!"),t[e].overloadTable[n]=r):(t[e]=r,void 0!==n&&(t[e].numArguments=n))}(h,(function(){mr("Cannot construct "+l+" due to unbound types",[o])})),Se([e,r,n],o?[o]:[],(function(r){var n,i;r=r[0],i=o?(n=r.registeredClass).instancePrototype:He.prototype;var s=ke(h,(function(){if(Object.getPrototypeOf(this)!==c)throw new Pe("Use 'new' to construct "+l);if(void 0===d.constructor_body)throw new Pe(l+" has no accessible constructor");var e=d.constructor_body[arguments.length];if(void 0===e)throw new Pe("Tried to invoke ctor of "+l+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(d.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),c=Object.create(i,{constructor:{value:s}});s.prototype=c;var d=new Ge(l,s,c,p,n,a,u,f),m=new fr(l,d,!0,!1,!1),v=new fr(l+"*",d,!1,!1,!1),y=new fr(l+" const*",d,!1,!0,!1);return Ve[e]={pointerType:v,constPointerType:y},function(e,r,n){t.hasOwnProperty(e)||De("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==n?t[e].overloadTable[n]=r:(t[e]=r,t[e].argCount=n)}(h,s),[m,v,y]}))},i:function(e,r,t,n,o,i){k(r>0);var a=vr(r,t);o=dr(n,o),Se([],[e],(function(e){var t="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[r-1])throw new Pe("Cannot register multiple constructors with identical number of parameters ("+(r-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[r-1]=function(){mr("Cannot construct "+e.name+" due to unbound types",a)},Se([],a,(function(n){return n.splice(1,0,null),e.registeredClass.constructor_body[r-1]=wr(t,n,null,o,i),[]})),[]}))},f:function(e,r,t,n,o,i,a,s){var u=vr(t,n);r=ge(r),i=dr(o,i),Se([],[e],(function(e){var n=(e=e[0]).name+"."+r;function o(){mr("Cannot call "+n+" due to unbound types",u)}r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&e.registeredClass.pureVirtualFunctions.push(r);var c=e.registeredClass.instancePrototype,f=c[r];return void 0===f||void 0===f.overloadTable&&f.className!==e.name&&f.argCount===t-2?(o.argCount=t-2,o.className=e.name,c[r]=o):(Xe(c,r,n),c[r].overloadTable[t-2]=o),Se([],u,(function(o){var s=wr(n,o,e,i,a);return void 0===c[r].overloadTable?(s.argCount=t-2,c[r]=s):c[r].overloadTable[t-2]=s,[]})),[]}))},I:function(e,r,t,n,o,i,a,s,u,c){r=ge(r),o=dr(n,o),Se([],[e],(function(e){var n=(e=e[0]).name+"."+r,f={get:function(){mr("Cannot access "+n+" due to unbound types",[t,a])},enumerable:!0,configurable:!0};return f.set=u?function(){mr("Cannot access "+n+" due to unbound types",[t,a])}:function(e){Ce(n+" is a read-only property")},Object.defineProperty(e.registeredClass.instancePrototype,r,f),Se([],u?[t,a]:[t],(function(t){var a=t[0],f={get:function(){var r=Er(this,e,n+" getter");return a.fromWireType(o(i,r))},enumerable:!0};if(u){u=dr(s,u);var l=t[1];f.set=function(r){var t=Er(this,e,n+" setter"),o=[];u(c,t,l.toWireType(o,r)),yr(o)}}return Object.defineProperty(e.registeredClass.instancePrototype,r,f),[]})),[]}))},C:function(e,r){Fe(e,{name:r=ge(r),fromWireType:function(e){var r=_r[e].value;return kr(e),r},toWireType:function(e,r){return Cr(r)},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:null})},l:function(e,r,t){var n=ve(t);Fe(e,{name:r=ge(r),fromWireType:function(e){return e},toWireType:function(e,r){if("number"!=typeof r&&"boolean"!=typeof r)throw new TypeError('Cannot convert "'+Ar(r)+'" to '+this.name);return r},argPackAdvance:8,readValueFromPointer:Dr(r,n),destructorFunction:null})},c:function(e,r,t,n,o){r=ge(r),-1===o&&(o=4294967295);var i=ve(t),a=function(e){return e};if(0===n){var s=32-8*t;a=function(e){return e<>>s}}var u=r.includes("unsigned");Fe(e,{name:r,fromWireType:a,toWireType:function(e,t){if("number"!=typeof t&&"boolean"!=typeof t)throw new TypeError('Cannot convert "'+Ar(t)+'" to '+this.name);if(to)throw new TypeError('Passing a number "'+Ar(t)+'" from JS side to C/C++ side to an argument of type "'+r+'", which is outside the valid range ['+n+", "+o+"]!");return u?t>>>0:0|t},argPackAdvance:8,readValueFromPointer:Sr(r,i,0!==n),destructorFunction:null})},b:function(e,r,t){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][r];function o(e){var r=I,t=r[e>>=2],o=r[e+1];return new n(F,o,t)}Fe(e,{name:t=ge(t),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},m:function(e,r){var t="std::string"===(r=ge(r));Fe(e,{name:r,fromWireType:function(e){var r,n=I[e>>2];if(t)for(var o=e+4,i=0;i<=n;++i){var a=e+4+i;if(i==n||0==$[a]){var s=C(o,a-o);void 0===r?r=s:(r+=String.fromCharCode(0),r+=s),o=a+1}}else{var u=new Array(n);for(i=0;i>2]=o,t&&n)D(r,i+4,o+1);else if(n)for(var a=0;a255&&(Xr(i),Ce("String has UTF-16 code units that do not fit in 8 bits")),$[i+4+a]=s}else for(a=0;a>2],a=i(),u=e+4,c=0;c<=o;++c){var f=e+4+c*r;if(c==o||0==a[f>>s]){var l=n(u,f-u);void 0===t?t=l:(t+=String.fromCharCode(0),t+=l),u=f+r}}return Xr(e),t},toWireType:function(e,n){"string"!=typeof n&&Ce("Cannot pass non-string to C++ string type "+t);var i=a(n),u=Gr(4+i+r);return I[u>>2]=i>>s,o(n,u+4,i+r),null!==e&&e.push(Xr,u),u},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:function(e){Xr(e)}})},E:function(e,r){Fe(e,{isVoid:!0,name:r=ge(r),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,r){}})},v:function(e,r,t){e=Fr(e),r=xr(r,"emval::as");var n=[],o=Cr(n);return O[t>>2]=o,r.toWireType(n,e)},e:function(e,r,t,n){var o,i;(e=Rr[e])(r=Fr(r),t=void 0===(i=$r[o=t])?ge(o):i,null,n)},p:kr,d:function(e,r){for(var t=function(e,r){for(var t=new Array(e),n=0;n>2)+n],"parameter "+n);return t}(e,r),n=t[0],o=n.name+"_$"+t.slice(1).map((function(e){return e.name})).join("_")+"$",i=["retType"],a=[n],s="",u=0;u4&&(_r[e].refcount+=1)},q:function(e){yr(_r[e].value),kr(e)},B:function(e,r){return Cr((e=xr(e,"_emval_take_value")).readValueFromPointer(r))},a:function(){ee()},G:function e(){return void 0===e.start&&(e.start=Date.now()),1e3*(Date.now()-e.start)|0},H:function(e,r,t){var n=function(e,r){var t=e,n=r;function o(e){var r;return n=function(e,r){return"double"!==r&&"i64"!==r||7&e&&(e+=4),e}(n,e),"double"===e?(r=U[n>>3],n+=8):"i64"==e?(r=[O[n>>2],O[n+4>>2]],n+=8):(e="i32",r=O[n>>2],n+=4),r}for(var i,a,s,u,c=[];;){var f=t;if(0===(i=x[t>>0]))break;if(a=x[t+1>>0],37==i){var l=!1,d=!1,p=!1,h=!1,m=!1;e:for(;;){switch(a){case 43:l=!0;break;case 45:d=!0;break;case 35:p=!0;break;case 48:if(h)break e;h=!0;break;case 32:m=!0;break;default:break e}t++,a=x[t+1>>0]}var v=0;if(42==a)v=o("i32"),t++,a=x[t+1>>0];else for(;a>=48&&a<=57;)v=10*v+(a-48),t++,a=x[t+1>>0];var y,g=!1,w=-1;if(46==a){if(w=0,g=!0,t++,42==(a=x[t+1>>0]))w=o("i32"),t++;else for(;;){var E=x[t+1>>0];if(E<48||E>57)break;w=10*w+(E-48),t++}a=x[t+1>>0]}switch(w<0&&(w=6,g=!1),String.fromCharCode(a)){case"h":104==x[t+2>>0]?(t++,y=1):y=2;break;case"l":108==x[t+2>>0]?(t++,y=8):y=4;break;case"L":case"q":case"j":y=8;break;case"z":case"t":case"I":y=4;break;default:y=null}switch(y&&t++,a=x[t+1>>0],String.fromCharCode(a)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":var b=100==a||105==a;s=o("i"+8*(y=y||4)),8==y&&(s=117==a?(s[0]>>>0)+4294967296*(s[1]>>>0):Mr(s[0],s[1])),y<=4&&(s=(b?Or:Ir)(s&Math.pow(256,y)-1,8*y));var _=Math.abs(s),k="";if(100==a||105==a)C=Or(s,8*y).toString(10);else if(117==a)C=Ir(s,8*y).toString(10),s=Math.abs(s);else if(111==a)C=(p?"0":"")+_.toString(8);else if(120==a||88==a){if(k=p&&0!=s?"0x":"",s<0){s=-s,C=(_-1).toString(16);for(var T=[],P=0;P=0&&(l?k="+"+k:m&&(k=" "+k)),"-"==C.charAt(0)&&(k="-"+k,C=C.substr(1));k.length+C.lengthS&&S>=-4?(a=(103==a?"f":"F").charCodeAt(0),w-=S+1):(a=(103==a?"e":"E").charCodeAt(0),w--),D=Math.min(w,20)}101==a||69==a?(C=s.toExponential(D),/[eE][-+]\d$/.test(C)&&(C=C.slice(0,-1)+"0"+C.slice(-1))):102!=a&&70!=a||(C=s.toFixed(D),0===s&&((u=s)<0||0===u&&1/u==-1/0)&&(C="-"+C));var F=C.split("e");if(A&&!p)for(;F[0].length>1&&F[0].includes(".")&&("0"==F[0].slice(-1)||"."==F[0].slice(-1));)F[0]=F[0].slice(0,-1);else for(p&&-1==C.indexOf(".")&&(F[0]+=".");w>D++;)F[0]+="0";C=F[0]+(F.length>1?"e"+F[1]:""),69==a&&(C=C.toUpperCase()),s>=0&&(l?C="+"+C:m&&(C=" "+C))}else C=(s<0?"-":"")+"inf",h=!1;for(;C.length>0]);else c=c.concat(Hr("(null)".substr(0,M),!0));if(d)for(;M0;)c.push(32);d||c.push(o("i8"));break;case"n":var I=o("i32*");O[I>>2]=c.length;break;case"%":c.push(i);break;default:for(P=f;P>0])}t+=2}else c.push(i),t+=1}return c}(r,t);Ur(e,P(n,0))},t:function(e){$.length,ee("OOM")},u:function(e,r){var t=0;return Br().forEach((function(n,o){var i=r+t;O[e+4*o>>2]=i,function(e,r,t){for(var n=0;n>0]=e.charCodeAt(n);t||(x[r>>0]=0)}(n,i),t+=n.length+1})),0},w:function(e,r){var t=Br();O[e>>2]=t.length;var n=0;return t.forEach((function(e){n+=e.length+1})),O[r>>2]=n,0},k:function(e){try{var r=me.getStreamFromFD(e);return he.close(r),0}catch(e){return void 0!==he&&e instanceof he.ErrnoError||ee(e),e.errno}},z:function(e,r){try{var t=me.getStreamFromFD(e),n=t.tty?2:he.isDir(t.mode)?3:he.isLink(t.mode)?7:4;return x[r>>0]=n,0}catch(e){return void 0!==he&&e instanceof he.ErrnoError||ee(e),e.errno}},A:function(e,r,t,n){try{var o=me.getStreamFromFD(e),i=me.doReadv(o,r,t);return O[n>>2]=i,0}catch(e){return void 0!==he&&e instanceof he.ErrnoError||ee(e),e.errno}},r:function(e,r,t,n,o){try{var i=me.getStreamFromFD(e),a=4294967296*t+(r>>>0),s=9007199254740992;return a<=-s||a>=s?-61:(he.llseek(i,a,n),ne=[i.position>>>0,(te=i.position,+Math.abs(te)>=1?te>0?(0|Math.min(+Math.floor(te/4294967296),4294967295))>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],O[o>>2]=ne[0],O[o+4>>2]=ne[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0)}catch(e){return void 0!==he&&e instanceof he.ErrnoError||ee(e),e.errno}},j:function(e,r,t,n){try{var o=me.getStreamFromFD(e),i=me.doWritev(o,r,t);return O[n>>2]=i,0}catch(e){return void 0!==he&&e instanceof he.ErrnoError||ee(e),e.errno}},F:function(e){var r=Date.now();return O[e>>2]=r/1e3|0,O[e+4>>2]=r%1e3*1e3|0,0},g:function(e){}};!function(){var e={a:Vr};function r(e,r){var n,o,i=e.exports;t.asm=i,g=t.asm.J,n=g.buffer,F=n,t.HEAP8=x=new Int8Array(n),t.HEAP16=R=new Int16Array(n),t.HEAP32=O=new Int32Array(n),t.HEAPU8=$=new Uint8Array(n),t.HEAPU16=M=new Uint16Array(n),t.HEAPU32=I=new Uint32Array(n),t.HEAPF32=j=new Float32Array(n),t.HEAPF64=U=new Float64Array(n),N=t.asm.N,o=t.asm.K,q.unshift(o),Z()}function n(e){r(e.instance)}function o(r){return function(){if(!y&&(p||h)){if("function"==typeof fetch&&!ie(re))return fetch(re,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+re+"'";return e.arrayBuffer()})).catch((function(){return ae(re)}));if(u)return new Promise((function(e,r){u(re,(function(r){e(new Uint8Array(r))}),r)}))}return Promise.resolve().then((function(){return ae(re)}))}().then((function(r){return WebAssembly.instantiate(r,e)})).then((function(e){return e})).then(r,(function(e){E("failed to asynchronously prepare wasm: "+e),ee(e)}))}if(Q(),t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return E("Module.instantiateWasm callback failed with error: "+e),!1}y||"function"!=typeof WebAssembly.instantiateStreaming||oe(re)||ie(re)||"function"!=typeof fetch?o(n):fetch(re,{credentials:"same-origin"}).then((function(r){return WebAssembly.instantiateStreaming(r,e).then(n,(function(e){return E("wasm streaming compile failed: "+e),E("falling back to ArrayBuffer instantiation"),o(n)}))}))}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.K).apply(null,arguments)};var Xr=t._free=function(){return(Xr=t._free=t.asm.L).apply(null,arguments)},Gr=t._malloc=function(){return(Gr=t._malloc=t.asm.M).apply(null,arguments)},qr=t.___errno_location=function(){return(qr=t.___errno_location=t.asm.O).apply(null,arguments)},Yr=t._strlen=function(){return(Yr=t._strlen=t.asm.P).apply(null,arguments)},Kr=t.___getTypeName=function(){return(Kr=t.___getTypeName=t.asm.Q).apply(null,arguments)};t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.R).apply(null,arguments)};var Jr,Qr=t._memalign=function(){return(Qr=t._memalign=t.asm.S).apply(null,arguments)};function Zr(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function et(e){function r(){Jr||(Jr=!0,t.calledRun=!0,_||(t.noFSInit||he.init.initialized||he.init(),he.ignorePermissions=!1,se(q),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),Y.unshift(e);var e;se(Y)}()))}K>0||(!function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),G.unshift(e);var e;se(G)}(),K>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),r()}),1)):r()))}if(t.dynCall_ijiii=function(){return(t.dynCall_ijiii=t.asm.T).apply(null,arguments)},t.dynCall_viiijj=function(){return(t.dynCall_viiijj=t.asm.U).apply(null,arguments)},t.dynCall_jij=function(){return(t.dynCall_jij=t.asm.V).apply(null,arguments)},t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.W).apply(null,arguments)},t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.X).apply(null,arguments)},t._ff_h264_cabac_tables=83749,J=function e(){Jr||et(),Jr||(J=e)},t.run=et,t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();et(),e.exports=t}));const u="initVideo",c="render",f="playAudio",l="print",d="printErr",p="initAudio",h="audioCode",m="videoCode",v=1,y=2,g="init",w="decode",E="audioDecode",b="videoDecode",_="close",k="key",T="delta";(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})(),Date.now||(Date.now=function(){return(new Date).getTime()}),s.print=function(e){postMessage({cmd:l,text:e})},s.printErr=function(e){postMessage({cmd:d,text:e})},s.postRun=function(){var e=[],r={};"VideoEncoder"in self&&(r={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){r.isEmitInfo||(t.opt.debug&&console.log("Jessibuca: [worker] Webcodecs Video Decoder initSize"),postMessage({cmd:u,w:e.codedWidth,h:e.codedHeight}),r.isEmitInfo=!0,r.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),r.offscreenCanvasCtx=r.offscreenCanvas.getContext("2d")),r.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let n=r.offscreenCanvas.transferToImageBitmap();postMessage({cmd:c,buffer:n,delay:t.delay,ts:0},[n]),setTimeout((function(){e.close?e.close():e.destroy()}),100)},error:function(e){console.error(e)}}),decode:function(e,n){const o=e[0]>>4==1;if(r.hasInit){const t=new EncodedVideoChunk({data:e.slice(5),timestamp:n,type:o?k:T});r.decoder.decode(t)}else if(o&&0===e[1]){const n=15&e[0];t.setVideoCodec(n);const o=function(e){let r=e.subarray(1,4),t="avc1.";for(let e=0;e<3;e++){let n=r[e].toString(16);n.length<2&&(n="0"+n),t+=n}return{codec:t,description:e}}(e.slice(5));r.decoder.configure(o),r.hasInit=!0}},reset(){r.hasInit=!1,r.isEmitInfo=!1,r.offscreenCanvas=null,r.offscreenCanvasCtx=null}});var t={opt:{},useOffscreen:function(){return!this.opt.forceNoOffscreen&&"undefined"!=typeof OffscreenCanvas},initAudioPlanar:function(e,r){postMessage({cmd:p,sampleRate:r,channels:e});var t=[],n=[],o=0;this.playAudioPlanar=function(r,i,a){for(var u=i,c=[],l=0,d=0;d<2;d++){var p=s.HEAPU32[(r>>2)+d]>>2;c[d]=s.HEAPF32.subarray(p,p+u)}if(o){if(!(u>=(i=1024-o)))return o+=u,t[0]=Float32Array.of(...t[0],...c[0]),void(2==e&&(t[1]=Float32Array.of(...t[1],...c[1])));n[0]=Float32Array.of(...t[0],...c[0].subarray(0,i)),2==e&&(n[1]=Float32Array.of(...t[1],...c[1].subarray(0,i))),postMessage({cmd:f,buffer:n,ts:a},n.map((e=>e.buffer))),l=i,u-=i}for(o=u;o>=1024;o-=1024)n[0]=c[0].slice(l,l+=1024),2==e&&(n[1]=c[1].slice(l-1024,l)),postMessage({cmd:f,buffer:n,ts:a},n.map((e=>e.buffer)));o&&(t[0]=c[0].slice(l),2==e&&(t[1]=c[1].slice(l)))}},setVideoCodec:function(e){postMessage({cmd:m,code:e})},setAudioCodec:function(e){postMessage({cmd:h,code:e})},setVideoSize:function(e,r){postMessage({cmd:u,w:e,h:r});var n=e*r,o=n>>2;t.useOffscreen()?(this.offscreenCanvas=new OffscreenCanvas(e,r),this.offscreenCanvasGL=this.offscreenCanvas.getContext("webgl"),this.webglObj=(e=>{var r=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),t=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n"),n=e.createShader(e.VERTEX_SHADER);e.shaderSource(n,r),e.compileShader(n),e.getShaderParameter(n,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(n));var o=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(o,t),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(o));var i=e.createProgram();e.attachShader(i,n),e.attachShader(i,o),e.linkProgram(i),e.getProgramParameter(i,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(i)),e.useProgram(i);var a=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,a),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var s=e.getAttribLocation(i,"vertexPos");e.enableVertexAttribArray(s),e.vertexAttribPointer(s,2,e.FLOAT,!1,0,0);var u=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,u),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(i,"texturePos");function f(r,t){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(i,r),t),n}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var l=f("ySampler",0),d=f("uSampler",1),p=f("vSampler",2);return{render:function(r,t,n,o,i){e.viewport(0,0,r,t),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,l),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r,t,0,e.LUMINANCE,e.UNSIGNED_BYTE,n),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,d),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r/2,t/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r/2,t/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,i),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(i),e.deleteBuffer(a),e.deleteBuffer(u),e.deleteTexture(l),e.deleteTexture(d),e.deleteBuffer(p)}catch(e){}}}})(this.offscreenCanvasGL),this.draw=function(t,i,a,u){this.webglObj.render(e,r,s.HEAPU8.subarray(i,i+n),s.HEAPU8.subarray(a,a+o),s.HEAPU8.subarray(u,u+o));let f=this.offscreenCanvas.transferToImageBitmap();postMessage({cmd:c,buffer:f,delay:this.delay,ts:t},[f])}):this.draw=function(e,r,t,i){var a=[s.HEAPU8.subarray(r,r+n),s.HEAPU8.subarray(t,t+o),s.HEAPU8.subarray(i,i+o)].map((e=>Uint8Array.from(e)));postMessage({cmd:c,output:a,delay:this.delay,ts:e},a.map((e=>e.buffer)))}},getDelay:function(e){return e?(this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1,this.getDelay=function(e){return e&&(this.delay=Date.now()-this.startTimestamp-(e-this.firstTimestamp)),this.delay},-1):-1},init:function(){t.opt.debug&&console.log("Jessibuca: [worker] init");const n=e=>{t.opt.useWCS&&t.useOffscreen()&&e.type===y&&r.decode?r.decode(e.payload,e.ts):e.decoder.decode(e.payload,e.ts)};this.stopId=setInterval((()=>{if(e.length)if(this.dropping){for(r=e.shift();!r.isIFrame&&e.length;)r=e.shift();r.isIFrame&&(this.dropping=!1,n(r))}else{var r=e[0];if(-1===this.getDelay(r.ts))e.shift(),n(r);else if(this.delay>this.opt.videoBuffer+1e3)this.dropping=!0;else for(;e.length&&(r=e[0],this.getDelay(r.ts)>this.opt.videoBuffer);)e.shift(),n(r)}}),10)},close:function(){this.opt.debug&&console.log("Jessibuca: [worker]: close"),clearInterval(this.stopId),this.stopId=null,n.clear(),o.clear(),r.reset&&r.reset(),this.firstTimestamp=0,this.startTimestamp=0,this.delay=-1,this.webglObj&&(this.webglObj.destroy(),this.offscreenCanvas=null,this.offscreenCanvasGL=null,this.offscreenCanvasCtx=null),e=[],delete this.playAudioPlanar,delete this.draw},pushBuffer:function(r,t){t.type===v?e.push({ts:t.ts,payload:r,decoder:n,type:v}):t.type===y&&e.push({ts:t.ts,payload:r,decoder:o,type:y,isIFrame:t.isIFrame})}},n=new s.AudioDecoder(t),o=new s.VideoDecoder(t);postMessage({cmd:g}),self.onmessage=function(e){var r=e.data;switch(r.cmd){case g:t.opt=JSON.parse(r.opt),n.sample_rate=r.sampleRate,t.init();break;case w:t.pushBuffer(r.buffer,r.options);break;case E:n.decode(r.buffer,r.ts);break;case b:o.decode(r.buffer,r.ts);break;case _:t.close()}}}})); diff --git a/web - 副本/client/screen/decoder.wasm b/web - 副本/client/screen/decoder.wasm new file mode 100644 index 0000000..7ea58df Binary files /dev/null and b/web - 副本/client/screen/decoder.wasm differ diff --git a/web - 副本/client/screen/jessibuca.d.ts b/web - 副本/client/screen/jessibuca.d.ts new file mode 100644 index 0000000..b9800b8 --- /dev/null +++ b/web - 副本/client/screen/jessibuca.d.ts @@ -0,0 +1,620 @@ +declare namespace Jessibuca { + + /** 超时信息 */ + enum TIMEOUT { + /** 当play()的时候,如果没有数据返回 */ + loadingTimeout = 'loadingTimeout', + /** 当播放过程中,如果超过timeout之后没有数据渲染 */ + delayTimeout = 'delayTimeout', + } + + /** 错误信息 */ + enum ERROR { + /** 播放错误,url 为空的时候,调用 play 方法 */ + playError = 'playError', + /** http 请求失败 */ + fetchError = 'fetchError', + /** websocket 请求失败 */ + websocketError = 'websocketError', + /** webcodecs 解码 h265 失败 */ + webcodecsH265NotSupport = 'webcodecsH265NotSupport', + /** mediaSource 解码 h265 失败 */ + mediaSourceH265NotSupport = 'mediaSourceH265NotSupport', + /** wasm 解码失败 */ + wasmDecodeError = 'wasmDecodeError', + } + + interface Config { + /** + * 播放器容器 + * * 若为 string ,则底层调用的是 document.getElementById('id') + * */ + container: HTMLElement | string; + /** + * 设置最大缓冲时长,单位秒,播放器会自动消除延迟 + */ + videoBuffer?: number; + /** + * worker地址 + * * 默认引用的是根目录下面的decoder.js文件 ,decoder.js 与 decoder.wasm文件必须是放在同一个目录下面。 */ + decoder?: string; + /** + * 是否不使用离屏模式(提升渲染能力) + */ + forceNoOffscreen?: boolean; + /** + * 是否开启当页面的'visibilityState'变为'hidden'的时候,自动暂停播放。 + */ + hiddenAutoPause?: boolean; + /** + * 是否有音频,如果设置`false`,则不对音频数据解码,提升性能。 + */ + hasAudio?: boolean; + /** + * 设置旋转角度,只支持,0(默认),180,270 三个值 + */ + rotate?: boolean; + /** + * 1. 当为`true`的时候:视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边。 等同于 `setScaleMode(1)` + * 2. 当为`false`的时候:视频画面完全填充canvas区域,画面会被拉伸。等同于 `setScaleMode(0)` + */ + isResize?: boolean; + /** + * 1. 当为`true`的时候:视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全。等同于 `setScaleMode(2)` + */ + isFullSize?: boolean; + /** + * 1. 当为`true`的时候:ws协议不检验是否以.flv为依据,进行协议解析。 + */ + isFlv?: boolean; + /** + * 是否开启控制台调试打 + */ + debug?: boolean; + /** + * 1. 设置超时时长, 单位秒 + * 2. 在连接成功之前(loading)和播放中途(heart),如果超过设定时长无数据返回,则回调timeout事件 + */ + timeout?: number; + /** + * 1. 设置超时时长, 单位秒 + * 2. 在连接成功之前,如果超过设定时长无数据返回,则回调timeout事件 + */ + heartTimeout?: number; + /** + * 1. 设置超时时长, 单位秒 + * 2. 在连接成功之前,如果超过设定时长无数据返回,则回调timeout事件 + */ + loadingTimeout?: number; + /** + * 是否支持屏幕的双击事件,触发全屏,取消全屏事件 + */ + supportDblclickFullscreen?: boolean; + /** + * 是否显示网 + */ + showBandwidth?: boolean; + /** + * 配置操作按钮 + */ + operateBtns?: { + /** 是否显示全屏按钮 */ + fullscreen?: boolean; + /** 是否显示截图按钮 */ + screenshot?: boolean; + /** 是否显示播放暂停按钮 */ + play?: boolean; + /** 是否显示声音按钮 */ + audio?: boolean; + /** 是否显示录制按 */ + record?: boolean; + }; + /** + * 开启屏幕常亮,在手机浏览器上, canvas标签渲染视频并不会像video标签那样保持屏幕常亮 + */ + keepScreenOn?: boolean; + /** + * 是否开启声音,默认是关闭声音播放的 + */ + isNotMute?: boolean; + /** + * 加载过程中文案 + */ + loadingText?: boolean; + /** + * 背景图片 + */ + background?: string; + /** + * 是否开启MediaSource硬解码 + * * 视频编码只支持H.264视频(Safari on iOS不支持) + * * 不支持 forceNoOffscreen 为 false (开启离屏渲染) + */ + useMSE?: boolean; + /** + * 是否开启Webcodecs硬解码 + * * 视频编码只支持H.264视频 (需在chrome 94版本以上,需要https或者localhost环境) + * * 支持 forceNoOffscreen 为 false (开启离屏渲染) + * */ + useWCS?: boolean; + /** + * 是否开启键盘快捷键 + * 目前支持的键盘快捷键有:esc -> 退出全屏;arrowUp -> 声音增加;arrowDown -> 声音减少; + */ + hotKey?: boolean; + /** + * 在使用MSE或者Webcodecs 播放H265的时候,是否自动降级到wasm模式。 + * 设置为false 则直接关闭播放,抛出Error 异常,设置为true 则会自动切换成wasm模式播放。 + */ + autoWasm?: boolean; + /** + * heartTimeout 心跳超时之后自动再播放,不再抛出异常,而直接重新播放视频地址。 + */ + heartTimeoutReplay?: boolean, + /** + * wasm解码报错之后,不再抛出异常,而是直接重新播放视频地址。 + */ + wasmDecodeErrorReplay?: boolean, + } +} + + +declare class Jessibuca { + + constructor(config?: Jessibuca.Config); + + /** + * 是否开启控制台调试打印 + @example + // 开启 + jessibuca.setDebug(true) + // 关闭 + jessibuca.setDebug(false) + */ + setDebug(flag: boolean): void; + + /** + * 静音 + @example + jessibuca.mute() + */ + mute(): void; + + /** + * 取消静音 + @example + jessibuca.cancelMute() + */ + cancelMute(): void; + + /** + * 留给上层用户操作来触发音频恢复的方法。 + * + * iPhone,chrome等要求自动播放时,音频必须静音,需要由一个真实的用户交互操作来恢复,不能使用代码。 + * + * https://developers.google.com/web/updates/2017/09/autoplay-policy-changes + */ + audioResume(): void; + + /** + * + * 设置超时时长, 单位秒 + * 在连接成功之前和播放中途,如果超过设定时长无数据返回,则回调timeout事件 + + @example + jessibuca.setTimeout(10) + + jessibuca.on('timeout',function(){ + // + }); + */ + setTimeout(): void; + + /** + * @param mode + * 0 视频画面完全填充canvas区域,画面会被拉伸 等同于参数 `isResize` 为false + * + * 1 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边 等同于参数 `isResize` 为true + * + * 2 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全 等同于参数 `isFullResize` 为true + @example + jessibuca.setScaleMode(0) + + jessibuca.setScaleMode(1) + + jessibuca.setScaleMode(2) + */ + setScaleMode(mode: number): void; + + /** + * 暂停播放 + * + * 可以在pause 之后,再调用 `play()`方法就继续播放之前的流。 + @example + jessibuca.pause().then(()=>{ + console.log('pause success') + + jessibuca.play().then(()=>{ + + }).catch((e)=>{ + + }) + + }).catch((e)=>{ + console.log('pause error',e); + }) + */ + pause(): Promise; + + /** + * 关闭视频,不释放底层资源 + @example + jessibuca.close(); + */ + close(): void; + + /** + * 关闭视频,释放底层资源 + @example + jessibuca.destroy() + */ + destroy(): void; + + /** + * 清理画布为黑色背景 + @example + jessibuca.clearView() + */ + clearView(): void; + + /** + * 播放视频 + @example + + jessibuca.play('url').then(()=>{ + console.log('play success') + }).catch((e)=>{ + console.log('play error',e) + }) + // + jessibuca.play() + */ + play(url?: string): Promise; + + /** + * 重新调整视图大小 + */ + resize(): void; + + /** + * 设置最大缓冲时长,单位秒,播放器会自动消除延迟。 + * + * 等同于 `videoBuffer` 参数。 + * + @example + // 设置 200ms 缓冲 + jessibuca.setBufferTime(0.2) + */ + setBufferTime(time: number): void; + + /** + * 设置旋转角度,只支持,0(默认) ,180,270 三个值。 + * + * > 可用于实现监控画面小窗和全屏效果,由于iOS没有全屏API,此方法可以模拟页面内全屏效果而且多端效果一致。 * + @example + jessibuca.setRotate(0) + + jessibuca.setRotate(90) + + jessibuca.setRotate(270) + */ + setRotate(deg: number): void; + + /** + * + * 设置音量大小,取值0 — 1 + * + * > 区别于 mute 和 cancelMute 方法,虽然设置setVolume(0) 也能达到 mute方法,但是mute 方法是不调用底层播放音频的,能提高性能。而setVolume(0)只是把声音设置为0 ,以达到效果。 + * @param volume 当为0时,完全无声;当为1时,最大音量,默认值 + @example + jessibuca.setVolume(0.2) + + jessibuca.setVolume(0) + + jessibuca.setVolume(1) + */ + setVolume(volume: number): void; + + /** + * 返回是否加载完毕 + @example + var result = jessibuca.hasLoaded() + console.log(result) // true + */ + hasLoaded(): boolean; + + /** + * 开启屏幕常亮,在手机浏览器上, canvas标签渲染视频并不会像video标签那样保持屏幕常亮。 + * H5目前在chrome\edge 84, android chrome 84及以上有原生亮屏API, 需要是https页面 + * 其余平台为模拟实现,此时为兼容实现,并不保证所有浏览器都支持 + @example + jessibuca.setKeepScreenOn() + */ + setKeepScreenOn(): boolean; + + /** + * 全屏(取消全屏)播放视频 + @example + jessibuca.setFullscreen(true) + // + jessibuca.setFullscreen(false) + */ + setFullscreen(flag: boolean): void; + + /** + * + * 截图,调用后弹出下载框保存截图 + * @param filename 可选参数, 保存的文件名, 默认 `时间戳` + * @param format 可选参数, 截图的格式,可选png或jpeg或者webp ,默认 `png` + * @param quality 可选参数, 当格式是jpeg或者webp时,压缩质量,取值0 ~ 1 ,默认 `0.92` + * @param type 可选参数, 可选download或者base64或者blob,默认`download` + + @example + + jessibuca.screenshot("test","png",0.5) + + const base64 = jessibuca.screenshot("test","png",0.5,'base64') + + const fileBlob = jessibuca.screenshot("test",'blob') + */ + screenshot(filename?: string, format?: string, quality?: number, type?: string); + + /** + * 开始录制。 + * @param fileName 可选,默认时间戳 + * @param fileType 可选,默认webm,支持webm 和mp4 格式 + + @example + jessibuca.startRecord('xxx','webm') + */ + startRecord(fileName: string, fileType: string) + + /** + * 暂停录制并下载。 + @example + jessibuca.stopRecordAndSave() + */ + stopRecordAndSave(); + + /** + * 返回是否正在播放中状态。 + @example + var result = jessibuca.isPlaying() + console.log(result) // true + */ + isPlaying(): boolean; + + /** + * 返回是否静音。 + @example + var result = jessibuca.isMute() + console.log(result) // true + */ + isMute(): boolean; + + /** + * 返回是否正在录制。 + @example + var result = jessibuca.isRecording() + console.log(result) // true + */ + isRecording(): boolean; + + + /** + * 监听 jessibuca 初始化事件 + * @example + * jessibuca.on("load",function(){console.log('load')}) + */ + on(event: 'load', callback: () => void): void; + + /** + * 视频播放持续时间,单位ms + * @example + * jessibuca.on('timeUpdate',function (ts) {console.log('timeUpdate',ts);}) + */ + on(event: 'timeUpdate', callback: () => void): void; + + /** + * 当解析出视频信息时回调,2个回调参数 + * @example + * jessibuca.on("videoInfo",function(data){console.log('width:',data.width,'height:',data.width)}) + */ + on(event: 'videoInfo', callback: (data: { + /** 视频宽 */ + width: number; + /** 视频高 */ + height: number; + }) => void): void; + + /** + * 当解析出音频信息时回调,2个回调参数 + * @example + * jessibuca.on("audioInfo",function(data){console.log('numOfChannels:',data.numOfChannels,'sampleRate',data.sampleRate)}) + */ + on(event: 'audioInfo', callback: (data: { + /** 声频通道 */ + numOfChannels: number; + /** 采样率 */ + sampleRate: number; + }) => void): void; + + /** + * 信息,包含错误信息 + * @example + * jessibuca.on("log",function(data){console.log('data:',data)}) + */ + on(event: 'log', callback: () => void): void; + + /** + * 错误信息 + * @example + * jessibuca.on("error",function(error){ + if(error === Jessibuca.ERROR.fetchError){ + // + } + else if(error === Jessibuca.ERROR.webcodecsH265NotSupport){ + // + } + console.log('error:',error) + }) + */ + on(event: 'error', callback: (err: Jessibuca.ERROR) => void): void; + + /** + * 当前网速, 单位KB 每秒1次, + * @example + * jessibuca.on("kBps",function(data){console.log('kBps:',data)}) + */ + on(event: 'kBps', callback: (value: number) => void): void; + + /** + * 渲染开始 + * @example + * jessibuca.on("start",function(){console.log('start render')}) + */ + on(event: 'start', callback: () => void): void; + + /** + * 当设定的超时时间内无数据返回,则回调 + * @example + * jessibuca.on("timeout",function(error){console.log('timeout:',error)}) + */ + on(event: 'timeout', callback: (error: Jessibuca.TIMEOUT) => void): void; + + /** + * 当play()的时候,如果没有数据返回,则回调 + * @example + * jessibuca.on("loadingTimeout",function(){console.log('timeout')}) + */ + on(event: 'loadingTimeout', callback: () => void): void; + + /** + * 当播放过程中,如果超过timeout之后没有数据渲染,则抛出异常。 + * @example + * jessibuca.on("delayTimeout",function(){console.log('timeout')}) + */ + on(event: 'delayTimeout', callback: () => void): void; + + /** + * 当前是否全屏 + * @example + * jessibuca.on("fullscreen",function(flag){console.log('is fullscreen',flag)}) + */ + on(event: 'fullscreen', callback: () => void): void; + + /** + * 触发播放事件 + * @example + * jessibuca.on("play",function(flag){console.log('play')}) + */ + on(event: 'play', callback: () => void): void; + + /** + * 触发暂停事件 + * @example + * jessibuca.on("pause",function(flag){console.log('pause')}) + */ + on(event: 'pause', callback: () => void): void; + + /** + * 触发声音事件,返回boolean值 + * @example + * jessibuca.on("mute",function(flag){console.log('is mute',flag)}) + */ + on(event: 'mute', callback: () => void): void; + + /** + * 流状态统计,流开始播放后回调,每秒1次。 + * @example + * jessibuca.on("stats",function(s){console.log("stats is",s)}) + */ + on(event: 'stats', callback: (stats: { + /** 当前缓冲区时长,单位毫秒 */ + buf: number; + /** 当前视频帧率 */ + fps: number; + /** 当前音频码率,单位bit */ + abps: number; + /** 当前视频码率,单位bit */ + vbps: number; + /** 当前视频帧pts,单位毫秒 */ + ts: number; + }) => void): void; + + /** + * 渲染性能统计,流开始播放后回调,每秒1次。 + * @param performance 0: 表示卡顿,1: 表示流畅,2: 表示非常流程 + * @example + * jessibuca.on("performance",function(performance){console.log("performance is",performance)}) + */ + on(event: 'performance', callback: (performance: 0 | 1 | 2) => void): void; + + /** + * 录制开始的事件 + + * @example + * jessibuca.on("recordStart",function(){console.log("record start")}) + */ + on(event: 'recordStart', callback: () => void): void; + + /** + * 录制结束的事件 + + * @example + * jessibuca.on("recordEnd",function(){console.log("record end")}) + */ + on(event: 'recordEnd', callback: () => void): void; + + /** + * 录制的时候,返回的录制时长,1s一次 + + * @example + * jessibuca.on("recordingTimestamp",function(timestamp){console.log("recordingTimestamp is",timestamp)}) + */ + on(event: 'recordingTimestamp', callback: (timestamp: number) => void): void; + + /** + * 监听调用play方法 经过 初始化-> 网络请求-> 解封装 -> 解码 -> 渲染 一系列过程的时间消耗 + * @param event + * @param callback + */ + on(event: 'playToRenderTimes', callback: (times: { + playInitStart: number, // 1 初始化 + playStart: number, // 2 初始化 + streamStart: number, // 3 网络请求 + streamResponse: number, // 4 网络请求 + demuxStart: number, // 5 解封装 + decodeStart: number, // 6 解码 + videoStart: number, // 7 渲染 + playTimestamp: number,// playStart- playInitStart + streamTimestamp: number,// streamStart - playStart + streamResponseTimestamp: number,// streamResponse - streamStart + demuxTimestamp: number, // demuxStart - streamResponse + decodeTimestamp: number, // decodeStart - demuxStart + videoTimestamp: number,// videoStart - decodeStart + allTimestamp: number // videoStart - playInitStart + }) => void): void + + /** + * 监听方法 + * + @example + + jessibuca.on("load",function(){console.log('load')}) + */ + on(event: string, callback: Function): void; + +} + +export default Jessibuca; diff --git a/web - 副本/client/screen/jessibuca.js b/web - 副本/client/screen/jessibuca.js new file mode 100644 index 0000000..2fef528 --- /dev/null +++ b/web - 副本/client/screen/jessibuca.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).jessibuca=t()}(this,(function(){"use strict";const e=0,t=1,i="flv",n="m7s",o={videoBuffer:1e3,isResize:!0,isFullResize:!1,isFlv:!1,debug:!1,loadingTimeout:10,heartTimeout:10,timeout:10,supportDblclickFullscreen:!1,showBandwidth:!1,keepScreenOn:!1,isNotMute:!1,hasAudio:!0,hasVideo:!0,operateBtns:{fullscreen:!1,screenshot:!1,play:!1,audio:!1,record:!1},hasControl:!1,loadingText:"",background:"",decoder:"decoder.js",url:"",rotate:0,forceNoOffscreen:!0,hiddenAutoPause:!1,protocol:t,demuxType:i,useWCS:!1,useMSE:!1,useOffscreen:!1},r="init",s="initVideo",a="render",A="playAudio",c="initAudio",d="audioCode",l="videoCode",u=1,h=2,f=8,p=9,g="init",m="decode",b="audioDecode",y="close",v={fullscreen:"fullscreen$2",webFullscreen:"webFullscreen",decoderWorkerInit:"decoderWorkerInit",play:"play",playing:"playing",pause:"pause",mute:"mute",load:"load",loading:"loading",videoInfo:"videoInfo",timeUpdate:"timeUpdate",audioInfo:"audioInfo",log:"log",error:"error",kBps:"kBps",timeout:"timeout",delayTimeout:"delayTimeout",loadingTimeout:"loadingTimeout",stats:"stats",performance:"performance",record:"record",recording:"recording",recordingTimestamp:"recordingTimestamp",recordStart:"recordStart",recordEnd:"recordEnd",recordCreateError:"recordCreateError",buffer:"buffer",videoFrame:"videoFrame",start:"start",metadata:"metadata",resize:"resize",streamEnd:"streamEnd",streamSuccess:"streamSuccess",streamMessage:"streamMessage",streamError:"streamError",volumechange:"volumechange",destroy:"destroy",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceBufferError:"mseSourceBufferError",mseSourceBufferBusy:"mseSourceBufferBusy",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio"},w={load:v.load,timeUpdate:v.timeUpdate,videoInfo:v.videoInfo,audioInfo:v.audioInfo,error:v.error,kBps:v.kBps,log:v.log,start:v.start,timeout:v.timeout,loadingTimeout:v.loadingTimeout,delayTimeout:v.delayTimeout,fullscreen:"fullscreen",play:v.play,pause:v.pause,mute:v.mute,stats:v.stats,performance:v.performance,recordingTimestamp:v.recordingTimestamp,recordStart:v.recordStart,recordEnd:v.recordEnd},E={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",wasmDecodeError:"wasmDecodeError"},S="notConnect",R="open",C="close",B="error",k={download:"download",base64:"base64",blob:"blob"},I={7:"H264(AVC)",12:"H265(HEVC)"},T=7,x=12,L={10:"AAC",7:"ALAW",8:"MULAW"},D=32,O=33,j=34,U=0,F=1,P=2,M="mp4",V="webm",Q="webcodecs",N="webgl",W="offscreen",G="key",H="delta",J='video/mp4; codecs="avc1.64002A"',q="ended",z="open",X="closed";class Y{constructor(e){this.log=function(t){if(e._opt.debug){for(var i=arguments.length,n=new Array(i>1?i-1:0),o=1;o1?i-1:0),o=1;o1?i-1:0),o=1;o3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,n)));e.addEventListener(t,i,n);const o=()=>e.removeEventListener(t,i,n);return this.destroys.push(o),o}destroy(){this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e()))}}var K="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function _(e,t){return e(t={exports:{}},t.exports),t.exports}var $=_((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},i=e.exports,n=function(){for(var e,i=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],n=0,o=i.length,r={};n0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),n=t[0].replace("data:","").replace(";base64","");let o=i.length,r=new Uint8Array(o);for(;o--;)r[o]=i.charCodeAt(o);return new File([r],"file",{type:n})}function ie(e,t){const i=document.createElement("a");i.download=t,i.href=URL.createObjectURL(e),i.click(),URL.revokeObjectURL(e)}function ne(){return(new Date).getTime()}function oe(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function re(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{re(e,i,t[i])})),e.style[t]=i,e}function se(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const n=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(n):n}function ae(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function Ae(e){let t=0,i=ae();return n=>{t+=n;const o=ae(),r=o-i;r>=1e3&&(e(t/r*1e3),i=o,t=0)}}function ce(e){if(null==e||""===e)return"0 KB/S";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/S"}function de(e){return null==e}function le(e){return!de(e)}$.isEnabled,(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();class ue{on(e,t,i){const n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const n=this;function o(){n.off(e,o);for(var r=arguments.length,s=new Array(r),a=0;a1?i-1:0),o=1;o{delete i[e]})),void delete this.e;const n=i[e],o=[];if(n&&t)for(let e=0,i=n.length;e{var t=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),i=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n"),n=e.createShader(e.VERTEX_SHADER);e.shaderSource(n,t),e.compileShader(n),e.getShaderParameter(n,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(n));var o=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(o,i),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(o));var r=e.createProgram();e.attachShader(r,n),e.attachShader(r,o),e.linkProgram(r),e.getProgramParameter(r,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(r)),e.useProgram(r);var s=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,s),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var a=e.getAttribLocation(r,"vertexPos");e.enableVertexAttribArray(a),e.vertexAttribPointer(a,2,e.FLOAT,!1,0,0);var A=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,A),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(r,"texturePos");function d(t,i){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(r,t),i),n}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var l=d("ySampler",0),u=d("uSampler",1),h=d("vSampler",2);return{render:function(t,i,n,o,r){e.viewport(0,0,t,i),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,l),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t,i,0,e.LUMINANCE,e.UNSIGNED_BYTE,n),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,u),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,h),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,r),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(r),e.deleteBuffer(s),e.deleteBuffer(A),e.deleteTexture(l),e.deleteTexture(u),e.deleteBuffer(h)}catch(e){}}}})(this.contextGl);this.contextGlRender=e.render,this.contextGlDestroy=e.destroy}_initContext2D(){this.context2D=this.$videoElement.getContext("2d")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=Q,this._initContext2D()):this._supportOffscreen()?(this.renderType=W,this._bindOffscreen()):(this.renderType=N,this._initContextGl())}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}render(e){switch(this.player.videoTimestamp=e.ts,this.renderType){case W:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case N:this.contextGlRender(this.$videoElement.width,this.$videoElement.height,e.output[0],e.output[1],e.output[2]);break;case Q:this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height)}}screenshot(e,t,i,n){e=e||ne(),n=n||k.download;const o={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let r=.92;!o[t]&&k[t]&&(n=t,t="png",i=void 0),"string"==typeof i&&(n=i,i=void 0),void 0!==i&&(r=Number(i));const s=this.$videoElement.toDataURL(o[t]||o.png,r),a=te(s);return n===k.base64?s:n===k.blob?a:void(n===k.download&&ie(a,e))}clearView(){switch(this.renderType){case W:(function(e,t){const i=document.createElement("canvas");return i.width=e,i.height=t,createImageBitmap(i,0,0,e,t)})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case N:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case Q:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}resize(){this.player.debug.log("canvasVideo","resize");const e=this.player._opt,t=this.player.width;let i=this.player.height;e.hasControl&&(i-=38);let n=this.$videoElement.width,o=this.$videoElement.height;const r=e.rotate;let s=(t-n)/2,a=(i-o)/2;270!==r&&90!==r||(n=this.$videoElement.height,o=this.$videoElement.width);const A=t/n,c=i/o;let d=A>c?c:A;e.isResize||A!==c&&(d=A+","+c),e.isFullResize&&(d=A>c?A:c);let l="scale("+d+")";r&&(l+=" rotate("+r+"deg)"),this.$videoElement.style.transform=l,this.$videoElement.style.left=s+"px",this.$videoElement.style.top=a+"px"}destroy(){this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.contextGlRender&&(this.contextGlDestroy&&this.contextGlDestroy(),this.contextGlDestroy=null,this.contextGlRender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.videoInfo={width:"",height:"",encType:"",encTypeCode:""},this.player.$container.removeChild(this.$videoElement),this.init=!1,this.off(),this.player.debug.log("CanvasVideoLoader","destroy")}}class pe extends he{constructor(e){super(),this.player=e;const t=document.createElement("video");t.muted=!0,t.style.position="absolute",t.style.top=0,t.style.left=0,e.$container.appendChild(t),this.$videoElement=t,this.videoInfo={width:"",height:"",encType:""},this.resize();const{proxy:i}=this.player.events;i(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay")})),i(this.$videoElement,"waiting",(()=>{this.player.emit(v.videoWaiting)})),i(this.$videoElement,"timeupdate",(e=>{})),this.player.debug.log("Video","init")}play(){this.$videoElement.play()}clearView(){}screenshot(e,t,i,n){e=e||ne(),n=n||k.download;let o=.92;!{png:"image/png",jpeg:"image/jpeg",webp:"image/webp"}[t]&&k[t]&&(n=t,t="png",i=void 0),"string"==typeof i&&(n=i,i=void 0),void 0!==i&&(o=Number(i));const r=this.$videoElement;let s=document.createElement("canvas");s.width=r.videoWidth,s.height=r.videoHeight;s.getContext("2d").drawImage(r,0,0,s.width,s.height);const a=s.toDataURL(k[t]||k.png,o),A=te(a);return n===k.base64?a:n===k.blob?A:void(n===k.download&&ie(A,e))}initCanvasViewSize(){this.resize()}resize(){this.$videoElement.width=this.player.width,this.$videoElement.height=this.player._opt.hasControl?this.player.height-38:this.player.height;const e=this.player._opt;let t="contain";const i=e.rotate;e.isResize||(t="fill"),e.isFullResize&&(t="none"),this.$videoElement.style.objectFit=t,this.$videoElement.style.transform="rotate("+i+"deg)"}destroy(){this.player.$container.removeChild(this.$videoElement),this.init=!1,this.off(),this.player.debug.log("Video","destroy")}}class ge{constructor(e){return new(ge.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE?pe:fe}}class me extends ue{constructor(e){super(),this.bufferList=[],this.player=e,this.scriptNode=null,this.hasInitScriptNode=!1,this.audioContextChannel=null,this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.gainNode=this.audioContext.createGain();const t=this.audioContext.createBufferSource();t.buffer=this.audioContext.createBuffer(1,1,22050),t.connect(this.audioContext.destination),t.noteOn?t.noteOn(0):t.start(0),this.audioBufferSourceNode=t,this.mediaStreamAudioDestinationNode=this.audioContext.createMediaStreamDestination(),this.audioEnabled(!0),this.gainNode.gain.value=0,this.playing=!1,this.audioSyncVideoOption={diff:null},this.audioInfo={encType:"",channels:"",sampleRate:""},this.init=!1,this.on(v.videoSyncAudio,(e=>{this.player.debug.log("AudioContext",`videoSyncAudio , audioTimestamp: ${e.audioTimestamp},videoTimestamp: ${e.videoTimestamp},diff:${e.diff}`),this.audioSyncVideoOption=e})),this.player.debug.log("AudioContext","init")}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=L[e.encTypeCode]),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(v.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value||this.isStateSuspended()}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}initScriptNode(){if(this.playing=!0,this.hasInitScriptNode)return;const e=this.audioInfo.channels,t=this.audioContext.createScriptProcessor(1024,0,e);t.onaudioprocess=t=>{const i=t.outputBuffer;if(this.bufferList.length&&this.playing){if(!this.player._opt.useWCS&&!this.player._opt.useMSE){if(this.audioSyncVideoOption.diff>200)return void this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}`);if(this.audioSyncVideoOption.diff<-200){this.player.debug.warn("AudioContext",`audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}`);let e=this.bufferList.shift();for(;e.ts-this.player.videoTimestamp<-200&&this.bufferList.length>0;)e=this.bufferList.shift();if(0===this.bufferList.length)return}}if(0===this.bufferList.length)return;const t=this.bufferList.shift();t&&t.ts&&(this.player.audioTimestamp=t.ts);for(let n=0;n20&&(this.player.debug.warn("AudioContext",`bufferList is large: ${this.bufferList.length}`),this.bufferList.length>50&&this.bufferList.shift())}pause(){this.audioSyncVideoOption={diff:null},this.playing=!1,this.clear()}resume(){this.playing=!0}destroy(){this.closeAudio(),this.audioContext.close(),this.audioContext=null,this.gainNode=null,this.init=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=ee,this.scriptNode=null),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.audioSyncVideoOption={diff:null},this.off(),this.player.debug.log("AudioContext","destroy")}}class be{constructor(e){return new(be.getLoaderFactory())(e)}static getLoaderFactory(){return me}}class ye extends ue{constructor(e){super(),this.player=e,this.playing=!1,this.abortController=new AbortController,this.streamRate=Ae((t=>{e.emit(v.kBps,(t/1024).toFixed(2))})),e.debug.log("FetchStream","init")}fetchStream(e){const{demux:t}=this.player;fetch(e,{signal:this.abortController.signal}).then((e=>{const i=e.body.getReader();this.emit(v.streamSuccess);const n=()=>{i.read().then((e=>{let{done:i,value:o}=e;i?t.close():(this.streamRate&&this.streamRate(o.byteLength),t.dispatch(o),n())})).catch((e=>{t.close(),this.emit(E.fetchError,e),this.player.emit(v.error,E.fetchError),this.abort()}))};n()})).catch((e=>{this.abort(),this.emit(E.fetchError,e),this.player.emit(v.error,E.fetchError)}))}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}destroy(){this.abort(),this.off(),this.streamRate=null,this.player.debug.log("FetchStream","destroy")}}class ve extends ue{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=S,this.wsUrl=null,this.streamRate=Ae((t=>{e.emit(v.kBps,(t/1024).toFixed(2))}))}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:n}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",i(this.socket,"open",(()=>{this.emit(v.streamSuccess),t.log("websocketLoader","socket open"),this.socketStatus=R})),i(this.socket,"message",(e=>{this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)})),i(this.socket,"close",(()=>{t.log("websocketLoader","socket close"),this.emit(v.streamEnd),this.socketStatus=C})),i(this.socket,"error",(e=>{t.log("websocketLoader","socket error"),this.emit(E.websocketError,e),this.player.emit(v.error,E.websocketError),this.socketStatus=B,n.close(),t.log("websocketLoader","socket error:",e)}))}_handleMessage(e){const{demux:t}=this.player;t.dispatch(e)}fetchStream(e){this.wsUrl=e,this._createWebSocket()}destroy(){this.socket&&(this.socket.close(),this.socket=null),this.socketStatus=S,this.streamRate=null,this.off(),this.player.debug.log("websocketLoader","destroy")}}class we{constructor(e){return new(we.getLoaderFactory(e._opt.protocol))(e)}static getLoaderFactory(i){return i===t?ye:i===e?ve:void 0}}var Ee=_((function(e){function t(e,o){if(!e)throw"First parameter is required.";o=new i(e,o=o||{type:"video"});var r=this;function s(t){t&&(o.initCallback=function(){t(),t=o.initCallback=null});var i=new n(e,o);(h=new i(e,o)).record(),u("recording"),o.disableLogs||console.log("Initialized recorderType:",h.constructor.name,"for output-type:",o.type)}function a(e){if(e=e||function(){},h){if("paused"===r.state)return r.resumeRecording(),void setTimeout((function(){a(e)}),1);"recording"===r.state||o.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',r.state),o.disableLogs||console.log("Stopped recording "+o.type+" stream."),"gif"!==o.type?h.stop(t):(h.stop(),t()),u("stopped")}else p();function t(t){if(h){Object.keys(h).forEach((function(e){"function"!=typeof h[e]&&(r[e]=h[e])}));var i=h.blob;if(!i){if(!t)throw"Recording failed.";h.blob=i=t}if(i&&!o.disableLogs&&console.log(i.type,"->",m(i.size)),e){var n;try{n=d.createObjectURL(i)}catch(e){}"function"==typeof e.call?e.call(r,n):e(n)}o.autoWriteToDisk&&c((function(e){var t={};t[o.type+"Blob"]=e,T.Store(t)}))}else"function"==typeof e.call?e.call(r,""):e("")}}function A(e){postMessage((new FileReaderSync).readAsDataURL(e))}function c(e,t){if(!e)throw"Pass a callback function over getDataURL.";var i=t?t.blob:(h||{}).blob;if(!i)return o.disableLogs||console.warn("Blob encoder did not finish its job yet."),void setTimeout((function(){c(e,t)}),1e3);if("undefined"==typeof Worker||navigator.mozGetUserMedia){var n=new FileReader;n.readAsDataURL(i),n.onload=function(t){e(t.target.result)}}else{var r=function(e){try{var t=d.createObjectURL(new Blob([e.toString(),"this.onmessage = function (eee) {"+e.name+"(eee.data);}"],{type:"application/javascript"})),i=new Worker(t);return d.revokeObjectURL(t),i}catch(e){}}(A);r.onmessage=function(t){e(t.data)},r.postMessage(i)}}function l(e){e=e||0,"paused"!==r.state?"stopped"!==r.state&&(e>=r.recordingDuration?a(r.onRecordingStopped):(e+=1e3,setTimeout((function(){l(e)}),1e3))):setTimeout((function(){l(e)}),1e3)}function u(e){r&&(r.state=e,"function"==typeof r.onStateChanged.call?r.onStateChanged.call(r,e):r.onStateChanged(e))}var h,f='It seems that recorder is destroyed or "startRecording" is not invoked for '+o.type+" recorder.";function p(){!0!==o.disableLogs&&console.warn(f)}var g={startRecording:function(t){return o.disableLogs||console.log("RecordRTC version: ",r.version),t&&(o=new i(e,t)),o.disableLogs||console.log("started recording "+o.type+" stream."),h?(h.clearRecordedData(),h.record(),u("recording"),r.recordingDuration&&l(),r):(s((function(){r.recordingDuration&&l()})),r)},stopRecording:a,pauseRecording:function(){h?"recording"===r.state?(u("paused"),h.pause(),o.disableLogs||console.log("Paused recording.")):o.disableLogs||console.warn("Unable to pause the recording. Recording state: ",r.state):p()},resumeRecording:function(){h?"paused"===r.state?(u("recording"),h.resume(),o.disableLogs||console.log("Resumed recording.")):o.disableLogs||console.warn("Unable to resume the recording. Recording state: ",r.state):p()},initRecorder:s,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return r.recordingDuration=e,r.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){r.onRecordingStopped=e}}},clearRecordedData:function(){h?(h.clearRecordedData(),o.disableLogs||console.log("Cleared old recorded data.")):p()},getBlob:function(){if(h)return h.blob;p()},getDataURL:c,toURL:function(){if(h)return d.createObjectURL(h.blob);p()},getInternalRecorder:function(){return h},save:function(e){h?b(h.blob,e):p()},getFromDisk:function(e){h?t.getFromDisk(o.type,e):p()},setAdvertisementArray:function(e){o.advertisement=[];for(var t=e.length,i=0;i-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),f=!u&&!l&&!!navigator.webkitGetUserMedia||y()||-1!==navigator.userAgent.toLowerCase().indexOf("chrome/"),p=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);p&&!f&&-1!==navigator.userAgent.indexOf("CriOS")&&(p=!1,f=!0);var g=window.MediaStream;function m(e){if(0===e)return"0 Bytes";var t=parseInt(Math.floor(Math.log(e)/Math.log(1e3)),10);return(e/Math.pow(1e3,t)).toPrecision(3)+" "+["Bytes","KB","MB","GB","TB"][t]}function b(e,t){if(!e)throw"Blob object is required.";if(!e.type)try{e.type="video/webm"}catch(e){}var i=(e.type||"video/webm").split("/")[1];if(-1!==i.indexOf(";")&&(i=i.split(";")[0]),t&&-1!==t.indexOf(".")){var n=t.split(".");t=n[0],i=n[1]}var o=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,o);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,o);var r=document.createElement("a");r.href=d.createObjectURL(e),r.download=o,r.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(r),"function"==typeof r.click?r.click():(r.target="_blank",r.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),d.revokeObjectURL(r.href)}function y(){return"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0)}function v(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function w(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}void 0===g&&"undefined"!=typeof webkitMediaStream&&(g=webkitMediaStream),void 0!==g&&void 0===g.prototype.stop&&(g.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),t.invokeSaveAsDialog=b,t.getTracks=v,t.getSeekableBlob=function(e,t){if("undefined"==typeof EBML)throw new Error("Please link: https://www.webrtc-experiment.com/EBML.js");var i=new EBML.Reader,n=new EBML.Decoder,o=EBML.tools,r=new FileReader;r.onload=function(e){n.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var r=o.makeMetadataSeekable(i.metadatas,i.duration,i.cues),s=this.result.slice(i.metadataSize),a=new Blob([r,s],{type:"video/webm"});t(a)},r.readAsArrayBuffer(e)},t.bytesToSize=m,t.isElectron=y;var E={};function S(){if(h||p||l)return!0;var e,t,i=navigator.userAgent,n=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return(f||u)&&(e=i.indexOf("Chrome"),n=i.substring(e+7)),-1!==(t=n.indexOf(";"))&&(n=n.substring(0,t)),-1!==(t=n.indexOf(" "))&&(n=n.substring(0,t)),o=parseInt(""+n,10),isNaN(o)&&(n=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),o>=49}function R(e,t){var i=this;if(void 0===e)throw'First argument "MediaStream" is required.';if("undefined"==typeof MediaRecorder)throw"Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.";if("audio"===(t=t||{mimeType:"video/webm"}).type){var n;if(v(e,"video").length&&v(e,"audio").length)navigator.mozGetUserMedia?(n=new g).addTrack(v(e,"audio")[0]):n=new g(v(e,"audio")),e=n;t.mimeType&&-1!==t.mimeType.toString().toLowerCase().indexOf("audio")||(t.mimeType=f?"audio/webm":"audio/ogg"),t.mimeType&&"audio/ogg"!==t.mimeType.toString().toLowerCase()&&navigator.mozGetUserMedia&&(t.mimeType="audio/ogg")}var o,r=[];function s(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function a(e){return o&&o.mimeType?o.mimeType:e.mimeType||"video/webm"}function A(){r=[],o=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return r},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],c=[],r=[];var n=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",n),o&&(o=null),f&&!S()&&(n="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&n.mimeType&&(MediaRecorder.isTypeSupported(n.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",n.mimeType),n.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{o=new MediaRecorder(e,n),t.mimeType=n.mimeType}catch(t){o=new MediaRecorder(e)}n.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in o&&!1===o.canRecordMimeType(n.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",n.mimeType)),o.ondataavailable=function(e){if(e.data&&c.push("ondataavailable: "+m(e.data.size)),"number"!=typeof t.timeSlice)!e.data||!e.data.size||e.data.size<100||i.blob?i.recordingCallback&&(i.recordingCallback(new Blob([],{type:a(n)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:a(n)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(r.push(e.data),s(),"function"==typeof t.ondataavailable)){var o=t.getNativeBlob?e.data:new Blob([e.data],{type:a(n)});t.ondataavailable(o)}},o.onstart=function(){c.push("started")},o.onpause=function(){c.push("paused")},o.onresume=function(){c.push("resumed")},o.onstop=function(){c.push("stopped")},o.onerror=function(e){e&&(e.name||(e.name="UnknownError"),c.push("error: "+e),t.disableLogs||(-1!==e.name.toString().toLowerCase().indexOf("invalidstate")?console.error("The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.",e):-1!==e.name.toString().toLowerCase().indexOf("notsupported")?console.error("MIME type (",n.mimeType,") is not supported.",e):-1!==e.name.toString().toLowerCase().indexOf("security")?console.error("MediaRecorder security error",e):"OutOfMemory"===e.name?console.error("The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"IllegalStreamModification"===e.name?console.error("A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"OtherRecordingError"===e.name?console.error("Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"GenericError"===e.name?console.error("The UA cannot provide the codec or recording option that has been requested.",e):console.error("MediaRecorder Error",e)),function(e){if(!i.manuallyStopped&&o&&"inactive"===o.state)return delete t.timeslice,void o.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==o.state&&"stopped"!==o.state&&o.stop())},"number"==typeof t.timeSlice?(s(),o.start(t.timeSlice)):o.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,o&&(this.recordingCallback=e,"recording"===o.state&&o.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(r,{type:a(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){o&&"recording"===o.state&&o.pause()},this.resume=function(){o&&"paused"===o.state&&o.resume()},this.clearRecordedData=function(){o&&"recording"===o.state&&i.stop(A),A()},this.getInternalRecorder=function(){return o},this.blob=null,this.getState=function(){return o&&o.state||"inactive"};var c=[];this.getAllStates=function(){return c},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function n(){if(o&&!1!==t.checkForInactiveTracks)return!1===function(){if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}()?(t.disableLogs||console.log("MediaStream seems stopped."),void i.stop()):void setTimeout(n,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function C(e,i){if(!v(e,"audio").length)throw"Your stream has no audio tracks.";var n,o=this,r=[],s=[],a=!1,A=0,c=2,l=(i=i||{}).desiredSampRate;function u(){if(!1===i.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function h(e,t){function i(e,t){var i,n=e.numberOfAudioChannels,o=e.leftBuffers.slice(0),r=e.rightBuffers.slice(0),s=e.sampleRate,a=e.internalInterleavedLength,A=e.desiredSampRate;function c(e,t,i){var n=Math.round(e.length*(t/i)),o=[],r=Number((e.length-1)/(n-1));o[0]=e[0];for(var s=1;s96e3)&&(i.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),i.disableLogs||i.desiredSampRate&&console.log("Desired sample-rate: "+i.desiredSampRate);var y=!1;function w(){r=[],s=[],A=0,S=!1,a=!1,y=!1,f=null,o.leftchannel=r,o.rightchannel=s,o.numberOfAudioChannels=c,o.desiredSampRate=l,o.sampleRate=b,o.recordingLength=A,R={left:[],right:[],recordingLength:0}}function E(){n&&(n.onaudioprocess=null,n.disconnect(),n=null),p&&(p.disconnect(),p=null),w()}this.pause=function(){y=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!a)return i.disableLogs||console.log("Seems recording has been restarted."),void this.record();y=!1},this.clearRecordedData=function(){i.checkForInactiveTracks=!1,a&&this.stop(E),E()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var S=!1;n.onaudioprocess=function(e){if(!y)if(!1===u()&&(i.disableLogs||console.log("MediaStream seems stopped."),n.disconnect(),a=!1),a){S||(S=!0,i.onAudioProcessStarted&&i.onAudioProcessStarted(),i.initCallback&&i.initCallback());var t=e.inputBuffer.getChannelData(0),d=new Float32Array(t);if(r.push(d),2===c){var l=e.inputBuffer.getChannelData(1),h=new Float32Array(l);s.push(h)}A+=m,o.recordingLength=A,void 0!==i.timeSlice&&(R.recordingLength+=m,R.left.push(d),2===c&&R.right.push(h))}else p&&(p.disconnect(),p=null)},f.createMediaStreamDestination?n.connect(f.createMediaStreamDestination()):n.connect(f.destination),this.leftchannel=r,this.rightchannel=s,this.numberOfAudioChannels=c,this.desiredSampRate=l,this.sampleRate=b,o.recordingLength=A;var R={left:[],right:[],recordingLength:0};function C(){a&&"function"==typeof i.ondataavailable&&void 0!==i.timeSlice&&(R.left.length?(h({desiredSampRate:l,sampleRate:b,numberOfAudioChannels:c,internalInterleavedLength:R.recordingLength,leftBuffers:R.left,rightBuffers:1===c?[]:R.right},(function(e,t){var n=new Blob([t],{type:"audio/wav"});i.ondataavailable(n),setTimeout(C,i.timeSlice)})),R={left:[],right:[],recordingLength:0}):setTimeout(C,i.timeSlice))}}function B(e,t){if("undefined"==typeof html2canvas)throw"Please link: https://www.webrtc-experiment.com/screenshot.js";(t=t||{}).frameInterval||(t.frameInterval=10);var i=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach((function(e){e in document.createElement("canvas")&&(i=!0)}));var n,o,r,s=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),a=50,A=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(s&&A&&A[2]&&(a=parseInt(A[2],10)),s&&a<52&&(i=!1),t.useWhammyRecorder&&(i=!1),i)if(t.disableLogs||console.log("Your browser supports both MediRecorder API and canvas.captureStream!"),e instanceof HTMLCanvasElement)n=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";n=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(r=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in n?e=n.captureStream(25):"mozCaptureStream"in n?e=n.mozCaptureStream(25):"webkitCaptureStream"in n&&(e=n.webkitCaptureStream(25));try{var s=new g;s.addTrack(v(e,"video")[0]),e=s}catch(e){}if(!e)throw"captureStream API are NOT available.";(o=new R(e,{mimeType:t.mimeType||"video/webm"})).record()}else h.frames=[],u=(new Date).getTime(),l();t.initCallback&&t.initCallback()},this.getWebPImages=function(i){if("canvas"===e.nodeName.toLowerCase()){var n=h.frames.length;h.frames.forEach((function(e,i){var o=n-i;t.disableLogs||console.log(o+"/"+n+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(o,n);var r=e.image.toDataURL("image/webp",1);h.frames[i].image=r})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){r=!1;var n=this;i&&o?o.stop(e):this.getWebPImages((function(){h.compile((function(i){t.disableLogs||console.log("Recording finished!"),n.blob=i,n.blob.forEach&&(n.blob=new Blob([],{type:"video/webm"})),e&&e(n.blob),h.frames=[]}))}))};var c=!1;function d(){h.frames=[],r=!1,c=!1}function l(){if(c)return u=(new Date).getTime(),setTimeout(l,500);if("canvas"===e.nodeName.toLowerCase()){var i=(new Date).getTime()-u;return u=(new Date).getTime(),h.frames.push({image:(n=document.createElement("canvas"),o=n.getContext("2d"),n.width=e.width,n.height=e.height,o.drawImage(e,0,0),n),duration:i}),void(r&&setTimeout(l,t.frameInterval))}var n,o;html2canvas(e,{grabMouse:void 0===t.showMousePointer||t.showMousePointer,onrendered:function(e){var i=(new Date).getTime()-u;if(!i)return setTimeout(l,t.frameInterval);u=(new Date).getTime(),h.frames.push({image:e.toDataURL("image/webp",1),duration:i}),r&&setTimeout(l,t.frameInterval)}})}this.pause=function(){c=!0,o instanceof R&&o.pause()},this.resume=function(){c=!1,o instanceof R?o.resume():r||this.record()},this.clearRecordedData=function(){r&&this.stop(d),d()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),h=new I.Video(100)}function k(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-A;return t?r?(A=(new Date).getTime(),setTimeout(i,100)):(A=(new Date).getTime(),a.paused&&a.play(),l.drawImage(a,0,0,d.width,d.height),c.frames.push({duration:t,image:d.toDataURL("image/webp")}),void(o||setTimeout(i,e,e))):setTimeout(i,e,e)}function n(e,t,i,n,o){var r=document.createElement("canvas");r.width=d.width,r.height=d.height;var s,a,A,c=r.getContext("2d"),l=[],u=-1===t,h=t&&t>0&&t<=e.length?t:e.length,f=0,p=0,g=0,m=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),b=i&&i>=0&&i<=1?i:0,y=n&&n>=0&&n<=1?n:0,v=!1;a=-1,A=(s={length:h,functionToLoop:function(t,i){var n,o,r,s=function(){!v&&r-n<=r*y||(u&&(v=!0),l.push(e[i])),t()};if(v)s();else{var a=new Image;a.onload=function(){c.drawImage(a,0,0,d.width,d.height);var e=c.getImageData(0,0,d.width,d.height);n=0,o=e.data.length,r=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({discardable:0,frame:e.data.slice(4),invisible:0,keyframe:1,lacing:0,trackNum:1,timecode:Math.round(t)});return t+=e.duration,{data:i,id:163}})))}function i(e){for(var t=[];e>0;)t.push(255&e),e>>=8;return new Uint8Array(t.reverse())}function n(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*r[0].width:r[0].width;var a=1;3!==e&&4!==e||(a=2),5!==e&&6!==e||(a=3),7!==e&&8!==e||(a=4),9!==e&&10!==e||(a=5),o.height=r[0].height*a}else o.width=s.width||360,o.height=s.height||240;t&&t instanceof HTMLVideoElement&&u(t),r.forEach((function(e,t){u(e,t)})),setTimeout(l,s.frameInterval)}}function u(e,t){if(!n){var i=0,o=0,s=e.width,a=e.height;1===t&&(i=e.width),2===t&&(o=e.height),3===t&&(i=e.width,o=e.height),4===t&&(o=2*e.height),5===t&&(i=e.width,o=2*e.height),6===t&&(o=3*e.height),7===t&&(i=e.width,o=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(o=e.stream.top),void 0!==e.stream.width&&(s=e.stream.width),void 0!==e.stream.height&&(a=e.stream.height),r.drawImage(e,i,o,s,a),"function"==typeof e.stream.onRender&&e.stream.onRender(r,i,o,s,a,t)}}function h(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||s.width||360,i.height=e.height||s.height||240,i.play(),i}function f(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=h(e);t.stream=e,i.push(t)}}))}void 0!==a?d.AudioContext=a:"undefined"!=typeof webkitAudioContext&&(d.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){l()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var n=new c;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var o=h(t);o.stream=t,i.push(o),n.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var r=s.audioContext.createMediaStreamSource(t);s.audioDestination=s.audioContext.createMediaStreamDestination(),r.connect(s.audioDestination),n.addTrack(s.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(n)}))},this.releaseStreams=function(){i=[],n=!0,s.gainNode&&(s.gainNode.disconnect(),s.gainNode=null),s.audioSources.length&&(s.audioSources.forEach((function(e){e.disconnect()})),s.audioSources=[]),s.audioDestination&&(s.audioDestination.disconnect(),s.audioDestination=null),s.audioContext&&s.audioContext.close(),s.audioContext=null,r.clearRect(0,0,o.width,o.height),o.stream&&(o.stream.stop(),o.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),f(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){n=!1;var t=function(){var e;f(),"captureStream"in o?e=o.captureStream():"mozCaptureStream"in o?e=o.mozCaptureStream():s.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new c;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),o.stream=t,t}(),i=function(){d.AudioContextConstructor||(d.AudioContextConstructor=new d.AudioContext);s.audioContext=d.AudioContextConstructor,s.audioSources=[],!0===s.useGainNode&&(s.gainNode=s.audioContext.createGain(),s.gainNode.connect(s.audioContext.destination),s.gainNode.gain.value=0);var t=0;if(e.forEach((function(e){if(e.getTracks().filter((function(e){return"audio"===e.kind})).length){t++;var i=s.audioContext.createMediaStreamSource(e);!0===s.useGainNode&&i.connect(s.gainNode),s.audioSources.push(i)}})),!t)return;return s.audioDestination=s.audioContext.createMediaStreamDestination(),s.audioSources.forEach((function(e){e.connect(s.audioDestination)})),s.audioDestination.stream}();return i&&i.getTracks().filter((function(e){return"audio"===e.kind})).forEach((function(e){t.addTrack(e)})),e.forEach((function(e){e.fullcanvas})),t}}function D(e,t){e=e||[];var i,n,o=this;(t=t||{elementClass:"multi-streams-mixer",mimeType:"video/webm",video:{width:360,height:240}}).frameInterval||(t.frameInterval=10),t.video||(t.video={}),t.video.width||(t.video.width=360),t.video.height||(t.video.height=240),this.record=function(){var o;i=new L(e,t.elementClass||"multi-streams-mixer"),(o=[],e.forEach((function(e){v(e,"video").forEach((function(e){o.push(e)}))})),o).length&&(i.frameInterval=t.frameInterval||10,i.width=t.video.width||360,i.height=t.video.height||240,i.startDrawingFrames()),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()),(n=new R(i.getMixedStream(),t)).record()},this.stop=function(e){n&&n.stop((function(t){o.blob=t,e(t),o.clearRecordedData()}))},this.pause=function(){n&&n.pause()},this.resume=function(){n&&n.resume()},this.clearRecordedData=function(){n&&(n.clearRecordedData(),n=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(o){if(!o)throw"First parameter is required.";o instanceof Array||(o=[o]),e.concat(o),n&&i&&(i.appendStreams(o),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()))},this.resetVideoStreams=function(e){i&&(!e||e instanceof Array||(e=[e]),i.resetVideoStreams(e))},this.getMixer=function(){return i},this.name="MultiStreamRecorder",this.toString=function(){return this.name}}function O(e,t){var i,n,o;function r(){return new ReadableStream({start:function(n){var o=document.createElement("canvas"),r=document.createElement("video"),s=!0;r.srcObject=e,r.muted=!0,r.height=t.height,r.width=t.width,r.volume=0,r.onplaying=function(){o.width=t.width,o.height=t.height;var e=o.getContext("2d"),a=1e3/t.frameRate,A=setInterval((function(){if(i&&(clearInterval(A),n.close()),s&&(s=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(r,0,0),"closed"!==n._controlledReadableStream.state)try{n.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),a)},r.play()}})}function s(e,A){if(!t.workerPath&&!A)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){s(e,t)}))}));if(!t.workerPath&&A instanceof ArrayBuffer){var c=new Blob([A],{type:"text/javascript"});t.workerPath=d.createObjectURL(c)}t.workerPath||console.error("workerPath parameter is missing."),(n=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),n.addEventListener("message",(function(e){"READY"===e.data?(n.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),r().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):n.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(o||a.push(e.data))}))}"undefined"!=typeof ReadableStream&&"undefined"!=typeof WritableStream||console.error("Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"),(t=t||{}).width=t.width||640,t.height=t.height||480,t.frameRate=t.frameRate||30,t.bitrate=t.bitrate||1200,t.realtime=t.realtime||!0,this.record=function(){a=[],o=!1,this.blob=null,s(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){o=!0},this.resume=function(){o=!1};var a=[];this.stop=function(e){i=!0;var t=this;!function(e){n?(n.addEventListener("message",(function(t){null===t.data&&(n.terminate(),n=null,e&&e())})),n.postMessage(null)):e&&e()}((function(){t.blob=new Blob(a,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){a=[],o=!1,this.blob=null},this.blob=null}t.DiskStorage=T,t.GifRecorder=x,t.MultiStreamRecorder=D,t.RecordRTCPromisesHandler=function(e,i){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var n=this;n.recordRTC=new t(e,i),this.startRecording=function(){return new Promise((function(e,t){try{n.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{n.recordRTC.stopRecording((function(i){n.blob=n.recordRTC.getBlob(),n.blob&&n.blob.size?e(i):t("Empty blob.",n.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{n.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{n.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{n.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(n.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(n.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(n.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(n.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(n.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"},t.WebAssemblyRecorder=O}));class Se extends ue{constructor(e){super(),this.player=e,this.fileName="",this.fileType=V,this.isRecording=!1,this.recordingTimestamp=0,this.recordingInterval=null,e.debug.log("Recorder","init")}setFileName(e,t){this.fileName=e,M!==t&&V!==t||(this.fileType=t)}get recording(){return this.isRecording}get recordTime(){return this.recordingTimestamp}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",onTimeStamp:t=>{e.log("Recorder","record timestamp :"+t)},disableLogs:!this.player._opt.debug};try{const e=this.player.video.$videoElement.captureStream(25),i=this.player.audio.mediaStreamAudioDestinationNode.stream;e.addTrack(i.getAudioTracks()[0]),this.recorder=Ee(e,t)}catch(t){e.error("Recorder",t),this.emit(v.recordCreateError)}this.recorder&&(this.isRecording=!0,this.emit(v.recording,!0),this.recorder.startRecording(),e.log("Recorder","start recording"),this.player.emit(v.recordStart),this.recordingInterval=window.setInterval((()=>{this.recordingTimestamp+=1,this.player.emit(v.recordingTimestamp,this.recordingTimestamp)}),1e3))}stopRecordAndSave(){this.recorder&&this.isRecording&&this.recorder.stopRecording((()=>{this.player.debug.log("Recorder","stop recording"),this.player.emit(v.recordEnd),function(e,t,i){const n=window.URL.createObjectURL(e),o=document.createElement("a");o.href=n,o.download=(t||ne())+"."+(i||FILE_SUFFIX.webm),o.click(),window.URL.revokeObjectURL(n)}(this.recorder.getBlob(),this.fileName,this.fileType),this._reset(),this.emit(v.recording,!1)}))}_reset(){this.isRecording=!1,this.recordingTimestamp=0,this.recorder&&(this.recorder.destroy(),this.recorder=null),this.fileName=null,this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}destroy(){this._reset(),this.player.debug.log("Recorder","destroy"),this.player=null}}class Re{constructor(e){return new(Re.getLoaderFactory())(e)}static getLoaderFactory(){return Se}}class Ce{constructor(e){this.player=e,this.decoderWorker=new Worker(e._opt.decoder),this._initDecoderWorker(),e.debug.log("decoderWorker","init")}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onmessage=t=>{const i=t.data;switch(i.cmd){case r:e.log("decoderWorker","onmessage:",r),this.player.loaded||this.player.emit(v.load),this.player.emit(v.decoderWorkerInit),this._initWork();break;case l:e.log("decoderWorker","onmessage:",l,i.code),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case d:e.log("decoderWorker","onmessage:",d,i.code),this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case s:e.log("decoderWorker","onmessage:",s,`width:${i.w},height:${i.h}`),this.player.video.updateVideoInfo({width:i.w,height:i.h}),this.player.video.initCanvasViewSize();break;case c:e.log("decoderWorker","onmessage:",c,`channels:${i.channels},sampleRate:${i.sampleRate}`),this.player.audio.updateAudioInfo(i),this.player.audio.initScriptNode(i);break;case a:this.player.handleRender(),this.player.video.render(i),this.player.emit(v.timeUpdate,i.ts),this.player.updateStats({fps:!0,ts:i.ts,buf:i.delay});break;case A:this.player.playing&&this.player.audio.play(i.buffer,i.ts);break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){this.decoderWorker.postMessage({cmd:g,opt:JSON.stringify(this.player._opt),sampleRate:this.player.audio.audioContext.sampleRate})}decodeVideo(e,t,i){const n={type:h,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:m,buffer:e,options:n},[e.buffer])}decodeAudio(e,t){this.player._opt.useWCS&&!this.player._opt.useOffscreen||this.player._opt.useMSE?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t)}_decodeAudio(e,t){const i={type:u,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:m,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:b,buffer:e,ts:Math.max(t,0)},[e.buffer])}destroy(){this.player.debug.log("decoderWorker","destroy"),this.decoderWorker.postMessage({cmd:y}),this.decoderWorker.terminate(),this.decoderWorker=null,this.player=null}}class Be extends ue{constructor(e){super(),this.player=e,this.stopId=null,this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.initInterval()}getDelay(e){return e?(this.firstTimestamp?e&&(this.delay=Date.now()-this.startTimestamp-(e-this.firstTimestamp)):(this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1),this.delay):-1}initInterval(){const e=this.player._opt.videoBuffer;this.player.debug.log("common dumex","init Interval");let t=()=>{let t;if(this.bufferList.length)if(this.dropping){for(t=this.bufferList.shift();!t.isIFrame&&this.bufferList.length;)t=this.bufferList.shift();t.isIFrame&&(this.dropping=!1,this._doDecoderDecode(t))}else if(t=this.bufferList[0],-1===this.getDelay(t.ts))this.bufferList.shift(),this._doDecoderDecode(t);else if(this.delay>e+1e3)this.dropping=!0;else for(;this.bufferList.length&&(t=this.bufferList[0],this.getDelay(t.ts)>e);)this.bufferList.shift(),this._doDecoderDecode(t)};t(),this.stopId=setInterval(t,10)}_doDecode(e,t,i,n){const o=this.player,{decoderWorker:r}=o;let s={ts:i,type:t,isIFrame:!1};o._opt.useWCS&&!o._opt.useOffscreen||o._opt.useMSE?(t===h&&(s.isIFrame=n),this.pushBuffer(e,s)):t===h?r.decodeVideo(e,i,n):t===u&&r.decodeAudio(e,i)}_doDecoderDecode(e){const t=this.player,{decoderWorker:i,webcodecsDecoder:n,mseDecoder:o}=t;e.type===u?i.decodeAudio(e.payload,e.ts):e.type===h&&(t._opt.useWCS&&!t._opt.useOffscreen?n.decodeVideo(e.payload,e.ts,e.isIFrame):t._opt.useMSE&&o.decodeVideo(e.payload,e.ts,e.isIFrame))}pushBuffer(e,t){t.type===u?this.bufferList.push({ts:t.ts,payload:e,type:u}):t.type===h&&this.bufferList.push({ts:t.ts,payload:e,type:h,isIFrame:t.isIFrame})}close(){}destroy(){this.stopId&&(clearInterval(this.stopId),this.stopId=null),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.off()}}class ke extends Be{constructor(e){super(e),this.input=this._inputFlv(),this.flvDemux=this.dispatchFlvData(this.input),e.debug.log("FlvDemux","init")}dispatch(e){this.flvDemux(e)}*_inputFlv(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),n=this.player;for(;;){t[3]=0;const e=yield 15,o=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const r=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8];let s=i[0];16777215===s&&(t[3]=e[11],s=i[0]);const a=yield r;switch(o){case f:n._opt.hasAudio&&(n.updateStats({abps:a.byteLength}),a.byteLength>0&&this._doDecode(a,u,s));break;case p:if(n._opt.hasVideo){n.updateStats({vbps:a.byteLength});const e=a[0]>>4==1;a.byteLength>0&&this._doDecode(a,h,s,e)}}}}dispatchFlvData(e){let t=e.next(),i=null;return n=>{let o=new Uint8Array(n);if(i){let e=new Uint8Array(i.length+o.length);e.set(i),e.set(o,i.length),o=e,i=null}for(;o.length>=t.value;){let i=o.slice(t.value);t=e.next(o.slice(0,t.value)),o=i}o.length>0&&(i=o)}}close(){this.input&&this.input.return(null)}destroy(){super.destroy(),this.input=null,this.flvDemux=null,this.player.debug.log("FlvDemux","destroy")}}class Ie extends Be{constructor(e){super(e),e.debug.log("M7sDemux","init")}dispatch(e){const t=this.player,i=new DataView(e),n=i.getUint8(0),o=i.getUint32(1,!1);switch(n){case u:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,n,o)}break;case h:if(t._opt.hasVideo&&i.byteLength>5){const r=new Uint8Array(e,5),s=i.getUint8(5)>>4==1;t.updateStats({vbps:r.byteLength}),r.byteLength>0&&this._doDecode(r,n,o,s)}}}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy")}}class Te{constructor(e){return new(Te.getLoaderFactory(e._opt.demuxType))(e)}static getLoaderFactory(e){return e===n?Ie:e===i?ke:void 0}}class xe extends ue{constructor(e){super(),this.player=e,this.hasInit=!1,this.isInitInfo=!1,this.decoder=null,this.initDecoder(),e.debug.log("Webcodecs","init")}initDecoder(){const e=this;this.decoder=new VideoDecoder({output(t){e.handleDecode(t)},error(t){e.handleError(t)}})}handleDecode(e){this.isInitInfo||(this.player.video.updateVideoInfo({width:e.codedWidth,height:e.codedHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.handleRender(),this.player.video.render({videoFrame:e}),this.player.updateStats({fps:!0,ts:0,buf:this.player.demux.delay}),setTimeout((function(){e.close?e.close():e.destroy()}),100)}handleError(e){this.player.debug.log("Webcodecs","VideoDecoder handleError",e)}decodeVideo(e,t,i){if(this.hasInit){const n=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?G:H});this.decoder.decode(n)}else if(i&&0===e[1]){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===x)return void this.emit(E.webcodecsH265NotSupport);const i=function(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let n=t[e].toString(16);n.length<2&&(n="0"+n),i+=n}return{codec:i,description:e}}(e.slice(5));this.decoder.configure(i),this.hasInit=!0}}destroy(){this.decoder.close(),this.decoder=null,this.hasInit=!1,this.isInitInfo=!1,this.off(),this.player.debug.log("Webcodecs","destroy"),this.player=null}}const Le={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"加载",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制"};var De=Object.keys(Le).reduce(((e,t)=>(e[t]=`\n \n ${Le[t]?`${Le[t]}`:""}\n`,e)),{}),Oe=(e,t)=>{const{events:{proxy:i}}=e,n=document.createElement("object");n.setAttribute("aria-hidden","true"),n.setAttribute("tabindex",-1),n.type="text/html",n.data="about:blank",re(n,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let o=e.width,r=e.height;i(n,"load",(()=>{i(n.contentDocument.defaultView,"resize",(()=>{e.width===o&&e.height===r||(o=e.width,r=e.height,e.emit(v.resize))}))})),e.$container.appendChild(n),e.on(v.destroy,(()=>{e.$container.removeChild(n)})),e.on(v.volumechange,(()=>{!function(e){if(0===e)re(t.$volumeOn,"display","none"),re(t.$volumeOff,"display","flex"),re(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=se(t.$volumePanel,"height")||60,n=se(t.$volumeHandle,"height"),o=i-(i-n)*e-n;re(t.$volumeHandle,"top",`${o}px`),re(t.$volumeOn,"display","flex"),re(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(v.loading,(e=>{re(t.$loading,"display",e?"flex":"none"),re(t.$poster,"display","none"),e&&re(t.$playBig,"display","none")}));try{const i=()=>{re(t.$fullscreenExit,"display",e.fullscreen?"flex":"none"),re(t.$fullscreen,"display",e.fullscreen?"none":"flex")};$.on("change",i),e.events.destroys.push((()=>{$.off("change",i)}))}catch(e){}e.on(v.recording,(()=>{re(t.$record,"display",e.recording?"none":"flex"),re(t.$recordStop,"display",e.recording?"flex":"none")})),e.on(v.recordingTimestamp,(e=>{})),e.on(v.playing,(e=>{re(t.$play,"display",e?"none":"flex"),re(t.$playBig,"display",e?"none":"block"),re(t.$pause,"display",e?"flex":"none"),re(t.$screenshot,"display",e?"flex":"none"),re(t.$record,"display",e?"flex":"none"),re(t.$fullscreen,"display",e?"flex":"none"),e||t.$speed&&(t.$speed.innerHTML=ce(""))})),e.on(v.kBps,(e=>{const i=ce(e);t.$speed&&(t.$speed.innerHTML=i)}))};function je(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===i&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}je('@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}.jessibuca-container .jessibuca-icon{cursor:pointer;width:16px;height:16px}.jessibuca-container .jessibuca-poster{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:100%;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jessibuca-container .jessibuca-play-big{position:absolute;display:none;height:100%;width:100%;background:rgba(0,0,0,.4);background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:50%;cursor:pointer;background-size:48px 48px}.jessibuca-container .jessibuca-play-big:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC")}.jessibuca-container .jessibuca-loading{display:none;flex-direction:column;justify-content:center;align-items:center;position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;width:100%;height:100%;pointer-events:none}.jessibuca-container .jessibuca-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jessibuca-container .jessibuca-controls{background-color:#161616;display:flex;flex-direction:column;justify-content:flex-end;position:absolute;z-index:40;left:0;right:0;bottom:0;height:38px;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;transition:all .2s ease-in-out;-webkit-user-select:none;user-select:none}.jessibuca-container .jessibuca-controls .jessibuca-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jessibuca-container .jessibuca-controls .jessibuca-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jessibuca-container .jessibuca-controls .jessibuca-fullscreen,.jessibuca-container .jessibuca-controls .jessibuca-fullscreen-exit,.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-microphone-close,.jessibuca-container .jessibuca-controls .jessibuca-pause,.jessibuca-container .jessibuca-controls .jessibuca-play,.jessibuca-container .jessibuca-controls .jessibuca-record,.jessibuca-container .jessibuca-controls .jessibuca-record-stop,.jessibuca-container .jessibuca-controls .jessibuca-screenshot{display:none}.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-icon-mute{z-index:1}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom{display:flex;justify-content:space-between;height:100%}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-left,.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-right{display:flex;align-items:center}.jessibuca-container.jessibuca-controls-show .jessibuca-controls{opacity:1;visibility:visible}.jessibuca-container.jessibuca-hide-cursor *{cursor:none!important}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100%!important;height:100%!important;background:#000}.jessibuca-container .jessibuca-icon-loading{width:50px;height:50px;background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%;animation:rotation 1s linear infinite}.jessibuca-container .jessibuca-icon-screenshot{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAE5UlEQVRoQ+1YW2sdVRT+1s7JxbsoVkEUrIIX0ouz15zYNA+N1RdtQfCltlUfvLbqL/BCwZ8grbHtizQqPojgBSr0JkiMmT2nxgapqBURtPVCq7HxJCeZJVPmxDlzZubMmXOSEsnAvOy917fXt9e39tp7E5b4R0vcfywTuNgRbBgBx3HuJqLVzPzmYjprjHkcwAlmLqXNm4XAISLaSESPaq2HF4OE67rbRGRYRA7btn1fbgLGmKsA/Azg0gBkGzO/vZAkHMd5hIiqc5wHcCMz/5k0Z2oExsfHV1QqldPAf8lORNu11m8tBAljzFYAYWxRSl1vWdZvuQj4RsYYF4AVBlgIOVVlE55HRIxt23ZuCfmGjuOsJ6LPoiAistW27XfaEYmIbOYhPc9bXywWR1oiEJDYQkR1zrYjEjGyqfqbKd8a7kJVtLgQ+30i8pht2wfyRKIdmJkJBPkQTbILfudJ7CTZNBvVpggEcgpvc/ML38zESbLJsxBNE/A9biX0rdjGyTQXgbxyapdsarb0PMlXtWnGoXbKpm0Essqp3bJpK4E0OXmed3+hUBDP8w5FI91M0rdcyLLILElOCbaZilSWeXMncRx4klTCY1spfG3dhZJWx3GcDUR0EEB3ZMw0ET2gtT6SZWWzjmlrBIJCl0hAKfWgZVmHszqXZVxbCSxpCS2JJA6umIhe8ZKKVLPbaBJ+S9toqVRa53nedgAbAKwIwH4FcAzAa0R0l4i8F7PPz189k6RFRA+LyNcAXojDV0oNW5b1eW4Cxpg9AHZkSaaa6hhzb065uDSCH2LmRB8Sk9gY4293g43Qo/1pV80m8yQMfZSZ781cB1zXHRKRZ2IMpgD8A+DamL4ZItqitX4/jbQx5iEA7wLoihn3V/ACckWMJN/QWj9b1x5tGBsbW6uUOh5pPy0iL3Z2dn6ilJqanp5ep5TaJSLhF4NppdRNaU8gPmapVLrO87yfIoXuWyJ6uVKp+HmFjo6OQSJ6FcBtYT+UUmstyxqvkWuUgDFmP4AnQu2/e563qlgs+u9DNZ8xZhRAX7VRRPbath0XuXk7Y8xeAE+FgL6fnJzsHRwcLIfBR0ZGLunq6poAsDLUvp+Zw7b1r9PGmJMAbg8Z7WDmoThZuK67WkS+DD18fcPMdzSQUBR/EzN/nIC/SUQ+DPXV4dclsTHmHAD/SfHCNzc3t7Kvr++HJKeMMacA3BL0nyuXyzcPDAxMxo0fHR29slAo/Ajg6qD/fE9Pzw29vb1/x42fmJi4vFwu+5G/LOg/y8zXNJLQ2dAES5JANMQ7mfn1jBI6ycx3NiMhItqstf4oAX+ziHwQ6qvDj5NQNIn/ALCKmX+JSeIvABRD7fuY+ekGBPYBeDI05tTMzExvf3+/vz2Hk91/ET8RSeI6/DoCpVJpjed5fmKGvzMAXpqdnT3oed5Ud3d3v4jsAqBr9Ei0Rmv9VRqBBPzvROQVETnq2xJRdRu9tRF+bCVOKWT+Kvl/TSIFk6SW/LAjKfjV5K8rZABi8dOOEv7FI7Z8x6zwEWbemLbyMfJr5qiSiJ96oclymBOR3bZtP9+M89WxxpjdAHY2sN3DzM8ljWl4I3Nd9x7/OE1ENcdpETnmH3e11n41zv0l4J8RkU+J6AAz+xtF4teQQG7PFslwmcAiLfSyhC72Qv9/I/Avns2OT7QJskoAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-screenshot:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAED0lEQVRoQ+2ZycsdRRTFf2ejqHFAMQqiYBTUoElUHLNx3GgCgpuYRF2o0UT9CxwQ/BMkMSbZSKLiQgQHUDCJgjiAxiEiESdEcJbEedgcKaj3UV+/6q7u/jovPPkK3qbr1ql76p5bt6qemPKmKfefeQKHOoLFCNg+H1gi6fFJOmv7VmCvpD1N87Yh8ApwNXCzpB2TIGF7DRDm2inpmt4EbB8LfAMcGUHWSHryYJKwfRMwmuMP4BRJv9TN2RgB2wuB72BWsq+V9MTBIGF7NZBiGzhJ0o+9CIRBtt8FLqgADC6nRDbpVO9Iuqi3hCKB5cDrGZDVkp4aIhIV2aSQyyW9MScCkcQqIOfsnCORkc3I31b5VtyFRmg1IQ7dt0ja3icSQ2C2JhAjUU2ykd+dE7tBNp2i2olAJJFuc+nCt564QTadF6IzgUhiVGiqyinKaQjZpJP2ItBXTkPJZhACXeU0pGwGI9BWTkPLZlACBTldG4o5EA6E1dY66edcyNrs8Q36zg1vVaTazNs7iXPgDVJJzYs7VRvHRzaDEohyugJ4CTi84sg/wHWSdnVxsGQ7aQLXS9pZcqpL/6AEplpCU5HE8YpJ9YrXUKQ6baN1+HPaRm1fBqwFQnKGK2ZoPwCvAo8Ai4FnMpPMHMwapHUj8DFwbw3+Dklv9iZgexOwvktSRduxU2VDlErwmyXV+lCbxLbDdndlCT3TX3vV7JgnKfRuSVflfMkSsL0ZuDMz4E/gL+CETN+/wCpJzzaRtn0D8DRwWMbu1/gCcnSm7zFJd1W/jxGwvQx4r2IYnlbuA14GAomQFw8B6YtBKFSnNj2BxEJ3IvB1pdB9CjwQ8yqYhcg/DJxZ8WOZpA/SbzkC24DbEqOfgPMkBRKzmu23gEuSj1sk5SI3Y2J7C3BHMuZz4FxJf6fgto8APgIWJd+3SUrHjr9O294HnJUMWi8pSGqs2V4CvJ88fH0i6eyChKr4KyS9WIO/Ang+6RvDz0XgABCeFEdtkaQv65yy/QVweuwPY0+T9FuNQ8cAXwHHxf7wdHiypN9r7BfEl8GjYv9+SceXJLQ/mSDYTh2Baog3SHq0pYT2STqno4RWSnqhBn8l8FzSN4bfJol/jkn8bXUS228DFyfft0paVyCwFbg9sQkSDEkctueZZju8iO+tJPEYfo7A0piYKd73wP3xnB+20cvjNnphxdmlkj4sEMjhfwY8COyOY0fb6Bkl/K6FLKxS+M1KpDhJY8mvrG5doRwlf66QZfGbjhLh4pEt35kV3iUp/IvTunU8qtTil/7gaHOY2yjpntaez9b5RmBDYewmSXfX2RRvZLYvbThOh+NuqMa9Ww1+yLnXgO2SwkZR24oEens2oYHzBCa00PMSOtQL/f+NwH+Hg8hAnbrYgQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABA0lEQVRoQ+1YwQqCUBAcfWXXsLr2AXWTPXno8yVB8AP6Aa3oHI+kCDqYaawJljSe133uzO44bx0M/HEG/v1gAd9mkAyQgY4I/F8LJUlyrQFtD2AtIkcNoFEU+Z7n7QD4DfFHEVlocrVmgAUAIAOl3mILPcDgEFcUhyrUKMGUUcroc3NQRimj9XJBGaWMvvPydKN0o6/9QTdKN6rZANxj6EbpRulGuZnjYqs8BbyR8Ub2Izeys+u6yyAIDpo/ehzHM2NMDsA0xFsRmWhyfTIDWSXxCEBmrd2EYXjSHJqm6bQoii2AOYBL5Z0xgFxEVppcrQvQJO0zhgX0iXbdWWSADHRE4AZQ731AhEUeNwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAA7klEQVRoQ+2YSwrCQBBEX6HiVvxsPYDewfN7By/gD9ciQkvERQwJdBSiYs0mEDo96aruombEjy/9+P/jAj7NoBkwA28i8H8tFBFRA9oeWEo6ZgCNiDGwAYpn3TpKmmVytWbABQBmoNRbbqEHGB7iiuJYhRol2DJqGX1uDsuoZdRmLuNZSzGWUcuoZdRHSp/IylNgK2ErYSthK3FHwLcSvpXIjoLt9Jfa6TMwl3TIMBkRE2AH9BriL5KGmVyvWIltJXEfKN6tJJ0ym0bECFgDU+Ba+WZQFCdpkcnVuoBM0i5jXECXaNftZQbMwJsI3AAPN3dAQflHegAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC+UlEQVRoQ+1ZS2sTURT+zlDJYE3XSq219QHVuEjnJDT+Bff9Abqw2voAEfGxqygUqWhVFHGl/yMLu9BwByxk5SNI66ML6U7axjhHbmhgWiftncxoOiV3FcI53z3f/e65594zhIQPSnj86BBot4IdBToKRFyBnbeFlFIScVEiuYvIWC6Xe2YK8pcC7SYA4CMzH4mDQBXAqilQBDsLQLfPf9FxnF4i8kwwmypARI+Wl5dvmIBEsUmlUkNE9NaHsVCpVAZGR0d/m+A2JSAid3K53E0TkCg2pVKpz7KseR/GfKVSGYxMAMA0M1+JEpyJb6lUOm5ZVnkrAsVisaunp+esiByr1Wp3R0ZGvmifzZK4XQQWHMc52MgBpdQuAOcAXABwuB400ZTjONdaIjA7O5u2bVsnWU1EujzP+5nP5xdMVjvIJkCBD8x8VCm1G8AYgAkAAxt8Z5j5YmgCSqlTAJ4D2OcD/AXgATNfbYVEAIFPIvKKiE4D6GuCea8xX6gtpJT6DmBvECgRFRzHeROWRAABE4iWCbwHEFhkPM/L5vP5dyaz+23+KwHXdR3P854S0YG1ILSCuthNMfNM2OC1/RYENLY+ygcBnPfht6ZAA6BYLNr6dyqVokKhsGpaNQ2TWJstreXaE2aed133sojcj41AKyvdzCdAgSXLsk4MDw9/a/i4rntbRPxFNZoC/5jAV2be759DKTUJ4FZSFFi0bbs/k8noy2R9dAjEuWU2YgXkQOK3kD6BMsysi2Z9JC2Jdcw/ALzwPO+xvmcl7Rj177JVEbkO4BARjSflFDJJuW1dBxJPoCIiL4noDIB1BS0pW6j+oJmbm+uuVqvjRKQfLr0bZHnIzJf0f6HeAybahrUJqAPruhLlcnnPysqKfpXp11n/Gv62zoHAroS+AafT6QkiGrIsazKbzX7eVIHEt1US39gCkOzWYthkjNE+tuZujDGZQ8XRXn8N4KT5lLFZ6uaYPt+nwyDuvC80YdhvB9uOAu1WoaNAR4GIK/AHvdr+QAexB7EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACfUlEQVRoQ+2ZSYsUQRCFvycK4nJXXEbHBdwO4kn/gv9CD467ICIutxEFkREdFUU86T/xojcPntyQcT2INw+uISFVkD1Wd2dWlU7nUHlqisiX+fJFZGREi8yHMt8/HYG5VrBToFOg4QnMPxcyM2t4KE2nT0i6EwvylwIjQOCFpE1tEPgGfI0FamC3AFgazP8IrJL0KwZzkAI3gLMxIA1ttgCPA4w3wHpJP2NwBxG4KOlcDEgTGzNbA8wEGP57vA0CU5JONtlczFwz2wY8HUbAzBYCB4CtwCVJb33OIAXmioC70LoyBsxsEXAQOApsLIhelnS6FgEzW+5BBvwA/FS+SPJFa40KBZ5L2mxmS4AJ4IjHxCzwaUnHkgmY2V7gLrAyAPwOXJN0qg6DCgIvgQfAPsDjo2pcKddLciEz+wCs6AO6W9KjVBIVBGIgahN4BvRLMjslPYlZPbT53wR2AbeBtcUmXEFPdh5U06mbd/shBBzbr/Jx4FCAX0+BEsDMFocEYrNmFcE+BD4XsXZL0oyZnQCutkagzkn3m1NBwDe/Q9L74MAuFEqUn5op8I8JvJO0elacTALnc1HAH3Njkvwx+WeYWUegTa/pwaqIgexdyIN4uyRPmqULZRXEvulPwD3gpr+zcrtGQxfzRHYG2AAczuUWiom3kc4D2RN4BdwH9gM9CS0XFyoLGu9UuN974eIFVDiuSzruH5LqgRhtU20q8kBPV8LMlhVVmVdnYwX+SMdAZVeieAF7eeltmElJr4cpkH1bJfvGVvatxdR4bMu+teZuWxtKxWncXn8I7EldtQV7vz79fp9KwZp//9CksB8F206BuVahU6BToOEJ/Ab7+KdABdTt8AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADd0lEQVRoQ+2Zz2sdVRTHv+fJBDW6anDVXen6wZszYxYBiYgtFGst3VSDunKjpS0GpUlqfjVpsVVs6aaL0or4YxMVFCJZ2ZLdPUP+gq5bQnTxtNAkfTnlhnnlkmQy9yV9780rudt77tzv5/y4v4bQ4Y06XD/2ANodwec/AiJygJnvtdvTWfPnRkBEJAiCN8rl8kMfiPn5+Ve7u7v3rays0Orq6lJfX99/PuN2auMDoAD+BvA2M6/mTWSMOUtE48D6AjHGzN/kjdlNvy+AnWOOmQ/lTSYiEwDOWzsimgrDcCRvzG76GwGw8/zJzO9sN6GInAMwbW1UdSSKoqndCMwb6wNwGsB39Q+p6h/M/C4R2dTa1AoHYBWKyCkA1+pqiWi2Wq0e7e/vf7yRoJAAKcQggMtuJKIoOtoxACnE0/xOi/SXMAxPuhCFjUBdpIjYVWXSEf0TM3/g9BeriDMKdSPEz8z8vrU1xgwT0YXCrEJZy1iSJKOqOub0/8jMA0mSfKKqNwoPkHp7ioiGHIhRIvpHVa93BEBa2JcAfOlALAHo6RgAKzRJkk9V1S6xL7kpV4idOM31taxaIKJHqmpPnMMA9hcOQES2PDJkAT1XAAC+ZebPfWB3auNzmLObVsNRUNUXVHUujuM7OxXnMy4XwOcj29mIyOuq+lapVGrYCelKpkEQ3CyXy4tbzdN0AGPMxr2iYZ+sra3FcRybtgCIiK2BKw2rdgaUSqWoUqlIkQAepFDdAF7cBq5ERI9rtdr1OI7tmE2t6SmUEYFHAEaexYW/1QC2EF+ru5GIvg7D0D2GNJxprQY4o6qv1I/b6SpzOYqiLxpWng5oOQAzXxWRWwA+dkRfYOb1p5hGW6sBJpn5KytSRG4D+KguWFXHoyhy7xdeLC0F2ChSRL4H8OFuINoKYIUbY34gogHH3eeZef1K6tPaDpCm068A3nMEDzHzxY4BUNWSiPxORO6z5aDPPlGICNQ9bYyZIaLjjudzIQoFkKbTbwCO+UI0HcB9J/LdeY0xs0R02IGYYObRrWqiFQCfEZEtSHsfmGZm+4qxbbM/hQD8BeBNa0hEM2EYnmgLgP3lFARBT1dXly4vL//b29tbzQNIU+llAHeJaLFSqRzJes5vegR8xGbZLCwsHKzVav8z8/0sm0ID+MDvAfh4qZk2exFopnd9vv0ELrXBQO7fD10AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC/ElEQVRoQ+2Zy49NQRCHvx+ReK6IlZ34E7CUiCAR4xEbTLCyQRATYswwb2IQZDYWgojHZpCQECts+ResiQwLj0RClNSkb9Lu3HtPz7mZc8+V6eXt6tP1VVV3VdcVbT7U5vozC9BqD/7/HjCzlZLet9rS9fbP9ICZvQPWSfqRAmFmS4ClMHm+JiR9S1mXVyYFwIBXwEZJv7I2MrPjQH8A6JN0OWtNM/OpAL7HS0mbsjYzswGgN8gNS+rJWtPM/HQAfJ9nkrY22tDMTgMjQaZH0nAzCmatTQE4ClyNPvQU2CbJQ2vKKB2Aa2hmR4DrkbbPgQ5Jv6sJSgkQILqA0dgTkjraBiBAxPHtPz2UtDuGKK0HKkqamd8qg5HS9yXtjebLdYjrHNRqiAeS9gQvnQGGSnML1bvGzOwc0BfN35PUaWYHgRulBwjW9ju+O4JwqM/AWFsABIgLwKkIYgJY1jYAAeJQuGIXVIVcKTKxh8WfBin9J+AVpx/eFWUEqFkyNACKp0rhgWYArkg6kQibSyylmPOklQdibijBX+fSLHFRJkDid+qKmdlaYENOI0zeEcBNSZ9qbVIEQHWuyGOTNZLetgrAz8ClPFpHa1ZL8rf5lFGEB2oBfAxQi4D5DeDmAP7mGJPka0oD4LnDr9imH/xFe8AP4vLIjBclxWXItCOtaIBjwOKo3HaFRyWdnLbmYUHhAJKumdkt4ECk9JCkSitmWixFAwxKOjt5uZvdBvZH2vZLit8XSSBFA/yjpJndAfY1A9FSgOCJu0BnBNErqfIkzfRCywECxCNgR6Rtt6TzmdqHBmyKXG4ZM4sTWc04NzNPWE+AuG3ZlZInSuGBinXMbBzYGVkrE6JUACGcHgPbUyGKAIj7REmZ18y897o5ghiQ5E/bltRChwE/kF7Xj0jyLkbDYWbzgBfA+iA4LmlXqwD8LydvszjAF0lfswBCKC0E3gBeP22p186f8RBKUbaejJmtAr5L+lBPptQAKfCzAClWmkmZWQ/MpHVTvv0X9iFAQGQyevIAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACrUlEQVRoQ+2ZPYgTURCAZzbBXJnCeL2Cnb87b9MEtPBUrrMQFAtrtT5/ClGs9LBWWz0RtbBUFCF4oJDsbO68wsLA2YqQSmLlvpEHu7IuMdlLcus+yUKKhJfZ+ebnvZl5CJY/aLn+MAP41x7M1QPMfFtr/crzvHfTAs8FoNPp1LTWzwHgqIg0lFLvrQHwfX8BER8DwC6jNCIecF13wwoA3/dvIuKNpLJa60Oe560XGoCZd4rICiKeTCtaeABmPg4AJmRqg6xcaABmvg4At4aFRyEBhoVM4UMoCplHADCfJTEL5YEsIVNID5iQAYCHALCYxeq5b6PMfF5EBAAEESthGK7W6/XPRpFWq7W3VCqtZg2ZcT3g+/6i4zjzIlLSWn/yPO/DIGMNLCWY2Sj/+xGRK0qpZfNDEASnROTFVi0fr8+aA8z8Ld6KEfGt67oLYwMAwEUium8EREn7OgeAjwCwPyo/nrque3YSgAtE9GDaAM1mc65arc4Zuf1+P2w0Gt9jJZl5DQAORt+fENG5wgEw8zUAMB/zbBBRwyqAIAjuiMjlSOlNItpjFUCqWl0josMzgChR/9hGAWBbknjmAdPhDdqa0gfZzAMJKyVP4v8hhJYRcSni+0JEu63ahZj5anyQici6UuqIVQDdbrfS6/UqRulyufyTiH5sF8AlIro37VpoWEHIzGZ2tM+sEZFnSqkzk9RCS0R01wjIsZz+mug53hDRia0AnI4bGgDYISItz/M2jYC8Gpp2u30MEWuO4zha665Sqp0ZYFStX/iWchRAItFGzoHSsrJ2ZFl1mHg6bfVYJeGJv85CC++BpIJZ5kSFC6G0ha0e7mYJqcJ7IOkRay84UhD2XjHFIFZf8iW9YcYoYRi+tO6aNeupOs66iU/icV46zf/MAKZpzXFk/QL+JG1PUPhRiQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACSElEQVRoQ+2Zu4sUQRCHf5+C+gf4yBXMfMYHGvjCzEBQDIzV+HwEohipGKupD0QNDE8UEwUFTe68wEDhTMVUMFJ+0tArzbjs9u3Ojt0wBR0M9MzUV1XdXVWNKhcq1189wP/2YKcesH1d0nPgdVvgnQDY3iTpqaT9kuaAt9UA2D4o6aGkzVHpXcByFQC2r0q60lB2D7BUNIDtjZIeSDoyRNGyAWwfiiET4n6YlAtg+7Kka2PCozyAMSHT5CkLIIbMfUlbMhdmOQCZIVOeB2LI3JN0NNPq6bTZe8D2aUmOY72kN8DnoIXt7eF5FSEzkQdsB+OEsFwr6RPwbpixhqYStoPyqVwAbkaAY5KeTWD5wStZHrD9XdJgK34FhBP9H8kFOAvciQBhn3/RAcBHSTvjfx4DJ6cBOAPcbRvA9gZJYQT5DfwYKGl7UdLu+PwIOFUiwCVJYQRZBuZqA7gh6XxUegXYVhtAmq0uAnt7gLhQm9vorBZx74Hcc6D3QLKH/z2JGyVnlYs4pCfzEe4rsLW2XehicpAtAftqAwiZbhhBfgE/ZwVwDrjddi40KiG0HXpHO+KcJ8CJaXKheeBWBOgqnf6W1BwvgcOrATieFDTrJL0HViJAVwXNgVgPrJH0BfiQDTDKtREiNK7KLSnHASQLLacP1PxcVkWWq8PU3emq2yqJJ0b1Qsv2QKpdZp+orBBqmrfq5m5mSJXtgUZI1XnB0YCo94opCal6L/ka3ghtlIXqrllzT9VJ5k19Ek/y0zbf6QHatOYk3/oDujC8QMWgjf4AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-text{font-size:14px;width:30px}.jessibuca-container .jessibuca-speed{font-size:14px;color:#fff}.jessibuca-container .jessibuca-quality-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .jessibuca-quality-menu-list.jessibuca-quality-menu-shown{visibility:visible;opacity:1}.jessibuca-container .icon-title-tips{pointer-events:none;position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jessibuca-container .jessibuca-quality-menu{padding:8px 0}.jessibuca-container .jessibuca-quality-menu-item{display:block;height:25px;margin:0;padding:0 10px;cursor:pointer;font-size:14px;text-align:center;width:50px;color:hsla(0,0%,100%,.5);transition:color .3s,background-color .3s}.jessibuca-container .jessibuca-quality-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-quality-menu-item:focus{outline:none}.jessibuca-container .jessibuca-quality-menu-item.jessibuca-quality-menu-item-active{color:#2298fc}.jessibuca-container .jessibuca-volume-panel-wrap{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%) translateY(22%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;height:120px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-wrap.jessibuca-volume-panel-wrap-show{visibility:visible;opacity:1}.jessibuca-container .jessibuca-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jessibuca-container .jessibuca-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:before{bottom:-54px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-volume-panel-handle:after,.jessibuca-container .jessibuca-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}');class Ue{constructor(e){var t;this.player=e,((e,t)=>{e.$container.classList.add("jessibuca-controls-show");const i=e._opt,n=i.operateBtns;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
    `:""}\n
    \n ${De.loading}\n ${i.loadingText?`
    ${i.loadingText}
    `:""}\n
    \n ${i.hasControl&&n.play?'
    ':""}\n ${i.hasControl?`\n
    \n
    \n
    \n ${i.showBandwidth?'
    ':""}\n
    \n
    \n ${n.audio?`\n
    \n ${De.audio}\n ${De.mute}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `:""}\n ${n.play?`
    ${De.play}
    ${De.pause}
    `:""}\n ${n.screenshot?`
    ${De.screenshot}
    `:""}\n ${n.record?`
    ${De.record}
    ${De.recordStop}
    `:""}\n ${n.fullscreen?`
    ${De.fullscreen}
    ${De.fullscreenExit}
    `:""}\n
    \n
    \n
    \n `:""}\n\n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jessibuca-poster")}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jessibuca-loading")}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jessibuca-play")}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jessibuca-play-big")}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jessibuca-pause")}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jessibuca-controls")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jessibuca-volume")}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jessibuca-volume-panel-wrap")}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jessibuca-volume-panel-text")}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jessibuca-volume-panel")}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jessibuca-volume-panel-handle")}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jessibuca-icon-audio")}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jessibuca-icon-mute")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jessibuca-fullscreen-exit")}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jessibuca-record")}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jessibuca-record-stop")}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jessibuca-screenshot")}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jessibuca-speed")})})(e,this),Oe(e,this),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),((e,t)=>{const{events:{proxy:i}}=e;function n(e){const{bottom:i,height:n}=t.$volumePanel.getBoundingClientRect(),{height:o}=t.$volumeHandle.getBoundingClientRect();return oe(i-e.y-o/2,0,n-o/2)/(n-o)}i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(window,"orientationchange",(()=>{setTimeout((()=>{e.resize()}),300)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),i(t.$pause,"click",(t=>{e.pause()})),i(t.$play,"click",(t=>{e.play()})),i(t.$playBig,"click",(t=>{e.play()})),i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jessibuca-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jessibuca-volume-panel-wrap-show")})),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),re(t.$volumeOn,"display","none"),re(t.$volumeOff,"display","block"),e.lastVolume=e.volume,e.volume=0})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),re(t.$volumeOn,"display","block"),re(t.$volumeOff,"display","none"),e.volume=e.lastVolume||.5})),i(t.$screenshot,"click",(t=>{t.stopPropagation(),e.video.screenshot()})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=n(t)})),i(t.$volumeHandle,"mousedown",(()=>{t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=n(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)})),i(t.$record,"click",(t=>{t.stopPropagation(),e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$fullscreen,"click",(t=>{t.stopPropagation(),e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),e.fullscreen=!1}))})(e,this),this.player.debug.log("Control","init")}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,n=t/i,o=e.audio.$videoElement.width/e.audio.$videoElement.height;if(n>o){const n=(t-i*o)/2;e.$container.style.padding=`0 ${n}px`}else{const n=(i-t/o)/2;e.$container.style.padding=`${n}px 0`}}destroy(){this.player.debug.log("control","destroy"),this.$poster&&this.player.$container.removeChild(this.$poster),this.player.$container.removeChild(this.$loading),this.$controls&&this.player.$container.removeChild(this.$controls),this.player=null}}je(".jessibuca-container{position:relative;width:100%;height:100%;overflow:hidden}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100%!important;height:100%!important;background:#000}");class Fe{static init(){Fe.types={avc1:[],avcC:[],hvc1:[],hvcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]};for(let e in Fe.types)Fe.types.hasOwnProperty(e)&&(Fe.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Fe.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,n=Array.prototype.slice.call(arguments,1),o=n.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let r=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return Fe.box(Fe.types.trak,Fe.tkhd(e),Fe.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,n=e.presentWidth,o=e.presentHeight;return Fe.box(Fe.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,n>>>8&255,255&n,0,0,o>>>8&255,255&o,0,0]))}static mdia(e){return Fe.box(Fe.types.mdia,Fe.mdhd(e),Fe.hdlr(e),Fe.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return Fe.box(Fe.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?Fe.constants.HDLR_AUDIO:Fe.constants.HDLR_VIDEO,Fe.box(Fe.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Fe.box(Fe.types.smhd,Fe.constants.SMHD):Fe.box(Fe.types.vmhd,Fe.constants.VMHD),Fe.box(Fe.types.minf,t,Fe.dinf(),Fe.stbl(e))}static dinf(){return Fe.box(Fe.types.dinf,Fe.box(Fe.types.dref,Fe.constants.DREF))}static stbl(e){return Fe.box(Fe.types.stbl,Fe.stsd(e),Fe.box(Fe.types.stts,Fe.constants.STTS),Fe.box(Fe.types.stsc,Fe.constants.STSC),Fe.box(Fe.types.stsz,Fe.constants.STSZ),Fe.box(Fe.types.stco,Fe.constants.STCO))}static stsdOld(e){return"audio"===e.type?Fe.box(Fe.types.stsd,Fe.constants.STSD_PREFIX,Fe.mp4a(e)):"avc"===e.videoType?Fe.box(Fe.types.stsd,Fe.constants.STSD_PREFIX,Fe.avc1(e)):Fe.box(Fe.types.stsd,Fe.constants.STSD_PREFIX,Fe.hvc1(e))}static stsd(e){return"audio"===e.type?Fe.box(Fe.types.stsd,Fe.constants.STSD_PREFIX,Fe.mp4a(e)):"avc"===e.videoType?Fe.box(Fe.types.stsd,Fe.constants.STSD_PREFIX,Fe.avc1(e)):Fe.box(Fe.types.stsd,Fe.constants.STSD_PREFIX,Fe.hvc1(e))}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return Fe.box(Fe.types.mp4a,n,Fe.esds(e))}static esds(e){let t=e.config||[],i=t.length,n=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return Fe.box(Fe.types.esds,n)}static avc1(e){let t=e.avcc;const i=e.codecWidth,n=e.codecHeight;let o=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,n>>>8&255,255&n,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Fe.box(Fe.types.avc1,o,Fe.box(Fe.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,n=e.codecHeight;let o=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,n>>>8&255,255&n,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Fe.box(Fe.types.hvc1,o,Fe.box(Fe.types.hvcC,t))}static mvex(e){return Fe.box(Fe.types.mvex,Fe.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return Fe.box(Fe.types.trex,i)}static moof(e,t){return Fe.box(Fe.types.moof,Fe.mfhd(e.sequenceNumber),Fe.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return Fe.box(Fe.types.mfhd,t)}static traf(e,t){let i=e.id,n=Fe.box(Fe.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),o=Fe.box(Fe.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),r=Fe.sdtp(e),s=Fe.trun(e,r.byteLength+16+16+8+16+8+8);return Fe.box(Fe.types.traf,n,o,s,r)}static sdtpOld(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,Fe.box(Fe.types.sdtp,t)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,Fe.box(Fe.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let n=e.duration,o=e.size,r=e.flags,s=e.cts;return i.set([n>>>24&255,n>>>16&255,n>>>8&255,255&n,o>>>24&255,o>>>16&255,o>>>8&255,255&o,r.isLeading<<2|r.dependsOn,r.isDependedOn<<6|r.hasRedundancy<<4|r.isNonSync,0,0,s>>>24&255,s>>>16&255,s>>>8&255,255&s],12),Fe.box(Fe.types.trun,i)}static mdat(e){return Fe.box(Fe.types.mdat,e)}}Fe.init();class Pe{constructor(e){this.TAG="ExpGolomb",this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index,t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let n=Math.min(i,this._current_word_bits_left),o=this._current_word>>>32-n;return this._current_word<<=n,this._current_word_bits_left-=n,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class Me{static _ebsp2rbsp(e){let t=e,i=t.byteLength,n=new Uint8Array(i),o=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(n[o]=t[e],o++);return new Uint8Array(n.buffer,0,o)}static parseSPS(e){let t=Me._ebsp2rbsp(e),i=new Pe(t);i.readByte();let n=i.readByte();i.readByte();let o=i.readByte();i.readUEG();let r=Me.getProfileString(n),s=Me.getLevelString(o),a=1,A=420,c=[0,420,422,444],d=8;if((100===n||110===n||122===n||244===n||44===n||83===n||86===n||118===n||128===n||138===n||144===n)&&(a=i.readUEG(),3===a&&i.readBits(1),a<=3&&(A=c[a]),d=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==a?8:12;for(let t=0;t0&&e<16?(v=t[e-1],w=n[e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),w=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);S=i.readBool(),R=t,C=2*e,E=R/C}}let B=1;1===v&&1===w||(B=v/w);let k=0,I=0;if(0===a)k=1,I=2-p;else{k=3===a?1:2,I=(1===a?2:1)*(2-p)}let T=16*(h+1),x=16*(f+1)*(2-p);T-=(g+m)*k,x-=(b+y)*I;let L=Math.ceil(T*B);return i.destroy(),i=null,{profile_string:r,level_string:s,bit_depth:d,ref_frames:u,chroma_format:A,chroma_format_string:Me.getChromaFormatString(A),frame_rate:{fixed:S,fps:E,fps_den:C,fps_num:R},sar_ratio:{width:v,height:w},codec_size:{width:T,height:x},present_size:{width:L,height:x}}}static _skipScalingList(e,t){let i=8,n=8,o=0;for(let r=0;r{this.mediaSourceOpen=!0,this.player.emit(v.mseSourceOpen)})),i(this.mediaSource,"sourceclose",(()=>{this.player.emit(v.mseSourceClose)})),e.debug.log("MediaSource","init")}get state(){return this.mediaSource.readyState}get isStateOpen(){return this.state===z}get isStateClosed(){return this.state===X}get isStateEnded(){return this.state===q}get duration(){return this.mediaSource.duration}set duration(e){this.mediaSource.duration=e}decodeVideo(e,t,i){const n=this.player;if(this.hasInit)this._decodeVideo(e,t,i);else if(i&&0===e[1]){const o=15&e[0];if(n.video.updateVideoInfo({encTypeCode:o}),o===x)return void this.emit(E.mediaSourceH265NotSupport);this._decodeConfigurationRecord(e,t,i,o),this.hasInit=!0}}_doDecode(){const e=this.bufferList.shift();e&&this._decodeVideo(e.payload,e.ts,e.isIframe)}_decodeConfigurationRecord(e,t,i,n){let o=e.slice(5),r={};n===T?r=function(e){const t={},i=new DataView(e.buffer);let n=i.getUint8(0),o=i.getUint8(1);if(i.getUint8(2),i.getUint8(3),1!==n||0===o)return;const r=1+(3&i.getUint8(4));if(3!==r&&4!==r)return;let s=31&i.getUint8(5);if(0===s)return;let a=6;for(let n=0;n1&&(this.removeBuffer(a.buffered.start(0),a.buffered.end(0)),this.timeInit=!1),a.drop&&s-this.cacheTrack.dts>1e3)a.drop=!1,this.cacheTrack={};else if(this.cacheTrack&&s>this.cacheTrack.dts){let e=8+this.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(Fe.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=s-this.cacheTrack.dts;let o=Fe.moof(this.cacheTrack,this.cacheTrack.dts),r=new Uint8Array(o.byteLength+i.byteLength);r.set(o,0),r.set(i,o.byteLength),this.appendBuffer(r.buffer),n.handleRender(),n.updateStats({fps:!0,ts:t,buf:n.demux.delay})}else n.debug.log("MediaSource","timeInit set false , cacheTrack = {}"),this.timeInit=!1,this.cacheTrack={};this.cacheTrack.id=1,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=r,this.cacheTrack.dts=s,this.cacheTrack.cts=0,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=o,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},this.timeInit||1!==a.buffered.length||(n.debug.log("MediaSource","timeInit set true"),this.timeInit=!0,a.currentTime=a.buffered.end(0)),!this.isInitInfo&&a.videoWidth>0&&a.videoHeight>0&&(n.debug.log("MediaSource",`updateVideoInfo: ${a.videoWidth},${a.videoHeight}`),n.video.updateVideoInfo({width:a.videoWidth,height:a.videoHeight}),n.video.initCanvasViewSize(),this.isInitInfo=!0)}appendBuffer(e){const{debug:t,events:{proxy:i}}=this.player;null===this.sourceBuffer&&(this.sourceBuffer=this.mediaSource.addSourceBuffer(J),i(this.sourceBuffer,"error",(e=>{this.player.emit(v.mseSourceBufferError,e)}))),!1===this.sourceBuffer.updating&&this.isStateOpen?this.sourceBuffer.appendBuffer(e):this.isStateClosed?this.player.emit(v.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed"):this.isStateEnded?this.player.emit(v.mseSourceBufferError,"mediaSource is closed"):!0===this.sourceBuffer.updating&&(this.player.emit(v.mseSourceBufferBusy),this.dropSourceBuffer(!0))}stop(){this.isStateOpen&&this.sourceBuffer&&this.sourceBuffer.abort(),this.endOfStream()}dropSourceBuffer(e){const t=this.player.video.$videoElement;this.dropping=e,t.buffered.length>0&&t.buffered.end(0)-t.currentTime>1&&(t.currentTime=t.buffered.end(0))}removeBuffer(e,t){if(this.isStateOpen&&!1===this.sourceBuffer.updating)try{this.sourceBuffer.remove(e,t)}catch(e){console.error(e)}}endOfStream(){this.isStateOpen&&this.mediaSource.endOfStream()}destroy(){this.stop(),this.bufferList=[],this.mediaSource=null,this.mediaSourceOpen=!1,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1,this.off(),this.player.debug.log("MediaSource","destroy")}}const Qe=()=>"undefined"!=typeof navigator&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,Ne=()=>"wakeLock"in navigator;class We{constructor(e){if(this.player=e,this.enabled=!1,Ne()){this._wakeLock=null;const e=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else Qe()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm","data:video/webm;base64,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"),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,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"),this.noSleepVideo.addEventListener("loadedmetadata",(()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",(()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())}))})))}_addSourceToVideo(e,t,i){var n=document.createElement("source");n.src=i,n.type=`video/${t}`,e.appendChild(n)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(Ne())return navigator.wakeLock.request("screen").then((t=>{this._wakeLock=t,this.enabled=!0,e.log("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{e.log("wakeLock","Wake Lock released.")}))})).catch((t=>{throw this.enabled=!1,e.error("wakeLock",`${t.name}, ${t.message}`),t}));if(Qe())return this.disable(),this.noSleepTimer=window.setInterval((()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))}),15e3),this.enabled=!0,Promise.resolve();return this.noSleepVideo.play().then((e=>(this.enabled=!0,e))).catch((e=>{throw this.enabled=!1,e}))}disable(){const e=this.player.debug;Ne()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):Qe()?this.noSleepTimer&&(e.warn("wakeLock","NoSleep now disabled for older iOS devices."),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}}class Ge extends ue{constructor(e,t){var i;super(),this.$container=e,this._opt=Object.assign({},o,t),this.debug=new Y(this),this._opt.useWCS&&(this._opt.useWCS="VideoEncoder"in window),this._opt.useMSE&&(this._opt.useMSE=window.MediaSource&&window.MediaSource.isTypeSupported(J)),this._opt.useMSE?(this._opt.useWCS&&this.debug.log("Player","useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.log("Player","forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0):this._opt.useWCS,this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0},this._videoTimestamp=0,this._audioTimestamp=0,i=this,Object.defineProperty(i,"rect",{get:()=>i.$container.getBoundingClientRect()}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(i,e,{get:()=>i.rect[e]})})),this.events=new Z(this),this.video=new ge(this),this.audio=new be(this),this.recorder=new Re(this),this.decoderWorker=new Ce(this),this.stream=null,this.demux=null,this._opt.useWCS&&(this.webcodecsDecoder=new xe(this)),this._opt.useMSE&&(this.mseDecoder=new Ve(this)),this.control=new Ue(this),this.keepScreenOn=new We(this),(e=>{try{const t=()=>{e.emit(w.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize()};$.on("change",t),e.events.destroys.push((()=>{$.off("change",t)}))}catch(e){}if(e.on(v.decoderWorkerInit,(()=>{e.debug.log("player","has loaded"),e._hasLoaded=!0})),e.on(v.play,(()=>{e.loading=!1})),e.on(v.fullscreen,(t=>{if(t)try{$.request(e.$container).then((()=>{})).catch((t=>{e.webFullscreen=!0}))}catch(t){e.webFullscreen=!0}else try{$.exit().then((()=>{})).catch((()=>{e.webFullscreen=!1}))}catch(t){e.webFullscreen=!1}})),e.on(v.webFullscreen,(t=>{if(t){e.$container.classList.add("webmediaplayer-fullscreen-web");const{clientHeight:t,clientWidth:i}=document.body,{clientHeight:n,clientWidth:o}=e.video.$videoElement;if(i/t{e.video.resize()})),e._opt.debug){const t=[v.timeUpdate];Object.keys(v).forEach((i=>{e.on(v[i],(n=>{t.includes(i)||e.debug.log("player events",v[i],n)}))})),Object.keys(E).forEach((t=>{e.on(E[t],(i=>{e.debug.log("player event error",E[t],i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:n}}=e;t.supportDblclickFullscreen&&n(e.$container,"dblclick",(()=>{e.fullscreen=!e.fullscreen})),n(document,"visibilitychange",(()=>{t.hiddenAutoPause&&(i.log("visibilitychange",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),n(window,"fullscreenchange",(()=>{null!==e.keepScreenOn&&"visible"===document.visibilityState&&e.enableWakeLock()}))})(this),this._opt.useWCS&&this.debug.log("Player","use WCS"),this._opt.useMSE&&this.debug.log("Player","use MSE"),this._opt.useOffscreen&&this.debug.log("Player","use offscreen"),this.debug.log("Player options",this._opt)}set fullscreen(e){this.emit(v.fullscreen,e)}get fullscreen(){return document.isFullScreen||document.mozIsFullScreen||document.webkitIsFullScreen||this.webFullscreen}set webFullscreen(e){this.emit(v.webFullscreen,e)}get webFullscreen(){return this.$container.classList.contains("jessibuca-fullscreen-web")}get loaded(){return this._hasLoaded}set playing(e){e&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(v.playing,e),this.emit(v.volumechange,this.volume),e?this.emit(v.play):this.emit(v.pause))}get playing(){return this._playing}get volume(){return this.audio.volume}set volume(e){this.audio.setVolume(e)}set loading(e){this.loading!==e&&(this._loading=e,this.emit(v.loading,this._loading))}get loading(){return this._loading}set recording(e){this.playing&&(e?this.recorder.startRecord():this.recorder.stopRecordAndSave())}get recording(){return this.recorder.recording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set videoTimestamp(e){null!==e&&(this._videoTimestamp=e,this._opt.useWCS||this._opt.useMSE||this.audioTimestamp&&this.videoTimestamp&&this.audio.emit(v.videoSyncAudio,{audioTimestamp:this.audioTimestamp,videoTimestamp:this.videoTimestamp,diff:this.audioTimestamp-this.videoTimestamp}))}get videoTimestamp(){return this._videoTimestamp}updateOption(e){this._opt=Object.assign({},this._opt,e)}init(){return new Promise(((e,t)=>{this.stream||(this.stream=new we(this)),this.demux||(this.demux=new Te(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new xe(this))),this._opt.useMSE&&(this.mseDecoder||(this.mseDecoder=new Ve(this))),this.decoderWorker?e():(this.decoderWorker=new Ce(this),this.once(v.decoderWorkerInit,(()=>{e()})))}))}play(e){return new Promise(((t,i)=>{if(!e&&!this._opt.url)return i();this.loading=!0,this.playing=!1,e||(e=this._opt.url),this._opt.url=e,this.clearCheckHeartTimeout(),this.init().then((()=>{this._opt.isNotMute&&this.mute(!1),this.webcodecsDecoder&&this.webcodecsDecoder.once(E.webcodecsH265NotSupport,(()=>{this.emit(E.webcodecsH265NotSupport),this.emit(v.error,E.webcodecsH265NotSupport)})),this.mseDecoder&&this.mseDecoder.once(E.mediaSourceH265NotSupport,(()=>{this.emit(E.mediaSourceH265NotSupport),this.emit(v.error,E.mediaSourceH265NotSupport)})),this.enableWakeLock(),this.stream.fetchStream(e),this.checkLoadingTimeout(),this.stream.once(E.fetchError,(e=>{i(e)})),this.stream.once(E.websocketError,(e=>{i(e)})),this.stream.once(v.streamSuccess,(()=>{t(),this._opt.useMSE&&this.video.play()}))})).catch((e=>{i(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video.clearView(),e()}))}))}_close(){return new Promise(((e,t)=>{this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.playing=!1,this.loading=!1,this.recording=!1,this.audio.pause(),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,setTimeout((()=>{e()}),0)}))}pause(e){return e?this.close():this._close()}mute(e){this.audio.mute(e)}resize(){this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}stopRecordAndSave(){this.recording&&(this.recording=!1)}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&(t=!0)})),(this._opt.showBandwidth||this._opt.text||t)&&(e=!0),e}checkHeart(){this.clearCheckHeartTimeout(),this.checkHeartTimeout()}checkHeartTimeout(){this._checkHeartTimeout=setTimeout((()=>{this.pause(!1).then((()=>{this.emit(v.timeout,v.delayTimeout),this.emit(v.delayTimeout)}))}),1e3*this._opt.heartTimeout)}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.pause(!1).then((()=>{this.emit(v.timeout,v.loadingTimeout),this.emit(v.loadingTimeout)}))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}handleRender(){this.loading&&(this.emit(v.start),this.loading=!1,this.clearCheckLoadingTimeout()),this.playing||(this.playing=!0),this.checkHeart()}updateStats(e){e=e||{},this._startBpsTime||(this._startBpsTime=ne()),le(e.ts)&&(this._stats.ts=e.ts),le(e.buf)&&(this._stats.buf=e.buf),e.fps&&(this._stats.fps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps);const t=ne();t-this._startBpsTime<1e3||(this.emit(v.stats,this._stats),this.emit(v.performance,function(e){let t=0;return e>=24?t=2:e>=15&&(t=1),t}(this._stats.fps)),this._stats.fps=0,this._stats.abps=0,this._stats.vbps=0,this._startBpsTime=t)}resetStats(){this._startBpsTime=null,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn.disable()}destroy(){this._loading=!1,this._playing=!1,this._hasLoaded=!1,this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.video&&(this.video.destroy(),this.video=null),this.audio&&(this.audio.destroy(),this.audio=null),this.stream&&(this.stream.destroy(),this.stream=null),this.recorder&&(this.recorder.destroy(),this.recorder=null),this.control&&(this.control.destroy(),this.control=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.demux&&(this.demux.destroy(),this.demux=null),this.events&&(this.events.destroy(),this.events=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.releaseWakeLock(),this.keepScreenOn=null,this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this.emit("destroy"),this.off(),this.debug.log("play","destroy end")}}var He=_((function(e,t){e.exports=function(){var e,t;function i(t){this.name="__st"+(1e9*Math.random()>>>0)+e+"__",null==t||t.forEach(this.add,this),e+=1}Array.prototype.find||Object.defineProperty(Array.prototype,"find",{configurable:!0,writable:!0,value:function(e){if(null===this)throw new TypeError('"this" is null or not defined');var t=Object(this),i=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var n=arguments[1],o=0;o=t)return n=T(n),r(n.splice(0,n.length)),void(i&&clearTimeout(i));i&&clearTimeout(i),i=setTimeout((function(){i=null,0<(n=T(n)).length&&r(n.splice(0,n.length))}),o.delay)}},G=function(e,t){return Array.isArray(e)?t(e.map((function(e){return o(o({},e),{msg:"string"==typeof e.msg?e.msg:[].concat(e.msg).map(w).join(" ")})}))):t(o(o({},e),{msg:"string"==typeof e.msg?e.msg:w(e.msg)}))},H=function(e){var t,i=!1,n=!1,o=!1,r=[];return e.lifeCycle.on("onConfigChange",(function(){t&&clearTimeout(t),t=setTimeout((function(){var t,s;!o&&e.config&&(o=!0,t=e.config.whiteListUrl,(s=void 0===t?"":t)&&e.sendPipeline([function(t,o){o({url:s,type:g.WHITE_LIST,success:function(t){n=!0;try{var o=t.data||JSON.parse(t),s=o.retcode,a=o.result,A=void 0===a?{}:a;if(0===s){if(i=A.is_in_white_list,e.isWhiteList=i,A.shutdown)return void e.destroy();0<=A.rate&&A.rate<=1&&(e.config.random=A.rate,e.isGetSample=!1)}e.isWhiteList&&r.length?X(e)(r.splice(0),(function(){})):!e.isWhiteList&&r.length&&(r.length=0);var c=e.config.onWhitelist;"function"==typeof c&&c(i)}catch(t){}},fail:function(t){"403 forbidden"===t&&e.destroy(),n=!0}})}],g.WHITE_LIST)(null),o=!1)}),e.config.uin?50:500)})),e.lifeCycle.on("destroy",(function(){r.length=0})),function(t,o){var s;i||null!==(s=null===(s=e.config)||void 0===s?void 0:s.api)&&void 0!==s&&s.reportRequest?o(t.concat(r.splice(0)).map((function(e){return x(e),e}))):(t=t.filter((function(e){return e.level!==p.INFO&&e.level!==p.API_RESPONSE?(x(e),!0):(n||(r.push(e),200<=r.length&&(r.length=200)),!1)}))).length&&o(t)}},J=function(e){return setTimeout((function(){var t=e.config.pvUrl,i=void 0===t?"":t;i&&e.sendPipeline([function(t,n){n({url:i,type:g.PV,fail:function(t){"403 forbidden"===t&&e.destroy()}})}],g.PV)(null)}),100),function(e,t){t(e)}},q=function(e){var t={};return function(i,n){var o,r;e.speedSample?(r="object"==typeof e.repeat?e.repeat:{repeat:e.repeat},o=+r.speed||+r.repeat||5,Array.isArray(i)?(r=i.filter((function(e){var i=!t[e.url]||t[e.url]o))})))}},X=function(e){return function(t){return e.sendPipeline([function(t,i){return i({url:e.config.url||"",data:s(t),method:"post",contentType:"application/x-www-form-urlencoded",type:g.LOG,log:t,requestConfig:{timeout:5e3},success:function(){var n=e.config.onReport;"function"==typeof n&&t.forEach((function(e){n(e)})),"function"==typeof i&&i([])},fail:function(t){"403 forbidden"===t&&e.destroy()}})}],g.LOG)(t)}},Y=function(e){if(!e||!e.reduce||!e.length)throw new TypeError("createPipeline need at least one function param");return 1===e.length?function(t,i){e[0](t,i||O)}:e.reduce((function(e,t){return function(i,n){return void 0===n&&(n=O),e(i,(function(e){return null==t?void 0:t(e,n)}))}}))},Z=(Object.defineProperty(Ae.prototype,"__version__",{get:function(){return console.warn("__version__ has discard, please use version"),"1.24.48"},enumerable:!1,configurable:!0}),Object.defineProperty(Ae.prototype,"LogType",{get:function(){return console.warn("LogType has discard, please use logType"),p},enumerable:!1,configurable:!0}),Ae.prototype.init=function(e){this.setConfig(e);for(var t=0;tc&&o.isInFirstScreen(t.roots[n])&&(c=t.rootsDomNum[n],d=t.time,("object"!=typeof(null===(i=e.config)||void 0===i?void 0:i.pagePerformance)||null!==(i=e.config.pagePerformance)&&void 0!==i&&i.firstScreenInfo)&&(e.firstScreenInfo={element:t.roots[n],timing:d}))})),!d&&Se?A=setTimeout((function(){return a()}),3e3):(s.disconnect(),null==t||t(d)),--Se},A=setTimeout((function(){return a()}),3e3)},isEleInArray:function(e,t){return!(!e||e===document.documentElement)&&(-1!==t.indexOf(e)||this.isEleInArray(e.parentElement,t))},isInFirstScreen:function(e){if(!e||"function"!=typeof e.getBoundingClientRect)return!1;var t=e.getBoundingClientRect(),i=window.innerHeight;return e=window.innerWidth,0<=t.left&&t.left{this.player.on(w[e],(t=>{this.emit(e,t)}))}))}setDebug(e){this.player.updateOption({isDebug:!!e})}mute(){this.player.mute(!0)}cancelMute(){this.player.mute(!1)}setVolume(e){this.player.volume=e}audioResume(){this.player.audio.audioEnabled(!0)}setTimeout(e){e=Number(e),this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e})}setScaleMode(e){let t={isFullResize:!1,isResize:!1};switch(e=Number(e)){case U:t.isFullResize=!1,t.isResize=!1;break;case F:t.isFullResize=!1,t.isResize=!0;break;case P:t.isFullResize=!0,t.isResize=!0}this.player.updateOption(t),this.resize()}pause(){return this.player.pause()}close(){return this._opt.url="",this.player.close()}clearView(){this.player.video.clearView()}play(e){return new Promise(((t,i)=>{if(!e&&!this._opt.url)return this.emit(v.error,E.playError),void i();if(e){if(!this._opt.url)return this._play(e);e===this._opt.url?this.player.playing?t():(this.clearView(),this.player.play(this._opt.url).then((()=>{t()})).catch((()=>{this.player.pause().then((()=>{i()}))}))):this.player.pause().then((()=>(this.clearView(),this._play(e)))).catch((()=>{i()}))}else this.player.play(this._opt.url).then((()=>{t()})).catch((()=>{this.player.pause().then((()=>{i()}))}))}))}_play(o){return new Promise(((r,s)=>{this._opt.url=o;const a=0===o.indexOf("http"),A=a?t:e,c=a||-1!==o.indexOf(".flv")||this._opt.isFlv?i:n;this.player.updateOption({protocol:A,demuxType:c}),this.player.once(E.mediaSourceH265NotSupport,(()=>{this.close()})),this.player.once(E.webcodecsH265NotSupport,(()=>{this.close()})),this.hasLoaded()?this.player.play(o).then((()=>{r()})).catch((()=>{this.player.pause().then((()=>{s()}))})):this.player.once(v.decoderWorkerInit,(()=>{this.player.play(o).then((()=>{r()})).catch((()=>{this.player.pause().then((()=>{s()}))}))}))}))}resize(){this.player.resize()}setBufferTime(e){e=Number(e),this.player.updateOption({videoBuffer:1e3*e})}setRotate(e){e=parseInt(e,10);this._opt.rotate!==e&&-1!==[0,90,270].indexOf(e)&&(this.player.updateOption({rotate:e}),this.resize())}hasLoaded(){return this.player.loaded}setKeepScreenOn(){this.player.updateOption({keepScreenOn:!0})}setFullscreen(e){const t=!!e;this.player.fullscreen!==t&&(this.player.fullscreen=t)}screenshot(e,t,i,n){return this.player.video.screenshot(e,t,i,n)}startRecord(e,t){return new Promise(((i,n)=>{this.player.playing?(this.player.startRecord(e,t),i()):n()}))}stopRecordAndSave(){this.player.recording&&this.player.stopRecordAndSave()}isPlaying(){return this.player.playing}isMute(){return this.player.audio.isMute}isRecording(){return this.player.recorder.recording}destroy(){this.player.destroy(),this.player=null,this.off()}}return window.Jessibuca=Je,Je})); diff --git a/web - 副本/client/src/.DS_Store b/web - 副本/client/src/.DS_Store new file mode 100644 index 0000000..c662a99 Binary files /dev/null and b/web - 副本/client/src/.DS_Store differ diff --git a/web - 副本/client/src/app.js b/web - 副本/client/src/app.js new file mode 100644 index 0000000..3ae1d4f --- /dev/null +++ b/web - 副本/client/src/app.js @@ -0,0 +1,27 @@ +import React, { useEffect } from 'react'; +import { + Auth, AlarmConfure, Article, Party,Organization + +} from './sections'; +import Layout from './layout'; +import "./app.less" + +function App(props) { + const { projectName } = props; + + useEffect( + () => { + document.title = projectName; + }, + [projectName], + ); + + return ( + + ); +} + +export default App; diff --git a/web - 副本/client/src/app.less b/web - 副本/client/src/app.less new file mode 100644 index 0000000..8ca7890 --- /dev/null +++ b/web - 副本/client/src/app.less @@ -0,0 +1,17 @@ +#App{ + width: 100vw; + height: 100vh; + background-color: white; + // div:first-child{ + // width:100%; + // height:100%; + // } +} + +#layout{ + width:100%; + height:100%; +} +.ant-table-thead > tr > th{ + background: #fafafa !important; +} \ No newline at end of file diff --git a/web - 副本/client/src/components/README.txt b/web - 副本/client/src/components/README.txt new file mode 100644 index 0000000..cff16c8 --- /dev/null +++ b/web - 副本/client/src/components/README.txt @@ -0,0 +1 @@ +��Ŀ¼���ڴ����Ŀͨ����� \ No newline at end of file diff --git a/web - 副本/client/src/components/Upload/fujian.js b/web - 副本/client/src/components/Upload/fujian.js new file mode 100644 index 0000000..c67f694 --- /dev/null +++ b/web - 副本/client/src/components/Upload/fujian.js @@ -0,0 +1,340 @@ +"use strict"; + +import React, { Component } from "react"; +import { connect } from "react-redux"; +import { Spin, Upload, message, Modal, Card, Button } from "antd"; +import moment from "moment"; +import { PlusOutlined, UploadOutlined, CloseOutlined } from "@ant-design/icons"; + +class Uploads extends Component { + constructor(props) { + super(props); + this.ApiRoot = localStorage.getItem("tyApiRoot"); + this.state = { + fileUploading: false, + fileList: [], + curPreviewPic: "", + delPicIng: false, + removeFilesList: [], + }; + } + + dealName = (uploaded) => { + let realName = uploaded?.split("/")[2]; + let x1 = realName?.split("."); + let x2 = x1?.[0]?.split("_"); + let showName = `${x2?.[0]}.${x1?.[1]}`; + return showName; + }; + + setFileList = (value) => { + let defaultFileList = []; + defaultFileList = value.map((u, index) => { + let fileUrl = `${this.ApiRoot}/${u.storageUrl}`; + return { + uid: -index - 1, + name: this.dealName(u.url), + status: "done", + storageUrl: u?.url, + url: u?.url, + }; + }); + // onChange(defaultFileList) + this.setState({ + fileList: defaultFileList, + }); + }; + + componentDidMount() { + const { value } = this.props; + if (value) { + this.setFileList(value); + } + } + + componentWillReceiveProps(np) { + const { dispatch, value: thisEditData, onChange } = this.props; + const { value: nextEditData, clearFileList } = np; + + const setFileList = () => { + let defaultFileList = []; + defaultFileList = nextEditData.map((u, index) => { + let fileUrl = `${this.ApiRoot}/${u.storageUrl}`; + return { + uid: -index - 1, + name: this.dealName(u.storageUrl), + status: "done", + storageUrl: u.storageUrl, + url: u?.url, + size: u.size || -1, + }; + }); + this.setState({ + fileList: defaultFileList, + }); + }; + + if (nextEditData && nextEditData.length) { + if (!thisEditData || !this.state.fileList.length) { + setFileList(); + } else if (nextEditData.length != thisEditData.length) { + setFileList(); + } else { + let repeat = true; + for (let i = 0; i < thisEditData.length; i++) { + if (thisEditData[i] != nextEditData[i]) { + repeat = false; + break; + } + } + if (!repeat) { + setFileList(); + } + } + } + + if (clearFileList) { + this.setState({ + fileList: [], + }); + } + // else{ + // this.setState({ + // fileList:[], + // }) + // } + } + + render() { + const UploadPath = { + project: [ + "txt", + "dwg", + "doc", + "docx", + "xls", + "xlsx", + "pdf", + "png", + "jpg", + "rar", + "zip", + ], + report: ["doc", "docx", "xls", "xlsx", "pdf"], + data: ["txt", "xls", "xlsx"], + image: ["png", "jpg", "svg", "jpeg"], + three: ["js"], + video: ["mp4"], + }; + /** + * uploadType 【string】 主要区别文件上传路径 以及类型 以 web/routes/attachment/index.js 中 UploadPath 的 key 值为准;默认 project; + * disabled 【boolean】 上传是否可用 + * maxFilesNum 【number】 最大上传数量 + * fileTypes 【array[string]】 可允许上传的文件类型; + * maxFileSize 【number】 单个文件最大大小 M + * listType 【antd】 upload 组件的属性 + * onChange 【function】 文件数量变化时候回调 返回文件 + * value 【array[obj]】 编辑数据 [{url:'xxx', [size:999]}] + * onStateChange 【function】 文件状态改变回调函数 上传中 return { uploading:true/false } + */ + const { + uploadType, + disabled, + maxFilesNum, + fileTypes, + maxFileSize, + listType, + onChange, + value, + showUploadList, + onStateChange, + } = this.props; + const { fileList, curPreviewPic, delPicIng, removeFilesList } = this.state; + const that = this; + let uploadType_ = uploadType || "project"; + let maxFilesNum_ = maxFilesNum || 1; + let defaultFileTypes = fileTypes || UploadPath[uploadType_]; + const uploadProps = { + name: "checkFile_", + multiple: false, + showUploadList: showUploadList || true, + action: `${this.ApiRoot}/attachments/${uploadType_}`, + listType: listType || "text", + disabled: disabled, + beforeUpload: (file) => { + if (fileList.length >= maxFilesNum_) { + message.warning(`最多选择${maxFilesNum_}个文件上传`); + return false; + } + if (file.name.length > 60) { + message.warning(`文件名过长(大于60字符),请修改后上传`); + return false; + } + const extNames = file.name.split("."); + var reg = /^[\.\s\u4e00-\u9fa5a-zA-Z0-9_-]{0,}$/; + if (!reg.exec(file.name)) { + message.warning( + `文件名包含除字母、汉字、数字、中划线、下划线之外的字符,请修改后上传` + ); + return false; + } + let isDAE = false; + if (extNames.length > 0) { + let fileType = extNames[extNames.length - 1].toLowerCase(); + isDAE = defaultFileTypes.some((f) => f == fileType); + } + if (!isDAE) { + message.error(`只能上传 ${defaultFileTypes.join()} 格式的文件!`); + return false; + } + const isLt = file.size / 1024 / 1024 < (maxFileSize || 3); + if (!isLt) { + message.error(`文件必须小于${maxFileSize || 3}MB!`); + return false; + } + this.setState({ + fileUploading: true, + }); + if (onStateChange) { + onStateChange({ uploading: true }); + } + }, + onChange(info) { + const status = info.file.status; + if (status === "uploading") { + that.setState({ + fileList: info.fileList, + }); + } + if (status === "done") { + let { uploaded, url } = info.file.response; + let size = info.file.size; + let nextFileList = fileList; + nextFileList[nextFileList.length - 1] = { + uid: -moment().unix(), + name: that.dealName(uploaded), + status: "done", + storageUrl: uploaded, + url: url, + size: size, + }; + onChange(nextFileList); + that.setState({ + fileUploading: false, + fileList: nextFileList, + }); + if (onStateChange) { + onStateChange({ uploading: false }); + } + } else if (status === "error") { + that.setState({ + fileUploading: false, + }); + message.error(`${info.file.name} 上传失败,请重试`); + if (onStateChange) { + onStateChange({ uploading: false }); + } + } + }, + onRemove(file) { + let nextFileList = []; + fileList.map((f, i) => { + if (f.uid != file.uid) { + nextFileList.push(f); + } + }); + let nextRemoveFiles = removeFilesList.concat([file.storageUrl]); + if (curPreviewPic == file.url) { + that.setState({ + curPreviewPic: "", + }); + } + onChange(nextFileList); + that.setState({ + fileList: nextFileList, + removeFilesList: nextRemoveFiles, + }); + }, + onPreview(file) { + let filePostfix = file.url.split(".").pop(); + filePostfix = filePostfix.toLowerCase(); + if (UploadPath.image.some((img) => img == filePostfix)) { + that.setState({ + curPreviewPic: file.url, + }); + } else { + message.warn("仅支持图片预览"); + } + }, + }; + + let fileList_ = fileList; + // .map(f => { + // if (f.storageUrl) { + // let realName = f.storageUrl.split('/').pop() + // if (f.name != realName) { + // f.name = realName + // } + // } + // return f + // }) + + return ( +
    + + + {disabled ? ( + "" + ) : listType == "picture-card" ? ( + fileList.length >= maxFilesNum_ ? null : ( +
    + +
    上传图片
    +
    + ) + ) : ( + + )} +
    + {curPreviewPic ? ( + +
    + 图片预览 + { + this.setState({ curPreviewPic: "" }); + }} + > + + +
    + +
    + ) : ( + "" + )} +
    +
    + ); + } +} + +function mapStateToProps(state) { + const { auth } = state; + return { + user: auth.user, + }; +} + +export default connect(mapStateToProps)(Uploads); diff --git a/web - 副本/client/src/components/Upload/index.js b/web - 副本/client/src/components/Upload/index.js new file mode 100644 index 0000000..f8052a0 --- /dev/null +++ b/web - 副本/client/src/components/Upload/index.js @@ -0,0 +1,318 @@ +'use strict'; + +import React, { Component } from 'react'; +import { connect } from 'react-redux'; +import { Spin, Upload, message, Modal, Card, Button } from 'antd'; +import moment from 'moment'; +import { PlusOutlined, UploadOutlined, CloseOutlined } from '@ant-design/icons'; + +class Uploads extends Component { + constructor(props) { + super(props); + this.ApiRoot = localStorage.getItem('tyApiRoot') + this.state = { + fileUploading: false, + fileList: [], + curPreviewPic: '', + delPicIng: false, + removeFilesList: [] + }; + } + + dealName = (uploaded) => { + let realName = uploaded?.split('/')[2] + let x1 = realName?.split('.') + let x2 = x1[0].split('_') + let showName = `${x2[0]}.${x1[1]}` + return showName + } + + setFileList = (value) => { + let defaultFileList = []; + defaultFileList = value?.map((u, index) => { + let fileUrl = `${this.ApiRoot}/${u.storageUrl}`; + return { + uid: -index - 1, + name: this.dealName(u.url), + status: 'done', + storageUrl: u.url, + url: fileUrl + }; + }); + // onChange(defaultFileList) + + this.setState({ + fileList: defaultFileList + }); + }; + + componentDidMount() { + const { value } = this.props; + if (value) { + this.setFileList(value); + } + } + + componentWillReceiveProps(np) { + const { dispatch, value: thisEditData, onChange } = this.props; + const { value: nextEditData } = np; + + const setFileList = () => { + let defaultFileList = []; + defaultFileList = nextEditData.map((u, index) => { + let fileUrl = `${this.ApiRoot}/${u.storageUrl}`; + return { + uid: -index - 1, + name: this.dealName(u.storageUrl), + status: 'done', + storageUrl: u.storageUrl, + url: fileUrl, + size: u.size || -1 + }; + }); + this.setState({ + fileList: defaultFileList + }); + }; + + if (nextEditData && nextEditData.length) { + if (!thisEditData || !this.state.fileList.length) { + setFileList(); + } else if (nextEditData.length != thisEditData.length) { + setFileList(); + } else { + let repeat = true; + for (let i = 0; i < thisEditData.length; i++) { + if (thisEditData[i] != nextEditData[i]) { + repeat = false; + break; + } + } + if (!repeat) { + setFileList(); + } + } + } + // else{ + // this.setState({ + // fileList:[], + // }) + // } + } + + render() { + const UploadPath = { + project: ['txt', 'dwg', 'doc', 'docx', 'xls', 'xlsx', 'pdf', 'png', 'jpg', 'rar', 'zip'], + report: ['doc', 'docx', 'xls', 'xlsx', 'pdf'], + data: ['txt', 'xls', 'xlsx'], + image: ['png', 'jpg', 'svg', 'jpeg'], + three: ['js'], + video: ['mp4'] + }; + /** + * uploadType 【string】 主要区别文件上传路径 以及类型 以 web/routes/attachment/index.js 中 UploadPath 的 key 值为准;默认 project; + * disabled 【boolean】 上传是否可用 + * maxFilesNum 【number】 最大上传数量 + * fileTypes 【array[string]】 可允许上传的文件类型; + * maxFileSize 【number】 单个文件最大大小 M + * listType 【antd】 upload 组件的属性 + * onChange 【function】 文件数量变化时候回调 返回文件 + * value 【array[obj]】 编辑数据 [{url:'xxx', [size:999]}] + * onStateChange 【function】 文件状态改变回调函数 上传中 return { uploading:true/false } + */ + const { + uploadType, + disabled, + maxFilesNum, + fileTypes, + maxFileSize, + listType, + onChange, + value, + showUploadList, + onStateChange + } = this.props; + const { fileList, curPreviewPic, delPicIng, removeFilesList } = this.state; + // console.log('吱吱吱', fileList) + + const that = this; + let uploadType_ = uploadType || 'project'; + let maxFilesNum_ = maxFilesNum || 1; + let defaultFileTypes = fileTypes || UploadPath[uploadType_]; + const uploadProps = { + name: 'checkFile_', + multiple: false, + showUploadList: showUploadList || true, + action: `${this.ApiRoot}/attachments/${uploadType_}`, + listType: listType || 'text', + disabled: disabled, + beforeUpload: (file) => { + if (fileList.length >= maxFilesNum_) { + message.warning(`最多选择${maxFilesNum_}个文件上传`); + return false; + } + if (file.name.length > 60) { + message.warning(`文件名过长(大于60字符),请修改后上传`); + return false; + } + const extNames = file.name.split('.'); + var reg = /^[\.\s\u4e00-\u9fa5a-zA-Z0-9_-]{0,}$/; + if (!reg.exec(file.name)) { + message.warning(`文件名包含除字母、汉字、数字、中划线、下划线之外的字符,请修改后上传`); + return false; + } + let isDAE = false; + if (extNames.length > 0) { + let fileType = extNames[extNames.length - 1].toLowerCase(); + isDAE = defaultFileTypes.some((f) => f == fileType); + } + if (!isDAE) { + message.error(`只能上传 ${defaultFileTypes.join()} 格式的文件!`); + return false; + } + const isLt = file.size / 1024 / 1024 < (maxFileSize || 3); + if (!isLt) { + message.error(`文件必须小于${maxFileSize || 3}MB!`); + return false; + } + this.setState({ + fileUploading: true + }); + if (onStateChange) { + onStateChange({ uploading: true }); + } + }, + onChange(info) { + const status = info.file.status; + if (status === 'uploading') { + that.setState({ + fileList: info.fileList + }); + } + if (status === 'done') { + let { uploaded, url } = info.file.response; + let size = info.file.size; + let nextFileList = fileList; + nextFileList[nextFileList.length - 1] = { + uid: -moment().unix(), + name: that.dealName(uploaded), + status: 'done', + storageUrl: uploaded, + url: url, + size: size + }; + onChange(nextFileList); + that.setState({ + fileUploading: false, + fileList: nextFileList + }); + if (onStateChange) { + onStateChange({ uploading: false }); + } + } else if (status === 'error') { + that.setState({ + fileUploading: false + }); + message.error(`${info.file.name} 上传失败,请重试`); + if (onStateChange) { + onStateChange({ uploading: false }); + } + } + }, + onRemove(file) { + let nextFileList = []; + fileList.map((f, i) => { + if (f.uid != file.uid) { + nextFileList.push(f); + } + }); + let nextRemoveFiles = removeFilesList.concat([file.storageUrl]); + if (curPreviewPic == file.url) { + that.setState({ + curPreviewPic: '' + }); + } + onChange(nextFileList); + that.setState({ + fileList: nextFileList, + removeFilesList: nextRemoveFiles + }); + }, + onPreview(file) { + let filePostfix = file.url.split('.').pop(); + filePostfix = filePostfix.toLowerCase(); + if (UploadPath.image.some((img) => img == filePostfix)) { + that.setState({ + curPreviewPic: file.url + }); + } else { + message.warn('仅支持图片预览'); + } + } + }; + + let fileList_ = fileList + // .map(f => { + // if (f.storageUrl) { + // let realName = f.storageUrl.split('/').pop() + // if (f.name != realName) { + // f.name = realName + // } + // } + // return f + // }) + return ( +
    + + + { + disabled ? ( + '' + ) : + listType == 'picture-card' ? + ( + fileList.length >= maxFilesNum_ ? null : ( +
    + +
    上传图片
    +
    + ) + ) : ( + + ) + } +
    + { + curPreviewPic ? ( + +
    + 文件预览 + { this.setState({ curPreviewPic: '' }); }} + > + + +
    + +
    + ) : '' + } +
    +
    + ); + } +} + +function mapStateToProps(state) { + const { auth } = state + return { + user: auth.user + }; +} + +export default connect(mapStateToProps)(Uploads); diff --git a/web - 副本/client/src/components/index.js b/web - 副本/client/src/components/index.js new file mode 100644 index 0000000..fe53401 --- /dev/null +++ b/web - 副本/client/src/components/index.js @@ -0,0 +1,5 @@ +import Scroller from './scroller'; + +export { + Scroller, +}; diff --git a/web - 副本/client/src/components/scroller/index.js b/web - 副本/client/src/components/scroller/index.js new file mode 100644 index 0000000..135319f --- /dev/null +++ b/web - 副本/client/src/components/scroller/index.js @@ -0,0 +1,47 @@ +'use strict'; + +import React from 'react'; +import PropTypes from 'prop-types'; +import PerfectScrollbar from 'perfect-scrollbar'; + +class Scroller extends React.Component { + constructor(props) { + super(props); + this.ps = null; + } + + scroller = () => { + const container = document.getElementById(this.props.containerId || 'my-scroller'); + if (container) { + if (this.ps) { + this.ps.update(); + } else { + this.ps = new PerfectScrollbar(container, this.props.scrollerOpts || { suppressScrollX: true }); + } + } + } + + componentDidMount() { + this.scroller() + } + + componentDidUpdate() { + this.scroller() + } + + render() { + const { containerId, height, children } = this.props; + return ( +
    + {children} +
    + ); + } + +} +Scroller.propTypes = { + containerId: PropTypes.string.isRequired, + height: PropTypes.number.isRequired +}; + +export default Scroller; diff --git a/web - 副本/client/src/index.js b/web - 副本/client/src/index.js new file mode 100644 index 0000000..824a005 --- /dev/null +++ b/web - 副本/client/src/index.js @@ -0,0 +1,7 @@ +import React from 'react'; +import { + render, +} from 'react-dom'; +import App from './app'; + +render((), document.getElementById('App')); diff --git a/web - 副本/client/src/layout/actions/global.js b/web - 副本/client/src/layout/actions/global.js new file mode 100644 index 0000000..6259ec2 --- /dev/null +++ b/web - 副本/client/src/layout/actions/global.js @@ -0,0 +1,42 @@ +import { Request } from '@peace/utils'; +import { RouteTable,ApiTable } from '$utils'; + +export const INIT_LAYOUT = 'INIT_LAYOUT'; +export function initLayout(title, copyright, sections, actions) { + return { + type: INIT_LAYOUT, + payload: { + title, + copyright, + sections, + actions, + }, + }; +} + +export const RESIZE = 'RESIZE'; +export function resize(clientHeight, clientWidth) { + return { + type: RESIZE, + payload: { + clientHeight, + clientWidth, + }, + }; +} + +export const INIT_API_ROOT = 'INIT_API_ROOT'; +export function initApiRoot() { + return dispatch => { + Request.get(ApiTable.apiRoot).then(res => { + localStorage.setItem('tyApiRoot', res.root); + localStorage.setItem('qndmn', res.qndmn); + dispatch({ + type: INIT_API_ROOT, + payload: { + apiRoot: res.root + } + }) + }); + } +} diff --git a/web - 副本/client/src/layout/components/footer/index.js b/web - 副本/client/src/layout/components/footer/index.js new file mode 100644 index 0000000..130f7b9 --- /dev/null +++ b/web - 副本/client/src/layout/components/footer/index.js @@ -0,0 +1,13 @@ +import React from 'react'; +import style from './style.css'; + +function Footer({ ...props }) { + const { footerProps } = props; + return ( +
    + {props.children} +
    + ); +} + +export default Footer; diff --git a/web - 副本/client/src/layout/components/footer/style.css b/web - 副本/client/src/layout/components/footer/style.css new file mode 100644 index 0000000..c1bea3c --- /dev/null +++ b/web - 副本/client/src/layout/components/footer/style.css @@ -0,0 +1,5 @@ +.footer { + text-align: center; + font-size: 12px; + color: #999; +} \ No newline at end of file diff --git a/web - 副本/client/src/layout/components/header/index.js b/web - 副本/client/src/layout/components/header/index.js new file mode 100644 index 0000000..864dc6a --- /dev/null +++ b/web - 副本/client/src/layout/components/header/index.js @@ -0,0 +1,112 @@ +import React, { useEffect } from 'react'; +import { Menu, message } from 'antd'; +import { Link } from 'react-router-dom'; +import { connect } from 'react-redux'; +import { UserOutlined, LogoutOutlined } from '@ant-design/icons'; +import darkVars from '$themes/dark.json'; +import lightVars from '$themes/light.json'; +import exampleVars from '$themes/example.json'; + +const themeMap = { + light: lightVars, + dark: darkVars, + example: exampleVars, +}; + +function Header(props) { + const { + dispatch, history, user, pathname, toggleCollapsed, collapsed, actions, profile, onChangeTheme, + } = props; + + useEffect(() => { + user?.id && actions?.profile?.getProfile && dispatch(actions.profile.getProfile(user?.id)); + }, []); + + const changeTheme = (themeKey) => { + localStorage.setItem('theme-name', themeKey); + window.less.modifyVars(themeMap[themeKey]).catch((error) => { + console.log('%c [ error ]-28', 'font-size:13px; background:pink; color:#bf2c9f;', error); + message.error('Failed to reset theme'); + }); + onChangeTheme(themeKey); + }; + + const handelClick = (item) => { + if (item.key === 'logout') { + dispatch(actions.auth.logout(user)); + sessionStorage.removeItem('selectedKeys'); + history.push('/brief'); + } + // else if (item.key === 'themeLight') { + // changeTheme('light'); + // } else if (item.key === 'themeDark') { + // changeTheme('dark'); + // } + }; + + let current = pathname; + if (pathname === '/' || pathname === '') { + current = 'default'; + } else if (pathname.charAt(0) === '/') { + current = pathname.substring(1); + } + + if (current.indexOf('/') !== -1) { + current = current.substring(0, current.indexOf('/')); + } + + return ( +
    +
    +
    + {/* */} + + 党建工会后台管理 + + +
    +
    + + )} + > + {/* }> + 个人设置 + */} + }> + 退出 + + + +
    + + ); +} + +function mapStateToProps(state) { + const { global, auth, profile } = state; + return { + actions: global.actions, + user: auth.user, + profile: profile.data || {}, + }; +} + +export default connect(mapStateToProps)(Header); diff --git a/web - 副本/client/src/layout/components/sider/index.js b/web - 副本/client/src/layout/components/sider/index.js new file mode 100644 index 0000000..7634d16 --- /dev/null +++ b/web - 副本/client/src/layout/components/sider/index.js @@ -0,0 +1,97 @@ +import React, { useEffect, useState } from 'react'; +import { Menu } from 'antd'; + +function Sider(props) { + const { + dispatch, themeName, pathname, sections, user, + } = props; + const [items, setItems] = useState([]); + const [rootSubmenuKeys, setRootSubmenuKeys] = useState([]); + const [selectedKeys, setSelectedKeys] = useState([]); + const [openKeys, setOpenKeys] = useState([]); + + useEffect(() => { + const newItems = sections.reduce((p, c) => { + if (typeof c.getNavItem === 'function') { + const item = c.getNavItem(user, dispatch); + if (item != null) { + if (Array.isArray(item)) { + // eslint-disable-next-line no-param-reassign + p = p.concat(item); + } else { + p.push(item); + } + } + } + return p; + }, []); + setItems(newItems); + setRootSubmenuKeys(newItems.map((v) => v.key)); + const selKey = sessionStorage.getItem('selectedKeys', selectedKeys); + + if (selKey) { + setSelectedKeys([selKey]); + newItems && newItems.length && newItems.forEach((e) => { + const children = e.props?.children; + if (Array.isArray(children)) { + children.find((t) => t.key === selKey) && setOpenKeys([e.key]); + } else if (children?.key === selKey) { + setOpenKeys([children.key]); + } else if (e.key === selKey) { + setOpenKeys([e.key]); + } + }); + return; + } + + const firstItem = newItems[0] || null; + + if (firstItem) { + const { children } = firstItem.props; + if (Array.isArray(children)) { + setSelectedKeys([children[0].key]); + setOpenKeys([firstItem.key]); + } else if (children.key) { + setSelectedKeys([children.key]); + setOpenKeys([firstItem.key]); + } else { + setSelectedKeys([firstItem.key]); + } + } + }, []); + + useEffect(() => { + if (pathname === '/profile') { + setSelectedKeys([]); + setOpenKeys([]); + } + }, [pathname]); + + const onOpenChange = (keys) => { + const latestOpenKey = keys.find((key) => openKeys.indexOf(key) === -1); + if (rootSubmenuKeys.indexOf(latestOpenKey) === -1) { + setOpenKeys(keys); + } else { + setOpenKeys(latestOpenKey ? [latestOpenKey] : []); + } + }; + + return ( + { + setSelectedKeys(e.selectedKeys); + sessionStorage.setItem('selectedKeys', e.selectedKeys); + }} + onOpenChange={onOpenChange} + > + {items} + + ); +} + +export default Sider; diff --git a/web - 副本/client/src/layout/containers/index.js b/web - 副本/client/src/layout/containers/index.js new file mode 100644 index 0000000..cb81ad3 --- /dev/null +++ b/web - 副本/client/src/layout/containers/index.js @@ -0,0 +1,5 @@ +import Layout from './layout'; +import NoMatch from './no-match'; + +export { Layout }; +export { NoMatch }; diff --git a/web - 副本/client/src/layout/containers/layout/breadcrumb.js b/web - 副本/client/src/layout/containers/layout/breadcrumb.js new file mode 100644 index 0000000..1eec003 --- /dev/null +++ b/web - 副本/client/src/layout/containers/layout/breadcrumb.js @@ -0,0 +1,63 @@ +import React from 'react'; +import { Breadcrumb } from 'antd'; +import withBreadcrumbs from 'react-router-breadcrumbs-hoc'; +import { Link } from 'react-router-dom'; + +const extRoutes = [{ path: '/project-monitor/things/struct/:id/configuration/station', breadcrumb: '测点' }]; + +function Breadcrumbs(props) { + const excludePaths = [ + '/', + '/project-monitor/things', + '/project-monitor/things/struct', + '/project-monitor/things/struct/:id', + '/project-monitor/things/struct/:id/configuration/station', + '/project-monitor/things/struct/:id/configuration/threshold', + '/project-monitor/things/struct/:id/configuration/2d', + '/project-monitor/things/struct/:id/configuration/3d', + '/project-monitor/things/struct/:id/configuration/glbim', + '/project-monitor/things/struct/:id/configuration/combCalc', + '/project-monitor/things/struct/:id/configuration/video', + '/project-monitor/things/struct/:id/configuration/collection', + '/project-monitor/things/struct/:id/configuration/aggregate', + '/project-monitor/structure/things', + '/project-monitor/structure/things/:id', + '/project-monitor/structure/things/:id/equipment', + ]; + const noLink = [ + '/project-monitor/things/struct/:id/configuration', + ]; + const { routes } = props; + + const Bread = withBreadcrumbs(routes.concat(extRoutes), { excludePaths })(({ breadcrumbs }) => ( + + { + breadcrumbs.map((bc, index) => ( + + { + bc.component + ? noLink.includes(bc.match.path) ? bc.breadcrumb : ( + + {bc.breadcrumb} + + ) + : bc.breadcrumb + } + + )) + } + + )); + + return ( + + ); +} + +export default Breadcrumbs; diff --git a/web - 副本/client/src/layout/containers/layout/index.js b/web - 副本/client/src/layout/containers/layout/index.js new file mode 100644 index 0000000..2fdd86a --- /dev/null +++ b/web - 副本/client/src/layout/containers/layout/index.js @@ -0,0 +1,239 @@ +import "./index.less"; +import React, { useState, useEffect, useMemo } from "react"; +import { connect } from "react-redux"; +import { push } from "react-router-redux"; +import { message, Layout, Breadcrumb, Badge } from "antd"; +import { MenuFoldOutlined, MenuUnfoldOutlined } from "@ant-design/icons"; +import * as NProgress from "nprogress"; +import PerfectScrollbar from "perfect-scrollbar"; +import darkVars from "$themes/dark.json"; +import lightVars from "$themes/light.json"; +// import themeVars from '$themes/theme.json'; +import Sider from "../../components/sider"; +import Header from "../../components/header"; + +import Breadcrumbs from "./breadcrumb"; +import { resize } from "../../actions/global"; +import { useLocation } from "react-router"; + +NProgress.configure({ + template: ` +
    +
    +
    +
    +
    +
    + `, +}); +const headerHeight = 48; +const footerHeight = 0; +// let scrollbar + +function LayoutContainer(props) { + const { + dispatch, + msg, + user, + copyright, + children, + sections, + clientWidth, + clientHeight, + location, + match, + routes, + history, + } = props; + // 根据登录验证,如果尚未登录,则不可跳转/article + useEffect(() => { + const { pathname } = location; + const rightList = ['/brief']; + if (rightList.every((path) => pathname.indexOf(path) == -1)) { + if (!sessionStorage.getItem("user")) { + dispatch(push("/brief")); + } + } + + }, [location]); + const [themeName, setThemeName] = useState( + localStorage.getItem("theme-name") || "light" + ); + const [collapsed, setCollapsed] = useState(false); + const [isHomePage, setIsHomePage] = useState(true); + + NProgress.start(); + const doResize = (collapse) => { + const extraHeight = headerHeight + footerHeight; + // const { pathname } = location; + dispatch( + resize( + document.body.clientHeight - extraHeight - 4, + document.body.clientWidth - (collapse ? 80 : 200) + ) + ); + }; + + useEffect(() => { + const { pathname } = location; + if (pathList.some((path) => pathname.indexOf(path) != -1)) { + setIsHomePage(false); + } else { + setIsHomePage(true); + } + }, [location]); + + useEffect(() => { + window.less + .modifyVars(themeName === "light" ? lightVars : darkVars) + .then(() => { + doResize(collapsed); + }) + .catch((error) => { + doResize(collapsed); + message.error("主题切换失败"); + }); + window.onresize = () => { + doResize(collapsed); + }; + + if (location.pathname === "/") { + dispatch(push("/brief")); + return; + } + }, []); + + useEffect(() => { + NProgress.done(); + + if (msg) { + message.destroy(); + if (msg.done) { + message.success(msg.done); + } + if (msg.error) { + message.error(msg.error); + } + } + }); + + const contentStyle = { + position: "relative", + height: clientHeight - 56, + }; + + const renderTrigger = () => ( + { + setCollapsed(!collapsed); + resize(!collapsed); + }} + > + {collapsed ? : } + + ); + + return ( + + {isHomePage ? ( + + +
    +
    + +
    +
    {children}
    +
    +
    +
    + ) : ( +
    + + + + + + +
    { + setCollapsed(!collapsed); + doResize(!collapsed); + }} + // onChangeTheme={(themeName) => { + // setThemeName(themeName); + // }} + collapsed={collapsed} + history={history} + /> + +
    +
    + {children} +
    +
    + + +
    + )} +
    + ); +} + +function mapStateToProps(state) { + const { global, auth, ajaxResponse } = state; + return { + title: global.title, + copyright: global.copyright, + sections: global.sections, + actions: global.actions, + clientWidth: global.clientWidth, + clientHeight: global.clientHeight, + msg: ajaxResponse.msg, + user: auth.user, + }; +} + +export default connect(mapStateToProps)(LayoutContainer); + + +var pathList = [ + '/article', + '/party', + '/organization' +]; \ No newline at end of file diff --git a/web - 副本/client/src/layout/containers/layout/index.less b/web - 副本/client/src/layout/containers/layout/index.less new file mode 100644 index 0000000..dbd801c --- /dev/null +++ b/web - 副本/client/src/layout/containers/layout/index.less @@ -0,0 +1,31 @@ +@import "~antd/dist/antd.less"; +@import "../../../styles/antd.less"; +@import '~perfect-scrollbar/css/perfect-scrollbar.css'; +@import '~nprogress/nprogress.css'; +@import '~react-h5-audio-player/lib/styles.less'; +@rhap_theme-color: #395aff !important; // Color of all buttons and volume/progress indicators +@rhap_background-color: transparent !important; // Color of the player background +@rhap_bar-color: #959cc5 !important; // Color of volume and progress bar +@rhap_time-color: #fff !important; // Font color of current time and duration +@rhap_font-family: inherit !important; + +.custom-modal{ + .ant-modal-content { + background-color: transparent !important; + box-shadow: none !important + } +} +.custom-select { + background: linear-gradient(90deg, #040712 0%, #1D337A 100%) !important; + .ant-select-item-option-selected:not(.ant-select-item-option-disabled){ + background: linear-gradient(90deg, #040712 0%, #1D337A 100%) !important; + color: #fff !important; + } + .ant-select-item-option-active:not(.ant-select-item-option-disabled){ + background: linear-gradient(90deg, #040712 0%, #1D337A 100%) !important; + } + .ant-select-item { + color: #fff !important; + } +} + \ No newline at end of file diff --git a/web - 副本/client/src/layout/containers/no-match/index.js b/web - 副本/client/src/layout/containers/no-match/index.js new file mode 100644 index 0000000..d3c1737 --- /dev/null +++ b/web - 副本/client/src/layout/containers/no-match/index.js @@ -0,0 +1,21 @@ +import React from 'react'; +import moment from 'moment'; + +function NoMatch(props) { + return ( +
    +

    404

    +

    PAGE NOT FOUND

    +

    很遗憾,您暂时无法访问该页面。

    +

    请检查您访问的链接地址是否正确。

    +

    + Copyright © + {moment().year()} + {' '} + 飞尚 +

    +
    + ); +} + +export default NoMatch; diff --git a/web - 副本/client/src/layout/index.js b/web - 副本/client/src/layout/index.js new file mode 100644 index 0000000..1222a62 --- /dev/null +++ b/web - 副本/client/src/layout/index.js @@ -0,0 +1,180 @@ +import React, { useEffect, useState } from "react"; +import moment from "moment"; +import { Provider } from "react-redux"; +import { createBrowserHistory } from "history"; +import { ConnectedRouter } from "connected-react-router"; +import { Switch, Route } from "react-router-dom"; +import { ConfigProvider } from "antd"; +import zhCN from "antd/lib/locale/zh_CN"; +import { basicReducer } from "@peace/utils"; +import * as layoutActions from "./actions/global"; +import { Layout, NoMatch } from "./containers"; +import configStore from "./store"; +import "moment/locale/zh-cn"; + +moment.locale("zh-cn"); + +const { initLayout, initApiRoot } = layoutActions; + +function Root(props) { + const { sections, title, copyright } = props; + const [history, setHistory] = useState(null); + const [store, setStore] = useState(null); + const [outerRoutes, setOuterRoutes] = useState([]); + const [combineRoutes, setCombineRoutes] = useState([]); + const [innnerRoutes, setInnerRoutes] = useState([]); + + const flatRoutes = (routes) => { + const combineRoutes = []; + + function flat(routes, parentRoute) { + routes.forEach((route, i) => { + const obj = { + path: route.path, + breadcrumb: route.breadcrumb, + component: route.component || null, + authCode: route.authCode || "", + key: route.key, + }; + if (!route.path.startsWith("/")) { + console.error(`路由配置需以 "/" 开始:${route.path}`); + } + if (route.path.length > 1 && route.path[route.path.length] == "/") { + console.error(`除根路由路由配置不可以以 "/" 结束:${route.path}`); + } + if (parentRoute && parentRoute != "/") { + obj.path = parentRoute + route.path; + } + if (route.exact === false) { + obj.exact = false; + } + if (route.hasOwnProperty("childRoutes")) { + combineRoutes.push(obj); + flat(route.childRoutes, obj.path); + } else { + combineRoutes.push(obj); + } + }); + } + + flat(routes); + return combineRoutes; + }; + + const initReducer = (reducers, reducerName, action) => { + let reducerParams = {}; + const { actionType, initReducer, reducer } = action()(); + if (initReducer || reducer) { + if (reducer) { + if (reducer.name) { + reducerName = reducer.name; + } + if (reducer.params) { + reducerParams = reducer.params; + } + } else { + reducerName = `${reducerName}Rslt`; + } + reducers[reducerName] = function (state, action) { + return basicReducer(state, action, { actionType, ...reducerParams }); + }; + } + }; + + useEffect(() => { + const inners = []; + const outers = []; + let reducers = {}; + let actions = { + layout: layoutActions, + }; + + for (const s of sections) { + if (!s.key) + console.warn(`请给你的section添加一个key值,section name:${s.name}`); + for (const r of s.routes) { + if (r.type == "inner" || r.type == "home") { + inners.push(r.route); + } else if (r.type == "outer") { + outers.push(r.route); + } + } + if (s.reducers) { + reducers = { ...reducers, ...s.reducers }; + } + if (s.actions) { + actions = { ...actions, [s.key]: s.actions }; + if (s.key != "auth") { + for (const ak in s.actions) { + const actions = s.actions[ak]; + if (actions && typeof actions === "object") { + for (const actionName in actions) { + initReducer(reducers, actionName, actions[actionName]); + } + } else if (typeof actions === "function") { + initReducer(reducers, ak, actions); + } + } + } + } + } + + const history = createBrowserHistory(); + const store = configStore(reducers, history); + store.dispatch(initLayout(title, copyright, sections, actions)); + store.dispatch(actions.auth.initAuth()); + store.dispatch(initApiRoot()); + + const newCombineRoutes = flatRoutes(inners); + + setInnerRoutes(newCombineRoutes); + setHistory(history); + setStore(store); + setOuterRoutes( + outers.map((route) => ( + + )) + ); + setCombineRoutes( + newCombineRoutes.map((route) => ( + + )) + ); + }, []); + + return store ? ( + + + +
    + + {outerRoutes} + + {combineRoutes} + + + +
    +
    +
    +
    + ) : ( + "" + ); +} + +export default Root; diff --git a/web - 副本/client/src/layout/reducers/ajaxResponse.js b/web - 副本/client/src/layout/reducers/ajaxResponse.js new file mode 100644 index 0000000..ee934d8 --- /dev/null +++ b/web - 副本/client/src/layout/reducers/ajaxResponse.js @@ -0,0 +1,28 @@ +/** + * Created by liu.xinyi + * on 2016/4/1. + */ +'use strict'; +const initState = { + msg: null +}; + +import Immutable from 'immutable'; + +/** + * 全局ajax响应处理: + * 判断action中是否有done字段,如果有,则修改store中的msg.done + * 判断action中是否有error字段,如果有,则修改store中msg.error + * 在layout中根据msg的值,呈现提示信息。 +*/ +export default function ajaxResponse(state = initState, action) { + if (action.done) { + return Immutable.fromJS(state).set('msg', {done: action.done}).toJS(); + } + + if (action.error) { + return Immutable.fromJS(state).set('msg', {error: action.error}).toJS(); + } + + return {msg: null}; +}; \ No newline at end of file diff --git a/web - 副本/client/src/layout/reducers/global.js b/web - 副本/client/src/layout/reducers/global.js new file mode 100644 index 0000000..97a36be --- /dev/null +++ b/web - 副本/client/src/layout/reducers/global.js @@ -0,0 +1,38 @@ +import Immutable from 'immutable'; +import { INIT_LAYOUT, RESIZE, INIT_API_ROOT } from '../actions/global'; + +function global(state = { + title: '', + copyright: '', + sections: [], + actions: {}, + plugins: {}, + clientHeight: 768, + clientWidth: 1024, +}, action) { + const { payload } = action; + + switch (action.type) { + case RESIZE: + return Immutable.fromJS(state).merge({ + clientHeight: payload.clientHeight, + clientWidth: payload.clientWidth, + }).toJS(); + case INIT_LAYOUT: + return { + title: payload.title, + copyright: payload.copyright, + sections: payload.sections, + actions: payload.actions, + plugins: payload.plugins, + clientHeight: state.clientHeight, + detailsComponent: null, + }; + case INIT_API_ROOT: + return Immutable.fromJS(state).merge(payload).toJS(); + default: + return state; + } +} + +export default global; diff --git a/web - 副本/client/src/layout/reducers/index.js b/web - 副本/client/src/layout/reducers/index.js new file mode 100644 index 0000000..975cbd5 --- /dev/null +++ b/web - 副本/client/src/layout/reducers/index.js @@ -0,0 +1,15 @@ +/** + * User: liuxinyi/liu.xinyi@free-sun.com.cn + * Date: 2016/1/13 + * Time: 17:52 + * + */ +'use strict'; + +import global from './global'; +import ajaxResponse from './ajaxResponse'; + +export default { + global, + ajaxResponse +}; \ No newline at end of file diff --git a/web - 副本/client/src/layout/store/index.js b/web - 副本/client/src/layout/store/index.js new file mode 100644 index 0000000..764f481 --- /dev/null +++ b/web - 副本/client/src/layout/store/index.js @@ -0,0 +1,16 @@ +/** + * User: liuxinyi/liu.xinyi@free-sun.com.cn + * Date: 2016/1/13 + * Time: 17:51 + * + */ +'use strict'; + +let store = null; +if(process.env.NODE_ENV == 'production'){ + store = require('./store.prod').default; +}else { + store = require('./store.dev').default; +} + +export default store; \ No newline at end of file diff --git a/web - 副本/client/src/layout/store/store.dev.js b/web - 副本/client/src/layout/store/store.dev.js new file mode 100644 index 0000000..57beb1e --- /dev/null +++ b/web - 副本/client/src/layout/store/store.dev.js @@ -0,0 +1,30 @@ +/** + * Created by liu.xinyi + * on 2016/4/8. + */ +'use strict'; +import { createStore, combineReducers, applyMiddleware, compose } from 'redux'; +import reduxThunk from 'redux-thunk'; +import { connectRouter, routerMiddleware } from 'connected-react-router'; +import innerReducers from '../reducers'; + +function configStore(reducers, history) { + const reducer = Object.assign({}, innerReducers, reducers, { + router: connectRouter(history) + }); + + const composeEnhancers = + typeof window === 'object' && + window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? + window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({ + // Specify extension’s options like name, actionsBlacklist, actionsCreators, serialize... + }) : compose; + + const enhancers = composeEnhancers( + applyMiddleware(routerMiddleware(history), reduxThunk) + ); + + return createStore(combineReducers(reducer), {}, enhancers); +} + +export default configStore; \ No newline at end of file diff --git a/web - 副本/client/src/layout/store/store.prod.js b/web - 副本/client/src/layout/store/store.prod.js new file mode 100644 index 0000000..e29f026 --- /dev/null +++ b/web - 副本/client/src/layout/store/store.prod.js @@ -0,0 +1,20 @@ +/** + * Created by liu.xinyi + * on 2016/4/8. + */ +'use strict'; + +import { createStore, combineReducers, applyMiddleware } from 'redux'; +import reduxThunk from 'redux-thunk'; +import { connectRouter, routerMiddleware } from 'connected-react-router'; +import innerReducers from '../reducers'; + +function configStore(reducers, history){ + const reducer = Object.assign({}, innerReducers, reducers, { + router: connectRouter(history) + }); + + return createStore(combineReducers(reducer), {}, applyMiddleware(routerMiddleware(history), reduxThunk)); +} + +export default configStore; \ No newline at end of file diff --git a/web - 副本/client/src/sections/.DS_Store b/web - 副本/client/src/sections/.DS_Store new file mode 100644 index 0000000..d587dcc Binary files /dev/null and b/web - 副本/client/src/sections/.DS_Store differ diff --git a/web - 副本/client/src/sections/article/actions/article.js b/web - 副本/client/src/sections/article/actions/article.js new file mode 100644 index 0000000..cdada0d --- /dev/null +++ b/web - 副本/client/src/sections/article/actions/article.js @@ -0,0 +1,64 @@ +"use strict"; +import { ApiTable } from "$utils"; +import { Request } from "@peace/utils"; +import { basicAction } from "@peace/utils"; + +export function addArticle(articleObj) { + return (dispatch) => + basicAction({ + type: "post", + dispatch: dispatch, + data: articleObj, + actionType: "ADD_ARTICLE", + url: `${ApiTable.addArticle}`, + msg: { error: "新增文章失败" }, + reducer: { name: "articleInsertInfo" }, + }); +} + +export function editArticle(articleObj) { + return (dispatch) => + basicAction({ + type: "put", + dispatch: dispatch, + data: articleObj, + actionType: "EDIT_ARTICLE", + url: `${ApiTable.addArticle}`, + msg: { error: "编辑文章失败" }, + reducer: { name: "articleInsertInfo" }, + }); +} +export function getDataList(query) { + return (dispatch) => + basicAction({ + type: "get", + dispatch: dispatch, + actionType: "GET_DATALIST", + url: ApiTable.getDataList, + query: query, + msg: { error: "获取文章信息失败" }, + reducer: { + name: "articlesfrom", + }, + }); +} +export function delDataList(id) { + return (dispatch) => + basicAction({ + type: "del", + dispatch: dispatch, + actionType: "DEL_DATALIST11", + url: ApiTable.delDataList + `?id=${id}`, + query: { id: id }, + + msg: { error: "删除文章信息失败" }, + }); +} +export const MODIFYARTICAL = { + REQUEST_SUCCESS: "MODIFY_ARTICAL_SUCCESS", +}; +export function setModifyData(data) { + return (dispatch) => { + dispatch({ type: MODIFYARTICAL.REQUEST_SUCCESS, payload: { data } }); + }; +} diff --git a/web - 副本/client/src/sections/article/actions/index.js b/web - 副本/client/src/sections/article/actions/index.js new file mode 100644 index 0000000..5995a74 --- /dev/null +++ b/web - 副本/client/src/sections/article/actions/index.js @@ -0,0 +1,9 @@ +"use strict"; +import { addArticle, editArticle, getDataList, delDataList } from "./article"; + +export default { + addArticle, + editArticle, + getDataList, + delDataList, +}; diff --git a/web - 副本/client/src/sections/article/containers/default.js b/web - 副本/client/src/sections/article/containers/default.js new file mode 100644 index 0000000..e69de29 diff --git a/web - 副本/client/src/sections/article/containers/edit-article.js b/web - 副本/client/src/sections/article/containers/edit-article.js new file mode 100644 index 0000000..d00d81d --- /dev/null +++ b/web - 副本/client/src/sections/article/containers/edit-article.js @@ -0,0 +1,583 @@ +import React, { useReducer, useEffect } from "react"; +import PropTypes from "prop-types"; +import { push } from "react-router-redux"; +import { reducerCreater } from "../../../utils"; +import BraftEditor from "braft-editor"; +import { connect } from "react-redux"; +import moment from "moment"; +import { + Input, + Button, + Form, + Icon, + Tabs, + Upload, + message, + Radio, + Spin, + Space, + Modal, + Select, +} from "antd"; +import { + LoadingOutlined, + UploadOutlined, + PictureOutlined, +} from "@ant-design/icons"; +import { addArticle, editArticle } from "../actions/article"; +const { TabPane } = Tabs; +const { TextArea } = Input; +const { Option } = Select; + +let viewing = false; +const sizeBase = 5.72; +const isFirstLoad = true; +let braftTimer = null; +const initialState = { + counter: 0, + disabled: false, + articlePictureMessage: [], + uploading: false, + tabKey: 1, + loading: false, + imageUrl: "", + submitType: "", + imgSavePath: "", + articalUploading: false, + isVisible: false, + content: "", + title: "", + inputTxtLength: 0, + overview: { + createTime: "", + company: "", + category: "", + authCategory: "", + }, + fileList: [], +}; +const txtLength = { + 1: 5000, + 2: 1500, +}; +const ArticleModify = (props) => { + const { width, height } = props; + const [form] = Form.useForm(); + const [state, dispatch] = useReducer(reducer, initialState); + const { + uploading, + articlePictureMessage, + disabled, + loading, + imageUrl, + tabKey, + inputTxtLength, + fileList, + } = state; + + function reducer(state, action) { + return reducerCreater(initialState, state, action); + } + + useEffect(() => { + const { + match: { params }, + } = props; + const { state, type } = params; + if (type) + if (type == "message") dispatch({ type: "tabKey", payload: "2" }); + else dispatch({ type: "tabKey", payload: "1" }); + }, [true]); + + useEffect(() => { + const { + match: { params }, + } = props; + const strData = localStorage.getItem("modifyData"); + if (strData) { + const modifyData = JSON.parse(strData); + const { state, type } = params; + if (state == "post") { + form.setFieldsValue({ + authCategory: "公开", + }); + } + if (state == "put") + if (modifyData) { + console.log("modifyData: "); + console.log(modifyData); + if (type == "message") { + form.setFieldsValue({ + content: BraftEditor.createEditorState(modifyData.content), + authCategory: modifyData.authCategory, + }); + } else { + form.setFieldsValue({ + content: BraftEditor.createEditorState(modifyData.content), + type: `${modifyData.type}`, + title: modifyData.title, + image: modifyData.image, + }); + const path = modifyData.image; + if (typeof path == 'string' && path.trim() != '') { + const filename = path.substr(path.lastIndexOf("/") + 1); + dispatch({ + type: 'fileList', payload: [{ + uid: '-1', + name: filename, + status: 'done', + url: modifyData.image, + },] + }) + dispatch({ type: "imageUrl", payload: modifyData.image }); + dispatch({ type: "imgSavePath", payload: modifyData.image }); + } + } + } + } + return () => { + localStorage.removeItem("modifyData"); + }; + }, [localStorage.getItem("modifyData")]); + + // 定义输入转换函数 + function unitImportFn(unit, type, source) { + // type为单位类型,例如font-size等 + // source为输入来源,可能值为create或paste + // 此函数的返回结果,需要过滤掉单位,只返回数值 + if (unit.indexOf("em")) { + return parseFloat(unit, 10) * sizeBase; + } else { + return parseFloat(unit, 10); + } + } + + // 定义输出转换函数 + function unitExportFn(unit, type, target) { + if (type === "line-height") { + // 输出行高时不添加单位 + return unit; + } + + // target的值可能是html或者editor,对应输出到html和在编辑器中显示这两个场景 + if (target === "html" && !viewing) { + // 只在将内容输出为html时才进行转换 + return unit / sizeBase + "rem"; + } else { + // 在编辑器中显示时,按px单位展示 + return unit + "px"; + } + } + const myValidateFn = (file) => { + return file.size < 1024 * 1024; + }; + + let media = { + accepts: { + image: "image/png,image/jpeg,image/gif,image/webp,image/apng,image/svg", + video: false, + audio: false, + }, + validateFn: myValidateFn, + }; + + function getBase64(img, callback) { + const reader = new FileReader(); + reader.addEventListener("load", () => callback(reader.result)); + reader.readAsDataURL(img); + } + + function beforeUpload(file) { + // const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png'; + // if (!isJpgOrPng) { + // message.error('请确认文件格式为 JPG/PNG'); + // } + const isLt10M = file.size / 1024 / 1024 < 10; + if (!isLt10M) { + message.error("文件大小必须小于 10MB!"); + } + // return isJpgOrPng && isLt2M; + return isLt10M || Upload.LIST_IGNORE; + } + + function handleChange(info) { + let fileList = []; + if (info.fileList.length && info.fileList.length > 1) { + fileList = info.fileList.slice(-1); + } else fileList = info.fileList; + dispatch({ type: "fileList", payload: fileList }); + + if (info.file.status === "uploading") { + dispatch({ type: "uploading", payload: true }); + return; + } + + if (info.file.status === "done") { + const savePath = info.file.response.uploaded; + dispatch({ + type: "imageUrl", + payload: savePath, + }); + dispatch({ type: "uploading", payload: false }); + } + } + + const uploadButton = ( +
    + {/* {uploading ? : } */} + +
    + ); + + const onFinish = (values) => { + const { + match: { params }, + modifyData, + } = props; + dispatch({ type: "articalUploading", payload: true }); + console.log(values.content.toHTML()); + console.log("Received values of form: ", values); + let status = 0; // 草稿 + if (state.submitType == "submit") status = 1; // 发布 + // if (params.state == 'put' && modifyData.status == 3) { + // status = 7 + // } + // const desc = ((document.getElementsByClassName("public-DraftEditor-content") || [])[0] || {}).innerText || '' + let rslt = { + type: values.type, + createTime: moment(), + creator: props.user.userId, + status, + title: values.title ? values.title : "", + content: values.content.toHTML(), + image: imageUrl, + read: 0, + }; + console.log(rslt); + if (params.state == "post") { + props.dispatch(addArticle(rslt)).then((res) => { + const { type } = res; + if (type == "ADD_ARTICLE_SUCCESS") { + if (state.submitType == "save") { + message.success("保存草稿箱成功"); + } else message.success("提交成功"); + + dispatch({ type: "articalUploading", payload: false }); + dispatch({ type: "imageUrl", payload: "" }); + dispatch({ type: 'fileList', payload: [] }) + props.dispatch(push(`/article`)) + form.resetFields(); + // setTimeout(() => { + // props.dispatch(push(`/article/modify`)) + // }, 500); + } else if (type == "ADD_ARTICLE_ERROR") { + if (state.submitType == "save") message.success("保存草稿箱失败"); + else message.error("提交失败"); + dispatch({ type: "articalUploading", payload: false }); + } + }); + } else { + const strData = localStorage.getItem("modifyData"); + const modifyData = JSON.parse(strData); + rslt.id = modifyData.id; + props.dispatch(editArticle(rslt)).then(res => { + const { type } = res; + if (type == "EDIT_ARTICLE_SUCCESS") { + if (state.submitType == "save") { + message.success("保存草稿箱成功"); + } else message.success("发布成功"); + dispatch({ type: "articalUploading", payload: false }); + dispatch({ type: "imageUrl", payload: "" }); + dispatch({ type: 'fileList', payload: [] }) + props.dispatch(push(`/article`)) + + form.resetFields(); + } else if (type == "EDIT_ARTICLE_ERROR") { + if (state.submitType == "save") message.success("保存草稿箱失败"); + else message.error("发布失败"); + dispatch({ type: "articalUploading", payload: false }); + } + }); + } + }; + const onFinishFailed = () => { + console.log("test"); + }; + + const onBraftChanged = (editorState) => { + if (braftTimer) clearTimeout(braftTimer); + braftTimer = setTimeout(() => { + let inputTxtLength = 0; + const txtAreaContainer = document.getElementsByClassName( + "public-DraftEditor-content" + )[0]; + if (txtAreaContainer) { + inputTxtLength = txtAreaContainer.innerText.split("\n").join("").length; + dispatch({ type: "inputTxtLength", payload: inputTxtLength }); + } + }, 1000 * 0.5); + }; + + function renderArticalContent() { + return ( +
    +
    + + + + + + + { + // if (inputTxtLength > txtLength[tabKey]) + // return Promise.reject(`最多输入${txtLength[tabKey]}个字符`); + // // else if (inputTxtLength == 0) + // // return Promise.reject(`请输入文章内容`) + // else return Promise.resolve(); + // }, + // }, + ]} + wrapperCol={{ span: 24 }} + > + + + {/* + {state.inputTxtLength}/{txtLength[tabKey]} + */} +
    + + { + dispatch({ type: "imageUrl", payload: null }); + dispatch({ type: "imgSavePath", payload: null }); + return true; + }} + fileList={fileList} + > + {fileList.length == 0 ? uploadButton : ''} + + + +
    + { + + {/* {tabKey == 1 ? : ''} */} + + + + + } +
    +
    +
    +
    + ); + } + + const onViewClick = () => { + const { getFieldsValue } = form; + let values = getFieldsValue(); + let title = values.title ? values.title : ""; + let content = values.content ? values.content.toHTML() : ""; + dispatch({ type: "isVisible", payload: true }); + dispatch({ type: "content", payload: content }); + dispatch({ type: "overview", payload: values }); + setTimeout(() => { + if (window.document.getElementById("submitmodalContent")) { + window.document.getElementById("submitmodalContent").innerHTML = + content; + if (content.indexOf(" -1) { + var img_obj = document.getElementsByTagName("img"); + img_obj[img_obj.length - 1].style.width = "100%"; + } + } + }, 300); + }; + + return ( +
    + {/*
    { props.dispatch(push(`/article/modify`)) }}> + 返回 +
    */} + + {renderArticalContent()} + +
    + ); +}; + +const styles = { + rollBack: { position: "absolute", right: 30, top: 18, fontSize: 18 }, +}; + +ArticleModify.propTypes = {}; + +function mapStateToProps(state) { + const { auth, modifyData } = state; + return { + user: auth.user, + modifyData: modifyData.data, + }; +} + +export default connect(mapStateToProps)(ArticleModify); + +const controls = [ + "undo", + "redo", + "font-size", + "font-family", + "bold", + "italic", + "underline", + "text-color", + "text-indent", + { + key: "media", + text: , + title: "插入图片", + }, + "letter-spacing", + "line-height", + "list-ol", + "list-ul", + "remove-styles", + "text-align", + "clear", +]; + +const fontFamilies = [ + { + name: "Araial", + family: "Arial, Helvetica, sans-serif", + }, + { + name: "Georgia", + family: "Georgia, serif", + }, + { + name: "Impact", + family: "Impact, serif", + }, + { + name: "Monospace", + family: '"Courier New", Courier, monospace', + }, + { + name: "仿宋", + family: "仿宋", + }, + { + name: "宋体", + family: 'tahoma, arial, "Hiragino Sans GB", 宋体, sans-serif', + }, + { + name: "黑体", + family: "黑体", + }, + { + name: "楷体", + family: "楷体", + }, + { + name: "等线", + family: "等线", + }, + { + name: "微软雅黑", + family: "微软雅黑", + }, +]; diff --git a/web - 副本/client/src/sections/article/containers/index.js b/web - 副本/client/src/sections/article/containers/index.js new file mode 100644 index 0000000..8892da5 --- /dev/null +++ b/web - 副本/client/src/sections/article/containers/index.js @@ -0,0 +1,287 @@ +import PropTypes from "prop-types"; +import React, { useEffect, useState, useRef } from "react"; +import { connect } from "react-redux"; +import { Button, Popconfirm } from "antd"; +import ProTable from "@ant-design/pro-table"; +import Action from "../actions/index"; +import moment from "moment"; +import { push } from "react-router-redux"; +import { Scroller } from "$components"; + +export const Default = (props) => { + const { dispatch } = props; + const [heading, setHeading] = useState(); //标题 + const [state, setState] = useState(); //状态 + const [day, setDay] = useState(); //发布时间 + const [counts, setCounts] = useState(); //数据 + const tableActionRef = useRef(); + const columns = [ + { + title: "标题", + dataIndex: "name", + key: "name", + order: 2, + fieldProps: { + onChange: (value, cs) => { + setHeading(value.currentTarget.value); + }, + placeholder: "请输入标题进行搜索", + getPopupContainer: (triggerNode) => triggerNode.parentNode, + }, + render: (dom, record) => { + return record.title; + }, + }, + { + title: "类别", + key: "category", + dataIndex: "category", + valueType: "category", + hideInSearch: true, + render: (dom, record) => { + return record.type === 0 + ? "活动风采" + : record.type === 1 + ? "党建资讯" + : "工会资讯"; + }, + }, + { + title: "发布人", + key: "since", + dataIndex: "createdAt", + valueType: "dateTime", + hideInSearch: true, + render: (dom, record) => { + return record.publisher === null ? "SuperAdmin" : record.publisher; + }, + }, + { + title: "发布时间", + key: "dateRange", + dataIndex: "createdAtRange", + valueType: "dateRange", + order: 4, + sorter: (a, b) => { + if (a.publishTime) { + var atime = a.publishTime + .slice(0, 10) + .replace("-", "") + .replace("-", ""); + } + if (b.publishTime) { + var btime = b.publishTime + .slice(0, 10) + .replace("-", "") + .replace("-", ""); + } + + return atime - btime; + }, + defaultSortOrder: "bscend", + fieldProps: { + onChange: (value, cs) => { + setDay(cs); + }, + getPopupContainer: (triggerNode) => triggerNode.parentNode, + }, + render: (dom, record) => { + return record.publishTime === null + ? "--" + : [moment(record.publishTime).format("YYYY-MM-DD")]; + }, + }, + { + title: "状态", + dataIndex: "regionName", + valueType: "select", + initialValue: null, + order: 3, + + fieldProps: { + label: null, + onChange: (value, cs) => { + setState(value); + }, + options: [ + { + label: "全部", + value: null, + }, + { + label: "草稿", + value: 0, + }, + { + label: "已发布", + value: 1, + }, + { + label: "已撤回", + value: 2, + }, + ], + }, + render: (dom, record) => { + return record.status === 0 + ? "草稿" + : record.status === 1 + ? "已发布" + : "已撤回"; + }, + }, + { + title: "操作", + key: "since", + dataIndex: "createdAt", + valueType: "dateTime", + hideInSearch: true, + render: (dom, record) => { + return record.status === 0 ? ( +
    + { + editor(record); + }} + > + 编辑 + + { + delDataList(record.id); + }} + > + + +
    + ) : record.status === 1 ? ( + { + withdRew(record); + }} + > + 撤回 + + ) : ( +
    + { + editor(record); + }} + > + 编辑 + + { + delDataList(record.id); + }} + > + + +
    + ); + }, + }, + { + key: "direction", + hideInTable: true, + dataIndex: "direction", + order: 6, + renderFormItem: (item, { type, defaultRender, ...rest }, form) => { + return ( + + ); + }, + }, + ]; + //删除资讯 + const delDataList = (ids, type) => { + dispatch(Action.delDataList(ids)).then((res) => { + if (res.success) { + // 刷新 + tableActionRef.current.reload(); + } + }); + }; + //编辑 + const editor = (record) => { + dispatch(push(`article/update/put`)); + localStorage.setItem("modifyData", JSON.stringify(record)); + }; + //撤回 + const withdRew = (record) => { + const records = { ...record, status: 2 }; + dispatch(Action.editArticle(records)).then((res) => { + if (res.success) { + // 刷新 + tableActionRef.current.reload(); + } + }); + }; + + return ( +
    + + { + setHeading(); + setDay(null); + setState(null); + }} + request={async (params) => { + let query = { + type: -1, + searchValue: heading, + status: state, + page: params.current, + limit: params.pageSize, + publishTime: + day && day.length && day[0].trim() != "" + ? JSON.stringify([ + moment(day[0]).startOf("day"), + moment(day[1]).endOf("day"), + ]) + : null, + }; + const res = await dispatch(Action.getDataList(query)); + setCounts(res.payload.data); + return { + ...res, + total: res.payload.data ? res.payload.data.total : 0, + }; + }} + rowKey="id" + pagination={{ + showSizeChanger: true, + }} + /> + +
    + ); +}; + +Default.propTypes = { + second: PropTypes.third, +}; + +const mapStateToProps = (state) => ({}); + +export default connect(mapStateToProps)(Default); diff --git a/web - 副本/client/src/sections/article/index.js b/web - 副本/client/src/sections/article/index.js new file mode 100644 index 0000000..9bb11a8 --- /dev/null +++ b/web - 副本/client/src/sections/article/index.js @@ -0,0 +1,13 @@ +import routes from './routes'; +import reducers from './reducers'; +import actions from './actions'; +import nativeItem from './nav-item'; + +export default { + key: 'article', + name: '资讯管理', + reducers, + routes, + actions, + getNavItem: nativeItem +}; diff --git a/web - 副本/client/src/sections/article/nav-item.js b/web - 副本/client/src/sections/article/nav-item.js new file mode 100644 index 0000000..e58b936 --- /dev/null +++ b/web - 副本/client/src/sections/article/nav-item.js @@ -0,0 +1,14 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import { Menu } from 'antd'; +import { BarChartOutlined } from '@ant-design/icons'; + +export function getNavItem() { + return ( + }> + 资讯管理 + + ); +} + +export default getNavItem; diff --git a/web - 副本/client/src/sections/article/reducers/index.js b/web - 副本/client/src/sections/article/reducers/index.js new file mode 100644 index 0000000..10ebcbf --- /dev/null +++ b/web - 副本/client/src/sections/article/reducers/index.js @@ -0,0 +1,19 @@ +'use strict'; + +const initModifyData = { + data: null +} + +function modifyData(state = initModifyData, actions) { + const { type, payload } = actions + switch (type) { + case 'MODIFY_ARTICAL_SUCCESS': + return Object.assign({}, state, { data: payload.data }); + default: + return state; + } +} + +export default { + modifyData, +} \ No newline at end of file diff --git a/web - 副本/client/src/sections/article/routes.js b/web - 副本/client/src/sections/article/routes.js new file mode 100644 index 0000000..154daf2 --- /dev/null +++ b/web - 副本/client/src/sections/article/routes.js @@ -0,0 +1,20 @@ +import Container from './containers'; +import ArticleModify from "./containers/edit-article" +export default [ + { + type: 'inner', + route: { + path: '/article', + key: 'article', + component: Container, + } + }, + { + type: 'inner', + route: { + key: 'articleUpdate', + path: '/article/update/:state',// type: artical/message state:post/put + component: ArticleModify + } + } +]; diff --git a/web - 副本/client/src/sections/auth/actions/auth.js b/web - 副本/client/src/sections/auth/actions/auth.js new file mode 100644 index 0000000..4a24b9e --- /dev/null +++ b/web - 副本/client/src/sections/auth/actions/auth.js @@ -0,0 +1,71 @@ +"use strict"; + +import { ApiTable } from "$utils"; +import { Request } from "@peace/utils"; + +export const INIT_AUTH = "INIT_AUTH"; +export function initAuth() { + const user = JSON.parse(sessionStorage.getItem("user")) || {}; + return { + type: INIT_AUTH, + payload: { + user: user, + }, + }; +} + +export const REQUEST_LOGIN = "REQUEST_LOGIN"; +export const LOGIN_SUCCESS = "LOGIN_SUCCESS"; +export const LOGIN_ERROR = "LOGIN_ERROR"; +export function login(username, password) { + return (dispatch) => { + dispatch({ type: REQUEST_LOGIN }); + + if (!username || !password) { + dispatch({ + type: LOGIN_ERROR, + payload: { error: "请输入账号名和密码" }, + }); + return Promise.resolve(); + } + + const url = ApiTable.login; + return Request.post(url, { username, password, p: "456" }).then( + (user) => { + sessionStorage.setItem("user", JSON.stringify(user)); + dispatch({ + type: LOGIN_SUCCESS, + payload: { user: user }, + }); + }, + (error) => { + let { body } = error.response; + dispatch({ + type: LOGIN_ERROR, + payload: { + error: body && body.message ? body.message : "账号或密码错误", + }, + }); + } + ); + }; +} + +export const LOGOUT = "LOGOUT"; +export function logout(user) { + const token = user.token; + const url = ApiTable.logout; + sessionStorage.removeItem("user"); + Request.put(url, { + token: token, + }); + return { + type: LOGOUT, + }; +} + +export default { + initAuth, + login, + logout, +}; diff --git a/web - 副本/client/src/sections/auth/actions/domain.js b/web - 副本/client/src/sections/auth/actions/domain.js new file mode 100644 index 0000000..d2e3a0a --- /dev/null +++ b/web - 副本/client/src/sections/auth/actions/domain.js @@ -0,0 +1,42 @@ +import { Request } from '@peace/utils'; +import { ApiTable } from '$utils'; + +export const REQUEST_DOMAIN = 'REQUEST_DOMAIN'; +export const GET_DOMAIN_SUCCESS = 'GET_DOMAIN_SUCCESS'; +export const GET_DOMAIN_ERROR = 'GET_DOMAIN_ERROR'; +export function getDomainInfo(domain) { + return (dispatch) => { + dispatch({ type: REQUEST_DOMAIN }); + + if (domain.trim() === '' || !/^[a-z][a-z0-9]{0,19}$/.test(domain)) { + dispatch({ + type: GET_DOMAIN_ERROR, + payload: { error: '输入有效的企业域名' }, + }); + return Promise.resolve(); + } + + const url = ApiTable.checkDomain.replace('{domain}', domain); + + return Request.get(url).then( + (res) => dispatch({ + type: GET_DOMAIN_SUCCESS, + payload: { domain: res }, + }), + (err) => { + let msg = '域名不正确'; + if (err.status !== 404) { + msg = '糟糕,访问好像出现了问题'; + } + return dispatch({ + type: GET_DOMAIN_ERROR, + payload: { error: msg }, + }); + }, + ); + }; +} + +export default { + getDomainInfo, +}; diff --git a/web - 副本/client/src/sections/auth/actions/index.js b/web - 副本/client/src/sections/auth/actions/index.js new file mode 100644 index 0000000..d44996e --- /dev/null +++ b/web - 副本/client/src/sections/auth/actions/index.js @@ -0,0 +1,10 @@ +/** + * Created by liu.xinyi + * on 2016/4/1. + */ +'use strict'; +import auth from './auth'; + +export default { + ...auth +}; \ No newline at end of file diff --git a/web - 副本/client/src/sections/auth/actions/reset-pwd.js b/web - 副本/client/src/sections/auth/actions/reset-pwd.js new file mode 100644 index 0000000..77683b0 --- /dev/null +++ b/web - 副本/client/src/sections/auth/actions/reset-pwd.js @@ -0,0 +1,35 @@ +import { Request } from '@peace/utils'; +import { ApiTable } from '$utils'; + +export const REQUEST_RESET_PASSWORD = 'REQUEST_RESET_PASSWORD'; +export const RESET_PASSWORD_SUCCESS = 'RESET_PASSWORD_SUCCESS'; +export const RESET_PASSWORD_ERROR = 'RESET_PASSWORD_ERROR'; +export function resetPwd(pcode, phone, code, password) { + return (dispatch) => { + dispatch({ type: REQUEST_RESET_PASSWORD }); + + const url = ApiTable.resetPwd; + + return Request.post(url, { + p: pcode, + phone, + code, + password, + }).then((res) => dispatch({ + type: RESET_PASSWORD_SUCCESS, + payload: { res }, + }), (err) => { + let msg = '密码重置失败'; + if (err.status !== 400) { + msg = '糟糕,访问好像出现了问题'; + } + return dispatch({ + type: RESET_PASSWORD_ERROR, + payload: { error: msg }, + }); + }); + }; +} +export default { + resetPwd, +}; diff --git a/web - 副本/client/src/sections/auth/actions/validate-phone.js b/web - 副本/client/src/sections/auth/actions/validate-phone.js new file mode 100644 index 0000000..add39da --- /dev/null +++ b/web - 副本/client/src/sections/auth/actions/validate-phone.js @@ -0,0 +1,39 @@ +import { Request } from '@peace/utils'; +import { ApiTable } from '$utils'; + +const SHA1 = require('crypto-js/sha1'); +const Hex = require('crypto-js/enc-hex'); + +export function sendPhoneCode(phone) { + const random = Math.floor(Math.random() * 10 ** 4); + const sig = Hex.stringify(SHA1(phone + random)); + + const url = ApiTable.phoneVCode; + + return Request.get(url, { + phone, + r: random, + sig, + }); +} + +export function checkPhoneCode(phone, code) { + const url = ApiTable.phoneVCode; + + return Request.post(url, { + phone, + code, + }); +} + +export function checkPhone(phone, pcode) { + const url = ApiTable.checkPhone; + + return Request.get(url, { phone, p: pcode }); +} + +export default { + sendPhoneCode, + checkPhoneCode, + checkPhone, +}; diff --git a/web - 副本/client/src/sections/auth/containers/domain-error.js b/web - 副本/client/src/sections/auth/containers/domain-error.js new file mode 100644 index 0000000..efd0e5b --- /dev/null +++ b/web - 副本/client/src/sections/auth/containers/domain-error.js @@ -0,0 +1,20 @@ +import React from 'react'; +import { Row, Col } from 'antd'; +import { connect } from 'react-redux'; + +function DomainError({ ...props }) { + const { match: { params } } = props; + return ( + + +

    + [ + {`${params.domain}`} + ]域名错误,请联系管理员 +

    + +
    + ); +} + +export default connect()(DomainError); diff --git a/web - 副本/client/src/sections/auth/containers/forget-pwd.js b/web - 副本/client/src/sections/auth/containers/forget-pwd.js new file mode 100644 index 0000000..47ce2c6 --- /dev/null +++ b/web - 副本/client/src/sections/auth/containers/forget-pwd.js @@ -0,0 +1,182 @@ +import React, { Component, useState, useEffect } from 'react'; +import { connect } from 'react-redux'; +import { + Card, Form, Input, Button, Row, Col, Alert, message, +} from 'antd'; +import { resetPwd, RESET_PASSWORD_SUCCESS } from '../actions/reset-pwd'; +import { sendPhoneCode, checkPhoneCode, checkPhone } from '../actions/validate-phone'; + +const FormItem = Form.Item; + +function ForgetPwdContainer(props) { + const { dispatch, match: { params }, isRequesting } = props; + const [form] = Form.useForm(); + const [sleeping, setSleeping] = useState(false); + let [sleepCount, setSleepCount] = useState(60); + const [done, setDone] = useState(false); + let timer; + + const _checkPhone = async (rule, value, callback) => { + await checkPhone(value, params.domain).then((_) => { + + }, (err) => { + throw new Error('未发现绑定该手机的账号!'); + }); + }; + + const fetchVCode = async () => { + const phoneObj = await form.validateFields(['phone']); + await sendPhoneCode(phoneObj.phone).then((_) => { + setSleeping(true); + timer = setInterval((_) => { + if (sleepCount == 0) { + setSleeping(false); + setSleepCount(60); + clearInterval(timer); + return; + } + setSleepCount(sleepCount--); + }, 1000); + setSleepCount(sleepCount--); + }); + }; + + const submit = () => { + form.validateFields().then((values) => { + checkPhoneCode(values.phone, values.code).then((_) => { + dispatch(resetPwd(params.domain, values.phone, values.code, values.password)) + .then((action) => { + if (action.type == RESET_PASSWORD_SUCCESS) { + setDone(true); + } else { + message.error(action.payload.error); + } + }); + }, (err) => { + message.error(err.response.body.message); + }); + }); + }; + + return ( +
    +
    + +
    + +

    + 找回密码 +

    + { + done + ? ( + +

    + 已成功验证您的手机号: + {form.getFieldValue('phone')} + , 并重置密码 +

    + +
    + )} + type="success" + showIcon + /> + ) + : ( +
    +
    + + + + + + + + + + + + + + + + + + + + { + if (form.getFieldValue('password') != value) { + throw new Error('两次输入的密码不一致!'); + } + }, + }]} + > + + + + + +
    + +
    + ) +} + + + ); +} + +function mapStateToProps(state) { + const { resetPwd } = state; + return { + isRequesting: resetPwd.isRequesting, + }; +} + +export default connect(mapStateToProps)(ForgetPwdContainer); diff --git a/web - 副本/client/src/sections/auth/containers/index.js b/web - 副本/client/src/sections/auth/containers/index.js new file mode 100644 index 0000000..9229b94 --- /dev/null +++ b/web - 副本/client/src/sections/auth/containers/index.js @@ -0,0 +1,4 @@ +'use strict'; +import Login from './login'; + +export { Login }; \ No newline at end of file diff --git a/web - 副本/client/src/sections/auth/containers/login.js b/web - 副本/client/src/sections/auth/containers/login.js new file mode 100644 index 0000000..9d10726 --- /dev/null +++ b/web - 副本/client/src/sections/auth/containers/login.js @@ -0,0 +1,124 @@ +"use strict"; + +import React, { useState, useEffect } from "react"; +import { connect } from "react-redux"; +import { Form, Input, Button, Checkbox, message } from "antd"; +import { push } from "react-router-redux"; +import { login } from "../actions/auth"; +import "./style.less"; + +const FormItem = Form.Item; +function Login(props) { + const { dispatch, user, error, isRequesting } = props; + let Long = "/assets/images/denglu.png"; + let phone = "/assets/images/shouji.png"; + let cipher = "/assets/images/mima.png"; + const [username, setUserName] = useState(""); + const [password, setPassword] = useState(""); + const [inputChanged, setInputChanged] = useState(false); + useEffect(() => { + if (error) { + message.error(error); + } + }, [error]); + // 当user发生改变时,直接跳转到后台管理 + useEffect(() => { + user && user.authorized && JSON.parse(sessionStorage.getItem("user")) + ? dispatch(push("/article")) + : null; + }, [user]); + + const enterHandler = (e) => { + if (e.key === "Enter") { + setInputChanged(false); + dispatch(login(username, password)); + } + }; + // + const handleLogin = () => { + let reg_user = "SuperAdmin"; + let reg_tel = /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/; //11位手机号码正则 + if (username == reg_user /* || reg_tel.test(username) */) { + setInputChanged(false); + dispatch(login(username, password)); + return; + } + if (username == "" || password == "") { + setInputChanged(false); + dispatch(login(username, password)); + return; + } + setInputChanged(false); + dispatch(login("12345678912564589", "123456789")); + }; + return ( +
    +
    +

    用户登录

    +
    + + } + className="user" + maxLength={11} + placeholder="请输入账号" + onChange={(e) => { + setUserName(e.target.value); + setInputChanged(true); + }} + /> + + + } + type="password" + placeholder="请输入密码" + className="pass" + onChange={(e) => { + setPassword(e.target.value); + setInputChanged(true); + }} + /> + + + + +
    +
    +
    + ); +} +function mapStateToProps(state) { + const { auth } = state; + return { + user: auth.user, + error: auth.error, + isRequesting: auth.isRequesting, + }; +} + +export default connect(mapStateToProps)(Login); diff --git a/web - 副本/client/src/sections/auth/containers/style.less b/web - 副本/client/src/sections/auth/containers/style.less new file mode 100644 index 0000000..bed5ec0 --- /dev/null +++ b/web - 副本/client/src/sections/auth/containers/style.less @@ -0,0 +1,4 @@ +.loginBotton { + background: linear-gradient(to Bottom, #00bbfa, #0054e8) !important; + font-size: 18px !important; +} diff --git a/web - 副本/client/src/sections/auth/index.js b/web - 副本/client/src/sections/auth/index.js new file mode 100644 index 0000000..f8e40fb --- /dev/null +++ b/web - 副本/client/src/sections/auth/index.js @@ -0,0 +1,12 @@ +'use strict'; + +import routes from './routes'; +import reducers from './reducers'; +import actions from './actions'; + +export default { + key: 'auth', + reducers: reducers, + routes: routes, + actions: actions +}; \ No newline at end of file diff --git a/web - 副本/client/src/sections/auth/reducers/auth.js b/web - 副本/client/src/sections/auth/reducers/auth.js new file mode 100644 index 0000000..edeebff --- /dev/null +++ b/web - 副本/client/src/sections/auth/reducers/auth.js @@ -0,0 +1,40 @@ +'use strict'; +import * as actionTypes from '../actions/auth'; +import Immutable from 'immutable'; + +const initState = { + user: {}, + isRequesting: false, + error: null +}; + +function auth(state = initState, action) { + const payload = action.payload; + switch (action.type){ + case actionTypes.INIT_AUTH: + return Immutable.fromJS(state).set('user', payload.user).toJS(); + case actionTypes.REQUEST_LOGIN: + return Immutable.fromJS(state).merge({ + isRequesting: true, + error: null + }).toJS(); + case actionTypes.LOGIN_SUCCESS: + return Immutable.fromJS(state).merge({ + isRequesting: false, + user: payload.user + }).toJS(); + case actionTypes.LOGIN_ERROR: + return Immutable.fromJS(state).merge({ + isRequesting: false, + error: payload.error + }).toJS(); + case actionTypes.LOGOUT: + return Immutable.fromJS(state).merge({ + user: null + }).toJS(); + default: + return state; + } +} + +export default auth; \ No newline at end of file diff --git a/web - 副本/client/src/sections/auth/reducers/domain.js b/web - 副本/client/src/sections/auth/reducers/domain.js new file mode 100644 index 0000000..c23a1f4 --- /dev/null +++ b/web - 副本/client/src/sections/auth/reducers/domain.js @@ -0,0 +1,35 @@ +import Immutable from 'immutable'; +import * as actionTypes from '../actions/domain'; + +const initState = { + domain: null, + isRequesting: false, + error: null, +}; + +function domain(state = initState, action) { + const { payload } = action; + switch (action.type) { + case actionTypes.REQUEST_DOMAIN: + return Immutable.fromJS(state).merge({ + isRequesting: true, + error: null, + }).toJS(); + case actionTypes.GET_DOMAIN_SUCCESS: + return Immutable.fromJS(state).merge({ + isRequesting: false, + domain: payload.domain, + }).toJS(); + case actionTypes.GET_DOMAIN_ERROR: + return Immutable.fromJS(state).merge({ + isRequesting: false, + error: payload.error, + }).toJS(); + default: + return state; + } +} + +export { + domain, +}; diff --git a/web - 副本/client/src/sections/auth/reducers/index.js b/web - 副本/client/src/sections/auth/reducers/index.js new file mode 100644 index 0000000..ba81f11 --- /dev/null +++ b/web - 副本/client/src/sections/auth/reducers/index.js @@ -0,0 +1,6 @@ +'use strict'; +import auth from './auth' + +export default { + auth +}; \ No newline at end of file diff --git a/web - 副本/client/src/sections/auth/reducers/reset-pwd.js b/web - 副本/client/src/sections/auth/reducers/reset-pwd.js new file mode 100644 index 0000000..cee1587 --- /dev/null +++ b/web - 副本/client/src/sections/auth/reducers/reset-pwd.js @@ -0,0 +1,31 @@ +import Immutable from 'immutable'; +import * as actionTypes from '../actions/reset-pwd'; + +const initState = { + isRequesting: false, + error: null, +}; + +function resetPwd(state = initState, action) { + const { payload } = action; + switch (action.type) { + case actionTypes.REQUEST_RESET_PASSWORD: + return Immutable.fromJS(state).merge({ + isRequesting: true, + error: null, + }).toJS(); + case actionTypes.RESET_PASSWORD_SUCCESS: + return Immutable.fromJS(state).merge({ + isRequesting: false, + }).toJS(); + case actionTypes.RESET_PASSWORD_ERROR: + return Immutable.fromJS(state).merge({ + isRequesting: false, + error: payload.error, + }).toJS(); + default: + return state; + } +} + +export default resetPwd; diff --git a/web - 副本/client/src/sections/auth/routes.js b/web - 副本/client/src/sections/auth/routes.js new file mode 100644 index 0000000..4363057 --- /dev/null +++ b/web - 副本/client/src/sections/auth/routes.js @@ -0,0 +1,28 @@ +import { Login, } from "./containers"; + +export default [ + { + type: "outer", + route: { key: "domainSign", path: "/:domain/signin", component: Login }, + }, + // { + // type: "outer", + // route: { key: "domainErr", path: "/:domain/error", component: DomainError }, + // }, + // { + // type: "outer", + // route: { + // key: "domainForget", + // path: "/:domain/forget", + // component: ForgetPwd, + // }, + // }, + { + type: "outer", + route: { + path: "/login", + key: "login", + component: Login, + }, + }, +]; diff --git a/web - 副本/client/src/sections/homePage/actions/index.js b/web - 副本/client/src/sections/homePage/actions/index.js new file mode 100644 index 0000000..a2755a7 --- /dev/null +++ b/web - 副本/client/src/sections/homePage/actions/index.js @@ -0,0 +1,3 @@ +import profile from './profile' + +export default { ...profile } \ No newline at end of file diff --git a/web - 副本/client/src/sections/homePage/actions/profile.js b/web - 副本/client/src/sections/homePage/actions/profile.js new file mode 100644 index 0000000..4367774 --- /dev/null +++ b/web - 副本/client/src/sections/homePage/actions/profile.js @@ -0,0 +1,174 @@ +import { basicAction } from "@peace/utils"; +import { ApiTable } from "$utils"; + +export function getProfile(userId) { + return (dispatch) => + basicAction({ + type: "get", + dispatch: dispatch, + actionType: "GET_PROFILE", + url: ApiTable.getUserInfo.replace("{userId}", userId), + msg: { error: "获取用户信息失败" }, + reducer: { + name: "profile", + }, + }); +} +export function getDataList({ type, page, limit, status }) { + return (dispatch) => + basicAction({ + type: "get", + dispatch: dispatch, + actionType: "GET_DATALIST", + url: ApiTable.getDataList, + query: { type, page, limit, status }, + msg: { error: "获取文章信息失败" }, + reducer: { + name: "articlesfrom", + }, + }); +} +export function editProfile(userId, params, type) { + return (dispatch) => + basicAction({ + type: "put", + data: params, + dispatch: dispatch, + actionType: "EDIT_PROFILE", + url: ApiTable.modifyUserInfo + .replace("{userId}", userId) + .replace("{type}", type || "phone"), + msg: { option: "更新个人信息" }, + }); +} + +export function editpassword(userId, params) { + return (dispatch) => + basicAction({ + type: "put", + data: params, + dispatch: dispatch, + actionType: "EDIT_PASSWORD", + url: ApiTable.modifyPassWord.replace("{userId}", userId), + msg: { option: "更新密码" }, + }); +} + +export function editName(userId, params) { + return (dispatch) => + basicAction({ + type: "put", + data: params, + dispatch: dispatch, + actionType: "EDIT_NAME", + url: ApiTable.modifyName.replace("{userId}", userId), + msg: { option: "修改姓名" }, + }); +} + +// export function modifyEmailEnable(userId) { +// return (dispatch) => +// basicAction({ +// type: "post", +// dispatch: dispatch, +// actionType: "MODIFY_EMAILENABLE", +// url: ApiTable.modifyEmailEnable.replace("{userId}", userId), +// msg: { option: "启用邮件通知" }, +// }); +// } + +// export function modifyEmailDisable(userId) { +// return (dispatch) => +// basicAction({ +// type: "post", +// dispatch: dispatch, +// actionType: "MODIFY_EMAILDISABLE", +// url: ApiTable.modifyEmailDisable.replace("{userId}", userId), +// msg: { option: "禁用邮件通知" }, +// }); +// } + +// export function modifySmsEnable(userId) { +// return (dispatch) => +// basicAction({ +// type: "post", +// dispatch: dispatch, +// actionType: "MODIFY_SMSENABLE", +// url: ApiTable.modifySmsEnable.replace("{userId}", userId), +// msg: { option: "启用短信通知" }, +// }); +// } + +// export function modifySmsDisable(userId) { +// return (dispatch) => +// basicAction({ +// type: "post", +// dispatch: dispatch, +// actionType: "MODIFY_SMSDISABLE", +// url: ApiTable.modifySmsDisable.replace("{userId}", userId), +// msg: { option: "禁用短信通知" }, +// }); +// } + +// export function midifyDndEnable(userId) { +// return (dispatch) => +// basicAction({ +// type: "post", +// dispatch: dispatch, +// actionType: "MIDIFY_DNDENABLE", +// url: ApiTable.midifyDndEnable.replace("{userId}", userId), +// msg: { option: "开启免打扰" }, +// }); +// } + +// export function modifyDndDisable(userId) { +// return (dispatch) => +// basicAction({ +// type: "post", +// dispatch: dispatch, +// actionType: "MIDIFY_DNDDISABLE", +// url: ApiTable.modifyDndDisable.replace("{userId}", userId), +// msg: { option: "关闭免打扰" }, +// }); +// } +export function getText(id) { + return (dispatch) => + basicAction({ + type: "get", + dispatch: dispatch, + actionType: "GET_TEXT", + url: ApiTable.getText, + query: { id }, + msg: { error: "获取文章信息失败" }, + reducer: { + name: "wen", + }, + }); +} +export function getPartyMember() { + return (dispatch) => + basicAction({ + type: "get", + dispatch: dispatch, + actionType: "PARTY_MEMBER", + url: ApiTable.getpartyMember, + msg: { option: "获取工会人数" }, + reducer: { + name: "party", + }, + }); +} +export default { + getProfile, + editProfile, + editpassword, + editName, + getText, + // modifyEmailEnable, + // modifyEmailDisable, + // modifySmsEnable, + // modifySmsDisable, + // midifyDndEnable, + // modifyDndDisable, + getPartyMember, +}; diff --git a/web - 副本/client/src/sections/homePage/actions/validate-phone.js b/web - 副本/client/src/sections/homePage/actions/validate-phone.js new file mode 100644 index 0000000..bac0d7b --- /dev/null +++ b/web - 副本/client/src/sections/homePage/actions/validate-phone.js @@ -0,0 +1,31 @@ +'use strict'; + +import { Request } from '@peace/utils' +import { ApiTable } from '$utils' + +const SHA1 = require('crypto-js/sha1'); +const Hex = require('crypto-js/enc-hex'); + +export function sendPhoneCode (phone) { + const random = Math.floor(Math.random() * Math.pow(10, 4)); + const sig = Hex.stringify(SHA1(phone + random)); + const url = ApiTable.phoneVCode; + return Request.get(url, { + phone: phone, + r: random, + sig: sig + }); +} + +export function checkPhoneCode (phone, code) { + const url = ApiTable.phoneVCode; + return Request.post(url, { + phone: phone, + code: code + }); +} + +export function checkPhone (phone, domain) { + const url = ApiTable.checkPhone; + return Request.get(url, { phone, domain }); +} \ No newline at end of file diff --git a/web - 副本/client/src/sections/homePage/components/activityColumns.js b/web - 副本/client/src/sections/homePage/components/activityColumns.js new file mode 100644 index 0000000..e0dde14 --- /dev/null +++ b/web - 副本/client/src/sections/homePage/components/activityColumns.js @@ -0,0 +1,339 @@ +import React, { useState, useEffect } from "react"; +import { connect } from "react-redux"; +import { Table } from "antd"; +import { push } from "react-router-redux"; +import moment from "moment"; +import { getDataList } from "../actions/profile"; +let xinwen = "../../../../assets/images/xinweng.png"; +let BARBG = "../../../../assets/images/barbg.png"; +let shangxinli = "../../../../assets/images/shangxinli_title.png"; +function ActivityColumns(props) { + const { dispatch } = props; + const [activities, setActivities] = useState([]); //活动风采 + const more = (id) => { + dispatch(push("/more", { type: 0, status: 1 })); + }; + useEffect(() => { + dispatch(getDataList({ type: 0, status: 1 })).then((res) => { + res.payload ? setActivities(res.payload.data.data) : ""; + }); + }, []); + const renderInfoBar = (title) => { + return ( +
    +
    + {title} +
    +
    { + more("123"); + }} + > + {"更多 >>"} +
    +
    + ); + }; + const activityColumns = [ + { + title: "Name", + dataIndex: "name", + key: "name", + ellipsis: true, + sorter: (a, b) => { + const atime = a.createTime + .slice(0, 10) + .replace("-", "") + .replace("-", ""); + + const btime = b.createTime + .slice(0, 10) + .replace("-", "") + .replace("-", ""); + return atime - btime; + }, + defaultSortOrder: "bscend", + render: (text, record) => ( + <> +
    { + dispatch( + push("/particulars", { + id: record.id, + title: record.title, + }) + ); + }} + > + + + {record?.title || ""} + + + [{record?.createTime.slice(0, 10) || ""}] + +
    + + ), + }, + ]; + return ( +
    +
    + {renderInfoBar("活动风采")} +
    +
    + huodong +
    +
    + 习近平致首届大国工匠创新交流大会的贺信 +
    +
    + 值此首届大国工匠创新交流大会召开之际,我向大会的举办… +
    +
    +
    +
    + + + +
    + tu +
    + {shangxinliArr.map(({ avatar, name, award }, index) => { + let src = `../../../../assets/images/shangxinli/${avatar}`; + return ( +
    + 头像 +
    {name}
    +
    {award}
    +
    + ); + })} +
    +
    + + + ); +} +function mapStateToProps(state) { + const { auth, global, articlesfrom } = state; + return { + user: auth.user, + actions: global.actions, + articlesfrom: articlesfrom, + }; +} +export default connect(mapStateToProps)(ActivityColumns); +const shangxinliArr = [ + { + name: "邹全锦", + avatar: "zouquanjin.png", + award: "爱岗敬业", + }, + { + name: "欧阳华强", + avatar: "ouyanghuaqiang.png", + award: "爱岗敬业", + }, + { + name: "田汉鑫", + avatar: "tianhanxin.png", + award: "爱岗敬业", + }, + { + name: "张俊", + avatar: "zhangjun.png", + award: "爱岗敬业", + }, + { + name: "付兵兵", + avatar: "fubingbing.png", + award: "爱岗敬业", + }, + { + name: "吴承云", + avatar: "wuchengyun.png", + award: "最佳执行", + }, + { + name: "周宏晟", + avatar: "zhouhongsheng.png", + award: "最佳执行", + }, + { + name: "杨威", + avatar: "yangwei.png", + award: "最佳执行", + }, + { + name: "丁锦", + avatar: "dingjin.png", + award: "最佳执行", + }, + { + name: "刘琦", + avatar: "liuqi.png", + award: "最佳执行", + }, + { + name: "张文君", + avatar: "zhangwenjun.png", + award: "创新卓越", + }, + { + name: "陈涛", + avatar: "chentao.png", + award: "创新卓越", + }, + { + name: "张文", + avatar: "zhangwen.png", + award: "最佳新人", + }, + { + name: "胡文惠", + avatar: "huwenhui.png", + award: "最佳新人", + }, + { + name: "张子扬", + avatar: "zhangziyang.png", + award: "最佳新人", + }, + { + name: "喻从文", + avatar: "yucongwen.png", + award: "最佳新人", + }, + { + name: "朱琼", + avatar: "zhuqiong.png", + award: "最佳新人", + }, + { + name: "黄钰薇", + avatar: "huangyuwei.png", + award: "宣传大使", + }, +]; diff --git a/web - 副本/client/src/sections/homePage/components/avatorModal.js b/web - 副本/client/src/sections/homePage/components/avatorModal.js new file mode 100644 index 0000000..fd4df14 --- /dev/null +++ b/web - 副本/client/src/sections/homePage/components/avatorModal.js @@ -0,0 +1,66 @@ +import React, { useEffect, useState } from "react"; +import { connect } from "react-redux"; +import { Modal, message } from "antd"; + +const AvatorModal = (props) => { + const { visible, onClose, editData, dispatch, actions, user } = props; + const [curAvator, setCurAvator] = useState(editData.avatorId); + const [loading, setLoading] = useState(false); + const { profile } = actions; + return ( + { + onClose(); + }} + onOk={() => { + if (!curAvator) { + return message.error("请选择头像"); + } + setLoading(true); + dispatch( + profile.editProfile(user.id, { avator: curAvator + ".png" }, "avator") + ).then((res) => { + if (res.success) { + onClose(true); + } + setLoading(false); + }); + }} + loading={loading} + > + {(() => { + let col = []; + for (let i = 1; i <= 12; i++) { + col.push( + setCurAvator(i.toString())} + key={i} + style={{ + width: "25%", + borderBottom: i == curAvator ? "1px solid green" : "", + }} + src={`/assets/avatar/${i}.png`} + /> + ); + if (i % 4 == 0) { + col.push(
    ); + } + } + return col; + })()} +
    + ); +}; + +function mapStateToProps(state) { + const { auth, global } = state; + return { + requesting: false, + actions: global.actions, + user: auth.user, + }; +} + +export default connect(mapStateToProps)(AvatorModal); diff --git a/web - 副本/client/src/sections/homePage/components/fieldModal.js b/web - 副本/client/src/sections/homePage/components/fieldModal.js new file mode 100644 index 0000000..edb329d --- /dev/null +++ b/web - 副本/client/src/sections/homePage/components/fieldModal.js @@ -0,0 +1,213 @@ +import React, { useEffect, useState } from "react"; +import { connect } from "react-redux"; +import { Modal, message, Form, Input, Button } from "antd"; +import { sendPhoneCode, checkPhoneCode } from "../actions/validate-phone"; + +const UserFieldModal = (props) => { + const { visible, onClose, editData, dispatch, actions, user, kind } = props; + const [form] = Form.useForm(); + const [loading, setLoading] = useState(false); + const [sleepCount, setSleepCount] = useState(0); + const { profile } = actions; + + const requestDone = (res, refresh) => { + if (res.success) { + onClose(refresh); + } + setLoading(false); + }; + + return ( + { + onClose(); + }} + onOk={() => { + form.validateFields().then((v) => { + setLoading(true); + if (kind == "pswd") { + dispatch(profile.editpassword(user.id, v)).then((res) => { + requestDone(res); + }); + } else if (kind == "name") { + dispatch(profile.editName(user.id, v)).then((res) => { + requestDone(res, true); + }); + } else if (kind == "email") { + dispatch(profile.editProfile(user.id, v, "email")).then((res) => { + requestDone(res, true); + }); + } else if (kind == "phone") { + checkPhoneCode(v.phone, v.code).then( + () => { + dispatch( + profile.editProfile(user.id, { phone: v.phone }, "phone") + ).then((res) => { + requestDone(res, true); + }); + }, + (err) => { + message.error(err.response.body.message); + } + ); + } + }); + }} + loading={loading} + > +
    + {(() => { + switch (kind) { + case "pswd": + return ( + + + + + + + + + ); + case "name": + return ( + + + + + + ); + case "email": + return ( + + + + + + ); + case "phone": + return ( + + + + + +
    + + + +
    + +
    +
    + ); + } + })()} + +
    + ); +}; + +function mapStateToProps(state) { + const { auth, global } = state; + return { + requesting: false, + actions: global.actions, + user: auth.user, + }; +} + +export default connect(mapStateToProps)(UserFieldModal); diff --git a/web - 副本/client/src/sections/homePage/components/partyColumns.js b/web - 副本/client/src/sections/homePage/components/partyColumns.js new file mode 100644 index 0000000..0778aa8 --- /dev/null +++ b/web - 副本/client/src/sections/homePage/components/partyColumns.js @@ -0,0 +1,148 @@ +import React, { useState, useEffect } from "react"; +import { connect } from "react-redux"; +import { Table } from "antd"; +import { push } from "react-router-redux"; +import moment from "moment"; +import { getDataList } from "../actions/profile"; +let BARBG = "../../../../assets/images/barbg.png"; + +function PartyColumns(props) { + const { dispatch } = props; + const [partyinformation, setPartyInformation] = useState([]); //党建资讯 + const more = (id) => { + dispatch(push("/more", { type: 1, status: 1 })); + }; + useEffect(() => { + dispatch(getDataList({ type: 1, status: 1 })).then((res) => { + res.payload ? setPartyInformation(res.payload.data.data) : ""; + }); + }, []); + const renderInfoBar = (title) => { + return ( +
    +
    + {title} +
    +
    { + more("123"); + }} + > + {"更多 >>"} +
    +
    + ); + }; + const activityColumns = [ + { + title: "Name", + dataIndex: "name", + key: "name", + sorter: (a, b) => { + const atime = a.publishTime + .slice(0, 10) + .replace("-", "") + .replace("-", ""); + + const btime = b.publishTime + .slice(0, 10) + .replace("-", "") + .replace("-", ""); + return atime - btime; + }, + defaultSortOrder: "bscend", + render: (text, record) => ( +
    { + dispatch( + push("/particulars", { id: record.id, title: record.title }) + ); + }} + > + + + {record?.title || ""} + + + [{record?.createTime.slice(0, 10) || ""}] + +
    + ), + }, + ]; + return ( +
    +
    + {renderInfoBar("党建资讯")} +
    +
    + + + + ); +} +function mapStateToProps(state) { + const { auth, global, articlesfrom } = state; + return { + user: auth.user, + actions: global.actions, + articlesfrom: articlesfrom, + }; +} +export default connect(mapStateToProps)(PartyColumns); diff --git a/web - 副本/client/src/sections/homePage/components/unionColumns.js b/web - 副本/client/src/sections/homePage/components/unionColumns.js new file mode 100644 index 0000000..0832704 --- /dev/null +++ b/web - 副本/client/src/sections/homePage/components/unionColumns.js @@ -0,0 +1,148 @@ +import React, { useState, useEffect } from "react"; +import { connect } from "react-redux"; +import { Table } from "antd"; +import { push } from "react-router-redux"; +import moment from "moment"; +import { getDataList } from "../actions/profile"; +let BARBG = "../../../../assets/images/barbg.png"; + +function UnionColumns(props) { + const { dispatch } = props; + const [unioninformation, setUnionInformation] = useState(); //工会资讯 + const more = (id) => { + dispatch(push("/more", { type: 2, status: 1 })); + }; + useEffect(() => { + dispatch(getDataList({ type: 2, status: 1 })).then((res) => { + res.payload ? setUnionInformation(res.payload.data.data) : ""; + }); + }, []); + const renderInfoBar = (title) => { + return ( +
    +
    + {title} +
    +
    { + more(); + }} + > + {"更多 >>"} +
    +
    + ); + }; + const activityColumns = [ + { + title: "Name", + dataIndex: "name", + key: "name", + sorter: (a, b) => { + const atime = a.publishTime + .slice(0, 10) + .replace("-", "") + .replace("-", ""); + + const btime = b.publishTime + .slice(0, 10) + .replace("-", "") + .replace("-", ""); + return atime - btime; + }, + defaultSortOrder: "bscend", + render: (text, record) => ( +
    { + dispatch( + push("/particulars", { id: record.id, title: record.title }) + ); + }} + > + + + {record?.title || ""} + + + [{record?.createTime.slice(0, 10) || ""}] + +
    + ), + }, + ]; + return ( +
    +
    + {renderInfoBar("工会资讯")} +
    +
    + + + + ); +} +function mapStateToProps(state) { + const { auth, global, articlesfrom } = state; + return { + user: auth.user, + actions: global.actions, + articlesfrom: articlesfrom, + }; +} +export default connect(mapStateToProps)(UnionColumns); diff --git a/web - 副本/client/src/sections/homePage/containers/.DS_Store b/web - 副本/client/src/sections/homePage/containers/.DS_Store new file mode 100644 index 0000000..e2f2475 Binary files /dev/null and b/web - 副本/client/src/sections/homePage/containers/.DS_Store differ diff --git a/web - 副本/client/src/sections/homePage/containers/configure.js b/web - 副本/client/src/sections/homePage/containers/configure.js new file mode 100644 index 0000000..03f2cb5 --- /dev/null +++ b/web - 副本/client/src/sections/homePage/containers/configure.js @@ -0,0 +1,140 @@ +import React, { useState, useEffect } from "react"; +import { Table, Button } from "antd"; +import { connect } from "react-redux"; +import { getDataList } from "../actions/profile"; +let BG = "/assets/images/pagebg.png"; +let BARBG = "../../../../assets/images/barbg.png"; +import { push } from "react-router-redux"; + +function More(props) { + const { dispatch } = props; + const [datas, setDatas] = useState([]); + const [address, setAddress] = useState([]); + const [limit, setLimit] = useState(); //当前数据条数 + const [pagesize, setPagesize] = useState(); //当前页码 + + useEffect(() => { + dispatch( + getDataList({ + type: props.location.state.type, + page: pagesize, + limit: 10, + status: 1, + }) + ).then((res) => { + res.payload ? setDatas(res.payload.data.data) : ""; + if (res.payload) { + setAddress(res.payload.data.data[0].type); + setLimit(res.payload.data.total); + return; + } else { + return "工会地址"; + } + }); + }, []); + const columns = [ + { + dataIndex: "name", + key: "name", + render: (text, record) => ( +
    { + dispatch( + push("/particulars", { id: record.id, title: record.title }) + ); + }} + > + {record?.title || ""} + + [{record?.publishTime.slice(0, 10) || ""}] + +
    + ), + }, + ]; + return ( +
    { + setPagesize(page.current); + }} + /> + + + + ); +} + +export default connect()(More); diff --git a/web - 副本/client/src/sections/homePage/containers/index.js b/web - 副本/client/src/sections/homePage/containers/index.js new file mode 100644 index 0000000..85c2e19 --- /dev/null +++ b/web - 副本/client/src/sections/homePage/containers/index.js @@ -0,0 +1,536 @@ +/* eslint-disable react-hooks/exhaustive-deps */ +import React, { useState, useEffect } from "react"; +import { connect } from "react-redux"; +import { Spin, Tabs } from "antd"; +import { LayoutContent } from "@peace/components"; +import classnames from "classnames/bind"; +import styles from "./index.less"; +import { push } from "react-router-redux"; +import moment from "moment"; +import ActivityColumns from "../components/activityColumns"; +import PartyColumns from "../components/partyColumns"; +import UnionColumns from "../components/unionColumns"; +import { getPartyMember } from "../actions/profile"; +const ROOTLESSNAME = "ly-alarm-configure-container-indexjs"; +const CX = classnames.bind(styles); +const { TabPane } = Tabs; +function cx_(name) { + return CX(`${ROOTLESSNAME}${name}`); +} +const _style = { + chaxun: cx_(`__btn-chaxun`), + chaxunWraper: cx_(`__chaxunWraper`), +}; + +let BG = "/assets/images/pagebg.png"; +let DYREANSHUBG = "/assets/images/renshu_bg.png"; +let GONGHUIBG = "/assets/images/gonghui_bg.png"; +let zhuyaochengyuan_bg = "/assets/images/zhuyaochengyuan_bg.png"; + +let avatar1 = "../../../../assets/images/avatar_1.png"; +let yaojianjun = "../../../../assets/images/avatar/yaojianjun.png"; + +let xinwen = "../../../../assets/images/xinweng.png"; +let shangxinli = "../../../../assets/images/shangxinli_title.png"; + +let BARBG = "../../../../assets/images/barbg.png"; +// export const transformSacle = `scale(${Math.min( +// document.body.clientWidth / 1920, +// document.body.clientHeight / 1080 +// )})`; +const _huoJiang = Array(20) + .fill(0) + .map((t, i) => { + return { + name: "卞学前", + award: "最佳执行者", + avatar: avatar1, + }; + }); +const _zhuyaochengyuan1 = [ + { + avatar: "../../../../assets/images/avatar/liuwei.png", + name: "刘玮", + }, + { + avatar: "../../../../assets/images/avatar/jiangzheng.png", + name: "姜珍", + }, +]; +const organization = [ + { + avatar: "../../../../assets/images/avatar/yanwenzhi.png" /* avatar: + "../../../../assets/images/avatar/wenzhe.png", */, + }, + { + avatar: "../../../../assets/images/avatar/liuwei2.png", + }, + { + avatar: "../../../../assets/images/avatar/liwenguo.png", + }, + { + avatar: "../../../../assets/images/avatar/yaowenting2.png", + }, +]; +const organization2 = [ + { + avatar: "../../../../assets/images/avatar/mmexport.png", + }, + { + avatar: "../../../../assets/images/avatar/zhangjing.png", + }, + { + avatar: "../../../../assets/images/avatar/wulongbiao.png", + }, +]; +const _zhuyaochengyuan2 = [ + { + avatar: "../../../../assets/images/avatar/yaowenting.png", + }, + { + avatar: "../../../../assets/images/avatar/wulongbiao.png", + }, + { + avatar: "../../../../assets/images/avatar/zhangbo.png", + }, + { + avatar: "../../../../assets/images/avatar/guofei.png", + }, +]; + +function Management(props) { + const { dispatch, party, user, loding } = props; + useEffect(() => { + dispatch(getPartyMember()).then((res) => {}); + }, []); + const renderCell = ({ title, src, time }, index) => { + return ( +
    +
    +
    { + dispatch(push("/particulars", title)); + }} + > + {title} +
    +
    {moment(time).format("YYYY-MM-DD")}
    +
    + ); + }; + + const renderRenshu = (title, number) => { + let bg = /党员/.test(title) ? DYREANSHUBG : GONGHUIBG; + return ( + +
    +
    + + {title}: + + + {number} + +
    +
    +
    + ); + }; + const renderBarTitle = (title) => { + return ( +
    + {title} +
    +
    + ); + }; + const renderJieGouPeople = ({ name, work, desc, avatar }) => { + return ( +
    + 头像 +
    +
    +
    + {name} +
    +
    + {work} +
    +
    +
    + {desc} +
    +
    +
    + ); + }; + return ( + + { + if ( + user && + user.authorized && + JSON.parse(sessionStorage.getItem("user")) + ) { + dispatch(push("/article")); + } else { + dispatch(push("/login")); + } + }} + > + 后台维护 + + +
    +
    +
    + {renderRenshu( + "党员人数", + party.data ? party.data.partyNumber : null + )} + {renderRenshu( + "工会人数", + party.data ? party.data.laborUnion : null + )} +
    + +
    +
    {renderBarTitle("党支部结构")}
    +
    + {renderJieGouPeople({ + avatar: avatar1, + name: "党伟", + work: "党支部书记、工会主席", + desc: "主持党支部的全面工作。负责召集党支部委员会议和党员大会,认真贯彻执行党的路线、方针、政策、宣传和执行党的决议组织和带领全体党员及干部努力完成党组织各项任务。带头抓好党组织建设,不断增强党组织的凝聚力、战斗力,充分发挥党组织的集体领导作用,充分发挥党员在各项工作中先锋模范作用。", + })} + {renderJieGouPeople({ + avatar: yaojianjun, + name: "姚建军", + work: "南昌小蓝经济技术开发区管委会四级调研员、财政局局长、飞尚科技党建指导员", + desc: "党建指导员是区党工委派往非公有制经济组织基层党组织,开展党的建设工作的党员。其主要职责任务是宣传党的政策、发展党员、组建党的基层组织,推动党的路线方针政策在基层的落实,加强党组织同群众的联系,把基层党组织建设成为区域领导核心或政治核心。", + })} +
    +
    + +
    + + + 党组织主要成员 + + } + key="1" + > +
    +
    + 照片 +
    +
    +
    + {organization.map((d, index) => { + return ( +
    + 头像 +
    + ); + })} +
    +
    + {organization2.map((d, index) => { + return ( +
    + 头像 +
    + ); + })} +
    +
    +
    +
    + + 工会主要成员 + + } + key="2" + > +
    +
    + 照片 +
    +
    +
    + {_zhuyaochengyuan1.map((d, index) => { + return ( +
    + 头像 +
    + ); + })} +
    +
    + {_zhuyaochengyuan2.map((d, index) => { + return ( +
    + 头像 +
    + ); + })} +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + +
    +
    +
    +
    + ); +} +function mapStateToProps(state) { + const { auth, global, tunnels, party, articlesfrom } = state; + return { + loding: party.isRequesting, + user: auth.user, + actions: global.actions, + articlesfrom: articlesfrom, + party: party || [], + }; +} +export default connect(mapStateToProps)(Management); diff --git a/web - 副本/client/src/sections/homePage/containers/index.less b/web - 副本/client/src/sections/homePage/containers/index.less new file mode 100644 index 0000000..adc3dc4 --- /dev/null +++ b/web - 副本/client/src/sections/homePage/containers/index.less @@ -0,0 +1,97 @@ +.fsdj-scroll-boxer::-webkit-scrollbar { + display: none; + /* Chrome Safari */ +} + +/* Hide scrollbar for IE, Edge and Firefox */ +.fsdj-scroll-boxer { + -ms-overflow-style: none; + /* IE and Edge */ + scrollbar-width : none; + /* Firefox */ +} + +.laborunion{ + .ant-tabs-ink-bar{ + height: 1px !important; + background-color: #ba0000 !important; + } +} + +.ant-tabs-top > .ant-tabs-nav::before, .ant-tabs-bottom > .ant-tabs-nav::before, .ant-tabs-top > div > .ant-tabs-nav::before, .ant-tabs-bottom > div > .ant-tabs-nav::before{ + border-color: #eab2b2 !important; +} +.complete{ + background: "url(../../../../assets/images/pagebg.png)"; + .danghui:hover{ + cursor:not-allowed; + } + .tupian{ + .image-wrap{ + img{ + overflow: auto !important; + } + } + + } +} +@media screen and (max-height:1440px) { + .loginBox { + top: 25%; + } +} + +@media screen and (max-height: 768px) { + .loginBox { + top: 20%; + } +} + +@media screen and (max-height: 630px) { + .loginBox { + top: 10%; + } +} + +.loginBox { + height: 40%; + width: 25%; + position: absolute; + right: 6.5%; + z-index: 20; + background-color: #fff5e1; + .login-form-button{ + width: 100%; + width: 80%; + height: 40px; + left: 10%; + background-color: #af251b; + } + .user{ + width: 80%; + height: 40px; + left: 10%; + background-color: #ffebe9 !important; + } + .pass{ + width: 80%; + height: 40px; + left: 10%; + background-color: #ffebe9 !important; + } + .loginfont{ + margin-top: 10%; + margin-left: 10%; + font-size: 31px; + color: #af251b; + } + #normal_login_username{ + background-color: #ffebe9 !important; + } + #normal_login_password{ + background-color: #ffebe9 !important; + } +} +#article-container{ + height: 90% !important; +} diff --git a/web - 副本/client/src/sections/homePage/containers/login.js b/web - 副本/client/src/sections/homePage/containers/login.js new file mode 100644 index 0000000..dc0cbee --- /dev/null +++ b/web - 副本/client/src/sections/homePage/containers/login.js @@ -0,0 +1,95 @@ +// import React, { useState } from "react"; +// import { connect } from "react-redux"; +// import { Form, Input, Button, Checkbox } from "antd"; +// import { UserOutlined, LockOutlined } from "@ant-design/icons"; +// import "./index.less"; + +// const FormItem = Form.Item; +// function Login(props) { +// let Long = "/assets/images/denglu.png"; +// let phone = "/assets/images/手机_填充.png"; +// let cipher = "/assets/images/密码.png"; +// const enterHandler = (e) => { +// if (e.key === "Enter") { +// setInputChanged(false); +// } +// }; +// const handleLogin = () => { +// let reg_user = "SuperAdmin"; +// let reg_tel = /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/; +// if (username == reg_user) { +// setInputChanged(false); +// dispatch(login(username, password)); +// return; +// } +// if (username == "" || password == "") { +// setInputChanged(false); +// dispatch(login(username, password)); +// return; +// } +// setInputChanged(false); +// dispatch(login("12345678912564589", "123456789")); +// }; +// return ( +//
    +//
    +//

    用户登录

    +//
    +// +// } +// className="user" +// maxLength={11} +// placeholder="请输入账号" +// /> +// +// +// } +// type="password" +// placeholder="请输入密码" +// className="pass" +// /> +// +// +// +// +// +//
    +//
    +// ); +// } +// function mapStateToProps(state) { +// const { auth, global, tunnels, party } = state; +// return { +// user: auth.user, +// actions: global.actions, +// party: party, +// }; +// } + +// export default connect(mapStateToProps)(Login); diff --git a/web - 副本/client/src/sections/homePage/containers/particulars.js b/web - 副本/client/src/sections/homePage/containers/particulars.js new file mode 100644 index 0000000..a1d6273 --- /dev/null +++ b/web - 副本/client/src/sections/homePage/containers/particulars.js @@ -0,0 +1,134 @@ +import { push } from "connected-react-router"; +import React, { useState, useEffect } from "react"; +import { getText } from "../actions/profile"; +import { Scroller } from "$components"; +import { connect } from "react-redux"; +import { Spin } from "antd"; +import "./index.less"; + +function Particulars(props) { + const [essay, setEssay] = useState(); + const { visible, onClose, editData, dispatch, party, textids, user, loding } = + props; + let BG = "/assets/images/pagebg.png"; + let Tb = "/assets/images/tuceng.png"; + + useEffect(() => { + dispatch(getText(props.location.state.id)); + }, []); + + const downLoadFile = () => { + const path = textids.image; + const filename = path.substr(path.lastIndexOf("/") + 1); + const url = `/_upload/attachments?src=${path}&filename=${filename}`; + window.open(url); + }; + + return ( + +
    +
    + +
    + {textids.title} +
    +
    +
    + {textids + ? [ +

    , + textids && textids.image ? ( + + 附件下载:{" "} + downLoadFile()}> + {textids.image.substr( + textids.image.lastIndexOf("/") + 1 + )} + + + ) : ( + "" + ), + ] + : null} +

    + { + dispatch(push("/brief")); + }} + > + 返回首页 + +
    +
    +
    +
    + ); +} +function mapStateToProps(state) { + const { auth, global, party, wen } = state; + return { + loding: wen.isRequesting, + user: auth.user, + actions: global.actions, + party: party, + textids: wen.data || [], + }; +} + +export default connect(mapStateToProps)(Particulars); diff --git a/web - 副本/client/src/sections/homePage/index.js b/web - 副本/client/src/sections/homePage/index.js new file mode 100644 index 0000000..b1fdb78 --- /dev/null +++ b/web - 副本/client/src/sections/homePage/index.js @@ -0,0 +1,11 @@ +import routes from './routes'; +import reducers from './reducers'; +import actions from './actions'; + +export default { + key: 'brief', + name: '党工平台', + reducers, + routes, + actions, +}; diff --git a/web - 副本/client/src/sections/homePage/nav-item.js b/web - 副本/client/src/sections/homePage/nav-item.js new file mode 100644 index 0000000..3a674cb --- /dev/null +++ b/web - 副本/client/src/sections/homePage/nav-item.js @@ -0,0 +1,17 @@ +import React from "react"; +import { Link } from "react-router-dom"; +import { Menu } from "antd"; +import { BarChartOutlined } from "@ant-design/icons"; +const SubMenu = Menu.SubMenu; +export function getNavItem() { + return ( + + }> + 智慧党工 + 更多信息 + + + ); +} + +export default getNavItem; diff --git a/web - 副本/client/src/sections/homePage/reducers/index.js b/web - 副本/client/src/sections/homePage/reducers/index.js new file mode 100644 index 0000000..ff8b4c5 --- /dev/null +++ b/web - 副本/client/src/sections/homePage/reducers/index.js @@ -0,0 +1 @@ +export default {}; diff --git a/web - 副本/client/src/sections/homePage/reducers/profile.js b/web - 副本/client/src/sections/homePage/reducers/profile.js new file mode 100644 index 0000000..e69de29 diff --git a/web - 副本/client/src/sections/homePage/routes.js b/web - 副本/client/src/sections/homePage/routes.js new file mode 100644 index 0000000..46a1e05 --- /dev/null +++ b/web - 副本/client/src/sections/homePage/routes.js @@ -0,0 +1,29 @@ +import Container from "./containers"; +import Configure from "./containers/configure"; +import particulars from "./containers/particulars"; +export default [ + { + type: "outer", + route: { + path: "/brief", + key: "brief", + component: Container, + }, + }, + { + type: "outer", + route: { + path: "/particulars", + key: "particulars", + component: particulars, + }, + }, + { + type: "outer", + route: { + path: "/more", + key: "more", + component: Configure, + }, + }, +]; diff --git a/web - 副本/client/src/sections/index.js b/web - 副本/client/src/sections/index.js new file mode 100644 index 0000000..4f713d7 --- /dev/null +++ b/web - 副本/client/src/sections/index.js @@ -0,0 +1,8 @@ +import Auth from './auth'; +import AlarmConfure from './homePage'; +import Article from './article' +import Party from './party' +import Organization from './organization' +export { + Auth, AlarmConfure, Article, Party,Organization +}; diff --git a/web - 副本/client/src/sections/organization/actions/index.js b/web - 副本/client/src/sections/organization/actions/index.js new file mode 100644 index 0000000..1e6b011 --- /dev/null +++ b/web - 副本/client/src/sections/organization/actions/index.js @@ -0,0 +1,6 @@ +'use strict'; +import { editLaborParty } from './party' + +export default { + editLaborParty +} \ No newline at end of file diff --git a/web - 副本/client/src/sections/organization/actions/party.js b/web - 副本/client/src/sections/organization/actions/party.js new file mode 100644 index 0000000..673a3ed --- /dev/null +++ b/web - 副本/client/src/sections/organization/actions/party.js @@ -0,0 +1,61 @@ +'use strict'; +import { ApiTable } from '$utils' +import { Request } from '@peace/utils' +import { basicAction } from '@peace/utils' + + +export function editLaborParty(obj) { + return dispatch => basicAction({ + type: 'put', + dispatch: dispatch, + data: obj, + actionType: 'EDIT_PARTY', + url: `${ApiTable.getpartyMember}`, + msg: { error: '编辑党员工会人数失败' }, + reducer: { name: 'editLaborParty' } + }); +} +export function getCommittee(query) { + return dispatch => basicAction({ + type: 'get', + dispatch: dispatch, + query, + actionType: 'GET_COMMITTEE', + url: `${ApiTable.getCommittee}`, + msg: { error: '获取支委会人员信息失败' }, + // reducer: { name: 'editLaborParty' } + }); +} +export function postCommittee(query) { + return dispatch => basicAction({ + type: 'post', + dispatch: dispatch, + data:query, + actionType: 'POST_COMMITTEE', + url: `${ApiTable.postCommittee}`, + msg: { error: '新增支委会人员信息失败' }, + // reducer: { name: 'editLaborParty' } + }); +} +export function putCommittee(query,putid) { + return dispatch => basicAction({ + type: 'put', + dispatch: dispatch, + data:query, + actionType: 'PUT_COMMITTEE', + url: ApiTable.putCommittee.replace(':id',putid), + msg: { error: '修改支委会人员信息失败' }, + // reducer: { name: 'editLaborParty' } + }); +} +export function delCommittee(query,putid) { + return dispatch => basicAction({ + type: 'del', + dispatch: dispatch, + data:query, + actionType: 'DEL_COMMITTEE', + url: ApiTable.putCommittee.replace(':id',putid), + msg: { error: '删除支委会人员信息失败' }, + // reducer: { name: 'editLaborParty' } + }); +} diff --git a/web - 副本/client/src/sections/organization/components/OutgoingVisibleModel.js b/web - 副本/client/src/sections/organization/components/OutgoingVisibleModel.js new file mode 100644 index 0000000..1237998 --- /dev/null +++ b/web - 副本/client/src/sections/organization/components/OutgoingVisibleModel.js @@ -0,0 +1,892 @@ +import React, { useEffect, useState } from "react"; +import { connect } from "react-redux"; +import { Form, Spin, message, Row, Col } from "antd"; +import { + ModalForm, + ProForm, + ProFormText, + ProFormSelect, + ProFormDatePicker, + ProFormTextArea, +} from "@ant-design/pro-form"; +import { getCommittee, putCommittee } from "../actions/party"; + +import _ from "lodash"; +import Uploads from "../../../components/Upload/fujian.js"; +import "./index.less"; +import { Scroller } from "$components"; + +const ProjectModal = (props) => { + const { + visible, + onVisibleChange, + typecard, + rewkeys, + recortd, + dispatch, + flageMold, + setFlageMold, + setFlageRef, + } = props; + const [newlys, setNewlys] = useState(); //必填数据 + const [newlysay, setNewlysay] = useState(); //处理hou + const [records, setRecords] = useState(); //处理 + const [recordsay, setRecordsay] = useState(); //必填数据 + const [uploadVisible, setUploadVisible] = useState(false); + const [files, setFiles] = useState(); + // const [lin, setlin] = useState([]); + // useEffect(() => { + // if (recortd?.photograph?.length > 0) { + // setlin(JSON.parse(recortd?.photograph)); + // } + // }, [recortd]); + // useEffect(() => { + // return () => { + // setlin(null); + // }; + // }); + const onFileUploaded = (fileList) => { + // setlin(fileList.length === 0 ? [] : localStorage.getItem("modifyData") ? JSON.parse(localStorage.getItem("modifyData"))?.files !== null ? JSON.parse(JSON.parse(localStorage.getItem("modifyData"))?.files) : [] : []) + // console.log(fileList.length === 0 ? [] : localStorage.getItem("modifyData") ? JSON.parse(localStorage.getItem("modifyData"))?.files !== null ? JSON.parse(JSON.parse(localStorage.getItem("modifyData"))?.files) : [] : []) + setFiles(fileList); + }; + return ( + + { + console.log(values); + console.log(recortd); + if (typecard == "Outgoing") { + // setDelet(values); + const putid = recortd?.id; + let photograp = null; + if ( + JSON.stringify(recortd?.photograph) !== + JSON.stringify(values.photograph) + ) { + photograp = values?.photograph; + } else { + photograp = recortd?.photograph; + } + const query = { + ...values, + mold: false, + photograph: photograp, + }; + dispatch(putCommittee(query, putid)).then((res) => { + setFlageMold(!flageMold); + if (res.success) { + message.success("离任成功"); + } else { + message.error("离任失败"); + } + }); + return true; + } + if (typecard == "Outgoingss") { + // setDelet(values); + const putid = recortd?.id; + let photograp = null; + if ( + JSON.stringify(recortd?.photograph) !== + JSON.stringify(values.photograph) + ) { + photograp = values?.photograph; + } else { + photograp = recortd?.photograph; + } + + const query = { + ...values, + forOrganization: "中共江西飞尚科技有限公司支部委员会", + photograph: photograp, + }; + dispatch(putCommittee(query, putid)).then((res) => { + // tableActionRef.current.reload(); + setFlageMold(!flageMold); + if (res.success) { + message.success("修改成功"); + } else { + message.error("修改失败"); + } + }); + return true; + } + }} + initialValues={recortd} + > + + {typecard === "Outgoing" ? ( + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    + +
    + + + + + + + + + +
    + +
    + + + + + + + + + + + ) : ( + "" + )} + {typecard === "Outgoingss" ? ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    + +
    + + + + + + + + + +
    + +
    + + + + + + + + + + + ) : ( + "" + )} + {typecard == "outexamine" ? ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    + +
    + + + + + + + + + +
    + +
    + + + + + + + + + + + ) : ( + "" + )} + + + + ); +}; +function mapStateToProps(state) { + const { depMessage } = state; + const pakData = (dep) => { + return dep.map((d) => { + return { + title: d.name, + value: d.id, + children: pakData(d.subordinate), + }; + }); + }; + // let depData = pakData(depMessage.data || []) + return { + // loading: depMessage.isRequesting, + // depData, + }; +} +export default connect(mapStateToProps)(ProjectModal); diff --git a/web - 副本/client/src/sections/organization/components/edit-party.js b/web - 副本/client/src/sections/organization/components/edit-party.js new file mode 100644 index 0000000..e75ea82 --- /dev/null +++ b/web - 副本/client/src/sections/organization/components/edit-party.js @@ -0,0 +1,82 @@ +// import React from 'react' +// import PropTypes from 'prop-types' +// import { Modal, Form, InputNumber, Button } from 'antd' +// import { useEffect } from 'react' + +// const EditParty = props => { +// const { visible, handleOk, handleCancel, editData } = props +// const [form] = Form.useForm(); + +// useEffect(() => { +// if (editData && visible) { +// form.setFieldsValue({ +// party: editData.partyNumber, +// labor: editData.laborUnion +// }) +// } +// }, [editData, visible]) + +// return ( +// +//
    +// +// +// +// +// +// +// +//
    +// +// +//
    +//
    + +// +//
    +// ) +// } + +// EditParty.propTypes = { +// visible: PropTypes.bool, +// handleCancel: PropTypes.func, +// handleOk: PropTypes.func, +// editData: PropTypes.object +// } + +// export default EditParty \ No newline at end of file diff --git a/web - 副本/client/src/sections/organization/components/index.less b/web - 副本/client/src/sections/organization/components/index.less new file mode 100644 index 0000000..9d2abb5 --- /dev/null +++ b/web - 副本/client/src/sections/organization/components/index.less @@ -0,0 +1,42 @@ +.model-increase{ + .ant-picker-input{ + width: 19rem !important; + } + .ant-input{ + width: 19rem !important; + } +} +.remark-field{ + .ant-col{ + width: 63rem !important; + } +} +.ant-row{ + margin-left: 26px !important; +} +.outgoing-date{ + .ant-picker-input{ + width: 17rem; + } + .ant-form-item-control-input{ + width: 61.5rem; + } +} +.display-ok{ + .ant-space-item{ + display: none !important; + } +} +.model-cancel{ + .ant-modal-footer{ + display: none !important; + } +} +.model-increase-two{ + .ant-picker-input{ + width: 17.5rem !important; + } + .ant-select-show-arrow{ + width: 308px !important; + } +} \ No newline at end of file diff --git a/web - 副本/client/src/sections/organization/components/memberVisibleModel.js b/web - 副本/client/src/sections/organization/components/memberVisibleModel.js new file mode 100644 index 0000000..f65583c --- /dev/null +++ b/web - 副本/client/src/sections/organization/components/memberVisibleModel.js @@ -0,0 +1,799 @@ +import React, { useEffect, useState } from "react"; +import { connect } from "react-redux"; +import { Select, Spin, message, Row, Col, Radio } from "antd"; +import { + ModalForm, + ProForm, + ProFormText, + ProFormSelect, + ProFormDatePicker, + ProFormTextArea, +} from "@ant-design/pro-form"; +import { postCommittee, putCommittee } from "../actions/party"; +import _ from "lodash"; +import Uploads from "../../../components/Upload/fujian.js"; +import "./index.less"; +import { Scroller } from "$components"; +const { Option } = Select; +const ProjectModal = (props) => { + const { + visible, + onVisibleChange, + typecard, + tableActionRef, + recortd, + dispatch, + flageMold, + setFlageMold, + category, + } = props; + const [newlys, setNewlys] = useState(); //必填数据 + const [newlysay, setNewlysay] = useState(); //处理hou + const [records, setRecords] = useState(); //处理 + const [recordsay, setRecordsay] = useState(); //必填数据 + const [files, setFiles] = useState(); + const [uploadVisible, setUploadVisible] = useState(false); + // const [lin, setlin] = useState([]); + // useEffect(() => { + // if (recortd?.photograph?.length > 0) { + // setlin(JSON.parse(recortd?.photograph)); + // } + // }, [recortd]); + // useEffect(() => { + // return () => { + // setlin([]) + // } + // }) + const onFileUploaded = (fileList) => { + console.log(fileList); + // setlin(fileList.length === 0 ? [] : localStorage.getItem("modifyData") ? JSON.parse(localStorage.getItem("modifyData"))?.files !== null ? JSON.parse(JSON.parse(localStorage.getItem("modifyData"))?.files) : [] : []) + // console.log(fileList.length === 0 ? [] : localStorage.getItem("modifyData") ? JSON.parse(localStorage.getItem("modifyData"))?.files !== null ? JSON.parse(JSON.parse(localStorage.getItem("modifyData"))?.files) : [] : []) + setFiles(fileList); + }; + const nation = [ "汉族","满族","蒙古族","回族","藏族","维吾尔族","苗族","彝族","壮族","布依族","侗族","瑶族","白族","土家族","哈尼族","哈萨克族","傣族","黎族","傈僳族","佤族","畲族","高山族","拉祜族","水族","东乡族","纳西族","景颇族","柯尔克孜族","土族","达斡尔族","仫佬族","羌族","布朗族","撒拉族","毛南族","仡佬族","锡伯族","阿昌族","普米族","朝鲜族","塔吉克族","怒族","乌孜别克族","俄罗斯族","鄂温克族","德昂族","保安族","裕固族","京族","塔塔尔族","独龙族","鄂伦春族","赫哲族","门巴族","珞巴族", + "基诺族", + "其他民族", + "外国血统", + "外国民族", + ]; + return ( + +
    + { + console.log(values); + if (typecard == "compile") { + // setDelet(values); + + const query = { + ...values, + mold: true, + forOrganization: "中共江西飞尚科技有限公司支部委员会", + photograph: values?.photograph ? values?.photograph : [], + }; + dispatch(postCommittee(query)).then((res) => { + setFlageMold(!flageMold); + if (res.success) { + message.success("新增委员成功"); + } else { + message.error("新增委员失败"); + } + }); + return true; + } + if (typecard == "modification") { + // setDelet(values); + const putid = recortd?.id; + let photograp = null; + if ( + JSON.stringify(recortd?.photograph) !== + JSON.stringify(values.photograph) + ) { + photograp = values?.photograph; + } else { + photograp = recortd?.photograph; + } + const query = { + ...values, + mold: true, + photograph: photograp, + }; + dispatch(putCommittee(query, putid)).then((res) => { + // tableActionRef.current.reload(); + setFlageMold(!flageMold); + if (res.success) { + message.success("修改成功"); + } else { + message.error("修改失败"); + } + }); + return true; + } + }} + initialValues={recortd} + > + + {typecard == "compile" ? ( + + + {" "} +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) : ( + "" + )} + {typecard == "modification" ? ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    + +
    + + + + + + + + + + + ) : ( + "" + )} + {typecard == "examine" ? ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    + +
    + + + + + + + + + + + ) : ( + "" + )} + + + + + ); +}; +function mapStateToProps(state) { + const { depMessage } = state; + const pakData = (dep) => { + return dep.map((d) => { + return { + title: d.name, + value: d.id, + children: pakData(d.subordinate), + }; + }); + }; + // let depData = pakData(depMessage.data || []) + return { + // loading: depMessage.isRequesting, + // depData, + }; +} +export default connect(mapStateToProps)(ProjectModal); diff --git a/web - 副本/client/src/sections/organization/components/newlyVisibleModel.js b/web - 副本/client/src/sections/organization/components/newlyVisibleModel.js new file mode 100644 index 0000000..40f7827 --- /dev/null +++ b/web - 副本/client/src/sections/organization/components/newlyVisibleModel.js @@ -0,0 +1,823 @@ +import React, { useEffect, useState } from "react"; +import { connect } from "react-redux"; +import { Button, Spin, message, Row, Col } from "antd"; +import { + ModalForm, + ProForm, + ProFormText, + ProFormSelect, + ProFormDatePicker, + ProFormTextArea, +} from "@ant-design/pro-form"; +import { postCommittee, putCommittee } from "../actions/party"; +import _ from "lodash"; +import Uploads from "../../../components/Upload/fujian.js"; +import "./index.less"; +import { Scroller } from "$components"; + +const ProjectModal = (props) => { + const { + visible, + onVisibleChange, + typecard, + tableActionRef, + recortd, + dispatch, + flageMold, + setFlageMold, + category, + } = props; + const [newlys, setNewlys] = useState(); //必填数据 + const [newlysay, setNewlysay] = useState(); //处理hou + const [records, setRecords] = useState(); //处理 + const [recordsay, setRecordsay] = useState(); //必填数据 + const [files, setFiles] = useState(); + const [uploadVisible, setUploadVisible] = useState(false); + // const [lin, setlin] = useState([]); + // useEffect(() => { + // if (recortd?.photograph?.length > 0) { + // setlin(JSON.parse(recortd?.photograph)); + // } + // }, [recortd]); + // useEffect(() => { + // return () => { + // setlin([]) + // } + // }) + const onFileUploaded = (fileList) => { + console.log(fileList); + // setlin(fileList.length === 0 ? [] : localStorage.getItem("modifyData") ? JSON.parse(localStorage.getItem("modifyData"))?.files !== null ? JSON.parse(JSON.parse(localStorage.getItem("modifyData"))?.files) : [] : []) + // console.log(fileList.length === 0 ? [] : localStorage.getItem("modifyData") ? JSON.parse(localStorage.getItem("modifyData"))?.files !== null ? JSON.parse(JSON.parse(localStorage.getItem("modifyData"))?.files) : [] : []) + setFiles(fileList); + }; + + return ( + +
    { + console.log(values) + if (typecard == "compile") { + // setDelet(values); + + const query = { + ...values, + mold: true, + forOrganization: "中共江西飞尚科技有限公司支部委员会", + photograph: values?.photograph ? values?.photograph : [], + }; + dispatch(postCommittee(query)).then((res) => { + setFlageMold(!flageMold); + if (res.success) { + message.success("新增委员成功"); + } else { + message.error("新增委员失败"); + } + }); + return true; + } + if (typecard == "modification") { + // setDelet(values); + const putid = recortd?.id; + let photograp = null; + if ( + JSON.stringify(recortd?.photograph) !== + JSON.stringify(values.photograph) + ) { + photograp = values?.photograph; + } else { + photograp = recortd?.photograph; + } + const query = { + ...values, + mold: true, + photograph: photograp, + }; + dispatch(putCommittee(query, putid)).then((res) => { + // tableActionRef.current.reload(); + setFlageMold(!flageMold); + if (res.success) { + message.success("修改成功"); + } else { + message.error("修改失败"); + } + }); + return true; + } + }} + initialValues={recortd} + > + + {typecard == "compile" ? ( + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    + +
    + + + + + + + + + + + ) : ( + "" + )} + {typecard == "modification" ? ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    + +
    + + + + + + + + + + + ) : ( + "" + )} + {typecard == "examine" ? ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    + +
    + + + + + + + + + + + ) : ( + "" + )} + + + + + ); +}; +function mapStateToProps(state) { + const { depMessage } = state; + const pakData = (dep) => { + return dep.map((d) => { + return { + title: d.name, + value: d.id, + children: pakData(d.subordinate), + }; + }); + }; + // let depData = pakData(depMessage.data || []) + return { + // loading: depMessage.isRequesting, + // depData, + }; +} +export default connect(mapStateToProps)(ProjectModal); diff --git a/web - 副本/client/src/sections/organization/containers/index.js b/web - 副本/client/src/sections/organization/containers/index.js new file mode 100644 index 0000000..70793e9 --- /dev/null +++ b/web - 副本/client/src/sections/organization/containers/index.js @@ -0,0 +1,6 @@ +'use strict'; + +import organization from './organization'; +import partyMember from './partyMember'; + +export {organization,partyMember}; \ No newline at end of file diff --git a/web - 副本/client/src/sections/organization/containers/organization.js b/web - 副本/client/src/sections/organization/containers/organization.js new file mode 100644 index 0000000..b78aeca --- /dev/null +++ b/web - 副本/client/src/sections/organization/containers/organization.js @@ -0,0 +1,339 @@ +import PropTypes from 'prop-types' +import React, { useEffect, useState,useRef } from "react"; +import { connect } from 'react-redux' +import { Table, message,Button } from 'antd' +import ProTable from '@ant-design/pro-table'; +import '../components/index.less' +import { getPartyMember } from '../../homePage/actions/profile' +import { getCommittee,delCommittee,putCommittee } from '../actions/party' +import EditParty from '../components/edit-party'; +import NewlyVisibleModel from '../components/newlyVisibleModel'; +import OutgoingVisibleModel from '../components/OutgoingVisibleModel'; +import moment from "moment"; +import { Scroller } from "$components"; + +var request = false +export const Default = (props) => { + + const { dispatch } = props; + + const [counts, setCounts] = useState(); //数据 + + const [showEdit, setShowEdit] = useState(false); + const [editData, setEditData] = useState(); + const [partyLabor, setPartyLabor] = useState(); + const [newlyVisible, setNewlyVisible] = useState(false);// 新增 + const [outgoingVisible, setOutgoingVisible] = useState(false);// 离任新增 + const [recortd,setRecortd]=useState() + const [outgoingRecortd,setOutgoingRecortd]=useState() + const [category, setCategory] = useState() //类别 + const [typecard, setTypecard] = useState() //xinzeng 编辑 + const [outcategory, setOutCategory] = useState() //类别 + const [outTypecard, setOutTypecard] = useState() //liren 编辑 + const [flageMold, setFlageMold] = useState(true) //上下table联动 + const [nameSou,setNameSou]=useState() //姓名搜索 + const tableActionRef = useRef(); + useEffect(() => { + let query = { + limit: 5, + + }; + dispatch(getCommittee(query)).then(res => { + if (res.success) { + setPartyLabor(res.payload.data); + const dataCoutn = res.payload.data?.filter((item) => { + return item.mold===true + }) + setCounts(dataCoutn); + } + }) + }, [flageMold]) +//删除人员信息 + const deldata = (record,id) => { + let query={...record,mold:true,leaveTime:'',leavingReason:''} + dispatch(putCommittee(query,id)).then((res) => { + console.log(res) + setFlageMold(!flageMold) + if (res.success) { + message.success('删除成功'); + } else { + message.error('删除失败'); + } + }) + } + +//打开增补弹窗 + const openModal = (type, record) => { + setNewlyVisible(true); + + } + //打开离任弹窗 + const leaveModal = ( record,type) => { + setOutgoingVisible(true); + setOutgoingRecortd(record) + setOutTypecard(type) + +} + const columns = [ + // { + // key: 'num', + // dataIndex: 'num', + // title: '序号', + // search: false, + // render: () => { + // return 1 + // } + // }, + { + title: '姓名', + dataIndex: 'name', + key: 'name', + render: (dom, record) => { + return
    {record.name}
    + }, + fieldProps: { + onChange: (value, cs) => { + setNameSou(value.currentTarget.value) + }, + placeholder: '请输入姓名进行搜索', + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, + { + title: '性别', + dataIndex: 'sexuality', + key: 'sexuality', + search: false, + render: (dom, record) => { + return
    {record.sexuality}
    + }, +}, +{ + title: '党内职务', + dataIndex: 'mode', + key: 'mode', + search: false, + render: (dom, record) => { + return
    {record.partyPosts}
    + }, +}, +{ + title: '任职方式', + dataIndex: 'mode', + key: 'mode', + search: false, + render: (dom, record) => { + return
    {record.howPositions}
    + }, +},{ + title: '任职时间', + dataIndex: 'mode', + key: 'mode', + search: false, + render: (dom, record) => { + return
    {moment(record.employmentTime).format("YYYY-MM-DD")}
    + }, +},{ + title: '联系电话', + dataIndex: 'mode', + key: 'mode', + search: false, + render: (dom, record) => { + return
    {record.phone}
    + }, +}, + { + key: 'ation', + title: '操作', + search: false, + width:150, + render: (text, record) => { + return + } + } + , { + key: "direction", + hideInTable: true, + dataIndex: "direction", + order: 6, + renderFormItem: (item, { type, defaultRender, ...rest }) => { + return ( +
    +
    + ); + }, + }, + ] + return ( +
    +

    中共江西飞尚科技有限公司支部委员会

    + { + setNameSou('') + }} + request={async (params) => { + + let query = { + page: params.current, + limit: 5, + name:nameSou + }; + const res = await dispatch(getCommittee(query)); + const dataCoutn = res.payload.data?.filter((item) => { + return item.mold===true + }) + setCounts(dataCoutn); + return { + ...res, + total: res.payload.data ? res.payload.data : '', + }; + }} + > + + + + +
    + ) +} +const OutgoingList = (props) => { + const { partyLabor, leaveModal,setOutTypecard,deldata } = props + const dataLabor = partyLabor?.filter((item) => { + return item.mold===false + }) + const tableColumns = [ + // { + // key: 'num', + // dataIndex: 'num', + // title: '序号', + // render: () => { + // return 1 + // } + // }, + { + key: 'name', + dataIndex: 'name', + title: '姓名', + search: false, + render: (dom, record) => { + return
    {record.name}
    + }, + }, + { + title: '性别', + dataIndex: 'sexuality', + key: 'sexuality', + search: false, + render: (dom, record) => { + return
    {record.sexuality}
    + + }, + }, + { + key: 'laborUnion', + dataIndex: 'laborUnion', + title: '离任前党内职务', + search: false, + render: (dom, record) => { + return
    {record.partyPosts}
    + }, + }, { + key: 'laborUnion', + dataIndex: 'laborUnion', + title: '任职方式', + search: false, + render: (dom, record) => { + return
    {record.howPositions}
    + }, + }, { + key: 'laborUnion', + dataIndex: 'laborUnion', + title: '离任时间', + search: false, + render: (dom, record) => { + return
    { moment(record.leaveTime).format("YYYY-MM-DD")}
    + }, + }, { + key: 'laborUnion', + dataIndex: 'laborUnion', + title: '离任原因', + search: false, + render: (dom, record) => { + return
    {record.leavingReason}
    + }, + }, + { + key: 'ation', + title: '操作', + search: false, + width:150, + render: (text, record) => { + return + } + } + ] + return

    离任领导列表

    + { + + setName(null) + }} + form={{ + submitter: false + }} + > +
    +} +Default.propTypes = { + second: PropTypes.third +} + +const mapStateToProps = (state) => ({}) + + +export default connect(mapStateToProps)(Default) \ No newline at end of file diff --git a/web - 副本/client/src/sections/organization/containers/partyMember.js b/web - 副本/client/src/sections/organization/containers/partyMember.js new file mode 100644 index 0000000..a3280cb --- /dev/null +++ b/web - 副本/client/src/sections/organization/containers/partyMember.js @@ -0,0 +1,225 @@ +import PropTypes from 'prop-types' +import React, { useEffect, useState,useRef } from "react"; +import { connect } from 'react-redux' +import { Table, message,Button } from 'antd' +import ProTable from '@ant-design/pro-table'; + +import { getPartyMember } from '../../homePage/actions/profile' +import { getCommittee,delCommittee,putCommittee } from '../actions/party' +import EditParty from '../components/edit-party'; +import MemberVisibleModel from '../components/memberVisibleModel'; +import OutgoingVisibleModel from '../components/OutgoingVisibleModel'; +import moment from "moment"; +import { Scroller } from "$components"; + +var request = false +export const PartyMember = (props) => { + + const { dispatch } = props; + + const [counts, setCounts] = useState(); //数据 + + const [showEdit, setShowEdit] = useState(false); + const [editData, setEditData] = useState(); + const [partyLabor, setPartyLabor] = useState(); + const [newlyVisibles, setNewlyVisibles] = useState(false);// 新增 + const [outgoingVisible, setOutgoingVisible] = useState(false);// 离任新增 + const [recortd,setRecortd]=useState() + const [outgoingRecortd,setOutgoingRecortd]=useState() + const [category, setCategory] = useState() //类别 + const [typecard, setTypecard] = useState() //xinzeng 编辑 + const [outcategory, setOutCategory] = useState() //类别 + const [outTypecard, setOutTypecard] = useState() //liren 编辑 + const [flageMold, setFlageMold] = useState(true) //上下table联动 + const [nameSou,setNameSou]=useState() //姓名搜索 + const tableActionRef = useRef(); + useEffect(() => { + let query = { + limit: 5, + + }; + dispatch(getCommittee(query)).then(res => { + if (res.success) { + setPartyLabor(res.payload.data); + const dataCoutn = res.payload.data?.filter((item) => { + return item.mold===true + }) + setCounts(dataCoutn); + } + }) + }, [flageMold]) +//删除人员信息 + const deldata = (record,id) => { + let query={...record,mold:true,leaveTime:'',leavingReason:''} + dispatch(putCommittee(query,id)).then((res) => { + console.log(res) + setFlageMold(!flageMold) + if (res.success) { + message.success('删除成功'); + } else { + message.error('删除失败'); + } + }) + } +//打开增补弹窗 + const openModal = (type, record) => { + setNewlyVisibles(true); + } + const columns = [ + // { + // key: 'num', + // dataIndex: 'num', + // title: '序号', + // search: false, + // render: () => { + // return 1 + // } + // }, + { + title: '姓名', + dataIndex: 'name', + key: 'name', + render: (dom, record) => { + return
    {record.name}
    + }, + fieldProps: { + onChange: (value, cs) => { + setNameSou(value.currentTarget.value) + }, + placeholder: '请输入姓名进行搜索', + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, + { + title: '性别', + dataIndex: 'sexuality', + key: 'sexuality', + search: false, + render: (dom, record) => { + return
    {record.sexuality}
    + }, +}, +{ + title: '党内职务', + dataIndex: 'mode', + key: 'mode', + search: false, + render: (dom, record) => { + return
    {record.partyPosts}
    + }, +}, +{ + title: '任职方式', + dataIndex: 'mode', + key: 'mode', + search: false, + render: (dom, record) => { + return
    {record.howPositions}
    + }, +},{ + title: '任职时间', + dataIndex: 'mode', + key: 'mode', + search: false, + render: (dom, record) => { + return
    {moment(record.employmentTime).format("YYYY-MM-DD")}
    + }, +},{ + title: '联系电话', + dataIndex: 'mode', + key: 'mode', + search: false, + render: (dom, record) => { + return
    {record.phone}
    + }, +}, + { + key: 'ation', + title: '操作', + search: false, + width:150, + render: (text, record) => { + return + } + } + , { + key: "direction", + hideInTable: true, + dataIndex: "direction", + order: 6, + renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => { + return ( +
    +
    + ); + }, + }, + ] + const memberList=[{name:'党员数量',number:12},{name:'预备党员',number:1},{name:'女党员',number:2},{name:'少数民族党员',number:1},{name:'大专以上党员',number:12}] + return ( +
    +
    {memberList.map((item) => { + return

    {item.name}

    { item.number}

    + })}
    + { + setNameSou('') + }} + request={async (params) => { + let query = { + page: params.current, + limit: 5, + name:nameSou + }; + const res = await dispatch(getCommittee(query)); + const dataCoutn = res.payload.data?.filter((item) => { + return item.mold===true + }) + setCounts(dataCoutn); + return { + ...res, + total: res.payload.data ? res.payload.data : '', + }; + }} + > + + +
    + ) +} +// PartyMember.propTypes = { +// second: PropTypes.third +// } +const mapStateToProps = (state) => ({}) +export default connect(mapStateToProps)(PartyMember) \ No newline at end of file diff --git a/web - 副本/client/src/sections/organization/index.js b/web - 副本/client/src/sections/organization/index.js new file mode 100644 index 0000000..a4b42f6 --- /dev/null +++ b/web - 副本/client/src/sections/organization/index.js @@ -0,0 +1,13 @@ +import routes from './routes'; +import reducers from './reducers'; +import actions from './actions'; +import {getNavItem} from './nav-item'; + +export default { + key: 'organization', + name: '党组织架构管理', + reducers, + routes, + actions, + getNavItem: getNavItem +}; diff --git a/web - 副本/client/src/sections/organization/nav-item.js b/web - 副本/client/src/sections/organization/nav-item.js new file mode 100644 index 0000000..6f442a8 --- /dev/null +++ b/web - 副本/client/src/sections/organization/nav-item.js @@ -0,0 +1,22 @@ +'use strict'; + +import React from "react"; +import { Link } from "react-router-dom"; +import { Menu } from "antd"; +import { BarChartOutlined } from "@ant-design/icons"; +const SubMenu = Menu.SubMenu; + +export function getNavItem() { + return ( + } title={'党组织架构管理'}> + + 支委会人员 + + {/* + 党员基本信息 + */} + + ); +} + +export default getNavItem; diff --git a/web - 副本/client/src/sections/organization/reducers/index.js b/web - 副本/client/src/sections/organization/reducers/index.js new file mode 100644 index 0000000..10ebcbf --- /dev/null +++ b/web - 副本/client/src/sections/organization/reducers/index.js @@ -0,0 +1,19 @@ +'use strict'; + +const initModifyData = { + data: null +} + +function modifyData(state = initModifyData, actions) { + const { type, payload } = actions + switch (type) { + case 'MODIFY_ARTICAL_SUCCESS': + return Object.assign({}, state, { data: payload.data }); + default: + return state; + } +} + +export default { + modifyData, +} \ No newline at end of file diff --git a/web - 副本/client/src/sections/organization/routes.js b/web - 副本/client/src/sections/organization/routes.js new file mode 100644 index 0000000..27dd4bc --- /dev/null +++ b/web - 副本/client/src/sections/organization/routes.js @@ -0,0 +1,27 @@ +import { organization } from "./containers"; +import { partyMember } from "./containers"; +export default [ + { + type: "inner", + route: { + path: '/organization', + key: 'organization', + breadcrumb: '党组织架构管理', + menuSelectKeys: ['organization'], + menuOpenKeys: ['organization'], + childRoutes: [{ + path: '/user', + key: 'userManage', + menuSelectKeys: ['userManage'], + component: organization, + breadcrumb: '支委会人员', + },{ + path: '/partyMember', + key: 'partyMember', + menuSelectKeys: ['partyMember'], + component: partyMember, + breadcrumb: '党员信息', + }] + }, + }, +]; diff --git a/web - 副本/client/src/sections/party/actions/index.js b/web - 副本/client/src/sections/party/actions/index.js new file mode 100644 index 0000000..1e6b011 --- /dev/null +++ b/web - 副本/client/src/sections/party/actions/index.js @@ -0,0 +1,6 @@ +'use strict'; +import { editLaborParty } from './party' + +export default { + editLaborParty +} \ No newline at end of file diff --git a/web - 副本/client/src/sections/party/actions/party.js b/web - 副本/client/src/sections/party/actions/party.js new file mode 100644 index 0000000..d7d87fc --- /dev/null +++ b/web - 副本/client/src/sections/party/actions/party.js @@ -0,0 +1,18 @@ +'use strict'; +import { ApiTable } from '$utils' +import { Request } from '@peace/utils' +import { basicAction } from '@peace/utils' + + +export function editLaborParty(obj) { + return dispatch => basicAction({ + type: 'put', + dispatch: dispatch, + data: obj, + actionType: 'EDIT_PARTY', + url: `${ApiTable.getpartyMember}`, + msg: { error: '编辑党员工会人数失败' }, + reducer: { name: 'editLaborParty' } + }); +} + diff --git a/web - 副本/client/src/sections/party/components/edit-party.js b/web - 副本/client/src/sections/party/components/edit-party.js new file mode 100644 index 0000000..9439fed --- /dev/null +++ b/web - 副本/client/src/sections/party/components/edit-party.js @@ -0,0 +1,82 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { Modal, Form, InputNumber, Button } from 'antd' +import { useEffect } from 'react' + +const EditParty = props => { + const { visible, handleOk, handleCancel, editData } = props + const [form] = Form.useForm(); + + useEffect(() => { + if (editData && visible) { + form.setFieldsValue({ + party: editData.partyNumber, + labor: editData.laborUnion + }) + } + }, [editData, visible]) + + return ( + +
    + + + + + + + +
    + + +
    +
    + + +
    + ) +} + +EditParty.propTypes = { + visible: PropTypes.bool, + handleCancel: PropTypes.func, + handleOk: PropTypes.func, + editData: PropTypes.object +} + +export default EditParty \ No newline at end of file diff --git a/web - 副本/client/src/sections/party/containers/index.js b/web - 副本/client/src/sections/party/containers/index.js new file mode 100644 index 0000000..fbbd356 --- /dev/null +++ b/web - 副本/client/src/sections/party/containers/index.js @@ -0,0 +1,92 @@ +import PropTypes from 'prop-types' +import React, { useEffect, useState } from "react"; +import { connect } from 'react-redux' +import { Table, message } from 'antd' +import { getPartyMember } from '../../homePage/actions/profile' +import { editLaborParty } from '../actions/party' +import EditParty from '../components/edit-party'; + +var request = false +export const Default = (props) => { + + const { dispatch } = props; + + const [partyLabor, setPartyLabor] = useState(); + const [showEdit, setShowEdit] = useState(false); + const [editData, setEditData] = useState(); + + useEffect(() => { + dispatch(getPartyMember()).then(res => { + if (res.success) { + setPartyLabor(res.payload.data); + } + }) + }, [request]) + + const onEditParty = (record) => { + setShowEdit(true); + setEditData(record) + } + + const tableColumns = [ + { + key: 'num', + dataIndex: 'num', + title: '序号', + render: () => { + return 1 + } + }, + { + key: 'partyNumber', + dataIndex: 'partyNumber', + title: '党员人数', + }, + { + key: 'laborUnion', + dataIndex: 'laborUnion', + title: '工会人数', + }, + { + key: 'ation', + title: '操作', + render: (text, record) => { + return onEditParty(record)}>编辑 + } + } + ] + + const handleOk = (values) => { + if (values) { + const { labor, party } = values + const result = { partyNumber: party, laborUnion: labor } + dispatch(editLaborParty(result)).then(res => { + if (res.success) { + message.success("编辑成功"); + request = !request; + handleCancel(); + } + }) + } + } + const handleCancel = () => { + setShowEdit(false); + } + + return ( +
    +

    党员、工会人数维护

    +
    + + + ) +} + +Default.propTypes = { + second: PropTypes.third +} + +const mapStateToProps = (state) => ({}) + + +export default connect(mapStateToProps)(Default) \ No newline at end of file diff --git a/web - 副本/client/src/sections/party/index.js b/web - 副本/client/src/sections/party/index.js new file mode 100644 index 0000000..7f880ad --- /dev/null +++ b/web - 副本/client/src/sections/party/index.js @@ -0,0 +1,13 @@ +import routes from './routes'; +import reducers from './reducers'; +import actions from './actions'; +import nativeItem from './nav-item'; + +export default { + key: 'party', + name: '工会管理', + reducers, + routes, + actions, + getNavItem: nativeItem +}; diff --git a/web - 副本/client/src/sections/party/nav-item.js b/web - 副本/client/src/sections/party/nav-item.js new file mode 100644 index 0000000..cda3481 --- /dev/null +++ b/web - 副本/client/src/sections/party/nav-item.js @@ -0,0 +1,14 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import { Menu } from 'antd'; +import { BarChartOutlined } from '@ant-design/icons'; + +export function getNavItem() { + return ( + }> + 工会管理 + + ); +} + +export default getNavItem; diff --git a/web - 副本/client/src/sections/party/reducers/index.js b/web - 副本/client/src/sections/party/reducers/index.js new file mode 100644 index 0000000..10ebcbf --- /dev/null +++ b/web - 副本/client/src/sections/party/reducers/index.js @@ -0,0 +1,19 @@ +'use strict'; + +const initModifyData = { + data: null +} + +function modifyData(state = initModifyData, actions) { + const { type, payload } = actions + switch (type) { + case 'MODIFY_ARTICAL_SUCCESS': + return Object.assign({}, state, { data: payload.data }); + default: + return state; + } +} + +export default { + modifyData, +} \ No newline at end of file diff --git a/web - 副本/client/src/sections/party/routes.js b/web - 副本/client/src/sections/party/routes.js new file mode 100644 index 0000000..afcbab4 --- /dev/null +++ b/web - 副本/client/src/sections/party/routes.js @@ -0,0 +1,11 @@ +import Container from './containers'; +export default [ + { + type: 'inner', + route: { + path: '/party', + key: 'party', + component: Container, + } + } +]; diff --git a/web - 副本/client/src/styles/antd.less b/web - 副本/client/src/styles/antd.less new file mode 100644 index 0000000..fcc3f6c --- /dev/null +++ b/web - 副本/client/src/styles/antd.less @@ -0,0 +1,365 @@ +@import "./theme.less"; +@icon-url: "/assets/fonticon/iconfont"; + +.tree-transfer .ant-transfer-list-body { + overflow: auto !important; +} +/* common start*/ +mark { + background-color: @mark-background-color; +} +/* 主题色文字色 */ +.text-primary { + color: @primary-color; +} +/* 内容默认 margin 值 */ +.content-wrapper { + margin: 24px 0; + padding: 0 24px; + background: @layout-body-background; +} +/* common end*/ +/*layout Start*/ +.ant-layout-sider-trigger { + border-top: 1px solid @shadow-color; + height: 40px; + line-height: 40px; +} +.ant-layout-sider { + box-shadow: @layout-slder-shadow; + z-index: 100; +} +.ant-pro-form-query-filter { + background-color: @component-background; +} + +.ant-pro-table-search { + background-color: @component-background; +} +.wrapper-background { + background-color: @component-background; +} +.ant-tabs-nav { + background-color: @component-background; +} + +.header { + position: relative; + height: 48px; + min-width: 520px; + box-shadow: @layout-header-shadow; +} + +.header-fold { + float: left; + padding-left: 32px; + font-size: 16px; +} + +.header-title { + line-height: 48px; + display: inline-block; + font-size: 18px; + text-shadow: 0 4px 3px rgba(54, 77, 108, 0.2); +} + +.header-nav { + float: right; +} + +.header-nav-notification { + font-size: 16px; +} + +.header-nav-user-img-wrapper { + display: inline; + margin: 14px 8px; +} + +.header-nav-user-img { + width: 36px; + height: 36px; +} +.layout-content-breadcrumb { + background: @layout-breadcrum-background; +} +.layout-content-box { + background: @layout-body-background; +} + +/*layout End*/ + +/* 子表格样式 */ +.child-table{ + margin-top: 10px; +} + +/* 表格拖拽排序 start*/ +.row-dragging { + background: @layout-body-background; + border: 1px solid @border-color-base; +} + +.row-dragging td { + padding: 16px; +} + +.row-dragging .drag-visible { + visibility: visible; +} +/* 表格拖拽排序 end */ + +/* 项目总览*/ +/*卡片*/ +.overviewHeaderBorderTop { + background: @layout-body-background; + border-top: 1px #f0f0f0 solid; + .ant-tabs-top .ant-tabs-nav { + margin: 0px; + .ant-tabs-nav-list { + margin-left: 30px; + } + } + .ant-tabs-content { + //height: 750px; + //overflow-y: scroll; + .content { + //margin: 24px; + .contentBody { + padding-top: 16px; + padding-bottom: 16px; + margin-left: 24px; + margin-right: 24px; + .structName { + font-size: 24px; + } + .structImg { + margin-top: 16px; + img { + object-fit: fill; + height: 250px; + width: 100%; + } + } + .structImgSingle { + margin-top: 16px; + img { + object-fit: fill; + height: 250px; + width: 40%; + } + } + } + } + } +} + +//设备监控 +.device-monitor { + .title-alarm{ + color: @error-color; + } + .title-normal { + color: @success-color; + } +} + +.sensorDataTitle { + height: 24px; + margin-top: 41px; + border-left: 4px @btn-primary-bg solid; + font-size: 16px; + font-weight: 700; + .bodyNum { + color: @btn-primary-bg; + } + .ant-btn { + border: 1px @btn-primary-bg solid; + border-radius: 2px; + color: @btn-primary-bg; + } +} +.sensorData { + .sensorDataCol { + margin-right: 20px; + margin-top: 20px; + .sensorDataColAddonAfter { + width: 40px; + } + } +} +.realTimeMonitoringStatusTitle { + height: 24px; + margin-top: 41px; + border-left: 4px @btn-primary-bg solid; + font-size: 16px; + font-weight: 700; + .bodyNum { + color: @btn-primary-bg; + } + .ant-btn { + border: 1px @btn-primary-bg solid; + border-radius: 2px; + color: @btn-primary-bg; + } +} +.realTimeMonitoringStatus { + margin-top: 16px; + margin-left: 0px; + text-align: center; + .ant-divider-vertical { + margin-top: 20px; + height: 50px; + } + .ant-badge-status-dot { + height: 10px; + width: 10px; + } + .ant-badge-status-text { + font-size: 18px; + } + .realTimeMonitoringStatusText { + font-size: 26px; + margin-top: -38px; + font-weight: 700; + padding-bottom: 30px; + } +} +/*卡片 结束*/ +/*GIS*/ +.gisBody { + box-shadow: -2px 0px 5px 1px #E3E3E4, 0px -2px 5px 1px #E3E3E4, + 2px 0px 5px 1px #E3E3E4, 0px 2px 5px 1px #E3E3E4; +} + +/*GIS 结束*/ +/* 项目总览 结束*/ + +/*单个项目总览*/ +.singleProjectOverViewHeaderBorderTop { + background: @layout-content-background; + border-top: 1px @layout-body-background solid; + .ant-tabs-top .ant-tabs-nav { + margin: 0px; + .ant-tabs-nav-list { + margin-left: 30px; + } + } +} +/*项目简介*/ +.text--- { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.singleProjectOverViewHeaderBorderTop .ant-tabs-content { + background-color: @layout-body-background; + height: 750px; + .content { + margin: 24px; + background-color: @layout-content-background; + height: 740px; + .contentBody { + padding-top: 16px; + padding-bottom: 16px; + margin-left: 24px; + margin-right: 24px; + .structName { + font-size: 24px; + .ant-btn { + border: 1px @btn-primary-bg solid; + border-radius: 2px; + color: @btn-primary-bg; + } + } + .structImg { + margin-top: 16px; + img { + object-fit: fill; + height: 350px; + width: 100%; + border-radius: 5px; + } + } + .structIntruduction { + margin: 16px 24px; + text-indent: 2em; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 15; + overflow: hidden; + } + .basicInfo { + height: 24px; + margin-top: 41px; + border-left: 4px @btn-primary-bg solid; + font-size: 16px; + font-weight: 700; + } + .infoDesc { + margin-top: 16px; + border-left: 1px solid; + border-top: 1px solid; + border-right: 1px solid; + border-color: @border-color-base; + .ant-row{ + margin-bottom: 0px; + } + .cell { + .cellName { + padding: 6px 0; + background-color: @layout-body-background; + text-align: center; + border-right: 1px solid; + border-color: @border-color-base; + } + .cellValue { + padding: 6px 5%; + width: 90%; + } + } + .cell:nth-child(3n-2) { + border-bottom: 1px solid; + border-right: 1px solid; + border-color: @border-color-base; + } + .cell:nth-child(3n-1) { + border-bottom: 1px solid; + border-right: 1px solid; + border-color: @border-color-base; + } + .cell:nth-child(3n) { + border-bottom: 1px solid; + border-color: @border-color-base; + } + } + } + } +} + +.form-require::before { + display: inline-block; + margin-right: 4px; + color: @form-require-color; + font-size: 14px; + font-family: SimSun, sans-serif; + line-height: 1; + content: "*"; +} +/*项目简介 结束*/ + +/*单个项目总览 结束*/ + +/*数据监控 开始*/ +.monitor-header-title { + font-size: 16px; + font-family: PingFangSC-Regular, PingFang SC; + font-weight: 400; + color: rgba(0, 0, 0, 0.85); + line-height: 24px; + height: 24px; + padding-left: 16px; + border-left: 4px solid @primary-color; + } + + /*数据监控 结束*/ \ No newline at end of file diff --git a/web - 副本/client/src/styles/theme.less b/web - 副本/client/src/styles/theme.less new file mode 100644 index 0000000..40293b3 --- /dev/null +++ b/web - 副本/client/src/styles/theme.less @@ -0,0 +1,27 @@ +@import "~antd/lib/style/themes/default.less"; + +@body-background: #01050f; +@primary-color: #0057c9; +@link-color: @primary-color; +@secondary-color: fade(@primary-color, 20%); +@btn-primary-bg: @primary-color; +@select-item-selected-option-color: @primary-color; +@processing-color: @primary-color; +@select-item-selected-bg: @background-color-base; +@skeleton-color: @primary-color; +@btn-primary-bg: @primary-color; + +@layout-header-height: 48px; +@layout-header-shadow: 0px 3px 6px -4px @shadow-color; +@layout-slder-shadow: 3px 0px 6px -4px @shadow-color; +@layout-breadcrum-background: @white; +@layout-content-background: @white; + +// @component-background: transparent; +@form-require-color: #ff4d4f; +@mark-background-color: #f5fdca; +@red: red; +@green: green; +:root { + --PC: @primary-color; +} diff --git a/web - 副本/client/src/themes/dark.json b/web - 副本/client/src/themes/dark.json new file mode 100644 index 0000000..fe97269 --- /dev/null +++ b/web - 副本/client/src/themes/dark.json @@ -0,0 +1 @@ +{"@theme":"dark","@blue-1":"mix(color(~`colorPalette('@{blue-base}', 8) `), @component-background, 15%)","@blue-2":"mix(color(~`colorPalette('@{blue-base}', 7) `), @component-background, 25%)","@blue-3":"mix(@blue-base, @component-background, 30%)","@blue-4":"mix(@blue-base, @component-background, 45%)","@blue-5":"mix(@blue-base, @component-background, 65%)","@blue-6":"mix(@blue-base, @component-background, 85%)","@blue-7":"mix(color(~`colorPalette('@{blue-base}', 5) `), @component-background, 90%)","@blue-8":"mix(color(~`colorPalette('@{blue-base}', 4) `), @component-background, 95%)","@blue-9":"mix(color(~`colorPalette('@{blue-base}', 3) `), @component-background, 97%)","@blue-10":"mix(color(~`colorPalette('@{blue-base}', 2) `), @component-background, 98%)","@purple-1":"mix(color(~`colorPalette('@{purple-base}', 8) `), @component-background, 15%)","@purple-2":"mix(color(~`colorPalette('@{purple-base}', 7) `), @component-background, 25%)","@purple-3":"mix(@purple-base, @component-background, 30%)","@purple-4":"mix(@purple-base, @component-background, 45%)","@purple-5":"mix(@purple-base, @component-background, 65%)","@purple-6":"mix(@purple-base, @component-background, 85%)","@purple-7":"mix(color(~`colorPalette('@{purple-base}', 5) `), @component-background, 90%)","@purple-8":"mix(color(~`colorPalette('@{purple-base}', 4) `), @component-background, 95%)","@purple-9":"mix(color(~`colorPalette('@{purple-base}', 3) `), @component-background, 97%)","@purple-10":"mix(color(~`colorPalette('@{purple-base}', 2) `), @component-background, 98%)","@cyan-1":"mix(color(~`colorPalette('@{cyan-base}', 8) `), @component-background, 15%)","@cyan-2":"mix(color(~`colorPalette('@{cyan-base}', 7) `), @component-background, 25%)","@cyan-3":"mix(@cyan-base, @component-background, 30%)","@cyan-4":"mix(@cyan-base, @component-background, 45%)","@cyan-5":"mix(@cyan-base, @component-background, 65%)","@cyan-6":"mix(@cyan-base, @component-background, 85%)","@cyan-7":"mix(color(~`colorPalette('@{cyan-base}', 5) `), @component-background, 90%)","@cyan-8":"mix(color(~`colorPalette('@{cyan-base}', 4) `), @component-background, 95%)","@cyan-9":"mix(color(~`colorPalette('@{cyan-base}', 3) `), @component-background, 97%)","@cyan-10":"mix(color(~`colorPalette('@{cyan-base}', 2) `), @component-background, 98%)","@green-1":"mix(color(~`colorPalette('@{green-base}', 8) `), @component-background, 15%)","@green-2":"mix(color(~`colorPalette('@{green-base}', 7) `), @component-background, 25%)","@green-3":"mix(@green-base, @component-background, 30%)","@green-4":"mix(@green-base, @component-background, 45%)","@green-5":"mix(@green-base, @component-background, 65%)","@green-6":"mix(@green-base, @component-background, 85%)","@green-7":"mix(color(~`colorPalette('@{green-base}', 5) `), @component-background, 90%)","@green-8":"mix(color(~`colorPalette('@{green-base}', 4) `), @component-background, 95%)","@green-9":"mix(color(~`colorPalette('@{green-base}', 3) `), @component-background, 97%)","@green-10":"mix(color(~`colorPalette('@{green-base}', 2) `), @component-background, 98%)","@magenta-1":"mix(color(~`colorPalette('@{magenta-base}', 8) `), @component-background, 15%)","@magenta-2":"mix(color(~`colorPalette('@{magenta-base}', 7) `), @component-background, 25%)","@magenta-3":"mix(@magenta-base, @component-background, 30%)","@magenta-4":"mix(@magenta-base, @component-background, 45%)","@magenta-5":"mix(@magenta-base, @component-background, 65%)","@magenta-6":"mix(@magenta-base, @component-background, 85%)","@magenta-7":"mix(color(~`colorPalette('@{magenta-base}', 5) `), @component-background, 90%)","@magenta-8":"mix(color(~`colorPalette('@{magenta-base}', 4) `), @component-background, 95%)","@magenta-9":"mix(color(~`colorPalette('@{magenta-base}', 3) `), @component-background, 97%)","@magenta-10":"mix(color(~`colorPalette('@{magenta-base}', 2) `), @component-background, 98%)","@pink-1":"mix(color(~`colorPalette('@{pink-base}', 8) `), @component-background, 15%)","@pink-2":"mix(color(~`colorPalette('@{pink-base}', 7) `), @component-background, 25%)","@pink-3":"mix(@pink-base, @component-background, 30%)","@pink-4":"mix(@pink-base, @component-background, 45%)","@pink-5":"mix(@pink-base, @component-background, 65%)","@pink-6":"mix(@pink-base, @component-background, 85%)","@pink-7":"mix(color(~`colorPalette('@{pink-base}', 5) `), @component-background, 90%)","@pink-8":"mix(color(~`colorPalette('@{pink-base}', 4) `), @component-background, 95%)","@pink-9":"mix(color(~`colorPalette('@{pink-base}', 3) `), @component-background, 97%)","@pink-10":"mix(color(~`colorPalette('@{pink-base}', 2) `), @component-background, 98%)","@red-1":"mix(color(~`colorPalette('@{red-base}', 8) `), @component-background, 15%)","@red-2":"mix(color(~`colorPalette('@{red-base}', 7) `), @component-background, 25%)","@red-3":"mix(@red-base, @component-background, 30%)","@red-4":"mix(@red-base, @component-background, 45%)","@red-5":"mix(@red-base, @component-background, 65%)","@red-6":"mix(@red-base, @component-background, 85%)","@red-7":"mix(color(~`colorPalette('@{red-base}', 5) `), @component-background, 90%)","@red-8":"mix(color(~`colorPalette('@{red-base}', 4) `), @component-background, 95%)","@red-9":"mix(color(~`colorPalette('@{red-base}', 3) `), @component-background, 97%)","@red-10":"mix(color(~`colorPalette('@{red-base}', 2) `), @component-background, 98%)","@orange-1":"mix(color(~`colorPalette('@{orange-base}', 8) `), @component-background, 15%)","@orange-2":"mix(color(~`colorPalette('@{orange-base}', 7) `), @component-background, 25%)","@orange-3":"mix(@orange-base, @component-background, 30%)","@orange-4":"mix(@orange-base, @component-background, 45%)","@orange-5":"mix(@orange-base, @component-background, 65%)","@orange-6":"mix(@orange-base, @component-background, 85%)","@orange-7":"mix(color(~`colorPalette('@{orange-base}', 5) `), @component-background, 90%)","@orange-8":"mix(color(~`colorPalette('@{orange-base}', 4) `), @component-background, 95%)","@orange-9":"mix(color(~`colorPalette('@{orange-base}', 3) `), @component-background, 97%)","@orange-10":"mix(color(~`colorPalette('@{orange-base}', 2) `), @component-background, 98%)","@yellow-1":"mix(color(~`colorPalette('@{yellow-base}', 8) `), @component-background, 15%)","@yellow-2":"mix(color(~`colorPalette('@{yellow-base}', 7) `), @component-background, 25%)","@yellow-3":"mix(@yellow-base, @component-background, 30%)","@yellow-4":"mix(@yellow-base, @component-background, 45%)","@yellow-5":"mix(@yellow-base, @component-background, 65%)","@yellow-6":"mix(@yellow-base, @component-background, 85%)","@yellow-7":"mix(color(~`colorPalette('@{yellow-base}', 5) `), @component-background, 90%)","@yellow-8":"mix(color(~`colorPalette('@{yellow-base}', 4) `), @component-background, 95%)","@yellow-9":"mix(color(~`colorPalette('@{yellow-base}', 3) `), @component-background, 97%)","@yellow-10":"mix(color(~`colorPalette('@{yellow-base}', 2) `), @component-background, 98%)","@volcano-1":"mix(color(~`colorPalette('@{volcano-base}', 8) `), @component-background, 15%)","@volcano-2":"mix(color(~`colorPalette('@{volcano-base}', 7) `), @component-background, 25%)","@volcano-3":"mix(@volcano-base, @component-background, 30%)","@volcano-4":"mix(@volcano-base, @component-background, 45%)","@volcano-5":"mix(@volcano-base, @component-background, 65%)","@volcano-6":"mix(@volcano-base, @component-background, 85%)","@volcano-7":"mix(color(~`colorPalette('@{volcano-base}', 5) `), @component-background, 90%)","@volcano-8":"mix(color(~`colorPalette('@{volcano-base}', 4) `), @component-background, 95%)","@volcano-9":"mix(color(~`colorPalette('@{volcano-base}', 3) `), @component-background, 97%)","@volcano-10":"mix(color(~`colorPalette('@{volcano-base}', 2) `), @component-background, 98%)","@geekblue-1":"mix(color(~`colorPalette('@{geekblue-base}', 8) `), @component-background, 15%)","@geekblue-2":"mix(color(~`colorPalette('@{geekblue-base}', 7) `), @component-background, 25%)","@geekblue-3":"mix(@geekblue-base, @component-background, 30%)","@geekblue-4":"mix(@geekblue-base, @component-background, 45%)","@geekblue-5":"mix(@geekblue-base, @component-background, 65%)","@geekblue-6":"mix(@geekblue-base, @component-background, 85%)","@geekblue-7":"mix(color(~`colorPalette('@{geekblue-base}', 5) `), @component-background, 90%)","@geekblue-8":"mix(color(~`colorPalette('@{geekblue-base}', 4) `), @component-background, 95%)","@geekblue-9":"mix(color(~`colorPalette('@{geekblue-base}', 3) `), @component-background, 97%)","@geekblue-10":"mix(color(~`colorPalette('@{geekblue-base}', 2) `), @component-background, 98%)","@lime-1":"mix(color(~`colorPalette('@{lime-base}', 8) `), @component-background, 15%)","@lime-2":"mix(color(~`colorPalette('@{lime-base}', 7) `), @component-background, 25%)","@lime-3":"mix(@lime-base, @component-background, 30%)","@lime-4":"mix(@lime-base, @component-background, 45%)","@lime-5":"mix(@lime-base, @component-background, 65%)","@lime-6":"mix(@lime-base, @component-background, 85%)","@lime-7":"mix(color(~`colorPalette('@{lime-base}', 5) `), @component-background, 90%)","@lime-8":"mix(color(~`colorPalette('@{lime-base}', 4) `), @component-background, 95%)","@lime-9":"mix(color(~`colorPalette('@{lime-base}', 3) `), @component-background, 97%)","@lime-10":"mix(color(~`colorPalette('@{lime-base}', 2) `), @component-background, 98%)","@gold-1":"mix(color(~`colorPalette('@{gold-base}', 8) `), @component-background, 15%)","@gold-2":"mix(color(~`colorPalette('@{gold-base}', 7) `), @component-background, 25%)","@gold-3":"mix(@gold-base, @component-background, 30%)","@gold-4":"mix(@gold-base, @component-background, 45%)","@gold-5":"mix(@gold-base, @component-background, 65%)","@gold-6":"mix(@gold-base, @component-background, 85%)","@gold-7":"mix(color(~`colorPalette('@{gold-base}', 5) `), @component-background, 90%)","@gold-8":"mix(color(~`colorPalette('@{gold-base}', 4) `), @component-background, 95%)","@gold-9":"mix(color(~`colorPalette('@{gold-base}', 3) `), @component-background, 97%)","@gold-10":"mix(color(~`colorPalette('@{gold-base}', 2) `), @component-background, 98%)","@primary-1":"mix(color(~`colorPalette('@{primary-color}', 8) `), @component-background, 15%)","@primary-2":"mix(color(~`colorPalette('@{primary-color}', 7) `), @component-background, 25%)","@primary-3":"mix(@primary-color, @component-background, 30%)","@primary-4":"mix(@primary-color, @component-background, 45%)","@primary-5":"mix(@primary-color, @component-background, 65%)","@primary-6":"@primary-color","@primary-7":"mix(color(~`colorPalette('@{primary-color}', 5) `), @component-background, 90%)","@primary-8":"mix(color(~`colorPalette('@{primary-color}', 4) `), @component-background, 95%)","@primary-9":"mix(color(~`colorPalette('@{primary-color}', 3) `), @component-background, 97%)","@primary-10":"mix(color(~`colorPalette('@{primary-color}', 2) `), @component-background, 98%)","@popover-background":"#1f1f1f","@popover-customize-border-color":"#3a3a3a","@body-background":"@black","@component-background":"#2A2D38","@text-color":"fade(@white, 85%)","@text-color-secondary":"fade(@white, 45%)","@text-color-inverse":"@white","@icon-color-hover":"fade(@white, 75%)","@heading-color":"fade(@white, 85%)","@item-active-bg":"@primary-1","@item-hover-bg":"fade(@white, 8%)","@border-color-base":"#434343","@border-color-split":"#303030","@background-color-light":"fade(@white, 4%)","@background-color-base":"fade(@white, 8%)","@disabled-color":"fade(@white, 30%)","@disabled-bg":"@background-color-base","@disabled-color-dark":"fade(@white, 30%)","@tree-bg":"transparent","@list-customize-card-bg":"transparent","@shadow-color":"rgba(0, 0, 0, 0.45)","@shadow-color-inverse":"@component-background","@box-shadow-base":"@shadow-2","@shadow-1-up":"0 -6px 16px -8px rgba(0, 0, 0, 0.32), 0 -9px 28px 0 rgba(0, 0, 0, 0.2),\n 0 -12px 48px 16px rgba(0, 0, 0, 0.12)","@shadow-1-down":"0 6px 16px -8px rgba(0, 0, 0, 0.32), 0 9px 28px 0 rgba(0, 0, 0, 0.2),\n 0 12px 48px 16px rgba(0, 0, 0, 0.12)","@shadow-1-right":"6px 0 16px -8px rgba(0, 0, 0, 0.32), 9px 0 28px 0 rgba(0, 0, 0, 0.2),\n 12px 0 48px 16px rgba(0, 0, 0, 0.12)","@shadow-2":"0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32),\n 0 9px 28px 8px rgba(0, 0, 0, 0.2)","@btn-shadow":"0 2px 0 rgba(0, 0, 0, 0.015)","@btn-primary-shadow":"0 2px 0 rgba(0, 0, 0, 0.045)","@btn-text-shadow":"0 -1px 0 rgba(0, 0, 0, 0.12)","@btn-default-bg":"transparent","@btn-default-ghost-color":"@text-color","@btn-default-ghost-border":"fade(@white, 25%)","@btn-text-hover-bg":"rgba(255, 255, 255, 0.03)","@checkbox-check-bg":"transparent","@descriptions-bg":"@background-color-light","@divider-color":"rgba(255, 255, 255, 12%)","@modal-header-bg":"@popover-background","@modal-header-border-color-split":"@border-color-split","@modal-content-bg":"@popover-background","@modal-footer-border-color-split":"@border-color-split","@radio-solid-checked-color":"@white","@radio-dot-disabled-color":"fade(@white, 20%)","@radio-disabled-button-checked-bg":"fade(@white, 20%)","@radio-disabled-button-checked-color":"@disabled-color","@layout-body-background":"#1F2127","@layout-header-background":"#1F2439","@layout-trigger-background":"#262626","@input-bg":"transparent","@input-placeholder-color":"fade(@white, 30%)","@input-icon-color":"fade(@white, 30%)","@input-number-handler-active-bg":"@item-hover-bg","@input-icon-hover-color":"fade(@white, 85%)","@select-background":"transparent","@select-dropdown-bg":"@popover-background","@select-clear-background":"@component-background","@select-selection-item-bg":"fade(@white, 8)","@select-selection-item-border-color":"@border-color-split","@select-multiple-disabled-background":"@component-background","@select-multiple-item-disabled-color":"#595959","@select-multiple-item-disabled-border-color":"@popover-background","@cascader-bg":"transparent","@cascader-menu-bg":"@popover-background","@cascader-menu-border-color-split":"@border-color-split","@tooltip-bg":"#434343","@menu-dark-inline-submenu-bg":"@component-background","@menu-dark-bg":"@popover-background","@menu-popup-bg":"@popover-background","@message-notice-content-bg":"@popover-background","@notification-bg":"@popover-background","@link-hover-color":"@primary-5","@link-active-color":"@primary-7","@table-header-bg":"#1d1d1d","@table-body-sort-bg":"fade(@white, 1%)","@table-row-hover-bg":"#262626","@table-header-cell-split-color":"fade(@white, 8%)","@table-header-sort-bg":"#262626","@table-header-filter-active-bg":"#434343","@table-header-sort-active-bg":"#303030","@table-fixed-header-sort-active-bg":"#222","@table-filter-btns-bg":"@popover-background","@table-expanded-row-bg":"@table-header-bg","@table-filter-dropdown-bg":"@popover-background","@table-expand-icon-bg":"transparent","@info-color-deprecated-bg":"@primary-1","@info-color-deprecated-border":"@primary-3","@success-color-deprecated-bg":"@green-1","@success-color-deprecated-border":"@green-3","@warning-color-deprecated-bg":"@orange-1","@warning-color-deprecated-border":"@orange-3","@error-color-deprecated-bg":"@red-1","@error-color-deprecated-border":"@red-3","@picker-basic-cell-hover-with-range-color":"darken(@primary-color, 35%)","@picker-basic-cell-disabled-bg":"#303030","@picker-border-color":"@border-color-split","@picker-bg":"transparent","@picker-date-hover-range-border-color":"darken(@primary-color, 20%)","@dropdown-menu-bg":"@popover-background","@dropdown-menu-submenu-disabled-bg":"transparent","@steps-nav-arrow-color":"fade(@white, 20%)","@steps-background":"transparent","@avatar-bg":"fade(@white, 30%)","@progress-steps-item-bg":"fade(@white, 8%)","@calendar-bg":"@popover-background","@calendar-input-bg":"@calendar-bg","@calendar-border-color":"transparent","@calendar-full-bg":"@component-background","@badge-text-color":"@white","@popover-bg":"@popover-background","@drawer-bg":"@popover-background","@card-actions-background":"@component-background","@card-skeleton-bg":"#303030","@card-shadow":"0 1px 2px -2px rgba(0, 0, 0, 0.64), 0 3px 6px 0 rgba(0, 0, 0, 0.48),\n 0 5px 12px 4px rgba(0, 0, 0, 0.36)","@transfer-item-hover-bg":"#262626","@comment-bg":"transparent","@comment-author-time-color":"fade(@white, 30%)","@comment-action-hover-color":"fade(@white, 65%)","@rate-star-bg":"fade(@white, 12%)","@switch-bg":"@white","@pagination-item-bg":"transparent","@pagination-item-bg-active":"transparent","@pagination-item-link-bg":"transparent","@pagination-item-disabled-bg-active":"fade(@white, 25%)","@pagination-item-disabled-color-active":"@black","@pagination-item-input-bg":"@pagination-item-bg","@page-header-back-color":"@icon-color","@page-header-ghost-bg":"transparent","@slider-rail-background-color":"#262626","@slider-rail-background-color-hover":"@border-color-base","@slider-dot-border-color":"@border-color-split","@slider-dot-border-color-active":"@primary-4","@skeleton-to-color":"fade(@white, 16%)","@alert-success-border-color":"@green-3","@alert-success-bg-color":"@green-1","@alert-success-icon-color":"@success-color","@alert-info-border-color":"@primary-3","@alert-info-bg-color":"@primary-1","@alert-info-icon-color":"@info-color","@alert-warning-border-color":"@gold-3","@alert-warning-bg-color":"@gold-1","@alert-warning-icon-color":"@warning-color","@alert-error-border-color":"@red-3","@alert-error-bg-color":"@red-1","@alert-error-icon-color":"@error-color","@timeline-color":"@border-color-split","@timeline-dot-color":"@primary-color","@mentions-dropdown-bg":"@popover-background","@segmented-bg":"fade(@black, 25%)","@segmented-hover-bg":"fade(@black, 45%)","@segmented-selected-bg":"#333333","@segmented-label-color":"fade(@white, 65%)","@segmented-label-hover-color":"fade(@white, 85%)","@primary-color":"#2F53EA","@picker-basic-cell-active-with-range-color":"darken(@primary-color, 20%)","@layout-breadcrum-background":"#2A2D38","@layout-header-shadow":"0px 3px 6px -4px rgba(0, 0, 0, 0.25)","@layout-slder-shadow":"3px 0px 6px -4px rgba(0, 0, 0, 0.25)","@layout-content-background":"#2A2D38","@mark-background-color":"#f5fdca"} \ No newline at end of file diff --git a/web - 副本/client/src/themes/example.json b/web - 副本/client/src/themes/example.json new file mode 100644 index 0000000..06c761d --- /dev/null +++ b/web - 副本/client/src/themes/example.json @@ -0,0 +1,3 @@ +{ + "@component-background":"#979230" +} \ No newline at end of file diff --git a/web - 副本/client/src/themes/light.json b/web - 副本/client/src/themes/light.json new file mode 100644 index 0000000..730250a --- /dev/null +++ b/web - 副本/client/src/themes/light.json @@ -0,0 +1 @@ +{"@line-height-base":"1.66667","@mode":"compact","@font-size-base":"12px","@font-size-lg":"@font-size-base + 2px","@default-padding-lg":"24px","@default-padding-md":"16px","@default-padding-sm":"12px","@default-padding-xs":"8px","@default-padding-xss":"4px","@padding-lg":"16px","@padding-md":"8px","@padding-sm":"8px","@padding-xs":"4px","@padding-xss":"0px","@control-padding-horizontal":"@padding-sm","@control-padding-horizontal-sm":"@default-padding-xs","@margin-lg":"16px","@margin-md":"8px","@margin-sm":"8px","@margin-xs":"4px","@margin-xss":"0px","@height-base":"28px","@height-lg":"32px","@height-sm":"22px","@btn-padding-horizontal-base":"@default-padding-sm - 1px","@btn-padding-horizontal-lg":"@btn-padding-horizontal-base","@btn-padding-horizontal-sm":"@default-padding-xs - 1px","@btn-square-only-icon-size-lg":"16px","@btn-square-only-icon-size":"14px","@btn-square-only-icon-size-sm":"12px","@breadcrumb-font-size":"@font-size-base","@breadcrumb-icon-font-size":"@font-size-base","@dropdown-line-height":"18px","@menu-item-padding":"0 12px","@menu-horizontal-line-height":"38px","@menu-inline-toplevel-item-height":"32px","@menu-item-height":"32px","@menu-item-vertical-margin":"0px","@menu-item-boundary-margin":"0px","@menu-icon-margin-right":"8px","@checkbox-size":"14px","@checkbox-group-item-margin-right":"6px","@picker-panel-cell-height":"22px","@picker-panel-cell-width":"32px","@picker-text-height":"32px","@picker-time-panel-cell-height":"24px","@picker-panel-without-time-cell-height":"48px","@form-item-margin-bottom":"16px","@form-vertical-label-padding":"0 0 4px","@rate-star-size":"16px","@radio-size":"14px","@radio-wrapper-margin-right":"6px","@switch-height":"20px","@switch-sm-height":"14px","@switch-min-width":"40px","@switch-sm-min-width":"24px","@switch-inner-margin-min":"4px","@switch-inner-margin-max":"22px","@slider-handle-size":"12px","@slider-handle-margin-top":"-4px","@input-padding-vertical-base":"round(\n max(\n (round(((@input-height-base - @font-size-base * @line-height-base) / 2) * 10) / 10) -\n @border-width-base,\n 2px\n )\n)","@input-padding-horizontal-lg":"11px","@page-header-padding":"16px","@page-header-padding-vertical":"8px","@page-header-heading-title":"16px","@page-header-heading-sub-title":"12px","@page-header-tabs-tab-font-size":"14px","@pagination-mini-options-size-changer-top":"1px","@pagination-item-size-sm":"22px","@cascader-dropdown-line-height":"@dropdown-line-height","@select-dropdown-height":"@height-base","@select-single-item-height-lg":"32px","@select-multiple-item-height":"@input-height-base - max(@input-padding-vertical-base, 4) * 2","@select-multiple-item-height-lg":"24px","@select-multiple-item-spacing-half":"3px","@tree-title-height":"20px","@transfer-item-padding-vertical":"3px","@transfer-list-search-icon-top":"8px","@transfer-header-height":"36px","@comment-actions-margin-bottom":"0px","@comment-actions-margin-top":"@margin-xs","@comment-content-detail-p-margin-bottom":"0px","@steps-icon-size":"24px","@steps-icon-custom-size":"20px","@steps-icon-custom-font-size":"20px","@steps-icon-custom-top":"2px","@steps-icon-margin":"2px 8px 2px 0","@steps-icon-font-size":"@font-size-base","@steps-dot-top":"4px","@steps-icon-top":"0px","@steps-small-icon-size":"20px","@steps-vertical-icon-width":"12px","@steps-vertical-tail-width":"12px","@steps-vertical-tail-width-sm":"10px","@collapse-header-padding-extra":"32px","@collapse-content-padding":"@padding-md @padding-lg","@list-item-meta-description-font-size":"@font-size-sm","@list-item-padding-sm":"4px 12px","@list-item-padding-lg":"12px 16px","@drawer-header-padding":"11px @padding-lg","@drawer-footer-padding-vertical":"@padding-sm","@drawer-footer-padding-horizontal":"@padding-sm","@drawer-header-close-size":"44px","@modal-header-padding":"11px @modal-header-padding-horizontal","@modal-footer-padding-vertical":"@padding-sm","@modal-header-close-size":"44px","@modal-confirm-body-padding":"24px 24px 16px","@message-notice-content-padding":"8px 16px","@popover-min-height":"28px","@popover-padding-horizontal":"@default-padding-sm","@card-padding-base":"12px","@card-head-height":"36px","@card-head-font-size":"@card-head-font-size-sm","@card-head-padding":"8.5px","@card-padding-base-sm":"@card-padding-base","@card-head-height-sm":"30px","@card-head-padding-sm":"6px","@card-actions-li-margin":"4px 0","@card-head-tabs-margin-bottom":"-9px","@table-padding-vertical":"12px","@table-padding-horizontal":"8px","@table-padding-vertical-md":"8px","@table-padding-horizontal-md":"8px","@table-padding-vertical-sm":"4px","@table-padding-horizontal-sm":"4px","@table-selection-column-width":"32px","@statistic-content-font-size":"20px","@alert-with-description-no-icon-padding-vertical":"7px","@alert-with-description-padding-vertical":"11px","@alert-icon-top":"7px + @font-size-base * (@line-height-base / 2) - (@font-size-base / 2)","@alert-with-description-icon-size":"20px","@skeleton-paragraph-margin-top":"20px","@skeleton-paragraph-li-margin-top":"12px","@skeleton-paragraph-li-height":"14px","@skeleton-title-height":"14px","@skeleton-title-paragraph-margin-top":"20px","@descriptions-title-margin-bottom":"8px","@descriptions-default-padding":"12px @padding-lg","@descriptions-item-padding-bottom":"@padding-xs","@avatar-size-base":"28px","@avatar-size-lg":"32px","@avatar-size-sm":"22px","@avatar-font-size-base":"16px","@avatar-font-size-lg":"20px","@avatar-font-size-sm":"12px","@badge-height":"18px","@tag-line-height":"18px","@notification-padding-vertical":"12px","@notification-padding-horizontal":"16px","@result-title-font-size":"20px","@result-icon-font-size":"64px","@result-extra-margin":"24px 0 0 0","@anchor-link-top":"4px","@anchor-link-left":"16px","@anchor-link-padding":"@anchor-link-top 0 @anchor-link-top @anchor-link-left","@tabs-card-horizontal-padding":"4px @padding-md","@progress-circle-text-font-size":"0.833333em","@image-size-base":"48px","@image-font-size-base":"24px","@primary-color":"#0057C9","@layout-header-background":"#fff","@layout-breadcrum-background":"#fff","@layout-content-background":"#fff","@layout-body-background":"#F6F6F7","@layout-header-shadow":"0px 3px 6px -4px rgba(0, 0, 0, 0.12)","@layout-slder-shadow":"3px 0px 6px -4px rgba(0, 0, 0, 0.12)","@mark-background-color":"#f5fdca","@component-background":"#FFF"} \ No newline at end of file diff --git a/web - 副本/client/src/themes/theme.json b/web - 副本/client/src/themes/theme.json new file mode 100644 index 0000000..25265de --- /dev/null +++ b/web - 副本/client/src/themes/theme.json @@ -0,0 +1 @@ +{"@body-background":"#01050f","@primary-color":"#0057c9","@link-color":"@primary-color","@secondary-color":"fade(@primary-color, 20%)","@btn-primary-bg":"@primary-color","@select-item-selected-option-color":"@primary-color","@processing-color":"@primary-color","@select-item-selected-bg":"@background-color-base","@skeleton-color":"@primary-color","@layout-header-height":"48px","@layout-header-shadow":"0px 3px 6px -4px @shadow-color","@layout-slder-shadow":"3px 0px 6px -4px @shadow-color","@layout-breadcrum-background":"@white","@layout-content-background":"@white","@component-background":"transparent","@form-require-color":"#ff4d4f","@mark-background-color":"#f5fdca","@red":"red","@green":"green"} \ No newline at end of file diff --git a/web - 副本/client/src/utils/.DS_Store b/web - 副本/client/src/utils/.DS_Store new file mode 100644 index 0000000..a142f5c Binary files /dev/null and b/web - 副本/client/src/utils/.DS_Store differ diff --git a/web - 副本/client/src/utils/authCode.js b/web - 副本/client/src/utils/authCode.js new file mode 100644 index 0000000..940bde8 --- /dev/null +++ b/web - 副本/client/src/utils/authCode.js @@ -0,0 +1,43 @@ +export const AuthorizationCode = { + TunnelManagement: '001', + DeviceManagement: '002', + MemberManagement: '013', + + // TunnelManagement + ModifyTunnel: '001002', + + // DeviceManagement + AddDevice: '002001', + ModifyDevice: '002002', + DeleteDevice: '002003', + RelationDevice: '002004', + + // Department + AddDepartment: '013001', + ModifyDepartmentName: '013002', + DeleteDepartment: '013003', + + // Role + AddRole: '013004', + ModifyRoleName: '013005', + DeleteRole: '013006', + + // Member + AddMember: '013007', + ModifyMember: '013008', + DeleteMember: '013009', + EnableMember: '013010', + DisableMember: '013011', + + // Resouce + ModifyRoleResource: '013012', + + // DataRange + ModifyRoleStructures: '013013', + + // systemLog + systemLogSearch: '013014', + +}; + +export default AuthorizationCode; diff --git a/web - 副本/client/src/utils/constant.js b/web - 副本/client/src/utils/constant.js new file mode 100644 index 0000000..7a36388 --- /dev/null +++ b/web - 副本/client/src/utils/constant.js @@ -0,0 +1,232 @@ +import moment from 'moment'; + +// 应急指挥事件类型 +const EVENT_TYPE = [ + { + key: 1, + name: '行人闯入', + value: 'person', + }, + { + level: 2, + name: '车辆超速', + value: 'speed', + }, + { + level: 3, + name: '三级', + color: '#FADF37', + }, + + { + level: 0, + name: '无等级', + color: '#ccc', + }, +]; + +// 广播、无线、电话设备状态 +const BROADCAST_STATUS = { + OffLine: '离线', + UnKnow: '未知', + Talking: '通话中', + Ringing: '振铃', +}; + +// 获取轮播列表中广播、无线、电话 设备状态展示 +const getBroadCastStatus = (status = 'online') => { + let str = ''; + switch (status.toLowerCase()) { + case 'offline': + str = '离线'; + break; + case 'unknow': + str = '未知'; + break; + case 'answer': + str = '通话中'; + break; + case 'ring': + str = '振铃'; + break; + case 'hangup': + str = '挂断'; + break; + default: + str = '在线'; + break; + } + return str; +}; + +// 广播、无线、电话设备状态大写转义 +const getDeviceStatusByBroadCast = (status = 'online') => { + let str = 'ONLINE'; + switch (status.toLowerCase()) { + case 'offline': + str = 'OFFLINE'; + break; + case 'unknow': + str = 'UNKNOW'; + break; + case 'answer': + str = 'ONLINE'; + break; + case 'ring': + str = 'ONLINE'; + break; + case 'hangup': + str = 'ONLINE'; + break; + default: + break; + } + return str; +}; + +// 大屏 统计时间切换 返回起止时间 +const getTimeRangeByKey = (key) => { + let timeRange = { + start: moment().startOf('day').format('YYYY-MM-DD HH:mm:ss'), + end: moment().endOf('day').format('YYYY-MM-DD HH:mm:ss'), + }; + switch (key) { + case 'day': + timeRange = { + start: moment().startOf('day').format('YYYY-MM-DD HH:mm:ss'), + end: moment().endOf('day').format('YYYY-MM-DD HH:mm:ss'), + }; + break; + case 'week': + timeRange = { + start: moment().subtract(6, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss'), + end: moment().endOf('day').format('YYYY-MM-DD HH:mm:ss'), + }; + break; + case 'month': + timeRange = { + start: moment().subtract(29, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss'), + end: moment().endOf('day').format('YYYY-MM-DD HH:mm:ss'), + }; + break; + default: + break; + } + return timeRange; +}; + +// 大屏固化时间切换 +const TAPS = [{ + key: 'day', + value: '今日', +}, { + key: 'week', + value: '近一周', +}, { + key: 'month', + value: '近一月', +}]; + +// 广播、无线、电话设备告警类型 +const BROADCAST_ALARM_TYPE = { + 1: '防拆报警', + 2: '一键报警', + 3: '网关报警', + 4: '移动侦测报警', + 5: '安全帽报警', +}; + +const DEVICE_RELATION = [ + { title: '视频监控设备', value: 'video' }, + { title: '风机设备', value: 'fan' }, + { title: '水泵设备', value: 'pump' }, + { title: '消防设备', value: 'fire' }, + { title: '广播设备', value: 'broadcast' }, + { title: '无线设备', value: 'fmbroadcast' }, + { title: '电话设备', value: 'phone' }, + { title: '情报板设备', value: 'board' }, + { title: '机器人设备', value: 'robot' }, + { title: '积水监测设备', value: 'water' }, +]; + +const getWindDirection = (direction) => { + const DIRECTION = [ + { + name: '北', gt: 0, lt: 11.25, direction: 'N', + }, + { + name: '北', gt: 348.76, lt: 360, direction: 'N', + }, + { + name: '北东北', gt: 11.26, lt: 33.75, direction: 'NNE', + }, + { + name: '东北', gt: 33.76, lt: 56.25, direction: 'NE', + }, + { + name: '东东北', gt: 56.26, lt: 78.75, direction: 'ENE', + }, + { + name: '东', gt: 78.76, lt: 101.25, direction: 'E', + }, + { + name: '东东南', gt: 101.26, lt: 123.75, direction: 'ESE', + }, + { + name: '东南', gt: 123.76, lt: 146.25, direction: 'SE', + }, + { + name: '南东南', gt: 146.26, lt: 168.75, direction: 'SSE', + }, + { + name: '南', gt: 168.76, lt: 191.25, direction: 'S', + }, + { + name: '南西南', gt: 191.26, lt: 213.75, direction: 'SSW', + }, + { + name: '西南', gt: 213.76, lt: 236.25, direction: 'SW', + }, + { + name: '西西南', gt: 236.26, lt: 258.75, direction: 'WSW', + }, + { + name: '西', gt: 258.76, lt: 281.25, direction: 'W', + }, + { + name: '西西北', gt: 281.26, lt: 303.75, direction: 'WNW', + }, + { + name: '西北', gt: 303.76, lt: 326.25, direction: 'NW', + }, + { + name: '北西北', gt: 326.26, lt: 348.75, direction: 'NNW', + }, + ]; + const value = DIRECTION.find((v) => direction >= v.gt && direction <= v.lt); + return value ? value.name : ''; +}; + +// const validateImage = (url) => { +// let xmlHttp = null; +// if (window.ActiveXObject) { +// xmlHttp = new ActiveXObject('Microsoft.XMLHTTP'); +// } else if (window.XMLHttpRequest) { +// xmlHttp = new XMLHttpRequest(); +// } +// xmlHttp.open('Get', url, false); +// xmlHttp.send(); +// return xmlHttp.status !== 404; +// }; + +export { + EVENT_TYPE, + BROADCAST_STATUS, + getBroadCastStatus, + getDeviceStatusByBroadCast, + getTimeRangeByKey, + TAPS, + BROADCAST_ALARM_TYPE, + DEVICE_RELATION, + getWindDirection, +}; diff --git a/web - 副本/client/src/utils/func.js b/web - 副本/client/src/utils/func.js new file mode 100644 index 0000000..fcceed3 --- /dev/null +++ b/web - 副本/client/src/utils/func.js @@ -0,0 +1,154 @@ +export default class Func { + static isAuthorized(authcode) { + if (JSON.parse(sessionStorage.getItem('user'))) { + const { resources } = JSON.parse(sessionStorage.getItem('user')); + return resources.includes(authcode); + } + return false; + } + + static getSelectCommonProps = () => ({ + getPopupContainer: (triggerNode) => triggerNode.parentNode, + }); + + static getContentHeight = (clientHeight) => clientHeight - 56 - 48; + + // 数字千位分隔符 + static numFormatter = (number) => { + const numbers = number.toString().split('').reverse(); + const segs = []; + + while (numbers.length) segs.push(numbers.splice(0, 3).join('')); + + return segs.join(',').split('').reverse().join(''); + }; + + // 数组去重,根据某一个属性 + static uniqueArr(arr, name) { + const res = new Map(); + return arr.filter((a) => !res.has(a[name]) && res.set(a[name], 1)); + } + + // 数组转proTable colums value options + static transValueEnum = (arr, key = 'id', text = 'name') => { + const newArr = arr.map((v) => [v[key], { text: v[text] }]); + return Object.fromEntries(newArr); + }; + + // 部门转化 tabletree + static nest = (items, id = null, parentName = null) => items.filter((item) => item.parentId === id) + .map((item) => { + if (items.some((v) => v.parentId === item.departmentId)) { + return { + ...item, + parentName, + children: this.nest(items, item.departmentId, item.departmentName), + }; + } + return { + ...item, + parentName, + }; + }); + + // 部门转化 tree + static nestTree = (items, id = null, parentName = null) => items.filter((item) => item.parentId === id) + .map((item) => ({ + ...item, + title: item.departmentName, + key: `${item.departmentId}`, + parentName, + children: this.nestTree(items, item.departmentId, item.departmentName), + })); + + // 部门转化 Cascader options + static nestCascader = (items, id = null) => items.filter((item) => item.parentId === id && item.departmentName !== '默认') + .map((item) => ({ + title: item.departmentName, + value: `${item.departmentId}`, + key: `${item.departmentId}`, + children: this.nestCascader(items, item.departmentId), + })); + + // 角色转化 Cascader options + static nestTreeRoles = (items, filterDefault = false) => { + if (filterDefault) { + return items.filter((f) => f.name !== '默认').map((item) => ({ + title: item.name, + value: `group-${item.id}`, + key: `group-${item.id}`, + children: Array.isArray(item.roles) ? item.roles.map((v) => ({ + title: v.name, + value: `${v.id}`, + key: `${v.id}`, + })) : [], + })); + } + return items.map((item) => ({ + ...item, + title: item.name, + value: `group-${item.id}`, + key: `group-${item.id}`, + selectable: false, + children: Array.isArray(item.roles) ? item.roles.map((v) => ({ + ...v, + title: v.name, + value: `${v.id}`, + key: `${v.id}`, + })) : [], + })); + }; + + // 循环查找上级部门 + static getCascaderValues(treeData = [], id) { + const departmentIds = [`${id}`]; + + const loopTreeData = (data, pid) => { + const cur = data.find((v) => v.departmentId == pid); + if (cur && cur.parentId) { + departmentIds.unshift(`${cur.parentId}`); + loopTreeData(treeData, cur.parentId); + } + }; + loopTreeData(treeData, id); + return departmentIds; + } + + static getMembersByTree = (tree) => { + let members = tree?.members ? [].concat(tree.members) : []; + const getMembers = (data) => { + data.forEach((v) => { + if (v.members) { + members = [].concat(members, v.members); + } + if (v.children) { + getMembers(v.children); + } + }); + }; + getMembers(tree.children || []); + return members; + }; + + static getDepartmentsByTree = (tree) => { + const departmentIds = tree?.departmentId ? [tree?.departmentId] : []; + const getDepartments = (data) => { + data.forEach((v) => { + if (v.departmentId) { + departmentIds.push(v.departmentId); + } + if (v.children) { + getDepartments(v.children); + } + }); + }; + getDepartments(tree.children || []); + return departmentIds; + }; + + // 全局分页样式 + static getPaginationStyle = () => ({ + showTotal: (total, range) => `总共 ${total} 条`, + pageSize: 10, + }); +} diff --git a/web - 副本/client/src/utils/hooks.js b/web - 副本/client/src/utils/hooks.js new file mode 100644 index 0000000..6725872 --- /dev/null +++ b/web - 副本/client/src/utils/hooks.js @@ -0,0 +1,60 @@ +import { useRequest } from 'ahooks'; +import { Request } from '@peace/utils'; +import { Request as MockRequest } from './webapi'; + +// 本地WebApi 获取数据hook ,走api的用这个 +export const useFsRequest = ({ ...props }) => { + const { + method = 'get', body, query, url, ...rest + } = props; + return useRequest(() => { + if (method === 'post') { + return Request.post(url, body || {}, query || {}); + } + return Request.get(url, query || {}); + }, { + loadingDelay: 500, + ...rest, + }); +}; + +// 第三方系统 获取数据hook , 第三方系统api用这个,包括apiFox 的mock数据 传入不同method即可 +export const useMockRequest = ({ ...props }) => { + const { + method = 'get', header, body, query, url, ...rest + } = props; + return useRequest(() => { + if (method === 'post') { + return MockRequest.post(url, body || {}, query || {}); + } + if (method === 'put') { + return MockRequest.put(url, body || {}, query || {}); + } + if (method === 'mockGet') { + return MockRequest.mockGet(url, query || {}, header || {}); + } + if (method === 'mockPost') { + return MockRequest.mockPost(url, body || {}, query || {}, header || {}); + } + + return MockRequest.get(url, query || {}); + }, { + loadingDelay: 500, + ...rest, + }); +}; + +export const useScale = () => { + const w = document.body.clientWidth / 2880; + const h = document.body.clientHeight / 1080; + const scale = w < h ? w : h; + return { + transform: `scale(${scale}) translate(-50%, -50%)`, + }; +}; + +export default { + useFsRequest, + useMockRequest, + useScale, +}; diff --git a/web - 副本/client/src/utils/index.js b/web - 副本/client/src/utils/index.js new file mode 100644 index 0000000..32249e0 --- /dev/null +++ b/web - 副本/client/src/utils/index.js @@ -0,0 +1,31 @@ +import { AuthorizationCode } from './authCode'; +import { ApiTable, RouteTable, Request } from './webapi'; +import Func from './func'; +import { useFsRequest, useMockRequest, useScale } from './hooks'; +import { SingleHref, localFlag } from './single-login'; +import { + EVENT_TYPE, BROADCAST_STATUS, getBroadCastStatus, getDeviceStatusByBroadCast, TAPS, getTimeRangeByKey, BROADCAST_ALARM_TYPE, DEVICE_RELATION, getWindDirection, +} from './constant'; +import { reducerCreater } from './state-helper'; + +export { + AuthorizationCode, + Func, + ApiTable, RouteTable, + useFsRequest, + useMockRequest, + useScale, + SingleHref, + localFlag, + EVENT_TYPE, + BROADCAST_STATUS, + getBroadCastStatus, + getDeviceStatusByBroadCast, + getTimeRangeByKey, + TAPS, + Request, + BROADCAST_ALARM_TYPE, + DEVICE_RELATION, + getWindDirection, + reducerCreater, +}; diff --git a/web - 副本/client/src/utils/region.js b/web - 副本/client/src/utils/region.js new file mode 100644 index 0000000..c7b6df6 --- /dev/null +++ b/web - 副本/client/src/utils/region.js @@ -0,0 +1,13961 @@ +/** + * Created by yuanfenghua on 2016/5/23. + */ +'use strict' + +const RegionTree = [ + { + "value": 1, + "label": "北京市", + "children": [ + { + "value": 2, + "label": "东城区" + }, + { + "value": 3, + "label": "西城区" + }, + { + "value": 4, + "label": "朝阳区" + }, + { + "value": 5, + "label": "丰台区" + }, + { + "value": 6, + "label": "石景山区" + }, + { + "value": 7, + "label": "海淀区" + }, + { + "value": 8, + "label": "门头沟区" + }, + { + "value": 9, + "label": "房山区" + }, + { + "value": 10, + "label": "通州区" + }, + { + "value": 11, + "label": "顺义区" + }, + { + "value": 12, + "label": "昌平区" + }, + { + "value": 13, + "label": "大兴区" + }, + { + "value": 14, + "label": "怀柔区" + }, + { + "value": 15, + "label": "平谷区" + }, + { + "value": 16, + "label": "密云县" + }, + { + "value": 17, + "label": "延庆县" + } + ] + }, + { + "value": 18, + "label": "天津市", + "children": [ + { + "value": 19, + "label": "和平区" + }, + { + "value": 20, + "label": "河东区" + }, + { + "value": 21, + "label": "河西区" + }, + { + "value": 22, + "label": "南开区" + }, + { + "value": 23, + "label": "河北区" + }, + { + "value": 24, + "label": "红桥区" + }, + { + "value": 25, + "label": "东丽区" + }, + { + "value": 26, + "label": "西青区" + }, + { + "value": 27, + "label": "津南区" + }, + { + "value": 28, + "label": "北辰区" + }, + { + "value": 29, + "label": "武清区" + }, + { + "value": 30, + "label": "宝坻区" + }, + { + "value": 31, + "label": "滨海新区" + }, + { + "value": 32, + "label": "宁河县" + }, + { + "value": 33, + "label": "静海县" + }, + { + "value": 34, + "label": "蓟县" + } + ] + }, + { + "value": 35, + "label": "河北省", + "children": [ + { + "value": 36, + "label": "石家庄市", + "children": [ + { + "value": 37, + "label": "长安区" + }, + { + "value": 38, + "label": "桥东区" + }, + { + "value": 39, + "label": "桥西区" + }, + { + "value": 40, + "label": "新华区" + }, + { + "value": 41, + "label": "井陉矿区" + }, + { + "value": 42, + "label": "裕华区" + }, + { + "value": 55, + "label": "辛集市" + }, + { + "value": 56, + "label": "藁城市" + }, + { + "value": 57, + "label": "晋州市" + }, + { + "value": 58, + "label": "新乐市" + }, + { + "value": 59, + "label": "鹿泉市" + }, + { + "value": 49, + "label": "深泽县" + }, + { + "value": 50, + "label": "赞皇县" + }, + { + "value": 51, + "label": "无极县" + }, + { + "value": 52, + "label": "平山县" + }, + { + "value": 53, + "label": "元氏县" + }, + { + "value": 54, + "label": "赵县" + }, + { + "value": 43, + "label": "井陉县" + }, + { + "value": 44, + "label": "正定县" + }, + { + "value": 45, + "label": "栾城县" + }, + { + "value": 46, + "label": "行唐县" + }, + { + "value": 47, + "label": "灵寿县" + }, + { + "value": 48, + "label": "高邑县" + } + ] + }, + { + "value": 60, + "label": "唐山市", + "children": [ + { + "value": 61, + "label": "路南区" + }, + { + "value": 62, + "label": "路北区" + }, + { + "value": 63, + "label": "古冶区" + }, + { + "value": 64, + "label": "开平区" + }, + { + "value": 65, + "label": "丰南区" + }, + { + "value": 66, + "label": "丰润区" + }, + { + "value": 73, + "label": "遵化市" + }, + { + "value": 74, + "label": "迁安市" + }, + { + "value": 67, + "label": "滦县" + }, + { + "value": 68, + "label": "滦南县" + }, + { + "value": 69, + "label": "乐亭县" + }, + { + "value": 70, + "label": "迁西县" + }, + { + "value": 71, + "label": "玉田县" + }, + { + "value": 72, + "label": "唐海县" + } + ] + }, + { + "value": 75, + "label": "秦皇岛市", + "children": [ + { + "value": 76, + "label": "海港区" + }, + { + "value": 77, + "label": "山海关区" + }, + { + "value": 78, + "label": "北戴河区" + }, + { + "value": 79, + "label": "青龙满族自治县" + }, + { + "value": 80, + "label": "昌黎县" + }, + { + "value": 81, + "label": "抚宁县" + }, + { + "value": 82, + "label": "卢龙县" + } + ] + }, + { + "value": 83, + "label": "邯郸市", + "children": [ + { + "value": 84, + "label": "邯山区" + }, + { + "value": 85, + "label": "丛台区" + }, + { + "value": 86, + "label": "复兴区" + }, + { + "value": 87, + "label": "峰峰矿区" + }, + { + "value": 88, + "label": "邯郸县" + }, + { + "value": 89, + "label": "临漳县" + }, + { + "value": 102, + "label": "武安市" + }, + { + "value": 96, + "label": "邱县" + }, + { + "value": 97, + "label": "鸡泽县" + }, + { + "value": 98, + "label": "广平县" + }, + { + "value": 99, + "label": "馆陶县" + }, + { + "value": 100, + "label": "魏县" + }, + { + "value": 101, + "label": "曲周县" + }, + { + "value": 90, + "label": "成安县" + }, + { + "value": 91, + "label": "大名县" + }, + { + "value": 92, + "label": "涉县" + }, + { + "value": 93, + "label": "磁县" + }, + { + "value": 94, + "label": "肥乡县" + }, + { + "value": 95, + "label": "永年县" + } + ] + }, + { + "value": 103, + "label": "邢台市", + "children": [ + { + "value": 104, + "label": "桥东区" + }, + { + "value": 105, + "label": "桥西区" + }, + { + "value": 106, + "label": "邢台县" + }, + { + "value": 107, + "label": "临城县" + }, + { + "value": 108, + "label": "内丘县" + }, + { + "value": 109, + "label": "柏乡县" + }, + { + "value": 122, + "label": "沙河市" + }, + { + "value": 116, + "label": "广宗县" + }, + { + "value": 117, + "label": "平乡县" + }, + { + "value": 118, + "label": "威县" + }, + { + "value": 119, + "label": "清河县" + }, + { + "value": 120, + "label": "临西县" + }, + { + "value": 121, + "label": "南宫市" + }, + { + "value": 110, + "label": "隆尧县" + }, + { + "value": 111, + "label": "任县" + }, + { + "value": 112, + "label": "南和县" + }, + { + "value": 113, + "label": "宁晋县" + }, + { + "value": 114, + "label": "巨鹿县" + }, + { + "value": 115, + "label": "新河县" + } + ] + }, + { + "value": 123, + "label": "保定市", + "children": [ + { + "value": 124, + "label": "新市区" + }, + { + "value": 125, + "label": "北市区" + }, + { + "value": 126, + "label": "南市区" + }, + { + "value": 127, + "label": "满城县" + }, + { + "value": 128, + "label": "清苑县" + }, + { + "value": 129, + "label": "涞水县" + }, + { + "value": 148, + "label": "高碑店市" + }, + { + "value": 142, + "label": "顺平县" + }, + { + "value": 143, + "label": "博野县" + }, + { + "value": 144, + "label": "雄县" + }, + { + "value": 145, + "label": "涿州市" + }, + { + "value": 146, + "label": "定州市" + }, + { + "value": 147, + "label": "安国市" + }, + { + "value": 136, + "label": "涞源县" + }, + { + "value": 137, + "label": "望都县" + }, + { + "value": 138, + "label": "安新县" + }, + { + "value": 139, + "label": "易县" + }, + { + "value": 140, + "label": "曲阳县" + }, + { + "value": 141, + "label": "蠡县" + }, + { + "value": 130, + "label": "阜平县" + }, + { + "value": 131, + "label": "徐水县" + }, + { + "value": 132, + "label": "定兴县" + }, + { + "value": 133, + "label": "唐县" + }, + { + "value": 134, + "label": "高阳县" + }, + { + "value": 135, + "label": "容城县" + } + ] + }, + { + "value": 149, + "label": "张家口市", + "children": [ + { + "value": 150, + "label": "桥东区" + }, + { + "value": 151, + "label": "桥西区" + }, + { + "value": 152, + "label": "宣化区" + }, + { + "value": 153, + "label": "下花园区" + }, + { + "value": 154, + "label": "宣化县" + }, + { + "value": 155, + "label": "张北县" + }, + { + "value": 162, + "label": "万全县" + }, + { + "value": 163, + "label": "怀来县" + }, + { + "value": 164, + "label": "涿鹿县" + }, + { + "value": 165, + "label": "赤城县" + }, + { + "value": 166, + "label": "崇礼县" + }, + { + "value": 156, + "label": "康保县" + }, + { + "value": 157, + "label": "沽源县" + }, + { + "value": 158, + "label": "尚义县" + }, + { + "value": 159, + "label": "蔚县" + }, + { + "value": 160, + "label": "阳原县" + }, + { + "value": 161, + "label": "怀安县" + } + ] + }, + { + "value": 167, + "label": "承德市", + "children": [ + { + "value": 168, + "label": "双桥区" + }, + { + "value": 169, + "label": "双滦区" + }, + { + "value": 170, + "label": "鹰手营子矿区" + }, + { + "value": 171, + "label": "承德县" + }, + { + "value": 172, + "label": "兴隆县" + }, + { + "value": 173, + "label": "平泉县" + }, + { + "value": 174, + "label": "滦平县" + }, + { + "value": 175, + "label": "隆化县" + }, + { + "value": 176, + "label": "丰宁满族自治县" + }, + { + "value": 177, + "label": "宽城满族自治县" + }, + { + "value": 178, + "label": "围场满族蒙古族自治县" + } + ] + }, + { + "value": 179, + "label": "沧州市", + "children": [ + { + "value": 180, + "label": "新华区" + }, + { + "value": 181, + "label": "运河区" + }, + { + "value": 182, + "label": "沧县" + }, + { + "value": 183, + "label": "青县" + }, + { + "value": 184, + "label": "东光县" + }, + { + "value": 185, + "label": "海兴县" + }, + { + "value": 192, + "label": "泊头市" + }, + { + "value": 193, + "label": "任丘市" + }, + { + "value": 194, + "label": "黄骅市" + }, + { + "value": 195, + "label": "河间市" + }, + { + "value": 186, + "label": "盐山县" + }, + { + "value": 187, + "label": "肃宁县" + }, + { + "value": 188, + "label": "南皮县" + }, + { + "value": 189, + "label": "吴桥县" + }, + { + "value": 190, + "label": "献县" + }, + { + "value": 191, + "label": "孟村回族自治县" + } + ] + }, + { + "value": 196, + "label": "廊坊市", + "children": [ + { + "value": 197, + "label": "安次区" + }, + { + "value": 198, + "label": "广阳区" + }, + { + "value": 199, + "label": "固安县" + }, + { + "value": 200, + "label": "永清县" + }, + { + "value": 201, + "label": "香河县" + }, + { + "value": 202, + "label": "大城县" + }, + { + "value": 203, + "label": "文安县" + }, + { + "value": 204, + "label": "大厂回族自治县" + }, + { + "value": 205, + "label": "霸州市" + }, + { + "value": 206, + "label": "三河市" + } + ] + }, + { + "value": 207, + "label": "衡水市", + "children": [ + { + "value": 208, + "label": "桃城区" + }, + { + "value": 209, + "label": "枣强县" + }, + { + "value": 210, + "label": "武邑县" + }, + { + "value": 211, + "label": "武强县" + }, + { + "value": 212, + "label": "饶阳县" + }, + { + "value": 213, + "label": "安平县" + }, + { + "value": 214, + "label": "故城县" + }, + { + "value": 215, + "label": "景县" + }, + { + "value": 216, + "label": "阜城县" + }, + { + "value": 217, + "label": "冀州市" + }, + { + "value": 218, + "label": "深州市" + } + ] + } + ] + }, + { + "value": 219, + "label": "山西省", + "children": [ + { + "value": 220, + "label": "太原市", + "children": [ + { + "value": 221, + "label": "小店区" + }, + { + "value": 222, + "label": "迎泽区" + }, + { + "value": 223, + "label": "杏花岭区" + }, + { + "value": 224, + "label": "尖草坪区" + }, + { + "value": 225, + "label": "万柏林区" + }, + { + "value": 226, + "label": "晋源区" + }, + { + "value": 227, + "label": "清徐县" + }, + { + "value": 228, + "label": "阳曲县" + }, + { + "value": 229, + "label": "娄烦县" + }, + { + "value": 230, + "label": "古交市" + } + ] + }, + { + "value": 231, + "label": "大同市", + "children": [ + { + "value": 232, + "label": "城区" + }, + { + "value": 233, + "label": "矿区" + }, + { + "value": 234, + "label": "南郊区" + }, + { + "value": 235, + "label": "新荣区" + }, + { + "value": 236, + "label": "阳高县" + }, + { + "value": 237, + "label": "天镇县" + }, + { + "value": 238, + "label": "广灵县" + }, + { + "value": 239, + "label": "灵丘县" + }, + { + "value": 240, + "label": "浑源县" + }, + { + "value": 241, + "label": "左云县" + }, + { + "value": 242, + "label": "大同县" + } + ] + }, + { + "value": 243, + "label": "阳泉市", + "children": [ + { + "value": 244, + "label": "城区" + }, + { + "value": 245, + "label": "矿区" + }, + { + "value": 246, + "label": "郊区" + }, + { + "value": 247, + "label": "平定县" + }, + { + "value": 248, + "label": "盂县" + } + ] + }, + { + "value": 249, + "label": "长治市", + "children": [ + { + "value": 250, + "label": "城区" + }, + { + "value": 251, + "label": "郊区" + }, + { + "value": 252, + "label": "长治县" + }, + { + "value": 253, + "label": "襄垣县" + }, + { + "value": 254, + "label": "屯留县" + }, + { + "value": 255, + "label": "平顺县" + }, + { + "value": 262, + "label": "潞城市" + }, + { + "value": 256, + "label": "黎城县" + }, + { + "value": 257, + "label": "壶关县" + }, + { + "value": 258, + "label": "长子县" + }, + { + "value": 259, + "label": "武乡县" + }, + { + "value": 260, + "label": "沁县" + }, + { + "value": 261, + "label": "沁源县" + } + ] + }, + { + "value": 263, + "label": "晋城市", + "children": [ + { + "value": 264, + "label": "城区" + }, + { + "value": 265, + "label": "沁水县" + }, + { + "value": 266, + "label": "阳城县" + }, + { + "value": 267, + "label": "陵川县" + }, + { + "value": 268, + "label": "泽州县" + }, + { + "value": 269, + "label": "高平市" + } + ] + }, + { + "value": 270, + "label": "朔州市", + "children": [ + { + "value": 271, + "label": "朔城区" + }, + { + "value": 272, + "label": "平鲁区" + }, + { + "value": 273, + "label": "山阴县" + }, + { + "value": 274, + "label": "应县" + }, + { + "value": 275, + "label": "右玉县" + }, + { + "value": 276, + "label": "怀仁县" + } + ] + }, + { + "value": 277, + "label": "晋中市", + "children": [ + { + "value": 278, + "label": "榆次区" + }, + { + "value": 279, + "label": "榆社县" + }, + { + "value": 280, + "label": "左权县" + }, + { + "value": 281, + "label": "和顺县" + }, + { + "value": 282, + "label": "昔阳县" + }, + { + "value": 283, + "label": "寿阳县" + }, + { + "value": 284, + "label": "太谷县" + }, + { + "value": 285, + "label": "祁县" + }, + { + "value": 286, + "label": "平遥县" + }, + { + "value": 287, + "label": "灵石县" + }, + { + "value": 288, + "label": "介休市" + } + ] + }, + { + "value": 289, + "label": "运城市", + "children": [ + { + "value": 290, + "label": "盐湖区" + }, + { + "value": 291, + "label": "临猗县" + }, + { + "value": 292, + "label": "万荣县" + }, + { + "value": 293, + "label": "闻喜县" + }, + { + "value": 294, + "label": "稷山县" + }, + { + "value": 295, + "label": "新绛县" + }, + { + "value": 302, + "label": "河津市" + }, + { + "value": 296, + "label": "绛县" + }, + { + "value": 297, + "label": "垣曲县" + }, + { + "value": 298, + "label": "夏县" + }, + { + "value": 299, + "label": "平陆县" + }, + { + "value": 300, + "label": "芮城县" + }, + { + "value": 301, + "label": "永济市" + } + ] + }, + { + "value": 303, + "label": "忻州市", + "children": [ + { + "value": 304, + "label": "忻府区" + }, + { + "value": 305, + "label": "定襄县" + }, + { + "value": 306, + "label": "五台县" + }, + { + "value": 307, + "label": "代县" + }, + { + "value": 308, + "label": "繁峙县" + }, + { + "value": 309, + "label": "宁武县" + }, + { + "value": 316, + "label": "偏关县" + }, + { + "value": 317, + "label": "原平市" + }, + { + "value": 310, + "label": "静乐县" + }, + { + "value": 311, + "label": "神池县" + }, + { + "value": 312, + "label": "五寨县" + }, + { + "value": 313, + "label": "岢岚县" + }, + { + "value": 314, + "label": "河曲县" + }, + { + "value": 315, + "label": "保德县" + } + ] + }, + { + "value": 318, + "label": "临汾市", + "children": [ + { + "value": 319, + "label": "尧都区" + }, + { + "value": 320, + "label": "曲沃县" + }, + { + "value": 321, + "label": "翼城县" + }, + { + "value": 322, + "label": "襄汾县" + }, + { + "value": 323, + "label": "洪洞县" + }, + { + "value": 324, + "label": "古县" + }, + { + "value": 331, + "label": "永和县" + }, + { + "value": 332, + "label": "蒲县" + }, + { + "value": 333, + "label": "汾西县" + }, + { + "value": 334, + "label": "侯马市" + }, + { + "value": 335, + "label": "霍州市" + }, + { + "value": 325, + "label": "安泽县" + }, + { + "value": 326, + "label": "浮山县" + }, + { + "value": 327, + "label": "吉县" + }, + { + "value": 328, + "label": "乡宁县" + }, + { + "value": 329, + "label": "大宁县" + }, + { + "value": 330, + "label": "隰县" + } + ] + }, + { + "value": 336, + "label": "吕梁市", + "children": [ + { + "value": 337, + "label": "离石区" + }, + { + "value": 338, + "label": "文水县" + }, + { + "value": 339, + "label": "交城县" + }, + { + "value": 340, + "label": "兴县" + }, + { + "value": 341, + "label": "临县" + }, + { + "value": 342, + "label": "柳林县" + }, + { + "value": 349, + "label": "汾阳市" + }, + { + "value": 343, + "label": "石楼县" + }, + { + "value": 344, + "label": "岚县" + }, + { + "value": 345, + "label": "方山县" + }, + { + "value": 346, + "label": "中阳县" + }, + { + "value": 347, + "label": "交口县" + }, + { + "value": 348, + "label": "孝义市" + } + ] + } + ] + }, + { + "value": 350, + "label": "内蒙古自治区", + "children": [ + { + "value": 351, + "label": "呼和浩特市", + "children": [ + { + "value": 352, + "label": "新城区" + }, + { + "value": 353, + "label": "回民区" + }, + { + "value": 354, + "label": "玉泉区" + }, + { + "value": 355, + "label": "赛罕区" + }, + { + "value": 356, + "label": "土默特左旗" + }, + { + "value": 357, + "label": "托克托县" + }, + { + "value": 358, + "label": "和林格尔县" + }, + { + "value": 359, + "label": "清水河县" + }, + { + "value": 360, + "label": "武川县" + } + ] + }, + { + "value": 361, + "label": "包头市", + "children": [ + { + "value": 362, + "label": "东河区" + }, + { + "value": 363, + "label": "昆都仑区" + }, + { + "value": 364, + "label": "青山区" + }, + { + "value": 365, + "label": "石拐区" + }, + { + "value": 366, + "label": "白云鄂博矿区" + }, + { + "value": 367, + "label": "九原区" + }, + { + "value": 368, + "label": "土默特右旗" + }, + { + "value": 369, + "label": "固阳县" + }, + { + "value": 370, + "label": "达尔罕茂明安联合旗" + } + ] + }, + { + "value": 371, + "label": "乌海市", + "children": [ + { + "value": 372, + "label": "海勃湾区" + }, + { + "value": 373, + "label": "海南区" + }, + { + "value": 374, + "label": "乌达区" + } + ] + }, + { + "value": 375, + "label": "赤峰市", + "children": [ + { + "value": 376, + "label": "红山区" + }, + { + "value": 377, + "label": "元宝山区" + }, + { + "value": 378, + "label": "松山区" + }, + { + "value": 379, + "label": "阿鲁科尔沁旗" + }, + { + "value": 380, + "label": "巴林左旗" + }, + { + "value": 381, + "label": "巴林右旗" + }, + { + "value": 382, + "label": "林西县" + }, + { + "value": 383, + "label": "克什克腾旗" + }, + { + "value": 384, + "label": "翁牛特旗" + }, + { + "value": 385, + "label": "喀喇沁旗" + }, + { + "value": 386, + "label": "宁城县" + }, + { + "value": 387, + "label": "敖汉旗" + } + ] + }, + { + "value": 388, + "label": "通辽市", + "children": [ + { + "value": 392, + "label": "开鲁县" + }, + { + "value": 393, + "label": "库伦旗" + }, + { + "value": 394, + "label": "奈曼旗" + }, + { + "value": 395, + "label": "扎鲁特旗" + }, + { + "value": 396, + "label": "霍林郭勒市" + }, + { + "value": 389, + "label": "科尔沁区" + }, + { + "value": 390, + "label": "科尔沁左翼中旗" + }, + { + "value": 391, + "label": "科尔沁左翼后旗" + } + ] + }, + { + "value": 397, + "label": "鄂尔多斯市", + "children": [ + { + "value": 398, + "label": "东胜区" + }, + { + "value": 399, + "label": "达拉特旗" + }, + { + "value": 400, + "label": "准格尔旗" + }, + { + "value": 401, + "label": "鄂托克前旗" + }, + { + "value": 402, + "label": "鄂托克旗" + }, + { + "value": 403, + "label": "杭锦旗" + }, + { + "value": 404, + "label": "乌审旗" + }, + { + "value": 405, + "label": "伊金霍洛旗" + } + ] + }, + { + "value": 406, + "label": "呼伦贝尔市", + "children": [ + { + "value": 407, + "label": "海拉尔区" + }, + { + "value": 408, + "label": "阿荣旗" + }, + { + "value": 409, + "label": "莫力达瓦达斡尔族自治旗" + }, + { + "value": 410, + "label": "鄂伦春自治旗" + }, + { + "value": 411, + "label": "鄂温克族自治旗" + }, + { + "value": 412, + "label": "陈巴尔虎旗" + }, + { + "value": 419, + "label": "根河市" + }, + { + "value": 413, + "label": "新巴尔虎左旗" + }, + { + "value": 414, + "label": "新巴尔虎右旗" + }, + { + "value": 415, + "label": "满洲里市" + }, + { + "value": 416, + "label": "牙克石市" + }, + { + "value": 417, + "label": "扎兰屯市" + }, + { + "value": 418, + "label": "额尔古纳市" + } + ] + }, + { + "value": 420, + "label": "巴彦淖尔市", + "children": [ + { + "value": 421, + "label": "临河区" + }, + { + "value": 422, + "label": "五原县" + }, + { + "value": 423, + "label": "磴口县" + }, + { + "value": 424, + "label": "乌拉特前旗" + }, + { + "value": 425, + "label": "乌拉特中旗" + }, + { + "value": 426, + "label": "乌拉特后旗" + }, + { + "value": 427, + "label": "杭锦后旗" + } + ] + }, + { + "value": 428, + "label": "乌兰察布市", + "children": [ + { + "value": 429, + "label": "集宁区" + }, + { + "value": 430, + "label": "卓资县" + }, + { + "value": 431, + "label": "化德县" + }, + { + "value": 432, + "label": "商都县" + }, + { + "value": 433, + "label": "兴和县" + }, + { + "value": 434, + "label": "凉城县" + }, + { + "value": 435, + "label": "察哈尔右翼前旗" + }, + { + "value": 436, + "label": "察哈尔右翼中旗" + }, + { + "value": 437, + "label": "察哈尔右翼后旗" + }, + { + "value": 438, + "label": "四子王旗" + }, + { + "value": 439, + "label": "丰镇市" + } + ] + }, + { + "value": 440, + "label": "兴安盟", + "children": [ + { + "value": 441, + "label": "乌兰浩特市" + }, + { + "value": 442, + "label": "阿尔山市" + }, + { + "value": 443, + "label": "科尔沁右翼前旗" + }, + { + "value": 444, + "label": "科尔沁右翼中旗" + }, + { + "value": 445, + "label": "扎赉特旗" + }, + { + "value": 446, + "label": "突泉县" + } + ] + }, + { + "value": 447, + "label": "锡林郭勒盟", + "children": [ + { + "value": 448, + "label": "二连浩特市" + }, + { + "value": 449, + "label": "锡林浩特市" + }, + { + "value": 450, + "label": "阿巴嘎旗" + }, + { + "value": 451, + "label": "苏尼特左旗" + }, + { + "value": 452, + "label": "苏尼特右旗" + }, + { + "value": 453, + "label": "东乌珠穆沁旗" + }, + { + "value": 454, + "label": "西乌珠穆沁旗" + }, + { + "value": 455, + "label": "太仆寺旗" + }, + { + "value": 456, + "label": "镶黄旗" + }, + { + "value": 457, + "label": "正镶白旗" + }, + { + "value": 458, + "label": "正蓝旗" + }, + { + "value": 459, + "label": "多伦县" + } + ] + }, + { + "value": 460, + "label": "阿拉善盟", + "children": [ + { + "value": 461, + "label": "阿拉善左旗" + }, + { + "value": 462, + "label": "阿拉善右旗" + }, + { + "value": 463, + "label": "额济纳旗" + } + ] + } + ] + }, + { + "value": 464, + "label": "辽宁省", + "children": [ + { + "value": 465, + "label": "沈阳市", + "children": [ + { + "value": 466, + "label": "和平区" + }, + { + "value": 467, + "label": "沈河区" + }, + { + "value": 468, + "label": "大东区" + }, + { + "value": 469, + "label": "皇姑区" + }, + { + "value": 470, + "label": "铁西区" + }, + { + "value": 471, + "label": "苏家屯区" + }, + { + "value": 478, + "label": "新民市" + }, + { + "value": 472, + "label": "东陵区" + }, + { + "value": 473, + "label": "沈北新区" + }, + { + "value": 474, + "label": "于洪区" + }, + { + "value": 475, + "label": "辽中县" + }, + { + "value": 476, + "label": "康平县" + }, + { + "value": 477, + "label": "法库县" + } + ] + }, + { + "value": 479, + "label": "大连市", + "children": [ + { + "value": 480, + "label": "中山区" + }, + { + "value": 481, + "label": "西岗区" + }, + { + "value": 482, + "label": "沙河口区" + }, + { + "value": 483, + "label": "甘井子区" + }, + { + "value": 484, + "label": "旅顺口区" + }, + { + "value": 485, + "label": "金州区" + }, + { + "value": 486, + "label": "长海县" + }, + { + "value": 487, + "label": "瓦房店市" + }, + { + "value": 488, + "label": "普兰店市" + }, + { + "value": 489, + "label": "庄河市" + } + ] + }, + { + "value": 490, + "label": "鞍山市", + "children": [ + { + "value": 497, + "label": "海城市" + }, + { + "value": 491, + "label": "铁东区" + }, + { + "value": 492, + "label": "铁西区" + }, + { + "value": 493, + "label": "立山区" + }, + { + "value": 494, + "label": "千山区" + }, + { + "value": 495, + "label": "台安县" + }, + { + "value": 496, + "label": "岫岩满族自治县" + } + ] + }, + { + "value": 498, + "label": "抚顺市", + "children": [ + { + "value": 499, + "label": "新抚区" + }, + { + "value": 500, + "label": "东洲区" + }, + { + "value": 501, + "label": "望花区" + }, + { + "value": 502, + "label": "顺城区" + }, + { + "value": 503, + "label": "抚顺县" + }, + { + "value": 504, + "label": "新宾满族自治县" + }, + { + "value": 505, + "label": "清原满族自治县" + } + ] + }, + { + "value": 506, + "label": "本溪市", + "children": [ + { + "value": 507, + "label": "平山区" + }, + { + "value": 508, + "label": "溪湖区" + }, + { + "value": 509, + "label": "明山区" + }, + { + "value": 510, + "label": "南芬区" + }, + { + "value": 511, + "label": "本溪满族自治县" + }, + { + "value": 512, + "label": "桓仁满族自治县" + } + ] + }, + { + "value": 513, + "label": "丹东市", + "children": [ + { + "value": 514, + "label": "元宝区" + }, + { + "value": 515, + "label": "振兴区" + }, + { + "value": 516, + "label": "振安区" + }, + { + "value": 517, + "label": "宽甸满族自治县" + }, + { + "value": 518, + "label": "东港市" + }, + { + "value": 519, + "label": "凤城市" + } + ] + }, + { + "value": 520, + "label": "锦州市", + "children": [ + { + "value": 521, + "label": "古塔区" + }, + { + "value": 522, + "label": "凌河区" + }, + { + "value": 523, + "label": "太和区" + }, + { + "value": 524, + "label": "黑山县" + }, + { + "value": 525, + "label": "义县" + }, + { + "value": 526, + "label": "凌海市" + }, + { + "value": 527, + "label": "北镇市" + } + ] + }, + { + "value": 528, + "label": "营口市", + "children": [ + { + "value": 529, + "label": "站前区" + }, + { + "value": 530, + "label": "西市区" + }, + { + "value": 531, + "label": "鲅鱼圈区" + }, + { + "value": 532, + "label": "老边区" + }, + { + "value": 533, + "label": "盖州市" + }, + { + "value": 534, + "label": "大石桥市" + } + ] + }, + { + "value": 535, + "label": "阜新市", + "children": [ + { + "value": 536, + "label": "海州区" + }, + { + "value": 537, + "label": "新邱区" + }, + { + "value": 538, + "label": "太平区" + }, + { + "value": 539, + "label": "清河门区" + }, + { + "value": 540, + "label": "细河区" + }, + { + "value": 541, + "label": "阜新蒙古族自治县" + }, + { + "value": 542, + "label": "彰武县" + } + ] + }, + { + "value": 543, + "label": "辽阳市", + "children": [ + { + "value": 544, + "label": "白塔区" + }, + { + "value": 545, + "label": "文圣区" + }, + { + "value": 546, + "label": "宏伟区" + }, + { + "value": 547, + "label": "弓长岭区" + }, + { + "value": 548, + "label": "太子河区" + }, + { + "value": 549, + "label": "辽阳县" + }, + { + "value": 550, + "label": "灯塔市" + } + ] + }, + { + "value": 551, + "label": "盘锦市", + "children": [ + { + "value": 552, + "label": "双台子区" + }, + { + "value": 553, + "label": "兴隆台区" + }, + { + "value": 554, + "label": "大洼县" + }, + { + "value": 555, + "label": "盘山县" + } + ] + }, + { + "value": 556, + "label": "铁岭市", + "children": [ + { + "value": 557, + "label": "银州区" + }, + { + "value": 558, + "label": "清河区" + }, + { + "value": 559, + "label": "铁岭县" + }, + { + "value": 560, + "label": "西丰县" + }, + { + "value": 561, + "label": "昌图县" + }, + { + "value": 562, + "label": "调兵山市" + }, + { + "value": 563, + "label": "开原市" + } + ] + }, + { + "value": 564, + "label": "朝阳市", + "children": [ + { + "value": 568, + "label": "建平县" + }, + { + "value": 569, + "label": "喀喇沁左翼蒙古族自治县" + }, + { + "value": 570, + "label": "北票市" + }, + { + "value": 571, + "label": "凌源市" + }, + { + "value": 565, + "label": "双塔区" + }, + { + "value": 566, + "label": "龙城区" + }, + { + "value": 567, + "label": "朝阳县" + } + ] + }, + { + "value": 572, + "label": "葫芦岛市", + "children": [ + { + "value": 573, + "label": "连山区" + }, + { + "value": 574, + "label": "龙港区" + }, + { + "value": 575, + "label": "南票区" + }, + { + "value": 576, + "label": "绥中县" + }, + { + "value": 577, + "label": "建昌县" + }, + { + "value": 578, + "label": "兴城市" + } + ] + } + ] + }, + { + "value": 579, + "label": "吉林省", + "children": [ + { + "value": 580, + "label": "长春市", + "children": [ + { + "value": 581, + "label": "南关区" + }, + { + "value": 582, + "label": "宽城区" + }, + { + "value": 583, + "label": "朝阳区" + }, + { + "value": 584, + "label": "二道区" + }, + { + "value": 585, + "label": "绿园区" + }, + { + "value": 586, + "label": "双阳区" + }, + { + "value": 587, + "label": "农安县" + }, + { + "value": 588, + "label": "九台市" + }, + { + "value": 589, + "label": "榆树市" + }, + { + "value": 590, + "label": "德惠市" + } + ] + }, + { + "value": 591, + "label": "吉林市", + "children": [ + { + "value": 592, + "label": "昌邑区" + }, + { + "value": 593, + "label": "龙潭区" + }, + { + "value": 594, + "label": "船营区" + }, + { + "value": 595, + "label": "丰满区" + }, + { + "value": 596, + "label": "永吉县" + }, + { + "value": 597, + "label": "蛟河市" + }, + { + "value": 598, + "label": "桦甸市" + }, + { + "value": 599, + "label": "舒兰市" + }, + { + "value": 600, + "label": "磐石市" + } + ] + }, + { + "value": 601, + "label": "四平市", + "children": [ + { + "value": 602, + "label": "铁西区" + }, + { + "value": 603, + "label": "铁东区" + }, + { + "value": 604, + "label": "梨树县" + }, + { + "value": 605, + "label": "伊通满族自治县" + }, + { + "value": 606, + "label": "公主岭市" + }, + { + "value": 607, + "label": "双辽市" + } + ] + }, + { + "value": 608, + "label": "辽源市", + "children": [ + { + "value": 609, + "label": "龙山区" + }, + { + "value": 610, + "label": "西安区" + }, + { + "value": 611, + "label": "东丰县" + }, + { + "value": 612, + "label": "东辽县" + } + ] + }, + { + "value": 613, + "label": "通化市", + "children": [ + { + "value": 614, + "label": "东昌区" + }, + { + "value": 615, + "label": "二道江区" + }, + { + "value": 616, + "label": "通化县" + }, + { + "value": 617, + "label": "辉南县" + }, + { + "value": 618, + "label": "柳河县" + }, + { + "value": 619, + "label": "梅河口市" + }, + { + "value": 620, + "label": "集安市" + } + ] + }, + { + "value": 621, + "label": "白山市", + "children": [ + { + "value": 622, + "label": "八道江区" + }, + { + "value": 623, + "label": "江源区" + }, + { + "value": 624, + "label": "抚松县" + }, + { + "value": 625, + "label": "靖宇县" + }, + { + "value": 626, + "label": "长白朝鲜族自治县" + }, + { + "value": 627, + "label": "临江市" + } + ] + }, + { + "value": 628, + "label": "松原市", + "children": [ + { + "value": 629, + "label": "宁江区" + }, + { + "value": 630, + "label": "前郭尔罗斯蒙古族自治县" + }, + { + "value": 631, + "label": "长岭县" + }, + { + "value": 632, + "label": "乾安县" + }, + { + "value": 633, + "label": "扶余县" + } + ] + }, + { + "value": 634, + "label": "白城市", + "children": [ + { + "value": 635, + "label": "洮北区" + }, + { + "value": 636, + "label": "镇赉县" + }, + { + "value": 637, + "label": "通榆县" + }, + { + "value": 638, + "label": "洮南市" + }, + { + "value": 639, + "label": "大安市" + } + ] + }, + { + "value": 640, + "label": "延边朝鲜族自治州", + "children": [ + { + "value": 641, + "label": "延吉市" + }, + { + "value": 642, + "label": "图们市" + }, + { + "value": 643, + "label": "敦化市" + }, + { + "value": 644, + "label": "珲春市" + }, + { + "value": 645, + "label": "龙井市" + }, + { + "value": 646, + "label": "和龙市" + }, + { + "value": 647, + "label": "汪清县" + }, + { + "value": 648, + "label": "安图县" + } + ] + } + ] + }, + { + "value": 649, + "label": "黑龙江省", + "children": [ + { + "value": 650, + "label": "哈尔滨市", + "children": [ + { + "value": 651, + "label": "道里区" + }, + { + "value": 652, + "label": "南岗区" + }, + { + "value": 653, + "label": "道外区" + }, + { + "value": 654, + "label": "平房区" + }, + { + "value": 655, + "label": "松北区" + }, + { + "value": 656, + "label": "香坊区" + }, + { + "value": 663, + "label": "木兰县" + }, + { + "value": 664, + "label": "通河县" + }, + { + "value": 665, + "label": "延寿县" + }, + { + "value": 666, + "label": "双城市" + }, + { + "value": 667, + "label": "尚志市" + }, + { + "value": 668, + "label": "五常市" + }, + { + "value": 657, + "label": "呼兰区" + }, + { + "value": 658, + "label": "阿城区" + }, + { + "value": 659, + "label": "依兰县" + }, + { + "value": 660, + "label": "方正县" + }, + { + "value": 661, + "label": "宾县" + }, + { + "value": 662, + "label": "巴彦县" + } + ] + }, + { + "value": 669, + "label": "齐齐哈尔市", + "children": [ + { + "value": 670, + "label": "龙沙区" + }, + { + "value": 671, + "label": "建华区" + }, + { + "value": 672, + "label": "铁锋区" + }, + { + "value": 673, + "label": "昂昂溪区" + }, + { + "value": 674, + "label": "富拉尔基区" + }, + { + "value": 675, + "label": "碾子山区" + }, + { + "value": 682, + "label": "克山县" + }, + { + "value": 683, + "label": "克东县" + }, + { + "value": 684, + "label": "拜泉县" + }, + { + "value": 685, + "label": "讷河市" + }, + { + "value": 676, + "label": "梅里斯达斡尔族区" + }, + { + "value": 677, + "label": "龙江县" + }, + { + "value": 678, + "label": "依安县" + }, + { + "value": 679, + "label": "泰来县" + }, + { + "value": 680, + "label": "甘南县" + }, + { + "value": 681, + "label": "富裕县" + } + ] + }, + { + "value": 686, + "label": "鸡西市", + "children": [ + { + "value": 687, + "label": "鸡冠区" + }, + { + "value": 688, + "label": "恒山区" + }, + { + "value": 689, + "label": "滴道区" + }, + { + "value": 690, + "label": "梨树区" + }, + { + "value": 691, + "label": "城子河区" + }, + { + "value": 692, + "label": "麻山区" + }, + { + "value": 693, + "label": "鸡东县" + }, + { + "value": 694, + "label": "虎林市" + }, + { + "value": 695, + "label": "密山市" + } + ] + }, + { + "value": 696, + "label": "鹤岗市", + "children": [ + { + "value": 697, + "label": "向阳区" + }, + { + "value": 698, + "label": "工农区" + }, + { + "value": 699, + "label": "南山区" + }, + { + "value": 700, + "label": "兴安区" + }, + { + "value": 701, + "label": "东山区" + }, + { + "value": 702, + "label": "兴山区" + }, + { + "value": 703, + "label": "萝北县" + }, + { + "value": 704, + "label": "绥滨县" + } + ] + }, + { + "value": 705, + "label": "双鸭山市", + "children": [ + { + "value": 706, + "label": "尖山区" + }, + { + "value": 707, + "label": "岭东区" + }, + { + "value": 708, + "label": "四方台区" + }, + { + "value": 709, + "label": "宝山区" + }, + { + "value": 710, + "label": "集贤县" + }, + { + "value": 711, + "label": "友谊县" + }, + { + "value": 712, + "label": "宝清县" + }, + { + "value": 713, + "label": "饶河县" + } + ] + }, + { + "value": 714, + "label": "大庆市", + "children": [ + { + "value": 715, + "label": "萨尔图区" + }, + { + "value": 716, + "label": "龙凤区" + }, + { + "value": 717, + "label": "让胡路区" + }, + { + "value": 718, + "label": "红岗区" + }, + { + "value": 719, + "label": "大同区" + }, + { + "value": 720, + "label": "肇州县" + }, + { + "value": 721, + "label": "肇源县" + }, + { + "value": 722, + "label": "林甸县" + }, + { + "value": 723, + "label": "杜尔伯特蒙古族自治县" + } + ] + }, + { + "value": 724, + "label": "伊春市", + "children": [ + { + "value": 741, + "label": "铁力市" + }, + { + "value": 735, + "label": "汤旺河区" + }, + { + "value": 736, + "label": "带岭区" + }, + { + "value": 737, + "label": "乌伊岭区" + }, + { + "value": 738, + "label": "红星区" + }, + { + "value": 739, + "label": "上甘岭区" + }, + { + "value": 740, + "label": "嘉荫县" + }, + { + "value": 729, + "label": "翠峦区" + }, + { + "value": 730, + "label": "新青区" + }, + { + "value": 731, + "label": "美溪区" + }, + { + "value": 732, + "label": "金山屯区" + }, + { + "value": 733, + "label": "五营区" + }, + { + "value": 734, + "label": "乌马河区" + }, + { + "value": 725, + "label": "伊春区" + }, + { + "value": 726, + "label": "南岔区" + }, + { + "value": 727, + "label": "友好区" + }, + { + "value": 728, + "label": "西林区" + } + ] + }, + { + "value": 742, + "label": "佳木斯市", + "children": [ + { + "value": 743, + "label": "向阳区" + }, + { + "value": 744, + "label": "前进区" + }, + { + "value": 745, + "label": "东风区" + }, + { + "value": 746, + "label": "郊区" + }, + { + "value": 747, + "label": "桦南县" + }, + { + "value": 748, + "label": "桦川县" + }, + { + "value": 749, + "label": "汤原县" + }, + { + "value": 750, + "label": "抚远县" + }, + { + "value": 751, + "label": "同江市" + }, + { + "value": 752, + "label": "富锦市" + } + ] + }, + { + "value": 753, + "label": "七台河市", + "children": [ + { + "value": 754, + "label": "新兴区" + }, + { + "value": 755, + "label": "桃山区" + }, + { + "value": 756, + "label": "茄子河区" + }, + { + "value": 757, + "label": "勃利县" + } + ] + }, + { + "value": 758, + "label": "牡丹江市", + "children": [ + { + "value": 759, + "label": "东安区" + }, + { + "value": 760, + "label": "阳明区" + }, + { + "value": 761, + "label": "爱民区" + }, + { + "value": 762, + "label": "西安区" + }, + { + "value": 763, + "label": "东宁县" + }, + { + "value": 764, + "label": "林口县" + }, + { + "value": 765, + "label": "绥芬河市" + }, + { + "value": 766, + "label": "海林市" + }, + { + "value": 767, + "label": "宁安市" + }, + { + "value": 768, + "label": "穆棱市" + } + ] + }, + { + "value": 769, + "label": "黑河市", + "children": [ + { + "value": 770, + "label": "爱辉区" + }, + { + "value": 771, + "label": "嫩江县" + }, + { + "value": 772, + "label": "逊克县" + }, + { + "value": 773, + "label": "孙吴县" + }, + { + "value": 774, + "label": "北安市" + }, + { + "value": 775, + "label": "五大连池市" + } + ] + }, + { + "value": 776, + "label": "绥化市", + "children": [ + { + "value": 777, + "label": "北林区" + }, + { + "value": 778, + "label": "望奎县" + }, + { + "value": 779, + "label": "兰西县" + }, + { + "value": 780, + "label": "青冈县" + }, + { + "value": 781, + "label": "庆安县" + }, + { + "value": 782, + "label": "明水县" + }, + { + "value": 783, + "label": "绥棱县" + }, + { + "value": 784, + "label": "安达市" + }, + { + "value": 785, + "label": "肇东市" + }, + { + "value": 786, + "label": "海伦市" + } + ] + }, + { + "value": 787, + "label": "大兴安岭地区", + "children": [ + { + "value": 788, + "label": "呼玛县" + }, + { + "value": 789, + "label": "塔河县" + }, + { + "value": 790, + "label": "漠河县" + } + ] + } + ] + }, + { + "value": 791, + "label": "上海市", + "children": [ + { + "value": 792, + "label": "黄浦区" + }, + { + "value": 793, + "label": "徐汇区" + }, + { + "value": 794, + "label": "长宁区" + }, + { + "value": 795, + "label": "静安区" + }, + { + "value": 796, + "label": "普陀区" + }, + { + "value": 797, + "label": "闸北区" + }, + { + "value": 798, + "label": "虹口区" + }, + { + "value": 799, + "label": "杨浦区" + }, + { + "value": 800, + "label": "闵行区" + }, + { + "value": 801, + "label": "宝山区" + }, + { + "value": 802, + "label": "嘉定区" + }, + { + "value": 803, + "label": "浦东新区" + }, + { + "value": 804, + "label": "金山区" + }, + { + "value": 805, + "label": "松江区" + }, + { + "value": 806, + "label": "青浦区" + }, + { + "value": 807, + "label": "奉贤区" + }, + { + "value": 808, + "label": "崇明县" + } + ] + }, + { + "value": 809, + "label": "江苏省", + "children": [ + { + "value": 810, + "label": "南京市", + "children": [ + { + "value": 811, + "label": "玄武区" + }, + { + "value": 812, + "label": "白下区" + }, + { + "value": 813, + "label": "秦淮区" + }, + { + "value": 814, + "label": "建邺区" + }, + { + "value": 815, + "label": "鼓楼区" + }, + { + "value": 816, + "label": "下关区" + }, + { + "value": 823, + "label": "高淳县" + }, + { + "value": 817, + "label": "浦口区" + }, + { + "value": 818, + "label": "栖霞区" + }, + { + "value": 819, + "label": "雨花台区" + }, + { + "value": 820, + "label": "江宁区" + }, + { + "value": 821, + "label": "六合区" + }, + { + "value": 822, + "label": "溧水县" + } + ] + }, + { + "value": 824, + "label": "无锡市", + "children": [ + { + "value": 825, + "label": "崇安区" + }, + { + "value": 826, + "label": "南长区" + }, + { + "value": 827, + "label": "北塘区" + }, + { + "value": 828, + "label": "锡山区" + }, + { + "value": 829, + "label": "惠山区" + }, + { + "value": 830, + "label": "滨湖区" + }, + { + "value": 831, + "label": "江阴市" + }, + { + "value": 832, + "label": "宜兴市" + } + ] + }, + { + "value": 833, + "label": "徐州市", + "children": [ + { + "value": 834, + "label": "鼓楼区" + }, + { + "value": 835, + "label": "云龙区" + }, + { + "value": 836, + "label": "贾汪区" + }, + { + "value": 837, + "label": "泉山区" + }, + { + "value": 838, + "label": "铜山区" + }, + { + "value": 839, + "label": "丰县" + }, + { + "value": 840, + "label": "沛县" + }, + { + "value": 841, + "label": "睢宁县" + }, + { + "value": 842, + "label": "新沂市" + }, + { + "value": 843, + "label": "邳州市" + } + ] + }, + { + "value": 844, + "label": "常州市", + "children": [ + { + "value": 845, + "label": "天宁区" + }, + { + "value": 846, + "label": "钟楼区" + }, + { + "value": 847, + "label": "戚墅堰区" + }, + { + "value": 848, + "label": "新北区" + }, + { + "value": 849, + "label": "武进区" + }, + { + "value": 850, + "label": "溧阳市" + }, + { + "value": 851, + "label": "金坛市" + } + ] + }, + { + "value": 852, + "label": "苏州市", + "children": [ + { + "value": 853, + "label": "沧浪区" + }, + { + "value": 854, + "label": "平江区" + }, + { + "value": 855, + "label": "金阊区" + }, + { + "value": 856, + "label": "虎丘区" + }, + { + "value": 857, + "label": "吴中区" + }, + { + "value": 858, + "label": "相城区" + }, + { + "value": 859, + "label": "常熟市" + }, + { + "value": 860, + "label": "张家港市" + }, + { + "value": 861, + "label": "昆山市" + }, + { + "value": 862, + "label": "吴江市" + }, + { + "value": 863, + "label": "太仓市" + } + ] + }, + { + "value": 864, + "label": "南通市", + "children": [ + { + "value": 865, + "label": "崇川区" + }, + { + "value": 866, + "label": "港闸区" + }, + { + "value": 867, + "label": "通州区" + }, + { + "value": 868, + "label": "海安县" + }, + { + "value": 869, + "label": "如东县" + }, + { + "value": 870, + "label": "启东市" + }, + { + "value": 871, + "label": "如皋市" + }, + { + "value": 872, + "label": "海门市" + } + ] + }, + { + "value": 873, + "label": "连云港市", + "children": [ + { + "value": 874, + "label": "连云区" + }, + { + "value": 875, + "label": "新浦区" + }, + { + "value": 876, + "label": "海州区" + }, + { + "value": 877, + "label": "赣榆县" + }, + { + "value": 878, + "label": "东海县" + }, + { + "value": 879, + "label": "灌云县" + }, + { + "value": 880, + "label": "灌南县" + } + ] + }, + { + "value": 881, + "label": "淮安市", + "children": [ + { + "value": 882, + "label": "清河区" + }, + { + "value": 883, + "label": "楚州区" + }, + { + "value": 884, + "label": "淮阴区" + }, + { + "value": 885, + "label": "清浦区" + }, + { + "value": 886, + "label": "涟水县" + }, + { + "value": 887, + "label": "洪泽县" + }, + { + "value": 888, + "label": "盱眙县" + }, + { + "value": 889, + "label": "金湖县" + } + ] + }, + { + "value": 890, + "label": "盐城市", + "children": [ + { + "value": 891, + "label": "亭湖区" + }, + { + "value": 892, + "label": "盐都区" + }, + { + "value": 893, + "label": "响水县" + }, + { + "value": 894, + "label": "滨海县" + }, + { + "value": 895, + "label": "阜宁县" + }, + { + "value": 896, + "label": "射阳县" + }, + { + "value": 897, + "label": "建湖县" + }, + { + "value": 898, + "label": "东台市" + }, + { + "value": 899, + "label": "大丰市" + } + ] + }, + { + "value": 900, + "label": "扬州市", + "children": [ + { + "value": 901, + "label": "广陵区" + }, + { + "value": 902, + "label": "邗江区" + }, + { + "value": 903, + "label": "江都区" + }, + { + "value": 904, + "label": "宝应县" + }, + { + "value": 905, + "label": "仪征市" + }, + { + "value": 906, + "label": "高邮市" + } + ] + }, + { + "value": 907, + "label": "镇江市", + "children": [ + { + "value": 908, + "label": "京口区" + }, + { + "value": 909, + "label": "润州区" + }, + { + "value": 910, + "label": "丹徒区" + }, + { + "value": 911, + "label": "丹阳市" + }, + { + "value": 912, + "label": "扬中市" + }, + { + "value": 913, + "label": "句容市" + } + ] + }, + { + "value": 914, + "label": "泰州市", + "children": [ + { + "value": 915, + "label": "海陵区" + }, + { + "value": 916, + "label": "高港区" + }, + { + "value": 917, + "label": "兴化市" + }, + { + "value": 918, + "label": "靖江市" + }, + { + "value": 919, + "label": "泰兴市" + }, + { + "value": 920, + "label": "姜堰市" + } + ] + }, + { + "value": 921, + "label": "宿迁市", + "children": [ + { + "value": 922, + "label": "宿城区" + }, + { + "value": 923, + "label": "宿豫区" + }, + { + "value": 924, + "label": "沭阳县" + }, + { + "value": 925, + "label": "泗阳县" + }, + { + "value": 926, + "label": "泗洪县" + } + ] + } + ] + }, + { + "value": 927, + "label": "浙江省", + "children": [ + { + "value": 928, + "label": "杭州市", + "children": [ + { + "value": 929, + "label": "上城区" + }, + { + "value": 930, + "label": "下城区" + }, + { + "value": 931, + "label": "江干区" + }, + { + "value": 932, + "label": "拱墅区" + }, + { + "value": 933, + "label": "西湖区" + }, + { + "value": 934, + "label": "滨江区" + }, + { + "value": 941, + "label": "临安市" + }, + { + "value": 935, + "label": "萧山区" + }, + { + "value": 936, + "label": "余杭区" + }, + { + "value": 937, + "label": "桐庐县" + }, + { + "value": 938, + "label": "淳安县" + }, + { + "value": 939, + "label": "建德市" + }, + { + "value": 940, + "label": "富阳市" + } + ] + }, + { + "value": 942, + "label": "宁波市", + "children": [ + { + "value": 943, + "label": "海曙区" + }, + { + "value": 944, + "label": "江东区" + }, + { + "value": 945, + "label": "江北区" + }, + { + "value": 946, + "label": "北仑区" + }, + { + "value": 947, + "label": "镇海区" + }, + { + "value": 948, + "label": "鄞州区" + }, + { + "value": 949, + "label": "象山县" + }, + { + "value": 950, + "label": "宁海县" + }, + { + "value": 951, + "label": "余姚市" + }, + { + "value": 952, + "label": "慈溪市" + }, + { + "value": 953, + "label": "奉化市" + } + ] + }, + { + "value": 954, + "label": "温州市", + "children": [ + { + "value": 955, + "label": "鹿城区" + }, + { + "value": 956, + "label": "龙湾区" + }, + { + "value": 957, + "label": "瓯海区" + }, + { + "value": 958, + "label": "洞头县" + }, + { + "value": 959, + "label": "永嘉县" + }, + { + "value": 960, + "label": "平阳县" + }, + { + "value": 961, + "label": "苍南县" + }, + { + "value": 962, + "label": "文成县" + }, + { + "value": 963, + "label": "泰顺县" + }, + { + "value": 964, + "label": "瑞安市" + }, + { + "value": 965, + "label": "乐清市" + } + ] + }, + { + "value": 966, + "label": "嘉兴市", + "children": [ + { + "value": 967, + "label": "南湖区" + }, + { + "value": 968, + "label": "秀洲区" + }, + { + "value": 969, + "label": "嘉善县" + }, + { + "value": 970, + "label": "海盐县" + }, + { + "value": 971, + "label": "海宁市" + }, + { + "value": 972, + "label": "平湖市" + }, + { + "value": 973, + "label": "桐乡市" + } + ] + }, + { + "value": 974, + "label": "湖州市", + "children": [ + { + "value": 977, + "label": "德清县" + }, + { + "value": 978, + "label": "长兴县" + }, + { + "value": 979, + "label": "安吉县" + }, + { + "value": 975, + "label": "吴兴区" + }, + { + "value": 976, + "label": "南浔区" + } + ] + }, + { + "value": 980, + "label": "绍兴市", + "children": [ + { + "value": 981, + "label": "越城区" + }, + { + "value": 982, + "label": "绍兴县" + }, + { + "value": 983, + "label": "新昌县" + }, + { + "value": 984, + "label": "诸暨市" + }, + { + "value": 985, + "label": "上虞市" + }, + { + "value": 986, + "label": "嵊州市" + } + ] + }, + { + "value": 987, + "label": "金华市", + "children": [ + { + "value": 988, + "label": "婺城区" + }, + { + "value": 989, + "label": "金东区" + }, + { + "value": 990, + "label": "武义县" + }, + { + "value": 991, + "label": "浦江县" + }, + { + "value": 992, + "label": "磐安县" + }, + { + "value": 993, + "label": "兰溪市" + }, + { + "value": 994, + "label": "义乌市" + }, + { + "value": 995, + "label": "东阳市" + }, + { + "value": 996, + "label": "永康市" + } + ] + }, + { + "value": 997, + "label": "衢州市", + "children": [ + { + "value": 998, + "label": "柯城区" + }, + { + "value": 999, + "label": "衢江区" + }, + { + "value": 1000, + "label": "常山县" + }, + { + "value": 1001, + "label": "开化县" + }, + { + "value": 1002, + "label": "龙游县" + }, + { + "value": 1003, + "label": "江山市" + } + ] + }, + { + "value": 1004, + "label": "舟山市", + "children": [ + { + "value": 1005, + "label": "定海区" + }, + { + "value": 1006, + "label": "普陀区" + }, + { + "value": 1007, + "label": "岱山县" + }, + { + "value": 1008, + "label": "嵊泗县" + } + ] + }, + { + "value": 1009, + "label": "台州市", + "children": [ + { + "value": 1013, + "label": "玉环县" + }, + { + "value": 1014, + "label": "三门县" + }, + { + "value": 1015, + "label": "天台县" + }, + { + "value": 1016, + "label": "仙居县" + }, + { + "value": 1017, + "label": "温岭市" + }, + { + "value": 1018, + "label": "临海市" + }, + { + "value": 1010, + "label": "椒江区" + }, + { + "value": 1011, + "label": "黄岩区" + }, + { + "value": 1012, + "label": "路桥区" + } + ] + }, + { + "value": 1019, + "label": "丽水市", + "children": [ + { + "value": 1020, + "label": "莲都区" + }, + { + "value": 1021, + "label": "青田县" + }, + { + "value": 1022, + "label": "缙云县" + }, + { + "value": 1023, + "label": "遂昌县" + }, + { + "value": 1024, + "label": "松阳县" + }, + { + "value": 1025, + "label": "云和县" + }, + { + "value": 1026, + "label": "庆元县" + }, + { + "value": 1027, + "label": "景宁畲族自治县" + }, + { + "value": 1028, + "label": "龙泉市" + } + ] + } + ] + }, + { + "value": 1029, + "label": "安徽省", + "children": [ + { + "value": 1030, + "label": "合肥市", + "children": [ + { + "value": 1034, + "label": "包河区" + }, + { + "value": 1035, + "label": "长丰县" + }, + { + "value": 1036, + "label": "肥东县" + }, + { + "value": 1037, + "label": "肥西县" + }, + { + "value": 1038, + "label": "庐江县" + }, + { + "value": 1039, + "label": "巢湖市" + }, + { + "value": 1031, + "label": "瑶海区" + }, + { + "value": 1032, + "label": "庐阳区" + }, + { + "value": 1033, + "label": "蜀山区" + } + ] + }, + { + "value": 1040, + "label": "芜湖市", + "children": [ + { + "value": 1041, + "label": "镜湖区" + }, + { + "value": 1042, + "label": "弋江区" + }, + { + "value": 1043, + "label": "鸠江区" + }, + { + "value": 1044, + "label": "三山区" + }, + { + "value": 1045, + "label": "芜湖县" + }, + { + "value": 1046, + "label": "繁昌县" + }, + { + "value": 1047, + "label": "南陵县" + }, + { + "value": 1048, + "label": "无为县" + } + ] + }, + { + "value": 1049, + "label": "蚌埠市", + "children": [ + { + "value": 1050, + "label": "龙子湖区" + }, + { + "value": 1051, + "label": "蚌山区" + }, + { + "value": 1052, + "label": "禹会区" + }, + { + "value": 1053, + "label": "淮上区" + }, + { + "value": 1054, + "label": "怀远县" + }, + { + "value": 1055, + "label": "五河县" + }, + { + "value": 1056, + "label": "固镇县" + } + ] + }, + { + "value": 1057, + "label": "淮南市", + "children": [ + { + "value": 1058, + "label": "大通区" + }, + { + "value": 1059, + "label": "田家庵区" + }, + { + "value": 1060, + "label": "谢家集区" + }, + { + "value": 1061, + "label": "八公山区" + }, + { + "value": 1062, + "label": "潘集区" + }, + { + "value": 1063, + "label": "凤台县" + } + ] + }, + { + "value": 1064, + "label": "马鞍山市", + "children": [ + { + "value": 1065, + "label": "金家庄区" + }, + { + "value": 1066, + "label": "花山区" + }, + { + "value": 1067, + "label": "雨山区" + }, + { + "value": 1068, + "label": "当涂县" + }, + { + "value": 1069, + "label": "含山县" + }, + { + "value": 1070, + "label": "和县" + } + ] + }, + { + "value": 1071, + "label": "淮北市", + "children": [ + { + "value": 1072, + "label": "杜集区" + }, + { + "value": 1073, + "label": "相山区" + }, + { + "value": 1074, + "label": "烈山区" + }, + { + "value": 1075, + "label": "濉溪县" + } + ] + }, + { + "value": 1076, + "label": "铜陵市", + "children": [ + { + "value": 1077, + "label": "铜官山区" + }, + { + "value": 1078, + "label": "狮子山区" + }, + { + "value": 1079, + "label": "郊区" + }, + { + "value": 1080, + "label": "铜陵县" + } + ] + }, + { + "value": 1081, + "label": "安庆市", + "children": [ + { + "value": 1082, + "label": "迎江区" + }, + { + "value": 1083, + "label": "大观区" + }, + { + "value": 1084, + "label": "宜秀区" + }, + { + "value": 1085, + "label": "怀宁县" + }, + { + "value": 1086, + "label": "枞阳县" + }, + { + "value": 1087, + "label": "潜山县" + }, + { + "value": 1088, + "label": "太湖县" + }, + { + "value": 1089, + "label": "宿松县" + }, + { + "value": 1090, + "label": "望江县" + }, + { + "value": 1091, + "label": "岳西县" + }, + { + "value": 1092, + "label": "桐城市" + } + ] + }, + { + "value": 1093, + "label": "黄山市", + "children": [ + { + "value": 1094, + "label": "屯溪区" + }, + { + "value": 1095, + "label": "黄山区" + }, + { + "value": 1096, + "label": "徽州区" + }, + { + "value": 1097, + "label": "歙县" + }, + { + "value": 1098, + "label": "休宁县" + }, + { + "value": 1099, + "label": "黟县" + }, + { + "value": 1100, + "label": "祁门县" + } + ] + }, + { + "value": 1101, + "label": "滁州市", + "children": [ + { + "value": 1108, + "label": "天长市" + }, + { + "value": 1109, + "label": "明光市" + }, + { + "value": 1102, + "label": "琅琊区" + }, + { + "value": 1103, + "label": "南谯区" + }, + { + "value": 1104, + "label": "来安县" + }, + { + "value": 1105, + "label": "全椒县" + }, + { + "value": 1106, + "label": "定远县" + }, + { + "value": 1107, + "label": "凤阳县" + } + ] + }, + { + "value": 1110, + "label": "阜阳市", + "children": [ + { + "value": 1117, + "label": "颍上县" + }, + { + "value": 1118, + "label": "界首市" + }, + { + "value": 1111, + "label": "颍州区" + }, + { + "value": 1112, + "label": "颍东区" + }, + { + "value": 1113, + "label": "颍泉区" + }, + { + "value": 1114, + "label": "临泉县" + }, + { + "value": 1115, + "label": "太和县" + }, + { + "value": 1116, + "label": "阜南县" + } + ] + }, + { + "value": 1119, + "label": "宿州市", + "children": [ + { + "value": 1120, + "label": "埇桥区" + }, + { + "value": 1121, + "label": "砀山县" + }, + { + "value": 1122, + "label": "萧县" + }, + { + "value": 1123, + "label": "灵璧县" + }, + { + "value": 1124, + "label": "泗县" + } + ] + }, + { + "value": 1125, + "label": "六安市", + "children": [ + { + "value": 1126, + "label": "金安区" + }, + { + "value": 1127, + "label": "裕安区" + }, + { + "value": 1128, + "label": "寿县" + }, + { + "value": 1129, + "label": "霍邱县" + }, + { + "value": 1130, + "label": "舒城县" + }, + { + "value": 1131, + "label": "金寨县" + }, + { + "value": 1132, + "label": "霍山县" + } + ] + }, + { + "value": 1133, + "label": "亳州市", + "children": [ + { + "value": 1134, + "label": "谯城区" + }, + { + "value": 1135, + "label": "涡阳县" + }, + { + "value": 1136, + "label": "蒙城县" + }, + { + "value": 1137, + "label": "利辛县" + } + ] + }, + { + "value": 1138, + "label": "池州市", + "children": [ + { + "value": 1139, + "label": "贵池区" + }, + { + "value": 1140, + "label": "东至县" + }, + { + "value": 1141, + "label": "石台县" + }, + { + "value": 1142, + "label": "青阳县" + } + ] + }, + { + "value": 1143, + "label": "宣城市", + "children": [ + { + "value": 1147, + "label": "泾县" + }, + { + "value": 1148, + "label": "绩溪县" + }, + { + "value": 1149, + "label": "旌德县" + }, + { + "value": 1150, + "label": "宁国市" + }, + { + "value": 1144, + "label": "宣州区" + }, + { + "value": 1145, + "label": "郎溪县" + }, + { + "value": 1146, + "label": "广德县" + } + ] + } + ] + }, + { + "value": 1151, + "label": "福建省", + "children": [ + { + "value": 1152, + "label": "福州市", + "children": [ + { + "value": 1153, + "label": "鼓楼区" + }, + { + "value": 1154, + "label": "台江区" + }, + { + "value": 1155, + "label": "仓山区" + }, + { + "value": 1156, + "label": "马尾区" + }, + { + "value": 1157, + "label": "晋安区" + }, + { + "value": 1158, + "label": "闽侯县" + }, + { + "value": 1165, + "label": "长乐市" + }, + { + "value": 1159, + "label": "连江县" + }, + { + "value": 1160, + "label": "罗源县" + }, + { + "value": 1161, + "label": "闽清县" + }, + { + "value": 1162, + "label": "永泰县" + }, + { + "value": 1163, + "label": "平潭县" + }, + { + "value": 1164, + "label": "福清市" + } + ] + }, + { + "value": 1166, + "label": "厦门市", + "children": [ + { + "value": 1167, + "label": "思明区" + }, + { + "value": 1168, + "label": "海沧区" + }, + { + "value": 1169, + "label": "湖里区" + }, + { + "value": 1170, + "label": "集美区" + }, + { + "value": 1171, + "label": "同安区" + }, + { + "value": 1172, + "label": "翔安区" + } + ] + }, + { + "value": 1173, + "label": "莆田市", + "children": [ + { + "value": 1174, + "label": "城厢区" + }, + { + "value": 1175, + "label": "涵江区" + }, + { + "value": 1176, + "label": "荔城区" + }, + { + "value": 1177, + "label": "秀屿区" + }, + { + "value": 1178, + "label": "仙游县" + } + ] + }, + { + "value": 1179, + "label": "三明市", + "children": [ + { + "value": 1180, + "label": "梅列区" + }, + { + "value": 1181, + "label": "三元区" + }, + { + "value": 1182, + "label": "明溪县" + }, + { + "value": 1183, + "label": "清流县" + }, + { + "value": 1184, + "label": "宁化县" + }, + { + "value": 1185, + "label": "大田县" + }, + { + "value": 1186, + "label": "尤溪县" + }, + { + "value": 1187, + "label": "沙县" + }, + { + "value": 1188, + "label": "将乐县" + }, + { + "value": 1189, + "label": "泰宁县" + }, + { + "value": 1190, + "label": "建宁县" + }, + { + "value": 1191, + "label": "永安市" + } + ] + }, + { + "value": 1192, + "label": "泉州市", + "children": [ + { + "value": 1201, + "label": "金门县" + }, + { + "value": 1202, + "label": "石狮市" + }, + { + "value": 1203, + "label": "晋江市" + }, + { + "value": 1204, + "label": "南安市" + }, + { + "value": 1195, + "label": "洛江区" + }, + { + "value": 1196, + "label": "泉港区" + }, + { + "value": 1197, + "label": "惠安县" + }, + { + "value": 1198, + "label": "安溪县" + }, + { + "value": 1199, + "label": "永春县" + }, + { + "value": 1200, + "label": "德化县" + }, + { + "value": 1193, + "label": "鲤城区" + }, + { + "value": 1194, + "label": "丰泽区" + } + ] + }, + { + "value": 1205, + "label": "漳州市", + "children": [ + { + "value": 1211, + "label": "长泰县" + }, + { + "value": 1212, + "label": "东山县" + }, + { + "value": 1213, + "label": "南靖县" + }, + { + "value": 1214, + "label": "平和县" + }, + { + "value": 1215, + "label": "华安县" + }, + { + "value": 1216, + "label": "龙海市" + }, + { + "value": 1206, + "label": "芗城区" + }, + { + "value": 1207, + "label": "龙文区" + }, + { + "value": 1208, + "label": "云霄县" + }, + { + "value": 1209, + "label": "漳浦县" + }, + { + "value": 1210, + "label": "诏安县" + } + ] + }, + { + "value": 1217, + "label": "南平市", + "children": [ + { + "value": 1218, + "label": "延平区" + }, + { + "value": 1219, + "label": "顺昌县" + }, + { + "value": 1220, + "label": "浦城县" + }, + { + "value": 1221, + "label": "光泽县" + }, + { + "value": 1222, + "label": "松溪县" + }, + { + "value": 1223, + "label": "政和县" + }, + { + "value": 1224, + "label": "邵武市" + }, + { + "value": 1225, + "label": "武夷山市" + }, + { + "value": 1226, + "label": "建瓯市" + }, + { + "value": 1227, + "label": "建阳市" + } + ] + }, + { + "value": 1228, + "label": "龙岩市", + "children": [ + { + "value": 1229, + "label": "新罗区" + }, + { + "value": 1230, + "label": "长汀县" + }, + { + "value": 1231, + "label": "永定县" + }, + { + "value": 1232, + "label": "上杭县" + }, + { + "value": 1233, + "label": "武平县" + }, + { + "value": 1234, + "label": "连城县" + }, + { + "value": 1235, + "label": "漳平市" + } + ] + }, + { + "value": 1236, + "label": "宁德市", + "children": [ + { + "value": 1243, + "label": "柘荣县" + }, + { + "value": 1244, + "label": "福安市" + }, + { + "value": 1245, + "label": "福鼎市" + }, + { + "value": 1237, + "label": "蕉城区" + }, + { + "value": 1238, + "label": "霞浦县" + }, + { + "value": 1239, + "label": "古田县" + }, + { + "value": 1240, + "label": "屏南县" + }, + { + "value": 1241, + "label": "寿宁县" + }, + { + "value": 1242, + "label": "周宁县" + } + ] + } + ] + }, + { + "value": 1246, + "label": "江西省", + "children": [ + { + "value": 1247, + "label": "南昌市", + "children": [ + { + "value": 1248, + "label": "东湖区" + }, + { + "value": 1249, + "label": "西湖区" + }, + { + "value": 1250, + "label": "青云谱区" + }, + { + "value": 1251, + "label": "湾里区" + }, + { + "value": 1252, + "label": "青山湖区" + }, + { + "value": 1253, + "label": "南昌县" + }, + { + "value": 1254, + "label": "新建县" + }, + { + "value": 1255, + "label": "安义县" + }, + { + "value": 1256, + "label": "进贤县" + } + ] + }, + { + "value": 1257, + "label": "景德镇市", + "children": [ + { + "value": 1258, + "label": "昌江区" + }, + { + "value": 1259, + "label": "珠山区" + }, + { + "value": 1260, + "label": "浮梁县" + }, + { + "value": 1261, + "label": "乐平市" + } + ] + }, + { + "value": 1262, + "label": "萍乡市", + "children": [ + { + "value": 1263, + "label": "安源区" + }, + { + "value": 1264, + "label": "湘东区" + }, + { + "value": 1265, + "label": "莲花县" + }, + { + "value": 1266, + "label": "上栗县" + }, + { + "value": 1267, + "label": "芦溪县" + } + ] + }, + { + "value": 1268, + "label": "九江市", + "children": [ + { + "value": 1269, + "label": "庐山区" + }, + { + "value": 1270, + "label": "浔阳区" + }, + { + "value": 1271, + "label": "九江县" + }, + { + "value": 1272, + "label": "武宁县" + }, + { + "value": 1273, + "label": "修水县" + }, + { + "value": 1274, + "label": "永修县" + }, + { + "value": 1281, + "label": "共青城市" + }, + { + "value": 1275, + "label": "德安县" + }, + { + "value": 1276, + "label": "星子县" + }, + { + "value": 1277, + "label": "都昌县" + }, + { + "value": 1278, + "label": "湖口县" + }, + { + "value": 1279, + "label": "彭泽县" + }, + { + "value": 1280, + "label": "瑞昌市" + } + ] + }, + { + "value": 1282, + "label": "新余市", + "children": [ + { + "value": 1283, + "label": "渝水区" + }, + { + "value": 1284, + "label": "分宜县" + } + ] + }, + { + "value": 1285, + "label": "鹰潭市", + "children": [ + { + "value": 1286, + "label": "月湖区" + }, + { + "value": 1287, + "label": "余江县" + }, + { + "value": 1288, + "label": "贵溪市" + } + ] + }, + { + "value": 1289, + "label": "赣州市", + "children": [ + { + "value": 1290, + "label": "章贡区" + }, + { + "value": 1291, + "label": "赣县" + }, + { + "value": 1292, + "label": "信丰县" + }, + { + "value": 1293, + "label": "大余县" + }, + { + "value": 1294, + "label": "上犹县" + }, + { + "value": 1295, + "label": "崇义县" + }, + { + "value": 1302, + "label": "兴国县" + }, + { + "value": 1303, + "label": "会昌县" + }, + { + "value": 1304, + "label": "寻乌县" + }, + { + "value": 1305, + "label": "石城县" + }, + { + "value": 1306, + "label": "瑞金市" + }, + { + "value": 1307, + "label": "南康市" + }, + { + "value": 1296, + "label": "安远县" + }, + { + "value": 1297, + "label": "龙南县" + }, + { + "value": 1298, + "label": "定南县" + }, + { + "value": 1299, + "label": "全南县" + }, + { + "value": 1300, + "label": "宁都县" + }, + { + "value": 1301, + "label": "于都县" + } + ] + }, + { + "value": 1308, + "label": "吉安市", + "children": [ + { + "value": 1309, + "label": "吉州区" + }, + { + "value": 1310, + "label": "青原区" + }, + { + "value": 1311, + "label": "吉安县" + }, + { + "value": 1312, + "label": "吉水县" + }, + { + "value": 1313, + "label": "峡江县" + }, + { + "value": 1314, + "label": "新干县" + }, + { + "value": 1321, + "label": "井冈山市" + }, + { + "value": 1315, + "label": "永丰县" + }, + { + "value": 1316, + "label": "泰和县" + }, + { + "value": 1317, + "label": "遂川县" + }, + { + "value": 1318, + "label": "万安县" + }, + { + "value": 1319, + "label": "安福县" + }, + { + "value": 1320, + "label": "永新县" + } + ] + }, + { + "value": 1322, + "label": "宜春市", + "children": [ + { + "value": 1323, + "label": "袁州区" + }, + { + "value": 1324, + "label": "奉新县" + }, + { + "value": 1325, + "label": "万载县" + }, + { + "value": 1326, + "label": "上高县" + }, + { + "value": 1327, + "label": "宜丰县" + }, + { + "value": 1328, + "label": "靖安县" + }, + { + "value": 1329, + "label": "铜鼓县" + }, + { + "value": 1330, + "label": "丰城市" + }, + { + "value": 1331, + "label": "樟树市" + }, + { + "value": 1332, + "label": "高安市" + } + ] + }, + { + "value": 1333, + "label": "抚州市", + "children": [ + { + "value": 1334, + "label": "临川区" + }, + { + "value": 1335, + "label": "南城县" + }, + { + "value": 1336, + "label": "黎川县" + }, + { + "value": 1337, + "label": "南丰县" + }, + { + "value": 1338, + "label": "崇仁县" + }, + { + "value": 1339, + "label": "乐安县" + }, + { + "value": 1340, + "label": "宜黄县" + }, + { + "value": 1341, + "label": "金溪县" + }, + { + "value": 1342, + "label": "资溪县" + }, + { + "value": 1343, + "label": "东乡县" + }, + { + "value": 1344, + "label": "广昌县" + } + ] + }, + { + "value": 1345, + "label": "上饶市", + "children": [ + { + "value": 1346, + "label": "信州区" + }, + { + "value": 1347, + "label": "上饶县" + }, + { + "value": 1348, + "label": "广丰县" + }, + { + "value": 1349, + "label": "玉山县" + }, + { + "value": 1350, + "label": "铅山县" + }, + { + "value": 1351, + "label": "横峰县" + }, + { + "value": 1352, + "label": "弋阳县" + }, + { + "value": 1353, + "label": "余干县" + }, + { + "value": 1354, + "label": "鄱阳县" + }, + { + "value": 1355, + "label": "万年县" + }, + { + "value": 1356, + "label": "婺源县" + }, + { + "value": 1357, + "label": "德兴市" + } + ] + } + ] + }, + { + "value": 1358, + "label": "山东省", + "children": [ + { + "value": 1359, + "label": "济南市", + "children": [ + { + "value": 1360, + "label": "历下区" + }, + { + "value": 1361, + "label": "市中区" + }, + { + "value": 1362, + "label": "槐荫区" + }, + { + "value": 1363, + "label": "天桥区" + }, + { + "value": 1364, + "label": "历城区" + }, + { + "value": 1365, + "label": "长清区" + }, + { + "value": 1366, + "label": "平阴县" + }, + { + "value": 1367, + "label": "济阳县" + }, + { + "value": 1368, + "label": "商河县" + }, + { + "value": 1369, + "label": "章丘市" + } + ] + }, + { + "value": 1370, + "label": "青岛市", + "children": [ + { + "value": 1371, + "label": "市南区" + }, + { + "value": 1372, + "label": "市北区" + }, + { + "value": 1373, + "label": "四方区" + }, + { + "value": 1374, + "label": "黄岛区" + }, + { + "value": 1375, + "label": "崂山区" + }, + { + "value": 1376, + "label": "李沧区" + }, + { + "value": 1377, + "label": "城阳区" + }, + { + "value": 1378, + "label": "胶州市" + }, + { + "value": 1379, + "label": "即墨市" + }, + { + "value": 1380, + "label": "平度市" + }, + { + "value": 1381, + "label": "胶南市" + }, + { + "value": 1382, + "label": "莱西市" + } + ] + }, + { + "value": 1383, + "label": "淄博市", + "children": [ + { + "value": 1384, + "label": "淄川区" + }, + { + "value": 1385, + "label": "张店区" + }, + { + "value": 1386, + "label": "博山区" + }, + { + "value": 1387, + "label": "临淄区" + }, + { + "value": 1388, + "label": "周村区" + }, + { + "value": 1389, + "label": "桓台县" + }, + { + "value": 1390, + "label": "高青县" + }, + { + "value": 1391, + "label": "沂源县" + } + ] + }, + { + "value": 1392, + "label": "枣庄市", + "children": [ + { + "value": 1393, + "label": "市中区" + }, + { + "value": 1394, + "label": "薛城区" + }, + { + "value": 1395, + "label": "峄城区" + }, + { + "value": 1396, + "label": "台儿庄区" + }, + { + "value": 1397, + "label": "山亭区" + }, + { + "value": 1398, + "label": "滕州市" + } + ] + }, + { + "value": 1399, + "label": "东营市", + "children": [ + { + "value": 1400, + "label": "东营区" + }, + { + "value": 1401, + "label": "河口区" + }, + { + "value": 1402, + "label": "垦利县" + }, + { + "value": 1403, + "label": "利津县" + }, + { + "value": 1404, + "label": "广饶县" + } + ] + }, + { + "value": 1405, + "label": "烟台市", + "children": [ + { + "value": 1406, + "label": "芝罘区" + }, + { + "value": 1407, + "label": "福山区" + }, + { + "value": 1408, + "label": "牟平区" + }, + { + "value": 1409, + "label": "莱山区" + }, + { + "value": 1410, + "label": "长岛县" + }, + { + "value": 1411, + "label": "龙口市" + }, + { + "value": 1412, + "label": "莱阳市" + }, + { + "value": 1413, + "label": "莱州市" + }, + { + "value": 1414, + "label": "蓬莱市" + }, + { + "value": 1415, + "label": "招远市" + }, + { + "value": 1416, + "label": "栖霞市" + }, + { + "value": 1417, + "label": "海阳市" + } + ] + }, + { + "value": 1418, + "label": "潍坊市", + "children": [ + { + "value": 1419, + "label": "潍城区" + }, + { + "value": 1420, + "label": "寒亭区" + }, + { + "value": 1421, + "label": "坊子区" + }, + { + "value": 1422, + "label": "奎文区" + }, + { + "value": 1423, + "label": "临朐县" + }, + { + "value": 1424, + "label": "昌乐县" + }, + { + "value": 1425, + "label": "青州市" + }, + { + "value": 1426, + "label": "诸城市" + }, + { + "value": 1427, + "label": "寿光市" + }, + { + "value": 1428, + "label": "安丘市" + }, + { + "value": 1429, + "label": "高密市" + }, + { + "value": 1430, + "label": "昌邑市" + } + ] + }, + { + "value": 1431, + "label": "济宁市", + "children": [ + { + "value": 1432, + "label": "市中区" + }, + { + "value": 1433, + "label": "任城区" + }, + { + "value": 1434, + "label": "微山县" + }, + { + "value": 1435, + "label": "鱼台县" + }, + { + "value": 1436, + "label": "金乡县" + }, + { + "value": 1437, + "label": "嘉祥县" + }, + { + "value": 1438, + "label": "汶上县" + }, + { + "value": 1439, + "label": "泗水县" + }, + { + "value": 1440, + "label": "梁山县" + }, + { + "value": 1441, + "label": "曲阜市" + }, + { + "value": 1442, + "label": "兖州市" + }, + { + "value": 1443, + "label": "邹城市" + } + ] + }, + { + "value": 1444, + "label": "泰安市", + "children": [ + { + "value": 1445, + "label": "泰山区" + }, + { + "value": 1446, + "label": "岱岳区" + }, + { + "value": 1447, + "label": "宁阳县" + }, + { + "value": 1448, + "label": "东平县" + }, + { + "value": 1449, + "label": "新泰市" + }, + { + "value": 1450, + "label": "肥城市" + } + ] + }, + { + "value": 1451, + "label": "威海市", + "children": [ + { + "value": 1452, + "label": "环翠区" + }, + { + "value": 1453, + "label": "文登市" + }, + { + "value": 1454, + "label": "荣成市" + }, + { + "value": 1455, + "label": "乳山市" + } + ] + }, + { + "value": 1456, + "label": "日照市", + "children": [ + { + "value": 1457, + "label": "东港区" + }, + { + "value": 1458, + "label": "岚山区" + }, + { + "value": 1459, + "label": "五莲县" + }, + { + "value": 1460, + "label": "莒县" + } + ] + }, + { + "value": 1461, + "label": "莱芜市", + "children": [ + { + "value": 1462, + "label": "莱城区" + }, + { + "value": 1463, + "label": "钢城区" + } + ] + }, + { + "value": 1464, + "label": "临沂市", + "children": [ + { + "value": 1465, + "label": "兰山区" + }, + { + "value": 1466, + "label": "罗庄区" + }, + { + "value": 1467, + "label": "河东区" + }, + { + "value": 1468, + "label": "沂南县" + }, + { + "value": 1469, + "label": "郯城县" + }, + { + "value": 1470, + "label": "沂水县" + }, + { + "value": 1471, + "label": "苍山县" + }, + { + "value": 1472, + "label": "费县" + }, + { + "value": 1473, + "label": "平邑县" + }, + { + "value": 1474, + "label": "莒南县" + }, + { + "value": 1475, + "label": "蒙阴县" + }, + { + "value": 1476, + "label": "临沭县" + } + ] + }, + { + "value": 1477, + "label": "德州市", + "children": [ + { + "value": 1478, + "label": "德城区" + }, + { + "value": 1479, + "label": "陵县" + }, + { + "value": 1480, + "label": "宁津县" + }, + { + "value": 1481, + "label": "庆云县" + }, + { + "value": 1482, + "label": "临邑县" + }, + { + "value": 1483, + "label": "齐河县" + }, + { + "value": 1484, + "label": "平原县" + }, + { + "value": 1485, + "label": "夏津县" + }, + { + "value": 1486, + "label": "武城县" + }, + { + "value": 1487, + "label": "乐陵市" + }, + { + "value": 1488, + "label": "禹城市" + } + ] + }, + { + "value": 1489, + "label": "聊城市", + "children": [ + { + "value": 1490, + "label": "东昌府区" + }, + { + "value": 1491, + "label": "阳谷县" + }, + { + "value": 1492, + "label": "莘县" + }, + { + "value": 1493, + "label": "茌平县" + }, + { + "value": 1494, + "label": "东阿县" + }, + { + "value": 1495, + "label": "冠县" + }, + { + "value": 1496, + "label": "高唐县" + }, + { + "value": 1497, + "label": "临清市" + } + ] + }, + { + "value": 1498, + "label": "滨州市", + "children": [ + { + "value": 1499, + "label": "滨城区" + }, + { + "value": 1500, + "label": "惠民县" + }, + { + "value": 1501, + "label": "阳信县" + }, + { + "value": 1502, + "label": "无棣县" + }, + { + "value": 1503, + "label": "沾化县" + }, + { + "value": 1504, + "label": "博兴县" + }, + { + "value": 1505, + "label": "邹平县" + } + ] + }, + { + "value": 1506, + "label": "菏泽市", + "children": [ + { + "value": 1507, + "label": "牡丹区" + }, + { + "value": 1508, + "label": "曹县" + }, + { + "value": 1509, + "label": "单县" + }, + { + "value": 1510, + "label": "成武县" + }, + { + "value": 1511, + "label": "巨野县" + }, + { + "value": 1512, + "label": "郓城县" + }, + { + "value": 1513, + "label": "鄄城县" + }, + { + "value": 1514, + "label": "定陶县" + }, + { + "value": 1515, + "label": "东明县" + } + ] + } + ] + }, + { + "value": 1516, + "label": "河南省", + "children": [ + { + "value": 1517, + "label": "郑州市", + "children": [ + { + "value": 1518, + "label": "中原区" + }, + { + "value": 1519, + "label": "二七区" + }, + { + "value": 1520, + "label": "管城回族区" + }, + { + "value": 1521, + "label": "金水区" + }, + { + "value": 1522, + "label": "上街区" + }, + { + "value": 1523, + "label": "惠济区" + }, + { + "value": 1524, + "label": "中牟县" + }, + { + "value": 1525, + "label": "巩义市" + }, + { + "value": 1526, + "label": "荥阳市" + }, + { + "value": 1527, + "label": "新密市" + }, + { + "value": 1528, + "label": "新郑市" + }, + { + "value": 1529, + "label": "登封市" + } + ] + }, + { + "value": 1530, + "label": "开封市", + "children": [ + { + "value": 1538, + "label": "尉氏县" + }, + { + "value": 1539, + "label": "开封县" + }, + { + "value": 1540, + "label": "兰考县" + }, + { + "value": 1532, + "label": "顺河回族区" + }, + { + "value": 1533, + "label": "鼓楼区" + }, + { + "value": 1534, + "label": "禹王台区" + }, + { + "value": 1535, + "label": "金明区" + }, + { + "value": 1536, + "label": "杞县" + }, + { + "value": 1537, + "label": "通许县" + }, + { + "value": 1531, + "label": "龙亭区" + } + ] + }, + { + "value": 1541, + "label": "洛阳市", + "children": [ + { + "value": 1542, + "label": "老城区" + }, + { + "value": 1543, + "label": "西工区" + }, + { + "value": 1544, + "label": "瀍河回族区" + }, + { + "value": 1545, + "label": "涧西区" + }, + { + "value": 1546, + "label": "吉利区" + }, + { + "value": 1547, + "label": "洛龙区" + }, + { + "value": 1554, + "label": "洛宁县" + }, + { + "value": 1555, + "label": "伊川县" + }, + { + "value": 1556, + "label": "偃师市" + }, + { + "value": 1548, + "label": "孟津县" + }, + { + "value": 1549, + "label": "新安县" + }, + { + "value": 1550, + "label": "栾川县" + }, + { + "value": 1551, + "label": "嵩县" + }, + { + "value": 1552, + "label": "汝阳县" + }, + { + "value": 1553, + "label": "宜阳县" + } + ] + }, + { + "value": 1557, + "label": "平顶山市", + "children": [ + { + "value": 1558, + "label": "新华区" + }, + { + "value": 1559, + "label": "卫东区" + }, + { + "value": 1560, + "label": "石龙区" + }, + { + "value": 1561, + "label": "湛河区" + }, + { + "value": 1562, + "label": "宝丰县" + }, + { + "value": 1563, + "label": "叶县" + }, + { + "value": 1564, + "label": "鲁山县" + }, + { + "value": 1565, + "label": "郏县" + }, + { + "value": 1566, + "label": "舞钢市" + }, + { + "value": 1567, + "label": "汝州市" + } + ] + }, + { + "value": 1568, + "label": "安阳市", + "children": [ + { + "value": 1572, + "label": "龙安区" + }, + { + "value": 1573, + "label": "安阳县" + }, + { + "value": 1574, + "label": "汤阴县" + }, + { + "value": 1575, + "label": "滑县" + }, + { + "value": 1576, + "label": "内黄县" + }, + { + "value": 1577, + "label": "林州市" + }, + { + "value": 1569, + "label": "文峰区" + }, + { + "value": 1570, + "label": "北关区" + }, + { + "value": 1571, + "label": "殷都区" + } + ] + }, + { + "value": 1578, + "label": "鹤壁市", + "children": [ + { + "value": 1579, + "label": "鹤山区" + }, + { + "value": 1580, + "label": "山城区" + }, + { + "value": 1581, + "label": "淇滨区" + }, + { + "value": 1582, + "label": "浚县" + }, + { + "value": 1583, + "label": "淇县" + } + ] + }, + { + "value": 1584, + "label": "新乡市", + "children": [ + { + "value": 1585, + "label": "红旗区" + }, + { + "value": 1586, + "label": "卫滨区" + }, + { + "value": 1587, + "label": "凤泉区" + }, + { + "value": 1588, + "label": "牧野区" + }, + { + "value": 1589, + "label": "新乡县" + }, + { + "value": 1590, + "label": "获嘉县" + }, + { + "value": 1591, + "label": "原阳县" + }, + { + "value": 1592, + "label": "延津县" + }, + { + "value": 1593, + "label": "封丘县" + }, + { + "value": 1594, + "label": "长垣县" + }, + { + "value": 1595, + "label": "卫辉市" + }, + { + "value": 1596, + "label": "辉县市" + } + ] + }, + { + "value": 1597, + "label": "焦作市", + "children": [ + { + "value": 1598, + "label": "解放区" + }, + { + "value": 1599, + "label": "中站区" + }, + { + "value": 1600, + "label": "马村区" + }, + { + "value": 1601, + "label": "山阳区" + }, + { + "value": 1602, + "label": "修武县" + }, + { + "value": 1603, + "label": "博爱县" + }, + { + "value": 1604, + "label": "武陟县" + }, + { + "value": 1605, + "label": "温县" + }, + { + "value": 1606, + "label": "沁阳市" + }, + { + "value": 1607, + "label": "孟州市" + } + ] + }, + { + "value": 1608, + "label": "濮阳市", + "children": [ + { + "value": 1609, + "label": "华龙区" + }, + { + "value": 1610, + "label": "清丰县" + }, + { + "value": 1611, + "label": "南乐县" + }, + { + "value": 1612, + "label": "范县" + }, + { + "value": 1613, + "label": "台前县" + }, + { + "value": 1614, + "label": "濮阳县" + } + ] + }, + { + "value": 1615, + "label": "许昌市", + "children": [ + { + "value": 1616, + "label": "魏都区" + }, + { + "value": 1617, + "label": "许昌县" + }, + { + "value": 1618, + "label": "鄢陵县" + }, + { + "value": 1619, + "label": "襄城县" + }, + { + "value": 1620, + "label": "禹州市" + }, + { + "value": 1621, + "label": "长葛市" + } + ] + }, + { + "value": 1622, + "label": "漯河市", + "children": [ + { + "value": 1623, + "label": "源汇区" + }, + { + "value": 1624, + "label": "郾城区" + }, + { + "value": 1625, + "label": "召陵区" + }, + { + "value": 1626, + "label": "舞阳县" + }, + { + "value": 1627, + "label": "临颍县" + } + ] + }, + { + "value": 1628, + "label": "三门峡市", + "children": [ + { + "value": 1629, + "label": "湖滨区" + }, + { + "value": 1630, + "label": "渑池县" + }, + { + "value": 1631, + "label": "陕县" + }, + { + "value": 1632, + "label": "卢氏县" + }, + { + "value": 1633, + "label": "义马市" + }, + { + "value": 1634, + "label": "灵宝市" + } + ] + }, + { + "value": 1635, + "label": "南阳市", + "children": [ + { + "value": 1636, + "label": "宛城区" + }, + { + "value": 1637, + "label": "卧龙区" + }, + { + "value": 1638, + "label": "南召县" + }, + { + "value": 1639, + "label": "方城县" + }, + { + "value": 1640, + "label": "西峡县" + }, + { + "value": 1641, + "label": "镇平县" + }, + { + "value": 1648, + "label": "邓州市" + }, + { + "value": 1642, + "label": "内乡县" + }, + { + "value": 1643, + "label": "淅川县" + }, + { + "value": 1644, + "label": "社旗县" + }, + { + "value": 1645, + "label": "唐河县" + }, + { + "value": 1646, + "label": "新野县" + }, + { + "value": 1647, + "label": "桐柏县" + } + ] + }, + { + "value": 1649, + "label": "商丘市", + "children": [ + { + "value": 1650, + "label": "梁园区" + }, + { + "value": 1651, + "label": "睢阳区" + }, + { + "value": 1652, + "label": "民权县" + }, + { + "value": 1653, + "label": "睢县" + }, + { + "value": 1654, + "label": "宁陵县" + }, + { + "value": 1655, + "label": "柘城县" + }, + { + "value": 1656, + "label": "虞城县" + }, + { + "value": 1657, + "label": "夏邑县" + }, + { + "value": 1658, + "label": "永城市" + } + ] + }, + { + "value": 1659, + "label": "信阳市", + "children": [ + { + "value": 1660, + "label": "浉河区" + }, + { + "value": 1661, + "label": "平桥区" + }, + { + "value": 1662, + "label": "罗山县" + }, + { + "value": 1663, + "label": "光山县" + }, + { + "value": 1664, + "label": "新县" + }, + { + "value": 1665, + "label": "商城县" + }, + { + "value": 1666, + "label": "固始县" + }, + { + "value": 1667, + "label": "潢川县" + }, + { + "value": 1668, + "label": "淮滨县" + }, + { + "value": 1669, + "label": "息县" + } + ] + }, + { + "value": 1670, + "label": "周口市", + "children": [ + { + "value": 1671, + "label": "川汇区" + }, + { + "value": 1672, + "label": "扶沟县" + }, + { + "value": 1673, + "label": "西华县" + }, + { + "value": 1674, + "label": "商水县" + }, + { + "value": 1675, + "label": "沈丘县" + }, + { + "value": 1676, + "label": "郸城县" + }, + { + "value": 1677, + "label": "淮阳县" + }, + { + "value": 1678, + "label": "太康县" + }, + { + "value": 1679, + "label": "鹿邑县" + }, + { + "value": 1680, + "label": "项城市" + } + ] + }, + { + "value": 1681, + "label": "驻马店市", + "children": [ + { + "value": 1682, + "label": "驿城区" + }, + { + "value": 1683, + "label": "西平县" + }, + { + "value": 1684, + "label": "上蔡县" + }, + { + "value": 1685, + "label": "平舆县" + }, + { + "value": 1686, + "label": "正阳县" + }, + { + "value": 1687, + "label": "确山县" + }, + { + "value": 1688, + "label": "泌阳县" + }, + { + "value": 1689, + "label": "汝南县" + }, + { + "value": 1690, + "label": "遂平县" + }, + { + "value": 1691, + "label": "新蔡县" + } + ] + }, + { + "value": 1692, + "label": "济源市", + "children": [ + ] + } + ] + }, + { + "value": 1693, + "label": "湖北省", + "children": [ + { + "value": 1694, + "label": "武汉市", + "children": [ + { + "value": 1695, + "label": "江岸区" + }, + { + "value": 1696, + "label": "江汉区" + }, + { + "value": 1697, + "label": "硚口区" + }, + { + "value": 1698, + "label": "汉阳区" + }, + { + "value": 1699, + "label": "武昌区" + }, + { + "value": 1700, + "label": "青山区" + }, + { + "value": 1707, + "label": "新洲区" + }, + { + "value": 1701, + "label": "洪山区" + }, + { + "value": 1702, + "label": "东西湖区" + }, + { + "value": 1703, + "label": "汉南区" + }, + { + "value": 1704, + "label": "蔡甸区" + }, + { + "value": 1705, + "label": "江夏区" + }, + { + "value": 1706, + "label": "黄陂区" + } + ] + }, + { + "value": 1708, + "label": "黄石市", + "children": [ + { + "value": 1709, + "label": "黄石港区" + }, + { + "value": 1710, + "label": "西塞山区" + }, + { + "value": 1711, + "label": "下陆区" + }, + { + "value": 1712, + "label": "铁山区" + }, + { + "value": 1713, + "label": "阳新县" + }, + { + "value": 1714, + "label": "大冶市" + } + ] + }, + { + "value": 1715, + "label": "十堰市", + "children": [ + { + "value": 1716, + "label": "茅箭区" + }, + { + "value": 1717, + "label": "张湾区" + }, + { + "value": 1718, + "label": "郧县" + }, + { + "value": 1719, + "label": "郧西县" + }, + { + "value": 1720, + "label": "竹山县" + }, + { + "value": 1721, + "label": "竹溪县" + }, + { + "value": 1722, + "label": "房县" + }, + { + "value": 1723, + "label": "丹江口市" + } + ] + }, + { + "value": 1724, + "label": "宜昌市", + "children": [ + { + "value": 1725, + "label": "西陵区" + }, + { + "value": 1726, + "label": "伍家岗区" + }, + { + "value": 1727, + "label": "点军区" + }, + { + "value": 1728, + "label": "猇亭区" + }, + { + "value": 1729, + "label": "夷陵区" + }, + { + "value": 1730, + "label": "远安县" + }, + { + "value": 1737, + "label": "枝江市" + }, + { + "value": 1731, + "label": "兴山县" + }, + { + "value": 1732, + "label": "秭归县" + }, + { + "value": 1733, + "label": "长阳土家族自治县" + }, + { + "value": 1734, + "label": "五峰土家族自治县" + }, + { + "value": 1735, + "label": "宜都市" + }, + { + "value": 1736, + "label": "当阳市" + } + ] + }, + { + "value": 1738, + "label": "襄阳市", + "children": [ + { + "value": 1739, + "label": "襄城区" + }, + { + "value": 1740, + "label": "樊城区" + }, + { + "value": 1741, + "label": "襄州区" + }, + { + "value": 1742, + "label": "南漳县" + }, + { + "value": 1743, + "label": "谷城县" + }, + { + "value": 1744, + "label": "保康县" + }, + { + "value": 1745, + "label": "老河口市" + }, + { + "value": 1746, + "label": "枣阳市" + }, + { + "value": 1747, + "label": "宜城市" + } + ] + }, + { + "value": 1748, + "label": "鄂州市", + "children": [ + { + "value": 1749, + "label": "梁子湖区" + }, + { + "value": 1750, + "label": "华容区" + }, + { + "value": 1751, + "label": "鄂城区" + } + ] + }, + { + "value": 1752, + "label": "荆门市", + "children": [ + { + "value": 1753, + "label": "东宝区" + }, + { + "value": 1754, + "label": "掇刀区" + }, + { + "value": 1755, + "label": "京山县" + }, + { + "value": 1756, + "label": "沙洋县" + }, + { + "value": 1757, + "label": "钟祥市" + } + ] + }, + { + "value": 1758, + "label": "孝感市", + "children": [ + { + "value": 1759, + "label": "孝南区" + }, + { + "value": 1760, + "label": "孝昌县" + }, + { + "value": 1761, + "label": "大悟县" + }, + { + "value": 1762, + "label": "云梦县" + }, + { + "value": 1763, + "label": "应城市" + }, + { + "value": 1764, + "label": "安陆市" + }, + { + "value": 1765, + "label": "汉川市" + } + ] + }, + { + "value": 1766, + "label": "荆州市", + "children": [ + { + "value": 1767, + "label": "沙市区" + }, + { + "value": 1768, + "label": "荆州区" + }, + { + "value": 1769, + "label": "公安县" + }, + { + "value": 1770, + "label": "监利县" + }, + { + "value": 1771, + "label": "江陵县" + }, + { + "value": 1772, + "label": "石首市" + }, + { + "value": 1773, + "label": "洪湖市" + }, + { + "value": 1774, + "label": "松滋市" + } + ] + }, + { + "value": 1775, + "label": "黄冈市", + "children": [ + { + "value": 1776, + "label": "黄州区" + }, + { + "value": 1777, + "label": "团风县" + }, + { + "value": 1778, + "label": "红安县" + }, + { + "value": 1779, + "label": "罗田县" + }, + { + "value": 1780, + "label": "英山县" + }, + { + "value": 1781, + "label": "浠水县" + }, + { + "value": 1782, + "label": "蕲春县" + }, + { + "value": 1783, + "label": "黄梅县" + }, + { + "value": 1784, + "label": "麻城市" + }, + { + "value": 1785, + "label": "武穴市" + } + ] + }, + { + "value": 1786, + "label": "咸宁市", + "children": [ + { + "value": 1787, + "label": "咸安区" + }, + { + "value": 1788, + "label": "嘉鱼县" + }, + { + "value": 1789, + "label": "通城县" + }, + { + "value": 1790, + "label": "崇阳县" + }, + { + "value": 1791, + "label": "通山县" + }, + { + "value": 1792, + "label": "赤壁市" + } + ] + }, + { + "value": 1793, + "label": "随州市", + "children": [ + { + "value": 1794, + "label": "曾都区" + }, + { + "value": 1795, + "label": "随县" + }, + { + "value": 1796, + "label": "广水市" + } + ] + }, + { + "value": 1797, + "label": "恩施土家族苗族自治州", + "children": [ + { + "value": 1800, + "label": "建始县" + }, + { + "value": 1801, + "label": "巴东县" + }, + { + "value": 1802, + "label": "宣恩县" + }, + { + "value": 1803, + "label": "咸丰县" + }, + { + "value": 1804, + "label": "来凤县" + }, + { + "value": 1805, + "label": "鹤峰县" + }, + { + "value": 1798, + "label": "恩施市" + }, + { + "value": 1799, + "label": "利川市" + } + ] + }, + { + "value": 1806, + "label": "仙桃市" + }, + { + "value": 1807, + "label": "潜江市" + }, + { + "value": 1808, + "label": "天门市" + }, + { + "value": 1809, + "label": "神农架林区" + } + ] + }, + { + "value": 1810, + "label": "湖南省", + "children": [ + { + "value": 1811, + "label": "长沙市", + "children": [ + { + "value": 1817, + "label": "望城区" + }, + { + "value": 1818, + "label": "长沙县" + }, + { + "value": 1819, + "label": "宁乡县" + }, + { + "value": 1820, + "label": "浏阳市" + }, + { + "value": 1812, + "label": "芙蓉区" + }, + { + "value": 1813, + "label": "天心区" + }, + { + "value": 1814, + "label": "岳麓区" + }, + { + "value": 1815, + "label": "开福区" + }, + { + "value": 1816, + "label": "雨花区" + } + ] + }, + { + "value": 1821, + "label": "株洲市", + "children": [ + { + "value": 1822, + "label": "荷塘区" + }, + { + "value": 1823, + "label": "芦淞区" + }, + { + "value": 1824, + "label": "石峰区" + }, + { + "value": 1825, + "label": "天元区" + }, + { + "value": 1826, + "label": "株洲县" + }, + { + "value": 1827, + "label": "攸县" + }, + { + "value": 1828, + "label": "茶陵县" + }, + { + "value": 1829, + "label": "炎陵县" + }, + { + "value": 1830, + "label": "醴陵市" + } + ] + }, + { + "value": 1831, + "label": "湘潭市", + "children": [ + { + "value": 1832, + "label": "雨湖区" + }, + { + "value": 1833, + "label": "岳塘区" + }, + { + "value": 1834, + "label": "湘潭县" + }, + { + "value": 1835, + "label": "湘乡市" + }, + { + "value": 1836, + "label": "韶山市" + }, + { + "value": 1837, + "label": "衡阳市" + }, + { + "value": 1844, + "label": "衡南县" + }, + { + "value": 1845, + "label": "衡山县" + }, + { + "value": 1846, + "label": "衡东县" + }, + { + "value": 1847, + "label": "祁东县" + }, + { + "value": 1848, + "label": "耒阳市" + }, + { + "value": 1849, + "label": "常宁市" + }, + { + "value": 1838, + "label": "珠晖区" + }, + { + "value": 1839, + "label": "雁峰区" + }, + { + "value": 1840, + "label": "石鼓区" + }, + { + "value": 1841, + "label": "蒸湘区" + }, + { + "value": 1842, + "label": "南岳区" + }, + { + "value": 1843, + "label": "衡阳县" + } + ] + }, + { + "value": 1850, + "label": "邵阳市", + "children": [ + { + "value": 1851, + "label": "双清区" + }, + { + "value": 1852, + "label": "大祥区" + }, + { + "value": 1853, + "label": "北塔区" + }, + { + "value": 1854, + "label": "邵东县" + }, + { + "value": 1855, + "label": "新邵县" + }, + { + "value": 1856, + "label": "邵阳县" + }, + { + "value": 1857, + "label": "隆回县" + }, + { + "value": 1858, + "label": "洞口县" + }, + { + "value": 1859, + "label": "绥宁县" + }, + { + "value": 1860, + "label": "新宁县" + }, + { + "value": 1861, + "label": "城步苗族自治县" + }, + { + "value": 1862, + "label": "武冈市" + } + ] + }, + { + "value": 1863, + "label": "岳阳市", + "children": [ + { + "value": 1864, + "label": "岳阳楼区" + }, + { + "value": 1865, + "label": "云溪区" + }, + { + "value": 1866, + "label": "君山区" + }, + { + "value": 1867, + "label": "岳阳县" + }, + { + "value": 1868, + "label": "华容县" + }, + { + "value": 1869, + "label": "湘阴县" + }, + { + "value": 1870, + "label": "平江县" + }, + { + "value": 1871, + "label": "汨罗市" + }, + { + "value": 1872, + "label": "临湘市" + } + ] + }, + { + "value": 1873, + "label": "常德市", + "children": [ + { + "value": 1877, + "label": "汉寿县" + }, + { + "value": 1878, + "label": "澧县" + }, + { + "value": 1879, + "label": "临澧县" + }, + { + "value": 1880, + "label": "桃源县" + }, + { + "value": 1881, + "label": "石门县" + }, + { + "value": 1882, + "label": "津市市" + }, + { + "value": 1874, + "label": "武陵区" + }, + { + "value": 1875, + "label": "鼎城区" + }, + { + "value": 1876, + "label": "安乡县" + } + ] + }, + { + "value": 1883, + "label": "张家界市", + "children": [ + { + "value": 1884, + "label": "永定区" + }, + { + "value": 1885, + "label": "武陵源区" + }, + { + "value": 1886, + "label": "慈利县" + }, + { + "value": 1887, + "label": "桑植县" + } + ] + }, + { + "value": 1888, + "label": "益阳市", + "children": [ + { + "value": 1889, + "label": "资阳区" + }, + { + "value": 1890, + "label": "赫山区" + }, + { + "value": 1891, + "label": "南县" + }, + { + "value": 1892, + "label": "桃江县" + }, + { + "value": 1893, + "label": "安化县" + }, + { + "value": 1894, + "label": "沅江市" + } + ] + }, + { + "value": 1895, + "label": "郴州市", + "children": [ + { + "value": 1905, + "label": "安仁县" + }, + { + "value": 1906, + "label": "资兴市" + }, + { + "value": 1899, + "label": "宜章县" + }, + { + "value": 1900, + "label": "永兴县" + }, + { + "value": 1901, + "label": "嘉禾县" + }, + { + "value": 1902, + "label": "临武县" + }, + { + "value": 1903, + "label": "汝城县" + }, + { + "value": 1904, + "label": "桂东县" + }, + { + "value": 1896, + "label": "北湖区" + }, + { + "value": 1897, + "label": "苏仙区" + }, + { + "value": 1898, + "label": "桂阳县" + } + ] + }, + { + "value": 1907, + "label": "永州市", + "children": [ + { + "value": 1908, + "label": "零陵区" + }, + { + "value": 1909, + "label": "冷水滩区" + }, + { + "value": 1910, + "label": "祁阳县" + }, + { + "value": 1911, + "label": "东安县" + }, + { + "value": 1912, + "label": "双牌县" + }, + { + "value": 1913, + "label": "道县" + }, + { + "value": 1914, + "label": "江永县" + }, + { + "value": 1915, + "label": "宁远县" + }, + { + "value": 1916, + "label": "蓝山县" + }, + { + "value": 1917, + "label": "新田县" + }, + { + "value": 1918, + "label": "江华瑶族自治县" + } + ] + }, + { + "value": 1919, + "label": "怀化市", + "children": [ + { + "value": 1920, + "label": "鹤城区" + }, + { + "value": 1921, + "label": "中方县" + }, + { + "value": 1922, + "label": "沅陵县" + }, + { + "value": 1923, + "label": "辰溪县" + }, + { + "value": 1924, + "label": "溆浦县" + }, + { + "value": 1925, + "label": "会同县" + }, + { + "value": 1926, + "label": "麻阳苗族自治县" + }, + { + "value": 1927, + "label": "新晃侗族自治县" + }, + { + "value": 1928, + "label": "芷江侗族自治县" + }, + { + "value": 1929, + "label": "靖州苗族侗族自治县" + }, + { + "value": 1930, + "label": "通道侗族自治县" + }, + { + "value": 1931, + "label": "洪江市" + } + ] + }, + { + "value": 1932, + "label": "娄底市", + "children": [ + { + "value": 1933, + "label": "娄星区" + }, + { + "value": 1934, + "label": "双峰县" + }, + { + "value": 1935, + "label": "新化县" + }, + { + "value": 1936, + "label": "冷水江市" + }, + { + "value": 1937, + "label": "涟源市" + } + ] + }, + { + "value": 1938, + "label": "湘西土家族苗族自治州", + "children": [ + { + "value": 1939, + "label": "吉首市" + }, + { + "value": 1940, + "label": "泸溪县" + }, + { + "value": 1941, + "label": "凤凰县" + }, + { + "value": 1942, + "label": "花垣县" + }, + { + "value": 1943, + "label": "保靖县" + }, + { + "value": 1944, + "label": "古丈县" + }, + { + "value": 1945, + "label": "永顺县" + }, + { + "value": 1946, + "label": "龙山县" + } + ] + } + ] + }, + { + "value": 1947, + "label": "广东省", + "children": [ + { + "value": 1948, + "label": "广州市", + "children": [ + { + "value": 1949, + "label": "荔湾区" + }, + { + "value": 1950, + "label": "越秀区" + }, + { + "value": 1951, + "label": "海珠区" + }, + { + "value": 1952, + "label": "天河区" + }, + { + "value": 1953, + "label": "白云区" + }, + { + "value": 1954, + "label": "黄埔区" + }, + { + "value": 1955, + "label": "番禺区" + }, + { + "value": 1956, + "label": "花都区" + }, + { + "value": 1957, + "label": "南沙区" + }, + { + "value": 1958, + "label": "萝岗区" + }, + { + "value": 1959, + "label": "增城市" + }, + { + "value": 1960, + "label": "从化市" + } + ] + }, + { + "value": 1961, + "label": "韶关市", + "children": [ + { + "value": 1962, + "label": "武江区" + }, + { + "value": 1963, + "label": "浈江区" + }, + { + "value": 1964, + "label": "曲江区" + }, + { + "value": 1965, + "label": "始兴县" + }, + { + "value": 1966, + "label": "仁化县" + }, + { + "value": 1967, + "label": "翁源县" + }, + { + "value": 1968, + "label": "乳源瑶族自治县" + }, + { + "value": 1969, + "label": "新丰县" + }, + { + "value": 1970, + "label": "乐昌市" + }, + { + "value": 1971, + "label": "南雄市" + } + ] + }, + { + "value": 1972, + "label": "深圳市", + "children": [ + { + "value": 1973, + "label": "罗湖区" + }, + { + "value": 1974, + "label": "福田区" + }, + { + "value": 1975, + "label": "南山区" + }, + { + "value": 1976, + "label": "宝安区" + }, + { + "value": 1977, + "label": "龙岗区" + }, + { + "value": 1978, + "label": "盐田区" + } + ] + }, + { + "value": 1979, + "label": "珠海市", + "children": [ + { + "value": 1980, + "label": "香洲区" + }, + { + "value": 1981, + "label": "斗门区" + }, + { + "value": 1982, + "label": "金湾区" + } + ] + }, + { + "value": 1983, + "label": "汕头市", + "children": [ + { + "value": 1984, + "label": "龙湖区" + }, + { + "value": 1985, + "label": "金平区" + }, + { + "value": 1986, + "label": "濠江区" + }, + { + "value": 1987, + "label": "潮阳区" + }, + { + "value": 1988, + "label": "潮南区" + }, + { + "value": 1989, + "label": "澄海区" + }, + { + "value": 1990, + "label": "南澳县" + } + ] + }, + { + "value": 1991, + "label": "佛山市", + "children": [ + { + "value": 1992, + "label": "禅城区" + }, + { + "value": 1993, + "label": "南海区" + }, + { + "value": 1994, + "label": "顺德区" + }, + { + "value": 1995, + "label": "三水区" + }, + { + "value": 1996, + "label": "高明区" + } + ] + }, + { + "value": 1997, + "label": "江门市", + "children": [ + { + "value": 2000, + "label": "新会区" + }, + { + "value": 2001, + "label": "台山市" + }, + { + "value": 2002, + "label": "开平市" + }, + { + "value": 2003, + "label": "鹤山市" + }, + { + "value": 2004, + "label": "恩平市" + }, + { + "value": 1998, + "label": "蓬江区" + }, + { + "value": 1999, + "label": "江海区" + } + ] + }, + { + "value": 2005, + "label": "湛江市", + "children": [ + { + "value": 2012, + "label": "廉江市" + }, + { + "value": 2013, + "label": "雷州市" + }, + { + "value": 2014, + "label": "吴川市" + }, + { + "value": 2006, + "label": "赤坎区" + }, + { + "value": 2007, + "label": "霞山区" + }, + { + "value": 2008, + "label": "坡头区" + }, + { + "value": 2009, + "label": "麻章区" + }, + { + "value": 2010, + "label": "遂溪县" + }, + { + "value": 2011, + "label": "徐闻县" + } + ] + }, + { + "value": 2015, + "label": "茂名市", + "children": [ + { + "value": 2016, + "label": "茂南区" + }, + { + "value": 2017, + "label": "茂港区" + }, + { + "value": 2018, + "label": "电白县" + }, + { + "value": 2019, + "label": "高州市" + }, + { + "value": 2020, + "label": "化州市" + }, + { + "value": 2021, + "label": "信宜市" + } + ] + }, + { + "value": 2022, + "label": "肇庆市", + "children": [ + { + "value": 2023, + "label": "端州区" + }, + { + "value": 2024, + "label": "鼎湖区" + }, + { + "value": 2025, + "label": "广宁县" + }, + { + "value": 2026, + "label": "怀集县" + }, + { + "value": 2027, + "label": "封开县" + }, + { + "value": 2028, + "label": "德庆县" + }, + { + "value": 2029, + "label": "高要市" + }, + { + "value": 2030, + "label": "四会市" + } + ] + }, + { + "value": 2031, + "label": "惠州市", + "children": [ + { + "value": 2032, + "label": "惠城区" + }, + { + "value": 2033, + "label": "惠阳区" + }, + { + "value": 2034, + "label": "博罗县" + }, + { + "value": 2035, + "label": "惠东县" + }, + { + "value": 2036, + "label": "龙门县" + } + ] + }, + { + "value": 2037, + "label": "梅州市", + "children": [ + { + "value": 2038, + "label": "梅江区" + }, + { + "value": 2039, + "label": "梅县" + }, + { + "value": 2040, + "label": "大埔县" + }, + { + "value": 2041, + "label": "丰顺县" + }, + { + "value": 2042, + "label": "五华县" + }, + { + "value": 2043, + "label": "平远县" + }, + { + "value": 2044, + "label": "蕉岭县" + }, + { + "value": 2045, + "label": "兴宁市" + } + ] + }, + { + "value": 2046, + "label": "汕尾市", + "children": [ + { + "value": 2047, + "label": "城区" + }, + { + "value": 2048, + "label": "海丰县" + }, + { + "value": 2049, + "label": "陆河县" + }, + { + "value": 2050, + "label": "陆丰市" + } + ] + }, + { + "value": 2051, + "label": "河源市", + "children": [ + { + "value": 2052, + "label": "源城区" + }, + { + "value": 2053, + "label": "紫金县" + }, + { + "value": 2054, + "label": "龙川县" + }, + { + "value": 2055, + "label": "连平县" + }, + { + "value": 2056, + "label": "和平县" + }, + { + "value": 2057, + "label": "东源县" + } + ] + }, + { + "value": 2058, + "label": "阳江市", + "children": [ + { + "value": 2059, + "label": "江城区" + }, + { + "value": 2060, + "label": "阳西县" + }, + { + "value": 2061, + "label": "阳东县" + }, + { + "value": 2062, + "label": "阳春市" + }, + { + "value": 2064, + "label": "清城区" + }, + { + "value": 2065, + "label": "佛冈县" + }, + { + "value": 2066, + "label": "阳山县" + }, + { + "value": 2067, + "label": "连山壮族瑶族自治县" + }, + { + "value": 2068, + "label": "连南瑶族自治县" + }, + { + "value": 2069, + "label": "清新县" + }, + { + "value": 2070, + "label": "英德市" + }, + { + "value": 2071, + "label": "连州市" + } + ] + }, + { + "value": 2063, + "label": "清远市" + }, + { + "value": 2072, + "label": "东莞市" + }, + { + "value": 2073, + "label": "中山市" + }, + { + "value": 2074, + "label": "潮州市", + "children": [ + { + "value": 2075, + "label": "湘桥区" + }, + { + "value": 2076, + "label": "潮安县" + }, + { + "value": 2077, + "label": "饶平县" + } + ] + }, + { + "value": 2078, + "label": "揭阳市", + "children": [ + { + "value": 2079, + "label": "榕城区" + }, + { + "value": 2080, + "label": "揭东县" + }, + { + "value": 2081, + "label": "揭西县" + }, + { + "value": 2082, + "label": "惠来县" + }, + { + "value": 2083, + "label": "普宁市" + } + ] + }, + { + "value": 2084, + "label": "云浮市", + "children": [ + { + "value": 2085, + "label": "云城区" + }, + { + "value": 2086, + "label": "新兴县" + }, + { + "value": 2087, + "label": "郁南县" + }, + { + "value": 2088, + "label": "云安县" + }, + { + "value": 2089, + "label": "罗定市" + } + ] + } + ] + }, + { + "value": 2090, + "label": "广西壮族自治区", + "children": [ + { + "value": 2091, + "label": "南宁市", + "children": [ + { + "value": 2092, + "label": "兴宁区" + }, + { + "value": 2093, + "label": "青秀区" + }, + { + "value": 2094, + "label": "江南区" + }, + { + "value": 2095, + "label": "西乡塘区" + }, + { + "value": 2096, + "label": "良庆区" + }, + { + "value": 2097, + "label": "邕宁区" + }, + { + "value": 2098, + "label": "武鸣县" + }, + { + "value": 2099, + "label": "隆安县" + }, + { + "value": 2100, + "label": "马山县" + }, + { + "value": 2101, + "label": "上林县" + }, + { + "value": 2102, + "label": "宾阳县" + }, + { + "value": 2103, + "label": "横县" + } + ] + }, + { + "value": 2104, + "label": "柳州市", + "children": [ + { + "value": 2105, + "label": "城中区" + }, + { + "value": 2106, + "label": "鱼峰区" + }, + { + "value": 2107, + "label": "柳南区" + }, + { + "value": 2108, + "label": "柳北区" + }, + { + "value": 2109, + "label": "柳江县" + }, + { + "value": 2110, + "label": "柳城县" + }, + { + "value": 2111, + "label": "鹿寨县" + }, + { + "value": 2112, + "label": "融安县" + }, + { + "value": 2113, + "label": "融水苗族自治县" + }, + { + "value": 2114, + "label": "三江侗族自治县" + } + ] + }, + { + "value": 2115, + "label": "桂林市", + "children": [ + { + "value": 2116, + "label": "秀峰区" + }, + { + "value": 2117, + "label": "叠彩区" + }, + { + "value": 2118, + "label": "象山区" + }, + { + "value": 2119, + "label": "七星区" + }, + { + "value": 2120, + "label": "雁山区" + }, + { + "value": 2121, + "label": "阳朔县" + }, + { + "value": 2128, + "label": "龙胜各族自治县" + }, + { + "value": 2129, + "label": "资源县" + }, + { + "value": 2130, + "label": "平乐县" + }, + { + "value": 2131, + "label": "荔蒲县" + }, + { + "value": 2132, + "label": "恭城瑶族自治县" + }, + { + "value": 2122, + "label": "临桂县" + }, + { + "value": 2123, + "label": "灵川县" + }, + { + "value": 2124, + "label": "全州县" + }, + { + "value": 2125, + "label": "兴安县" + }, + { + "value": 2126, + "label": "永福县" + }, + { + "value": 2127, + "label": "灌阳县" + } + ] + }, + { + "value": 2133, + "label": "梧州市", + "children": [ + { + "value": 2134, + "label": "万秀区" + }, + { + "value": 2135, + "label": "蝶山区" + }, + { + "value": 2136, + "label": "长洲区" + }, + { + "value": 2137, + "label": "苍梧县" + }, + { + "value": 2138, + "label": "藤县" + }, + { + "value": 2139, + "label": "蒙山县" + }, + { + "value": 2140, + "label": "岑溪市" + } + ] + }, + { + "value": 2141, + "label": "北海市", + "children": [ + { + "value": 2142, + "label": "海城区" + }, + { + "value": 2143, + "label": "银海区" + }, + { + "value": 2144, + "label": "铁山港区" + }, + { + "value": 2145, + "label": "合浦县" + } + ] + }, + { + "value": 2146, + "label": "防城港市", + "children": [ + { + "value": 2147, + "label": "港口区" + }, + { + "value": 2148, + "label": "防城区" + }, + { + "value": 2149, + "label": "上思县" + }, + { + "value": 2150, + "label": "东兴市" + } + ] + }, + { + "value": 2151, + "label": "钦州市", + "children": [ + { + "value": 2152, + "label": "钦南区" + }, + { + "value": 2153, + "label": "钦北区" + }, + { + "value": 2154, + "label": "灵山县" + }, + { + "value": 2155, + "label": "浦北县" + } + ] + }, + { + "value": 2156, + "label": "贵港市", + "children": [ + { + "value": 2157, + "label": "港北区" + }, + { + "value": 2158, + "label": "港南区" + }, + { + "value": 2159, + "label": "覃塘区" + }, + { + "value": 2160, + "label": "平南县" + }, + { + "value": 2161, + "label": "桂平市" + } + ] + }, + { + "value": 2162, + "label": "玉林市", + "children": [ + { + "value": 2163, + "label": "玉州区" + }, + { + "value": 2164, + "label": "容县" + }, + { + "value": 2165, + "label": "陆川县" + }, + { + "value": 2166, + "label": "博白县" + }, + { + "value": 2167, + "label": "兴业县" + }, + { + "value": 2168, + "label": "北流市" + } + ] + }, + { + "value": 2169, + "label": "百色市", + "children": [ + { + "value": 2170, + "label": "右江区" + }, + { + "value": 2171, + "label": "田阳县" + }, + { + "value": 2172, + "label": "田东县" + }, + { + "value": 2173, + "label": "平果县" + }, + { + "value": 2174, + "label": "德保县" + }, + { + "value": 2175, + "label": "靖西县" + }, + { + "value": 2176, + "label": "那坡县" + }, + { + "value": 2177, + "label": "凌云县" + }, + { + "value": 2178, + "label": "乐业县" + }, + { + "value": 2179, + "label": "田林县" + }, + { + "value": 2180, + "label": "西林县" + }, + { + "value": 2181, + "label": "隆林各族自治县" + } + ] + }, + { + "value": 2182, + "label": "贺州市", + "children": [ + { + "value": 2183, + "label": "八步区" + }, + { + "value": 2184, + "label": "昭平县" + }, + { + "value": 2185, + "label": "钟山县" + }, + { + "value": 2186, + "label": "富川瑶族自治县" + } + ] + }, + { + "value": 2187, + "label": "河池市", + "children": [ + { + "value": 2188, + "label": "金城江区" + }, + { + "value": 2189, + "label": "南丹县" + }, + { + "value": 2190, + "label": "天峨县" + }, + { + "value": 2191, + "label": "凤山县" + }, + { + "value": 2192, + "label": "东兰县" + }, + { + "value": 2193, + "label": "罗城仫佬族自治县" + }, + { + "value": 2194, + "label": "环江毛南族自治县" + }, + { + "value": 2195, + "label": "巴马瑶族自治县" + }, + { + "value": 2196, + "label": "都安瑶族自治县" + }, + { + "value": 2197, + "label": "大化瑶族自治县" + }, + { + "value": 2198, + "label": "宜州市" + } + ] + }, + { + "value": 2199, + "label": "来宾市", + "children": [ + { + "value": 2200, + "label": "兴宾区" + }, + { + "value": 2201, + "label": "忻城县" + }, + { + "value": 2202, + "label": "象州县" + }, + { + "value": 2203, + "label": "武宣县" + }, + { + "value": 2204, + "label": "金秀瑶族自治县" + }, + { + "value": 2205, + "label": "合山市" + } + ] + }, + { + "value": 2206, + "label": "崇左市", + "children": [ + { + "value": 2207, + "label": "江洲区" + }, + { + "value": 2208, + "label": "扶绥县" + }, + { + "value": 2209, + "label": "宁明县" + }, + { + "value": 2210, + "label": "龙州县" + }, + { + "value": 2211, + "label": "大新县" + }, + { + "value": 2212, + "label": "天等县" + }, + { + "value": 2213, + "label": "凭祥市" + } + ] + } + ] + }, + { + "value": 2214, + "label": "海南省", + "children": [ + { + "value": 2215, + "label": "海口市", + "children": [ + { + "value": 2216, + "label": "秀英区" + }, + { + "value": 2217, + "label": "龙华区" + }, + { + "value": 2218, + "label": "琼山区" + }, + { + "value": 2219, + "label": "美兰区" + } + ] + }, + { + "value": 2220, + "label": "三亚市" + }, + { + "value": 2221, + "label": "五指山市" + }, + { + "value": 2222, + "label": "琼海市" + }, + { + "value": 2223, + "label": "儋州市" + }, + { + "value": 2224, + "label": "文昌市" + }, + { + "value": 2225, + "label": "万宁市" + }, + { + "value": 2226, + "label": "东方市" + }, + { + "value": 2227, + "label": "定安县" + }, + { + "value": 2228, + "label": "屯昌县" + }, + { + "value": 2229, + "label": "澄迈县" + }, + { + "value": 2230, + "label": "临高县" + }, + { + "value": 2231, + "label": "白沙黎族自治县" + }, + { + "value": 2232, + "label": "昌江黎族自治县" + }, + { + "value": 2233, + "label": "乐东黎族自治县" + }, + { + "value": 2234, + "label": "陵水黎族自治县" + }, + { + "value": 2235, + "label": "保亭黎族苗族自治县" + }, + { + "value": 2236, + "label": "琼中黎族苗族自治县" + }, + { + "value": 2237, + "label": "西沙群岛" + }, + { + "value": 2238, + "label": "南沙群岛" + }, + { + "value": 2239, + "label": "中沙群岛的岛礁及其海域" + } + ] + }, + { + "value": 2240, + "label": "重庆市", + "children": [ + { + "value": 2241, + "label": "万州区" + }, + { + "value": 2242, + "label": "涪陵区" + }, + { + "value": 2243, + "label": "渝中区" + }, + { + "value": 2244, + "label": "大渡口区" + }, + { + "value": 2245, + "label": "江北区" + }, + { + "value": 2246, + "label": "沙坪坝区" + }, + { + "value": 2247, + "label": "九龙坡区" + }, + { + "value": 2248, + "label": "南岸区" + }, + { + "value": 2249, + "label": "北碚区" + }, + { + "value": 2250, + "label": "綦江区" + }, + { + "value": 2251, + "label": "大足区" + }, + { + "value": 2252, + "label": "渝北区" + }, + { + "value": 2253, + "label": "巴南区" + }, + { + "value": 2254, + "label": "黔江区" + }, + { + "value": 2255, + "label": "长寿区" + }, + { + "value": 2256, + "label": "江津区" + }, + { + "value": 2257, + "label": "合川区" + }, + { + "value": 2258, + "label": "永川区" + }, + { + "value": 2259, + "label": "南川区" + }, + { + "value": 2260, + "label": "潼南县" + }, + { + "value": 2261, + "label": "铜梁县" + }, + { + "value": 2262, + "label": "荣昌县" + }, + { + "value": 2263, + "label": "璧山县" + }, + { + "value": 2264, + "label": "梁平县" + }, + { + "value": 2265, + "label": "城口县" + }, + { + "value": 2266, + "label": "丰都县" + }, + { + "value": 2267, + "label": "垫江县" + }, + { + "value": 2268, + "label": "武隆县" + }, + { + "value": 2269, + "label": "忠县" + }, + { + "value": 2270, + "label": "开县" + }, + { + "value": 2271, + "label": "云阳县" + }, + { + "value": 2272, + "label": "奉节县" + }, + { + "value": 2273, + "label": "巫山县" + }, + { + "value": 2274, + "label": "巫溪县" + }, + { + "value": 2275, + "label": "石柱土家族自治县" + }, + { + "value": 2276, + "label": "秀山土家族苗族自治县" + }, + { + "value": 2277, + "label": "酉阳土家族苗族自治县" + }, + { + "value": 2278, + "label": "彭水苗族土家族自治县" + } + ] + }, + { + "value": 2279, + "label": "四川省", + "children": [ + { + "value": 2280, + "label": "成都市", + "children": [ + { + "value": 2281, + "label": "锦江区" + }, + { + "value": 2282, + "label": "青羊区" + }, + { + "value": 2283, + "label": "金牛区" + }, + { + "value": 2284, + "label": "武侯区" + }, + { + "value": 2285, + "label": "成华区" + }, + { + "value": 2286, + "label": "龙泉驿区" + }, + { + "value": 2299, + "label": "崇州市" + }, + { + "value": 2293, + "label": "大邑县" + }, + { + "value": 2294, + "label": "蒲江县" + }, + { + "value": 2295, + "label": "新津县" + }, + { + "value": 2296, + "label": "都江堰市" + }, + { + "value": 2297, + "label": "彭州市" + }, + { + "value": 2298, + "label": "邛崃市" + }, + { + "value": 2287, + "label": "青白江区" + }, + { + "value": 2288, + "label": "新都区" + }, + { + "value": 2289, + "label": "温江区" + }, + { + "value": 2290, + "label": "金堂县" + }, + { + "value": 2291, + "label": "双流县" + }, + { + "value": 2292, + "label": "郫县" + } + ] + }, + { + "value": 2300, + "label": "自贡市", + "children": [ + { + "value": 2301, + "label": "自流井区" + }, + { + "value": 2302, + "label": "贡井区" + }, + { + "value": 2303, + "label": "大安区" + }, + { + "value": 2304, + "label": "沿滩区" + }, + { + "value": 2305, + "label": "荣县" + }, + { + "value": 2306, + "label": "富顺县" + } + ] + }, + { + "value": 2307, + "label": "攀枝花市", + "children": [ + { + "value": 2308, + "label": "东区" + }, + { + "value": 2309, + "label": "西区" + }, + { + "value": 2310, + "label": "仁和区" + }, + { + "value": 2311, + "label": "米易县" + }, + { + "value": 2312, + "label": "盐边县" + } + ] + }, + { + "value": 2313, + "label": "泸州市", + "children": [ + { + "value": 2315, + "label": "纳溪区" + }, + { + "value": 2316, + "label": "龙马潭区" + }, + { + "value": 2317, + "label": "泸县" + }, + { + "value": 2318, + "label": "合江县" + }, + { + "value": 2319, + "label": "叙永县" + }, + { + "value": 2320, + "label": "古蔺县" + }, + { + "value": 2314, + "label": "江阳区" + } + ] + }, + { + "value": 2321, + "label": "德阳市", + "children": [ + { + "value": 2322, + "label": "旌阳区" + }, + { + "value": 2323, + "label": "中江县" + }, + { + "value": 2324, + "label": "罗江县" + }, + { + "value": 2325, + "label": "广汉市" + }, + { + "value": 2326, + "label": "什邡市" + }, + { + "value": 2327, + "label": "绵竹市" + } + ] + }, + { + "value": 2328, + "label": "绵阳市", + "children": [ + { + "value": 2329, + "label": "涪城区" + }, + { + "value": 2330, + "label": "游仙区" + }, + { + "value": 2331, + "label": "三台县" + }, + { + "value": 2332, + "label": "盐亭县" + }, + { + "value": 2333, + "label": "安县" + }, + { + "value": 2334, + "label": "梓潼县" + }, + { + "value": 2335, + "label": "北川羌族自治县" + }, + { + "value": 2336, + "label": "平武县" + }, + { + "value": 2337, + "label": "江油市" + } + ] + }, + { + "value": 2338, + "label": "广元市", + "children": [ + { + "value": 2339, + "label": "利州区" + }, + { + "value": 2340, + "label": "元坝区" + }, + { + "value": 2341, + "label": "朝天区" + }, + { + "value": 2342, + "label": "旺苍县" + }, + { + "value": 2343, + "label": "青川县" + }, + { + "value": 2344, + "label": "剑阁县" + }, + { + "value": 2345, + "label": "苍溪县" + } + ] + }, + { + "value": 2346, + "label": "遂宁市", + "children": [ + { + "value": 2347, + "label": "船山区" + }, + { + "value": 2348, + "label": "安居区" + }, + { + "value": 2349, + "label": "蓬溪县" + }, + { + "value": 2350, + "label": "射洪县" + }, + { + "value": 2351, + "label": "大英县" + } + ] + }, + { + "value": 2352, + "label": "内江市", + "children": [ + { + "value": 2353, + "label": "市中区" + }, + { + "value": 2354, + "label": "东兴区" + }, + { + "value": 2355, + "label": "威远县" + }, + { + "value": 2356, + "label": "资中县" + }, + { + "value": 2357, + "label": "隆昌县" + } + ] + }, + { + "value": 2358, + "label": "乐山市", + "children": [ + { + "value": 2359, + "label": "市中区" + }, + { + "value": 2360, + "label": "沙湾区" + }, + { + "value": 2361, + "label": "五通桥区" + }, + { + "value": 2362, + "label": "金口河区" + }, + { + "value": 2363, + "label": "犍为县" + }, + { + "value": 2364, + "label": "井研县" + }, + { + "value": 2365, + "label": "夹江县" + }, + { + "value": 2366, + "label": "沐川县" + }, + { + "value": 2367, + "label": "峨边彝族自治县" + }, + { + "value": 2368, + "label": "马边彝族自治县" + }, + { + "value": 2369, + "label": "峨眉山市" + } + ] + }, + { + "value": 2370, + "label": "南充市", + "children": [ + { + "value": 2371, + "label": "顺庆区" + }, + { + "value": 2372, + "label": "高坪区" + }, + { + "value": 2373, + "label": "嘉陵区" + }, + { + "value": 2374, + "label": "南部县" + }, + { + "value": 2375, + "label": "营山县" + }, + { + "value": 2376, + "label": "蓬安县" + }, + { + "value": 2377, + "label": "仪陇县" + }, + { + "value": 2378, + "label": "西充县" + }, + { + "value": 2379, + "label": "阆中市" + } + ] + }, + { + "value": 2380, + "label": "眉山市", + "children": [ + { + "value": 2381, + "label": "东坡区" + }, + { + "value": 2382, + "label": "仁寿县" + }, + { + "value": 2383, + "label": "彭山县" + }, + { + "value": 2384, + "label": "洪雅县" + }, + { + "value": 2385, + "label": "丹棱县" + }, + { + "value": 2386, + "label": "青神县" + } + ] + }, + { + "value": 2387, + "label": "宜宾市", + "children": [ + { + "value": 2393, + "label": "高县" + }, + { + "value": 2394, + "label": "珙县" + }, + { + "value": 2395, + "label": "筠连县" + }, + { + "value": 2396, + "label": "兴文县" + }, + { + "value": 2397, + "label": "屏山县" + }, + { + "value": 2388, + "label": "翠屏区" + }, + { + "value": 2389, + "label": "南溪区" + }, + { + "value": 2390, + "label": "宜宾县" + }, + { + "value": 2391, + "label": "江安县" + }, + { + "value": 2392, + "label": "长宁县" + } + ] + }, + { + "value": 2398, + "label": "广安市", + "children": [ + { + "value": 2399, + "label": "广安区" + }, + { + "value": 2400, + "label": "岳池县" + }, + { + "value": 2401, + "label": "武胜县" + }, + { + "value": 2402, + "label": "邻水县" + }, + { + "value": 2403, + "label": "华蓥市" + } + ] + }, + { + "value": 2404, + "label": "达州市", + "children": [ + { + "value": 2407, + "label": "宣汉县" + }, + { + "value": 2408, + "label": "开江县" + }, + { + "value": 2409, + "label": "大竹县" + }, + { + "value": 2410, + "label": "渠县" + }, + { + "value": 2411, + "label": "万源市" + }, + { + "value": 2405, + "label": "通川区" + }, + { + "value": 2406, + "label": "达县" + } + ] + }, + { + "value": 2412, + "label": "雅安市", + "children": [ + { + "value": 2420, + "label": "宝兴县" + }, + { + "value": 2414, + "label": "名山县" + }, + { + "value": 2415, + "label": "荥经县" + }, + { + "value": 2416, + "label": "汉源县" + }, + { + "value": 2417, + "label": "石棉县" + }, + { + "value": 2418, + "label": "天全县" + }, + { + "value": 2419, + "label": "芦山县" + }, + { + "value": 2413, + "label": "雨城区" + } + ] + }, + { + "value": 2421, + "label": "巴中市", + "children": [ + { + "value": 2422, + "label": "巴州区" + }, + { + "value": 2423, + "label": "通江县" + }, + { + "value": 2424, + "label": "南江县" + }, + { + "value": 2425, + "label": "平昌县" + } + ] + }, + { + "value": 2426, + "label": "资阳市", + "children": [ + { + "value": 2428, + "label": "安岳县" + }, + { + "value": 2429, + "label": "乐至县" + }, + { + "value": 2430, + "label": "简阳市" + }, + { + "value": 2427, + "label": "雁江区" + } + ] + }, + { + "value": 2431, + "label": "阿坝藏族羌族自治州", + "children": [ + { + "value": 2432, + "label": "汶川县" + }, + { + "value": 2433, + "label": "理县" + }, + { + "value": 2434, + "label": "茂县" + }, + { + "value": 2435, + "label": "松潘县" + }, + { + "value": 2436, + "label": "九寨沟县" + }, + { + "value": 2437, + "label": "金川县" + }, + { + "value": 2444, + "label": "红原县" + }, + { + "value": 2438, + "label": "小金县" + }, + { + "value": 2439, + "label": "黑水县" + }, + { + "value": 2440, + "label": "马尔康县" + }, + { + "value": 2441, + "label": "壤塘县" + }, + { + "value": 2442, + "label": "阿坝县" + }, + { + "value": 2443, + "label": "若尔盖县" + } + ] + }, + { + "value": 2445, + "label": "甘孜藏族自治州", + "children": [ + { + "value": 2446, + "label": "康定县" + }, + { + "value": 2447, + "label": "泸定县" + }, + { + "value": 2448, + "label": "丹巴县" + }, + { + "value": 2449, + "label": "九龙县" + }, + { + "value": 2450, + "label": "雅江县" + }, + { + "value": 2451, + "label": "道孚县" + }, + { + "value": 2458, + "label": "色达县" + }, + { + "value": 2459, + "label": "理塘县" + }, + { + "value": 2460, + "label": "巴塘县" + }, + { + "value": 2461, + "label": "乡城县" + }, + { + "value": 2462, + "label": "稻城县" + }, + { + "value": 2463, + "label": "得荣县" + }, + { + "value": 2452, + "label": "炉霍县" + }, + { + "value": 2453, + "label": "甘孜县" + }, + { + "value": 2454, + "label": "新龙县" + }, + { + "value": 2455, + "label": "德格县" + }, + { + "value": 2456, + "label": "白玉县" + }, + { + "value": 2457, + "label": "石渠县" + } + ] + }, + { + "value": 2464, + "label": "凉山彝族自治州", + "children": [ + { + "value": 2465, + "label": "西昌市" + }, + { + "value": 2466, + "label": "木里藏族自治县" + }, + { + "value": 2479, + "label": "甘洛县" + }, + { + "value": 2480, + "label": "美姑县" + }, + { + "value": 2481, + "label": "雷波县" + }, + { + "value": 2473, + "label": "布拖县" + }, + { + "value": 2474, + "label": "金阳县" + }, + { + "value": 2475, + "label": "昭觉县" + }, + { + "value": 2476, + "label": "喜德县" + }, + { + "value": 2477, + "label": "冕宁县" + }, + { + "value": 2478, + "label": "越西县" + }, + { + "value": 2467, + "label": "盐源县" + }, + { + "value": 2468, + "label": "德昌县" + }, + { + "value": 2469, + "label": "会理县" + }, + { + "value": 2470, + "label": "会东县" + }, + { + "value": 2471, + "label": "宁南县" + }, + { + "value": 2472, + "label": "普格县" + } + ] + } + ] + }, + { + "value": 2482, + "label": "贵州省", + "children": [ + { + "value": 2483, + "label": "贵阳市", + "children": [ + { + "value": 2484, + "label": "南明区" + }, + { + "value": 2485, + "label": "云岩区" + }, + { + "value": 2486, + "label": "花溪区" + }, + { + "value": 2487, + "label": "乌当区" + }, + { + "value": 2488, + "label": "白云区" + }, + { + "value": 2489, + "label": "小河区" + }, + { + "value": 2490, + "label": "开阳县" + }, + { + "value": 2491, + "label": "息烽县" + }, + { + "value": 2492, + "label": "修文县" + }, + { + "value": 2493, + "label": "清镇市" + } + ] + }, + { + "value": 2494, + "label": "六盘水市", + "children": [ + { + "value": 2495, + "label": "钟山区" + }, + { + "value": 2496, + "label": "六枝特区" + }, + { + "value": 2497, + "label": "水城县" + }, + { + "value": 2498, + "label": "盘县" + } + ] + }, + { + "value": 2499, + "label": "遵义市", + "children": [ + { + "value": 2500, + "label": "红花岗区" + }, + { + "value": 2501, + "label": "汇川区" + }, + { + "value": 2502, + "label": "遵义县" + }, + { + "value": 2503, + "label": "桐梓县" + }, + { + "value": 2504, + "label": "绥阳县" + }, + { + "value": 2505, + "label": "正安县" + }, + { + "value": 2512, + "label": "赤水市" + }, + { + "value": 2513, + "label": "仁怀市" + }, + { + "value": 2506, + "label": "道真仡佬族苗族自治县" + }, + { + "value": 2507, + "label": "务川仡佬族苗族自治县" + }, + { + "value": 2508, + "label": "凤冈县" + }, + { + "value": 2509, + "label": "湄潭县" + }, + { + "value": 2510, + "label": "余庆县" + }, + { + "value": 2511, + "label": "习水县" + } + ] + }, + { + "value": 2514, + "label": "安顺市", + "children": [ + { + "value": 2517, + "label": "普定县" + }, + { + "value": 2518, + "label": "镇宁布依族苗族自治县" + }, + { + "value": 2519, + "label": "关岭布依族苗族自治县" + }, + { + "value": 2520, + "label": "紫云苗族布依族自治县" + }, + { + "value": 2515, + "label": "西秀区" + }, + { + "value": 2516, + "label": "平坝县" + } + ] + }, + { + "value": 2521, + "label": "毕节市", + "children": [ + { + "value": 2522, + "label": "七星关区" + }, + { + "value": 2523, + "label": "大方县" + }, + { + "value": 2524, + "label": "黔西县" + }, + { + "value": 2525, + "label": "金沙县" + }, + { + "value": 2526, + "label": "织金县" + }, + { + "value": 2527, + "label": "纳雍县" + }, + { + "value": 2528, + "label": "威宁彝族回族苗族自治县" + }, + { + "value": 2529, + "label": "赫章县" + } + ] + }, + { + "value": 2530, + "label": "铜仁市", + "children": [ + { + "value": 2536, + "label": "思南县" + }, + { + "value": 2537, + "label": "印江土家族苗族自治县" + }, + { + "value": 2538, + "label": "德江县" + }, + { + "value": 2539, + "label": "沿河土家族自治县" + }, + { + "value": 2540, + "label": "松桃苗族自治县" + }, + { + "value": 2531, + "label": "碧江区" + }, + { + "value": 2532, + "label": "万山区" + }, + { + "value": 2533, + "label": "江口县" + }, + { + "value": 2534, + "label": "玉屏侗族自治县" + }, + { + "value": 2535, + "label": "石阡县" + } + ] + }, + { + "value": 2541, + "label": "黔西南布依族苗族自治州", + "children": [ + { + "value": 2542, + "label": "兴义市" + }, + { + "value": 2543, + "label": "兴仁县" + }, + { + "value": 2544, + "label": "普安县" + }, + { + "value": 2545, + "label": "晴隆县" + }, + { + "value": 2546, + "label": "贞丰县" + }, + { + "value": 2547, + "label": "望谟县" + }, + { + "value": 2548, + "label": "册亨县" + }, + { + "value": 2549, + "label": "安龙县" + } + ] + }, + { + "value": 2550, + "label": "黔东南苗族侗族自治州", + "children": [ + { + "value": 2551, + "label": "凯里市" + }, + { + "value": 2552, + "label": "黄平县" + }, + { + "value": 2553, + "label": "施秉县" + }, + { + "value": 2554, + "label": "三穗县" + }, + { + "value": 2555, + "label": "镇远县" + }, + { + "value": 2556, + "label": "岑巩县" + }, + { + "value": 2563, + "label": "从江县" + }, + { + "value": 2564, + "label": "雷山县" + }, + { + "value": 2565, + "label": "麻江县" + }, + { + "value": 2566, + "label": "丹寨县" + }, + { + "value": 2557, + "label": "天柱县" + }, + { + "value": 2558, + "label": "锦屏县" + }, + { + "value": 2559, + "label": "剑河县" + }, + { + "value": 2560, + "label": "台江县" + }, + { + "value": 2561, + "label": "黎平县" + }, + { + "value": 2562, + "label": "榕江县" + } + ] + }, + { + "value": 2567, + "label": "黔南布依族苗族自治州", + "children": [ + { + "value": 2568, + "label": "都匀市" + }, + { + "value": 2569, + "label": "福泉市" + }, + { + "value": 2570, + "label": "荔波县" + }, + { + "value": 2571, + "label": "贵定县" + }, + { + "value": 2572, + "label": "瓮安县" + }, + { + "value": 2573, + "label": "独山县" + }, + { + "value": 2574, + "label": "平塘县" + }, + { + "value": 2575, + "label": "罗甸县" + }, + { + "value": 2576, + "label": "长顺县" + }, + { + "value": 2577, + "label": "龙里县" + }, + { + "value": 2578, + "label": "惠水县" + }, + { + "value": 2579, + "label": "三都水族自治县" + } + ] + } + ] + }, + { + "value": 2580, + "label": "云南省", + "children": [ + { + "value": 2581, + "label": "昆明市", + "children": [ + { + "value": 2590, + "label": "宜良县" + }, + { + "value": 2591, + "label": "石林彝族自治县" + }, + { + "value": 2592, + "label": "嵩明县" + }, + { + "value": 2593, + "label": "禄劝彝族苗族自治县" + }, + { + "value": 2594, + "label": "寻甸回族彝族自治县" + }, + { + "value": 2595, + "label": "安宁市" + }, + { + "value": 2584, + "label": "官渡区" + }, + { + "value": 2585, + "label": "西山区" + }, + { + "value": 2586, + "label": "东川区" + }, + { + "value": 2587, + "label": "呈贡区" + }, + { + "value": 2588, + "label": "晋宁县" + }, + { + "value": 2589, + "label": "富民县" + }, + { + "value": 2582, + "label": "五华区" + }, + { + "value": 2583, + "label": "盘龙区" + } + ] + }, + { + "value": 2596, + "label": "曲靖市", + "children": [ + { + "value": 2604, + "label": "沾益县" + }, + { + "value": 2605, + "label": "宣威市" + }, + { + "value": 2598, + "label": "马龙县" + }, + { + "value": 2599, + "label": "陆良县" + }, + { + "value": 2600, + "label": "师宗县" + }, + { + "value": 2601, + "label": "罗平县" + }, + { + "value": 2602, + "label": "富源县" + }, + { + "value": 2603, + "label": "会泽县" + }, + { + "value": 2597, + "label": "麒麟区" + } + ] + }, + { + "value": 2606, + "label": "玉溪市", + "children": [ + { + "value": 2607, + "label": "红塔区" + }, + { + "value": 2608, + "label": "江川县" + }, + { + "value": 2609, + "label": "澄江县" + }, + { + "value": 2610, + "label": "通海县" + }, + { + "value": 2611, + "label": "华宁县" + }, + { + "value": 2612, + "label": "易门县" + }, + { + "value": 2613, + "label": "峨山彝族自治县" + }, + { + "value": 2614, + "label": "新平彝族傣族自治县" + }, + { + "value": 2615, + "label": "元江哈尼族彝族傣族自治县" + } + ] + }, + { + "value": 2616, + "label": "保山市", + "children": [ + { + "value": 2617, + "label": "隆阳区" + }, + { + "value": 2618, + "label": "施甸县" + }, + { + "value": 2619, + "label": "腾冲县" + }, + { + "value": 2620, + "label": "龙陵县" + }, + { + "value": 2621, + "label": "昌宁县" + } + ] + }, + { + "value": 2622, + "label": "昭通市", + "children": [ + { + "value": 2628, + "label": "永善县" + }, + { + "value": 2629, + "label": "绥江县" + }, + { + "value": 2630, + "label": "镇雄县" + }, + { + "value": 2631, + "label": "彝良县" + }, + { + "value": 2632, + "label": "威信县" + }, + { + "value": 2633, + "label": "水富县" + }, + { + "value": 2623, + "label": "昭阳区" + }, + { + "value": 2624, + "label": "鲁甸县" + }, + { + "value": 2625, + "label": "巧家县" + }, + { + "value": 2626, + "label": "盐津县" + }, + { + "value": 2627, + "label": "大关县" + } + ] + }, + { + "value": 2634, + "label": "丽江市", + "children": [ + { + "value": 2635, + "label": "古城区" + }, + { + "value": 2636, + "label": "玉龙纳西族自治县" + }, + { + "value": 2637, + "label": "永胜县" + }, + { + "value": 2638, + "label": "华坪县" + }, + { + "value": 2639, + "label": "宁蒗彝族自治县" + } + ] + }, + { + "value": 2640, + "label": "普洱市", + "children": [ + { + "value": 2641, + "label": "思茅区" + }, + { + "value": 2642, + "label": "宁洱哈尼族彝族自治县" + }, + { + "value": 2643, + "label": "墨江哈尼族自治县" + }, + { + "value": 2644, + "label": "景东彝族自治县" + }, + { + "value": 2645, + "label": "景谷傣族彝族自治县" + }, + { + "value": 2646, + "label": "镇沅彝族哈尼族拉祜族自治县" + }, + { + "value": 2647, + "label": "江城哈尼族彝族自治县" + }, + { + "value": 2648, + "label": "孟连傣族拉祜族佤族自治县" + }, + { + "value": 2649, + "label": "澜沧拉祜族自治县" + }, + { + "value": 2650, + "label": "西盟佤族自治县" + } + ] + }, + { + "value": 2651, + "label": "临沧市", + "children": [ + { + "value": 2652, + "label": "临翔区" + }, + { + "value": 2653, + "label": "凤庆县" + }, + { + "value": 2654, + "label": "云县" + }, + { + "value": 2655, + "label": "永德县" + }, + { + "value": 2656, + "label": "镇康县" + }, + { + "value": 2657, + "label": "双江拉祜族佤族布朗族傣族自治县" + }, + { + "value": 2658, + "label": "耿马傣族佤族自治县" + }, + { + "value": 2659, + "label": "沧源佤族自治县" + } + ] + }, + { + "value": 2660, + "label": "楚雄彝族自治州", + "children": [ + { + "value": 2667, + "label": "永仁县" + }, + { + "value": 2668, + "label": "元谋县" + }, + { + "value": 2669, + "label": "武定县" + }, + { + "value": 2670, + "label": "禄丰县" + }, + { + "value": 2661, + "label": "楚雄市" + }, + { + "value": 2662, + "label": "双柏县" + }, + { + "value": 2663, + "label": "牟定县" + }, + { + "value": 2664, + "label": "南华县" + }, + { + "value": 2665, + "label": "姚安县" + }, + { + "value": 2666, + "label": "大姚县" + } + ] + }, + { + "value": 2671, + "label": "红河哈尼族彝族自治州", + "children": [ + { + "value": 2672, + "label": "个旧市" + }, + { + "value": 2673, + "label": "开远市" + }, + { + "value": 2674, + "label": "蒙自市" + }, + { + "value": 2675, + "label": "屏边苗族自治县" + }, + { + "value": 2676, + "label": "建水县" + }, + { + "value": 2677, + "label": "石屏县" + }, + { + "value": 2684, + "label": "河口瑶族自治县" + }, + { + "value": 2678, + "label": "弥勒县" + }, + { + "value": 2679, + "label": "泸西县" + }, + { + "value": 2680, + "label": "元阳县" + }, + { + "value": 2681, + "label": "红河县" + }, + { + "value": 2682, + "label": "金平苗族瑶族傣族自治县" + }, + { + "value": 2683, + "label": "绿春县" + } + ] + }, + { + "value": 2685, + "label": "文山壮族苗族自治州", + "children": [ + { + "value": 2688, + "label": "西畴县" + }, + { + "value": 2689, + "label": "麻栗坡县" + }, + { + "value": 2690, + "label": "马关县" + }, + { + "value": 2691, + "label": "丘北县" + }, + { + "value": 2692, + "label": "广南县" + }, + { + "value": 2693, + "label": "富宁县" + }, + { + "value": 2686, + "label": "文山市" + }, + { + "value": 2687, + "label": "砚山县" + } + ] + }, + { + "value": 2694, + "label": "西双版纳傣族自治州", + "children": [ + { + "value": 2695, + "label": "景洪市" + }, + { + "value": 2696, + "label": "勐海县" + }, + { + "value": 2697, + "label": "勐腊县" + } + ] + }, + { + "value": 2698, + "label": "大理白族自治州", + "children": [ + { + "value": 2699, + "label": "大理市" + }, + { + "value": 2700, + "label": "漾濞彝族自治县" + }, + { + "value": 2701, + "label": "祥云县" + }, + { + "value": 2702, + "label": "宾川县" + }, + { + "value": 2703, + "label": "弥渡县" + }, + { + "value": 2704, + "label": "南涧彝族自治县" + }, + { + "value": 2705, + "label": "巍山彝族回族自治县" + }, + { + "value": 2706, + "label": "永平县" + }, + { + "value": 2707, + "label": "云龙县" + }, + { + "value": 2708, + "label": "洱源县" + }, + { + "value": 2709, + "label": "剑川县" + }, + { + "value": 2710, + "label": "鹤庆县" + } + ] + }, + { + "value": 2711, + "label": "德宏傣族景颇族自治州", + "children": [ + { + "value": 2712, + "label": "瑞丽市" + }, + { + "value": 2713, + "label": "芒市" + }, + { + "value": 2714, + "label": "梁河县" + }, + { + "value": 2715, + "label": "盈江县" + }, + { + "value": 2716, + "label": "陇川县" + } + ] + }, + { + "value": 2717, + "label": "怒江傈僳族自治州", + "children": [ + { + "value": 2720, + "label": "贡山独龙族怒族自治县" + }, + { + "value": 2721, + "label": "兰坪白族普米族自治县" + }, + { + "value": 2718, + "label": "泸水县" + }, + { + "value": 2719, + "label": "福贡县" + } + ] + }, + { + "value": 2722, + "label": "迪庆藏族自治州", + "children": [ + { + "value": 2723, + "label": "香格里拉县" + }, + { + "value": 2724, + "label": "德钦县" + }, + { + "value": 2725, + "label": "维西傈僳族自治县" + } + ] + } + ] + }, + { + "value": 2726, + "label": "西藏自治区", + "children": [ + { + "value": 2727, + "label": "拉萨市", + "children": [ + { + "value": 2728, + "label": "城关区" + }, + { + "value": 2735, + "label": "墨竹工卡县" + }, + { + "value": 2729, + "label": "林周县" + }, + { + "value": 2730, + "label": "当雄县" + }, + { + "value": 2731, + "label": "尼木县" + }, + { + "value": 2732, + "label": "曲水县" + }, + { + "value": 2733, + "label": "堆龙德庆县" + }, + { + "value": 2734, + "label": "达孜县" + } + ] + }, + { + "value": 2736, + "label": "昌都地区", + "children": [ + { + "value": 2744, + "label": "左贡县" + }, + { + "value": 2745, + "label": "芒康县" + }, + { + "value": 2746, + "label": "洛隆县" + }, + { + "value": 2747, + "label": "边坝县" + }, + { + "value": 2738, + "label": "江达县" + }, + { + "value": 2739, + "label": "贡觉县" + }, + { + "value": 2740, + "label": "类乌齐县" + }, + { + "value": 2741, + "label": "丁青县" + }, + { + "value": 2742, + "label": "察雅县" + }, + { + "value": 2743, + "label": "八宿县" + }, + { + "value": 2737, + "label": "昌都县" + } + ] + }, + { + "value": 2748, + "label": "山南地区", + "children": [ + { + "value": 2749, + "label": "乃东县" + }, + { + "value": 2756, + "label": "洛扎县" + }, + { + "value": 2757, + "label": "加查县" + }, + { + "value": 2758, + "label": "隆子县" + }, + { + "value": 2759, + "label": "错那县" + }, + { + "value": 2760, + "label": "浪卡子县" + }, + { + "value": 2750, + "label": "扎囊县" + }, + { + "value": 2751, + "label": "贡嘎县" + }, + { + "value": 2752, + "label": "桑日县" + }, + { + "value": 2753, + "label": "琼结县" + }, + { + "value": 2754, + "label": "曲松县" + }, + { + "value": 2755, + "label": "措美县" + } + ] + }, + { + "value": 2761, + "label": "日喀则地区", + "children": [ + { + "value": 2776, + "label": "吉隆县" + }, + { + "value": 2777, + "label": "聂拉木县" + }, + { + "value": 2778, + "label": "萨嘎县" + }, + { + "value": 2779, + "label": "岗巴县" + }, + { + "value": 2770, + "label": "白朗县" + }, + { + "value": 2771, + "label": "仁布县" + }, + { + "value": 2772, + "label": "康马县" + }, + { + "value": 2773, + "label": "定结县" + }, + { + "value": 2774, + "label": "仲巴县" + }, + { + "value": 2775, + "label": "亚东县" + }, + { + "value": 2764, + "label": "江孜县" + }, + { + "value": 2765, + "label": "定日县" + }, + { + "value": 2766, + "label": "萨迦县" + }, + { + "value": 2767, + "label": "拉孜县" + }, + { + "value": 2768, + "label": "昂仁县" + }, + { + "value": 2769, + "label": "谢通门县" + }, + { + "value": 2762, + "label": "日喀则市" + }, + { + "value": 2763, + "label": "南木林县" + } + ] + }, + { + "value": 2780, + "label": "那曲地区", + "children": [ + { + "value": 2781, + "label": "那曲县" + }, + { + "value": 2782, + "label": "嘉黎县" + }, + { + "value": 2783, + "label": "比如县" + }, + { + "value": 2784, + "label": "聂荣县" + }, + { + "value": 2785, + "label": "安多县" + }, + { + "value": 2786, + "label": "申扎县" + }, + { + "value": 2787, + "label": "索县" + }, + { + "value": 2788, + "label": "班戈县" + }, + { + "value": 2789, + "label": "巴青县" + }, + { + "value": 2790, + "label": "尼玛县" + } + ] + }, + { + "value": 2791, + "label": "阿里地区", + "children": [ + { + "value": 2792, + "label": "普兰县" + }, + { + "value": 2793, + "label": "札达县" + }, + { + "value": 2794, + "label": "噶尔县" + }, + { + "value": 2795, + "label": "日土县" + }, + { + "value": 2796, + "label": "革吉县" + }, + { + "value": 2797, + "label": "改则县" + }, + { + "value": 2798, + "label": "措勤县" + } + ] + }, + { + "value": 2799, + "label": "林芝地区", + "children": [ + { + "value": 2800, + "label": "林芝县" + }, + { + "value": 2801, + "label": "工布江达县" + }, + { + "value": 2802, + "label": "米林县" + }, + { + "value": 2803, + "label": "墨脱县" + }, + { + "value": 2804, + "label": "波密县" + }, + { + "value": 2805, + "label": "察隅县" + }, + { + "value": 2806, + "label": "朗县" + } + ] + } + ] + }, + { + "value": 2807, + "label": "陕西省", + "children": [ + { + "value": 2808, + "label": "西安市", + "children": [ + { + "value": 2809, + "label": "新城区" + }, + { + "value": 2810, + "label": "碑林区" + }, + { + "value": 2811, + "label": "莲湖区" + }, + { + "value": 2812, + "label": "灞桥区" + }, + { + "value": 2813, + "label": "未央区" + }, + { + "value": 2814, + "label": "雁塔区" + }, + { + "value": 2821, + "label": "高陵县" + }, + { + "value": 2815, + "label": "阎良区" + }, + { + "value": 2816, + "label": "临潼区" + }, + { + "value": 2817, + "label": "长安区" + }, + { + "value": 2818, + "label": "蓝田县" + }, + { + "value": 2819, + "label": "周至县" + }, + { + "value": 2820, + "label": "户县" + } + ] + }, + { + "value": 2822, + "label": "铜川市", + "children": [ + { + "value": 2823, + "label": "王益区" + }, + { + "value": 2824, + "label": "印台区" + }, + { + "value": 2825, + "label": "耀州区" + }, + { + "value": 2826, + "label": "宜君县" + } + ] + }, + { + "value": 2827, + "label": "宝鸡市", + "children": [ + { + "value": 2838, + "label": "凤县" + }, + { + "value": 2839, + "label": "太白县" + }, + { + "value": 2832, + "label": "岐山县" + }, + { + "value": 2833, + "label": "扶风县" + }, + { + "value": 2834, + "label": "眉县" + }, + { + "value": 2835, + "label": "陇县" + }, + { + "value": 2836, + "label": "千阳县" + }, + { + "value": 2837, + "label": "麟游县" + }, + { + "value": 2828, + "label": "渭滨区" + }, + { + "value": 2829, + "label": "金台区" + }, + { + "value": 2830, + "label": "陈仓区" + }, + { + "value": 2831, + "label": "凤翔县" + } + ] + }, + { + "value": 2840, + "label": "咸阳市", + "children": [ + { + "value": 2841, + "label": "秦都区" + }, + { + "value": 2842, + "label": "杨陵区" + }, + { + "value": 2843, + "label": "渭城区" + }, + { + "value": 2844, + "label": "三原县" + }, + { + "value": 2845, + "label": "泾阳县" + }, + { + "value": 2846, + "label": "乾县" + }, + { + "value": 2853, + "label": "武功县" + }, + { + "value": 2854, + "label": "兴平市" + }, + { + "value": 2847, + "label": "礼泉县" + }, + { + "value": 2848, + "label": "永寿县" + }, + { + "value": 2849, + "label": "彬县" + }, + { + "value": 2850, + "label": "长武县" + }, + { + "value": 2851, + "label": "旬邑县" + }, + { + "value": 2852, + "label": "淳化县" + } + ] + }, + { + "value": 2855, + "label": "渭南市", + "children": [ + { + "value": 2865, + "label": "韩城市" + }, + { + "value": 2866, + "label": "华阴市" + }, + { + "value": 2859, + "label": "大荔县" + }, + { + "value": 2860, + "label": "合阳县" + }, + { + "value": 2861, + "label": "澄城县" + }, + { + "value": 2862, + "label": "蒲城县" + }, + { + "value": 2863, + "label": "白水县" + }, + { + "value": 2864, + "label": "富平县" + }, + { + "value": 2856, + "label": "临渭区" + }, + { + "value": 2857, + "label": "华县" + }, + { + "value": 2858, + "label": "潼关县" + } + ] + }, + { + "value": 2867, + "label": "延安市", + "children": [ + { + "value": 2879, + "label": "黄龙县" + }, + { + "value": 2880, + "label": "黄陵县" + }, + { + "value": 2873, + "label": "志丹县" + }, + { + "value": 2874, + "label": "吴起县" + }, + { + "value": 2875, + "label": "甘泉县" + }, + { + "value": 2876, + "label": "富县" + }, + { + "value": 2877, + "label": "洛川县" + }, + { + "value": 2878, + "label": "宜川县" + }, + { + "value": 2868, + "label": "宝塔区" + }, + { + "value": 2869, + "label": "延长县" + }, + { + "value": 2870, + "label": "延川县" + }, + { + "value": 2871, + "label": "子长县" + }, + { + "value": 2872, + "label": "安塞县" + } + ] + }, + { + "value": 2881, + "label": "汉中市", + "children": [ + { + "value": 2882, + "label": "汉台区" + }, + { + "value": 2883, + "label": "南郑县" + }, + { + "value": 2884, + "label": "城固县" + }, + { + "value": 2885, + "label": "洋县" + }, + { + "value": 2886, + "label": "西乡县" + }, + { + "value": 2887, + "label": "勉县" + }, + { + "value": 2888, + "label": "宁强县" + }, + { + "value": 2889, + "label": "略阳县" + }, + { + "value": 2890, + "label": "镇巴县" + }, + { + "value": 2891, + "label": "留坝县" + }, + { + "value": 2892, + "label": "佛坪县" + } + ] + }, + { + "value": 2893, + "label": "榆林市", + "children": [ + { + "value": 2894, + "label": "榆阳区" + }, + { + "value": 2895, + "label": "神木县" + }, + { + "value": 2896, + "label": "府谷县" + }, + { + "value": 2897, + "label": "横山县" + }, + { + "value": 2898, + "label": "靖边县" + }, + { + "value": 2899, + "label": "定边县" + }, + { + "value": 2900, + "label": "绥德县" + }, + { + "value": 2901, + "label": "米脂县" + }, + { + "value": 2902, + "label": "佳县" + }, + { + "value": 2903, + "label": "吴堡县" + }, + { + "value": 2904, + "label": "清涧县" + }, + { + "value": 2905, + "label": "子洲县" + } + ] + }, + { + "value": 2906, + "label": "安康市", + "children": [ + { + "value": 2907, + "label": "汉滨区" + }, + { + "value": 2908, + "label": "汉阴县" + }, + { + "value": 2909, + "label": "石泉县" + }, + { + "value": 2910, + "label": "宁陕县" + }, + { + "value": 2911, + "label": "紫阳县" + }, + { + "value": 2912, + "label": "岚皋县" + }, + { + "value": 2913, + "label": "平利县" + }, + { + "value": 2914, + "label": "镇坪县" + }, + { + "value": 2915, + "label": "旬阳县" + }, + { + "value": 2916, + "label": "白河县" + } + ] + }, + { + "value": 2917, + "label": "商洛市", + "children": [ + { + "value": 2921, + "label": "商南县" + }, + { + "value": 2922, + "label": "山阳县" + }, + { + "value": 2923, + "label": "镇安县" + }, + { + "value": 2924, + "label": "柞水县" + }, + { + "value": 2918, + "label": "商州区" + }, + { + "value": 2919, + "label": "洛南县" + }, + { + "value": 2920, + "label": "丹凤县" + } + ] + } + ] + }, + { + "value": 2925, + "label": "甘肃省", + "children": [ + { + "value": 2926, + "label": "兰州市", + "children": [ + { + "value": 2933, + "label": "皋兰县" + }, + { + "value": 2934, + "label": "榆中县" + }, + { + "value": 2927, + "label": "城关区" + }, + { + "value": 2928, + "label": "七里河区" + }, + { + "value": 2929, + "label": "西固区" + }, + { + "value": 2930, + "label": "安宁区" + }, + { + "value": 2931, + "label": "红古区" + }, + { + "value": 2932, + "label": "永登县" + } + ] + }, + { + "value": 2935, + "label": "嘉峪关市", + "children": [ + { + "value": 2938, + "label": "永昌县" + }, + { + "value": 2936, + "label": "金昌市" + }, + { + "value": 2937, + "label": "金川区" + } + ] + }, + { + "value": 2939, + "label": "白银市", + "children": [ + { + "value": 2940, + "label": "白银区" + }, + { + "value": 2941, + "label": "平川区" + }, + { + "value": 2942, + "label": "靖远县" + }, + { + "value": 2943, + "label": "会宁县" + }, + { + "value": 2944, + "label": "景泰县" + } + ] + }, + { + "value": 2945, + "label": "天水市", + "children": [ + { + "value": 2947, + "label": "麦积区" + }, + { + "value": 2948, + "label": "清水县" + }, + { + "value": 2949, + "label": "秦安县" + }, + { + "value": 2950, + "label": "甘谷县" + }, + { + "value": 2951, + "label": "武山县" + }, + { + "value": 2952, + "label": "张家川回族自治县" + }, + { + "value": 2946, + "label": "秦州区" + } + ] + }, + { + "value": 2953, + "label": "武威市", + "children": [ + { + "value": 2954, + "label": "凉州区" + }, + { + "value": 2955, + "label": "民勤县" + }, + { + "value": 2956, + "label": "古浪县" + }, + { + "value": 2957, + "label": "天祝藏族自治县" + } + ] + }, + { + "value": 2958, + "label": "张掖市", + "children": [ + { + "value": 2959, + "label": "甘州区" + }, + { + "value": 2960, + "label": "肃南裕固族自治县" + }, + { + "value": 2961, + "label": "民乐县" + }, + { + "value": 2962, + "label": "临泽县" + }, + { + "value": 2963, + "label": "高台县" + }, + { + "value": 2964, + "label": "山丹县" + } + ] + }, + { + "value": 2965, + "label": "平凉市", + "children": [ + { + "value": 2966, + "label": "崆峒区" + }, + { + "value": 2967, + "label": "泾川县" + }, + { + "value": 2968, + "label": "灵台县" + }, + { + "value": 2969, + "label": "崇信县" + }, + { + "value": 2970, + "label": "华亭县" + }, + { + "value": 2971, + "label": "庄浪县" + }, + { + "value": 2972, + "label": "静宁县" + } + ] + }, + { + "value": 2973, + "label": "酒泉市", + "children": [ + { + "value": 2974, + "label": "肃州区" + }, + { + "value": 2975, + "label": "金塔县" + }, + { + "value": 2976, + "label": "瓜州县" + }, + { + "value": 2977, + "label": "肃北蒙古族自治县" + }, + { + "value": 2978, + "label": "阿克塞哈萨克族自治县" + }, + { + "value": 2979, + "label": "玉门市" + }, + { + "value": 2980, + "label": "敦煌市" + } + ] + }, + { + "value": 2981, + "label": "庆阳市", + "children": [ + { + "value": 2982, + "label": "西峰区" + }, + { + "value": 2983, + "label": "庆城县" + }, + { + "value": 2984, + "label": "环县" + }, + { + "value": 2985, + "label": "华池县" + }, + { + "value": 2986, + "label": "合水县" + }, + { + "value": 2987, + "label": "正宁县" + }, + { + "value": 2988, + "label": "宁县" + }, + { + "value": 2989, + "label": "镇原县" + } + ] + }, + { + "value": 2990, + "label": "定西市", + "children": [ + { + "value": 2991, + "label": "安定区" + }, + { + "value": 2992, + "label": "通渭县" + }, + { + "value": 2993, + "label": "陇西县" + }, + { + "value": 2994, + "label": "渭源县" + }, + { + "value": 2995, + "label": "临洮县" + }, + { + "value": 2996, + "label": "漳县" + }, + { + "value": 2997, + "label": "岷县" + } + ] + }, + { + "value": 2998, + "label": "陇南市", + "children": [ + { + "value": 3006, + "label": "徽县" + }, + { + "value": 3007, + "label": "两当县" + }, + { + "value": 3000, + "label": "成县" + }, + { + "value": 3001, + "label": "文县" + }, + { + "value": 3002, + "label": "宕昌县" + }, + { + "value": 3003, + "label": "康县" + }, + { + "value": 3004, + "label": "西和县" + }, + { + "value": 3005, + "label": "礼县" + }, + { + "value": 2999, + "label": "武都区" + } + ] + }, + { + "value": 3008, + "label": "临夏回族自治州", + "children": [ + { + "value": 3009, + "label": "临夏市" + }, + { + "value": 3010, + "label": "临夏县" + }, + { + "value": 3011, + "label": "康乐县" + }, + { + "value": 3012, + "label": "永靖县" + }, + { + "value": 3013, + "label": "广河县" + }, + { + "value": 3014, + "label": "和政县" + }, + { + "value": 3015, + "label": "东乡族自治县" + }, + { + "value": 3016, + "label": "积石山保安族东乡族撒拉族自治县" + } + ] + }, + { + "value": 3017, + "label": "甘南藏族自治州", + "children": [ + { + "value": 3024, + "label": "碌曲县" + }, + { + "value": 3025, + "label": "夏河县" + }, + { + "value": 3018, + "label": "合作市" + }, + { + "value": 3019, + "label": "临潭县" + }, + { + "value": 3020, + "label": "卓尼县" + }, + { + "value": 3021, + "label": "舟曲县" + }, + { + "value": 3022, + "label": "迭部县" + }, + { + "value": 3023, + "label": "玛曲县" + } + ] + } + ] + }, + { + "value": 3026, + "label": "青海省", + "children": [ + { + "value": 3027, + "label": "西宁市", + "children": [ + { + "value": 3028, + "label": "城东区" + }, + { + "value": 3029, + "label": "城中区" + }, + { + "value": 3030, + "label": "城西区" + }, + { + "value": 3031, + "label": "城北区" + }, + { + "value": 3032, + "label": "大通回族土族自治县" + }, + { + "value": 3033, + "label": "湟中县" + }, + { + "value": 3034, + "label": "湟源县" + } + ] + }, + { + "value": 3035, + "label": "海东地区", + "children": [ + { + "value": 3036, + "label": "平安县" + }, + { + "value": 3037, + "label": "民和回族土族自治县" + }, + { + "value": 3038, + "label": "乐都县" + }, + { + "value": 3039, + "label": "互助土族自治县" + }, + { + "value": 3040, + "label": "化隆回族自治县" + }, + { + "value": 3041, + "label": "循化撒拉族自治县" + } + ] + }, + { + "value": 3042, + "label": "海北藏族自治州", + "children": [ + { + "value": 3043, + "label": "门源回族自治县" + }, + { + "value": 3044, + "label": "祁连县" + }, + { + "value": 3045, + "label": "海晏县" + }, + { + "value": 3046, + "label": "刚察县" + } + ] + }, + { + "value": 3047, + "label": "黄南藏族自治州", + "children": [ + { + "value": 3048, + "label": "同仁县" + }, + { + "value": 3049, + "label": "尖扎县" + }, + { + "value": 3050, + "label": "泽库县" + }, + { + "value": 3051, + "label": "河南蒙古族自治县" + } + ] + }, + { + "value": 3052, + "label": "海南藏族自治州", + "children": [ + { + "value": 3053, + "label": "共和县" + }, + { + "value": 3054, + "label": "同德县" + }, + { + "value": 3055, + "label": "贵德县" + }, + { + "value": 3056, + "label": "兴海县" + }, + { + "value": 3057, + "label": "贵南县" + } + ] + }, + { + "value": 3058, + "label": "果洛藏族自治州", + "children": [ + { + "value": 3064, + "label": "玛多县" + }, + { + "value": 3059, + "label": "玛沁县" + }, + { + "value": 3060, + "label": "班玛县" + }, + { + "value": 3061, + "label": "甘德县" + }, + { + "value": 3062, + "label": "达日县" + }, + { + "value": 3063, + "label": "久治县" + } + ] + }, + { + "value": 3065, + "label": "玉树藏族自治州", + "children": [ + { + "value": 3066, + "label": "玉树县" + }, + { + "value": 3067, + "label": "杂多县" + }, + { + "value": 3068, + "label": "称多县" + }, + { + "value": 3069, + "label": "治多县" + }, + { + "value": 3070, + "label": "囊谦县" + }, + { + "value": 3071, + "label": "曲麻莱县" + } + ] + }, + { + "value": 3072, + "label": "海西蒙古族藏族自治州", + "children": [ + { + "value": 3074, + "label": "德令哈市" + }, + { + "value": 3075, + "label": "乌兰县" + }, + { + "value": 3076, + "label": "都兰县" + }, + { + "value": 3077, + "label": "天峻县" + }, + { + "value": 3073, + "label": "格尔木市" + } + ] + } + ] + }, + { + "value": 3078, + "label": "宁夏回族自治区", + "children": [ + { + "value": 3079, + "label": "银川市", + "children": [ + { + "value": 3081, + "label": "西夏区" + }, + { + "value": 3082, + "label": "金凤区" + }, + { + "value": 3083, + "label": "永宁县" + }, + { + "value": 3084, + "label": "贺兰县" + }, + { + "value": 3085, + "label": "灵武市" + }, + { + "value": 3080, + "label": "兴庆区" + } + ] + }, + { + "value": 3086, + "label": "石嘴山市", + "children": [ + { + "value": 3088, + "label": "惠农区" + }, + { + "value": 3089, + "label": "平罗县" + }, + { + "value": 3087, + "label": "大武口区" + } + ] + }, + { + "value": 3090, + "label": "吴忠市", + "children": [ + { + "value": 3091, + "label": "利通区" + }, + { + "value": 3092, + "label": "红寺堡区" + }, + { + "value": 3093, + "label": "盐池县" + }, + { + "value": 3094, + "label": "同心县" + }, + { + "value": 3095, + "label": "青铜峡市" + } + ] + }, + { + "value": 3096, + "label": "固原市", + "children": [ + { + "value": 3097, + "label": "原州区" + }, + { + "value": 3098, + "label": "西吉县" + }, + { + "value": 3099, + "label": "隆德县" + }, + { + "value": 3100, + "label": "泾源县" + }, + { + "value": 3101, + "label": "彭阳县" + } + ] + }, + { + "value": 3102, + "label": "中卫市", + "children": [ + { + "value": 3103, + "label": "沙坡头区" + }, + { + "value": 3104, + "label": "中宁县" + }, + { + "value": 3105, + "label": "海原县" + } + ] + } + ] + }, + { + "value": 3106, + "label": "新疆维吾尔自治区", + "children": [ + { + "value": 3107, + "label": "乌鲁木齐市", + "children": [ + { + "value": 3108, + "label": "天山区" + }, + { + "value": 3109, + "label": "沙依巴克区" + }, + { + "value": 3110, + "label": "新市区" + }, + { + "value": 3111, + "label": "水磨沟区" + }, + { + "value": 3112, + "label": "头屯河区" + }, + { + "value": 3113, + "label": "达坂城区" + }, + { + "value": 3114, + "label": "米东区" + }, + { + "value": 3115, + "label": "乌鲁木齐县" + } + ] + }, + { + "value": 3116, + "label": "克拉玛依市", + "children": [ + { + "value": 3117, + "label": "独山子区" + }, + { + "value": 3118, + "label": "克拉玛依区" + }, + { + "value": 3119, + "label": "白碱滩区" + }, + { + "value": 3120, + "label": "乌尔禾区" + } + ] + }, + { + "value": 3121, + "label": "吐鲁番地区", + "children": [ + { + "value": 3122, + "label": "吐鲁番市" + }, + { + "value": 3123, + "label": "鄯善县" + }, + { + "value": 3124, + "label": "托克逊县" + } + ] + }, + { + "value": 3125, + "label": "哈密地区", + "children": [ + { + "value": 3126, + "label": "哈密市" + }, + { + "value": 3127, + "label": "巴里坤哈萨克自治县" + }, + { + "value": 3128, + "label": "伊吾县" + } + ] + }, + { + "value": 3129, + "label": "昌吉回族自治州", + "children": [ + { + "value": 3130, + "label": "昌吉市" + }, + { + "value": 3131, + "label": "阜康市" + }, + { + "value": 3132, + "label": "呼图壁县" + }, + { + "value": 3133, + "label": "玛纳斯县" + }, + { + "value": 3134, + "label": "奇台县" + }, + { + "value": 3135, + "label": "吉木萨尔县" + }, + { + "value": 3136, + "label": "木垒哈萨克自治县" + } + ] + }, + { + "value": 3137, + "label": "博尔塔拉蒙古自治州", + "children": [ + { + "value": 3139, + "label": "精河县" + }, + { + "value": 3140, + "label": "温泉县" + }, + { + "value": 3138, + "label": "博乐市" + } + ] + }, + { + "value": 3141, + "label": "巴音郭楞蒙古自治州", + "children": [ + { + "value": 3142, + "label": "库尔勒市" + }, + { + "value": 3143, + "label": "轮台县" + }, + { + "value": 3144, + "label": "尉犁县" + }, + { + "value": 3145, + "label": "若羌县" + }, + { + "value": 3146, + "label": "且末县" + }, + { + "value": 3147, + "label": "焉耆回族自治县" + }, + { + "value": 3148, + "label": "和静县" + }, + { + "value": 3149, + "label": "和硕县" + }, + { + "value": 3150, + "label": "博湖县" + } + ] + }, + { + "value": 3151, + "label": "阿克苏地区", + "children": [ + { + "value": 3158, + "label": "乌什县" + }, + { + "value": 3159, + "label": "阿瓦提县" + }, + { + "value": 3160, + "label": "柯坪县" + }, + { + "value": 3152, + "label": "阿克苏市" + }, + { + "value": 3153, + "label": "温宿县" + }, + { + "value": 3154, + "label": "库车县" + }, + { + "value": 3155, + "label": "沙雅县" + }, + { + "value": 3156, + "label": "新和县" + }, + { + "value": 3157, + "label": "拜城县" + } + ] + }, + { + "value": 3161, + "label": "克孜勒苏柯尔克孜自治州", + "children": [ + { + "value": 3165, + "label": "乌恰县" + }, + { + "value": 3162, + "label": "阿图什市" + }, + { + "value": 3163, + "label": "阿克陶县" + }, + { + "value": 3164, + "label": "阿合奇县" + } + ] + }, + { + "value": 3166, + "label": "喀什地区", + "children": [ + { + "value": 3167, + "label": "喀什市" + }, + { + "value": 3168, + "label": "疏附县" + }, + { + "value": 3169, + "label": "疏勒县" + }, + { + "value": 3170, + "label": "英吉沙县" + }, + { + "value": 3171, + "label": "泽普县" + }, + { + "value": 3172, + "label": "莎车县" + }, + { + "value": 3173, + "label": "叶城县" + }, + { + "value": 3174, + "label": "麦盖提县" + }, + { + "value": 3175, + "label": "岳普湖县" + }, + { + "value": 3176, + "label": "伽师县" + }, + { + "value": 3177, + "label": "巴楚县" + }, + { + "value": 3178, + "label": "塔什库尔干塔吉克自治县" + } + ] + }, + { + "value": 3179, + "label": "和田地区", + "children": [ + { + "value": 3180, + "label": "和田市" + }, + { + "value": 3181, + "label": "和田县" + }, + { + "value": 3182, + "label": "墨玉县" + }, + { + "value": 3183, + "label": "皮山县" + }, + { + "value": 3184, + "label": "洛浦县" + }, + { + "value": 3185, + "label": "策勒县" + }, + { + "value": 3186, + "label": "于田县" + }, + { + "value": 3187, + "label": "民丰县" + } + ] + }, + { + "value": 3188, + "label": "伊犁哈萨克自治州", + "children": [ + { + "value": 3189, + "label": "伊宁市" + }, + { + "value": 3190, + "label": "奎屯市" + }, + { + "value": 3191, + "label": "伊宁县" + }, + { + "value": 3192, + "label": "察布查尔锡伯自治县" + }, + { + "value": 3193, + "label": "霍城县" + }, + { + "value": 3194, + "label": "巩留县" + }, + { + "value": 3195, + "label": "新源县" + }, + { + "value": 3196, + "label": "昭苏县" + }, + { + "value": 3197, + "label": "特克斯县" + }, + { + "value": 3198, + "label": "尼勒克县" + } + ] + }, + { + "value": 3199, + "label": "塔城地区", + "children": [ + { + "value": 3200, + "label": "塔城市" + }, + { + "value": 3201, + "label": "乌苏市" + }, + { + "value": 3202, + "label": "额敏县" + }, + { + "value": 3203, + "label": "沙湾县" + }, + { + "value": 3204, + "label": "托里县" + }, + { + "value": 3205, + "label": "裕民县" + }, + { + "value": 3206, + "label": "和布克赛尔蒙古自治县" + } + ] + }, + { + "value": 3207, + "label": "阿勒泰地区", + "children": [ + { + "value": 3214, + "label": "吉木乃县" + }, + { + "value": 3208, + "label": "阿勒泰市" + }, + { + "value": 3209, + "label": "布尔津县" + }, + { + "value": 3210, + "label": "富蕴县" + }, + { + "value": 3211, + "label": "福海县" + }, + { + "value": 3212, + "label": "哈巴河县" + }, + { + "value": 3213, + "label": "青河县" + } + ] + }, + { + "value": 3215, + "label": "石河子市" + }, + { + "value": 3216, + "label": "阿拉尔市" + }, + { + "value": 3217, + "label": "图木舒克市" + }, + { + "value": 3218, + "label": "五家渠市" + } + ] + }, + { + "value": 3219, + "label": "台湾省", + "children": [ + { + "value": 3220, + "label": "台北市" + }, + { + "value": 3221, + "label": "高雄市" + }, + { + "value": 3222, + "label": "基隆市" + }, + { + "value": 3223, + "label": "台中市" + }, + { + "value": 3224, + "label": "台南市" + }, + { + "value": 3225, + "label": "新竹市" + }, + { + "value": 3226, + "label": "嘉义市" + }, + { + "value": 3227, + "label": "台北县" + }, + { + "value": 3228, + "label": "宜兰县" + }, + { + "value": 3229, + "label": "桃园县" + }, + { + "value": 3230, + "label": "新竹县" + }, + { + "value": 3231, + "label": "苗栗县" + }, + { + "value": 3232, + "label": "台中县" + }, + { + "value": 3233, + "label": "彰化县" + }, + { + "value": 3234, + "label": "南投县" + }, + { + "value": 3235, + "label": "云林县" + }, + { + "value": 3236, + "label": "嘉义县" + }, + { + "value": 3237, + "label": "台南县" + }, + { + "value": 3238, + "label": "高雄县" + }, + { + "value": 3239, + "label": "屏东县" + }, + { + "value": 3240, + "label": "台东县" + }, + { + "value": 3241, + "label": "花莲县" + }, + { + "value": 3242, + "label": "澎湖县" + } + ] + }, + { + "value": 3243, + "label": "香港特别行政区", + "children": [ + { + "value": 3244, + "label": "香港岛", + "children": [ + { + "value": 3245, + "label": "中西区" + }, + { + "value": 3246, + "label": "湾仔区" + }, + { + "value": 3247, + "label": "东区" + }, + { + "value": 3248, + "label": "南区" + } + ] + }, + { + "value": 3249, + "label": "九龙", + "children": [ + { + "value": 3250, + "label": "油尖旺区" + }, + { + "value": 3251, + "label": "深水埗区" + }, + { + "value": 3252, + "label": "九龙城区" + }, + { + "value": 3253, + "label": "黄大仙区" + },{ + "value": 3254, + "label": "观塘区" + } + ] + }, + { + "value": 3255, + "label": "新界", + "children": [ + { + "value": 3256, + "label": "葵青区" + }, + { + "value": 3257, + "label": "荃湾区" + }, + { + "value": 3258, + "label": "屯门区" + },{ + "value": 3259, + "label": "元朗区" + }, + { + "value": 3260, + "label": "北区" + }, + { + "value": 3261, + "label": "大埔区" + },{ + "value": 3262, + "label": "沙田区" + }, + { + "value": 3263, + "label": "西贡区" + }, + { + "value": 3264, + "label": "离岛区" + } + ] + } + ] + }, + { + "value": 3265, + "label": "澳门特别行政区", + "children": [ + { + "value": 3266, + "label": "花地玛堂区", + "children": [ + { + "value": 3267, + "label": "青洲区" + }, + { + "value": 3268, + "label": "台山区" + }, + { + "value": 3269, + "label": "马场区" + }, + { + "value": 3270, + "label": "祐汉区" + }, + { + "value": 3271, + "label": "黑沙环区" + }, + { + "value": 3272, + "label": "黑沙环新填海区" + }, + { + "value": 3273, + "label": "望厦及水塘区" + }, + { + "value": 3274, + "label": "筷子基区" + } + ] + }, + { + "value": 3275, + "label": "圣安多尼堂区", + "children": [ + { + "value": 3276, + "label": "林茂塘区" + }, + { + "value": 3277, + "label": "高士德及雅廉访区" + }, + { + "value": 3278, + "label": "新桥区" + }, + { + "value": 3279, + "label": "沙梨头及大三巴区" + } + ] + }, + { + "value": 3280, + "label": "大堂区", + "children": [ + { + "value": 3281, + "label": "新口岸区" + }, + { + "value": 3282, + "label": "外港及南湾湖新填海区" + }, + { + "value": 3283, + "label": "中区" + } + ] + }, + { + "value": 3284, + "label": "望德堂区", + "children": [ + { + "value": 3285, + "label": "荷兰园区" + }, + { + "value": 3286, + "label": "东望洋区(松山区)" + } + ] + }, + { + "value": 3287, + "label": "风顺堂区", + "children": [ + { + "value": 3288, + "label": "下环区" + }, + { + "value": 3289, + "label": "南西湾及主教山区" + } + ] + }, + { + "value": 3290, + "label": "嘉模堂区", + "children": [ + { + "value": 3291, + "label": "海洋及小潭山区" + }, + { + "value": 3292, + "label": "氹仔中心区" + }, + { + "value": 3293, + "label": "大学及北安湾区" + }, + { + "value": 3294, + "label": "北安及大潭山区" + }, + { + "value": 3295, + "label": "氹仔旧城及马场区" + }, + { + "value": 3296, + "label": "澳门大学新校区" + } + ] + }, + { + "value": 3297, + "label": "圣方济各堂区", + "children": [ + { + "value": 3298, + "label": "路环市区" + }, + { + "value": 3299, + "label": "石排湾" + }, + { + "value": 3300, + "label": "九澳村" + }, + { + "value": 3301, + "label": "黑沙村" + } + ] + }, + { + "value": 3302, + "label": "路氹城" + }, + { + "value": 3303, + "label": "澳门新城区" + } + ] + } +] + + +export default RegionTree; diff --git a/web - 副本/client/src/utils/single-login.js b/web - 副本/client/src/utils/single-login.js new file mode 100644 index 0000000..de09f6d --- /dev/null +++ b/web - 副本/client/src/utils/single-login.js @@ -0,0 +1,4 @@ +export const SingleHref = `http://192.6.36.158:8000/`; +export const localFlag = false; +// export const LoginHref = `http://122.51.196.166:3002/#/login?source=http://localhost:5000?`; + diff --git a/web - 副本/client/src/utils/state-helper.js b/web - 副本/client/src/utils/state-helper.js new file mode 100644 index 0000000..9c3c1ae --- /dev/null +++ b/web - 副本/client/src/utils/state-helper.js @@ -0,0 +1,21 @@ +/* +* Created by Zhangfeihong 21/8/13 +*/ +'use strict' + +export function reducerCreater(initialState, state, action) { + const { type, payload } = action; + if (!!initialState) { + const keys = Object.keys(initialState) + let keyLength = keys.length; + if (keyLength) { + for (var key of keys) { + if (key == type) { + let newState = {}; + newState[key] = payload; + return Object.assign({}, state, newState); + } + } + } + } +} \ No newline at end of file diff --git a/web - 副本/client/src/utils/webapi.js b/web - 副本/client/src/utils/webapi.js new file mode 100644 index 0000000..707cac9 --- /dev/null +++ b/web - 副本/client/src/utils/webapi.js @@ -0,0 +1,280 @@ +import request from "superagent"; +import noCache from "superagent-no-cache"; + +export const ApiTable = { + getDataList: "article/management", //全部资讯 + delDataList: "article/management", //删除资讯 + addArticle: "article/management", + checkDomain: "domain/{domain}", + resetPwd: "reset/password", + phoneVCode: "validate/phone", + checkPhone: "check/phone", + checkRegcode: "validate/regcode", + login: "login", + logout: "logout", + + /* 个人设置 */ + getUserInfo: "users/{userId}/details", + modifyUserInfo: "users/{userId}/{type}", + modifyEmail: "users/{userId}/email", + modifyAvator: "user/{userId}/avator", + modifySmsEnable: "users/{userId}/sms-notification/enable", + modifyEmailEnable: "users/{userId}/email-notification/enable", + modifySmsDisable: "users/{userId}/sms-notification/disable", + modifyEmailDisable: "users/{userId}/email-notification/disable", + modifyWxEnable: "/users/{userId}/wx-notification/enable", + modifyWxDisable: "/users/{userId}/wx-notification/disable", + midifyDndEnable: "users/{userId}/dnd/enable", + modifyDndDisable: "users/{userId}/dnd/disable", + modifyPassWord: "users/{userId}/password", + modifyName: "users/{userId}/name", + + /* 企业 */ + getEnterprisesDetails: "users/{userId}/enterprises/details", + getEnterprisesMembers: "enterprises/{enterpriseId}/members", + getEnterprisesRoles: "enterprises/{enterpriseId}/roles", + getPostsUrl: "posts", + addDepartment: "enterprises/{enterpriseId}/departments", + deleteDepartment: "departments/{departmentId}", + modifyDepartment: "departments/{departmentId}/rename", + sortDepartment: "departments/sort", + sortDepartmentUsers: "department/users/sort", + enableMember: "members/{memberId}/enable", + disableMember: "members/{memberId}/disable", + addMember: "members", + deleteMember: "members/{memberId}", + modifyMember: "members/{memberId}", + modifyEnterprise: "enterprises/{enterpriseId}", + + /* 权限 */ + getAuthorList: "org/{orgId}/resources", + getProejectAuthorList: "org/{orgId}/project/resources", + getAuthorByRoleId: "role/{roleId}/resources", + modifyAuthor: "role/{roleId}/resources", + modifyRoleUsers: "role/{roleId}/users", + modifyRoleStructures: "role/{roleId}/structures", + modifyDepartmentUsers: "department/{depId}/users", + deleteRoleUsers: "role/{roleId}/users/remove", + getDepartmentResources: "orgs/{orgId}/department/resources?platform=true", + modifyDepartmentResources: "department/{departmentId}/resources", + addGroupRoleUrl: "group/role", + groupRoleUrlById: "group/{groupId}/role", + addRoleUrl: "role", + roleUrlById: "role/{roleId}", + + /* 项目 */ + getProjects: "users/{userId}/projects", + addProject: "users/{userId}/projects", + editProject: "projects/{projectId}", + deleteProject: "projects/{projectId}", + editProjectAdmin: "projects/{projectId}/admin", + editProjectUrl: "projects/{projectId}/url", + applyProject: "projects/{projectId}/apply", + reviewedProject: "projects/{projectId}/reviewed", + publishProject: "projects/{projectId}/publish", + generateReviewReport: "reports/review/immediately", + getReviewReport: "reports/review", + changeProjectEventState: "projects/{projectId}/evnetState", + + /* 结构物管理 */ + getStructsList: "organizations/{organizationId}/structures", + getStructsListWithoutIOTA: + "organizations/{organizationId}/withoutiota/structures", + // 系统日志 + getSystemLog: "/log", + + // 大屏 + getCarstatisticsUrl: "statistics/cars", + getAlarmsUrl: "alarms", + getDevicesUrl: "devices", + getVideoToken: "video/accessToken", + getVideoList: "video/list", + getLastDataUrl: "last-data/{structId}", + + // 隧道配置 + getTunnels: "tunnels", + getTunnelSystems: "tunnel/systems", + createTunnel: "tunnel", + modifyTunnel: "tunnel/{tunnelId}", + + // 设备配置 + getDevices: "devices", + getDeviceTypes: "device/types", + createDevice: "device", + modifyDevice: "device/{deviceId}", + getDeviceStatistics: "devices/statistics/{key}", + getDeviceStatusRecords: "devices/status-records", + + // 广播系统 + getBroadcastLogin: "control/20140901/infs/login.json", + getBroadcastEmployee: "control/api_v2.2.5/employee/query/queryAll.json", + getBroadcastTask: "control/api_v2.2.5/broad/query/all.json", + getPhoneRecords: "control/20210628/infs/getAllCdrs.json", + getBroadcastAlarms: "control/api_v2.2.5/alarm/query/queryAll.json", + + // 视频模块 + getTunnelVideos: "tunnel/{id}/videos", + ptzsControl: "tunnel/{id}/ptzsControl", + getTrafficFlow: "traffic/{id}", + getVideoUrls: "video/{id}/urls", + getTerminals: "tunnel/{id}/terminals", + getTerminalDetail: "terminal/{id}/detail", + getTunnelVideosById: "tunnel/{id}/videos", + getRobotRequest: "tunnel/{id}/robot", + // 操作日志配置 + getLogs: "logs", + createLog: "log", + modifyLog: "log/{logId}", + + // 积水健康监测 + fsLoginUrl: "login", + getSensorsStations: "structures/{structureId}/sensors-stations", + getFactorDevice: "structures/{structureId}/factors/{factorId}/devices", + getStationsData: + "structures/{structureId}/factors/{factorId}/stations/data?startTime={startTime}&endTime={endTime}", + getBatchThreshold: + "structures/{structId}/factors/{factorId}/threshold/batches", + getStationThemesData: "stations/theme/data", + getStations: "structures/{structureId}/stations", + + // 告警管理 + getAlarms: "users/{userId}/alarms", + modifyAlarmChecked: "alarms/check", + + // 机器人 + robotRequest: "tunnel/{id}/robot", + //党员工会人数统计接口 + getpartyMember: "laborUnion/count", + // 文章获取 + getText: "article/management/query", + //支委会人员信息 + getCommittee: "partyOrganizations", //获取支委会人员 + postCommittee: "partyOrganization", //新增 + putCommittee: "partyOrganization/:id", //修改 + apiRoot: 'query/api/root', +}; + +export const RouteTable = { + apiRoot: "/api/root", + fileUpload: "/_upload/new", + resourceUpload: "/_upload/new", + cleanUpUploadTrash: "/_upload/cleanup", + + upload: "/_upload/attachments/:p", + remove: "/_upload/remove/attachments", + download: "/_upload/attachments", +}; + +export const buildUrl = (url) => { + const apiurl = url; + const user = JSON.parse(sessionStorage.getItem("user")); + if (user == null || url.indexOf("http") !== -1) { + return apiurl; + } + const connector = url.indexOf("?") === -1 ? "?" : "&"; + return `${apiurl}${connector}token=${user.token}`; +}; + +const getToken = () => { + const { search } = window.location; + const hasToken = search.includes("token"); + return hasToken ? search.match(/token=(.*)/)[1] : null; +}; + +const setHeader = () => { + const user = JSON.parse(sessionStorage.getItem("user")); + if (user == null) { + const token = getToken(); + if (token) { + return { + token, + }; + } + return {}; + } + return { + token: user.token, + }; +}; + +const resultHandler = (resolve, reject) => (err, res) => { + if (err) { + if (err.status === 401) { + // 退出到登录页 + const user = JSON.parse(sessionStorage.getItem("user")); + sessionStorage.removeItem("user"); + if (user && user.domain) { + window.document.location.replace(`/${user.domain}/signin`); + } else { + window.document.location.replace("/signin"); + } + reject("unauth"); + } else { + reject(err); + } + } else { + resolve(res.body); + } +}; + +export class Request { + static get = (url, query) => + new Promise((resolve, reject) => { + request + .get(buildUrl(url)) + .set(setHeader()) + .query(query) + .use(noCache) + .end(resultHandler(resolve, reject)); + }); + + static post = (url, data, query) => + new Promise((resolve, reject) => { + request + .post(buildUrl(url)) + .set(setHeader()) + .query(query) + .use(noCache) + .send(data) + .end(resultHandler(resolve, reject)); + }); + + static put = (url, data, query) => + new Promise((resolve, reject) => { + request + .put(buildUrl(url)) + .set(setHeader()) + .query(query) + .use(noCache) + .send(data) + .end(resultHandler(resolve, reject)); + }); + + static delete = (url) => + new Promise((resolve, reject) => { + request + .delete(buildUrl(url)) + .set(setHeader()) + .use(noCache) + .end(resultHandler(resolve, reject)); + }); + + static mockGet = (url, query, header) => + new Promise((resolve, reject) => { + request + .get(url) + .set(header) + .query(query) + .end(resultHandler(resolve, reject)); + }); + + static mockPost = (url, data, query, header) => + new Promise((resolve, reject) => { + request + .post(url) + .set(header) + .query(query) + .send(data) + .end(resultHandler(resolve, reject)); + }); +} diff --git a/web - 副本/color.js b/web - 副本/color.js new file mode 100644 index 0000000..9944353 --- /dev/null +++ b/web - 副本/color.js @@ -0,0 +1,72 @@ +const path = require('path'); +const fs = require('fs'); +const { generateTheme, getLessVars } = require('antd-theme-generator'); + +const themeVariables = getLessVars(path.join(__dirname, './client/src/styles/theme.less')); +const defaultVars = getLessVars('./node_modules/antd/lib/style/themes/default.less'); + +const darkVars = { + ...getLessVars('./node_modules/antd/lib/style/themes/dark.less'), + '@primary-color': '#2F53EA', + '@picker-basic-cell-active-with-range-color': 'darken(@primary-color, 20%)', + '@layout-header-background': '#1F2439', + '@layout-breadcrum-background': '#2A2D38', + '@layout-body-background': '#1F2127', + '@layout-header-shadow': '0px 3px 6px -4px rgba(0, 0, 0, 0.25)', + '@layout-slder-shadow': '3px 0px 6px -4px rgba(0, 0, 0, 0.25)', + '@layout-content-background': '#2A2D38', + '@mark-background-color': '#f5fdca', + '@component-background': '#2A2D38', + +}; +const lightVars = { + ...getLessVars('./node_modules/antd/lib/style/themes/compact.less'), + '@primary-color': '#0057C9', + '@layout-header-background': defaultVars['@white'], + '@layout-breadcrum-background': defaultVars['@white'], + '@layout-content-background': defaultVars['@white'], + '@layout-body-background': '#F6F6F7', + '@layout-header-shadow': '0px 3px 6px -4px rgba(0, 0, 0, 0.12)', + '@layout-slder-shadow': '3px 0px 6px -4px rgba(0, 0, 0, 0.12)', + '@mark-background-color': '#f5fdca', + '@component-background': '#FFF', +}; +fs.writeFileSync('./client/src/themes/dark.json', JSON.stringify(darkVars)); +fs.writeFileSync('./client/src/themes/light.json', JSON.stringify(lightVars)); +fs.writeFileSync('./client/src/themes/theme.json', JSON.stringify(themeVariables)); + +const options = { + stylesDir: path.join(__dirname, './client/src/styles'), + antDir: path.join(__dirname, './node_modules/antd'), + varFile: path.join(__dirname, './client/src/styles/theme.less'), + // mainLessFile: path.join(__dirname, './client/src/styles/antd.less'), + themeVariables: Array.from(new Set([ + ...Object.keys(darkVars), + ...Object.keys(lightVars), + ...Object.keys(themeVariables), + ])), + // themeVariables: [ + // '@primary-color', + // '@link-color', + // '@secondary-color', + // '@text-color', + // '@text-color-secondary', + // '@disabled-color', + // '@heading-color', + // '@layout-body-background', + // '@btn-primary-bg', + // '@layout-header-background', + // '@border-color-base', + // '@component-background', + // '@body-background' + // ], + indexFileName: 'index.html', + outputFilePath: path.join(__dirname, './client/assets/color.less'), + customColorRegexArray: [/^fade\(.*\)$/], +}; + +generateTheme(options).then((less) => { + console.log('Theme generated successfully'); +}).catch((error) => { + console.log('Error', error); +}); diff --git a/web - 副本/config.js b/web - 副本/config.js new file mode 100644 index 0000000..c650bc8 --- /dev/null +++ b/web - 副本/config.js @@ -0,0 +1,116 @@ +/* eslint-disable global-require */ +/* jslint node:true */ +const path = require('path'); +/* 这种以CommonJS的同步形式去引入其它模块的方式代码更加简洁:获取组件 */ +const os = require('os'); +const moment = require('moment'); +const args = require('args'); + +const dev = process.env.NODE_ENV === 'development'; +// const dev = true; + + +dev && console.log('\x1B[33m%s\x1b[0m', '请遵循并及时更新 readme.md,维护良好的开发环境,媛猿有责'); +// // 启动参数 +args.option(['p', 'port'], '启动端口'); +args.option(['u', 'api-url'], 'webapi的URL'); +// args.option(['f', 'fm-url'], '广播数据第三方系统api的URL'); +args.option('qndmn', '七牛'); +const flags = args.parse(process.argv); + +const FS_UNIAPP_API = process.env.FS_UNIAPP_API || flags.apiUrl; +const ANXINCLOUD_QINIU_ACCESSKEY = process.env.ANXINCLOUD_QINIU_ACCESSKEY || '5XrM4wEB9YU6RQwT64sPzzE6cYFKZgssdP5Kj3uu'; +const ANXINCLOUD_QINIU_SECRETKEY = process.env.ANXINCLOUD_QINIU_SECRETKEY || 'w6j2ixR_i-aelc6I7S3HotKIX-ukMzcKmDfH6-M5'; +const ANXINCLOUD_QINIU_BUCKET_RESOURCE = process.env.ANXINCLOUD_QINIU_BUCKET_RESOURCE || 'anxinyun-test'; +const ANXINCLOUD_QINIU_DOMAIN_QNDMN_RESOURCE = process.env.ANXINCLOUD_QINIU_DOMAIN_QNDMN_RESOURCE || 'http://test.resources.anxinyun.cn'; +const QINIU_DOMAIN_QNDMN_RESOURCE = process.env.ANXINCLOUD_QINIU_DOMAIN_QNDMN_RESOURCE || flags.qndmn; +// const FS_FM_API = process.env.FS_FM_API || flags.fmUrl; + +// if (!FS_UNIAPP_API) { +// console.log('缺少启动参数,异常退出'); +// args.showHelp(); +// process.exit(-1); +// } + +const product = { + port: flags.port || 8080, + staticDirs: [path.join(__dirname, './client')], + mws: [{ + entry: require('./middlewares/proxy').entry, + opts: { + host: FS_UNIAPP_API, + match: /^\/_api\//, + }, + }, { + entry: require('./middlewares/proxy').entry, + opts: { + host: QINIU_DOMAIN_QNDMN_RESOURCE, + match: /^\/_file-server\//, + } +}, + { + entry: require('./routes').entry, + opts: { + apiUrl: FS_UNIAPP_API, + staticRoot: './client', + qndmn: QINIU_DOMAIN_QNDMN_RESOURCE, + qiniu: { + fetchUrl: '/_file-server', + domain: ANXINCLOUD_QINIU_DOMAIN_QNDMN_RESOURCE + }, + }, + }, + { + entry: require('./middlewares/attachment').entry, + opts: { + qiniu: { + accessKey: ANXINCLOUD_QINIU_ACCESSKEY, + secretKey: ANXINCLOUD_QINIU_SECRETKEY, + bucket: ANXINCLOUD_QINIU_BUCKET_RESOURCE, + domain: ANXINCLOUD_QINIU_DOMAIN_QNDMN_RESOURCE + }, + maxSize: 10485760 * 10, // 100M + uploadPath: 'conmfortable-home' + } + }, + { + entry: require('./client').entry, // 静态信息 + opts: {}, + }], + logger: { + level: 'debug', + json: false, + filename: path.join(__dirname, 'log', 'runtime.txt'), + colorize: true, + maxsize: 1024 * 1024 * 5, + rotationFormat: false, + zippedArchive: true, + maxFiles: 10, + prettyPrint: true, + label: '', + timestamp: () => moment().format('YYYY-MM-DD HH:mm:ss.SSS'), + eol: os.EOL, + tailable: true, + depth: null, + showLevel: true, + maxRetries: 1, + }, +}; + +let config; +if (dev) { + config = { + port: product.port, + staticDirs: product.staticDirs, + mws: product.mws.concat([{ + entry: require('./middlewares/webpack-dev').entry, + opts: {}, + }]), + logger: product.logger, + }; + config.logger.filename = path.join(__dirname, 'log', 'development.txt'); +} else { + config = product; +} + +module.exports = config; // 区分开发和发布 diff --git a/web - 副本/directoryList.md b/web - 副本/directoryList.md new file mode 100644 index 0000000..3d7a79c --- /dev/null +++ b/web - 副本/directoryList.md @@ -0,0 +1,136 @@ +``` + |-- .babelrc + |-- color.js + |-- config.js + |-- Dockerfile + |-- jsconfig.json + |-- package.json + |-- readme.md + |-- server.js + |-- webpack.config.js + |-- webpack.config.prod.js + |-- .vscode + | |-- launch.json + | |-- settings.json + |-- client + | |-- index.ejs + | |-- index.html + | |-- index.js + | |-- assets + | | |-- color.less + | | |-- files + | | |-- fonticon + | | |-- font_sc + | | |-- images + | | |-- avatar + | | |-- loginUi + | |-- src + | |-- app.js + | |-- index.js + | |-- components + | | |-- index.js + | | |-- README.txt + | | |-- flowRecordTable + | | | |-- index.js + | | | |-- index.less + | | |-- limit-textarea + | | | |-- index.js + | | | |-- index.less + | | |-- no-resource + | | | |-- index.js + | | |-- search + | | | |-- index.js + | | | |-- index.less + | | |-- sketchColor + | | | |-- index.js + | | |-- table + | | | |-- index.js + | | | |-- index.less + | | |-- Upload + | | |-- index.js + | |-- layout + | | |-- index.js + | | |-- actions + | | | |-- global.js + | | |-- components + | | | |-- footer + | | | | |-- index.js + | | | | |-- style.css + | | | |-- header + | | | | |-- index.js + | | | | |-- style.css + | | | |-- sider + | | | |-- index.js + | | |-- containers + | | | |-- index.js + | | | |-- layout + | | | | |-- breadcrumb.js + | | | | |-- index.js + | | | | |-- index.less + | | | |-- no-match + | | | |-- index.js + | | |-- reducers + | | | |-- ajaxResponse.js + | | | |-- global.js + | | | |-- index.js + | | |-- store + | | |-- index.js + | | |-- store.dev.js + | | |-- store.prod.js + | |-- sections + | | |-- auth + | | | |-- index.js + | | | |-- routes.js + | | | |-- actions + | | | | |-- auth.js + | | | | |-- index.js + | | | |-- components + | | | |-- containers + | | | | |-- index.js + | | | | |-- login.js + | | | |-- reducers + | | | | |-- auth.js + | | | | |-- index.js + | | | |-- __tests__ + | | |-- example + | | |-- index.js + | | |-- nav-item.js + | | |-- routes.js + | | |-- style.less + | | |-- actions + | | | |-- example.js + | | | |-- index.js + | | |-- components + | | |-- containers + | | | |-- example.js + | | | |-- index.js + | | |-- reducers + | | |-- index.js + | |-- styles + | | |-- antd.less + | | |-- theme.less + | |-- themes + | | |-- dark.json + | | |-- light.json + | | |-- theme.json + | |-- utils + | |-- authCode.js + | |-- func.js + | |-- index.js + | |-- region.js + | |-- webapi.js + | |-- __tests__ + |-- log + |-- middlewares + | |-- proxy.js + | |-- webpack-dev.js + |-- routes + | |-- index.js + | |-- attachment + | |-- index.js + |-- typings + |-- node + | |-- node.d.ts + |-- react + |-- react.d.ts +``` \ No newline at end of file diff --git a/web - 副本/jsconfig.json b/web - 副本/jsconfig.json new file mode 100644 index 0000000..4d42a9a --- /dev/null +++ b/web - 副本/jsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "allowSyntheticDefaultImports": true, + "jsx": "react", + "paths": { + "$utils/*": ["./client/src/utils/*"], + "$components/*": ["./client/src/components/*"], + "$themes/*": ["./client/src/themes/*"], + "@peace/plugins/*": ["./client/src/sections/*"] + } + }, + "exclude": [ + "node_modules", + "bower_components", + "jspm_packages", + "tmp", + "temp" + ] +} diff --git a/web - 副本/middlewares/attachment.js b/web - 副本/middlewares/attachment.js new file mode 100644 index 0000000..16eb449 --- /dev/null +++ b/web - 副本/middlewares/attachment.js @@ -0,0 +1,23 @@ +/** + * Created by PengLing on 2018/1/2. + */ +'use strict'; + +const Attachment = require('fs-attachment'); + +module.exports = { + entry: function (app, router, opts) { + const attachment = new Attachment(opts); + + app.fs = app.fs || {}; + app.fs.attachment = attachment; + + app.fs.logger.log('debug', 'init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)'); + + return async (ctx, next) => { + ctx.fs = ctx.fs || {}; + ctx.fs.attachment = attachment; + await next(); + }; + } +}; diff --git a/web - 副本/middlewares/proxy.js b/web - 副本/middlewares/proxy.js new file mode 100644 index 0000000..cb389db --- /dev/null +++ b/web - 副本/middlewares/proxy.js @@ -0,0 +1,23 @@ +const proxy = require('koa-proxy'); +const convert = require('koa-convert'); + +module.exports = { + entry(app, router, opts) { + app.use(convert(proxy({ + host: opts.host, + match: opts.match, + map(path) { + return path.replace(opts.match, ''); + }, + }))); + // Object.keys(opts).forEach((option) => { + // app.use(convert(proxy({ + // host: opts[option].host, + // match: opts[option].match, + // map(path) { + // return path.replace(opts[option].match, ''); + // }, + // }))); + // }); + }, +}; diff --git a/web - 副本/middlewares/webpack-dev.js b/web - 副本/middlewares/webpack-dev.js new file mode 100644 index 0000000..6bffb15 --- /dev/null +++ b/web - 副本/middlewares/webpack-dev.js @@ -0,0 +1,39 @@ +const express = require('express'); +const webpack = require('webpack'); +const middleware = require('webpack-dev-middleware'); +const proxy = require('koa-better-http-proxy'); +const url = require('url'); +const devConfig = require('../webpack.config'); + +const compiler = webpack(devConfig); + +module.exports = { + entry(app, router, opts) { + app.use(proxy('http://localhost:5001', { + filter(ctx) { + return /\/build/.test(url.parse(ctx.url).path); + }, + proxyReqPathResolver(ctx) { + return `client${url.parse(ctx.url).path}`; + }, + })); + + app.use(proxy('http://localhost:5001', { + filter(ctx) { + return /\/$/.test(url.parse(ctx.url).path); + }, + proxyReqPathResolver(ctx) { + return 'client/build/index.html'; + }, + })); + + const server = express(); + server.use(middleware(compiler)); + // server.use(require("webpack-hot-middleware")(compiler)); + server.listen('5001', (err) => { + if (err) { + console.log(err); + } + }); + }, +}; diff --git a/web - 副本/package.json b/web - 副本/package.json new file mode 100644 index 0000000..2bbfa7d --- /dev/null +++ b/web - 副本/package.json @@ -0,0 +1,131 @@ +{ + "name": "fs-anxincloud-4.0", + "version": "1.0.0", + "description": "anxincloud-4.0", + "main": "server.js", + "scripts": { + "test": "mocha", + "start": "cross-env NODE_ENV=development npm run start-params", + "start-params": "npm run color && node server -p 5002 -u http://127.0.0.1:3000", + "deploy": "export NODE_ENV=production&&npm run color && npm run build && node server", + "build-dev": "export NODE_ENV=development&&webpack --config webpack.config.js", + "build": "export NODE_ENV=production&&npm run color&&webpack --config webpack.config.prod.js", + "color": "node color" + }, + "keywords": [ + "app" + ], + "author": "", + "license": "ISC", + "devDependencies": { + "@babel/core": "^7.14.6", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.14.7", + "@babel/plugin-transform-runtime": "^7.14.5", + "@babel/polyfill": "^7.12.1", + "@babel/preset-env": "^7.14.7", + "@babel/preset-react": "^7.14.5", + "@babel/register": "^7.15.3", + "babel-loader": "^8.2.2", + "babel-plugin-import": "^1.13.3", + "connected-react-router": "^6.8.0", + "crypto-js": "^4.1.1", + "css-loader": "^3.5.0", + "eslint": "^8.2.0", + "immutable": "^3.8.1", + "eslint-config-airbnb": "^19.0.4", + "eslint-import-resolver-webpack": "^0.13.2", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-react-hooks": "^4.3.0", + "express": "^4.17.1", + "file-loader": "^6.0.0", + "html-webpack-plugin": "^4.5.0", + "less": "^3.12.2", + "less-loader": "^7.0.2", + "natty-fetch": "^2.5.3", + "nprogress": "^0.2.0", + "path-to-regexp": "^2.4.0", + "react-copy-to-clipboard": "^5.0.1", + "react-dnd": "^13.1.1", + "react-dnd-html5-backend": "^12.1.1", + "react-if": "^2.2.1", + "react-quill": "^1.3.5", + "redux": "^4.0.5", + "redux-thunk": "^2.3.0", + "redux-undo": "^1.0.1", + "style-loader": "^2.0.0", + "webpack": "^5.3.2", + "webpack-bundle-analyzer": "^4.1.0", + "webpack-cli": "^4.2.0", + "webpack-dev-middleware": "^4.0.2", + "webpack-hot-middleware": "^2.25.0" + }, + "dependencies": { + "@amap/amap-react": "^0.1.3", + "@ant-design/icons": "^4.6.2", + "@ant-design/pro-card": "^1.14.22", + "@ant-design/pro-form": "^1.42.1", + "@ant-design/pro-table": "^2.54.4", + "@babel/runtime": "^7.15.4", + "@fs/attachment": "^1.0.2", + "@jiaminghi/data-view-react": "^1.2.5", + "@peace/components": "0.0.43", + "@peace/plugins": "0.0.43", + "@peace/utils": "^0.0.43", + "@react-spring/three": "^9.4.3", + "@react-spring/web": "^9.4.3", + "@react-three/drei": "^8.10.6", + "@react-three/fiber": "^7.0.26", + "@react-three/postprocessing": "^2.1.6", + "ahooks": "^3.1.14", + "antd": "^4.14.1", + "antd-theme-generator": "^1.2.8", + "args": "^5.0.1", + "array-move": "^3.0.1", + "braft-editor": "^2.3.9", + "classnames": "^2.3.1", + "co-busboy": "^1.4.1", + "core-js": "^2.6.5", + "cropperjs": "^1.5.12", + "cross-env": "^7.0.3", + "echarts": "^5.2.1", + "echarts-for-react": "^3.0.1", + "file-saver": "^2.0.5", + "form-data": "^3.0.0", + "fs-attachment": "^1.0.0", + "fs-web-server-scaffold": "^1.0.6", + "hls.js": "^1.1.5", + "i": "^0.3.6", + "iconv-lite": "^0.4.13", + "json2csv": "^3.6.2", + "koa-better-http-proxy": "^0.2.5", + "koa-convert": "^2.0.0", + "koa-proxy": "^1.0.0-alpha.3", + "koa-view": "^2.1.4", + "leva": "^0.9.23", + "mini-dynamic-antd-theme": "^0.5.3", + "moment": "^2.22.0", + "npm": "^7.20.6", + "perfect-scrollbar": "^1.5.5", + "postprocessing": "^6.24.1", + "qs": "^6.10.1", + "rc-resize-observer": "^1.0.1", + "react": "^17.0.0", + "react-color": "^2.19.3", + "react-cropper": "^2.1.8", + "react-dom": "^17.0.0", + "react-h5-audio-player": "^3.8.3", + "react-highlight-words": "^0.17.0", + "react-redux": "^7.2.1", + "react-router-breadcrumbs-hoc": "^4.0.1", + "react-router-dom": "^5.2.0", + "react-router-redux": "^4.0.8", + "react-sortable-hoc": "^2.0.0", + "superagent": "^6.1.0", + "three": "^0.137.5", + "uuid": "^8.3.1", + "xlsx": "^0.16.9" + } +} diff --git a/web - 副本/readme.md b/web - 副本/readme.md new file mode 100644 index 0000000..d2a162d --- /dev/null +++ b/web - 副本/readme.md @@ -0,0 +1,278 @@ +创建时间:2022/1/28 + +最后修改时间: 2022/1/28 + +## 1. 项目说明: + +- 项目名称: 南昌市政隧道综合管理平台 +- 开发技术栈: node12+, React17+, antd4.X. +- 代码 svn 路径: http://10.8.30.22/FS-Anxinyun/truck/codes/web/console +- 开发人员: 徐蒙、彭鹏、孔斌 +- 备注信息: + +## 2. 文档维护: + +- 文档相关内容若有更改,请及时更新文档,以备后来者查询; + +## 3. 项目开发: + +- 请遵循此文档约定的目录结构与约定 + +```js + |-- .babelrc + |-- color.js + |-- config.js + |-- Dockerfile + |-- jsconfig.json + |-- package.json + |-- readme.md + |-- server.js + |-- webpack.config.js + |-- webpack.config.prod.js + |-- .vscode + | |-- launch.json + | |-- settings.json + |-- client + | |-- index.ejs + | |-- index.html // 当前 html 文件 + | |-- index.js + | |-- assets // 资源文件 + | | |-- color.less + | | |-- files + | | |-- fonticon + | | |-- font_sc + | | |-- images + | | |-- avatar + | | |-- loginUi + | |-- src // 项目代码 + | |-- app.js // 由此开始并加载模块 + | |-- index.js + | |-- components // 公用组件 + | | |-- index.js // 由此导出组件 + | | |-- Upload + | | |-- index.js + | |-- layout // 项目布局以及初始化等操作 + | | |-- index.js + | | |-- actions + | | | |-- global.js + | | |-- components + | | | |-- footer + | | | | |-- index.js + | | | | |-- style.css + | | | |-- header + | | | | |-- index.js + | | | | |-- style.css + | | | |-- sider + | | | |-- index.js + | | |-- containers + | | | |-- index.js + | | | |-- layout + | | | | |-- breadcrumb.js // 面包屑组件 + | | | | |-- index.js + | | | | |-- index.less + | | | |-- no-match + | | | |-- index.js + | | |-- reducers + | | | |-- ajaxResponse.js + | | | |-- global.js // 全局数据,主要包含屏幕可视宽高、所有的 action 等 + | | | |-- index.js + | | |-- store + | | |-- index.js + | | |-- store.dev.js + | | |-- store.prod.js + | |-- sections // 各功能模块 + | | |-- auth // 比较特别的 Auth 模块,目前 action、reducer 依然采用原始写法;包含登录、忘记密码等项目基本功能页面 + | | | |-- index.js + | | | |-- routes.js + | | | |-- actions + | | | | |-- auth.js + | | | | |-- index.js + | | | |-- components + | | | |-- containers + | | | | |-- index.js + | | | | |-- login.js + | | | |-- reducers + | | | | |-- auth.js + | | | | |-- index.js + | | | |-- __tests__ + | | |-- example // 示例模块,一般的功能模块应遵循此结构 + | | |-- index.js // 由此导出该模块信息,应包括一个 key 值,actions 等 + | | |-- nav-item.js // 用于生成菜单项,此文件内可以进行权限判断 + | | |-- routes.js // 路由文件 + | | |-- style.less // 样式文件,若样式并不是非常多,每个模块一个样式文件即可 + | | |-- actions + | | | |-- example.js // 具体的 action 操作 + | | | |-- index.js // 由此导出该项目的 action + | | |-- components // 组件 + | | |-- containers // 容器,此文件夹内应只包括该模块第一层级的页面 + | | | |-- example.js + | | | |-- index.js + | | |-- reducers // 若采用封装后的 action 写法,则 reducer 可不写 + | | |-- index.js + | |-- styles // 待初始化的主题样式 + | | |-- antd.less + | | |-- theme.less + | |-- themes // 初始化后的主题样式文件 + | | |-- dark.json + | | |-- light.json + | | |-- theme.json + | |-- utils // + | |-- authCode.js + | |-- func.js // 常用函数 + | |-- index.js + | |-- region.js + | |-- webapi.js // api 路由 + |-- log + |-- middlewares + | |-- proxy.js + | |-- webpack-dev.js + |-- routes + | |-- index.js + | |-- attachment + |-- typings + |-- node + | |-- node.d.ts + |-- react + |-- react.d.ts +``` + +- 封装后一般 action 写法: + + `@peace/utils 的 actionHelp 中有详细注释` + + ```js + "use strict"; + + import { basicAction } from "@peace/utils"; + import { ApiTable } from "$utils"; + + export function getMembers(orgId) { + return (dispatch) => + basicAction({ + type: "get", + dispatch: dispatch, + actionType: "GET_MEMBERS", + url: `${ApiTable.getEnterprisesMembers.replace( + "{enterpriseId}", + orgId + )}`, + msg: { error: "获取用户列表失败" }, + reducer: { name: "members" }, + }); + } + ``` + +1. 若 type=post,则可以使用 data 属性发送对象格式数据; + +2. reducer.name 会作为该 action 对应的 reducer 的名字,从 state 里可以解构此变量,获得该 action 异步或其他操作获得的数据; + +3. msg 可以发送 `{ option:'获取用户列表' }` ,则 actionHelp 会自动将其处理为失败和成功两种情况; + + 若单独写 success 或 error 的 key,则只在成功或失败的时候进行提示; + +4. 后续可以优化:type=get 时候, + + 使用 query 属性将数据传递,在 @peace/utils 的 actionHelp 中将其添加到路由后面;eg. `{ enterpriseId: orgId }` + + 使用 replace 属性传递对象数据,对象数据中将被替换的值为 key,替换的值为 value,然后再 actionHelp 中更改路由;eg. `{ "{enterpriseId}": orgId}` + +5. 最终取得的 reducer 中的数据格式一般为: + ```js + { + data: xxx, // 接口返回的数据格式 + isRequesting: false, // 请求状态 + success: true, // 以此判断请求是否成功,不用再以 payload.type 判断 + } + ``` + +- actions 的引用 + + 从 reducer 的 state.global.actions 里引用具体 action + + ```js + const Example = (props) => { + const { dispatch, actions, user, loading } = props; + + useEffect(() => { + dispatch(actions.example.getMembers(user.orgId)); + }, []); + + return ( + + example + + ); + }; + + function mapStateToProps(state) { + const { auth, global, members } = state; + return { + loading: members.isRequesting, + user: auth.user, + actions: global.actions, + members: members.data, + }; + } + + export default connect(mapStateToProps)(Example); + ``` + +- 一般路由配置 + + ```js + "use strict"; + import { Example } from "./containers"; + + export default [ + { + type: "inner", // 是否在layout 内,如果为outer,则看不到 header、footer、sider等布局,比如登陆页面 + route: { + path: "/example", + key: "example", + breadcrumb: "栗子", + // 不设置 component 则面包屑禁止跳转 + childRoutes: [ + { + path: "/e1", // 自路由不必复写父路由内容,会自动拼接; 则此处组件的实际路由为 /example/e1 + key: "e1", + component: Example, + breadcrumb: "棒子", + }, + ], + }, + }, + ]; + ``` + +- cross-env 的使用限制 + + cross-env 可以统一不同操作系统下环境变量的导出方式,不用再在 windows 下写 set;linux 下写 export; 可以统一以 cross-env NODE_ENV=DEV 代替; + + 但是这样的话就不能在同一条运行的命令中使用 && 切割,因为会把命令切割为两个环境,则最终拿不到我们设置的变量; + +- 主题变换 + + 核心实现代码: + + ```js + // client/src/layout/components/header/index.js + + const changeTheme_ = (themeKey) => { + localStorage.setItem("theme-name", themeKey); + window.less.modifyVars(themeMap[themeKey]).catch((error) => { + message.error(`Failed to reset theme`); + }); + }; + ``` + + 使用 less 进行样式变量替换; + + 所以在 client/src/themes/xx.json 中的中可以配置想变换的主题变量,变量的获取可以通过查看 antd、antdPro 的源码,然后在 color 中处理; + +## 一些考量 + +1. 安心云 4.0 的登录页定制:因为登录页本身并不复杂,所以可以把众多登录页分类,比如简单的替换背景、背景+登录框、更多动态效果等,每一类有一个登录文件,登录文件中将样式抽取出来作为配置项导入使用。可以避免多样式多要求造成的混乱; + +2. 安心云 4.0 即作为业主侧,也要作为本地化部署,则为了两种模式兼容,可以在本地化部署的数据库默认生成一个项目以及约定的 pcode,写在登录的代码里,看起来登录的是一个整体的系统,实际登录的是一个默认生成的项目,可以消除数据切割的工作; + +3. 文件上传,如需保存在 api 所在服务器,可以在 api 使用 @fs/attachment 包配合 client/src/component/Upload 使用,Upload 组件已经完美兼容该包的使用; diff --git a/web - 副本/routes/.DS_Store b/web - 副本/routes/.DS_Store new file mode 100644 index 0000000..1a09007 Binary files /dev/null and b/web - 副本/routes/.DS_Store differ diff --git a/web - 副本/routes/attachment/attachment.js b/web - 副本/routes/attachment/attachment.js new file mode 100644 index 0000000..31be81b --- /dev/null +++ b/web - 副本/routes/attachment/attachment.js @@ -0,0 +1,90 @@ +const request = require('superagent'); +const parse = require('async-busboy'); +const path = require('path'); +const fs = require('fs'); + +const ext = { + project: ['.txt', '.dwg', '.doc', '.docx', '.xls', '.xlsx', '.pdf', '.png', '.jpg', '.svg'], + report: ['.doc', '.docx', '.xls', '.xlsx', '.pdf'], + data: ['.txt', '.xls', '.xlsx'], + image: ['.png', '.jpg', '.svg'], + three: ['.js'], + video: ['.mp4'], + bpmn: ['.bpmn', '.bpmn20.xml', '.zip', '.bar'], + app: ['.apk'], +}; + +module.exports = { + entry(app, router, opts) { + const getApiRoot = async function (ctx) { + const { apiUrl } = opts; + + ctx.status = 200; + ctx.body = { root: apiUrl }; + }; + + const upload = async function (ctx, next) { + try { + const { files } = await parse(ctx.req); + const file = files[0]; + const extname = path.extname(file.filename).toLowerCase(); + const fileType = ctx.query.type || 'image'; + const fileFolder = ctx.query.fileFolder || 'common'; + if (ext[fileType].indexOf(extname) < 0) { + ctx.status = 400; + ctx.body = JSON.stringify({ name: 'UploadFailed', message: '文件格式无效' }); + return; + } + const date = new Date().toLocaleDateString(); + const time = new Date().getTime(); + const fileName = `${time}_${file.filename}`; + const saveFile = path.join(__dirname, '../../', `/client/assets/files/${fileFolder}`, fileName); + const pathUrl = `./client/assets/files/${fileFolder}`; + + const res1 = fs.existsSync(`./client/assets/files/${fileFolder}`); + !res1 && fs.mkdirSync(`./client/assets/files/${fileFolder}`); + const res = fs.existsSync(pathUrl); + !res && fs.mkdirSync(pathUrl); + const stream = fs.createWriteStream(saveFile); + fs.createReadStream(file.path).pipe(stream); + stream.on('error', (err) => { + app.fs.logger.log('error', '[Upload Heatmap]', err); + }); + ctx.status = 200; + ctx.body = { filename: `/assets/files/${fileFolder}/${fileName}`, name: 'UploadSuccess', message: '上传成功' }; + } catch (err) { + ctx.status = 500; + ctx.fs.logger.error(err); + ctx.body = { err: 'upload error.' }; + } + }; + + const remove = async function (ctx, next) { + try { + const fkeys = ctx.request.body; + const removeUrl = path.join(__dirname, '../../', './client', fkeys.url); + const res = fs.existsSync(removeUrl); + if (!res) { + ctx.status = 400; + ctx.body = JSON.stringify({ name: 'DeleteFailed', message: '文件地址不存在' }); + return; + } + fs.unlink(removeUrl, (error) => { + if (error) { + console.log(error); + } + }); + ctx.status = 200; + ctx.body = { name: 'DeleteSuccess.', message: '删除成功' }; + } catch (err) { + ctx.status = 500; + ctx.fs.logger.error(err); + ctx.body = { err: 'upload cleanup error.' }; + } + }; + + router.get('/api/root', getApiRoot); + router.post('/_upload/new', upload); + router.delete('/_upload/cleanup', remove); + }, +}; diff --git a/web - 副本/routes/attachment/index.js b/web - 副本/routes/attachment/index.js new file mode 100644 index 0000000..fec9c09 --- /dev/null +++ b/web - 副本/routes/attachment/index.js @@ -0,0 +1,129 @@ +/** + * Created by PengLing on 2018/10/23. + */ +'use strict'; + +const request = require('superagent'); +const parse = require('async-busboy'); +const path = require('path'); + +const UploadPath = { + project: [".txt", ".dwg", ".doc", ".docx", ".xls", ".xlsx", ".pdf", ".png", ".jpg"], + report: [".doc", ".docx", ".xls", ".xlsx", ".pdf"], + data: [".txt", ".xls", ".xlsx"], + image: [".png", ".jpg", ".svg"], + three: [".js"], + video: [".mp4"] +}; + +module.exports = { + entry: function (app, router, opts) { + let download_ = async function (ctx, next) { + const { fetchUrl } = opts.qiniu; + if (ctx.path && ctx.path.includes(fetchUrl)) { + try { + const { filename } = ctx.request.query; + const fkey = decodeURI(ctx.path.slice(fetchUrl.length + 1)).replace(/\.json$/, '.js'); + if (ctx.path) { + const extNames = ctx.path.split('.'); + app.fs.logger.log('info', 'extNames', extNames); + if (extNames.length > 0) { + let fileType = extNames[extNames.length - 1].toLowerCase(); + if (fileType === 'pdf') { + ctx.type = 'application/pdf'; + app.fs.logger.log('info', 'application/pdf', fileType); + } + } + } + const publicDownloadUrl = await app.fs.attachment.download(fkey); + ctx.status = 200; + if (filename) ctx.attachment(filename); + ctx.body = request.get(publicDownloadUrl); + } catch (err) { + ctx.fs.logger.error(err); + ctx.status = 404; + ctx.body = { error: 'file not found.' } + } + } else { + await next(); + } + } + + async function upload(ctx, next) { + let fkey = null; + try { + const { p } = ctx.params; + const { files } = await parse(ctx.req); + const file = files[0]; + const extname = path.extname(file.filename).toLowerCase(); + // if (!UploadPath[p]) { + // ctx.status = 400; + // ctx.body = JSON.stringify({ error: '附件存放的文件夹名称无效' }); + // return; + // } else if (UploadPath[p].indexOf(extname) < 0) { + // ctx.status = 400; + // ctx.body = JSON.stringify({ error: '文件格式无效' }); + // return; + // } else { + // const fileInfo = await ctx.app.fs.attachment.upload(file, { uploadPath: p }); + const fileInfo = await ctx.app.fs.attachment.upload(file); + fkey = fileInfo.key; + ctx.body = { uploaded: fkey }; + // } + } catch (err) { + ctx.status = 500; + ctx.fs.logger.error(err); + ctx.body = { err: 'upload error.' }; + } + } + + async function download(ctx, next) { + try { + const { fetchUrl } = opts.qiniu; + const { src, filename } = ctx.query; + const fkey = src.replace(/\.json$/, '.js'); + const publicDownloadUrl = await ctx.app.fs.attachment.download(fkey); + if (filename) { // download + ctx.attachment(filename); + } else { // display + if (/\.(png)|(jpg)|(jpeg)|(gif)$/g.test(src.toLowerCase())) ctx.type = 'image/png'; + }; + ctx.status = 200; + ctx.body = request.get(publicDownloadUrl); + } catch (err) { + ctx.fs.logger.error(`path: ${ctx.path}, error: ${err}`); + ctx.status = 400; + ctx.body = { name: 'FindError', message: '附件下载失败' } + } + } + + let remove = async function (ctx, next) { + try { + const fkeys = ctx.request.body; + for (let index = 0; index < fkeys.length; index++) { + await app.fs.attachment.remove(fkeys[index]); + } + ctx.status = 200; + ctx.body = fkeys; + } catch (err) { + ctx.status = 500; + ctx.fs.logger.error(err); + ctx.body = { err: 'upload cleanup error.' }; + } + } + + const getResourceRoot = async function (ctx) { + const { domain } = opts.qiniu; + + ctx.status = 200; + ctx.body = { root: domain }; + } + + router.use(download_); + router.post('/_upload/attachments/:p', upload); + router.get('/_upload/attachments', download); + router.post('/_upload/remove/attachments', remove); + router.get('/_resource/root', getResourceRoot); + } +} + diff --git a/web - 副本/routes/index.js b/web - 副本/routes/index.js new file mode 100644 index 0000000..e81bfaa --- /dev/null +++ b/web - 副本/routes/index.js @@ -0,0 +1,20 @@ +/** + * Created by liu.xinyi + * on 2016/7/7. + */ +'use strict'; +const path = require('path'); +const fs = require('fs'); + +module.exports = { + entry: function (app, router, opts) { + fs.readdirSync(__dirname).forEach(function (dir) { + if(fs.lstatSync(path.join(__dirname, dir)).isDirectory()){ + fs.readdirSync(path.join(__dirname, dir)).forEach(function (api) { + require(`./${dir}/${api}`).entry(app, router, opts); + app.fs.logger.log('info', '[Router]', 'Inject api:', dir + '/' + path.basename(api, '.js')); + }); + } + }); + } +}; \ No newline at end of file diff --git a/web - 副本/server.js b/web - 副本/server.js new file mode 100644 index 0000000..f3045fd --- /dev/null +++ b/web - 副本/server.js @@ -0,0 +1,7 @@ +/* jslint node:true */ +// from koa + +const scaffold = require('fs-web-server-scaffold'); +const config = require('./config.js'); + +module.exports = scaffold(config); diff --git a/web - 副本/typings/.DS_Store b/web - 副本/typings/.DS_Store new file mode 100644 index 0000000..8f1a060 Binary files /dev/null and b/web - 副本/typings/.DS_Store differ diff --git a/web - 副本/typings/node/node.d.ts b/web - 副本/typings/node/node.d.ts new file mode 100644 index 0000000..bad534c --- /dev/null +++ b/web - 副本/typings/node/node.d.ts @@ -0,0 +1,2599 @@ +// Type definitions for Node.js v6.x +// Project: http://nodejs.org/ +// Definitions by: Microsoft TypeScript , DefinitelyTyped +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/************************************************ +* * +* Node.js v6.x API * +* * +************************************************/ + +interface Error { + stack?: string; +} + +interface ErrorConstructor { + captureStackTrace(targetObject: Object, constructorOpt?: Function): void; + stackTraceLimit: number; +} + +// compat for TypeScript 1.8 +// if you use with --target es3 or --target es5 and use below definitions, +// use the lib.es6.d.ts that is bundled with TypeScript 1.8. +interface MapConstructor { } +interface WeakMapConstructor { } +interface SetConstructor { } +interface WeakSetConstructor { } + +/************************************************ +* * +* GLOBAL * +* * +************************************************/ +declare var process: NodeJS.Process; +declare var global: NodeJS.Global; + +declare var __filename: string; +declare var __dirname: string; + +declare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; +declare function clearTimeout(timeoutId: NodeJS.Timer): void; +declare function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; +declare function clearInterval(intervalId: NodeJS.Timer): void; +declare function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any; +declare function clearImmediate(immediateId: any): void; + +interface NodeRequireFunction { + (id: string): any; +} + +interface NodeRequire extends NodeRequireFunction { + resolve(id: string): string; + cache: any; + extensions: any; + main: any; +} + +declare var require: NodeRequire; + +interface NodeModule { + exports: any; + require: NodeRequireFunction; + id: string; + filename: string; + loaded: boolean; + parent: any; + children: any[]; +} + +declare var module: NodeModule; + +// Same as module.exports +declare var exports: any; +declare var SlowBuffer: { + new (str: string, encoding?: string): Buffer; + new (size: number): Buffer; + new (size: Uint8Array): Buffer; + new (array: any[]): Buffer; + prototype: Buffer; + isBuffer(obj: any): boolean; + byteLength(string: string, encoding?: string): number; + concat(list: Buffer[], totalLength?: number): Buffer; +}; + + +// Buffer class +type BufferEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "binary" | "hex"; +interface Buffer extends NodeBuffer { } + +/** + * Raw data is stored in instances of the Buffer class. + * A Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized. + * Valid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' + */ +declare var Buffer: { + /** + * Allocates a new buffer containing the given {str}. + * + * @param str String to store in buffer. + * @param encoding encoding to use, optional. Default is 'utf8' + */ + new (str: string, encoding?: string): Buffer; + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + */ + new (size: number): Buffer; + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + */ + new (array: Uint8Array): Buffer; + /** + * Produces a Buffer backed by the same allocated memory as + * the given {ArrayBuffer}. + * + * + * @param arrayBuffer The ArrayBuffer with which to share memory. + */ + new (arrayBuffer: ArrayBuffer): Buffer; + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + */ + new (array: any[]): Buffer; + /** + * Copies the passed {buffer} data onto a new {Buffer} instance. + * + * @param buffer The buffer to copy. + */ + new (buffer: Buffer): Buffer; + prototype: Buffer; + /** + * Allocates a new Buffer using an {array} of octets. + * + * @param array + */ + from(array: any[]): Buffer; + /** + * When passed a reference to the .buffer property of a TypedArray instance, + * the newly created Buffer will share the same allocated memory as the TypedArray. + * The optional {byteOffset} and {length} arguments specify a memory range + * within the {arrayBuffer} that will be shared by the Buffer. + * + * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer() + * @param byteOffset + * @param length + */ + from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; + /** + * Copies the passed {buffer} data onto a new Buffer instance. + * + * @param buffer + */ + from(buffer: Buffer): Buffer; + /** + * Creates a new Buffer containing the given JavaScript string {str}. + * If provided, the {encoding} parameter identifies the character encoding. + * If not provided, {encoding} defaults to 'utf8'. + * + * @param str + */ + from(str: string, encoding?: string): Buffer; + /** + * Returns true if {obj} is a Buffer + * + * @param obj object to test. + */ + isBuffer(obj: any): obj is Buffer; + /** + * Returns true if {encoding} is a valid encoding argument. + * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' + * + * @param encoding string to test. + */ + isEncoding(encoding: string): boolean; + /** + * Gives the actual byte length of a string. encoding defaults to 'utf8'. + * This is not the same as String.prototype.length since that returns the number of characters in a string. + * + * @param string string to test. + * @param encoding encoding used to evaluate (defaults to 'utf8') + */ + byteLength(string: string, encoding?: string): number; + /** + * Returns a buffer which is the result of concatenating all the buffers in the list together. + * + * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer. + * If the list has exactly one item, then the first item of the list is returned. + * If the list has more than one item, then a new Buffer is created. + * + * @param list An array of Buffer objects to concatenate + * @param totalLength Total length of the buffers when concatenated. + * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. + */ + concat(list: Buffer[], totalLength?: number): Buffer; + /** + * The same as buf1.compare(buf2). + */ + compare(buf1: Buffer, buf2: Buffer): number; + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + * @param fill if specified, buffer will be initialized by calling buf.fill(fill). + * If parameter is omitted, buffer will be filled with zeros. + * @param encoding encoding used for call to buf.fill while initalizing + */ + alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; + /** + * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents + * of the newly created Buffer are unknown and may contain sensitive data. + * + * @param size count of octets to allocate + */ + allocUnsafe(size: number): Buffer; + /** + * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents + * of the newly created Buffer are unknown and may contain sensitive data. + * + * @param size count of octets to allocate + */ + allocUnsafeSlow(size: number): Buffer; +}; + +/************************************************ +* * +* GLOBAL INTERFACES * +* * +************************************************/ +declare namespace NodeJS { + export interface ErrnoException extends Error { + errno?: number; + code?: string; + path?: string; + syscall?: string; + stack?: string; + } + + export interface EventEmitter { + addListener(event: string, listener: Function): this; + on(event: string, listener: Function): this; + once(event: string, listener: Function): this; + removeListener(event: string, listener: Function): this; + removeAllListeners(event?: string): this; + setMaxListeners(n: number): this; + getMaxListeners(): number; + listeners(event: string): Function[]; + emit(event: string, ...args: any[]): boolean; + listenerCount(type: string): number; + } + + export interface ReadableStream extends EventEmitter { + readable: boolean; + read(size?: number): string | Buffer; + setEncoding(encoding: string): void; + pause(): void; + resume(): void; + pipe(destination: T, options?: { end?: boolean; }): T; + unpipe(destination?: T): void; + unshift(chunk: string): void; + unshift(chunk: Buffer): void; + wrap(oldStream: ReadableStream): ReadableStream; + } + + export interface WritableStream extends EventEmitter { + writable: boolean; + write(buffer: Buffer | string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + } + + export interface ReadWriteStream extends ReadableStream, WritableStream { } + + export interface Events extends EventEmitter { } + + export interface Domain extends Events { + run(fn: Function): void; + add(emitter: Events): void; + remove(emitter: Events): void; + bind(cb: (err: Error, data: any) => any): any; + intercept(cb: (data: any) => any): any; + dispose(): void; + + addListener(event: string, listener: Function): this; + on(event: string, listener: Function): this; + once(event: string, listener: Function): this; + removeListener(event: string, listener: Function): this; + removeAllListeners(event?: string): this; + } + + export interface MemoryUsage { + rss: number; + heapTotal: number; + heapUsed: number; + } + + export interface Process extends EventEmitter { + stdout: WritableStream; + stderr: WritableStream; + stdin: ReadableStream; + argv: string[]; + execArgv: string[]; + execPath: string; + abort(): void; + chdir(directory: string): void; + cwd(): string; + env: any; + exit(code?: number): void; + getgid(): number; + setgid(id: number): void; + setgid(id: string): void; + getuid(): number; + setuid(id: number): void; + setuid(id: string): void; + version: string; + versions: { + http_parser: string; + node: string; + v8: string; + ares: string; + uv: string; + zlib: string; + modules: string; + openssl: string; + }; + config: { + target_defaults: { + cflags: any[]; + default_configuration: string; + defines: string[]; + include_dirs: string[]; + libraries: string[]; + }; + variables: { + clang: number; + host_arch: string; + node_install_npm: boolean; + node_install_waf: boolean; + node_prefix: string; + node_shared_openssl: boolean; + node_shared_v8: boolean; + node_shared_zlib: boolean; + node_use_dtrace: boolean; + node_use_etw: boolean; + node_use_openssl: boolean; + target_arch: string; + v8_no_strict_aliasing: number; + v8_use_snapshot: boolean; + visibility: string; + }; + }; + kill(pid: number, signal?: string | number): void; + pid: number; + title: string; + arch: string; + platform: string; + memoryUsage(): MemoryUsage; + nextTick(callback: Function): void; + umask(mask?: number): number; + uptime(): number; + hrtime(time?: number[]): number[]; + domain: Domain; + + // Worker + send?(message: any, sendHandle?: any): void; + disconnect(): void; + connected: boolean; + } + + export interface Global { + Array: typeof Array; + ArrayBuffer: typeof ArrayBuffer; + Boolean: typeof Boolean; + Buffer: typeof Buffer; + DataView: typeof DataView; + Date: typeof Date; + Error: typeof Error; + EvalError: typeof EvalError; + Float32Array: typeof Float32Array; + Float64Array: typeof Float64Array; + Function: typeof Function; + GLOBAL: Global; + Infinity: typeof Infinity; + Int16Array: typeof Int16Array; + Int32Array: typeof Int32Array; + Int8Array: typeof Int8Array; + Intl: typeof Intl; + JSON: typeof JSON; + Map: MapConstructor; + Math: typeof Math; + NaN: typeof NaN; + Number: typeof Number; + Object: typeof Object; + Promise: Function; + RangeError: typeof RangeError; + ReferenceError: typeof ReferenceError; + RegExp: typeof RegExp; + Set: SetConstructor; + String: typeof String; + Symbol: Function; + SyntaxError: typeof SyntaxError; + TypeError: typeof TypeError; + URIError: typeof URIError; + Uint16Array: typeof Uint16Array; + Uint32Array: typeof Uint32Array; + Uint8Array: typeof Uint8Array; + Uint8ClampedArray: Function; + WeakMap: WeakMapConstructor; + WeakSet: WeakSetConstructor; + clearImmediate: (immediateId: any) => void; + clearInterval: (intervalId: NodeJS.Timer) => void; + clearTimeout: (timeoutId: NodeJS.Timer) => void; + console: typeof console; + decodeURI: typeof decodeURI; + decodeURIComponent: typeof decodeURIComponent; + encodeURI: typeof encodeURI; + encodeURIComponent: typeof encodeURIComponent; + escape: (str: string) => string; + eval: typeof eval; + global: Global; + isFinite: typeof isFinite; + isNaN: typeof isNaN; + parseFloat: typeof parseFloat; + parseInt: typeof parseInt; + process: Process; + root: Global; + setImmediate: (callback: (...args: any[]) => void, ...args: any[]) => any; + setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; + setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; + undefined: typeof undefined; + unescape: (str: string) => string; + gc: () => void; + v8debug?: any; + } + + export interface Timer { + ref(): void; + unref(): void; + } +} + +/** + * @deprecated + */ +interface NodeBuffer extends Uint8Array { + write(string: string, offset?: number, length?: number, encoding?: string): number; + toString(encoding?: string, start?: number, end?: number): string; + toJSON(): any; + equals(otherBuffer: Buffer): boolean; + compare(otherBuffer: Buffer): number; + copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; + slice(start?: number, end?: number): Buffer; + writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readUInt8(offset: number, noAssert?: boolean): number; + readUInt16LE(offset: number, noAssert?: boolean): number; + readUInt16BE(offset: number, noAssert?: boolean): number; + readUInt32LE(offset: number, noAssert?: boolean): number; + readUInt32BE(offset: number, noAssert?: boolean): number; + readInt8(offset: number, noAssert?: boolean): number; + readInt16LE(offset: number, noAssert?: boolean): number; + readInt16BE(offset: number, noAssert?: boolean): number; + readInt32LE(offset: number, noAssert?: boolean): number; + readInt32BE(offset: number, noAssert?: boolean): number; + readFloatLE(offset: number, noAssert?: boolean): number; + readFloatBE(offset: number, noAssert?: boolean): number; + readDoubleLE(offset: number, noAssert?: boolean): number; + readDoubleBE(offset: number, noAssert?: boolean): number; + writeUInt8(value: number, offset: number, noAssert?: boolean): number; + writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeInt8(value: number, offset: number, noAssert?: boolean): number; + writeInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeFloatLE(value: number, offset: number, noAssert?: boolean): number; + writeFloatBE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; + fill(value: any, offset?: number, end?: number): this; + // TODO: encoding param + indexOf(value: string | number | Buffer, byteOffset?: number): number; + // TODO: entries + // TODO: includes + // TODO: keys + // TODO: values +} + +/************************************************ +* * +* MODULES * +* * +************************************************/ +declare module "buffer" { + export var INSPECT_MAX_BYTES: number; + var BuffType: typeof Buffer; + var SlowBuffType: typeof SlowBuffer; + export { BuffType as Buffer, SlowBuffType as SlowBuffer }; +} + +declare module "querystring" { + export interface StringifyOptions { + encodeURIComponent?: Function; + } + + export interface ParseOptions { + maxKeys?: number; + decodeURIComponent?: Function; + } + + export function stringify(obj: T, sep?: string, eq?: string, options?: StringifyOptions): string; + export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): any; + export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): T; + export function escape(str: string): string; + export function unescape(str: string): string; +} + +declare module "events" { + export class EventEmitter implements NodeJS.EventEmitter { + static EventEmitter: EventEmitter; + static listenerCount(emitter: EventEmitter, event: string): number; // deprecated + static defaultMaxListeners: number; + + addListener(event: string, listener: Function): this; + on(event: string, listener: Function): this; + once(event: string, listener: Function): this; + prependListener(event: string, listener: Function): this; + prependOnceListener(event: string, listener: Function): this; + removeListener(event: string, listener: Function): this; + removeAllListeners(event?: string): this; + setMaxListeners(n: number): this; + getMaxListeners(): number; + listeners(event: string): Function[]; + emit(event: string, ...args: any[]): boolean; + eventNames(): string[]; + listenerCount(type: string): number; + } +} + +declare module "http" { + import * as events from "events"; + import * as net from "net"; + import * as stream from "stream"; + + export interface RequestOptions { + protocol?: string; + host?: string; + hostname?: string; + family?: number; + port?: number; + localAddress?: string; + socketPath?: string; + method?: string; + path?: string; + headers?: { [key: string]: any }; + auth?: string; + agent?: Agent | boolean; + } + + export interface Server extends events.EventEmitter, net.Server { + setTimeout(msecs: number, callback: Function): void; + maxHeadersCount: number; + timeout: number; + } + /** + * @deprecated Use IncomingMessage + */ + export interface ServerRequest extends IncomingMessage { + connection: net.Socket; + } + export interface ServerResponse extends events.EventEmitter, stream.Writable { + // Extended base methods + write(buffer: Buffer): boolean; + write(buffer: Buffer, cb?: Function): boolean; + write(str: string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + write(str: string, encoding?: string, fd?: string): boolean; + + writeContinue(): void; + writeHead(statusCode: number, reasonPhrase?: string, headers?: any): void; + writeHead(statusCode: number, headers?: any): void; + statusCode: number; + statusMessage: string; + headersSent: boolean; + setHeader(name: string, value: string | string[]): void; + setTimeout(msecs: number, callback: Function): ServerResponse; + sendDate: boolean; + getHeader(name: string): string; + removeHeader(name: string): void; + write(chunk: any, encoding?: string): any; + addTrailers(headers: any): void; + + // Extended base methods + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + end(data?: any, encoding?: string): void; + } + export interface ClientRequest extends events.EventEmitter, stream.Writable { + // Extended base methods + write(buffer: Buffer): boolean; + write(buffer: Buffer, cb?: Function): boolean; + write(str: string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + write(str: string, encoding?: string, fd?: string): boolean; + + write(chunk: any, encoding?: string): void; + abort(): void; + setTimeout(timeout: number, callback?: Function): void; + setNoDelay(noDelay?: boolean): void; + setSocketKeepAlive(enable?: boolean, initialDelay?: number): void; + + setHeader(name: string, value: string | string[]): void; + getHeader(name: string): string; + removeHeader(name: string): void; + addTrailers(headers: any): void; + + // Extended base methods + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + end(data?: any, encoding?: string): void; + } + export interface IncomingMessage extends events.EventEmitter, stream.Readable { + httpVersion: string; + headers: any; + rawHeaders: string[]; + trailers: any; + rawTrailers: any; + setTimeout(msecs: number, callback: Function): NodeJS.Timer; + /** + * Only valid for request obtained from http.Server. + */ + method?: string; + /** + * Only valid for request obtained from http.Server. + */ + url?: string; + /** + * Only valid for response obtained from http.ClientRequest. + */ + statusCode?: number; + /** + * Only valid for response obtained from http.ClientRequest. + */ + statusMessage?: string; + socket: net.Socket; + } + /** + * @deprecated Use IncomingMessage + */ + export interface ClientResponse extends IncomingMessage { } + + export interface AgentOptions { + /** + * Keep sockets around in a pool to be used by other requests in the future. Default = false + */ + keepAlive?: boolean; + /** + * When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 1000. + * Only relevant if keepAlive is set to true. + */ + keepAliveMsecs?: number; + /** + * Maximum number of sockets to allow per host. Default for Node 0.10 is 5, default for Node 0.12 is Infinity + */ + maxSockets?: number; + /** + * Maximum number of sockets to leave open in a free state. Only relevant if keepAlive is set to true. Default = 256. + */ + maxFreeSockets?: number; + } + + export class Agent { + maxSockets: number; + sockets: any; + requests: any; + + constructor(opts?: AgentOptions); + + /** + * Destroy any sockets that are currently in use by the agent. + * It is usually not necessary to do this. However, if you are using an agent with KeepAlive enabled, + * then it is best to explicitly shut down the agent when you know that it will no longer be used. Otherwise, + * sockets may hang open for quite a long time before the server terminates them. + */ + destroy(): void; + } + + export var METHODS: string[]; + + export var STATUS_CODES: { + [errorCode: number]: string; + [errorCode: string]: string; + }; + export function createServer(requestListener?: (request: IncomingMessage, response: ServerResponse) => void): Server; + export function createClient(port?: number, host?: string): any; + export function request(options: RequestOptions, callback?: (res: IncomingMessage) => void): ClientRequest; + export function get(options: any, callback?: (res: IncomingMessage) => void): ClientRequest; + export var globalAgent: Agent; +} + +declare module "cluster" { + import * as child from "child_process"; + import * as events from "events"; + + export interface ClusterSettings { + exec?: string; + args?: string[]; + silent?: boolean; + } + + export interface Address { + address: string; + port: number; + addressType: string; + } + + export class Worker extends events.EventEmitter { + id: string; + process: child.ChildProcess; + suicide: boolean; + send(message: any, sendHandle?: any): void; + kill(signal?: string): void; + destroy(signal?: string): void; + disconnect(): void; + isConnected(): boolean; + isDead(): boolean; + } + + export var settings: ClusterSettings; + export var isMaster: boolean; + export var isWorker: boolean; + export function setupMaster(settings?: ClusterSettings): void; + export function fork(env?: any): Worker; + export function disconnect(callback?: Function): void; + export var worker: Worker; + export var workers: { + [index: string]: Worker + }; + + // Event emitter + export function addListener(event: string, listener: Function): void; + export function on(event: "disconnect", listener: (worker: Worker) => void): void; + export function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): void; + export function on(event: "fork", listener: (worker: Worker) => void): void; + export function on(event: "listening", listener: (worker: Worker, address: any) => void): void; + export function on(event: "message", listener: (worker: Worker, message: any) => void): void; + export function on(event: "online", listener: (worker: Worker) => void): void; + export function on(event: "setup", listener: (settings: any) => void): void; + export function on(event: string, listener: Function): any; + export function once(event: string, listener: Function): void; + export function removeListener(event: string, listener: Function): void; + export function removeAllListeners(event?: string): void; + export function setMaxListeners(n: number): void; + export function listeners(event: string): Function[]; + export function emit(event: string, ...args: any[]): boolean; +} + +declare module "zlib" { + import * as stream from "stream"; + export interface ZlibOptions { chunkSize?: number; windowBits?: number; level?: number; memLevel?: number; strategy?: number; dictionary?: any; } + + export interface Gzip extends stream.Transform { } + export interface Gunzip extends stream.Transform { } + export interface Deflate extends stream.Transform { } + export interface Inflate extends stream.Transform { } + export interface DeflateRaw extends stream.Transform { } + export interface InflateRaw extends stream.Transform { } + export interface Unzip extends stream.Transform { } + + export function createGzip(options?: ZlibOptions): Gzip; + export function createGunzip(options?: ZlibOptions): Gunzip; + export function createDeflate(options?: ZlibOptions): Deflate; + export function createInflate(options?: ZlibOptions): Inflate; + export function createDeflateRaw(options?: ZlibOptions): DeflateRaw; + export function createInflateRaw(options?: ZlibOptions): InflateRaw; + export function createUnzip(options?: ZlibOptions): Unzip; + + export function deflate(buf: Buffer, callback: (error: Error, result: any) => void): void; + export function deflateSync(buf: Buffer, options?: ZlibOptions): any; + export function deflateRaw(buf: Buffer, callback: (error: Error, result: any) => void): void; + export function deflateRawSync(buf: Buffer, options?: ZlibOptions): any; + export function gzip(buf: Buffer, callback: (error: Error, result: any) => void): void; + export function gzipSync(buf: Buffer, options?: ZlibOptions): any; + export function gunzip(buf: Buffer, callback: (error: Error, result: any) => void): void; + export function gunzipSync(buf: Buffer, options?: ZlibOptions): any; + export function inflate(buf: Buffer, callback: (error: Error, result: any) => void): void; + export function inflateSync(buf: Buffer, options?: ZlibOptions): any; + export function inflateRaw(buf: Buffer, callback: (error: Error, result: any) => void): void; + export function inflateRawSync(buf: Buffer, options?: ZlibOptions): any; + export function unzip(buf: Buffer, callback: (error: Error, result: any) => void): void; + export function unzipSync(buf: Buffer, options?: ZlibOptions): any; + + // Constants + export var Z_NO_FLUSH: number; + export var Z_PARTIAL_FLUSH: number; + export var Z_SYNC_FLUSH: number; + export var Z_FULL_FLUSH: number; + export var Z_FINISH: number; + export var Z_BLOCK: number; + export var Z_TREES: number; + export var Z_OK: number; + export var Z_STREAM_END: number; + export var Z_NEED_DICT: number; + export var Z_ERRNO: number; + export var Z_STREAM_ERROR: number; + export var Z_DATA_ERROR: number; + export var Z_MEM_ERROR: number; + export var Z_BUF_ERROR: number; + export var Z_VERSION_ERROR: number; + export var Z_NO_COMPRESSION: number; + export var Z_BEST_SPEED: number; + export var Z_BEST_COMPRESSION: number; + export var Z_DEFAULT_COMPRESSION: number; + export var Z_FILTERED: number; + export var Z_HUFFMAN_ONLY: number; + export var Z_RLE: number; + export var Z_FIXED: number; + export var Z_DEFAULT_STRATEGY: number; + export var Z_BINARY: number; + export var Z_TEXT: number; + export var Z_ASCII: number; + export var Z_UNKNOWN: number; + export var Z_DEFLATED: number; + export var Z_NULL: number; +} + +declare module "os" { + export interface CpuInfo { + model: string; + speed: number; + times: { + user: number; + nice: number; + sys: number; + idle: number; + irq: number; + }; + } + + export interface NetworkInterfaceInfo { + address: string; + netmask: string; + family: string; + mac: string; + internal: boolean; + } + + export function tmpdir(): string; + export function homedir(): string; + export function endianness(): "BE" | "LE"; + export function hostname(): string; + export function type(): string; + export function platform(): string; + export function arch(): string; + export function release(): string; + export function uptime(): number; + export function loadavg(): number[]; + export function totalmem(): number; + export function freemem(): number; + export function cpus(): CpuInfo[]; + export function networkInterfaces(): { [index: string]: NetworkInterfaceInfo[] }; + export var EOL: string; +} + +declare module "https" { + import * as tls from "tls"; + import * as events from "events"; + import * as http from "http"; + + export interface ServerOptions { + pfx?: any; + key?: any; + passphrase?: string; + cert?: any; + ca?: any; + crl?: any; + ciphers?: string; + honorCipherOrder?: boolean; + requestCert?: boolean; + rejectUnauthorized?: boolean; + NPNProtocols?: any; + SNICallback?: (servername: string) => any; + } + + export interface RequestOptions extends http.RequestOptions { + pfx?: any; + key?: any; + passphrase?: string; + cert?: any; + ca?: any; + ciphers?: string; + rejectUnauthorized?: boolean; + secureProtocol?: string; + } + + export interface Agent extends http.Agent { } + + export interface AgentOptions extends http.AgentOptions { + maxCachedSessions?: number; + } + + export var Agent: { + new (options?: AgentOptions): Agent; + }; + export interface Server extends tls.Server { } + export function createServer(options: ServerOptions, requestListener?: Function): Server; + export function request(options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; + export function get(options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; + export var globalAgent: Agent; +} + +declare module "punycode" { + export function decode(string: string): string; + export function encode(string: string): string; + export function toUnicode(domain: string): string; + export function toASCII(domain: string): string; + export var ucs2: ucs2; + interface ucs2 { + decode(string: string): number[]; + encode(codePoints: number[]): string; + } + export var version: any; +} + +declare module "repl" { + import * as stream from "stream"; + import * as events from "events"; + + export interface ReplOptions { + prompt?: string; + input?: NodeJS.ReadableStream; + output?: NodeJS.WritableStream; + terminal?: boolean; + eval?: Function; + useColors?: boolean; + useGlobal?: boolean; + ignoreUndefined?: boolean; + writer?: Function; + } + export function start(options: ReplOptions): events.EventEmitter; +} + +declare module "readline" { + import * as events from "events"; + import * as stream from "stream"; + + export interface Key { + sequence?: string; + name?: string; + ctrl?: boolean; + meta?: boolean; + shift?: boolean; + } + + export interface ReadLine extends events.EventEmitter { + setPrompt(prompt: string): void; + prompt(preserveCursor?: boolean): void; + question(query: string, callback: (answer: string) => void): void; + pause(): ReadLine; + resume(): ReadLine; + close(): void; + write(data: string | Buffer, key?: Key): void; + } + + export interface Completer { + (line: string): CompleterResult; + (line: string, callback: (err: any, result: CompleterResult) => void): any; + } + + export interface CompleterResult { + completions: string[]; + line: string; + } + + export interface ReadLineOptions { + input: NodeJS.ReadableStream; + output?: NodeJS.WritableStream; + completer?: Completer; + terminal?: boolean; + historySize?: number; + } + + export function createInterface(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer, terminal?: boolean): ReadLine; + export function createInterface(options: ReadLineOptions): ReadLine; + + export function cursorTo(stream: NodeJS.WritableStream, x: number, y: number): void; + export function moveCursor(stream: NodeJS.WritableStream, dx: number | string, dy: number | string): void; + export function clearLine(stream: NodeJS.WritableStream, dir: number): void; + export function clearScreenDown(stream: NodeJS.WritableStream): void; +} + +declare module "vm" { + export interface Context { } + export interface ScriptOptions { + filename?: string; + lineOffset?: number; + columnOffset?: number; + displayErrors?: boolean; + timeout?: number; + cachedData?: Buffer; + produceCachedData?: boolean; + } + export interface RunningScriptOptions { + filename?: string; + lineOffset?: number; + columnOffset?: number; + displayErrors?: boolean; + timeout?: number; + } + export class Script { + constructor(code: string, options?: ScriptOptions); + runInContext(contextifiedSandbox: Context, options?: RunningScriptOptions): any; + runInNewContext(sandbox?: Context, options?: RunningScriptOptions): any; + runInThisContext(options?: RunningScriptOptions): any; + } + export function createContext(sandbox?: Context): Context; + export function isContext(sandbox: Context): boolean; + export function runInContext(code: string, contextifiedSandbox: Context, options?: RunningScriptOptions): any; + export function runInDebugContext(code: string): any; + export function runInNewContext(code: string, sandbox?: Context, options?: RunningScriptOptions): any; + export function runInThisContext(code: string, options?: RunningScriptOptions): any; +} + +declare module "child_process" { + import * as events from "events"; + import * as stream from "stream"; + + export interface ChildProcess extends events.EventEmitter { + stdin: stream.Writable; + stdout: stream.Readable; + stderr: stream.Readable; + stdio: [stream.Writable, stream.Readable, stream.Readable]; + pid: number; + kill(signal?: string): void; + send(message: any, sendHandle?: any): void; + connected: boolean; + disconnect(): void; + unref(): void; + ref(): void; + } + + export interface SpawnOptions { + cwd?: string; + env?: any; + stdio?: any; + detached?: boolean; + uid?: number; + gid?: number; + shell?: boolean | string; + } + export function spawn(command: string, args?: string[], options?: SpawnOptions): ChildProcess; + + export interface ExecOptions { + cwd?: string; + env?: any; + shell?: string; + timeout?: number; + maxBuffer?: number; + killSignal?: string; + uid?: number; + gid?: number; + } + export interface ExecOptionsWithStringEncoding extends ExecOptions { + encoding: BufferEncoding; + } + export interface ExecOptionsWithBufferEncoding extends ExecOptions { + encoding: string; // specify `null`. + } + export function exec(command: string, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function exec(command: string, options: ExecOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + // usage. child_process.exec("tsc", {encoding: null as string}, (err, stdout, stderr) => {}); + export function exec(command: string, options: ExecOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; + export function exec(command: string, options: ExecOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + + export interface ExecFileOptions { + cwd?: string; + env?: any; + timeout?: number; + maxBuffer?: number; + killSignal?: string; + uid?: number; + gid?: number; + } + export interface ExecFileOptionsWithStringEncoding extends ExecFileOptions { + encoding: BufferEncoding; + } + export interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions { + encoding: string; // specify `null`. + } + export function execFile(file: string, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function execFile(file: string, options?: ExecFileOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + // usage. child_process.execFile("file.sh", {encoding: null as string}, (err, stdout, stderr) => {}); + export function execFile(file: string, options?: ExecFileOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; + export function execFile(file: string, options?: ExecFileOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function execFile(file: string, args?: string[], callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function execFile(file: string, args?: string[], options?: ExecFileOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + // usage. child_process.execFile("file.sh", ["foo"], {encoding: null as string}, (err, stdout, stderr) => {}); + export function execFile(file: string, args?: string[], options?: ExecFileOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; + export function execFile(file: string, args?: string[], options?: ExecFileOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + + export interface ForkOptions { + cwd?: string; + env?: any; + execPath?: string; + execArgv?: string[]; + silent?: boolean; + uid?: number; + gid?: number; + } + export function fork(modulePath: string, args?: string[], options?: ForkOptions): ChildProcess; + + export interface SpawnSyncOptions { + cwd?: string; + input?: string | Buffer; + stdio?: any; + env?: any; + uid?: number; + gid?: number; + timeout?: number; + killSignal?: string; + maxBuffer?: number; + encoding?: string; + shell?: boolean | string; + } + export interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions { + encoding: BufferEncoding; + } + export interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions { + encoding: string; // specify `null`. + } + export interface SpawnSyncReturns { + pid: number; + output: string[]; + stdout: T; + stderr: T; + status: number; + signal: string; + error: Error; + } + export function spawnSync(command: string): SpawnSyncReturns; + export function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; + export function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; + export function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns; + export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; + export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; + export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptions): SpawnSyncReturns; + + export interface ExecSyncOptions { + cwd?: string; + input?: string | Buffer; + stdio?: any; + env?: any; + shell?: string; + uid?: number; + gid?: number; + timeout?: number; + killSignal?: string; + maxBuffer?: number; + encoding?: string; + } + export interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions { + encoding: BufferEncoding; + } + export interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions { + encoding: string; // specify `null`. + } + export function execSync(command: string): Buffer; + export function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string; + export function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer; + export function execSync(command: string, options?: ExecSyncOptions): Buffer; + + export interface ExecFileSyncOptions { + cwd?: string; + input?: string | Buffer; + stdio?: any; + env?: any; + uid?: number; + gid?: number; + timeout?: number; + killSignal?: string; + maxBuffer?: number; + encoding?: string; + } + export interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions { + encoding: BufferEncoding; + } + export interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions { + encoding: string; // specify `null`. + } + export function execFileSync(command: string): Buffer; + export function execFileSync(command: string, options?: ExecFileSyncOptionsWithStringEncoding): string; + export function execFileSync(command: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; + export function execFileSync(command: string, options?: ExecFileSyncOptions): Buffer; + export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithStringEncoding): string; + export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; + export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptions): Buffer; +} + +declare module "url" { + export interface Url { + href?: string; + protocol?: string; + auth?: string; + hostname?: string; + port?: string; + host?: string; + pathname?: string; + search?: string; + query?: string | any; + slashes?: boolean; + hash?: string; + path?: string; + } + + export function parse(urlStr: string, parseQueryString?: boolean, slashesDenoteHost?: boolean): Url; + export function format(url: Url): string; + export function resolve(from: string, to: string): string; +} + +declare module "dns" { + export function lookup(domain: string, family: number, callback: (err: Error, address: string, family: number) => void): string; + export function lookup(domain: string, callback: (err: Error, address: string, family: number) => void): string; + export function resolve(domain: string, rrtype: string, callback: (err: Error, addresses: string[]) => void): string[]; + export function resolve(domain: string, callback: (err: Error, addresses: string[]) => void): string[]; + export function resolve4(domain: string, callback: (err: Error, addresses: string[]) => void): string[]; + export function resolve6(domain: string, callback: (err: Error, addresses: string[]) => void): string[]; + export function resolveMx(domain: string, callback: (err: Error, addresses: string[]) => void): string[]; + export function resolveTxt(domain: string, callback: (err: Error, addresses: string[]) => void): string[]; + export function resolveSrv(domain: string, callback: (err: Error, addresses: string[]) => void): string[]; + export function resolveNs(domain: string, callback: (err: Error, addresses: string[]) => void): string[]; + export function resolveCname(domain: string, callback: (err: Error, addresses: string[]) => void): string[]; + export function reverse(ip: string, callback: (err: Error, domains: string[]) => void): string[]; +} + +declare module "net" { + import * as stream from "stream"; + + export interface Socket extends stream.Duplex { + // Extended base methods + write(buffer: Buffer): boolean; + write(buffer: Buffer, cb?: Function): boolean; + write(str: string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + write(str: string, encoding?: string, fd?: string): boolean; + + connect(port: number, host?: string, connectionListener?: Function): void; + connect(path: string, connectionListener?: Function): void; + bufferSize: number; + setEncoding(encoding?: string): void; + write(data: any, encoding?: string, callback?: Function): void; + destroy(): void; + pause(): void; + resume(): void; + setTimeout(timeout: number, callback?: Function): void; + setNoDelay(noDelay?: boolean): void; + setKeepAlive(enable?: boolean, initialDelay?: number): void; + address(): { port: number; family: string; address: string; }; + unref(): void; + ref(): void; + + remoteAddress: string; + remoteFamily: string; + remotePort: number; + localAddress: string; + localPort: number; + bytesRead: number; + bytesWritten: number; + + // Extended base methods + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + end(data?: any, encoding?: string): void; + } + + export var Socket: { + new (options?: { fd?: string; type?: string; allowHalfOpen?: boolean; }): Socket; + }; + + export interface ListenOptions { + port?: number; + host?: string; + backlog?: number; + path?: string; + exclusive?: boolean; + } + + export interface Server extends Socket { + listen(port: number, hostname?: string, backlog?: number, listeningListener?: Function): Server; + listen(port: number, hostname?: string, listeningListener?: Function): Server; + listen(port: number, backlog?: number, listeningListener?: Function): Server; + listen(port: number, listeningListener?: Function): Server; + listen(path: string, backlog?: number, listeningListener?: Function): Server; + listen(path: string, listeningListener?: Function): Server; + listen(handle: any, backlog?: number, listeningListener?: Function): Server; + listen(handle: any, listeningListener?: Function): Server; + listen(options: ListenOptions, listeningListener?: Function): Server; + close(callback?: Function): Server; + address(): { port: number; family: string; address: string; }; + getConnections(cb: (error: Error, count: number) => void): void; + ref(): Server; + unref(): Server; + maxConnections: number; + connections: number; + } + export function createServer(connectionListener?: (socket: Socket) => void): Server; + export function createServer(options?: { allowHalfOpen?: boolean; }, connectionListener?: (socket: Socket) => void): Server; + export function connect(options: { port: number, host?: string, localAddress?: string, localPort?: string, family?: number, allowHalfOpen?: boolean; }, connectionListener?: Function): Socket; + export function connect(port: number, host?: string, connectionListener?: Function): Socket; + export function connect(path: string, connectionListener?: Function): Socket; + export function createConnection(options: { port: number, host?: string, localAddress?: string, localPort?: string, family?: number, allowHalfOpen?: boolean; }, connectionListener?: Function): Socket; + export function createConnection(port: number, host?: string, connectionListener?: Function): Socket; + export function createConnection(path: string, connectionListener?: Function): Socket; + export function isIP(input: string): number; + export function isIPv4(input: string): boolean; + export function isIPv6(input: string): boolean; +} + +declare module "dgram" { + import * as events from "events"; + + interface RemoteInfo { + address: string; + port: number; + size: number; + } + + interface AddressInfo { + address: string; + family: string; + port: number; + } + + export function createSocket(type: string, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; + + interface Socket extends events.EventEmitter { + send(buf: Buffer, offset: number, length: number, port: number, address: string, callback?: (error: Error, bytes: number) => void): void; + bind(port: number, address?: string, callback?: () => void): void; + close(): void; + address(): AddressInfo; + setBroadcast(flag: boolean): void; + setMulticastTTL(ttl: number): void; + setMulticastLoopback(flag: boolean): void; + addMembership(multicastAddress: string, multicastInterface?: string): void; + dropMembership(multicastAddress: string, multicastInterface?: string): void; + } +} + +declare module "fs" { + import * as stream from "stream"; + import * as events from "events"; + + interface Stats { + isFile(): boolean; + isDirectory(): boolean; + isBlockDevice(): boolean; + isCharacterDevice(): boolean; + isSymbolicLink(): boolean; + isFIFO(): boolean; + isSocket(): boolean; + dev: number; + ino: number; + mode: number; + nlink: number; + uid: number; + gid: number; + rdev: number; + size: number; + blksize: number; + blocks: number; + atime: Date; + mtime: Date; + ctime: Date; + birthtime: Date; + } + + interface FSWatcher extends events.EventEmitter { + close(): void; + } + + export interface ReadStream extends stream.Readable { + close(): void; + destroy(): void; + } + export interface WriteStream extends stream.Writable { + close(): void; + bytesWritten: number; + } + + /** + * Asynchronous rename. + * @param oldPath + * @param newPath + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function rename(oldPath: string, newPath: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + /** + * Synchronous rename + * @param oldPath + * @param newPath + */ + export function renameSync(oldPath: string, newPath: string): void; + export function truncate(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function truncate(path: string | Buffer, len: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function truncateSync(path: string | Buffer, len?: number): void; + export function ftruncate(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function ftruncate(fd: number, len: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function ftruncateSync(fd: number, len?: number): void; + export function chown(path: string | Buffer, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function chownSync(path: string | Buffer, uid: number, gid: number): void; + export function fchown(fd: number, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fchownSync(fd: number, uid: number, gid: number): void; + export function lchown(path: string | Buffer, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function lchownSync(path: string | Buffer, uid: number, gid: number): void; + export function chmod(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function chmod(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function chmodSync(path: string | Buffer, mode: number): void; + export function chmodSync(path: string | Buffer, mode: string): void; + export function fchmod(fd: number, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fchmod(fd: number, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fchmodSync(fd: number, mode: number): void; + export function fchmodSync(fd: number, mode: string): void; + export function lchmod(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function lchmod(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function lchmodSync(path: string | Buffer, mode: number): void; + export function lchmodSync(path: string | Buffer, mode: string): void; + export function stat(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; + export function lstat(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; + export function fstat(fd: number, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; + export function statSync(path: string | Buffer): Stats; + export function lstatSync(path: string | Buffer): Stats; + export function fstatSync(fd: number): Stats; + export function link(srcpath: string | Buffer, dstpath: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function linkSync(srcpath: string | Buffer, dstpath: string | Buffer): void; + export function symlink(srcpath: string | Buffer, dstpath: string | Buffer, type?: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function symlinkSync(srcpath: string | Buffer, dstpath: string | Buffer, type?: string): void; + export function readlink(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, linkString: string) => any): void; + export function readlinkSync(path: string | Buffer): string; + export function realpath(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, resolvedPath: string) => any): void; + export function realpath(path: string | Buffer, cache: { [path: string]: string }, callback: (err: NodeJS.ErrnoException, resolvedPath: string) => any): void; + export function realpathSync(path: string | Buffer, cache?: { [path: string]: string }): string; + /* + * Asynchronous unlink - deletes the file specified in {path} + * + * @param path + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function unlink(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + /* + * Synchronous unlink - deletes the file specified in {path} + * + * @param path + */ + export function unlinkSync(path: string | Buffer): void; + /* + * Asynchronous rmdir - removes the directory specified in {path} + * + * @param path + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function rmdir(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + /* + * Synchronous rmdir - removes the directory specified in {path} + * + * @param path + */ + export function rmdirSync(path: string | Buffer): void; + /* + * Asynchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. + * + * @param path + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function mkdir(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + /* + * Asynchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. + * + * @param path + * @param mode + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function mkdir(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + /* + * Asynchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. + * + * @param path + * @param mode + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function mkdir(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + /* + * Synchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. + * + * @param path + * @param mode + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function mkdirSync(path: string | Buffer, mode?: number): void; + /* + * Synchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. + * + * @param path + * @param mode + * @param callback No arguments other than a possible exception are given to the completion callback. + */ + export function mkdirSync(path: string | Buffer, mode?: string): void; + /* + * Asynchronous mkdtemp - Creates a unique temporary directory. Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * + * @param prefix + * @param callback The created folder path is passed as a string to the callback's second parameter. + */ + export function mkdtemp(prefix: string, callback?: (err: NodeJS.ErrnoException, folder: string) => void): void; + /* + * Synchronous mkdtemp - Creates a unique temporary directory. Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * + * @param prefix + * @returns Returns the created folder path. + */ + export function mkdtempSync(prefix: string): string; + export function readdir(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, files: string[]) => void): void; + export function readdirSync(path: string | Buffer): string[]; + export function close(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function closeSync(fd: number): void; + export function open(path: string | Buffer, flags: string | number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; + export function open(path: string | Buffer, flags: string | number, mode: number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; + export function openSync(path: string | Buffer, flags: string | number, mode?: number): number; + export function utimes(path: string | Buffer, atime: number, mtime: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function utimes(path: string | Buffer, atime: Date, mtime: Date, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function utimesSync(path: string | Buffer, atime: number, mtime: number): void; + export function utimesSync(path: string | Buffer, atime: Date, mtime: Date): void; + export function futimes(fd: number, atime: number, mtime: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function futimes(fd: number, atime: Date, mtime: Date, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function futimesSync(fd: number, atime: number, mtime: number): void; + export function futimesSync(fd: number, atime: Date, mtime: Date): void; + export function fsync(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fsyncSync(fd: number): void; + export function write(fd: number, buffer: Buffer, offset: number, length: number, position: number, callback?: (err: NodeJS.ErrnoException, written: number, buffer: Buffer) => void): void; + export function write(fd: number, buffer: Buffer, offset: number, length: number, callback?: (err: NodeJS.ErrnoException, written: number, buffer: Buffer) => void): void; + export function write(fd: number, data: any, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; + export function write(fd: number, data: any, offset: number, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; + export function write(fd: number, data: any, offset: number, encoding: string, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; + export function writeSync(fd: number, buffer: Buffer, offset: number, length: number, position?: number): number; + export function writeSync(fd: number, data: any, position?: number, enconding?: string): number; + export function read(fd: number, buffer: Buffer, offset: number, length: number, position: number, callback?: (err: NodeJS.ErrnoException, bytesRead: number, buffer: Buffer) => void): void; + export function readSync(fd: number, buffer: Buffer, offset: number, length: number, position: number): number; + /* + * Asynchronous readFile - Asynchronously reads the entire contents of a file. + * + * @param fileName + * @param encoding + * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. + */ + export function readFile(filename: string, encoding: string, callback: (err: NodeJS.ErrnoException, data: string) => void): void; + /* + * Asynchronous readFile - Asynchronously reads the entire contents of a file. + * + * @param fileName + * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFile returns a string; otherwise it returns a Buffer. + * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. + */ + export function readFile(filename: string, options: { encoding: string; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: string) => void): void; + /* + * Asynchronous readFile - Asynchronously reads the entire contents of a file. + * + * @param fileName + * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFile returns a string; otherwise it returns a Buffer. + * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. + */ + export function readFile(filename: string, options: { flag?: string; }, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; + /* + * Asynchronous readFile - Asynchronously reads the entire contents of a file. + * + * @param fileName + * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. + */ + export function readFile(filename: string, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; + /* + * Synchronous readFile - Synchronously reads the entire contents of a file. + * + * @param fileName + * @param encoding + */ + export function readFileSync(filename: string, encoding: string): string; + /* + * Synchronous readFile - Synchronously reads the entire contents of a file. + * + * @param fileName + * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFileSync returns a string; otherwise it returns a Buffer. + */ + export function readFileSync(filename: string, options: { encoding: string; flag?: string; }): string; + /* + * Synchronous readFile - Synchronously reads the entire contents of a file. + * + * @param fileName + * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFileSync returns a string; otherwise it returns a Buffer. + */ + export function readFileSync(filename: string, options?: { flag?: string; }): Buffer; + export function writeFile(filename: string, data: any, callback?: (err: NodeJS.ErrnoException) => void): void; + export function writeFile(filename: string, data: any, options: { encoding?: string; mode?: number; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function writeFile(filename: string, data: any, options: { encoding?: string; mode?: string; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function writeFileSync(filename: string, data: any, options?: { encoding?: string; mode?: number; flag?: string; }): void; + export function writeFileSync(filename: string, data: any, options?: { encoding?: string; mode?: string; flag?: string; }): void; + export function appendFile(filename: string, data: any, options: { encoding?: string; mode?: number; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function appendFile(filename: string, data: any, options: { encoding?: string; mode?: string; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function appendFile(filename: string, data: any, callback?: (err: NodeJS.ErrnoException) => void): void; + export function appendFileSync(filename: string, data: any, options?: { encoding?: string; mode?: number; flag?: string; }): void; + export function appendFileSync(filename: string, data: any, options?: { encoding?: string; mode?: string; flag?: string; }): void; + export function watchFile(filename: string, listener: (curr: Stats, prev: Stats) => void): void; + export function watchFile(filename: string, options: { persistent?: boolean; interval?: number; }, listener: (curr: Stats, prev: Stats) => void): void; + export function unwatchFile(filename: string, listener?: (curr: Stats, prev: Stats) => void): void; + export function watch(filename: string, listener?: (event: string, filename: string) => any): FSWatcher; + export function watch(filename: string, encoding: string, listener?: (event: string, filename: string | Buffer) => any): FSWatcher; + export function watch(filename: string, options: { persistent?: boolean; recursive?: boolean; encoding?: string }, listener?: (event: string, filename: string | Buffer) => any): FSWatcher; + export function exists(path: string | Buffer, callback?: (exists: boolean) => void): void; + export function existsSync(path: string | Buffer): boolean; + /** Constant for fs.access(). File is visible to the calling process. */ + export var F_OK: number; + /** Constant for fs.access(). File can be read by the calling process. */ + export var R_OK: number; + /** Constant for fs.access(). File can be written by the calling process. */ + export var W_OK: number; + /** Constant for fs.access(). File can be executed by the calling process. */ + export var X_OK: number; + /** Tests a user's permissions for the file specified by path. */ + export function access(path: string | Buffer, callback: (err: NodeJS.ErrnoException) => void): void; + export function access(path: string | Buffer, mode: number, callback: (err: NodeJS.ErrnoException) => void): void; + /** Synchronous version of fs.access. This throws if any accessibility checks fail, and does nothing otherwise. */ + export function accessSync(path: string | Buffer, mode?: number): void; + export function createReadStream(path: string | Buffer, options?: { + flags?: string; + encoding?: string; + fd?: number; + mode?: number; + autoClose?: boolean; + start?: number; + end?: number; + }): ReadStream; + export function createWriteStream(path: string | Buffer, options?: { + flags?: string; + encoding?: string; + fd?: number; + mode?: number; + }): WriteStream; +} + +declare module "path" { + + /** + * A parsed path object generated by path.parse() or consumed by path.format(). + */ + export interface ParsedPath { + /** + * The root of the path such as '/' or 'c:\' + */ + root: string; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir: string; + /** + * The file name including extension (if any) such as 'index.html' + */ + base: string; + /** + * The file extension (if any) such as '.html' + */ + ext: string; + /** + * The file name without extension (if any) such as 'index' + */ + name: string; + } + + /** + * Normalize a string path, reducing '..' and '.' parts. + * When multiple slashes are found, they're replaced by a single one; when the path contains a trailing slash, it is preserved. On Windows backslashes are used. + * + * @param p string path to normalize. + */ + export function normalize(p: string): string; + /** + * Join all arguments together and normalize the resulting path. + * Arguments must be strings. In v0.8, non-string arguments were silently ignored. In v0.10 and up, an exception is thrown. + * + * @param paths string paths to join. + */ + export function join(...paths: any[]): string; + /** + * Join all arguments together and normalize the resulting path. + * Arguments must be strings. In v0.8, non-string arguments were silently ignored. In v0.10 and up, an exception is thrown. + * + * @param paths string paths to join. + */ + export function join(...paths: string[]): string; + /** + * The right-most parameter is considered {to}. Other parameters are considered an array of {from}. + * + * Starting from leftmost {from} paramter, resolves {to} to an absolute path. + * + * If {to} isn't already absolute, {from} arguments are prepended in right to left order, until an absolute path is found. If after using all {from} paths still no absolute path is found, the current working directory is used as well. The resulting path is normalized, and trailing slashes are removed unless the path gets resolved to the root directory. + * + * @param pathSegments string paths to join. Non-string arguments are ignored. + */ + export function resolve(...pathSegments: any[]): string; + /** + * Determines whether {path} is an absolute path. An absolute path will always resolve to the same location, regardless of the working directory. + * + * @param path path to test. + */ + export function isAbsolute(path: string): boolean; + /** + * Solve the relative path from {from} to {to}. + * At times we have two absolute paths, and we need to derive the relative path from one to the other. This is actually the reverse transform of path.resolve. + * + * @param from + * @param to + */ + export function relative(from: string, to: string): string; + /** + * Return the directory name of a path. Similar to the Unix dirname command. + * + * @param p the path to evaluate. + */ + export function dirname(p: string): string; + /** + * Return the last portion of a path. Similar to the Unix basename command. + * Often used to extract the file name from a fully qualified path. + * + * @param p the path to evaluate. + * @param ext optionally, an extension to remove from the result. + */ + export function basename(p: string, ext?: string): string; + /** + * Return the extension of the path, from the last '.' to end of string in the last portion of the path. + * If there is no '.' in the last portion of the path or the first character of it is '.', then it returns an empty string + * + * @param p the path to evaluate. + */ + export function extname(p: string): string; + /** + * The platform-specific file separator. '\\' or '/'. + */ + export var sep: string; + /** + * The platform-specific file delimiter. ';' or ':'. + */ + export var delimiter: string; + /** + * Returns an object from a path string - the opposite of format(). + * + * @param pathString path to evaluate. + */ + export function parse(pathString: string): ParsedPath; + /** + * Returns a path string from an object - the opposite of parse(). + * + * @param pathString path to evaluate. + */ + export function format(pathObject: ParsedPath): string; + + export module posix { + export function normalize(p: string): string; + export function join(...paths: any[]): string; + export function resolve(...pathSegments: any[]): string; + export function isAbsolute(p: string): boolean; + export function relative(from: string, to: string): string; + export function dirname(p: string): string; + export function basename(p: string, ext?: string): string; + export function extname(p: string): string; + export var sep: string; + export var delimiter: string; + export function parse(p: string): ParsedPath; + export function format(pP: ParsedPath): string; + } + + export module win32 { + export function normalize(p: string): string; + export function join(...paths: any[]): string; + export function resolve(...pathSegments: any[]): string; + export function isAbsolute(p: string): boolean; + export function relative(from: string, to: string): string; + export function dirname(p: string): string; + export function basename(p: string, ext?: string): string; + export function extname(p: string): string; + export var sep: string; + export var delimiter: string; + export function parse(p: string): ParsedPath; + export function format(pP: ParsedPath): string; + } +} + +declare module "string_decoder" { + export interface NodeStringDecoder { + write(buffer: Buffer): string; + end(buffer?: Buffer): string; + } + export var StringDecoder: { + new (encoding?: string): NodeStringDecoder; + }; +} + +declare module "tls" { + import * as crypto from "crypto"; + import * as net from "net"; + import * as stream from "stream"; + + var CLIENT_RENEG_LIMIT: number; + var CLIENT_RENEG_WINDOW: number; + + export interface Certificate { + /** + * Country code. + */ + C: string; + /** + * Street. + */ + ST: string; + /** + * Locality. + */ + L: string; + /** + * Organization. + */ + O: string; + /** + * Organizational unit. + */ + OU: string; + /** + * Common name. + */ + CN: string; + } + + export interface CipherNameAndProtocol { + /** + * The cipher name. + */ + name: string; + /** + * SSL/TLS protocol version. + */ + version: string; + } + + export class TLSSocket extends stream.Duplex { + /** + * Returns the bound address, the address family name and port of the underlying socket as reported by + * the operating system. + * @returns {any} - An object with three properties, e.g. { port: 12346, family: 'IPv4', address: '127.0.0.1' }. + */ + address(): { port: number; family: string; address: string }; + /** + * A boolean that is true if the peer certificate was signed by one of the specified CAs, otherwise false. + */ + authorized: boolean; + /** + * The reason why the peer's certificate has not been verified. + * This property becomes available only when tlsSocket.authorized === false. + */ + authorizationError: Error; + /** + * Static boolean value, always true. + * May be used to distinguish TLS sockets from regular ones. + */ + encrypted: boolean; + /** + * Returns an object representing the cipher name and the SSL/TLS protocol version of the current connection. + * @returns {CipherNameAndProtocol} - Returns an object representing the cipher name + * and the SSL/TLS protocol version of the current connection. + */ + getCipher(): CipherNameAndProtocol; + /** + * Returns an object representing the peer's certificate. + * The returned object has some properties corresponding to the field of the certificate. + * If detailed argument is true the full chain with issuer property will be returned, + * if false only the top certificate without issuer property. + * If the peer does not provide a certificate, it returns null or an empty object. + * @param {boolean} detailed - If true; the full chain with issuer property will be returned. + * @returns {any} - An object representing the peer's certificate. + */ + getPeerCertificate(detailed?: boolean): { + subject: Certificate; + issuerInfo: Certificate; + issuer: Certificate; + raw: any; + valid_from: string; + valid_to: string; + fingerprint: string; + serialNumber: string; + }; + /** + * Could be used to speed up handshake establishment when reconnecting to the server. + * @returns {any} - ASN.1 encoded TLS session or undefined if none was negotiated. + */ + getSession(): any; + /** + * NOTE: Works only with client TLS sockets. + * Useful only for debugging, for session reuse provide session option to tls.connect(). + * @returns {any} - TLS session ticket or undefined if none was negotiated. + */ + getTLSTicket(): any; + /** + * The string representation of the local IP address. + */ + localAddress: string; + /** + * The numeric representation of the local port. + */ + localPort: string; + /** + * The string representation of the remote IP address. + * For example, '74.125.127.100' or '2001:4860:a005::68'. + */ + remoteAddress: string; + /** + * The string representation of the remote IP family. 'IPv4' or 'IPv6'. + */ + remoteFamily: string; + /** + * The numeric representation of the remote port. For example, 443. + */ + remotePort: number; + /** + * Initiate TLS renegotiation process. + * + * NOTE: Can be used to request peer's certificate after the secure connection has been established. + * ANOTHER NOTE: When running as the server, socket will be destroyed with an error after handshakeTimeout timeout. + * @param {TlsOptions} options - The options may contain the following fields: rejectUnauthorized, + * requestCert (See tls.createServer() for details). + * @param {Function} callback - callback(err) will be executed with null as err, once the renegotiation + * is successfully completed. + */ + renegotiate(options: TlsOptions, callback: (err: Error) => any): any; + /** + * Set maximum TLS fragment size (default and maximum value is: 16384, minimum is: 512). + * Smaller fragment size decreases buffering latency on the client: large fragments are buffered by + * the TLS layer until the entire fragment is received and its integrity is verified; + * large fragments can span multiple roundtrips, and their processing can be delayed due to packet + * loss or reordering. However, smaller fragments add extra TLS framing bytes and CPU overhead, + * which may decrease overall server throughput. + * @param {number} size - TLS fragment size (default and maximum value is: 16384, minimum is: 512). + * @returns {boolean} - Returns true on success, false otherwise. + */ + setMaxSendFragment(size: number): boolean; + } + + export interface TlsOptions { + host?: string; + port?: number; + pfx?: any; //string or buffer + key?: any; //string or buffer + passphrase?: string; + cert?: any; + ca?: any; //string or buffer + crl?: any; //string or string array + ciphers?: string; + honorCipherOrder?: any; + requestCert?: boolean; + rejectUnauthorized?: boolean; + NPNProtocols?: any; //array or Buffer; + SNICallback?: (servername: string) => any; + } + + export interface ConnectionOptions { + host?: string; + port?: number; + socket?: net.Socket; + pfx?: string | Buffer + key?: string | Buffer + passphrase?: string; + cert?: string | Buffer + ca?: (string | Buffer)[]; + rejectUnauthorized?: boolean; + NPNProtocols?: (string | Buffer)[]; + servername?: string; + } + + export interface Server extends net.Server { + close(): Server; + address(): { port: number; family: string; address: string; }; + addContext(hostName: string, credentials: { + key: string; + cert: string; + ca: string; + }): void; + maxConnections: number; + connections: number; + } + + export interface ClearTextStream extends stream.Duplex { + authorized: boolean; + authorizationError: Error; + getPeerCertificate(): any; + getCipher: { + name: string; + version: string; + }; + address: { + port: number; + family: string; + address: string; + }; + remoteAddress: string; + remotePort: number; + } + + export interface SecurePair { + encrypted: any; + cleartext: any; + } + + export interface SecureContextOptions { + pfx?: string | Buffer; + key?: string | Buffer; + passphrase?: string; + cert?: string | Buffer; + ca?: string | Buffer; + crl?: string | string[] + ciphers?: string; + honorCipherOrder?: boolean; + } + + export interface SecureContext { + context: any; + } + + export function createServer(options: TlsOptions, secureConnectionListener?: (cleartextStream: ClearTextStream) => void): Server; + export function connect(options: TlsOptions, secureConnectionListener?: () => void): ClearTextStream; + export function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): ClearTextStream; + export function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): ClearTextStream; + export function createSecurePair(credentials?: crypto.Credentials, isServer?: boolean, requestCert?: boolean, rejectUnauthorized?: boolean): SecurePair; + export function createSecureContext(details: SecureContextOptions): SecureContext; +} + +declare module "crypto" { + export interface CredentialDetails { + pfx: string; + key: string; + passphrase: string; + cert: string; + ca: string | string[]; + crl: string | string[]; + ciphers: string; + } + export interface Credentials { context?: any; } + export function createCredentials(details: CredentialDetails): Credentials; + export function createHash(algorithm: string): Hash; + export function createHmac(algorithm: string, key: string): Hmac; + export function createHmac(algorithm: string, key: Buffer): Hmac; + export interface Hash { + update(data: any, input_encoding?: string): Hash; + digest(encoding: 'buffer'): Buffer; + digest(encoding: string): any; + digest(): Buffer; + } + export interface Hmac extends NodeJS.ReadWriteStream { + update(data: any, input_encoding?: string): Hmac; + digest(encoding: 'buffer'): Buffer; + digest(encoding: string): any; + digest(): Buffer; + } + export function createCipher(algorithm: string, password: any): Cipher; + export function createCipheriv(algorithm: string, key: any, iv: any): Cipher; + export interface Cipher extends NodeJS.ReadWriteStream { + update(data: Buffer): Buffer; + update(data: string, input_encoding: "utf8" | "ascii" | "binary"): Buffer; + update(data: Buffer, input_encoding: any, output_encoding: "binary" | "base64" | "hex"): string; + update(data: string, input_encoding: "utf8" | "ascii" | "binary", output_encoding: "binary" | "base64" | "hex"): string; + final(): Buffer; + final(output_encoding: string): string; + setAutoPadding(auto_padding: boolean): void; + getAuthTag(): Buffer; + } + export function createDecipher(algorithm: string, password: any): Decipher; + export function createDecipheriv(algorithm: string, key: any, iv: any): Decipher; + export interface Decipher extends NodeJS.ReadWriteStream { + update(data: Buffer): Buffer; + update(data: string, input_encoding: "binary" | "base64" | "hex"): Buffer; + update(data: Buffer, input_encoding: any, output_encoding: "utf8" | "ascii" | "binary"): string; + update(data: string, input_encoding: "binary" | "base64" | "hex", output_encoding: "utf8" | "ascii" | "binary"): string; + final(): Buffer; + final(output_encoding: string): string; + setAutoPadding(auto_padding: boolean): void; + setAuthTag(tag: Buffer): void; + } + export function createSign(algorithm: string): Signer; + export interface Signer extends NodeJS.WritableStream { + update(data: any): void; + sign(private_key: string, output_format: string): string; + } + export function createVerify(algorith: string): Verify; + export interface Verify extends NodeJS.WritableStream { + update(data: any): void; + verify(object: string, signature: string, signature_format?: string): boolean; + } + export function createDiffieHellman(prime_length: number): DiffieHellman; + export function createDiffieHellman(prime: number, encoding?: string): DiffieHellman; + export interface DiffieHellman { + generateKeys(encoding?: string): string; + computeSecret(other_public_key: string, input_encoding?: string, output_encoding?: string): string; + getPrime(encoding?: string): string; + getGenerator(encoding: string): string; + getPublicKey(encoding?: string): string; + getPrivateKey(encoding?: string): string; + setPublicKey(public_key: string, encoding?: string): void; + setPrivateKey(public_key: string, encoding?: string): void; + } + export function getDiffieHellman(group_name: string): DiffieHellman; + export function pbkdf2(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, callback: (err: Error, derivedKey: Buffer) => any): void; + export function pbkdf2(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string, callback: (err: Error, derivedKey: Buffer) => any): void; + export function pbkdf2Sync(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number): Buffer; + export function pbkdf2Sync(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string): Buffer; + export function randomBytes(size: number): Buffer; + export function randomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; + export function pseudoRandomBytes(size: number): Buffer; + export function pseudoRandomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; + export interface RsaPublicKey { + key: string; + padding?: any; + } + export interface RsaPrivateKey { + key: string; + passphrase?: string, + padding?: any; + } + export function publicEncrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer + export function privateDecrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer +} + +declare module "stream" { + import * as events from "events"; + + export class Stream extends events.EventEmitter { + pipe(destination: T, options?: { end?: boolean; }): T; + } + + export interface ReadableOptions { + highWaterMark?: number; + encoding?: string; + objectMode?: boolean; + read?: (size?: number) => any; + } + + export class Readable extends events.EventEmitter implements NodeJS.ReadableStream { + readable: boolean; + constructor(opts?: ReadableOptions); + _read(size: number): void; + read(size?: number): any; + setEncoding(encoding: string): void; + pause(): void; + resume(): void; + pipe(destination: T, options?: { end?: boolean; }): T; + unpipe(destination?: T): void; + unshift(chunk: any): void; + wrap(oldStream: NodeJS.ReadableStream): NodeJS.ReadableStream; + push(chunk: any, encoding?: string): boolean; + } + + export interface WritableOptions { + highWaterMark?: number; + decodeStrings?: boolean; + objectMode?: boolean; + write?: (chunk: string|Buffer, encoding: string, callback: Function) => any; + writev?: (chunks: {chunk: string|Buffer, encoding: string}[], callback: Function) => any; + } + + export class Writable extends events.EventEmitter implements NodeJS.WritableStream { + writable: boolean; + constructor(opts?: WritableOptions); + _write(chunk: any, encoding: string, callback: Function): void; + write(chunk: any, cb?: Function): boolean; + write(chunk: any, encoding?: string, cb?: Function): boolean; + end(): void; + end(chunk: any, cb?: Function): void; + end(chunk: any, encoding?: string, cb?: Function): void; + } + + export interface DuplexOptions extends ReadableOptions, WritableOptions { + allowHalfOpen?: boolean; + readableObjectMode?: boolean; + writableObjectMode?: boolean; + } + + // Note: Duplex extends both Readable and Writable. + export class Duplex extends Readable implements NodeJS.ReadWriteStream { + writable: boolean; + constructor(opts?: DuplexOptions); + _write(chunk: any, encoding: string, callback: Function): void; + write(chunk: any, cb?: Function): boolean; + write(chunk: any, encoding?: string, cb?: Function): boolean; + end(): void; + end(chunk: any, cb?: Function): void; + end(chunk: any, encoding?: string, cb?: Function): void; + } + + export interface TransformOptions extends ReadableOptions, WritableOptions { + transform?: (chunk: string|Buffer, encoding: string, callback: Function) => any; + flush?: (callback: Function) => any; + } + + // Note: Transform lacks the _read and _write methods of Readable/Writable. + export class Transform extends events.EventEmitter implements NodeJS.ReadWriteStream { + readable: boolean; + writable: boolean; + constructor(opts?: TransformOptions); + _transform(chunk: any, encoding: string, callback: Function): void; + _flush(callback: Function): void; + read(size?: number): any; + setEncoding(encoding: string): void; + pause(): void; + resume(): void; + pipe(destination: T, options?: { end?: boolean; }): T; + unpipe(destination?: T): void; + unshift(chunk: any): void; + wrap(oldStream: NodeJS.ReadableStream): NodeJS.ReadableStream; + push(chunk: any, encoding?: string): boolean; + write(chunk: any, cb?: Function): boolean; + write(chunk: any, encoding?: string, cb?: Function): boolean; + end(): void; + end(chunk: any, cb?: Function): void; + end(chunk: any, encoding?: string, cb?: Function): void; + } + + export class PassThrough extends Transform { } +} + +declare module "util" { + export interface InspectOptions { + showHidden?: boolean; + depth?: number; + colors?: boolean; + customInspect?: boolean; + } + + export function format(format: any, ...param: any[]): string; + export function debug(string: string): void; + export function error(...param: any[]): void; + export function puts(...param: any[]): void; + export function print(...param: any[]): void; + export function log(string: string): void; + export function inspect(object: any, showHidden?: boolean, depth?: number, color?: boolean): string; + export function inspect(object: any, options: InspectOptions): string; + export function isArray(object: any): boolean; + export function isRegExp(object: any): boolean; + export function isDate(object: any): boolean; + export function isError(object: any): boolean; + export function inherits(constructor: any, superConstructor: any): void; + export function debuglog(key: string): (msg: string, ...param: any[]) => void; +} + +declare module "assert" { + function internal(value: any, message?: string): void; + namespace internal { + export class AssertionError implements Error { + name: string; + message: string; + actual: any; + expected: any; + operator: string; + generatedMessage: boolean; + + constructor(options?: { + message?: string; actual?: any; expected?: any; + operator?: string; stackStartFunction?: Function + }); + } + + export function fail(actual?: any, expected?: any, message?: string, operator?: string): void; + export function ok(value: any, message?: string): void; + export function equal(actual: any, expected: any, message?: string): void; + export function notEqual(actual: any, expected: any, message?: string): void; + export function deepEqual(actual: any, expected: any, message?: string): void; + export function notDeepEqual(acutal: any, expected: any, message?: string): void; + export function strictEqual(actual: any, expected: any, message?: string): void; + export function notStrictEqual(actual: any, expected: any, message?: string): void; + export function deepStrictEqual(actual: any, expected: any, message?: string): void; + export function notDeepStrictEqual(actual: any, expected: any, message?: string): void; + export var throws: { + (block: Function, message?: string): void; + (block: Function, error: Function, message?: string): void; + (block: Function, error: RegExp, message?: string): void; + (block: Function, error: (err: any) => boolean, message?: string): void; + }; + + export var doesNotThrow: { + (block: Function, message?: string): void; + (block: Function, error: Function, message?: string): void; + (block: Function, error: RegExp, message?: string): void; + (block: Function, error: (err: any) => boolean, message?: string): void; + }; + + export function ifError(value: any): void; + } + + export = internal; +} + +declare module "tty" { + import * as net from "net"; + + export function isatty(fd: number): boolean; + export interface ReadStream extends net.Socket { + isRaw: boolean; + setRawMode(mode: boolean): void; + isTTY: boolean; + } + export interface WriteStream extends net.Socket { + columns: number; + rows: number; + isTTY: boolean; + } +} + +declare module "domain" { + import * as events from "events"; + + export class Domain extends events.EventEmitter implements NodeJS.Domain { + run(fn: Function): void; + add(emitter: events.EventEmitter): void; + remove(emitter: events.EventEmitter): void; + bind(cb: (err: Error, data: any) => any): any; + intercept(cb: (data: any) => any): any; + dispose(): void; + } + + export function create(): Domain; +} + +declare module "constants" { + export var E2BIG: number; + export var EACCES: number; + export var EADDRINUSE: number; + export var EADDRNOTAVAIL: number; + export var EAFNOSUPPORT: number; + export var EAGAIN: number; + export var EALREADY: number; + export var EBADF: number; + export var EBADMSG: number; + export var EBUSY: number; + export var ECANCELED: number; + export var ECHILD: number; + export var ECONNABORTED: number; + export var ECONNREFUSED: number; + export var ECONNRESET: number; + export var EDEADLK: number; + export var EDESTADDRREQ: number; + export var EDOM: number; + export var EEXIST: number; + export var EFAULT: number; + export var EFBIG: number; + export var EHOSTUNREACH: number; + export var EIDRM: number; + export var EILSEQ: number; + export var EINPROGRESS: number; + export var EINTR: number; + export var EINVAL: number; + export var EIO: number; + export var EISCONN: number; + export var EISDIR: number; + export var ELOOP: number; + export var EMFILE: number; + export var EMLINK: number; + export var EMSGSIZE: number; + export var ENAMETOOLONG: number; + export var ENETDOWN: number; + export var ENETRESET: number; + export var ENETUNREACH: number; + export var ENFILE: number; + export var ENOBUFS: number; + export var ENODATA: number; + export var ENODEV: number; + export var ENOENT: number; + export var ENOEXEC: number; + export var ENOLCK: number; + export var ENOLINK: number; + export var ENOMEM: number; + export var ENOMSG: number; + export var ENOPROTOOPT: number; + export var ENOSPC: number; + export var ENOSR: number; + export var ENOSTR: number; + export var ENOSYS: number; + export var ENOTCONN: number; + export var ENOTDIR: number; + export var ENOTEMPTY: number; + export var ENOTSOCK: number; + export var ENOTSUP: number; + export var ENOTTY: number; + export var ENXIO: number; + export var EOPNOTSUPP: number; + export var EOVERFLOW: number; + export var EPERM: number; + export var EPIPE: number; + export var EPROTO: number; + export var EPROTONOSUPPORT: number; + export var EPROTOTYPE: number; + export var ERANGE: number; + export var EROFS: number; + export var ESPIPE: number; + export var ESRCH: number; + export var ETIME: number; + export var ETIMEDOUT: number; + export var ETXTBSY: number; + export var EWOULDBLOCK: number; + export var EXDEV: number; + export var WSAEINTR: number; + export var WSAEBADF: number; + export var WSAEACCES: number; + export var WSAEFAULT: number; + export var WSAEINVAL: number; + export var WSAEMFILE: number; + export var WSAEWOULDBLOCK: number; + export var WSAEINPROGRESS: number; + export var WSAEALREADY: number; + export var WSAENOTSOCK: number; + export var WSAEDESTADDRREQ: number; + export var WSAEMSGSIZE: number; + export var WSAEPROTOTYPE: number; + export var WSAENOPROTOOPT: number; + export var WSAEPROTONOSUPPORT: number; + export var WSAESOCKTNOSUPPORT: number; + export var WSAEOPNOTSUPP: number; + export var WSAEPFNOSUPPORT: number; + export var WSAEAFNOSUPPORT: number; + export var WSAEADDRINUSE: number; + export var WSAEADDRNOTAVAIL: number; + export var WSAENETDOWN: number; + export var WSAENETUNREACH: number; + export var WSAENETRESET: number; + export var WSAECONNABORTED: number; + export var WSAECONNRESET: number; + export var WSAENOBUFS: number; + export var WSAEISCONN: number; + export var WSAENOTCONN: number; + export var WSAESHUTDOWN: number; + export var WSAETOOMANYREFS: number; + export var WSAETIMEDOUT: number; + export var WSAECONNREFUSED: number; + export var WSAELOOP: number; + export var WSAENAMETOOLONG: number; + export var WSAEHOSTDOWN: number; + export var WSAEHOSTUNREACH: number; + export var WSAENOTEMPTY: number; + export var WSAEPROCLIM: number; + export var WSAEUSERS: number; + export var WSAEDQUOT: number; + export var WSAESTALE: number; + export var WSAEREMOTE: number; + export var WSASYSNOTREADY: number; + export var WSAVERNOTSUPPORTED: number; + export var WSANOTINITIALISED: number; + export var WSAEDISCON: number; + export var WSAENOMORE: number; + export var WSAECANCELLED: number; + export var WSAEINVALIDPROCTABLE: number; + export var WSAEINVALIDPROVIDER: number; + export var WSAEPROVIDERFAILEDINIT: number; + export var WSASYSCALLFAILURE: number; + export var WSASERVICE_NOT_FOUND: number; + export var WSATYPE_NOT_FOUND: number; + export var WSA_E_NO_MORE: number; + export var WSA_E_CANCELLED: number; + export var WSAEREFUSED: number; + export var SIGHUP: number; + export var SIGINT: number; + export var SIGILL: number; + export var SIGABRT: number; + export var SIGFPE: number; + export var SIGKILL: number; + export var SIGSEGV: number; + export var SIGTERM: number; + export var SIGBREAK: number; + export var SIGWINCH: number; + export var SSL_OP_ALL: number; + export var SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number; + export var SSL_OP_CIPHER_SERVER_PREFERENCE: number; + export var SSL_OP_CISCO_ANYCONNECT: number; + export var SSL_OP_COOKIE_EXCHANGE: number; + export var SSL_OP_CRYPTOPRO_TLSEXT_BUG: number; + export var SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number; + export var SSL_OP_EPHEMERAL_RSA: number; + export var SSL_OP_LEGACY_SERVER_CONNECT: number; + export var SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number; + export var SSL_OP_MICROSOFT_SESS_ID_BUG: number; + export var SSL_OP_MSIE_SSLV2_RSA_PADDING: number; + export var SSL_OP_NETSCAPE_CA_DN_BUG: number; + export var SSL_OP_NETSCAPE_CHALLENGE_BUG: number; + export var SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number; + export var SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number; + export var SSL_OP_NO_COMPRESSION: number; + export var SSL_OP_NO_QUERY_MTU: number; + export var SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number; + export var SSL_OP_NO_SSLv2: number; + export var SSL_OP_NO_SSLv3: number; + export var SSL_OP_NO_TICKET: number; + export var SSL_OP_NO_TLSv1: number; + export var SSL_OP_NO_TLSv1_1: number; + export var SSL_OP_NO_TLSv1_2: number; + export var SSL_OP_PKCS1_CHECK_1: number; + export var SSL_OP_PKCS1_CHECK_2: number; + export var SSL_OP_SINGLE_DH_USE: number; + export var SSL_OP_SINGLE_ECDH_USE: number; + export var SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number; + export var SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number; + export var SSL_OP_TLS_BLOCK_PADDING_BUG: number; + export var SSL_OP_TLS_D5_BUG: number; + export var SSL_OP_TLS_ROLLBACK_BUG: number; + export var ENGINE_METHOD_DSA: number; + export var ENGINE_METHOD_DH: number; + export var ENGINE_METHOD_RAND: number; + export var ENGINE_METHOD_ECDH: number; + export var ENGINE_METHOD_ECDSA: number; + export var ENGINE_METHOD_CIPHERS: number; + export var ENGINE_METHOD_DIGESTS: number; + export var ENGINE_METHOD_STORE: number; + export var ENGINE_METHOD_PKEY_METHS: number; + export var ENGINE_METHOD_PKEY_ASN1_METHS: number; + export var ENGINE_METHOD_ALL: number; + export var ENGINE_METHOD_NONE: number; + export var DH_CHECK_P_NOT_SAFE_PRIME: number; + export var DH_CHECK_P_NOT_PRIME: number; + export var DH_UNABLE_TO_CHECK_GENERATOR: number; + export var DH_NOT_SUITABLE_GENERATOR: number; + export var NPN_ENABLED: number; + export var RSA_PKCS1_PADDING: number; + export var RSA_SSLV23_PADDING: number; + export var RSA_NO_PADDING: number; + export var RSA_PKCS1_OAEP_PADDING: number; + export var RSA_X931_PADDING: number; + export var RSA_PKCS1_PSS_PADDING: number; + export var POINT_CONVERSION_COMPRESSED: number; + export var POINT_CONVERSION_UNCOMPRESSED: number; + export var POINT_CONVERSION_HYBRID: number; + export var O_RDONLY: number; + export var O_WRONLY: number; + export var O_RDWR: number; + export var S_IFMT: number; + export var S_IFREG: number; + export var S_IFDIR: number; + export var S_IFCHR: number; + export var S_IFBLK: number; + export var S_IFIFO: number; + export var S_IFSOCK: number; + export var S_IRWXU: number; + export var S_IRUSR: number; + export var S_IWUSR: number; + export var S_IXUSR: number; + export var S_IRWXG: number; + export var S_IRGRP: number; + export var S_IWGRP: number; + export var S_IXGRP: number; + export var S_IRWXO: number; + export var S_IROTH: number; + export var S_IWOTH: number; + export var S_IXOTH: number; + export var S_IFLNK: number; + export var O_CREAT: number; + export var O_EXCL: number; + export var O_NOCTTY: number; + export var O_DIRECTORY: number; + export var O_NOATIME: number; + export var O_NOFOLLOW: number; + export var O_SYNC: number; + export var O_SYMLINK: number; + export var O_DIRECT: number; + export var O_NONBLOCK: number; + export var O_TRUNC: number; + export var O_APPEND: number; + export var F_OK: number; + export var R_OK: number; + export var W_OK: number; + export var X_OK: number; + export var UV_UDP_REUSEADDR: number; +} diff --git a/web - 副本/typings/react/react.d.ts b/web - 副本/typings/react/react.d.ts new file mode 100644 index 0000000..57ef054 --- /dev/null +++ b/web - 副本/typings/react/react.d.ts @@ -0,0 +1,2517 @@ +// Type definitions for React v0.14 +// Project: http://facebook.github.io/react/ +// Definitions by: Asana , AssureSign , Microsoft +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare namespace __React { + + // + // React Elements + // ---------------------------------------------------------------------- + + type ReactType = string | ComponentClass | StatelessComponent; + + type Key = string | number; + type Ref = string | ((instance: T) => any); + type ComponentState = {} | void; + + interface Attributes { + key?: Key; + } + interface ClassAttributes extends Attributes { + ref?: Ref; + } + + interface ReactElement

    { + type: string | ComponentClass

    | SFC

    ; + props: P; + key?: Key; + } + + interface SFCElement

    extends ReactElement

    { + type: SFC

    ; + } + + type CElement> = ComponentElement; + interface ComponentElement> extends ReactElement

    { + type: ComponentClass

    ; + ref?: Ref; + } + + type ClassicElement

    = CElement>; + + interface DOMElement

    extends ReactElement

    { + type: string; + ref: Ref; + } + + interface ReactHTMLElement extends DOMElement { + } + + interface ReactSVGElement extends DOMElement { + } + + // + // Factories + // ---------------------------------------------------------------------- + + interface Factory

    { + (props?: P & Attributes, ...children: ReactNode[]): ReactElement

    ; + } + + interface SFCFactory

    { + (props?: P & Attributes, ...children: ReactNode[]): SFCElement

    ; + } + + interface ComponentFactory> { + (props?: P & ClassAttributes, ...children: ReactNode[]): CElement; + } + + type CFactory> = ComponentFactory; + type ClassicFactory

    = CFactory>; + + interface DOMFactory

    { + (props?: P & ClassAttributes, ...children: ReactNode[]): DOMElement; + } + + interface HTMLFactory extends DOMFactory { + } + + interface SVGFactory extends DOMFactory { + } + + // + // React Nodes + // http://facebook.github.io/react/docs/glossary.html + // ---------------------------------------------------------------------- + + type ReactText = string | number; + type ReactChild = ReactElement | ReactText; + + // Should be Array but type aliases cannot be recursive + type ReactFragment = {} | Array; + type ReactNode = ReactChild | ReactFragment | boolean; + + // + // Top Level API + // ---------------------------------------------------------------------- + + function createClass(spec: ComponentSpec): ClassicComponentClass

    ; + + function createFactory

    ( + type: string): DOMFactory; + function createFactory

    (type: SFC

    ): SFCFactory

    ; + function createFactory

    ( + type: ClassType, ClassicComponentClass

    >): CFactory>; + function createFactory, C extends ComponentClass

    >( + type: ClassType): CFactory; + function createFactory

    (type: ComponentClass

    | SFC

    ): Factory

    ; + + function createElement

    ( + type: string, + props?: P & ClassAttributes, + ...children: ReactNode[]): DOMElement; + function createElement

    ( + type: SFC

    , + props?: P & Attributes, + ...children: ReactNode[]): SFCElement

    ; + function createElement

    ( + type: ClassType, ClassicComponentClass

    >, + props?: P & ClassAttributes>, + ...children: ReactNode[]): CElement>; + function createElement, C extends ComponentClass

    >( + type: ClassType, + props?: P & ClassAttributes, + ...children: ReactNode[]): CElement; + function createElement

    ( + type: ComponentClass

    | SFC

    , + props?: P & Attributes, + ...children: ReactNode[]): ReactElement

    ; + + function cloneElement

    ( + element: DOMElement, + props?: P & ClassAttributes, + ...children: ReactNode[]): DOMElement; + function cloneElement

    ( + element: SFCElement

    , + props?: Q, // should be Q & Attributes, but then Q is inferred as {} + ...children: ReactNode[]): SFCElement

    ; + function cloneElement

    >( + element: CElement, + props?: Q, // should be Q & ClassAttributes + ...children: ReactNode[]): CElement; + function cloneElement

    ( + element: ReactElement

    , + props?: Q, // should be Q & Attributes + ...children: ReactNode[]): ReactElement

    ; + + function isValidElement

    (object: {}): object is ReactElement

    ; + + var DOM: ReactDOM; + var PropTypes: ReactPropTypes; + var Children: ReactChildren; + var version: string; + + // + // Component API + // ---------------------------------------------------------------------- + + type ReactInstance = Component | Element; + + // Base component for plain JS classes + class Component implements ComponentLifecycle { + constructor(props?: P, context?: any); + setState(f: (prevState: S, props: P) => S, callback?: () => any): void; + setState(state: S, callback?: () => any): void; + forceUpdate(callback?: () => any): void; + render(): JSX.Element; + + // React.Props is now deprecated, which means that the `children` + // property is not available on `P` by default, even though you can + // always pass children as variadic arguments to `createElement`. + // In the future, if we can define its call signature conditionally + // on the existence of `children` in `P`, then we should remove this. + props: P & { children?: ReactNode }; + state: S; + context: {}; + refs: { + [key: string]: ReactInstance + }; + } + + interface ClassicComponent extends Component { + replaceState(nextState: S, callback?: () => any): void; + isMounted(): boolean; + getInitialState?(): S; + } + + interface ChildContextProvider { + getChildContext(): CC; + } + + // + // Class Interfaces + // ---------------------------------------------------------------------- + + type SFC

    = StatelessComponent

    ; + interface StatelessComponent

    { + (props?: P, context?: any): ReactElement; + propTypes?: ValidationMap

    ; + contextTypes?: ValidationMap; + defaultProps?: P; + displayName?: string; + } + + interface ComponentClass

    { + new(props?: P, context?: any): Component; + propTypes?: ValidationMap

    ; + contextTypes?: ValidationMap; + childContextTypes?: ValidationMap; + defaultProps?: P; + displayName?: string; + } + + interface ClassicComponentClass

    extends ComponentClass

    { + new(props?: P, context?: any): ClassicComponent; + getDefaultProps?(): P; + } + + /** + * We use an intersection type to infer multiple type parameters from + * a single argument, which is useful for many top-level API defs. + * See https://github.com/Microsoft/TypeScript/issues/7234 for more info. + */ + type ClassType, C extends ComponentClass

    > = + C & + (new() => T) & + (new() => { props: P }); + + // + // Component Specs and Lifecycle + // ---------------------------------------------------------------------- + + interface ComponentLifecycle { + componentWillMount?(): void; + componentDidMount?(): void; + componentWillReceiveProps?(nextProps: P, nextContext: any): void; + shouldComponentUpdate?(nextProps: P, nextState: S, nextContext: any): boolean; + componentWillUpdate?(nextProps: P, nextState: S, nextContext: any): void; + componentDidUpdate?(prevProps: P, prevState: S, prevContext: any): void; + componentWillUnmount?(): void; + } + + interface Mixin extends ComponentLifecycle { + mixins?: Mixin; + statics?: { + [key: string]: any; + }; + + displayName?: string; + propTypes?: ValidationMap; + contextTypes?: ValidationMap; + childContextTypes?: ValidationMap; + + getDefaultProps?(): P; + getInitialState?(): S; + } + + interface ComponentSpec extends Mixin { + render(): ReactElement; + + [propertyName: string]: any; + } + + // + // Event System + // ---------------------------------------------------------------------- + + interface SyntheticEvent { + bubbles: boolean; + cancelable: boolean; + currentTarget: EventTarget; + defaultPrevented: boolean; + eventPhase: number; + isTrusted: boolean; + nativeEvent: Event; + preventDefault(): void; + stopPropagation(): void; + target: EventTarget; + timeStamp: Date; + type: string; + } + + interface ClipboardEvent extends SyntheticEvent { + clipboardData: DataTransfer; + } + + interface CompositionEvent extends SyntheticEvent { + data: string; + } + + interface DragEvent extends MouseEvent { + dataTransfer: DataTransfer; + } + + interface FocusEvent extends SyntheticEvent { + relatedTarget: EventTarget; + } + + interface FormEvent extends SyntheticEvent { + } + + interface KeyboardEvent extends SyntheticEvent { + altKey: boolean; + charCode: number; + ctrlKey: boolean; + getModifierState(key: string): boolean; + key: string; + keyCode: number; + locale: string; + location: number; + metaKey: boolean; + repeat: boolean; + shiftKey: boolean; + which: number; + } + + interface MouseEvent extends SyntheticEvent { + altKey: boolean; + button: number; + buttons: number; + clientX: number; + clientY: number; + ctrlKey: boolean; + getModifierState(key: string): boolean; + metaKey: boolean; + pageX: number; + pageY: number; + relatedTarget: EventTarget; + screenX: number; + screenY: number; + shiftKey: boolean; + } + + interface TouchEvent extends SyntheticEvent { + altKey: boolean; + changedTouches: TouchList; + ctrlKey: boolean; + getModifierState(key: string): boolean; + metaKey: boolean; + shiftKey: boolean; + targetTouches: TouchList; + touches: TouchList; + } + + interface UIEvent extends SyntheticEvent { + detail: number; + view: AbstractView; + } + + interface WheelEvent extends MouseEvent { + deltaMode: number; + deltaX: number; + deltaY: number; + deltaZ: number; + } + + interface AnimationEvent extends SyntheticEvent { + animationName: string; + pseudoElement: string; + elapsedTime: number; + } + + interface TransitionEvent extends SyntheticEvent { + propertyName: string; + pseudoElement: string; + elapsedTime: number; + } + + // + // Event Handler Types + // ---------------------------------------------------------------------- + + interface EventHandler { + (event: E): void; + } + + type ReactEventHandler = EventHandler; + + type ClipboardEventHandler = EventHandler; + type CompositionEventHandler = EventHandler; + type DragEventHandler = EventHandler; + type FocusEventHandler = EventHandler; + type FormEventHandler = EventHandler; + type KeyboardEventHandler = EventHandler; + type MouseEventHandler = EventHandler; + type TouchEventHandler = EventHandler; + type UIEventHandler = EventHandler; + type WheelEventHandler = EventHandler; + type AnimationEventHandler = EventHandler; + type TransitionEventHandler = EventHandler; + + // + // Props / DOM Attributes + // ---------------------------------------------------------------------- + + /** + * @deprecated. This was used to allow clients to pass `ref` and `key` + * to `createElement`, which is no longer necessary due to intersection + * types. If you need to declare a props object before passing it to + * `createElement` or a factory, use `ClassAttributes`: + * + * ```ts + * var b: Button; + * var props: ButtonProps & ClassAttributes